Repository: DataTalksClub/machine-learning-zoomcamp Branch: master Commit: 2636ec556fac Files: 428 Total size: 6.6 MB Directory structure: gitextract_3sp31muz/ ├── .github/ │ └── FUNDING.yml ├── .gitignore ├── 01-intro/ │ ├── 01-what-is-ml.md │ ├── 02-ml-vs-rules.md │ ├── 03-supervised-ml.md │ ├── 04-crisp-dm.md │ ├── 05-model-selection.md │ ├── 06-environment.md │ ├── 07-numpy.md │ ├── 08-linear-algebra.md │ ├── 09-pandas.md │ ├── 10-summary.md │ ├── README.md │ ├── homework.md │ └── notebooks/ │ ├── 07-numpy.ipynb │ ├── 08-linear-algebra.ipynb │ └── 09-pandas.ipynb ├── 02-regression/ │ ├── 01-car-price-intro.md │ ├── 02-data-preparation.md │ ├── 03-eda.md │ ├── 04-validation-framework.md │ ├── 05-linear-regression-simple.md │ ├── 06-linear-regression-vector.md │ ├── 07-linear-regression-training.md │ ├── 08-baseline-model.md │ ├── 09-rmse.md │ ├── 10-car-price-validation.md │ ├── 11-feature-engineering.md │ ├── 12-categorical-variables.md │ ├── 13-regularization.md │ ├── 14-tuning-model.md │ ├── 15-using-model.md │ ├── 16-summary.md │ ├── 17-explore-more.md │ ├── README.md │ ├── homework.md │ ├── meta.json │ └── notebook.ipynb ├── 03-classification/ │ ├── 01-churn-project.md │ ├── 02-data-preparation.md │ ├── 03-validation.md │ ├── 04-eda.md │ ├── 05-risk.md │ ├── 06-mutual-info.md │ ├── 07-correlation.md │ ├── 08-ohe.md │ ├── 09-logistic-regression.md │ ├── 10-training-log-reg.md │ ├── 11-log-reg-interpretation.md │ ├── 12-using-log-reg.md │ ├── 13-summary.md │ ├── 14-explore-more.md │ ├── README.md │ ├── homework.md │ ├── meta.csv │ ├── meta.json │ ├── notebook-scaling-ohe.ipynb │ └── notebook.ipynb ├── 04-evaluation/ │ ├── 01-overview.md │ ├── 02-accuracy.md │ ├── 03-confusion-table.md │ ├── 04-precision-recall.md │ ├── 05-roc.md │ ├── 06-auc.md │ ├── 07-cross-validation.md │ ├── 08-summary.md │ ├── 09-explore-more.md │ ├── README.md │ ├── homework.md │ ├── meta.csv │ ├── meta.json │ └── notebook.ipynb ├── 05-deployment/ │ ├── 01-intro.md │ ├── 02-pickle.md │ ├── 03-flask-intro.md │ ├── 04-flask-deployment.md │ ├── 05-pipenv.md │ ├── 06-docker.md │ ├── 07-aws-eb.md │ ├── 08-summary.md │ ├── 09-explore-more.md │ ├── README.md │ ├── code/ │ │ ├── 05-train-churn-model.ipynb │ │ ├── Dockerfile │ │ ├── Pipfile │ │ ├── ping.py │ │ ├── plan.md │ │ ├── predict-test.py │ │ ├── predict.py │ │ └── train.py │ ├── homework.md │ ├── meta.csv │ ├── meta.json │ └── workshop/ │ ├── .dockerignore │ ├── .python-version │ ├── Dockerfile │ ├── README.md │ ├── fly.toml │ ├── ping.py │ ├── predict.py │ ├── predict_old.py │ ├── pyproject.toml │ ├── starter.ipynb │ ├── test.py │ ├── train.py │ └── workshop-uv-fastapi.ipynb ├── 06-trees/ │ ├── 01-credit-risk.md │ ├── 02-data-prep.md │ ├── 03-decision-trees.md │ ├── 04-decision-tree-learning.md │ ├── 05-decision-tree-tuning.md │ ├── 06-random-forest.md │ ├── 07-boosting.md │ ├── 08-xgb-tuning.md │ ├── 09-final-model.md │ ├── 10-summary.md │ ├── 11-explore-more.md │ ├── README.md │ ├── homework.md │ ├── meta.csv │ ├── meta.json │ └── notebook.ipynb ├── 08-deep-learning/ │ ├── 01-fashion-classification.md │ ├── 02-tensorflow-keras.md │ ├── 03-pretrained-models.md │ ├── 04-conv-neural-nets.md │ ├── 05-transfer-learning.md │ ├── 06-learning-rate.md │ ├── 07-checkpointing.md │ ├── 08-more-layers.md │ ├── 09-dropout.md │ ├── 10-augmentation.md │ ├── 11-large-model.md │ ├── 12-using-model.md │ ├── 13-summary.md │ ├── 14-explore-more.md │ ├── README.md │ ├── homework.md │ ├── install.md │ ├── meta.csv │ ├── meta.json │ ├── notebook.ipynb │ └── pytorch/ │ ├── README.md │ └── install_pytorch.md ├── 09-serverless/ │ ├── 01-intro.md │ ├── 02-aws-lambda.md │ ├── 03-tensorflow-lite.md │ ├── 04-preparing-code.md │ ├── 05-docker-image.md │ ├── 06-creating-lambda.md │ ├── 07-api-gateway.md │ ├── 08-summary.md │ ├── 09-explore-more.md │ ├── README.md │ ├── code/ │ │ ├── Dockerfile │ │ ├── convert-model.py │ │ ├── lambda_function.py │ │ ├── plan.md │ │ ├── tensorflow-model.ipynb │ │ └── test.py │ ├── homework.md │ ├── meta.csv │ ├── meta.json │ ├── updates.md │ └── workshop/ │ ├── README.md │ ├── lambda-keras/ │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── convert/ │ │ │ ├── .dockerignore │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ └── convert-saved-model.py │ │ ├── lambda_function.py │ │ ├── test.ipynb │ │ └── test.py │ ├── lambda-onnx/ │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── lambda_function.py │ │ ├── test.ipynb │ │ └── test.py │ ├── lambda-sklearn/ │ │ ├── .dockerignore │ │ ├── .python-version │ │ ├── Dockerfile │ │ ├── customer.json │ │ ├── deploy.sh │ │ ├── invoke.py │ │ ├── lambda_function.py │ │ ├── pyproject.toml │ │ └── test.py │ └── train/ │ ├── .python-version │ ├── README.md │ ├── pyproject.toml │ └── train.py ├── 10-kubernetes/ │ ├── 01-overview.md │ ├── 02-tensorflow-serving.md │ ├── 03-preprocessing.md │ ├── 04-docker-compose.md │ ├── 05-kubernetes-intro.md │ ├── 06-kubernetes-simple-service.md │ ├── 07-kubernetes-tf-serving.md │ ├── 08-eks.md │ ├── 09-summary.md │ ├── 10-explore-more.md │ ├── README.md │ ├── code/ │ │ ├── Pipfile │ │ ├── README.md │ │ ├── docker-compose.yaml │ │ ├── gateway.py │ │ ├── image-gateway.dockerfile │ │ ├── image-model.dockerfile │ │ ├── kube-config/ │ │ │ ├── eks-config.yaml │ │ │ ├── gateway-deployment.yaml │ │ │ ├── gateway-service.yaml │ │ │ ├── model-deployment.yaml │ │ │ └── model-service.yaml │ │ ├── ping/ │ │ │ ├── Dockerfile │ │ │ ├── Pipfile │ │ │ ├── deployment.yaml │ │ │ ├── metallb-config.yaml │ │ │ ├── ping.py │ │ │ └── service.yaml │ │ ├── plan.md │ │ ├── proto.py │ │ ├── test.py │ │ └── tf-serving-connect.ipynb │ ├── homework.md │ ├── meta.csv │ ├── meta.json │ └── workshop/ │ ├── README.md │ ├── k8s/ │ │ ├── deployment.yaml │ │ ├── hpa.yaml │ │ └── service.yaml │ ├── load_test.py │ └── service/ │ ├── .gitignore │ ├── .python-version │ ├── Dockerfile │ ├── README.md │ ├── app.py │ ├── pyproject.toml │ └── test.py ├── 11-kserve/ │ ├── 01-overview.md │ ├── 02-kserve-local.md │ ├── 03-kserve-sklearn.md │ ├── 04-kserve-custom-image.md │ ├── 05-tensorflow-kserve.md │ ├── 06-kserve-transformers.md │ ├── 07-kserve-eks-upd.md │ ├── 07-kserve-eks.md │ ├── 08-summary.md │ ├── 09-explore-more.md │ ├── README.md │ ├── code/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── churn/ │ │ │ ├── Pipfile │ │ │ ├── churn-service.yaml │ │ │ ├── churn-test.py │ │ │ ├── churn-train.py │ │ │ └── model.joblib │ │ ├── clothes/ │ │ │ ├── clothes-service.yaml │ │ │ ├── convert.py │ │ │ ├── test-transformer.py │ │ │ ├── test.ipynb │ │ │ └── test.py │ │ ├── eks/ │ │ │ ├── clothes-service.yaml │ │ │ ├── cluster.yaml │ │ │ └── test-transformer.py │ │ ├── image_transfomer/ │ │ │ ├── Dockerfile │ │ │ ├── Pipfile │ │ │ └── image_transformer.py │ │ ├── iris/ │ │ │ ├── iris-example.yaml │ │ │ ├── iris-request.json │ │ │ └── iris-test.py │ │ └── plan.md │ ├── meta.csv │ └── meta.json ├── README.md ├── after-sign-up.md ├── article/ │ └── README.md ├── asking-questions.md ├── bento.md ├── certificates.md ├── cohorts/ │ ├── 2021/ │ │ ├── 01-intro/ │ │ │ ├── homework-1.ipynb │ │ │ └── homework.md │ │ ├── 02-regression/ │ │ │ ├── homework.ipynb │ │ │ └── homework.md │ │ ├── 03-classification/ │ │ │ ├── homework.ipynb │ │ │ └── homework.md │ │ ├── 04-evaluation/ │ │ │ ├── homework-4-solution.ipynb │ │ │ ├── homework-4-starter.ipynb │ │ │ └── homework.md │ │ ├── 05-deployment/ │ │ │ ├── homework/ │ │ │ │ ├── Dockerfile │ │ │ │ ├── Pipfile │ │ │ │ ├── homework.md │ │ │ │ ├── q3_test.py │ │ │ │ ├── q4_predict.py │ │ │ │ ├── q4_test.py │ │ │ │ ├── q6_predict.py │ │ │ │ └── q6_test.py │ │ │ └── homework.md │ │ ├── 06-trees/ │ │ │ ├── homework-6-solution.ipynb │ │ │ ├── homework-6-starter.ipynb │ │ │ └── homework.md │ │ ├── 07-midterm-project/ │ │ │ ├── README.md │ │ │ ├── week10-office-hours.ipynb │ │ │ ├── week8-office-hours.ipynb │ │ │ └── week9-office-hours.ipynb │ │ ├── 08-deep-learning/ │ │ │ ├── CNN_solution.ipynb │ │ │ ├── homework.md │ │ │ └── week-11-office-hours.ipynb │ │ ├── 09-serverless/ │ │ │ ├── homework/ │ │ │ │ ├── Dockerfile │ │ │ │ ├── homework.ipynb │ │ │ │ ├── homework.py │ │ │ │ └── test.py │ │ │ └── homework.md │ │ ├── 10-kubernetes/ │ │ │ ├── homework/ │ │ │ │ ├── deployment.yaml │ │ │ │ └── service.yaml │ │ │ └── homework.md │ │ ├── 12-capstone/ │ │ │ └── README.md │ │ ├── 13-article/ │ │ │ └── README.md │ │ ├── 14-project/ │ │ │ └── README.md │ │ ├── leaderboard.md │ │ └── office-hours.md │ ├── 2022/ │ │ ├── 01-intro/ │ │ │ ├── homework.md │ │ │ └── homework_1.ipynb │ │ ├── 02-regression/ │ │ │ ├── homework.md │ │ │ └── homework_2.ipynb │ │ ├── 03-classification/ │ │ │ ├── homework.md │ │ │ └── homework_3.ipynb │ │ ├── 04-evaluation/ │ │ │ ├── homework.md │ │ │ └── homework_4.ipynb │ │ ├── 05-deployment/ │ │ │ ├── homework/ │ │ │ │ ├── Dockerfile │ │ │ │ ├── Pipfile │ │ │ │ ├── q3_test.py │ │ │ │ ├── q4_predict.py │ │ │ │ ├── q4_test.py │ │ │ │ ├── q6_predict.py │ │ │ │ └── q6_test.py │ │ │ └── homework.md │ │ ├── 06-trees/ │ │ │ ├── homework.md │ │ │ ├── homework_6.ipynb │ │ │ └── homework_6_starter.ipynb │ │ ├── 07-bento-production/ │ │ │ ├── homework.md │ │ │ └── locustfile.py │ │ ├── 08-deep-learning/ │ │ │ ├── homework.md │ │ │ └── homework_8.ipynb │ │ ├── 09-serverless/ │ │ │ ├── homework/ │ │ │ │ ├── Dockerfile │ │ │ │ ├── homework.ipynb │ │ │ │ ├── homework.py │ │ │ │ └── test.py │ │ │ └── homework.md │ │ ├── 10-kubernetes/ │ │ │ ├── homework/ │ │ │ │ ├── deployment.yaml │ │ │ │ ├── hpa.yaml │ │ │ │ ├── service.yaml │ │ │ │ └── test.py │ │ │ └── homework.md │ │ ├── README.md │ │ ├── article.md │ │ ├── leaderboard.md │ │ └── projects.md │ ├── 2023/ │ │ ├── 01-intro/ │ │ │ ├── homework.md │ │ │ └── homework_1.ipynb │ │ ├── 02-regression/ │ │ │ └── homework.md │ │ ├── 03-classification/ │ │ │ ├── homework.md │ │ │ └── homework_3.ipynb │ │ ├── 04-evaluation/ │ │ │ └── homework.md │ │ ├── 05-deployment/ │ │ │ ├── homework/ │ │ │ │ ├── Dockerfile │ │ │ │ ├── Pipfile │ │ │ │ ├── q3_test.py │ │ │ │ ├── q4_predict.py │ │ │ │ ├── q4_test.py │ │ │ │ ├── q6_predict.py │ │ │ │ └── q6_test.py │ │ │ └── homework.md │ │ ├── 06-trees/ │ │ │ └── homework.md │ │ ├── 08-deep-learning/ │ │ │ ├── homework.ipynb │ │ │ └── homework.md │ │ ├── 09-serverless/ │ │ │ └── homework.md │ │ ├── 10-kubernetes/ │ │ │ └── homework.md │ │ ├── README.md │ │ ├── article.md │ │ ├── leaderboard.md │ │ └── projects.md │ ├── 2024/ │ │ ├── 01-intro/ │ │ │ └── homework.md │ │ ├── 02-regression/ │ │ │ └── homework.md │ │ ├── 03-classification/ │ │ │ └── homework.md │ │ ├── 04-evaluation/ │ │ │ └── homework.md │ │ ├── 05-deployment/ │ │ │ └── homework.md │ │ ├── 06-trees/ │ │ │ └── homework.md │ │ ├── 08-deep-learning/ │ │ │ └── homework.md │ │ ├── 09-serverless/ │ │ │ └── homework.md │ │ ├── 10-kubernetes/ │ │ │ └── homework.md │ │ ├── README.md │ │ ├── article.md │ │ └── projects.md │ └── 2025/ │ ├── 01-intro/ │ │ ├── homework.md │ │ └── homework_1.ipynb │ ├── 02-regression/ │ │ ├── homework.md │ │ └── homework_2.ipynb │ ├── 03-classification/ │ │ ├── homework.md │ │ └── homework_3.ipynb │ ├── 04-evaluation/ │ │ ├── homework.md │ │ └── homework_4.ipynb │ ├── 05-deployment/ │ │ ├── homework/ │ │ │ ├── .python-version │ │ │ ├── Dockerfile_base │ │ │ ├── Dockerfile_full │ │ │ ├── Dockerfile_hw │ │ │ ├── README.md │ │ │ ├── main.py │ │ │ ├── pyproject.toml │ │ │ ├── q3_test.py │ │ │ ├── q4_predict.py │ │ │ ├── q4_test.py │ │ │ ├── q6_predict.py │ │ │ └── q6_test.py │ │ └── homework.md │ ├── 06-trees/ │ │ ├── homework.ipynb │ │ └── homework.md │ ├── 08-deep-learning/ │ │ └── homework.md │ ├── 09-serverless/ │ │ └── homework.md │ ├── 10-kubernetes/ │ │ └── homework.md │ ├── README.md │ ├── article.md │ └── projects.md ├── generate-description.ipynb ├── generate-pages.ipynb ├── learning-in-public.md └── projects/ ├── README.md ├── how-to.md └── project-tips.md ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/FUNDING.yml ================================================ github: alexeygrigorev ================================================ FILE: .gitignore ================================================ # generated .ipynb_checkpoints/ __pycache__/ **my_dir/ **logs/ **models/ # file types *.h5 *.tflite *.keras *.zip *.pdf # data folders **data/ # content-specific /08-deep-learning/clothing-dataset-small/ /08-deep-learning/clothing-dataset/ /08-deep-learning/ImageClassification/ /08-deep-learning/my_dir/ /09-serverless/clothing-model/ /09-serverless/clothing-model/ **midterms_evaluations/ **samples/ ================================================ FILE: 01-intro/01-what-is-ml.md ================================================ ## 1.1 Introduction to Machine Learning [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-11-introduction-to-machine-learning) ## Notes The concept of ML is depicted with an example of predicting the price of a car. The ML model learns from data, represented as some **features** such as year, mileage, among others, and the **target** variable, in this case, the car's price, by extracting patterns from the data. Then, the model is given new data (**without** the target) about cars and predicts their price (target). In summary, ML is a process of **extracting patterns from data**, which is of two types: * features (information about the object) and * target (property to predict for unseen objects). Therefore, new feature values are presented to the model, and it makes **predictions** from the learned patterns.
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Notes * [Notes from Peter Ernicke](https://knowmledge.com/2023/09/09/ml-zoomcamp-2023-introduction-to-machine-learning-part-1/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Lesson 1: Introduction to Machine Learning](./) * Next: [ML vs Rule-Based Systems](02-ml-vs-rules.md) ================================================ FILE: 01-intro/02-ml-vs-rules.md ================================================ ## 1.2 ML vs Rule-Based Systems [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-12-ml-vs-rulebased-systems) ## Notes The difference between ML and Rule-Based systems is explained with the example of a **spam filter**. Traditional Rule-Based systems are based on a set of **characteristics** (keywords, email length, etc.) that identify an email as spam or not. As spam emails keep changing over time the system needs to be upgraded making the process untractable due to the complexity of code maintenance as the system grows. ML can be used to solve this problem with the following steps: ### 1. Get data Emails from the user's spam folder and inbox give examples of spam and non-spam. ### 2. Define and calculate features Rules/characteristics from rule-based systems can be used as a starting point to define features for the ML model. The value of the target variable for each email can be defined based on where the email was obtained from (spam folder or inbox). Each email can be encoded (converted) to the values of its features and target. ### 3. Train and use the model A machine learning algorithm can then be applied to the encoded emails to build a model that can predict whether a new email is spam or not spam. The **predictions are probabilities**, and to make a decision it is necessary to define a threshold to classify emails as spam or not spam.
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/10/ml-zoomcamp-2023-introduction-to-machine-learning-part-2/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Lesson 1: Introduction to Machine Learning](./) * Previous: [Introduction to Machine Learning](01-what-is-ml.md) * Next: [Supervised Machine Learning](03-supervised-ml.md) ================================================ FILE: 01-intro/03-supervised-ml.md ================================================ ## 1.3 Supervised Machine Learning [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-13-supervised-machine-learning) ## Notes In Supervised Machine Learning (SML) there are always labels associated with certain features. The model is trained, and then it can make predictions on new features. In this way, the model is taught by certain features and targets. * **Feature matrix (X):** made of observations or objects (rows) and features (columns). * **Target variable (y):** a vector with the target information we want to predict. For each row of X there's a value in y. The model can be represented as a function, **g**, that takes the feature matrix, **X**, as **input** and tries to predict values as close as possible to the targets, **y**. The process of **finding** this function **g** is called **training**. ### Types of SML problems * **Regression:** the output is a number (car's price). * **Classification:** the output is a category (spam example). * **Binary:** there are two categories. * **Multiclass problems:** there are more than two categories. * **Ranking:** the output is the top scores associated with corresponding items. It is applied in recommender systems. In summary, SML is about teaching the model by showing it different examples, and the goal is to come up with a function, that takes the feature matrix as input, and makes predictions of values as close as possible to the **y** targets.
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/11/ml-zoomcamp-2023-introduction-to-machine-learning-part-3/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Lesson 1: Introduction to Machine Learning](./) * Previous: [ML vs Rule-Based Systems](02-ml-vs-rules.md) * Next: [CRISP-DM](04-crisp-dm.md) ================================================ FILE: 01-intro/04-crisp-dm.md ================================================ ## 1.4 CRISP-DM [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-14-crispdm) ## Notes CRISP-DM, which stands for Cross-Industry Standard Process for Data Mining, is an open standard process model that describes common approaches used by data mining experts. It is the most widely-used analytics model. Conceived in 1996, it became a European Union project under the ESPRIT funding initiative in 1997. The project was led by five companies: Integral Solutions Ltd (ISL), Teradata, Daimler AG, NCR Corporation and OHRA, an insurance company: 1. **Business understanding:** An important question is do we need ML for the project. The goal of the project has to be measurable. 2. **Data understanding:** Analyze available data sources, and decide if more data is required. 3. **Data preparation:** Clean data, remove noise applying pipelines, and convert the data to a tabular format, so we can put it into ML. 4. **Modeling:** Train different models and choose the best one. Considering the results of this step, it is proper to decide if it is required to add new features or fix data issues. 5. **Evaluation:** Measure how well the model is performing and if it solves the business problem. 6. **Deployment:** Roll out to production to all the users. The evaluation and deployment often happen together - **online evaluation**. It is important to consider how well maintainable the project is. In general, ML projects require many iterations. **Iteration:** * Start simple * Learn from the feedback * Improve
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/12/ml-zoomcamp-2023-introduction-to-machine-learning-part-4/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Lesson 1: Introduction to Machine Learning](./) * Previous: [Supervised Machine Learning](03-supervised-ml.md) * Next: [Model Selection Process](05-model-selection.md) ================================================ FILE: 01-intro/05-model-selection.md ================================================ ## 1.5 Model Selection Process [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-15-model-selection-process) ## Notes ### Which model to choose? - Logistic regression - Decision tree - Neural Network - Or many others The validation dataset is not used in training. There are feature matrices and y vectors for both training and validation datasets. The model is fitted with training data, and it is used to predict the y values of the validation feature matrix. Then, the predicted y values (probabilities) are compared with the actual y values. **Multiple comparisons problem (MCP):** just by chance one model can be lucky and obtain good predictions because all of them are probabilistic. The test set can help to avoid the MCP. Obtaining the best model is done with the training and validation datasets, while the test dataset is used for assuring that the proposed best model is the best. 1. Split datasets in training, validation, and test. E.g. 60%, 20% and 20% respectively 2. Train the models 3. Evaluate the models 4. Select the best model 5. Apply the best model to the test dataset 6. Compare the performance metrics of validation and test NB: Note that it is possible to reuse the validation data. After selecting the best model (step 4), the validation and training datasets can be combined to form a single training dataset for the chosen model before testing it on the test set.
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/13/ml-zoomcamp-2023-introduction-to-machine-learning-part-5/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Lesson 1: Introduction to Machine Learning](./) * Previous: [CRISP-DM](04-crisp-dm.md) * Next: [Setting up the Environment](06-environment.md) ================================================ FILE: 01-intro/06-environment.md ================================================ ## Setting up the Environment In this section, we'll prepare the environment You need: * Python 3.11 (note that videos use 3.8) * NumPy, Pandas and Scikit-Learn (latest available versions) * Matplotlib and Seaborn * Jupyter notebooks ## Github Codespaces Video: https://www.youtube.com/watch?v=pqQFlV3f9Bo&list=PL3MmuxUbc_hIhxl5Ji8t4O6lPAOpHaCLR This is the recommended approach for the course ## Ubuntu 22.04 on AWS * [This video](https://www.youtube.com/watch?v=IXSiYkP23zo) shows a complete end-to-end environment configuration for an AWS EC2 instance * This video was created for another course (MLOps Zoomcamp), so you'll need to adjust it slightly: clone this repo instead of the mlops one * You can use these instructions for setting up your local Ubuntu Note for WSL * Most of the instructions from the previous video apply to WSL too * For setting up Docker, install Docker Desktop on Windows and it'll be automatically used in WSL. You don't need to install docker.io ## Anaconda and Conda The easiest way to set up the environment is to use [Anaconda](https://www.anaconda.com/products/individual) or [Miniconda](https://docs.conda.io/en/latest/miniconda.html). Anaconda comes with everything we need (and much more). Miniconda is a smaller version of Anaconda that contains only Python. Follow the instructions on page for installing the correct package for your system. The site will automatically detect your operating system and suggest the correct package. * [Anaconda](https://www.anaconda.com/products/individual) * [Miniconda](https://docs.conda.io/en/latest/miniconda.html#latest-miniconda-installer-links) If you are using Windows, you can use WSL, but the plain Windows version should work too. Anaconda is recommended. ### (Optional) Create environment for course It is a good idea to set up a dedicated environment for the course In your terminal, run this command to create the environment ```bash conda create -n ml-zoomcamp python=3.11 ``` Activate it: ```bash conda activate ml-zoomcamp ``` Installing libraries ```bash conda install numpy pandas scikit-learn seaborn jupyter ``` Later in the course you will also need to install XGBoost and Tensorflow, but we can skip this part for now. ## Cloud Instead of running things locally, you can use online services or rent a server ### AWS You can rent an instance on AWS: * [Creating an AWS account](https://mlbookcamp.com/article/aws) * [Renting an ec2 instance](https://mlbookcamp.com/article/aws-ec2) ### GCP Google cloud platform offers $300 in free credits when you sign up. You can use this for taking the course. ## Notebook services There are services that allow you to host and run notebooks. Note that notebooks alone are not sufficient for the course and for the deployment modules you will need to have access to the command line interface with Docker, Python and other libraries installed. ### Kaggle To use Kaggle to open and run the Jupyter notebooks provided as part of this course do the following: *Pre-requisites - You need to have an account in Kaggle (it's free) and be logged into Kaggle* 1. Find the URL of the notebook. ![See this example](images/sample-jupyter-notebook.png) 2. To open the notebook in Kaggle, in your web browser launch paste the URL as shown in below example. (*note the additional https://kaggle.com/kernels/welcome?src= before the URL of the notebook*) https://kaggle.com/kernels/welcome?src=https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb 3. Check if the notebook uses any datafile to read data from it. If yes, note the datafile name from the code.- *look for pd.read_csv("somefilename.csv")*. ![See this example](images/sample-code.png) 4. You need to download the file into Kaggle. For this: a. Find the URL of the datafile in github. ![See this example](images/sample-data-file.png) b. Suppose the URL is https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/data.csv , you need use the URL to raw file, which will look something like https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv 5. In the notebook opened in Kaggle, add a Code block with the command to download the file - !wget your-datafile-url ![See this example](images/add-code-for-datafile-download.png) This way you can start with the exercise using Kaggle ### Google Colab To use Google Colab to open and run the Jupyter notebooks provided as part of this course do the following: *Pre-requisites - You need to have a google account (any gmail account) and be logged into that account* Steps for Google Colab are same as that for Kaggle, except for some changes in Step 2, as explained below. 2. To open the notebook in Google Colab, in your web browser launch paste the URL as shown in below example. (*note the https://github.com/ in the URL of the notebook is replaced by https://colab.research.google.com/github/*) https://colab.research.google.com/github/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb ## Navigation * [Machine Learning Zoomcamp course](../) * [Lesson 1: Introduction to Machine Learning](./) * Previous lesson: [The Modelling Step (Model Selection Process)](05-model-selection.md) * Next lesson: [Introduction to NumPy](07-numpy.md) ================================================ FILE: 01-intro/07-numpy.md ================================================ ## 1.7 Introduction to NumPy ## Notes # Understanding Numpy: A Simple Introduction Numpy, short for Numerical Python, is a powerful Python library that enables efficient and convenient array manipulation and mathematical operations. It forms the foundation for many scientific and data-related tasks. In this article, we'll provide a straightforward explanation of Numpy concepts and how to use them. ## Importing Numpy Before diving into Numpy's capabilities, we need to import it. Conventionally, we import Numpy with the alias `np`, making it easier to reference its functions: ```python import numpy as np ``` ## Creating Arrays Arrays are the building blocks of Numpy, and they can be thought of as lists but with enhanced features. ### Creating Arrays with Zeros, Ones, or Constants You can create arrays filled with zeros, ones, or any constant using `np.zeros()`, `np.ones()`, and `np.full()`: ```python zeros_array = np.zeros(10) ones_array = np.ones(10) constant_array = np.full(10, 3) ``` ### Converting Lists to Arrays To convert a Python list into a Numpy array, you can use `np.array()`: ```python my_list = [2, 3, 4] array_from_list = np.array(my_list) ``` ### Generating Ranges of Numbers Numpy provides functions for generating arrays of sequential numbers. For example: ```python range_array = np.arange(10) # Creates an array from 0 to 9 ``` ### Creating Arrays with Linear Spacing `np.linspace()` creates arrays with evenly spaced numbers within a specified range: ```python linspace_array = np.linspace(0, 1, 11) # Creates 11 numbers from 0 to 1 ``` ### Multi-dimensional Arrays Numpy can handle multi-dimensional arrays, often referred to as matrices. Here are some examples: ```python zeros_matrix = np.zeros((5, 2)) ones_matrix = np.ones((5, 2)) constant_matrix = np.full((5, 2), 3) ``` ## Indexing and Slicing Arrays Like Python lists, you can access elements in Numpy arrays using indexing and slicing. For two-dimensional arrays: ```python arr = np.array([[2, 3, 4], [4, 5, 6]]) first_row = arr[0] # Gets the first row first_col = arr[:, 0] # Gets the first column ``` ## Generating Random Arrays Numpy can create arrays filled with random numbers. To ensure reproducibility, you can set a seed using `np.random.seed()`: ```python np.random.seed(2) # Set the seed random_array = np.random.rand(5, 2) # Generates random numbers between 0 and 1 ``` For random numbers from a normal distribution or integers within a range: ```python normal_distribution = np.random.randn(5, 2) random_integers = np.random.randint(low=0, high=100, size=(5, 2)) ``` ## Array Operations Numpy excels in performing mathematical operations on arrays efficiently. ### Element-wise Operations You can perform operations on entire arrays element by element: ```python arr = arr + 1 # Adds 1 to each element arr = arr * 2 # Multiplies each element by 2 # Similar operations for division and exponentiation ``` ### Element-wise Operations with Two Arrays You can also perform operations between two arrays of the same shape: ```python arr1 = np.ones(4) arr2 = np.full(4, 3) result = arr1 + arr2 # Element-wise addition result = arr1 / arr2 # Element-wise division ``` ### Comparison Operations You can perform element-wise comparisons and create boolean arrays: ```python arr = np.array([1, 2, 3, 4]) greater_than_2 = arr > 2 # Produces [False, False, True, True] ``` ### Selecting Elements Based on Conditions You can create subarrays based on certain conditions: ```python selected_elements = arr[arr > 1] # Gets elements greater than 1 ``` ## Summary Operations Numpy provides functions for summarizing array data: ```python min_value = arr.min() # Minimum value max_value = arr.max() # Maximum value sum_value = arr.sum() # Sum of all elements mean_value = arr.mean() # Mean (average) value std_deviation = arr.std() # Standard deviation ``` In conclusion, Numpy is an essential library for anyone working with numerical data in Python. It simplifies array creation, manipulation, and mathematical operations, making it a powerful tool for scientific computing and data analysis. With the basics covered in this article, you're well on your way to harnessing Numpy's capabilities.
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke - Part 1/3](https://knowmledge.com/2023/09/14/ml-zoomcamp-2023-introduction-to-machine-learning-part-6/) * [Notes from Peter Ernicke - Part 2/3](https://knowmledge.com/2023/09/14/ml-zoomcamp-2023-introduction-to-machine-learning-part-7/) * [Notes from Peter Ernicke - Part 3/3](https://knowmledge.com/2023/09/14/ml-zoomcamp-2023-introduction-to-machine-learning-part-8/) ## Links * [Notebook from the video](notebooks/07-numpy.ipynb) * [Notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/appendix-c-numpy.ipynb) * [Introduction to NumPy](https://mlbookcamp.com/article/numpy) ## Additional links * [Numpy Cheat sheet](https://www.datacamp.com/community/blog/python-numpy-cheat-sheet) ## Navigation * [Machine Learning Zoomcamp course](../) * [Lesson 1: Introduction to Machine Learning](./) * Previous: [Setting up the Environment](06-environment.md) * Next: [Linear Algebra Refresher](08-linear-algebra.md) ================================================ FILE: 01-intro/08-linear-algebra.md ================================================ ## 1.8 Linear Algebra Refresher [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-18-linear-algebra-refresher) ## Notes ### Linear Algebra Refresher * Vector operations * Multiplication * Vector-vector multiplication * Matrix-vector multiplication * Matrix-matrix multiplication * Identity matrix * Inverse ### Vector operations ~~~~python u = np.array([2, 7, 5, 6]) v = np.array([3, 4, 8, 6]) # addition u + v # subtraction u - v # scalar multiplication 2 * v ~~~~ ### Multiplication ##### Vector-vector multiplication ~~~~python def vector_vector_multiplication(u, v): assert u.shape[0] == v.shape[0] n = u.shape[0] result = 0.0 for i in range(n): result = result + u[i] * v[i] return result ~~~~ ##### Matrix-vector multiplication ~~~~python def matrix_vector_multiplication(U, v): assert U.shape[1] == v.shape[0] num_rows = U.shape[0] result = np.zeros(num_rows) for i in range(num_rows): result[i] = vector_vector_multiplication(U[i], v) return result ~~~~ ##### Matrix-matrix multiplication ~~~~python def matrix_matrix_multiplication(U, V): assert U.shape[1] == V.shape[0] num_rows = U.shape[0] num_cols = V.shape[1] result = np.zeros((num_rows, num_cols)) for i in range(num_cols): vi = V[:, i] Uvi = matrix_vector_multiplication(U, vi) result[:, i] = Uvi return result ~~~~ ### Identity matrix ~~~~python I = np.eye(3) ~~~~ ### Inverse ~~~~python V = np.array([ [1, 1, 2], [0, 0.5, 1], [0, 2, 1], ]) inv = np.linalg.inv(V) ~~~~ Add notes here (PRs are welcome).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke - Part 1/3](https://knowmledge.com/2023/09/15/ml-zoomcamp-2023-introduction-to-machine-learning-part-9/) * [Notes from Peter Ernicke - Part 2/3](https://knowmledge.com/2023/09/15/ml-zoomcamp-2023-introduction-to-machine-learning-part-10/) * [Notes from Peter Ernicke - Part 3/3](https://knowmledge.com/2023/09/15/ml-zoomcamp-2023-introduction-to-machine-learning-part-11/) ## Links * [Notebook from the video](notebooks/08-linear-algebra.ipynb) * [Get a visual understanding of matrix multiplication](http://matrixmultiplication.xyz/) * [Overview of matrix multiplication functions in python/numpy](https://github.com/MemoonaTahira/MLZoomcamp2022/blob/main/Notes/Week_1-intro_to_ML_linear_algebra/Notes_for_Chapter_1-Linear_Algebra.ipynb) ## Navigation * [Machine Learning Zoomcamp course](../) * [Lesson 1: Introduction to Machine Learning](./) * Previous: [Introduction to NumPy](07-numpy.md) * Next: [Introduction to Pandas](09-pandas.md) ================================================ FILE: 01-intro/09-pandas.md ================================================ ## 1.9 Introduction to Pandas ## Notes Add notes here (PRs are welcome).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke - Part 1/2](https://knowmledge.com/2023/09/16/ml-zoomcamp-2023-introduction-to-machine-learning-part-12/) * [Notes from Peter Ernicke - Part 2/2](https://knowmledge.com/2023/09/17/ml-zoomcamp-2023-introduction-to-machine-learning-part-13/) ## Links * [Notebook from the video](notebooks/09-pandas.ipynb) * [Notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/appendix-d-pandas.ipynb) ## Additional links * [Pandas Cheat sheet](https://www.datacamp.com/community/blog/python-pandas-cheat-sheet) ## Navigation * [Machine Learning Zoomcamp course](../) * [Lesson 1: Introduction to Machine Learning](./) * Previous: [Linear Algebra Refresher](08-linear-algebra.md) * Next: [Summary](10-summary.md) ================================================ FILE: 01-intro/10-summary.md ================================================ ## 1.10 Summary [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-110-summary) ## Notes --- ### 📚 Summary of First Session - Machine Learning Zoomcamp 1. **🚗 Introduction to Machine Learning with Cars Data** We start with data about cars, including characteristics (features) and prices (target). A Machine Learning (ML) model can be used to extract patterns from known information (data) about some cars in order to predict car prices based on their characteristics. 2. **🧠 Rules-Based Systems vs. Machine Learning** - **Rules-Based Systems:** It is necessary to manually convert rules into code using a programming language and apply them to data. Extracting patterns manually can become complex and challenging. - **Machine Learning:** Instead of manually coding rules, ML models automatically extract patterns from data using Mathematics and Statistics. 3. **🔍 Supervised Machine Learning** In supervised learning, models learn from labeled data (with known outcomes) to make predictions on unseen data. 4. **🛠️ CRISP-DM (Cross Industry Standard Process for Data Mining)** A structured methodology for organizing ML projects, consisting of the following steps: - 💼 **Business Understanding** - 🔎 **Data Understanding** - 🧹 **Data Preparation** - 🤖 **Modeling** (choosing and training models, then selecting the best one) - 📊 **Evaluation** - 🚀 **Deployment** This process is iterative, allowing for continuous improvement. 5. **🏆 Model Selection** Split data into training, validation, and test sets. Train different models, validate them, select the best performing one, and then test it on the test set to ensure generalization. 6. **💻 Setting Up the Environment** Install necessary tools like Python, Numpy, Pandas, Matplotlib, Scikit-learn. Anaconda is the easiest option. Eventually create an AWS account for cloud resources. 7. **🔢 Introduction to Numpy** Numpy is crucial for manipulating numerical data, providing efficient operations on arrays and matrices. 8. **🔗 Linear Algebra** Covering all types of multiplication with vectors and matrices, including the creation of identity matrices using functions like `np.eye()`. 9. **📊 Introduction to Pandas** Pandas is a Python library used for processing and analyzing tabular data efficiently. ---
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Maximilien Eyengue](https://github.com/maxim-eyengue/Python-Codes/blob/main/ML_Zoomcamp_2024/01_intro/Summary_Session_01.md) ## Navigation * [Machine Learning Zoomcamp course](../) * [Lesson 1: Introduction to Machine Learning](./) * Previous: [Introduction to Pandas](09-pandas.md) * Next: [Homework](homework.md) ================================================ FILE: 01-intro/README.md ================================================ ## 1. Introduction to Machine Learning - 1.1 [Introduction to Machine Learning](01-what-is-ml.md) - 1.2 [ML vs Rule-Based Systems](02-ml-vs-rules.md) - 1.3 [Supervised Machine Learning](03-supervised-ml.md) - 1.4 [CRISP-DM](04-crisp-dm.md) - 1.5 [The Modelling Step (Model Selection Process)](05-model-selection.md) - 1.6 [Setting up the Environment](06-environment.md) - 1.7 [Introduction to NumPy](07-numpy.md) - 1.8 [Linear Algebra Refresher](08-linear-algebra.md) - 1.9 [Introduction to Pandas](09-pandas.md) - 1.10 [Summary](10-summary.md) - 1.11 [Homework](homework.md) ## Community notes Did you take notes? You can share them here (or in each unit separately) * [Notes by Ayoub Berdeddouch](https://github.com/ayoub-berdeddouch/mlbookcamp-homeworks/blob/main/Intro/homework_intro_AyoubBerdeddouch.ipynb) * [Notes from Sebastián Ayala Ruano](https://github.com/sayalaruano/100DaysOfMLCode/blob/main/Intro_ML/Notes/NotesDay1.md) * [Notes from Alvaro Navas](https://github.com/ziritrion/ml-zoomcamp/blob/main/notes/01_intro.md) * [Notes from Luis Evaristo Caraballo de la Cruz](https://github.com/varocaraballo/ml-zoomcamp2022/blob/main/01%20-%20Introduction%20to%20Machine%20Learning/notes.md) * [Notes from Jon Areas](https://github.com/jxareas/Machine-Learning-Bookcamp-2022/blob/master/notes/01-introduction.md) * [Notes from Hareesh Tummala](https://github.com/tummala-hareesh/ml_zoomcamp_ht/blob/main/notes/week-1-notes.md) * [Notes from Peter Ernicke](https://knowmledge.com/2023/09/09/ml-zoomcamp-2023-introduction-to-machine-learning-part-1/) * [Notes from Josiah Adesola](https://colab.research.google.com/drive/1mlwkAaRi7R8C6quUi0-cMfXk0MXD5-wc?usp=sharing) * [Notes by Kemal](https://github.com/kemaldahha/machine-learning-course/blob/main/week_1_notes.md) * [Notes by Maximilien Eyengue](https://github.com/maxim-eyengue/Python-Codes/blob/main/ML_Zoomcamp_2024/01_intro/Summary_Session_01.md) * [Notes by Mahrukh Tariq](https://github.com/mahrukh98/ml-zoomcamp-hw/blob/main/notes/session1.md) * [Notes by Revathy Ramalingam](https://github.com/RevathyRamalingam/machineLearning/blob/main/01-Intro/01-Intro.md) * Add your notes here ================================================ FILE: 01-intro/homework.md ================================================ ## Homework * For 2025 cohort homework, check [the 2025 cohort folder](../cohorts/2025/01-intro/homework.md) * For 2024 cohort homework, check [the 2024 cohort folder](../cohorts/2024/01-intro/homework.md) * For 2023 cohort homework, check [the 2023 cohort folder](../cohorts/2023/01-intro/homework.md) * For 2022 cohort homework, check [the 2022 cohort folder](../cohorts/2022/01-intro/homework.md) * For 2021 cohort homework and solution, check [the 2021 cohort folder](../cohorts/2021/01-intro/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Lesson 1: Introduction to Machine Learning](./) * Previous: [Summary](10-summary.md) ================================================ FILE: 01-intro/notebooks/07-numpy.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "502da6a2", "metadata": {}, "source": [ "# Machine Learning Zoomcamp\n", "\n", "\n", "## 1.7 Introduction to NumPy\n", "\n", "\n", "Plan:\n", "\n", "* Creating arrays\n", "* Multi-dimensional arrays\n", "* Randomly generated arrays\n", "* Element-wise operations\n", " * Comparison operations\n", " * Logical operations\n", "* Summarizing operations" ] }, { "cell_type": "code", "execution_count": 7, "id": "95aa5b76", "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 8, "id": "aa693c84", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np" ] }, { "cell_type": "markdown", "id": "1e3ff2dc", "metadata": {}, "source": [ "## Creating arrays\n" ] }, { "cell_type": "code", "execution_count": 10, "id": "783c3362", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.zeros(10)" ] }, { "cell_type": "code", "execution_count": 11, "id": "2fc75d89", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.ones(10)" ] }, { "cell_type": "code", "execution_count": 12, "id": "5183483b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.full(10, 2.5)" ] }, { "cell_type": "code", "execution_count": 15, "id": "fe81664d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1, 2, 3, 5, 7, 12])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = np.array([1, 2, 3, 5, 7, 12])\n", "a" ] }, { "cell_type": "code", "execution_count": 17, "id": "dee26035", "metadata": {}, "outputs": [], "source": [ "a[2] = 10" ] }, { "cell_type": "code", "execution_count": 18, "id": "0cf95a0f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1, 2, 10, 5, 7, 12])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 20, "id": "9a579406", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([3, 4, 5, 6, 7, 8, 9])" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.arange(3, 10)" ] }, { "cell_type": "code", "execution_count": 24, "id": "96260ddb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0., 10., 20., 30., 40., 50., 60., 70., 80., 90., 100.])" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linspace(0, 100, 11)" ] }, { "cell_type": "markdown", "id": "37f36946", "metadata": {}, "source": [ "## Multi-dimensional arrays\n" ] }, { "cell_type": "code", "execution_count": 25, "id": "b4a61c53", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0., 0.],\n", " [0., 0.],\n", " [0., 0.],\n", " [0., 0.],\n", " [0., 0.]])" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.zeros((5, 2))" ] }, { "cell_type": "code", "execution_count": 27, "id": "4f75f854", "metadata": {}, "outputs": [], "source": [ "n = np.array([\n", " [1, 2, 3],\n", " [4, 5, 6],\n", " [7, 8, 9]\n", "])" ] }, { "cell_type": "code", "execution_count": 29, "id": "619860f6", "metadata": {}, "outputs": [], "source": [ "n[0, 1] = 20" ] }, { "cell_type": "code", "execution_count": 30, "id": "54333fc7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1, 20, 3],\n", " [ 4, 5, 6],\n", " [ 7, 8, 9]])" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n" ] }, { "cell_type": "code", "execution_count": 34, "id": "57eef634", "metadata": {}, "outputs": [], "source": [ "n[2] = [1, 1, 1]" ] }, { "cell_type": "code", "execution_count": 35, "id": "b3fa6ae7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1, 20, 3],\n", " [ 4, 5, 6],\n", " [ 1, 1, 1]])" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n" ] }, { "cell_type": "code", "execution_count": 39, "id": "42f1d1f4", "metadata": {}, "outputs": [], "source": [ "n[:, 2] = [0, 1, 2]" ] }, { "cell_type": "code", "execution_count": 40, "id": "13442277", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1, 20, 0],\n", " [ 4, 5, 1],\n", " [ 1, 1, 2]])" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n" ] }, { "cell_type": "markdown", "id": "62ba6337", "metadata": {}, "source": [ "## Randomly generated arrays\n" ] }, { "cell_type": "code", "execution_count": 51, "id": "6781ff11", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[43.59949021, 2.59262318],\n", " [54.96624779, 43.53223926],\n", " [42.03678021, 33.0334821 ],\n", " [20.4648634 , 61.92709664],\n", " [29.96546737, 26.68272751]])" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.seed(2)\n", "100 * np.random.rand(5, 2)" ] }, { "cell_type": "code", "execution_count": 50, "id": "4374e58b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-0.41675785, -0.05626683],\n", " [-2.1361961 , 1.64027081],\n", " [-1.79343559, -0.84174737],\n", " [ 0.50288142, -1.24528809],\n", " [-1.05795222, -0.90900761]])" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.seed(2)\n", "np.random.randn(5, 2)" ] }, { "cell_type": "code", "execution_count": 52, "id": "ebb39565", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[40, 15],\n", " [72, 22],\n", " [43, 82],\n", " [75, 7],\n", " [34, 49]])" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.seed(2)\n", "np.random.randint(low=0, high=100, size=(5, 2))" ] }, { "cell_type": "markdown", "id": "364c6d7c", "metadata": {}, "source": [ "## Element-wise operations\n" ] }, { "cell_type": "code", "execution_count": 53, "id": "51390a32", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 1, 2, 3, 4])" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = np.arange(5)\n", "a" ] }, { "cell_type": "code", "execution_count": 62, "id": "6e87e9b0", "metadata": {}, "outputs": [], "source": [ "b = (10 + (a * 2)) ** 2 / 100" ] }, { "cell_type": "code", "execution_count": 65, "id": "013a9e2a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1. , 1.44, 1.96, 2.56, 3.24])" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b" ] }, { "cell_type": "code", "execution_count": 68, "id": "08592c4a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([10. , 10.69444444, 11.02040816, 11.171875 , 11.2345679 ])" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a / b + 10" ] }, { "cell_type": "markdown", "id": "35fc84d3", "metadata": {}, "source": [ "## Comparison operations" ] }, { "cell_type": "code", "execution_count": 70, "id": "e26eefdc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 1, 2, 3, 4])" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 69, "id": "8fd3fc96", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([False, False, True, True, True])" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a >= 2" ] }, { "cell_type": "code", "execution_count": 71, "id": "bca43c2c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1. , 1.44, 1.96, 2.56, 3.24])" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b" ] }, { "cell_type": "code", "execution_count": 72, "id": "f6e89611", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([False, False, True, True, True])" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a > b" ] }, { "cell_type": "code", "execution_count": 73, "id": "15a5a80a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([2, 3, 4])" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[a > b]" ] }, { "cell_type": "markdown", "id": "0259499b", "metadata": {}, "source": [ "## Summarizing operations" ] }, { "cell_type": "code", "execution_count": 75, "id": "c1b30281", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 1, 2, 3, 4])" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 79, "id": "d850c2aa", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.4142135623730951" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.std()" ] }, { "cell_type": "code", "execution_count": 82, "id": "2b2587f2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n.min()" ] }, { "cell_type": "markdown", "id": "0662686b", "metadata": {}, "source": [ "### Next\n", "\n", "Linear algebra refresher" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.11" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 01-intro/notebooks/08-linear-algebra.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "3aace4b5", "metadata": {}, "source": [ "# Machine Learning Zoomcamp\n", "\n", "## 1.8 Linear algebra refresher" ] }, { "cell_type": "markdown", "id": "2cd0b8e5", "metadata": {}, "source": [ "Plan:\n", "\n", "* Vector operations\n", "* Multiplication\n", " * Vector-vector multiplication\n", " * Matrix-vector multiplication\n", " * Matrix-matrix multiplication\n", "* Identity matrix\n", "* Inverse" ] }, { "cell_type": "code", "execution_count": 1, "id": "1317a223", "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "markdown", "id": "4052050d", "metadata": {}, "source": [ "## Vector operations" ] }, { "cell_type": "code", "execution_count": 2, "id": "e87a01b7", "metadata": {}, "outputs": [], "source": [ "u = np.array([2, 4, 5, 6])" ] }, { "cell_type": "code", "execution_count": 6, "id": "913795a9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 4, 8, 10, 12])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2 * u" ] }, { "cell_type": "code", "execution_count": 4, "id": "24625627", "metadata": {}, "outputs": [], "source": [ "v = np.array([1, 0, 0, 2])" ] }, { "cell_type": "code", "execution_count": 5, "id": "edc95be4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([3, 4, 5, 8])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "u + v" ] }, { "cell_type": "code", "execution_count": 7, "id": "62f471c3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 2, 0, 0, 12])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "u * v" ] }, { "cell_type": "markdown", "id": "6cb784ea", "metadata": {}, "source": [ "## Multiplication" ] }, { "cell_type": "code", "execution_count": 10, "id": "6a838e14", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v.shape[0]" ] }, { "cell_type": "code", "execution_count": 11, "id": "bef565ee", "metadata": {}, "outputs": [], "source": [ "def vector_vector_multiplication(u, v):\n", " assert u.shape[0] == v.shape[0]\n", " \n", " n = u.shape[0]\n", " \n", " result = 0.0\n", "\n", " for i in range(n):\n", " result = result + u[i] * v[i]\n", " \n", " return result" ] }, { "cell_type": "code", "execution_count": 12, "id": "5f212712", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "14.0" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vector_vector_multiplication(u, v)" ] }, { "cell_type": "code", "execution_count": 13, "id": "b57c4464", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "14" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "u.dot(v)" ] }, { "cell_type": "code", "execution_count": 14, "id": "b7710217", "metadata": {}, "outputs": [], "source": [ "U = np.array([\n", " [2, 4, 5, 6],\n", " [1, 2, 1, 2],\n", " [3, 1, 2, 1],\n", "])" ] }, { "cell_type": "code", "execution_count": 16, "id": "3f1ee5f1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3, 4)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U.shape" ] }, { "cell_type": "code", "execution_count": 17, "id": "8b4f7530", "metadata": {}, "outputs": [], "source": [ "def matrix_vector_multiplication(U, v):\n", " assert U.shape[1] == v.shape[0]\n", " \n", " num_rows = U.shape[0]\n", " \n", " result = np.zeros(num_rows)\n", " \n", " for i in range(num_rows):\n", " result[i] = vector_vector_multiplication(U[i], v)\n", " \n", " return result" ] }, { "cell_type": "code", "execution_count": 18, "id": "930f42c3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([14., 5., 5.])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matrix_vector_multiplication(U, v)" ] }, { "cell_type": "code", "execution_count": 19, "id": "0937dafd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([14, 5, 5])" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U.dot(v)" ] }, { "cell_type": "code", "execution_count": 20, "id": "85280363", "metadata": {}, "outputs": [], "source": [ "V = np.array([\n", " [1, 1, 2],\n", " [0, 0.5, 1], \n", " [0, 2, 1],\n", " [2, 1, 0],\n", "])" ] }, { "cell_type": "code", "execution_count": 21, "id": "82039bcf", "metadata": {}, "outputs": [], "source": [ "def matrix_matrix_multiplication(U, V):\n", " assert U.shape[1] == V.shape[0]\n", " \n", " num_rows = U.shape[0]\n", " num_cols = V.shape[1]\n", " \n", " result = np.zeros((num_rows, num_cols))\n", " \n", " for i in range(num_cols):\n", " vi = V[:, i]\n", " Uvi = matrix_vector_multiplication(U, vi)\n", " result[:, i] = Uvi\n", " \n", " return result" ] }, { "cell_type": "code", "execution_count": 22, "id": "ab0e5aba", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[14. , 20. , 13. ],\n", " [ 5. , 6. , 5. ],\n", " [ 5. , 8.5, 9. ]])" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matrix_matrix_multiplication(U, V)" ] }, { "cell_type": "code", "execution_count": 23, "id": "8d0e3b73", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[14. , 20. , 13. ],\n", " [ 5. , 6. , 5. ],\n", " [ 5. , 8.5, 9. ]])" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U.dot(V)" ] }, { "cell_type": "markdown", "id": "fb2cdbdd", "metadata": {}, "source": [ "## Identity matrix" ] }, { "cell_type": "code", "execution_count": 25, "id": "ca913560", "metadata": {}, "outputs": [], "source": [ "I = np.eye(3)" ] }, { "cell_type": "code", "execution_count": 28, "id": "0614d05f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1. , 1. , 2. ],\n", " [0. , 0.5, 1. ],\n", " [0. , 2. , 1. ],\n", " [2. , 1. , 0. ]])" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "V" ] }, { "cell_type": "code", "execution_count": 27, "id": "aabbf2ad", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1. , 1. , 2. ],\n", " [0. , 0.5, 1. ],\n", " [0. , 2. , 1. ],\n", " [2. , 1. , 0. ]])" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "V.dot(I)" ] }, { "cell_type": "markdown", "id": "e8f786ef", "metadata": {}, "source": [ "## Inverse" ] }, { "cell_type": "code", "execution_count": 31, "id": "3e6fc747", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1. , 1. , 2. ],\n", " [0. , 0.5, 1. ],\n", " [0. , 2. , 1. ]])" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Vs = V[[0, 1, 2]]\n", "Vs" ] }, { "cell_type": "code", "execution_count": 33, "id": "5265b91e", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "array([[ 1. , -2. , 0. ],\n", " [ 0. , -0.66666667, 0.66666667],\n", " [ 0. , 1.33333333, -0.33333333]])" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Vs_inv = np.linalg.inv(Vs)\n", "Vs_inv" ] }, { "cell_type": "code", "execution_count": 34, "id": "3cd1d98b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1., 0., 0.],\n", " [0., 1., 0.],\n", " [0., 0., 1.]])" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Vs_inv.dot(Vs)" ] }, { "cell_type": "markdown", "id": "1c54ed7d", "metadata": {}, "source": [ "### Next \n", "\n", "Intro to Pandas" ] }, { "cell_type": "code", "execution_count": null, "id": "64d8bdce", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.11" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 01-intro/notebooks/09-pandas.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "3473239e", "metadata": {}, "source": [ "# Machine Learning Zoomcamp\n", "\n", "## 1.9 Introduction to Pandas\n", "\n", "Plan:\n", "\n", "* Data Frames\n", "* Series\n", "* Index\n", "* Accessing elements\n", "* Element-wise operations\n", "* Filtering\n", "* String operations\n", "* Summarizing operations\n", "* Missing values\n", "* Grouping\n", "* Getting the NumPy arrays" ] }, { "cell_type": "code", "execution_count": 4, "id": "b1a23fb2", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "markdown", "id": "06e3062c", "metadata": {}, "source": [ "## DataFrames" ] }, { "cell_type": "code", "execution_count": 5, "id": "114c8ddb", "metadata": {}, "outputs": [], "source": [ "data = [\n", " ['Nissan', 'Stanza', 1991, 138, 4, 'MANUAL', 'sedan', 2000],\n", " ['Hyundai', 'Sonata', 2017, None, 4, 'AUTOMATIC', 'Sedan', 27150],\n", " ['Lotus', 'Elise', 2010, 218, 4, 'MANUAL', 'convertible', 54990],\n", " ['GMC', 'Acadia', 2017, 194, 4, 'AUTOMATIC', '4dr SUV', 34450],\n", " ['Nissan', 'Frontier', 2017, 261, 6, 'MANUAL', 'Pickup', 32340],\n", "]\n", "\n", "columns = [\n", " 'Make', 'Model', 'Year', 'Engine HP', 'Engine Cylinders',\n", " 'Transmission Type', 'Vehicle_Style', 'MSRP'\n", "]" ] }, { "cell_type": "code", "execution_count": 8, "id": "c25c6c9d", "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame(data, columns=columns)" ] }, { "cell_type": "code", "execution_count": 9, "id": "abe4d2e4", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MakeModelYearEngine HPEngine CylindersTransmission TypeVehicle_StyleMSRP
0NissanStanza1991138.04MANUALsedan2000
1HyundaiSonata2017NaN4AUTOMATICSedan27150
2LotusElise2010218.04MANUALconvertible54990
3GMCAcadia2017194.04AUTOMATIC4dr SUV34450
4NissanFrontier2017261.06MANUALPickup32340
\n", "
" ], "text/plain": [ " Make Model Year Engine HP Engine Cylinders Transmission Type \\\n", "0 Nissan Stanza 1991 138.0 4 MANUAL \n", "1 Hyundai Sonata 2017 NaN 4 AUTOMATIC \n", "2 Lotus Elise 2010 218.0 4 MANUAL \n", "3 GMC Acadia 2017 194.0 4 AUTOMATIC \n", "4 Nissan Frontier 2017 261.0 6 MANUAL \n", "\n", " Vehicle_Style MSRP \n", "0 sedan 2000 \n", "1 Sedan 27150 \n", "2 convertible 54990 \n", "3 4dr SUV 34450 \n", "4 Pickup 32340 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 10, "id": "f104d442", "metadata": {}, "outputs": [], "source": [ "data = [\n", " {\n", " \"Make\": \"Nissan\",\n", " \"Model\": \"Stanza\",\n", " \"Year\": 1991,\n", " \"Engine HP\": 138.0,\n", " \"Engine Cylinders\": 4,\n", " \"Transmission Type\": \"MANUAL\",\n", " \"Vehicle_Style\": \"sedan\",\n", " \"MSRP\": 2000\n", " },\n", " {\n", " \"Make\": \"Hyundai\",\n", " \"Model\": \"Sonata\",\n", " \"Year\": 2017,\n", " \"Engine HP\": None,\n", " \"Engine Cylinders\": 4,\n", " \"Transmission Type\": \"AUTOMATIC\",\n", " \"Vehicle_Style\": \"Sedan\",\n", " \"MSRP\": 27150\n", " },\n", " {\n", " \"Make\": \"Lotus\",\n", " \"Model\": \"Elise\",\n", " \"Year\": 2010,\n", " \"Engine HP\": 218.0,\n", " \"Engine Cylinders\": 4,\n", " \"Transmission Type\": \"MANUAL\",\n", " \"Vehicle_Style\": \"convertible\",\n", " \"MSRP\": 54990\n", " },\n", " {\n", " \"Make\": \"GMC\",\n", " \"Model\": \"Acadia\",\n", " \"Year\": 2017,\n", " \"Engine HP\": 194.0,\n", " \"Engine Cylinders\": 4,\n", " \"Transmission Type\": \"AUTOMATIC\",\n", " \"Vehicle_Style\": \"4dr SUV\",\n", " \"MSRP\": 34450\n", " },\n", " {\n", " \"Make\": \"Nissan\",\n", " \"Model\": \"Frontier\",\n", " \"Year\": 2017,\n", " \"Engine HP\": 261.0,\n", " \"Engine Cylinders\": 6,\n", " \"Transmission Type\": \"MANUAL\",\n", " \"Vehicle_Style\": \"Pickup\",\n", " \"MSRP\": 32340\n", " }\n", "]" ] }, { "cell_type": "code", "execution_count": 12, "id": "2d89579e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MakeModelYearEngine HPEngine CylindersTransmission TypeVehicle_StyleMSRP
0NissanStanza1991138.04MANUALsedan2000
1HyundaiSonata2017NaN4AUTOMATICSedan27150
2LotusElise2010218.04MANUALconvertible54990
3GMCAcadia2017194.04AUTOMATIC4dr SUV34450
4NissanFrontier2017261.06MANUALPickup32340
\n", "
" ], "text/plain": [ " Make Model Year Engine HP Engine Cylinders Transmission Type \\\n", "0 Nissan Stanza 1991 138.0 4 MANUAL \n", "1 Hyundai Sonata 2017 NaN 4 AUTOMATIC \n", "2 Lotus Elise 2010 218.0 4 MANUAL \n", "3 GMC Acadia 2017 194.0 4 AUTOMATIC \n", "4 Nissan Frontier 2017 261.0 6 MANUAL \n", "\n", " Vehicle_Style MSRP \n", "0 sedan 2000 \n", "1 Sedan 27150 \n", "2 convertible 54990 \n", "3 4dr SUV 34450 \n", "4 Pickup 32340 " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(data)\n", "df" ] }, { "cell_type": "code", "execution_count": 14, "id": "097f69d9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MakeModelYearEngine HPEngine CylindersTransmission TypeVehicle_StyleMSRP
0NissanStanza1991138.04MANUALsedan2000
1HyundaiSonata2017NaN4AUTOMATICSedan27150
\n", "
" ], "text/plain": [ " Make Model Year Engine HP Engine Cylinders Transmission Type \\\n", "0 Nissan Stanza 1991 138.0 4 MANUAL \n", "1 Hyundai Sonata 2017 NaN 4 AUTOMATIC \n", "\n", " Vehicle_Style MSRP \n", "0 sedan 2000 \n", "1 Sedan 27150 " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head(n=2)" ] }, { "cell_type": "code", "execution_count": null, "id": "0961a097", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "94b432db", "metadata": {}, "source": [ "## Series" ] }, { "cell_type": "code", "execution_count": 18, "id": "7299a212", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (1897567212.py, line 1)", "output_type": "error", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"/tmp/ipykernel_580/1897567212.py\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m df.Engine HP\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "df.Engine HP" ] }, { "cell_type": "code", "execution_count": 19, "id": "54898f9d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 138.0\n", "1 NaN\n", "2 218.0\n", "3 194.0\n", "4 261.0\n", "Name: Engine HP, dtype: float64" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Engine HP']" ] }, { "cell_type": "code", "execution_count": 20, "id": "acc40580", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MakeModelMSRP
0NissanStanza2000
1HyundaiSonata27150
2LotusElise54990
3GMCAcadia34450
4NissanFrontier32340
\n", "
" ], "text/plain": [ " Make Model MSRP\n", "0 Nissan Stanza 2000\n", "1 Hyundai Sonata 27150\n", "2 Lotus Elise 54990\n", "3 GMC Acadia 34450\n", "4 Nissan Frontier 32340" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[['Make', 'Model', 'MSRP']]" ] }, { "cell_type": "code", "execution_count": 23, "id": "9c699894", "metadata": {}, "outputs": [], "source": [ "df['id'] = [1, 2, 3, 4, 5]" ] }, { "cell_type": "code", "execution_count": 26, "id": "70ec4449", "metadata": {}, "outputs": [], "source": [ "df['id'] = [10, 20, 30, 40, 50]" ] }, { "cell_type": "code", "execution_count": 27, "id": "ff30947e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MakeModelYearEngine HPEngine CylindersTransmission TypeVehicle_StyleMSRPid
0NissanStanza1991138.04MANUALsedan200010
1HyundaiSonata2017NaN4AUTOMATICSedan2715020
2LotusElise2010218.04MANUALconvertible5499030
3GMCAcadia2017194.04AUTOMATIC4dr SUV3445040
4NissanFrontier2017261.06MANUALPickup3234050
\n", "
" ], "text/plain": [ " Make Model Year Engine HP Engine Cylinders Transmission Type \\\n", "0 Nissan Stanza 1991 138.0 4 MANUAL \n", "1 Hyundai Sonata 2017 NaN 4 AUTOMATIC \n", "2 Lotus Elise 2010 218.0 4 MANUAL \n", "3 GMC Acadia 2017 194.0 4 AUTOMATIC \n", "4 Nissan Frontier 2017 261.0 6 MANUAL \n", "\n", " Vehicle_Style MSRP id \n", "0 sedan 2000 10 \n", "1 Sedan 27150 20 \n", "2 convertible 54990 30 \n", "3 4dr SUV 34450 40 \n", "4 Pickup 32340 50 " ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 28, "id": "064e3e7c", "metadata": {}, "outputs": [], "source": [ "del df['id']" ] }, { "cell_type": "code", "execution_count": 29, "id": "5206c3ba", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MakeModelYearEngine HPEngine CylindersTransmission TypeVehicle_StyleMSRP
0NissanStanza1991138.04MANUALsedan2000
1HyundaiSonata2017NaN4AUTOMATICSedan27150
2LotusElise2010218.04MANUALconvertible54990
3GMCAcadia2017194.04AUTOMATIC4dr SUV34450
4NissanFrontier2017261.06MANUALPickup32340
\n", "
" ], "text/plain": [ " Make Model Year Engine HP Engine Cylinders Transmission Type \\\n", "0 Nissan Stanza 1991 138.0 4 MANUAL \n", "1 Hyundai Sonata 2017 NaN 4 AUTOMATIC \n", "2 Lotus Elise 2010 218.0 4 MANUAL \n", "3 GMC Acadia 2017 194.0 4 AUTOMATIC \n", "4 Nissan Frontier 2017 261.0 6 MANUAL \n", "\n", " Vehicle_Style MSRP \n", "0 sedan 2000 \n", "1 Sedan 27150 \n", "2 convertible 54990 \n", "3 4dr SUV 34450 \n", "4 Pickup 32340 " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "id": "530a4af3", "metadata": {}, "source": [ "## Index\n" ] }, { "cell_type": "code", "execution_count": 30, "id": "69e9bfbd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RangeIndex(start=0, stop=5, step=1)" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.index" ] }, { "cell_type": "code", "execution_count": 32, "id": "d7e06c93", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RangeIndex(start=0, stop=5, step=1)" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.Make.index" ] }, { "cell_type": "code", "execution_count": 37, "id": "14213eb4", "metadata": {}, "outputs": [], "source": [ "df.index = ['a', 'b', 'c', 'd', 'e']" ] }, { "cell_type": "code", "execution_count": 38, "id": "d9074134", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MakeModelYearEngine HPEngine CylindersTransmission TypeVehicle_StyleMSRP
aNissanStanza1991138.04MANUALsedan2000
bHyundaiSonata2017NaN4AUTOMATICSedan27150
cLotusElise2010218.04MANUALconvertible54990
dGMCAcadia2017194.04AUTOMATIC4dr SUV34450
eNissanFrontier2017261.06MANUALPickup32340
\n", "
" ], "text/plain": [ " Make Model Year Engine HP Engine Cylinders Transmission Type \\\n", "a Nissan Stanza 1991 138.0 4 MANUAL \n", "b Hyundai Sonata 2017 NaN 4 AUTOMATIC \n", "c Lotus Elise 2010 218.0 4 MANUAL \n", "d GMC Acadia 2017 194.0 4 AUTOMATIC \n", "e Nissan Frontier 2017 261.0 6 MANUAL \n", "\n", " Vehicle_Style MSRP \n", "a sedan 2000 \n", "b Sedan 27150 \n", "c convertible 54990 \n", "d 4dr SUV 34450 \n", "e Pickup 32340 " ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 42, "id": "a1c57024", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MakeModelYearEngine HPEngine CylindersTransmission TypeVehicle_StyleMSRP
bHyundaiSonata2017NaN4AUTOMATICSedan27150
cLotusElise2010218.04MANUALconvertible54990
eNissanFrontier2017261.06MANUALPickup32340
\n", "
" ], "text/plain": [ " Make Model Year Engine HP Engine Cylinders Transmission Type \\\n", "b Hyundai Sonata 2017 NaN 4 AUTOMATIC \n", "c Lotus Elise 2010 218.0 4 MANUAL \n", "e Nissan Frontier 2017 261.0 6 MANUAL \n", "\n", " Vehicle_Style MSRP \n", "b Sedan 27150 \n", "c convertible 54990 \n", "e Pickup 32340 " ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[[1, 2, 4]]" ] }, { "cell_type": "code", "execution_count": 47, "id": "764c2aad", "metadata": {}, "outputs": [], "source": [ "df = df.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 48, "id": "f338e70b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MakeModelYearEngine HPEngine CylindersTransmission TypeVehicle_StyleMSRP
0NissanStanza1991138.04MANUALsedan2000
1HyundaiSonata2017NaN4AUTOMATICSedan27150
2LotusElise2010218.04MANUALconvertible54990
3GMCAcadia2017194.04AUTOMATIC4dr SUV34450
4NissanFrontier2017261.06MANUALPickup32340
\n", "
" ], "text/plain": [ " Make Model Year Engine HP Engine Cylinders Transmission Type \\\n", "0 Nissan Stanza 1991 138.0 4 MANUAL \n", "1 Hyundai Sonata 2017 NaN 4 AUTOMATIC \n", "2 Lotus Elise 2010 218.0 4 MANUAL \n", "3 GMC Acadia 2017 194.0 4 AUTOMATIC \n", "4 Nissan Frontier 2017 261.0 6 MANUAL \n", "\n", " Vehicle_Style MSRP \n", "0 sedan 2000 \n", "1 Sedan 27150 \n", "2 convertible 54990 \n", "3 4dr SUV 34450 \n", "4 Pickup 32340 " ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "id": "53457e10", "metadata": {}, "source": [ "## Accessing elements" ] }, { "cell_type": "code", "execution_count": null, "id": "758f6b8e", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "ecfc3f22", "metadata": {}, "source": [ "## Element-wise operations" ] }, { "cell_type": "code", "execution_count": 51, "id": "318183a8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 276.0\n", "1 NaN\n", "2 436.0\n", "3 388.0\n", "4 522.0\n", "Name: Engine HP, dtype: float64" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Engine HP'] * 2" ] }, { "cell_type": "code", "execution_count": 53, "id": "ae5d726d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 False\n", "1 True\n", "2 False\n", "3 True\n", "4 True\n", "Name: Year, dtype: bool" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Year'] >= 2015" ] }, { "cell_type": "markdown", "id": "5813ae3a", "metadata": {}, "source": [ "## Filtering" ] }, { "cell_type": "code", "execution_count": 55, "id": "73699361", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MakeModelYearEngine HPEngine CylindersTransmission TypeVehicle_StyleMSRP
0NissanStanza1991138.04MANUALsedan2000
4NissanFrontier2017261.06MANUALPickup32340
\n", "
" ], "text/plain": [ " Make Model Year Engine HP Engine Cylinders Transmission Type \\\n", "0 Nissan Stanza 1991 138.0 4 MANUAL \n", "4 Nissan Frontier 2017 261.0 6 MANUAL \n", "\n", " Vehicle_Style MSRP \n", "0 sedan 2000 \n", "4 Pickup 32340 " ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\n", " df['Make'] == 'Nissan'\n", "]" ] }, { "cell_type": "code", "execution_count": 56, "id": "0f29ed0f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MakeModelYearEngine HPEngine CylindersTransmission TypeVehicle_StyleMSRP
4NissanFrontier2017261.06MANUALPickup32340
\n", "
" ], "text/plain": [ " Make Model Year Engine HP Engine Cylinders Transmission Type \\\n", "4 Nissan Frontier 2017 261.0 6 MANUAL \n", "\n", " Vehicle_Style MSRP \n", "4 Pickup 32340 " ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\n", " (df['Make'] == 'Nissan') & (df['Year'] >= 2015)\n", "]" ] }, { "cell_type": "markdown", "id": "0a8a3d49", "metadata": {}, "source": [ "## String operations" ] }, { "cell_type": "code", "execution_count": 68, "id": "7deaf57a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'machine_learning_zoomcamp'" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'machine learning zoomcamp'.replace(' ', '_')" ] }, { "cell_type": "code", "execution_count": 67, "id": "9ffa16ea", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 sedan\n", "1 sedan\n", "2 convertible\n", "3 4dr suv\n", "4 pickup\n", "Name: Vehicle_Style, dtype: object" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Vehicle_Style'].str.lower()" ] }, { "cell_type": "code", "execution_count": 72, "id": "835c3a40", "metadata": {}, "outputs": [], "source": [ "df['Vehicle_Style'] = df['Vehicle_Style'].str.replace(' ', '_').str.lower()" ] }, { "cell_type": "code", "execution_count": 74, "id": "5ee197dc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MakeModelYearEngine HPEngine CylindersTransmission TypeVehicle_StyleMSRP
0NissanStanza1991138.04MANUALsedan2000
1HyundaiSonata2017NaN4AUTOMATICsedan27150
2LotusElise2010218.04MANUALconvertible54990
3GMCAcadia2017194.04AUTOMATIC4dr_suv34450
4NissanFrontier2017261.06MANUALpickup32340
\n", "
" ], "text/plain": [ " Make Model Year Engine HP Engine Cylinders Transmission Type \\\n", "0 Nissan Stanza 1991 138.0 4 MANUAL \n", "1 Hyundai Sonata 2017 NaN 4 AUTOMATIC \n", "2 Lotus Elise 2010 218.0 4 MANUAL \n", "3 GMC Acadia 2017 194.0 4 AUTOMATIC \n", "4 Nissan Frontier 2017 261.0 6 MANUAL \n", "\n", " Vehicle_Style MSRP \n", "0 sedan 2000 \n", "1 sedan 27150 \n", "2 convertible 54990 \n", "3 4dr_suv 34450 \n", "4 pickup 32340 " ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "id": "0f0d1bc6", "metadata": {}, "source": [ "## Summarizing operations" ] }, { "cell_type": "code", "execution_count": 81, "id": "0e6bb68a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
YearEngine HPEngine CylindersMSRP
count5.004.005.005.00
mean2010.40202.754.4030186.00
std11.2651.300.8918985.04
min1991.00138.004.002000.00
25%2010.00180.004.0027150.00
50%2017.00206.004.0032340.00
75%2017.00228.754.0034450.00
max2017.00261.006.0054990.00
\n", "
" ], "text/plain": [ " Year Engine HP Engine Cylinders MSRP\n", "count 5.00 4.00 5.00 5.00\n", "mean 2010.40 202.75 4.40 30186.00\n", "std 11.26 51.30 0.89 18985.04\n", "min 1991.00 138.00 4.00 2000.00\n", "25% 2010.00 180.00 4.00 27150.00\n", "50% 2017.00 206.00 4.00 32340.00\n", "75% 2017.00 228.75 4.00 34450.00\n", "max 2017.00 261.00 6.00 54990.00" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe().round(2)" ] }, { "cell_type": "code", "execution_count": 85, "id": "ca689f7b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Make 4\n", "Model 5\n", "Year 3\n", "Engine HP 4\n", "Engine Cylinders 2\n", "Transmission Type 2\n", "Vehicle_Style 4\n", "MSRP 5\n", "dtype: int64" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.nunique()" ] }, { "cell_type": "markdown", "id": "0318652d", "metadata": {}, "source": [ "## Missing values\n" ] }, { "cell_type": "code", "execution_count": 87, "id": "05000331", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Make 0\n", "Model 0\n", "Year 0\n", "Engine HP 1\n", "Engine Cylinders 0\n", "Transmission Type 0\n", "Vehicle_Style 0\n", "MSRP 0\n", "dtype: int64" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isnull().sum()" ] }, { "cell_type": "markdown", "id": "963eded9", "metadata": {}, "source": [ "## Grouping\n" ] }, { "cell_type": "markdown", "id": "7bf5fad5", "metadata": {}, "source": [ "```\n", "SELECT \n", " transmission_type,\n", " AVG(MSRP)\n", "FROM\n", " cars\n", "GROUP BY\n", " transmission_type\n", "```" ] }, { "cell_type": "code", "execution_count": 90, "id": "6310552b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Transmission Type\n", "AUTOMATIC 34450\n", "MANUAL 54990\n", "Name: MSRP, dtype: int64" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby('Transmission Type').MSRP.max()" ] }, { "cell_type": "markdown", "id": "3de63a4b", "metadata": {}, "source": [ "## Getting the NumPy arrays" ] }, { "cell_type": "code", "execution_count": 93, "id": "749f764c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 2000, 27150, 54990, 34450, 32340])" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.MSRP.values" ] }, { "cell_type": "code", "execution_count": 95, "id": "1ff56c15", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'Make': 'Nissan',\n", " 'Model': 'Stanza',\n", " 'Year': 1991,\n", " 'Engine HP': 138.0,\n", " 'Engine Cylinders': 4,\n", " 'Transmission Type': 'MANUAL',\n", " 'Vehicle_Style': 'sedan',\n", " 'MSRP': 2000},\n", " {'Make': 'Hyundai',\n", " 'Model': 'Sonata',\n", " 'Year': 2017,\n", " 'Engine HP': nan,\n", " 'Engine Cylinders': 4,\n", " 'Transmission Type': 'AUTOMATIC',\n", " 'Vehicle_Style': 'sedan',\n", " 'MSRP': 27150},\n", " {'Make': 'Lotus',\n", " 'Model': 'Elise',\n", " 'Year': 2010,\n", " 'Engine HP': 218.0,\n", " 'Engine Cylinders': 4,\n", " 'Transmission Type': 'MANUAL',\n", " 'Vehicle_Style': 'convertible',\n", " 'MSRP': 54990},\n", " {'Make': 'GMC',\n", " 'Model': 'Acadia',\n", " 'Year': 2017,\n", " 'Engine HP': 194.0,\n", " 'Engine Cylinders': 4,\n", " 'Transmission Type': 'AUTOMATIC',\n", " 'Vehicle_Style': '4dr_suv',\n", " 'MSRP': 34450},\n", " {'Make': 'Nissan',\n", " 'Model': 'Frontier',\n", " 'Year': 2017,\n", " 'Engine HP': 261.0,\n", " 'Engine Cylinders': 6,\n", " 'Transmission Type': 'MANUAL',\n", " 'Vehicle_Style': 'pickup',\n", " 'MSRP': 32340}]" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.to_dict(orient='records')" ] }, { "cell_type": "code", "execution_count": null, "id": "f1e6fae3", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.11" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 02-regression/01-car-price-intro.md ================================================ ## 2.1 Car price prediction project [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-21-car-price-prediction-project) ## Notes This project is about the creation of a model for helping users to predict car prices. The dataset was obtained from [this kaggle competition](https://www.kaggle.com/CooperUnion/cardataset). **Project plan:** * Prepare data and Exploratory data analysis (EDA) * Use linear regression for predicting price * Understanding the internals of linear regression * Evaluating the model with RMSE * Feature engineering * Regularization * Using the model The code and dataset are available at this [link](https://github.com/alexeygrigorev/mlbookcamp-code/tree/master/chapter-02-car-price).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/18/ml-zoomcamp-2023-machine-learning-for-regression-part-1/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Next: [Data preparation](02-data-preparation.md) ================================================ FILE: 02-regression/02-data-preparation.md ================================================ ## 2.2 Data preparation [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-2-slides) ## Notes **Pandas attributes and methods:** * `pd.read_csv()` -> read csv files * `df.head()` -> take a look of the dataframe * `df.columns` -> retrieve colum names of a dataframe * `df.columns.str.lower()` -> lowercase all the letters * `df.columns.str.replace(' ', '_')` -> replace the space separator * `df.dtypes` -> retrieve data types of all features * `df.index` -> retrieve indices of a dataframe The entire code of this project is available in [this jupyter notebook](notebook.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/18/ml-zoomcamp-2023-machine-learning-for-regression-part-1/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Car price prediction project](01-car-price-intro.md) * Next: [Exploratory data analysis](03-eda.md) ================================================ FILE: 02-regression/03-eda.md ================================================ ## 2.3 Exploratory data analysis [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-2-slides) ## Notes **Pandas attributes and methods:** * `df[col].unique()` -> return a list of unique values in the series * `df[col].nunique()` -> return the number of unique values in the series * `df.isnull().sum()` -> return the number of null values in the dataframe **Matplotlib and seaborn methods:** * `%matplotlib inline` -> assure that plots are displayed in jupyter notebook's cells * `sns.histplot()` -> show the histogram of a series **Numpy methods:** * `np.log1p()` -> apply log transformation to a variable, after adding one to each input value. Long-tail distributions usually confuse the ML models, so the recommendation is to transform the target variable distribution to a normal one whenever possible. The entire code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/19/ml-zoomcamp-2023-machine-learning-for-regression-part-2/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Data preparation](02-data-preparation.md) * Next: [Setting up the validation framework](04-validation-framework.md) ================================================ FILE: 02-regression/04-validation-framework.md ================================================ ## 2.4 Setting up the validation framework [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-2-slides) ## Notes In general, the dataset is splitted into three parts: training, validation, and test. For each partition, we need to obtain feature matrices (X) and vectors of targets (y). First, the size of the partitions is calculated. Next, the records are shuffled to ensure that the values in the three partitions contain non-sequential records from the dataset. Finally, the partitions are created using the shuffled indices. **Pandas attributes and methods:** * `df.iloc[]` -> return subsets of records of a dataframe, being selected by numerical indices * `df.reset_index()` -> restate the orginal indices * `del df[col]` -> eliminate a column variable **Numpy methods:** * `np.arange()` -> return an array of numbers * `np.random.shuffle()` -> return a shuffled array * `np.random.seed()` -> set a seed for reproducibility The entire code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/19/ml-zoomcamp-2023-machine-learning-for-regression-part-3/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Exploratory data analysis](03-eda.md) * Next: [Linear regression](05-linear-regression-simple.md) ================================================ FILE: 02-regression/05-linear-regression-simple.md ================================================ ## 2.5 Linear regression [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-2-slides) ## Notes Model for solving regression tasks, in which the objective is to adjust a line for the data and make predictions on new values. The input of this model is the **feature matrix** `X` and a `y` **vector of predictions** is obtained, trying to be as close as possible to the **actual** `y` values. The linear regression formula is the sum of the bias term \( $w_0$ \), which refers to the predictions if there is no information, and each of the feature values times their corresponding weights as \( $x_{i1} \cdot w_1 + x_{i2} \cdot w_2 + ... + x_{in} \cdot w_n$ \). So the simple linear regression formula looks like: $g(x_i) = w_0 + x_{i1} \cdot w_1 + x_{i2} \cdot w_2 + ... + x_{in} \cdot w_n$. And that can be further simplified as: $g(x_i) = w_0 + \displaystyle\sum_{j=1}^{n} w_j \cdot x_{ij}$ Here is a simple implementation of Linear Regression in python: ~~~~python w0 = 7.1 def linear_regression(xi): n = len(xi) pred = w0 w = [0.01, 0.04, 0.002] for j in range(n): pred = pred + w[j] * xi[j] return pred ~~~~ If we look at the $\displaystyle\sum_{j=1}^{n} w_j \cdot x_{ij}$ part in the above equation, we know that this is nothing else but a vector-vector multiplication. Hence, we can rewrite the equation as $g(x_i) = w_0 + x_i^T \cdot w$ We need to assure that the result is shown on the untransformed scale by using the inverse function `exp()`. The entire code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/20/ml-zoomcamp-2023-machine-learning-for-regression-part-4/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Setting up the validation framework](04-validation-framework.md) * Next: [Linear regression: vector form](06-linear-regression-vector.md) ================================================ FILE: 02-regression/06-linear-regression-vector.md ================================================ ## 2.6 Linear regression: vector form [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-2-slides) ## Notes The formula of linear regression can be synthesized with the dot product between features and weights. The feature vector includes the *bias* term with an *x* value of one, such as $w_{0}^{x_{i0}},\ where\ x_{i0} = 1\ for\ w_0$. When all the records are included, the linear regression can be calculated with the dot product between ***feature matrix*** and ***vector of weights***, obtaining the `y` vector of predictions. The entire code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.wordpress.com/2023/09/20/ml-zoomcamp-2023-machine-learning-for-regression-part-5/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Linear regression](05-linear-regression-simple.md) * Next: [Training linear regression: Normal equation](07-linear-regression-training.md) ================================================ FILE: 02-regression/07-linear-regression-training.md ================================================ ## 2.7 Training linear regression: Normal equation [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-2-slides) ## Notes Obtaining predictions as close as possible to $y$ target values requires the calculation of weights from the general LR equation. The feature matrix does not have an inverse because it is not square, so it is required to obtain an approximate solution, which can be obtained using the **Gram matrix** (multiplication of feature matrix ($X$) and its transpose ($X^T$)). The vector of weights or coefficients $w$ obtained with this formula is the closest possible solution to the LR system. Normal Equation: $w$ = $(X^TX)^{-1}X^Ty$ Where: $X^TX$ is the Gram Matrix The entire code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/21/ml-zoomcamp-2023-machine-learning-for-regression-part-6/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Linear regression: vector form](06-linear-regression-vector.md) * Next: [Baseline model for car price prediction project](08-baseline-model.md) ================================================ FILE: 02-regression/08-baseline-model.md ================================================ ## 2.8 Baseline model for car price prediction project [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-2-slides) ## Notes * In this lesson we build a baseline model and apply the `df_train` dataset to derive weights for the bias (w0) and the features (w). For this, we use the `train_linear_regression(X, y)` function from the previous lesson. * Linear regression only applies to numerical features. Therefore, only the numerical features from `df_train` are used for the feature matrix. * We notice some of the features in `df_train` are `nan`. We set them to `0` for the sake of simplicity, so the model is solvable, but it will be appropriate if a non-zeo value is used as the filler (e.g. mean value of the feature). * Once the weights are calculated, then we apply them on $$\\\\ \large g(X) = w_0 + X \cdot w$$ to derive the predicted y vector. * Then we plot both predicted y and the actual y on the same histogram for a visual comparison. The entire code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/21/ml-zoomcamp-2023-machine-learning-for-regression-part-7/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Training linear regression: Normal equation](07-linear-regression-training.md) * Next: [Root mean squared error](09-rmse.md) ================================================ FILE: 02-regression/09-rmse.md ================================================ ## 2.9 Root Mean Squared Error (RMSE) [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-2-slides) ## Notes * In the previous lesson we found out our predictions were a bit off from the actual target values in the training dataset. We need a way to quantify how good or bad the model is. This is where RMSE can be of help. * Root Mean Squared Error (RMSE) is a way to evaluate regression models. It measures the error associated with the model being evaluated. This numerical figure can then be used to compare models, enabling us to choose the one that gives the best predictions. $$RMSE = \sqrt{ \frac{1}{m} \sum_{i=1}^{m} {(g(x_i) - y_i)^2}}$$ - $g(x_i)$ is the prediction - $y_i$ is the actual value - $m$ is the number of observations in the dataset (i.e. cars) The entire code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/22/ml-zoomcamp-2023-machine-learning-for-regression-part-8/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Baseline model for car price prediction project](08-baseline-model.md) * Next: [Using RMSE on validation data](10-car-price-validation.md) ================================================ FILE: 02-regression/10-car-price-validation.md ================================================ ## 2.10 Computing RMSE on validation data [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-2-slides) ## Notes Calculation of the RMSE on validation partition of the dataset of car price prediction. In this way, we have a metric to evaluate the model's performance. The entire code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/22/ml-zoomcamp-2023-machine-learning-for-regression-part-8/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Root mean squared error](09-rmse.md) * Next: [Feature engineering](11-feature-engineering.md) ================================================ FILE: 02-regression/11-feature-engineering.md ================================================ ## 2.11 Feature engineering Feature engineering is the process of creating new features [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-2-slides) ## Notes The feature age of the car was included in the dataset, obtained with the subtraction of the maximum year of cars and each of the years of cars. This new feature improved the model performance, measured with the RMSE and comparing the distributions of y target variable and predictions. The entire code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/22/ml-zoomcamp-2023-machine-learning-for-regression-part-9/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Using RMSE on validation data](10-car-price-validation.md) * Next: [Categorical variables](12-categorical-variables.md) ================================================ FILE: 02-regression/12-categorical-variables.md ================================================ ## 2.12 Categorical variables [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-2-slides) ## Notes Categorical variables are typically represented as strings, and pandas identifies them as object types. However, some variables that appear to be numerical may actually be categorical (e.g., the number of doors a car has). All these categorical variables need to be converted to a numerical form because ML models can interpret only numerical features. It is possible to incorporate certain categories from a feature, not necessarily all of them. This transformation from categorical to numerical variables is known as One-Hot encoding. The entire code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/23/ml-zoomcamp-2023-machine-learning-for-regression-part-10/) ## Comments This way of encoding categorical features is called "one-hot encoding". We'll learn more about it in Session 3. ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Feature engineering](11-feature-engineering.md) * Next: [Regularization](13-regularization.md) ================================================ FILE: 02-regression/13-regularization.md ================================================ ## 2.13 Regularization [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-2-slides) ## Notes If the feature matrix has duplicate columns (or columns that can be expressed as a linear combination of other columns), it will not have an inverse matrix. But, sometimes this error could be passed if certain values are slightly different between duplicated columns. So, if we apply the normal equation with this feature matrix, the values associated with duplicated columns are very large, which decreases the model performance. To solve this issue, one alternative is adding a small number to the diagonal of the feature matrix, which corresponds to regularization. This technique works because the addition of small values to the diagonal makes it less likely to have duplicated columns. The regularization value is a hyperparameter of the model. After applying regularization the model performance improved. The entire code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/23/ml-zoomcamp-2023-machine-learning-for-regression-part-11/) ## Comments ### Linear combination I mentioned the term *linear combination* in the video, but didn't explain what it means. So if you're interested what it means, you can read here * One column is a linear combination of others when you can express one column of a matrix as a sum of others columns * The simplest example is when a column is an exact duplicate of another column * Another example. Let's say we have 3 columns: `a`, `b`, `c`. If `c = 0.2 * a + 0.5 * b`, then `c` is a linear combination of `a` and `b` * More formal definition: https://en.wikipedia.org/wiki/Linear_combination ### Ridge Regression The regularization technique used (adding a factor to the diagonals of Gram Matrix) in this lesson is Ridge Regression. Further explanations are available in this [DataTalks.Club article](https://datatalks.club/blog/regularization-in-regression.html). ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Categorical variables](12-categorical-variables.md) * Next: [Tuning the model](14-tuning-model.md) ================================================ FILE: 02-regression/14-tuning-model.md ================================================ ## 2.14 Tuning the model [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-2-slides) ## Notes Tuning the model consisted of finding the best regularization hyperparameter value, using the validation partition of the dataset. The model was then trained with this regularization value. The entire code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/24/ml-zoomcamp-2023-machine-learning-for-regression-part-12/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Regularization](13-regularization.md) * Next: [Using the model](15-using-model.md) ================================================ FILE: 02-regression/15-using-model.md ================================================ ## 2.15 Using the model [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-2-slides) ## Notes After finding the best model and its parameters, it was trained with training and validation partitions and the final RMSE was calculated on the test partition. Finally, the final model was used to predict the price of new cars. The entire code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-02-car-price/02-carprice.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/24/ml-zoomcamp-2023-machine-learning-for-regression-part-12/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Tuning the model](14-tuning-model.md) * Next: [Car price prediction project summary](16-summary.md) ================================================ FILE: 02-regression/16-summary.md ================================================ ## 2.16 Car price prediction project summary ## Notes In summary, this session covered some topics, including data preparation, exploratory data analysis, the validation framework, linear regression model, LR vector and normal forms, the baseline model, root mean squared error, feature engineering, regularization, tuning the model, and using the best model with new data. All these concepts were explained using the problem to predict the price of cars.
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Maximilien Eyengue](https://github.com/maxim-eyengue/Python-Codes/blob/main/ML_Zoomcamp_2024/02_regression/Summary_Session_02.md) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Using the model](15-using-model.md) * Next: [Explore more](17-explore-more.md) ================================================ FILE: 02-regression/17-explore-more.md ================================================ ## 2.17 Explore more ### Questions * In this project, we included only 5 top features. What happens if we include 10? > That's not a graded homework, it's just for you if you want to try more things on this project ### Other projects Here are other datasets that you can play with to learn more about the topic: * [California housing dataset](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.fetch_california_housing.html) - predict the price of a house * [Student Performance Data Set](https://archive.ics.uci.edu/ml/datasets/Student+Performance) - predict the performance of students * UCI ML Repository contains a lot of other datasets suitable for practicing regression - https://archive.ics.uci.edu/ml/datasets.php?task=reg ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Car price prediction project summary](16-summary.md) * Next: [Homework](homework.md) ================================================ FILE: 02-regression/README.md ================================================ ## 2. Machine Learning for Regression - 2.1 [Car price prediction project](01-car-price-intro.md) - 2.2 [Data preparation](02-data-preparation.md) - 2.3 [Exploratory data analysis](03-eda.md) - 2.4 [Setting up the validation framework](04-validation-framework.md) - 2.5 [Linear regression](05-linear-regression-simple.md) - 2.6 [Linear regression: vector form](06-linear-regression-vector.md) - 2.7 [Training linear regression: Normal equation](07-linear-regression-training.md) - 2.8 [Baseline model for car price prediction project](08-baseline-model.md) - 2.9 [Root mean squared error](09-rmse.md) - 2.10 [Using RMSE on validation data](10-car-price-validation.md) - 2.11 [Feature engineering](11-feature-engineering.md) - 2.12 [Categorical variables](12-categorical-variables.md) - 2.13 [Regularization](13-regularization.md) - 2.14 [Tuning the model](14-tuning-model.md) - 2.15 [Using the model](15-using-model.md) - 2.16 [Car price prediction project summary](16-summary.md) - 2.17 [Explore more](17-explore-more.md) - 2.18 [Homework](homework.md) ## Community notes Did you take notes? You can share them here (or in each unit separately) * [Notes from Kwang Yang](https://www.kaggle.com/kwangyangchia/notebook-for-lesson-2-mle) * [Notes from Sebastián Ayala Ruano](https://github.com/sayalaruano/100DaysOfMLCode/blob/main/Regression/Notes/NotesDay5.md) * [Notes from Ayoub Berdeddouch](https://github.com/ayoub-berdeddouch/mlbookcamp-homeworks/blob/main/Regression/homework_Regression_AyoubBerdeddouch.ipynb) * [Notes from Alvaro Navas](https://github.com/ziritrion/ml-zoomcamp/blob/main/notes/02_linear_regression.md) * [Notes from froukje](https://github.com/froukje/ml-zoomcamp/blob/main/week2/Lecture_2_car_price_prediction.ipynb) * [Notes from Jon Areas](https://github.com/jxareas/Machine-Learning-Bookcamp-2022/blob/master/notes/02-regression.md) * [Notes from Memoona Tahira](https://github.com/MemoonaTahira/MLZoomcamp2022/blob/main/Notes/Week_2-linear_regression/readme.md) * [Notes from Wesley Barreto](https://github.com/wgb-10/ML-Zoomcamp-2022/blob/main/Session-Projects/02-Regression/my-notebook.ipynb) * [Notes from Hareesh Tummala](https://github.com/tummala-hareesh/ml_zoomcamp_ht/blob/main/notes/week-2-notes.md) * [Notes from Anneysha Sarkar](https://github.com/Anneysha7/ml-zoomcamp-2023/blob/main/course-notes/week-2.md) * [Notes from Peter Ernicke](https://knowmledge.com/category/courses/ml-zoomcamp/regression/) * [Notes from Marcos Benício](https://github.com/marcosbenicio/DataScience/blob/main/01Regression/car_price.ipynb) * [Notes from Oscar Garcia](https://github.com/ozkary/machine-learning-engineering/tree/main/02-regression) * [Notes from Maximilien Eyengue](https://github.com/maxim-eyengue/Python-Codes/blob/main/ML_Zoomcamp_2024/02_regression/Summary_Session_02.md) * [Notes from Kemal Dahha](https://github.com/kemaldahha/machine-learning-course/blob/main/week_2_notes.ipynb) * [Cohort 2025 | Notes By Nitin Gupta](https://github.com/niting9881/ML-zoomcamp-local/blob/main/02-regression/Linear_Regression_FAQ.md) * Add your notes here ================================================ FILE: 02-regression/homework.md ================================================ ## Homework * For 2025 cohort homework, check [the 2025 cohort folder](../cohorts/2025/02-regression/homework.md) * For 2024 cohort homework, check [the 2024 cohort folder](../cohorts/2024/02-regression/homework.md) * For 2023 cohort homework, check [the 2023 cohort folder](../cohorts/2023/02-regression/homework.md) * For 2022 cohort homework, check [the 2022 cohort folder](../cohorts/2022/02-regression/homework.md) * For 2021 cohort homework and solution, check [the 2021 cohort folder](../cohorts/2021/02-regression/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Explore more](17-explore-more.md) ================================================ FILE: 02-regression/meta.json ================================================ { "data": "meta.csv", "session": 2, "name": "Machine Learning for Regression" } ================================================ FILE: 02-regression/notebook.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Machine Learning for Regression\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "scrolled": true }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.2 Data preparation" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "data = 'https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2021-09-18 22:31:04-- https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv\n", "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.109.133, ...\n", "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 1475504 (1,4M) [text/plain]\n", "Saving to: ‘data.csv’\n", "\n", "data.csv 100%[===================>] 1,41M 9,27MB/s in 0,2s \n", "\n", "2021-09-18 22:31:04 (9,27 MB/s) - ‘data.csv’ saved [1475504/1475504]\n", "\n" ] } ], "source": [ "!wget $data " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('data.csv')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "df.columns = df.columns.str.lower().str.replace(' ', '_')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 bmw\n", "1 bmw\n", "2 bmw\n", "3 bmw\n", "4 bmw\n", " ... \n", "11909 acura\n", "11910 acura\n", "11911 acura\n", "11912 acura\n", "11913 lincoln\n", "Name: make, Length: 11914, dtype: object" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['make'].str.lower().str.replace(' ', '_')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['make',\n", " 'model',\n", " 'engine_fuel_type',\n", " 'transmission_type',\n", " 'driven_wheels',\n", " 'market_category',\n", " 'vehicle_size',\n", " 'vehicle_style']" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "strings = list(df.dtypes[df.dtypes == 'object'].index)\n", "strings" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "for col in strings:\n", " df[col] = df[col].str.lower().str.replace(' ', '_')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "make object\n", "model object\n", "year int64\n", "engine_fuel_type object\n", "engine_hp float64\n", "engine_cylinders float64\n", "transmission_type object\n", "driven_wheels object\n", "number_of_doors float64\n", "market_category object\n", "vehicle_size object\n", "vehicle_style object\n", "highway_mpg int64\n", "city_mpg int64\n", "popularity int64\n", "msrp int64\n", "dtype: object" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.dtypes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.3 Exploratory data analysis" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "make\n", "['bmw' 'audi' 'fiat' 'mercedes-benz' 'chrysler']\n", "48\n", "\n", "model\n", "['1_series_m' '1_series' '100' '124_spider' '190-class']\n", "914\n", "\n", "year\n", "[2011 2012 2013 1992 1993]\n", "28\n", "\n", "engine_fuel_type\n", "['premium_unleaded_(required)' 'regular_unleaded'\n", " 'premium_unleaded_(recommended)' 'flex-fuel_(unleaded/e85)' 'diesel']\n", "10\n", "\n", "engine_hp\n", "[335. 300. 230. 320. 172.]\n", "356\n", "\n", "engine_cylinders\n", "[ 6. 4. 5. 8. 12.]\n", "9\n", "\n", "transmission_type\n", "['manual' 'automatic' 'automated_manual' 'direct_drive' 'unknown']\n", "5\n", "\n", "driven_wheels\n", "['rear_wheel_drive' 'front_wheel_drive' 'all_wheel_drive'\n", " 'four_wheel_drive']\n", "4\n", "\n", "number_of_doors\n", "[ 2. 4. 3. nan]\n", "3\n", "\n", "market_category\n", "['factory_tuner,luxury,high-performance' 'luxury,performance'\n", " 'luxury,high-performance' 'luxury' 'performance']\n", "71\n", "\n", "vehicle_size\n", "['compact' 'midsize' 'large']\n", "3\n", "\n", "vehicle_style\n", "['coupe' 'convertible' 'sedan' 'wagon' '4dr_hatchback']\n", "16\n", "\n", "highway_mpg\n", "[26 28 27 25 24]\n", "59\n", "\n", "city_mpg\n", "[19 20 18 17 16]\n", "69\n", "\n", "popularity\n", "[3916 3105 819 617 1013]\n", "48\n", "\n", "msrp\n", "[46135 40650 36350 29450 34500]\n", "6049\n", "\n" ] } ], "source": [ "for col in df.columns:\n", " print(col)\n", " print(df[col].unique()[:5])\n", " print(df[col].nunique())\n", " print()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
makemodelyearengine_fuel_typeengine_hpengine_cylinderstransmission_typedriven_wheelsnumber_of_doorsmarket_categoryvehicle_sizevehicle_stylehighway_mpgcity_mpgpopularitymsrp
0bmw1_series_m2011premium_unleaded_(required)335.06.0manualrear_wheel_drive2.0factory_tuner,luxury,high-performancecompactcoupe2619391646135
1bmw1_series2011premium_unleaded_(required)300.06.0manualrear_wheel_drive2.0luxury,performancecompactconvertible2819391640650
2bmw1_series2011premium_unleaded_(required)300.06.0manualrear_wheel_drive2.0luxury,high-performancecompactcoupe2820391636350
3bmw1_series2011premium_unleaded_(required)230.06.0manualrear_wheel_drive2.0luxury,performancecompactcoupe2818391629450
4bmw1_series2011premium_unleaded_(required)230.06.0manualrear_wheel_drive2.0luxurycompactconvertible2818391634500
...................................................
11909acurazdx2012premium_unleaded_(required)300.06.0automaticall_wheel_drive4.0crossover,hatchback,luxurymidsize4dr_hatchback231620446120
11910acurazdx2012premium_unleaded_(required)300.06.0automaticall_wheel_drive4.0crossover,hatchback,luxurymidsize4dr_hatchback231620456670
11911acurazdx2012premium_unleaded_(required)300.06.0automaticall_wheel_drive4.0crossover,hatchback,luxurymidsize4dr_hatchback231620450620
11912acurazdx2013premium_unleaded_(recommended)300.06.0automaticall_wheel_drive4.0crossover,hatchback,luxurymidsize4dr_hatchback231620450920
11913lincolnzephyr2006regular_unleaded221.06.0automaticfront_wheel_drive4.0luxurymidsizesedan26176128995
\n", "

11914 rows × 16 columns

\n", "
" ], "text/plain": [ " make model year engine_fuel_type engine_hp \\\n", "0 bmw 1_series_m 2011 premium_unleaded_(required) 335.0 \n", "1 bmw 1_series 2011 premium_unleaded_(required) 300.0 \n", "2 bmw 1_series 2011 premium_unleaded_(required) 300.0 \n", "3 bmw 1_series 2011 premium_unleaded_(required) 230.0 \n", "4 bmw 1_series 2011 premium_unleaded_(required) 230.0 \n", "... ... ... ... ... ... \n", "11909 acura zdx 2012 premium_unleaded_(required) 300.0 \n", "11910 acura zdx 2012 premium_unleaded_(required) 300.0 \n", "11911 acura zdx 2012 premium_unleaded_(required) 300.0 \n", "11912 acura zdx 2013 premium_unleaded_(recommended) 300.0 \n", "11913 lincoln zephyr 2006 regular_unleaded 221.0 \n", "\n", " engine_cylinders transmission_type driven_wheels number_of_doors \\\n", "0 6.0 manual rear_wheel_drive 2.0 \n", "1 6.0 manual rear_wheel_drive 2.0 \n", "2 6.0 manual rear_wheel_drive 2.0 \n", "3 6.0 manual rear_wheel_drive 2.0 \n", "4 6.0 manual rear_wheel_drive 2.0 \n", "... ... ... ... ... \n", "11909 6.0 automatic all_wheel_drive 4.0 \n", "11910 6.0 automatic all_wheel_drive 4.0 \n", "11911 6.0 automatic all_wheel_drive 4.0 \n", "11912 6.0 automatic all_wheel_drive 4.0 \n", "11913 6.0 automatic front_wheel_drive 4.0 \n", "\n", " market_category vehicle_size vehicle_style \\\n", "0 factory_tuner,luxury,high-performance compact coupe \n", "1 luxury,performance compact convertible \n", "2 luxury,high-performance compact coupe \n", "3 luxury,performance compact coupe \n", "4 luxury compact convertible \n", "... ... ... ... \n", "11909 crossover,hatchback,luxury midsize 4dr_hatchback \n", "11910 crossover,hatchback,luxury midsize 4dr_hatchback \n", "11911 crossover,hatchback,luxury midsize 4dr_hatchback \n", "11912 crossover,hatchback,luxury midsize 4dr_hatchback \n", "11913 luxury midsize sedan \n", "\n", " highway_mpg city_mpg popularity msrp \n", "0 26 19 3916 46135 \n", "1 28 19 3916 40650 \n", "2 28 20 3916 36350 \n", "3 28 18 3916 29450 \n", "4 28 18 3916 34500 \n", "... ... ... ... ... \n", "11909 23 16 204 46120 \n", "11910 23 16 204 56670 \n", "11911 23 16 204 50620 \n", "11912 23 16 204 50920 \n", "11913 26 17 61 28995 \n", "\n", "[11914 rows x 16 columns]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Distribution of price" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.histplot(df.msrp, bins=50)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY8AAAEGCAYAAACdJRn3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAY+UlEQVR4nO3de7RedX3n8fenpOC1BOSUSQlMoqId61xkImJtOyoWkXGMM4syUK1RsRkVtdYuLdS1hk5b18LWVQvVQTOQCsqAlNqaKi2laHXqqkjwwv1yBJVkBRME4ywdL9Tv/LF/kceTnOTs5DyXc877tdazzt7f/Xv2/u3sk3zzu+y9U1VIktTHT4y7ApKkhcfkIUnqzeQhSerN5CFJ6s3kIUnqbdm4KzAMRxxxRK1atWrc1ZCkBeXGG298oKqm5lJ2USaPVatWsXnz5nFXQ5IWlCRfnWtZu60kSb2ZPCRJvQ0teSTZmGR7kltmxN+Y5I4ktyb5w4H4OUmmk9yZ5IUD8ZNbbDrJ2cOqryRp7oY55vEB4D3ApbsCSZ4HrAX+bVV9L8lPt/jTgNOBnwN+Bvj7JE9pX3sv8MvAFuCGJJuq6rYh1luStA9DSx5V9ekkq2aEXwecV1Xfa2W2t/ha4IoWvzfJNHB82zZdVfcAJLmilTV5SNIYjXrM4ynALya5PsmnkjyzxY8C7hsot6XFZovvJsn6JJuTbN6xY8cQqi5J2mXUyWMZcDhwAvBW4MokmY8dV9WGqlpTVWumpuY0TVmStJ9GfZ/HFuAj1T0H/nNJfggcAWwFjh4ot7LF2EtckjQmo255/BXwPIA2IH4w8ACwCTg9ySFJVgPHAp8DbgCOTbI6ycF0g+qbRlxnSdIMQ2t5JLkceC5wRJItwLnARmBjm777fWBda4XcmuRKuoHwh4Gzquqf237eAFwDHARsrKpbh1XnXV7+mtey7YGdu8VXHHEoH7rofcM+vCRNvGHOtjpjlk0vn6X8O4B37CF+NXD1PFZtn7Y9sJOpU960e/zqC0ZZDUmaWN5hLknqzeQhSerN5CFJ6s3kIUnqzeQhSerN5CFJ6s3kIUnqzeQhSerN5CFJ6s3kIUnqzeQhSerN5CFJ6s3kIUnqzeQhSerN5CFJ6s3kIUnqzeQhSeptaMkjycYk29srZ2du+60kleSItp4kFySZTnJTkuMGyq5Lcnf7rBtWfSVJczfMlscHgJNnBpMcDZwEfG0g/CLg2PZZD1zYyh5O9+7zZwHHA+cmOWyIdZYkzcHQkkdVfRp4cA+b3g28DaiB2Frg0up8FlieZAXwQuDaqnqwqh4CrmUPCUmSNFojHfNIshbYWlVfmrHpKOC+gfUtLTZbfE/7Xp9kc5LNO3bsmMdaS5JmGlnySPIY4HeA/z6M/VfVhqpaU1VrpqamhnEISVIzypbHk4DVwJeSfAVYCXw+yb8AtgJHD5Rd2WKzxSVJYzSy5FFVN1fVT1fVqqpaRdcFdVxV3Q9sAl7RZl2dAOysqm3ANcBJSQ5rA+UntZgkaYyGOVX3cuCfgKcm2ZLkzL0Uvxq4B5gG/hfweoCqehD4feCG9vm9FpMkjdGyYe24qs7Yx/ZVA8sFnDVLuY3AxnmtnCTpgHiHuSSpN5OHJKk3k4ckqTeThySpN5OHJKk3k4ckqTeThySpN5OHJKk3k4ckqTeThySpN5OHJKk3k4ckqTeThySpN5OHJKk3k4ckqTeThySpN5OHJKm3Yb6GdmOS7UluGYj9UZI7ktyU5C+TLB/Ydk6S6SR3JnnhQPzkFptOcvaw6itJmrthtjw+AJw8I3Yt8PSq+jfAXcA5AEmeBpwO/Fz7zv9MclCSg4D3Ai8Cngac0cpKksZoaMmjqj4NPDgj9ndV9XBb/Sywsi2vBa6oqu9V1b3ANHB8+0xX1T1V9X3gilZWkjRG4xzzeDXwN235KOC+gW1bWmy2uCRpjMaSPJK8HXgYuGwe97k+yeYkm3fs2DFfu5Uk7cHIk0eSVwIvBl5WVdXCW4GjB4qtbLHZ4rupqg1Vtaaq1kxNTc17vSVJjxhp8khyMvA24CVV9Z2BTZuA05MckmQ1cCzwOeAG4Ngkq5McTDeovmmUdZYk7W7ZsHac5HLgucARSbYA59LNrjoEuDYJwGer6rVVdWuSK4Hb6Lqzzqqqf277eQNwDXAQsLGqbh1WnSVJczO05FFVZ+whfPFeyr8DeMce4lcDV89j1SRJB8g7zCVJvZk8JEm9mTwkSb2ZPCRJvZk8JEm9mTwkSb2ZPCRJvZk8JEm9mTwkSb2ZPCRJvZk8JEm9mTwkSb2ZPCRJvZk8JEm9mTwkSb2ZPCRJvZk8JEm9mTwkSb0NLXkk2Zhke5JbBmKHJ7k2yd3t52EtniQXJJlOclOS4wa+s66VvzvJumHVV5I0d8NseXwAOHlG7Gzguqo6FriurQO8CDi2fdYDF0KXbIBzgWcBxwPn7ko4kqTxGVryqKpPAw/OCK8FLmnLlwAvHYhfWp3PAsuTrABeCFxbVQ9W1UPAteyekCRJIzbqMY8jq2pbW74fOLItHwXcN1BuS4vNFt9NkvVJNifZvGPHjvmttSTpx4xtwLyqCqh53N+GqlpTVWumpqbma7eSpD0YdfL4euuOov3c3uJbgaMHyq1ssdnikqQxGnXy2ATsmjG1DvjoQPwVbdbVCcDO1r11DXBSksPaQPlJLSZJGqNlw9pxksuB5wJHJNlCN2vqPODKJGcCXwVOa8WvBk4BpoHvAK8CqKoHk/w+cEMr93tVNXMQXpI0YkNLHlV1xiybTtxD2QLOmmU/G4GN81g1SdIB8g5zSVJvJg9JUm8mD0lSbyYPSVJvJg9JUm9zSh5JnjOXmCRpaZhry+NP5xiTJC0Be73PI8mzgZ8HppK8ZWDTTwEHDbNikqTJta+bBA8GHtfKPX4g/i3g1GFVSpI02faaPKrqU8Cnknygqr46ojpJkibcXB9PckiSDcCqwe9U1fOHUSlJ0mSba/L4c+B9wEXAPw+vOpKkhWCuyePhqrpwqDWRJC0Yc52q+9dJXp9kRZLDd32GWjNJ0sSaa8tj1wuc3joQK+CJ81sdSdJCMKfkUVWrh10RSdLCMafkkeQVe4pX1aXzWx1J0kIw1zGPZw58fhH4XeAl+3vQJL+Z5NYktyS5PMmjkqxOcn2S6SQfTnJwK3tIW59u21ft73ElSfNjTsmjqt448Pl14Di6O897S3IU8CZgTVU9ne4xJ6cD7wTeXVVPBh4CzmxfORN4qMXf3cpJksZofx/J/m3gQMZBlgGPTrIMeAywDXg+cFXbfgnw0ra8tq3Ttp+YJAdwbEnSAZrrmMdf082ugq6l8K+AK/fngFW1Ncm7gK8B/w/4O+BG4JtV9XArtgU4qi0fBdzXvvtwkp3AE4AHZtRxPbAe4JhjjtmfqkmS5miuU3XfNbD8MPDVqtqyPwdMchhda2I18E26u9dP3p99DaqqDcAGgDVr1tQ+ikuSDsBcxzw+BdxB92Tdw4DvH8AxXwDcW1U7quoHwEeA5wDLWzcWwEpga1veChwN0LYfCnzjAI4vSTpAc32T4GnA54BfAU4Drk+yv49k/xpwQpLHtLGLE4HbgE/yyGPe1wEfbcubeOQmxVOBT1SVLQtJGqO5dlu9HXhmVW0HSDIF/D2PDHDPWVVdn+Qq4PN0XWBfoOtu+jhwRZI/aLGL21cuBj6YZBp4kG5mliRpjOaaPH5iV+JovsH+z9Siqs4Fzp0Rvgc4fg9lv0vX4pEkTYi5Jo+/TXINcHlb/6/A1cOpkiRp0u3rHeZPBo6sqrcm+S/AL7RN/wRcNuzKSZIm075aHn8CnANQVR+hmxlFkn/dtv2nIdZNkjSh9jVucWRV3Twz2GKrhlIjSdLE21fyWL6XbY+ex3pIkhaQfSWPzUl+fWYwyWvoHikiSVqC9jXm8WbgL5O8jEeSxRrgYOA/D7FemnAvf81r2fbAzt3iK444lA9d9L4x1EjSKO01eVTV14GfT/I84Okt/PGq+sTQa6aJtu2BnUyd8qbd41dfMIbaSBq1ub6G9pN0jw+RJGn/7xKXJC1dc73DXEvUbGMbd9x1N1OnjKFCkiaCyUN7NdvYxk23vm4MtZE0Key2kiT1ZvKQJPVm8pAk9WbykCT15oC5RsI70qXFxeShkfCOdGlxGUvySLIcuIjukScFvBq4E/gw3aPevwKcVlUPJQlwPnAK8B3glVX1+dHXenGbr/s5br/tVk586RkHvB9Jk21cLY/zgb+tqlOTHAw8Bvgd4LqqOi/J2cDZwG8DLwKObZ9nARe2n5pH83U/xw/qJ7wvRFoCRj5gnuRQ4JeAiwGq6vtV9U1gLXBJK3YJ8NK2vBa4tDqfBZYnWTHSSkuSfsw4ZlutBnYAf5bkC0kuSvJYurcWbmtl7geObMtHAfcNfH9Li/2YJOuTbE6yeceOHUOsviRpHMljGXAccGFVPQP4Nl0X1Y9UVdGNhcxZVW2oqjVVtWZqamreKitJ2t04xjy2AFuq6vq2fhVd8vh6khVVta11S21v27cCRw98f2WLaRGYbYDdKbzSZBt58qiq+5Pcl+SpVXUncCJwW/usA85rPz/avrIJeEOSK+gGyncOdG9pgZttgN0pvNJkG9dsqzcCl7WZVvcAr6LrQrsyyZnAV4HTWtmr6abpTtNN1X3V6KsrSRo0luRRVV+kexf6TCfuoWwBZw27TpKkufPZVpKk3kwekqTeTB6SpN58MKImklN4pclm8tBEcgqvNNnstpIk9WbLYwmZ7bHr4CPTJfVj8lhCZnvsOvjIdEn92G0lSerN5CFJ6s3kIUnqzTEPLSje/yFNBpOHFhTv/5Amg91WkqTeTB6SpN5MHpKk3kwekqTexpY8khyU5AtJPtbWVye5Psl0kg+3V9SS5JC2Pt22rxpXnSVJnXG2PH4DuH1g/Z3Au6vqycBDwJktfibwUIu/u5WTJI3RWKbqJlkJ/EfgHcBbkgR4PvCrrcglwO8CFwJr2zLAVcB7kqS921wCvP9DGrVx3efxJ8DbgMe39ScA36yqh9v6FuCotnwUcB9AVT2cZGcr/8DgDpOsB9YDHHPMMcOsuyaQ939IozXybqskLwa2V9WN87nfqtpQVWuqas3U1NR87lqSNMM4Wh7PAV6S5BTgUcBPAecDy5Msa62PlcDWVn4rcDSwJcky4FDgG6OvtiRpl5G3PKrqnKpaWVWrgNOBT1TVy4BPAqe2YuuAj7blTW2dtv0TjndI0nhN0rOtfhu4IskfAF8ALm7xi4EPJpkGHqRLONqL2d4Y6NsCJc2XsSaPqvoH4B/a8j3A8Xso813gV0ZasQVutjcGLsW3BToLSxqOSWp5SPPOWVjScPh4EklSbyYPSVJvdltpSZptLAQcD5HmwuShJWm2sRBwPESaC7utJEm9mTwkSb3ZbbWAeTOgpHExeSxg3gwoaVzstpIk9WbykCT1ZreVNIPPw5L2zeQhzeDzsKR9s9tKktSbLQ9pjuzOkh5h8pDmyO4s6RF2W0mSeht5yyPJ0cClwJFAARuq6vwkhwMfBlYBXwFOq6qHkgQ4HzgF+A7wyqr6/KjrPU7eSS5p0oyj2+ph4Leq6vNJHg/cmORa4JXAdVV1XpKzgbPp3mv+IuDY9nkWcGH7uWR4J7mkSTPybquq2rar5VBV/xe4HTgKWAtc0opdAry0La8FLq3OZ4HlSVaMttaSpEFjHTBPsgp4BnA9cGRVbWub7qfr1oIusdw38LUtLbZtIEaS9cB6gGOOOWZ4lZZmcBaWlqKxJY8kjwP+AnhzVX2rG9roVFUlqT77q6oNwAaANWvW9PqudCCchaWlaCzJI8lP0iWOy6rqIy389SQrqmpb65ba3uJbgaMHvr6yxaSJZotEi9k4ZlsFuBi4var+eGDTJmAdcF77+dGB+BuSXEE3UL5zoHtLmli2SLSYjaPl8Rzg14Cbk3yxxX6HLmlcmeRM4KvAaW3b1XTTdKfppuq+aqS1lSTtZuTJo6r+Ecgsm0/cQ/kCzhpqpSRJvXiHuSSpN59tJY2YA+laDEwe0og5kK7FwG4rSVJvJg9JUm92W0kTwrEQLSQmD2lCOBaihcTkIU04WySaRCYPacLZItEkMnlIS9xsb6q0ZaO9MXlIi8xsyeArX76LVU96ym7xO+66m19885/uFrdlo70xeUgL1GxjIbMlg5v+6HW+zljzxuQhLVCzjYXMVzKYLTmBXVoyeUiaxWzJCezSksmjl2FPmZytr/qOu+5m6pQD3r00b5w+LJNHD8OeMrntgZ32SWtBmO3vwife9d9MKkuEyUPSvJmvpNJ3+vCwy2t3Jg9JQ9c3qfSdPjxbq71v+f1pOS3VRLRgkkeSk4HzgYOAi6rqvDFXab85tiF1+s4Y29v05D393elbvm+S27WvPSW62b4z2/028xUfVdJaEMkjyUHAe4FfBrYANyTZVFW3jbdmnb6Dh45tSPunb7KZr+nMe5t51vvYs91vM0/xUc2EWxDJAzgemK6qewCSXAGsBSYieexPk9wWhqSFLFU17jrsU5JTgZOr6jVt/deAZ1XVGwbKrAfWt9WnAnfuY7dHAA8MoboLwVI9d897afG8+/uXVTU1l4ILpeWxT1W1Adgw1/JJNlfVmiFWaWIt1XP3vJcWz3u4FspraLcCRw+sr2wxSdIYLJTkcQNwbJLVSQ4GTgc2jblOkrRkLYhuq6p6OMkbgGvopupurKpbD3C3c+7iWoSW6rl73kuL5z1EC2LAXJI0WRZKt5UkaYKYPCRJvS3J5JHk5CR3JplOcva467M/khyd5JNJbktya5LfaPHDk1yb5O7287AWT5IL2jnflOS4gX2ta+XvTrJuIP7vk9zcvnNBkoz+TPcsyUFJvpDkY219dZLrW10/3CZWkOSQtj7dtq8a2Mc5LX5nkhcOxCfy9yPJ8iRXJbkjye1Jnr0UrneS32y/47ckuTzJoxbj9U6yMcn2JLcMxIZ+fWc7xj5V1ZL60A24fxl4InAw8CXgaeOu136cxwrguLb8eOAu4GnAHwJnt/jZwDvb8inA3wABTgCub/HDgXvaz8Pa8mFt2+da2bTvvmjc5z1w/m8B/jfwsbZ+JXB6W34f8Lq2/HrgfW35dODDbflp7dofAqxuvxMHTfLvB3AJ8Jq2fDCwfLFfb+Ao4F7g0QPX+ZWL8XoDvwQcB9wyEBv69Z3tGPus77h/OcZwgZ4NXDOwfg5wzrjrNQ/n9VG6Z3/dCaxosRXAnW35/cAZA+XvbNvPAN4/EH9/i60A7hiI/1i5MZ/rSuA64PnAx9pfhgeAZTOvMd0MvWe35WWtXGZe913lJvX3Azi0/SOaGfFFfb3pksd97R/DZe16v3CxXm9gFT+ePIZ+fWc7xr4+S7Hbatcv4y5bWmzBak3zZwDXA0dW1ba26X7gyLY823nvLb5lD/FJ8CfA24AftvUnAN+sqofb+mBdf3R+bfvOVr7vn8e4rQZ2AH/WuusuSvJYFvn1rqqtwLuArwHb6K7fjSz+673LKK7vbMfYq6WYPBaVJI8D/gJ4c1V9a3Bbdf+VWFRzsZO8GNheVTeOuy4jtoyuS+PCqnoG8G26LoYfWaTX+zC6h6CuBn4GeCxw8lgrNSajuL59jrEUk8eiedRJkp+kSxyXVdVHWvjrSVa07SuA7S0+23nvLb5yD/Fxew7wkiRfAa6g67o6H1ieZNdNr4N1/dH5te2HAt+g/5/HuG0BtlTV9W39Krpkstiv9wuAe6tqR1X9APgI3e/AYr/eu4zi+s52jL1aisljUTzqpM2UuBi4var+eGDTJmDXDIt1dGMhu+KvaLM0TgB2tqbqNcBJSQ5r/8s7ia4PeBvwrSQntGO9YmBfY1NV51TVyqpaRXftPlFVLwM+CZzais08711/Hqe28tXip7fZOauBY+kGFCfy96Oq7gfuS/LUFjqR7pUEi/p603VXnZDkMa1eu857UV/vAaO4vrMdY+/GNTA0zg/dTIW76GZZvH3c9dnPc/gFuublTcAX2+cUuv7d64C7gb8HDm/lQ/dCrS8DNwNrBvb1amC6fV41EF8D3NK+8x5mDNaO+wM8l0dmWz2R7h+DaeDPgUNa/FFtfbptf+LA99/ezu1OBmYWTervB/DvgM3tmv8V3WyaRX+9gf8B3NHq9kG6GVOL7noDl9ON6/yArqV55iiu72zH2NfHx5NIknpbit1WkqQDZPKQJPVm8pAk9WbykCT1ZvKQJPVm8pAk9WbykCbAwN3S0oJg8pAOUJJV6d6x8YEkdyW5LMkLknymvSPh+CT/IckX2+cLSR6f5LlJ/k+STcBtA/u5LN37Oq5K8phxn5+0J94kKB2g9lTjabonG99K98iLL9HdIfwS4FV07404r6o+0x5m+V26pwR8HHh6Vd3b9nMv8Aut3Ebgtqp614hPSdonWx7S/Li3qm6uqh/SJZDrqvuf2c1072j4DPDHSd4ELK9HHif+uaq6d2A/91XVZ9ryh+gSjDRxTB7S/PjewPIPB9Z/SPfSovOA1wCPBj6T5Gfb9m/P2M/MrgC7BjSRTB7SCCR5UmuZvJOuW+tnZyl6TJJnt+VfBf5xJBWUejJ5SKPx5iS3JLmJ7qmpfzNLuTuBs5LcTvfU3AtHVUGpDwfMpQnRBsw/VlVPH3ddpH2x5SFJ6s2WhySpN1sekqTeTB6SpN5MHpKk3kwekqTeTB6SpN7+P0fq7giiP7SsAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.histplot(df.msrp[df.msrp < 100000], bins=50)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0. , 0.69314718, 2.39789527, 6.90875478, 11.51293546])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.log1p([0, 1, 10, 1000, 100000])" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0. , 0.69314718, 2.39789527, 6.90875478, 11.51292546])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.log([0 + 1, 1+ 1, 10 + 1, 1000 + 1, 100000])" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "price_logs = np.log1p(df.msrp)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "\n", "sns.histplot(price_logs, bins=50)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Missing values" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "make 0\n", "model 0\n", "year 0\n", "engine_fuel_type 3\n", "engine_hp 69\n", "engine_cylinders 30\n", "transmission_type 0\n", "driven_wheels 0\n", "number_of_doors 6\n", "market_category 3742\n", "vehicle_size 0\n", "vehicle_style 0\n", "highway_mpg 0\n", "city_mpg 0\n", "popularity 0\n", "msrp 0\n", "dtype: int64" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isnull().sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.4 Setting up the validation framework" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's draw it" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "n = len(df)\n", "\n", "n_val = int(n * 0.2)\n", "n_test = int(n * 0.2)\n", "n_train = n - n_val - n_test" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "11914" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2382, 2382, 7150)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n_val, n_test, n_train" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
makemodelyearengine_fuel_typeengine_hpengine_cylinderstransmission_typedriven_wheelsnumber_of_doorsmarket_categoryvehicle_sizevehicle_stylehighway_mpgcity_mpgpopularitymsrp
10bmw1_series2013premium_unleaded_(required)300.06.0manualrear_wheel_drive2.0luxury,high-performancecompactcoupe2820391639600
0bmw1_series_m2011premium_unleaded_(required)335.06.0manualrear_wheel_drive2.0factory_tuner,luxury,high-performancecompactcoupe2619391646135
3bmw1_series2011premium_unleaded_(required)230.06.0manualrear_wheel_drive2.0luxury,performancecompactcoupe2818391629450
5bmw1_series2012premium_unleaded_(required)230.06.0manualrear_wheel_drive2.0luxury,performancecompactcoupe2818391631200
\n", "
" ], "text/plain": [ " make model year engine_fuel_type engine_hp \\\n", "10 bmw 1_series 2013 premium_unleaded_(required) 300.0 \n", "0 bmw 1_series_m 2011 premium_unleaded_(required) 335.0 \n", "3 bmw 1_series 2011 premium_unleaded_(required) 230.0 \n", "5 bmw 1_series 2012 premium_unleaded_(required) 230.0 \n", "\n", " engine_cylinders transmission_type driven_wheels number_of_doors \\\n", "10 6.0 manual rear_wheel_drive 2.0 \n", "0 6.0 manual rear_wheel_drive 2.0 \n", "3 6.0 manual rear_wheel_drive 2.0 \n", "5 6.0 manual rear_wheel_drive 2.0 \n", "\n", " market_category vehicle_size vehicle_style \\\n", "10 luxury,high-performance compact coupe \n", "0 factory_tuner,luxury,high-performance compact coupe \n", "3 luxury,performance compact coupe \n", "5 luxury,performance compact coupe \n", "\n", " highway_mpg city_mpg popularity msrp \n", "10 28 20 3916 39600 \n", "0 26 19 3916 46135 \n", "3 28 18 3916 29450 \n", "5 28 18 3916 31200 " ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[[10, 0, 3, 5]]" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "df_train = df.iloc[:n_train]\n", "df_val = df.iloc[n_train:n_train+n_val]\n", "df_test = df.iloc[n_train+n_val:]" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "idx = np.arange(n)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "np.random.seed(2)\n", "np.random.shuffle(idx)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "df_train = df.iloc[idx[:n_train]]\n", "df_val = df.iloc[idx[n_train:n_train+n_val]]\n", "df_test = df.iloc[idx[n_train+n_val:]]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
makemodelyearengine_fuel_typeengine_hpengine_cylinderstransmission_typedriven_wheelsnumber_of_doorsmarket_categoryvehicle_sizevehicle_stylehighway_mpgcity_mpgpopularitymsrp
2735chevroletcobalt2008regular_unleaded148.04.0manualfront_wheel_drive2.0NaNcompactcoupe3324138514410
6720toyotamatrix2012regular_unleaded132.04.0automaticfront_wheel_drive4.0hatchbackcompact4dr_hatchback3225203119685
5878subaruimpreza2016regular_unleaded148.04.0automaticall_wheel_drive4.0hatchbackcompact4dr_hatchback372864019795
11190volkswagenvanagon1991regular_unleaded90.04.0manualrear_wheel_drive3.0NaNlargepassenger_minivan18168732000
4554fordf-1502017flex-fuel_(unleaded/e85)385.08.0automaticfour_wheel_drive4.0flex_fuellargecrew_cab_pickup2115565756260
\n", "
" ], "text/plain": [ " make model year engine_fuel_type engine_hp \\\n", "2735 chevrolet cobalt 2008 regular_unleaded 148.0 \n", "6720 toyota matrix 2012 regular_unleaded 132.0 \n", "5878 subaru impreza 2016 regular_unleaded 148.0 \n", "11190 volkswagen vanagon 1991 regular_unleaded 90.0 \n", "4554 ford f-150 2017 flex-fuel_(unleaded/e85) 385.0 \n", "\n", " engine_cylinders transmission_type driven_wheels number_of_doors \\\n", "2735 4.0 manual front_wheel_drive 2.0 \n", "6720 4.0 automatic front_wheel_drive 4.0 \n", "5878 4.0 automatic all_wheel_drive 4.0 \n", "11190 4.0 manual rear_wheel_drive 3.0 \n", "4554 8.0 automatic four_wheel_drive 4.0 \n", "\n", " market_category vehicle_size vehicle_style highway_mpg city_mpg \\\n", "2735 NaN compact coupe 33 24 \n", "6720 hatchback compact 4dr_hatchback 32 25 \n", "5878 hatchback compact 4dr_hatchback 37 28 \n", "11190 NaN large passenger_minivan 18 16 \n", "4554 flex_fuel large crew_cab_pickup 21 15 \n", "\n", " popularity msrp \n", "2735 1385 14410 \n", "6720 2031 19685 \n", "5878 640 19795 \n", "11190 873 2000 \n", "4554 5657 56260 " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train.head()" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(7150, 2382, 2382)" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(df_train), len(df_val), len(df_test)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "y_train = np.log1p(df_train.msrp.values)\n", "y_val = np.log1p(df_val.msrp.values)\n", "y_test = np.log1p(df_test.msrp.values)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "del df_train['msrp']\n", "del df_val['msrp']\n", "del df_test['msrp']" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7150" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(y_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.5 Linear regression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "draw" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "make rolls-royce\n", "model phantom_drophead_coupe\n", "year 2015\n", "engine_fuel_type premium_unleaded_(required)\n", "engine_hp 453.0\n", "engine_cylinders 12.0\n", "transmission_type automatic\n", "driven_wheels rear_wheel_drive\n", "number_of_doors 2.0\n", "market_category exotic,luxury,performance\n", "vehicle_size large\n", "vehicle_style convertible\n", "highway_mpg 19\n", "city_mpg 11\n", "popularity 86\n", "Name: 10, dtype: object" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train.iloc[10]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "xi = [453, 11, 86]\n", "w0 = 7.17\n", "w = [0.01, 0.04, 0.002]" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "def linear_regression(xi):\n", " n = len(xi)\n", "\n", " pred = w0\n", "\n", " for j in range(n):\n", " pred = pred + w[j] * xi[j]\n", "\n", " return pred" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "xi = [453, 11, 86]\n", "w0 = 7.17\n", "w = [0.01, 0.04, 0.002]" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "12.312" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linear_regression(xi)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "222347.2221101062" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.expm1(12.312)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "12.312" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.log1p(222347.2221101062)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.6 Linear regression vector form" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "def dot(xi, w):\n", " n = len(xi)\n", " \n", " res = 0.0\n", " \n", " for j in range(n):\n", " res = res + xi[j] * w[j]\n", " \n", " return res" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "def linear_regression(xi):\n", " return w0 + dot(xi, w)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "w_new = [w0] + w" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[7.17, 0.01, 0.04, 0.002]" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w_new" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "def linear_regression(xi):\n", " xi = [1] + xi\n", " return dot(xi, w_new)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "12.312" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linear_regression(xi)" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "w0 = 7.17\n", "w = [0.01, 0.04, 0.002]\n", "w_new = [w0] + w" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1, 148, 24, 1385],\n", " [ 1, 132, 25, 2031],\n", " [ 1, 453, 11, 86]])" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x1 = [1, 148, 24, 1385]\n", "x2 = [1, 132, 25, 2031]\n", "x10 = [1, 453, 11, 86]\n", "\n", "X = [x1, x2, x10]\n", "X = np.array(X)\n", "X" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "def linear_regression(X):\n", " return X.dot(w_new)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([12.38 , 13.552, 12.312])" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linear_regression(X)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.7 Training a linear regression model" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "def train_linear_regression(X, y):\n", " pass" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 148, 24, 1385],\n", " [ 132, 25, 2031],\n", " [ 453, 11, 86],\n", " [ 158, 24, 185],\n", " [ 172, 25, 201],\n", " [ 413, 11, 86],\n", " [ 38, 54, 185],\n", " [ 142, 25, 431],\n", " [ 453, 31, 86]])" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X = [\n", " [148, 24, 1385],\n", " [132, 25, 2031],\n", " [453, 11, 86],\n", " [158, 24, 185],\n", " [172, 25, 201],\n", " [413, 11, 86],\n", " [38, 54, 185],\n", " [142, 25, 431],\n", " [453, 31, 86],\n", "]\n", "\n", "X = np.array(X)\n", "X" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1., 1., 1., 1., 1., 1., 1., 1., 1.])" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ones = np.ones(X.shape[0])\n", "ones" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "X = np.column_stack([ones, X])" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [], "source": [ "y = [10000, 20000, 15000, 20050, 10000, 20000, 15000, 25000, 12000]" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [], "source": [ "XTX = X.T.dot(X)\n", "XTX_inv = np.linalg.inv(XTX)\n", "w_full = XTX_inv.dot(X.T).dot(y)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "w0 = w_full[0]\n", "w = w_full[1:]" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(25844.75405576683, array([ -16.08906468, -199.47254894, -1.22802883]))" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w0, w" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [], "source": [ "def train_linear_regression(X, y):\n", " ones = np.ones(X.shape[0])\n", " X = np.column_stack([ones, X])\n", "\n", " XTX = X.T.dot(X)\n", " XTX_inv = np.linalg.inv(XTX)\n", " w_full = XTX_inv.dot(X.T).dot(y)\n", " \n", " return w_full[0], w_full[1:]" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.0460143454602068e+20,\n", " array([1.26525728e+20, 8.71025484e+01, 2.59709297e+02, 0.00000000e+00]))" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_linear_regression(X, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.8 Car price baseline model" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['make', 'model', 'year', 'engine_fuel_type', 'engine_hp',\n", " 'engine_cylinders', 'transmission_type', 'driven_wheels',\n", " 'number_of_doors', 'market_category', 'vehicle_size', 'vehicle_style',\n", " 'highway_mpg', 'city_mpg', 'popularity'],\n", " dtype='object')" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train.columns" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "scrolled": true }, "outputs": [], "source": [ "base = ['engine_hp', 'engine_cylinders', 'highway_mpg',\n", " 'city_mpg', 'popularity']\n", "\n", "X_train = df_train[base].fillna(0).values\n", "\n", "w0, w = train_linear_regression(X_train, y_train)\n", "\n", "y_pred = w0 + X_train.dot(w)" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7.9272573880700605" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w0" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 9.70589522e-03, -1.59103494e-01, 1.43792133e-02, 1.49441072e-02,\n", " -9.06908672e-06])" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAD4CAYAAAAD6PrjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAa9klEQVR4nO3df5BV5Z3n8ffHVgwyM6It9mIDizPSGVPu6JrGIcnsVCKTKTWukFljHNxIWAxbtSZjyKwJmVStm9rZKlPJLGO2tpwiGkWLwTH+CJ0ZY+IQNbvWwEAr+AuCQBRo4DZ0CE5aCT/87h/36cPt7tt0Q3Puud39eVXd6nO+55zbXwHv957nec7zKCIwMzMDOKPoBMzMrH64KJiZWcZFwczMMi4KZmaWcVEwM7PMmUUnMBwXXHBBTJ8+veg0zMxGlPb29v0RManasRFdFKZPn8769euLTsPMbESR9NZAx9x8ZGZmGRcFMzPLuCiYmVnGRcHMzDIuCmZmlnFRMDOzjIuCmZllXBTMzCzjomBmZpkR/USzjX6LF3+dUundfvGmpvEsXXpXARmZjW65FgVJi4HbgABeARYAk4FHgEagHfhMRByWdDbwEPBBoAv4dES8mWd+Vv9KpXdpabm7X3zLliUFZGM2+uXWfCSpGfgzoDUiLgMagJuBbwBLI+IS4ACwMF2yEDiQ4kvTeWZmVkN59ymcCYyXdCZwDrAHuBp4LB1fDsxN23PSPun4bEnKOT8zM6uQW1GIiA7gW8AOysXgIOXmol9GxNF02i6gOW03AzvTtUfT+Y1931fSIknrJa3ft29fXumbmY1JeTYfnUf52//FwEXABOCa4b5vRCyLiNaIaJ00qep04GZmdorybD76I+DnEbEvIo4ATwAfASam5iSAKUBH2u4ApgKk4+dS7nA2M7MaybMo7ABmSTon9Q3MBl4HngVuTOfMB1al7ba0Tzr+k4iIHPMzM7M+8uxTWEu5w/hFysNRzwCWAV8BviRpK+U+g/vTJfcDjSn+JcBjDs3MaizX5xQi4i6g7xNG24Grqpx7CPhUnvmYmdmJeZoLMzPLuCiYmVnGRcHMzDIuCmZmlvEsqVY3qs2I2t7+Ci0tBSVkNga5KFjdqDYj6gsvDPsheDM7CS4KFap9U/W8/WY2lrgoVKj2TdXz9pvZWOKOZjMzy/hOwUak9vZ25s3rfRfnpj6z4XNRsBHp0KEGN/WZ5cDNR2ZmlnFRMDOzjIuCmZllXBTMzCzjomBmZpncioKk90vaUPF6W9IXJZ0v6RlJb6Sf56XzJenbkrZKelnSlXnlZmZm1eW5HOfPIuKKiLgC+CDwDvAk5WU2V0fEDGA1x5fdvBaYkV6LgHvzys3MzKqrVfPRbGBbRLwFzAGWp/hyYG7angM8FGVrgImSJtcoPzMzo3ZF4WZgZdpuiog9aXsv0JS2m4GdFdfsSrFeJC2StF7S+n379uWVr5nZmJR7UZA0DrgB+F7fYxERQJzM+0XEsohojYjWSZMmnaYszcwManOncC3wYkSU0n6pp1ko/exM8Q5gasV1U1LMzMxqpBZF4U853nQE0AbMT9vzgVUV8VvTKKRZwMGKZiYzM6uBXCfEkzQB+DjwnyvCdwOPSloIvAXclOJPAdcBWymPVFqQZ25mZtZfrkUhIrqBxj6xLsqjkfqeG8DteeZjZmYn5ieazcws46JgZmYZFwUzM8u4KJiZWcbLcdqo4XWbzYbPRcFGDa/bbDZ8bj4yM7OMi4KZmWVcFMzMLOM+BauJOxYsoLuzs198woUXcs8DDxSQkZlV46JgNdHd2cl9M2f2i9+2bl0B2ZjZQNx8ZGZmGRcFMzPLuCiYmVnGRcHMzDIuCmZmlsm1KEiaKOkxSZslbZL0IUnnS3pG0hvp53npXEn6tqStkl6WdGWeuZmZWX953yncAzwdEb8LXA5sApYAqyNiBrA67QNcC8xIr0XAvTnnZmZmfeT2nIKkc4E/BD4LEBGHgcOS5gAfTactB54DvgLMAR5Ky3KuSXcZkyNiT1452on5gTOzsSfPh9cuBvYBD0i6HGgH7gCaKj7o9wJNabsZ2Flx/a4Uc1EoiB84Mxt78iwKZwJXAl+IiLWS7uF4UxEAERGS4mTeVNIiys1LTJs27XTlaqfJQHcXr23cCFUKjJnVlzyLwi5gV0SsTfuPUS4KpZ5mIUmTgZ5PkA5gasX1U1Ksl4hYBiwDaG1tPamCYvkb6O7iKt9dmI0IuXU0R8ReYKek96fQbOB1oA2Yn2LzgVVpuw24NY1CmgUcdH+CmVlt5T0h3heAFZLGAduBBZQL0aOSFgJvATelc58CrgO2Au+kc83MrIZyLQoRsQForXJodpVzA7g9z3zMzOzEPHW2FWLx02sodTewtquLefPK4w/a21+hpaXgxMzGOBcFK0Spu4GWxjvZfKiDlpZbAHjhhWsKzsrMPPeRmZllfKdgdemH3/8+R7q76erspG3Fiix+1oQJXDt3bnGJmY1yLgpWl450d3NDczMPdI7jhubmLN7W0e/RFTM7jdx8ZGZmGRcFMzPLuCiYmVnGfQpWqL2lUtaRXNmp3FkqQUVfgpnVhouCFUrHjmUdyZWdyt/ZvbvItMzGLDcfmZlZxkXBzMwybj6yk7Zh40Zu+8Qnqh7zYjpmI5uLgp20Mw4frrqQDngxHbORzs1HZmaW8Z2CeV1lM8u4KJjXVTazTK7NR5LelPSKpA2S1qfY+ZKekfRG+nleikvStyVtlfSypCvzzM3MzPqrRZ/CxyLiiojoWZZzCbA6ImYAq9M+wLXAjPRaBNxbg9zMzKxCER3Nc4DlaXs5MLci/lCUrQEmSppcQH5mZmNW3kUhgB9Lape0KMWaImJP2t4LNKXtZmBnxbW7UqwXSYskrZe0ft++fXnlbWY2JuXd0fwHEdEh6ULgGUmbKw9GREiKk3nDiFgGLANobW09qWtt7Glvb2fevCX94k1N41m69K4CMjKrb7kWhYjoSD87JT0JXAWUJE2OiD2peahnLGQHMLXi8ikpZnbKDh1qoKXl7n7xLVv6Fwozy7H5SNIESb/Zsw38MfAq0AbMT6fNB1al7Tbg1jQKaRZwsKKZyczMaiDPO4Um4ElJPb/nbyPiaUnrgEclLQTeAm5K5z8FXAdsBd4BFuSYm5mZVZFbUYiI7cDlVeJdwOwq8QBuzysfMzMb3JCKgqSPRMQLg8XM8tazUlvlKm0AZ02YUGBWZqPHUPsU/vcQY2a56lmprXFceZW2nteR7u6iUzMbFU54pyDpQ8CHgUmSvlRx6LeAhjwTMzOz2hus+Wgc8BvpvN+siL8N3JhXUmZmVowTFoWIeB54XtKDEfFWjXIyM7OCDHX00dmSlgHTK6+JiKvzSMrMzIox1KLwPeBvgPuAY/mlY2ZmRRpqUTgaEZ7K2sxslBvqkNQfSPovkianRXLOl3R+rpmZmVnNDfVOoWeuojsrYgH89ulNx+zU7C2VePtI7wfaAA507S8oI7ORaUhFISIuzjsRs+HQsWPZA22VvrXrvYIyMhuZhjrNxa3V4hHx0OlNx8zMijTU5qOZFdvvozyh3YuAi4KZ2Sgy1OajL1TuS5oIPJJHQmZmVpxTXWSnG3A/g5nZKDPUPoUfUB5tBOWJ8C4FHs0rKTMzK8ZQ+xS+VbF9FHgrInYN5UJJDcB6oCMirpd0MeWmp0agHfhMRByWdDblPooPAl3ApyPizSHmZ2Zmp8GQmo/SxHibKc+Ueh5w+CR+xx3Apor9bwBLI+IS4ACwMMUXAgdSfGk6z8zMamhIRUHSTcA/A5+ivKbyWkmDTp0taQrwCcpzJqHygs1XA4+lU5YDc9P2nLRPOj47nW9mZjUy1OajrwEzI6ITQNIk4B85/uE+kL8GvszxtRgagV9GxNG0vwvoedqoGdgJEBFHJR1M5/d6JFXSImARwLRp04aYvpmZDcVQi8IZPQUh6WKQuwxJ1wOdEdEu6aOnll5/EbEMWAbQ2toag5xuFe5YsIDuzs5+8dc2boSZM6tcYWZjzVCLwtOSfgSsTPufBp4a5JqPADdIuo7yA2+/BdwDTJR0ZrpbmAJ0pPM7gKnALklnAudSLj52mnR3dnJflQ//q9atKyAbM6tHg63RfAnQFBF3SvoT4A/SoX8CVgx8JUTEV4Gvpvf5KPBfI+IWSd+jvJTnI5Qn2luVLmlL+/+Ujv8kInwnYMNy+PDhfpPkAXQfW1NANmb1b7A7hb8mfbBHxBPAEwCS/k069u9P4Xd+BXhE0l8CLwH3p/j9wMOStgK/AG4+hfc260VEv0nyAB7ecqiAbMzq32BFoSkiXukbjIhXJE0f6i+JiOeA59L2duCqKuccojy6yczMCjJYUZh4gmPjT2MeNkotfnoNpe4Gtr19LvMeP9530b5nPy2NBSZmZlUNVhTWS/pcRHynMijpNspPI5udUKm7gZbGO3l++zpaGo93cr+wY0mBWZnZQAYrCl8EnpR0C8eLQCswDvhkjnmZmVkBTlgUIqIEfFjSx4DLUvgfIuInuWdmZmY1N9T1FJ4Fns05FzMzK9iprqdgZmajkIuCmZllXBTMzCzjomBmZhkXBTMzy7gomJlZxkXBzMwyLgpmZpYZ6iI7ZqPK/oMHmTev9/xLTU3jWbr0roIyMqsPLgo2Jh17bzwtLXf3im3Z4kn6zNx8ZGZmGRcFMzPL5FYUJL1P0j9L2ijpNUlfT/GLJa2VtFXS30kal+Jnp/2t6fj0vHIzM7Pq8rxT+DVwdURcDlwBXCNpFvANYGlEXAIcABam8xcCB1J8aTrPzMxqKLeiEGW/SrtnpVcAVwOPpfhyYG7anpP2ScdnS1Je+ZmZWX+59ilIapC0AegEngG2Ab+MiKPplF1Ac9puBnYCpOMHgX6r+EpaJGm9pPX79u3LM30zszEn16IQEcci4gpgCnAV8Lun4T2XRURrRLROmjRpuG9nZmYVajL6KCJ+SXnltg8BEyX1PB8xBehI2x3AVIB0/Fygqxb5mZlZWZ6jjyZJmpi2xwMfBzZRLg43ptPmA6vSdlvaJx3/SUREXvmZmVl/eT7RPBlYLqmBcvF5NCL+XtLrwCOS/hJ4Cbg/nX8/8LCkrcAvgJtzzM3MzKrIrShExMvAv60S3065f6Fv/BDwqbzyMTOzwXnuIxuTDh8+TNuKFb1iB7uf444FC7jngQcKysqseC4KNiaJ4Ibm5l6xLV2NdHd2FpSRWX3w3EdmZpZxUTAzs4yLgpmZZVwUzMws46JgZmYZFwUzM8u4KJiZWcZFwczMMn54bRS6Y8GCqg9hvbZxI8ycWUBGZjZSuCiMQt2dndxX5cP/qnXrCsjGzEYSFwU7bRY/vYZtb5/LvMePF5/2Pftp6bd+npnVKxcFO21K3Q28r2ERLY3H71Je2LGkwIzM7GS5o9nMzDIuCmZmlslzOc6pkp6V9Lqk1yTdkeLnS3pG0hvp53kpLknflrRV0suSrswrNzMzqy7PO4WjwJ9HxAeAWcDtkj4ALAFWR8QMYHXaB7gWmJFei4B7c8zNzMyqyHM5zj3AnrT9L5I2Ac3AHOCj6bTlwHPAV1L8oYgIYI2kiZImp/cxy137nt0c7TqbefOOd443NY1n6dK7CszKrLZqMvpI0nTK6zWvBZoqPuj3Ak1puxnYWXHZrhTrVRQkLaJ8J8G0adPyS9rGnENHzqbxvC/Q0nJLFtuyxaOnbGzJvaNZ0m8AjwNfjIi3K4+lu4I4mfeLiGUR0RoRrZMmTTqNmZqZWa5FQdJZlAvCioh4IoVLkian45OBnvkYOoCpFZdPSTEzM6uRPEcfCbgf2BQR/6viUBswP23PB1ZVxG9No5BmAQfdn2BmVlt59il8BPgM8IqkDSn2F8DdwKOSFgJvATelY08B1wFbgXeABTnmZmZmVeQ5+uj/ARrg8Owq5wdwe175mJnZ4PxEs5mZZVwUzMws46JgZmYZFwUzM8u4KJiZWcaL7NgpWfz0GkrdDb1i7Xv2F5SNmZ0uLgp2SkrdDbQ03tkr5lXWzEY+Nx+ZmVnGRcHMzDIuCmZmlnFRMDOzjDuazU6gvb2910psPbwim41WLgpmJ3DoUAMtLXf3i3tFNhut3HxkZmYZFwUzM8u4+cjsFFTra3A/g40GuRUFSd8Frgc6I+KyFDsf+DtgOvAmcFNEHEhLd95DeeW1d4DPRsSLeeVmNpC9pRJtK1Zk+12dnbStWMFZEyZw7dy5WbxaX4P7GWw0yLP56EHgmj6xJcDqiJgBrE77ANcCM9JrEXBvjnmZDUjHjnFDc3P2ahw3jhuamznS3V10amY1kVtRiIifAr/oE54DLE/by4G5FfGHomwNMFHS5LxyMzOz6mrdp9AUEXvS9l6gKW03AzsrztuVYnvoQ9IiyncTTJs2Lb9MR4A7Fiygu7OzX/y1jRth5swCMjKzka6wjuaICElxCtctA5YBtLa2nvT1o0l3Zyf3Vfnwv2rdugKyGd2G2tdgNtLVuiiUJE2OiD2peajna24HMLXivCkpZlYXevoaejzQWe5raOvwP1MbXWpdFNqA+cDd6eeqivjnJT0C/D5wsKKZyaxuVd5BHOx+jts+8QkAJlx4Ifc88ECRqZmdkjyHpK4EPgpcIGkXcBflYvCopIXAW8BN6fSnKA9H3Up5SOqCvPIyO50q7yBWvvpr3tlRjj/70ib2zVviZxdsxMmtKETEnw5waHaVcwO4Pa9chsMTotlQHTpydrYa3eZDHbS03OJnF2zE8RPNg/CEaHYqepqVKpuUerhpyeqZi4JZDnqalbZ0NfYbIXabR4dZHXNRMKuxDRs39rt7AN9BWH1wUTCrsTMOH676fInvIKweeOpsMzPL+E7hFFUblbRp0wYuvfSKXjGPUrJ6MdC0KG62skouCqeo2qikF164xtMpWy/te3Yz7/HezUI7flXM/3YDTYviZiur5KJglqPKZxd6/OiNz1U9d83ru4e1cM/ixV+nVHr3lK83AxcFs5rrPnqk390DwM7O97ixyp3mUJt9SqV3fadqw+aiYFZjERP63T0AtG39UtXzB2r2ab3vvl5DW9e+1MXmdZ651YbHRWEE8LoJY8Phw4d7Tc8N5Un2LjxjV6+/58VPr6HU3cDP94+nZcfxc888HNzQ4plbbXhcFEYAr5swNojoNT03wJauRraWtveKlbobaGm8k+e3r6Ol8fi/ixd29G8qqhwlt/alLubtWEfThGMsvWZWDv8FNhq4KNgJ9XwrrbTt7XM5+N5+WhoLSsqGrHKU3OZ1K2hpbGblq4spVfRpPL1tG89eNIvxZ/+aWR+4KIu/+rOfcdn739/vPT2EdXRzUcjZSJ9ltedbaaXnt6/j0JHHC8pobGnfs5v9vzq3V8d0+54TF+TKNR56VogD6CyVoLm534io57ev4zMtM1n56uJs6m+AN3aJD13Q/67CQ1hHNxeFnHmWVRuOQ0fO5n0N8wZtJqpUucZDzwpxAN/ZvXvQ39W3WJS6nzvFzG2kclEws8L4Kev646JQkGrNSiOlScmsmlP5gPdT1vWnroqCpGuAe4AG4L6I6N/uMkpUa1ZaufLjlEr9C0Wt9O1UdoeyVTPQ1N//8PxGPnbx5b1iTROO8S/0LxRWv+qmKEhqAP4P8HFgF7BOUltEvJ7H76v2rWbtS11se/37hT34U61QbNmyhHNq9Pv7diq7Q9mqzd20aW/Qcl7/cw+82/+hvC1d3+Qcf6kYUeqmKABXAVsjYjuApEeAOUAuRaHabeu8HevY3N190u/1w+9/nyPd3b1GegB0dnXxy3c7+z2QdNaECVXf50DX/n7nbtu9irMieo0KAdi0v4Mdb/celbJpfweXXtDMtop4TwwYND7YqBYbe6rN3XQ0bq/6RHZUWWa9fc9u9m17l2cvOj6CqXLo68k+gHmyTVTVzl/z+m6O6Fw+OKv3qKp6bb6tdb+LIuK0v+mpkHQjcE1E3Jb2PwP8fkR8vs95i4BFaff9wM9qmujALgD2F53EAOo1N+d18uo1t3rNC+o3tyLz+tcRManagXq6UxiSiFgGLCs6j74krY+I1qLzqKZec3NeJ69ec6vXvKB+c6vXvOpp5bUOYGrF/pQUMzOzGqmnorAOmCHpYknjgJuBtoJzMjMbU+qm+Sgijkr6PPAjykNSvxsRrxWc1smouyatCvWam/M6efWaW73mBfWbW13mVTcdzWZmVrx6aj4yM7OCuSiYmVnGReE0kLRY0muSXpW0UtL7is4JQNIdKafXJH2x4Fy+K6lT0qsVsfMlPSPpjfSzynOyheT1qfRn9p6kwoYMDpDbNyVtlvSypCclTayTvP5HymmDpB9LuuhE71GrvCqO/bmkkHRBrfMaKDdJ/11SR/oz2yDpuiJy68tFYZgkNQN/BrRGxGWUO8lvLjYrkHQZ8DnKT4pfDlwv6ZICU3oQuKZPbAmwOiJmAKvTfq09SP+8XgX+BPhpzbPp7UH65/YMcFlE/B6wBfhqrZOiel7fjIjfi4grgL8H/lutk6J6XkiaCvwxsKPvsRp6kCq5AUsj4or0eqrGOVXlonB6nAmMl3QmcA5w4onra+NSYG1EvBMRR4HnKX/QFSIifgr8ok94DrA8bS8H5tYyJ6ieV0RsiojCn5QfILcfp79PgDWUn+eph7zertidANR8BMsA/8YAlgJfpoCcepwgt7rjojBMEdEBfIvyt5A9wMGI+HGxWQHlb7v/TlKjpHOA6+j9cGA9aIqIPWl7L9BUZDIj0H8Cflh0Ej0k/U9JO4FbKOZOoR9Jc4COiNhYdC4D+HxqdvtuEc2n1bgoDFP6i5wDXAxcBEyQ9B+Lzar8bRf4BvBj4GlgA3CsyJxOJMpjoz0+eogkfQ04CqwY7NxaiYivRcRUyjl9frDz85a+DP0FdVKgqrgX+B3gCspfKP+q0GwSF4Xh+yPg5xGxLyKOAE8AHy44JwAi4v6I+GBE/CFwgHIbdD0pSZoMkH564v0hkPRZ4HrglqjPB41WAP+h6CQof+BeDGyU9CblprYXJf2rQrNKIqIUEcci4j3gO5T7/wrnojB8O4BZks6RJGA2sKngnACQdGH6OY1yf8LfFptRP23A/LQ9H1hVYC4jQlqI6svADRHxTtH59JA0o2J3DrC5qFx6RMQrEXFhREyPiOmU12m5MiL2FpwakH0R6vFJyk2+xYsIv4b5Ar5O+X+CV4GHgbOLzinl9X8pr0exEZhdcC4rKd8iH6H8P+dCoJHyqKM3gH8Ezq+TvD6Ztn8NlIAf1dGf2VZgJ+XmwA3A39RJXo+nf/8vAz8Amushrz7H3wQuqKO/y4eBV9KfWRswuYjc+r48zYWZmWXcfGRmZhkXBTMzy7gomJlZxkXBzMwyLgpmZpZxUTAzs4yLgpmZZf4/Uar8acDj8p0AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.histplot(y_pred, color='red', alpha=0.5, bins=50)\n", "sns.histplot(y_train, color='blue', alpha=0.5, bins=50)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.9 RMSE" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [], "source": [ "def rmse(y, y_pred):\n", " se = (y - y_pred) ** 2\n", " mse = se.mean()\n", " return np.sqrt(mse)" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7554192603920132" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rmse(y_train, y_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.10 Validating the model" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [], "source": [ "def prepare_X(df):\n", " df_num = df[base]\n", " df_num = df_num.fillna(0)\n", " X = df_num.values\n", " return X" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7616530991301577" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train = prepare_X(df_train)\n", "w0, w = train_linear_regression(X_train, y_train)\n", "\n", "X_val = prepare_X(df_val)\n", "y_pred = w0 + X_val.dot(w)\n", "rmse(y_val, y_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.11 Simple feature engineering" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [], "source": [ "def prepare_X(df):\n", " df = df.copy()\n", " \n", " df['age'] = 2017 - df['year']\n", " features = base + ['age']\n", " \n", " df_num = df[features]\n", " df_num = df_num.fillna(0)\n", " X = df_num.values\n", "\n", " return X" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5172055461058291" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train = prepare_X(df_train)\n", "w0, w = train_linear_regression(X_train, y_train)\n", "\n", "X_val = prepare_X(df_val)\n", "y_pred = w0 + X_val.dot(w)\n", "rmse(y_val, y_pred)" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.histplot(y_pred, label='prediction', color='red', alpha=0.5, bins=50)\n", "sns.histplot(y_val, label='target', color='blue', alpha=0.5, bins=50)\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.12 Categorical variables" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [], "source": [ "categorical_columns = [\n", " 'make', 'model', 'engine_fuel_type', 'driven_wheels', 'market_category',\n", " 'vehicle_size', 'vehicle_style']\n", "\n", "categorical = {}\n", "\n", "for c in categorical_columns:\n", " categorical[c] = list(df_train[c].value_counts().head().index)" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [], "source": [ "def prepare_X(df):\n", " df = df.copy()\n", " \n", " df['age'] = 2017 - df['year']\n", " features = base + ['age']\n", "\n", " for v in [2, 3, 4]:\n", " df['num_doors_%d' % v] = (df.number_of_doors == v).astype(int)\n", " features.append('num_doors_%d' % v)\n", "\n", " for name, values in categorical.items():\n", " for value in values:\n", " df['%s_%s' % (name, value)] = (df[name] == value).astype(int)\n", " features.append('%s_%s' % (name, value))\n", "\n", " df_num = df[features]\n", " df_num = df_num.fillna(0)\n", " X = df_num.values\n", "\n", " return X" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "266.5994263627081" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train = prepare_X(df_train)\n", "w0, w = train_linear_regression(X_train, y_train)\n", "\n", "X_val = prepare_X(df_val)\n", "y_pred = w0 + X_val.dot(w)\n", "rmse(y_val, y_pred)" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3066759258862621.0,\n", " array([-7.90863204e-01, 1.80621909e+02, 1.97903973e+01, 1.46968041e+01,\n", " -3.39713455e-04, 7.74924546e+00, 9.76297867e+03, 9.83480038e+03,\n", " 9.77003629e+03, -2.36936868e+01, -6.98582110e+00, 7.93435108e+01,\n", " -7.33167695e+01, -6.60897799e+00, -1.00310530e+01, 7.79383982e+01,\n", " -4.19367134e+01, -6.14213575e+01, 2.12412304e+02, 1.02166851e+03,\n", " 9.08719092e+02, 9.84633740e+02, 1.06771237e+03, 7.00547494e+02,\n", " -3.06675926e+15, -3.06675926e+15, -3.06675926e+15, -3.06675926e+15,\n", " 2.52356626e+00, 3.40712703e+00, -1.27416249e+01, 1.22844560e+01,\n", " -1.51620939e+01, 3.09315910e+02, 2.88692636e+02, 2.78158171e+02,\n", " -1.44115660e-01, -2.62579827e-02, 1.75913981e-01, 3.65037816e-01,\n", " -2.90235596e-01]))" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w0, w" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.13 Regularization" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[4. , 4. , 4. ],\n", " [3. , 5. , 5. ],\n", " [5. , 1. , 1. ],\n", " [5. , 4. , 4. ],\n", " [7. , 5. , 5. ],\n", " [4. , 5. , 5.00000001]])" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X = [\n", " [4, 4, 4],\n", " [3, 5, 5],\n", " [5, 1, 1],\n", " [5, 4, 4],\n", " [7, 5, 5],\n", " [4, 5, 5.00000001],\n", "]\n", "\n", "X = np.array(X)\n", "X" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [], "source": [ "y= [1, 2, 3, 1, 2, 3]" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[140. , 111. , 111.00000004],\n", " [111. , 108. , 108.00000005],\n", " [111.00000004, 108.00000005, 108.0000001 ]])" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "XTX = X.T.dot(X)\n", "XTX" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [], "source": [ "XTX_inv = np.linalg.inv(XTX)" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 3.85321698e-02, 1.20696663e+05, -1.20696696e+05],\n", " [ 1.20696640e+05, -2.74658839e+14, 2.74658839e+14],\n", " [-1.20696680e+05, 2.74658839e+14, -2.74658839e+14]])" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "XTX_inv" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 6.24269892e-01, 3.44329390e+06, -3.44329299e+06])" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "XTX_inv.dot(X.T).dot(y)" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [], "source": [ "XTX = [\n", " [1, 2, 2],\n", " [2, 1, 1.0000001],\n", " [2, 1.0000001, 1]\n", "]\n", "\n", "XTX = np.array(XTX)" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-3.33333356e-01, 3.33333339e-01, 3.33333339e-01],\n", " [ 3.33333339e-01, -5.00000008e+06, 4.99999991e+06],\n", " [ 3.33333339e-01, 4.99999991e+06, -5.00000008e+06]])" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linalg.inv(XTX)" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [], "source": [ "XTX = XTX + 0.01 * np.eye(3)" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ -0.33668908, 0.33501399, 0.33501399],\n", " [ 0.33501399, 49.91590897, -50.08509104],\n", " [ 0.33501399, -50.08509104, 49.91590897]])" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linalg.inv(XTX)" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [], "source": [ "def train_linear_regression_reg(X, y, r=0.001):\n", " ones = np.ones(X.shape[0])\n", " X = np.column_stack([ones, X])\n", "\n", " XTX = X.T.dot(X)\n", " XTX = XTX + r * np.eye(XTX.shape[0])\n", "\n", " XTX_inv = np.linalg.inv(XTX)\n", " w_full = XTX_inv.dot(X.T).dot(y)\n", " \n", " return w_full[0], w_full[1:]" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.4608208286209523" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train = prepare_X(df_train)\n", "w0, w = train_linear_regression_reg(X_train, y_train, r=0.01)\n", "\n", "X_val = prepare_X(df_val)\n", "y_pred = w0 + X_val.dot(w)\n", "rmse(y_val, y_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.14 Tuning the model" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0 3066759258862621.0 266.5994263627081\n", "1e-05 6.6398149018651305 0.46081532123609276\n", "0.0001 7.12965014007955 0.4608153659783837\n", "0.001 7.13085491393288 0.46081585838957173\n", "0.1 7.0002324128629025 0.4608736549134577\n", "1 6.250747846974607 0.46158128382779856\n", "10 4.7295125856710305 0.472609877266903\n" ] } ], "source": [ "for r in [0.0, 0.00001, 0.0001, 0.001, 0.1, 1, 10]:\n", " X_train = prepare_X(df_train)\n", " w0, w = train_linear_regression_reg(X_train, y_train, r=r)\n", "\n", " X_val = prepare_X(df_val)\n", " y_pred = w0 + X_val.dot(w)\n", " score = rmse(y_val, y_pred)\n", " \n", " print(r, w0, score)" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.46081585838957173" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = 0.001\n", "X_train = prepare_X(df_train)\n", "w0, w = train_linear_regression_reg(X_train, y_train, r=r)\n", "\n", "X_val = prepare_X(df_val)\n", "y_pred = w0 + X_val.dot(w)\n", "score = rmse(y_val, y_pred)\n", "score" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.15 Using the model" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [], "source": [ "df_full_train = pd.concat([df_train, df_val])" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [], "source": [ "df_full_train = df_full_train.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [], "source": [ "X_full_train = prepare_X(df_full_train)" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[148., 4., 33., ..., 1., 0., 0.],\n", " [132., 4., 32., ..., 0., 0., 1.],\n", " [148., 4., 37., ..., 0., 0., 1.],\n", " ...,\n", " [332., 8., 23., ..., 0., 0., 0.],\n", " [148., 4., 34., ..., 0., 0., 0.],\n", " [290., 6., 25., ..., 0., 0., 0.]])" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_full_train" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [], "source": [ "y_full_train = np.concatenate([y_train, y_val])" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [], "source": [ "w0, w = train_linear_regression_reg(X_full_train, y_full_train, r=0.001)" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.4600753970266562" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_test = prepare_X(df_test)\n", "y_pred = w0 + X_test.dot(w)\n", "score = rmse(y_test, y_pred)\n", "score" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'make': 'toyota',\n", " 'model': 'sienna',\n", " 'year': 2015,\n", " 'engine_fuel_type': 'regular_unleaded',\n", " 'engine_hp': 266.0,\n", " 'engine_cylinders': 6.0,\n", " 'transmission_type': 'automatic',\n", " 'driven_wheels': 'front_wheel_drive',\n", " 'number_of_doors': 4.0,\n", " 'market_category': nan,\n", " 'vehicle_size': 'large',\n", " 'vehicle_style': 'passenger_minivan',\n", " 'highway_mpg': 25,\n", " 'city_mpg': 18,\n", " 'popularity': 2031}" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "car = df_test.iloc[20].to_dict()\n", "car" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
makemodelyearengine_fuel_typeengine_hpengine_cylinderstransmission_typedriven_wheelsnumber_of_doorsmarket_categoryvehicle_sizevehicle_stylehighway_mpgcity_mpgpopularity
0toyotasienna2015regular_unleaded266.06.0automaticfront_wheel_drive4.0NaNlargepassenger_minivan25182031
\n", "
" ], "text/plain": [ " make model year engine_fuel_type engine_hp engine_cylinders \\\n", "0 toyota sienna 2015 regular_unleaded 266.0 6.0 \n", "\n", " transmission_type driven_wheels number_of_doors market_category \\\n", "0 automatic front_wheel_drive 4.0 NaN \n", "\n", " vehicle_size vehicle_style highway_mpg city_mpg popularity \n", "0 large passenger_minivan 25 18 2031 " ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_small = pd.DataFrame([car])\n", "df_small" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [], "source": [ "X_small = prepare_X(df_small)" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10.63249250912739" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred = w0 + X_small.dot(w)\n", "y_pred = y_pred[0]\n", "y_pred" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "41459.336786653585" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.expm1(y_pred)" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "35000.00000000001" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.expm1(y_test[20])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.16 Next steps" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* We included only 5 top features. What happens if we include 10?\n", "\n", "Other projects\n", "\n", "* Predict the price of a house - e.g. boston dataset\n", "* https://archive.ics.uci.edu/ml/datasets.php?task=reg\n", "* https://archive.ics.uci.edu/ml/datasets/Student+Performance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.17 Summary\n", "\n", "* EDA - looking at data, finding missing values\n", "* Target variable distribution - long tail => bell shaped curve\n", "* Validation framework: train/val/test split (helped us detect problems)\n", "* Normal equation - not magic, but math\n", "* Implemented it with numpy\n", "* RMSE to validate our model\n", "* Feature engineering: age, categorical features\n", "* Regularization to fight numerical instability" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.9" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 03-classification/01-churn-project.md ================================================ # 3.1 Churn prediction project [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification) empty? ## Notes The project aims to identify customers that are likely to churn or stop to using a service. Each customer has a score associated with the probability of churning. Considering this data, the company would send an email with discounts or other promotions to avoid churning. The ML strategy applied to approach this problem is binary classification, which for one instance ($i^{th}$ customer), can be expressed as: $$\large g\left(x_{i}\right) = y_{i}$$ In the formula, $y_i$ is the model's prediction and belongs to {0,1}, with 0 being the negative value or no churning, and 1 the positive value or churning. The output corresponds to the likelihood of churning. In brief, the main idea behind this project is to build a model with historical data from customers and assign a score of the likelihood of churning. For this project, we used a [Kaggle dataset](https://www.kaggle.com/blastchar/telco-customer-churn). |⚠️|The notes are written by the community.
If you see an error here, please create a PR with a fix.| |---|:-:| * [Notes from Peter Ernicke](https://knowmledge.com/2023/09/25/ml-zoomcamp-2023-machine-learning-for-classification-part-1/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Next: [Data preparation](02-data-preparation.md) ================================================ FILE: 03-classification/02-data-preparation.md ================================================ ## 3.2 Data preparation [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification) ## Notes This session covered data obtention and some procedures of data preparation. **Commands, functions, and methods:** * `!wget` - Linux shell command for downloading data * `pd.read.csv()` - read csv files * `df.head()` - take a look of the dataframe * `df.head().T` - take a look of the transposed dataframe * `df.columns` - retrieve column names of a dataframe * `df.columns.str.lower()` - lowercase all the letters in the columns names of a dataframe * `df.columns.str.replace(' ', '_')` - replace the space separator in the columns names of a dataframe * `df.dtypes` - retrieve data types of all series * `df.index` - retrieve indices of a dataframe * `pd.to_numeric()` - convert a series values to numerical values. The `errors='coerce'` argument allows making the transformation despite some encountered errors. * `df.fillna()` - replace NAs with some value * `(df.x == "yes").astype(int)` - convert x series of yes-no values to numerical values. The entire code of this project is available in [this jupyter notebook](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/03-classification/notebook.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/26/ml-zoomcamp-2023-machine-learning-for-classification-part-2/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [Churn prediction project](01-churn-project.md) * Next: [Setting up the validation framework](03-validation.md) ================================================ FILE: 03-classification/03-validation.md ================================================ ## 3.3 Setting up the validation framework [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification) ## Notes Splitting the dataset with **Scikit-Learn**. **Classes, functions, and methods:** * `train_test_split` - Scikit-Learn class for splitting a dataset into two parts. The `test_size` argument states how large the test set should be. The `random_state` argument sets a random seed for reproducibility purposes. * `df.reset_index(drop=True)` - reset the indices of a dataframe and delete the previous ones. * `df.x.values` - extract the values from x series * `del df['x']` - delete x series from a dataframe The entire code of this project is available in [this jupyter notebook](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/03-classification/notebook.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/27/ml-zoomcamp-2023-machine-learning-for-classification-part-3/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [Data preparation](02-data-preparation.md) * Next: [EDA](04-eda.md) ================================================ FILE: 03-classification/04-eda.md ================================================ ## 3.4 EDA [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification) ## Notes The EDA for this project consisted of: * Checking missing values * Looking at the distribution of the target variable (churn) * Looking at numerical and categorical variables **Functions and methods:** * `df.isnull().sum()` - returns the number of null values in the dataframe. * `df.x.value_counts()` returns the number of values for each category in x series. The `normalize=True` argument retrieves the percentage of each category. In this project, the mean of churn is equal to the churn rate obtained with the value_counts method. * `round(x, y)` - round an x number with y decimal places * `df[x].nunique()` - returns the number of unique values in x series The entire code of this project is available in [this jupyter notebook](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/03-classification/notebook.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/27/ml-zoomcamp-2023-machine-learning-for-classification-part-4/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [Setting up the validation framework](03-validation.md) * Next: [Feature importance: Churn rate and risk ratio](05-risk.md) ================================================ FILE: 03-classification/05-risk.md ================================================ ## 3.5 Feature importance: Churn rate and risk ratio [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification) ## Notes 1. **Churn rate:** Difference between global mean of the target variable and mean of the target variable for categories of a feature. If this difference is greater than 0, it means that the category is less likely to churn, and if the difference is lower than 0, the group is more likely to churn. The larger differences are indicators that a variable is more important than others. 2. **Risk ratio:** Ratio between mean of the target variable for categories of a feature and global mean of the target variable. If this ratio is greater than 1, the category is more likely to churn, and if the ratio is lower than 1, the category is less likely to churn. It expresses the feature importance in relative terms. **Functions and methods:** * `df.groupby('x').y.agg([mean()])` - returns a dataframe with mean of y series grouped by x series * `display(x)` displays an output in the cell of a jupyter notebook. The entire code of this project is available in [this jupyter notebook](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/03-classification/notebook.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/28/ml-zoomcamp-2023-machine-learning-for-classification-part-5/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [EDA](04-eda.md) * Next: [Feature importance: Mutual information](06-mutual-info.md) ================================================ FILE: 03-classification/06-mutual-info.md ================================================ ## 3.6 Feature importance: Mutual information [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification) ## Notes Mutual information is a concept from information theory, which measures how much we can learn about one variable if we know the value of another. In this project, we can think of this as how much do we learn about churn if we have the information from a particular feature. So, it is a measure of the importance of a categorical variable. **Classes, functions, and methods:** * `mutual_info_score(x, y)` - Scikit-Learn class for calculating the mutual information between the x target variable and y feature. * `df[x].apply(y)` - apply a y function to the x series of the df dataframe. * ` df.sort_values(ascending=False).to_frame(name='x')` - sort values in an ascending order and called the column as x. The entire code of this project is available in [this jupyter notebook](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/03-classification/notebook.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/28/ml-zoomcamp-2023-machine-learning-for-classification-part-6/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [Feature importance: Churn rate and risk ratio](05-risk.md) * Next: [Feature importance: Correlation](07-correlation.md) ================================================ FILE: 03-classification/07-correlation.md ================================================ ## 3.7 Feature importance: Correlation [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification) ## Notes **Correlation coefficient** measures the degree of dependency between two variables. This value is negative if one variable grows while the other decreases, and it is positive if both variables increase. Depending on its size, the dependency between both variables could be low, moderate, or strong. It allows measuring the importance of numerical variables. If `r` is correlation coefficient, then the correlation between two variables is: - LOW when `r` is between [0, -0.2) or [0, 0.2) - MEDIUM when `r` is between [-0.2, -0.5) or [0.2, 0.5) - STRONG when `r` is between [-0.5, -1.0] or [0.5, 1.0] Positive Correlation vs. Negative Correlation * When `r` is positive, an increase in x will increase y. * When `r` is negative, an increase in x will decrease y. * When `r` is 0, a change in x does not affect y. **Functions and methods:** * `df[x].corrwith(y)` - returns the correlation between x and y series. This is a function from pandas. The entire code of this project is available in [this jupyter notebook](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/03-classification/notebook.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/29/ml-zoomcamp-2023-machine-learning-for-classification-part-7/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [Feature importance: Mutual information](06-mutual-info.md) * Next: [One-hot encoding](08-ohe.md) ================================================ FILE: 03-classification/08-ohe.md ================================================ ## 3.8 One-hot encoding [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification) ## Notes One-Hot Encoding allows encoding categorical variables in numerical ones. This method represents each category of a variable as one column, and a 1 is assigned if the value belongs to the category or 0 otherwise. **Classes, functions, and methods:** * `df[x].to_dict(orient='records')` - convert x series to dictionaries, oriented by rows. * `DictVectorizer().fit_transform(x)` - Scikit-Learn class for one-hot encoding by converting x dictionaries into a sparse matrix. It does not affect the numerical variables. * `DictVectorizer().get_feature_names()` - return the names of the columns in the sparse matrix. The entire code of this project is available in [this jupyter notebook](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/03-classification/notebook.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/29/ml-zoomcamp-2023-machine-learning-for-classification-part-8/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [Feature importance: Correlation](07-correlation.md) * Next: [Logistic regression](09-logistic-regression.md) ================================================ FILE: 03-classification/09-logistic-regression.md ================================================ ## 3.9 Logistic regression [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification) ## Notes In general, supervised models can be represented with this formula:

$\large g\left(x_{i}\right) = y_{i}$

Depending on what is the type of target variable, the supervised task can be regression or classification (binary or multiclass). Binary classification tasks can have negative (0) or positive (1) target values. The output of these models is the probability of $x_i$ belonging to the positive class. Logistic regression is similar to linear regression because both models take into account the bias term and weighted sum of features. The difference between these models is that the output of linear regression is a real number, while logistic regression outputs a value between zero and one, applying the sigmoid function to the linear regression formula.

$\large g\left(x_{i}\right) = Sigmoid\left(w_{0} + w_{1}x_{1} + w_{2}x_{2} + ... + w_{n}x_{n}\right)$

$\large Sigmoid\left(z\right)=\frac{1}{1 + exp\left( -z \right)}$

In this way, the sigmoid function allows transforming a score into a probability. The entire code of this project is available in [this jupyter notebook](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/03-classification/notebook.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/30/ml-zoomcamp-2023-machine-learning-for-classification-part-9/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [One-hot encoding](08-ohe.md) * Next: [Training logistic regression with Scikit-Learn](10-training-log-reg.md) ================================================ FILE: 03-classification/10-training-log-reg.md ================================================ ## 3.10 Training logistic regression with Scikit-Learn [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification) ## Notes This video was about training a logistic regression model with Scikit-Learn, applying it to the validation dataset, and calculating its accuracy. **Classes, functions, and methods:** * `LogisticRegression().fit(x)` - Scikit-Learn class for training the logistic regression model. * `LogisticRegression().coef_[0]` - return the coefficients or weights of the LR model * `LogisticRegression().intercept_[0]` - return the bias or intercept of the LR model * `LogisticRegression().predict[x]` - make predictions on the x dataset * `LogisticRegression().predict_proba[x]` - make predictions on the x dataset by returning two columns with their probabilities for the two categories - soft predictions The entire code of this project is available in [this jupyter notebook](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/03-classification/notebook.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/09/30/ml-zoomcamp-2023-machine-learning-for-classification-part-10/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [Logistic regression](09-logistic-regression.md) * Next: [Model interpretation](11-log-reg-interpretation.md) ================================================ FILE: 03-classification/11-log-reg-interpretation.md ================================================ ## 3.11 Model interpretation [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification) ## Notes This video was about the interpretation of coefficients, and training a model with fewer features. In the formula of the logistic regression model, only one of the one-hot encoded categories is multiplied by 1, and the other by 0. In this way, we only consider the appropriate category for each categorical feature. **Classes, functions, and methods:** * `zip(x,y)` - returns a new list with elements from x joined with their corresponding elements on y The entire code of this project is available in [this jupyter notebook](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/03-classification/notebook.ipynb).
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/01/ml-zoomcamp-2023-machine-learning-for-classification-part-11/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [Training logistic regression with Scikit-Learn](10-training-log-reg.md) * Next: [Using the model](12-using-log-reg.md) ================================================ FILE: 03-classification/12-using-log-reg.md ================================================ ## 3.12 Using the model [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification) ## Notes We trained the logistic regression model with the full training dataset (training + validation), considering numerical and categorical features. Thus, predictions were made on the test dataset, and we evaluated the model using the accuracy metric. In this case, the predictions of validation and test were similar, which means that the model is working well.
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/01/ml-zoomcamp-2023-machine-learning-for-classification-part-12/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [Model interpretation](11-log-reg-interpretation.md) * Next: [Summary](13-summary.md) ================================================ FILE: 03-classification/13-summary.md ================================================ ## 3.13 Summary [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification) ## Notes In this session, we worked on a project to predict churning in customers from a company. We learned the feature importance of numerical and categorical variables, including risk ratio, mutual information, and correlation coefficient. Also, we understood one-hot encoding and implemented logistic regression with Scikit-Learn.
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [Using the model](12-using-log-reg.md) * Next: [Explore more](14-explore-more.md) ================================================ FILE: 03-classification/14-explore-more.md ================================================ ## 3.14 Explore more More things * Try to exclude least useful features Use scikit-learn in project of last week * Re-implement train/val/test split using scikit-learn in the project from the last week * Also, instead of our own linear regression, use `LinearRegression` (not regularized) and `RidgeRegression` (regularized). Find the best regularization parameter for Ridge * There are other ways to implement one-hot encoding. E.g. using the `OneHotEncoding` class. Check how to use it [here](notebook-scaling-ohe.ipynb). * Sometimes numerical features require scaling, especially for iterative solves like "lbfgs". Check how to use `StandardScaler` for that [here](notebook-scaling-ohe.ipynb). Other projects * Lead scoring - https://www.kaggle.com/ashydv/leads-dataset * Default prediction - https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [Summary](13-summary.md) * Next: [Homework](homework.md) ================================================ FILE: 03-classification/README.md ================================================ ## 3. Machine Learning for Classification - 3.1 [Churn prediction project](01-churn-project.md) - 3.2 [Data preparation](02-data-preparation.md) - 3.3 [Setting up the validation framework](03-validation.md) - 3.4 [EDA](04-eda.md) - 3.5 [Feature importance: Churn rate and risk ratio](05-risk.md) - 3.6 [Feature importance: Mutual information](06-mutual-info.md) - 3.7 [Feature importance: Correlation](07-correlation.md) - 3.8 [One-hot encoding](08-ohe.md) - 3.9 [Logistic regression](09-logistic-regression.md) - 3.10 [Training logistic regression with Scikit-Learn](10-training-log-reg.md) - 3.11 [Model interpretation](11-log-reg-interpretation.md) - 3.12 [Using the model](12-using-log-reg.md) - 3.13 [Summary](13-summary.md) - 3.14 [Explore more](14-explore-more.md) - 3.15 [Homework](homework.md) ## Community notes Did you take notes? You can share them here (or in each unit separately) * [Notes from Kwang Yang](https://www.kaggle.com/kwangyangchia/notebook-for-lesson-3-mle) * [Notes from Jaime Hipólito Cabrera](https://github.com/jaimeh94/ml-zoomcamp/blob/main/03-classification/classnotes_session03-classification.ipynb) * [Notes from Sebastián Ayala Ruano](https://github.com/sayalaruano/100DaysOfMLCode/blob/main/Classification/Notes/NotesDay11.md) * [Notes from Nikhil Shrestha](https://www.kaggle.com/snikhil17/chapter-3-ml-for-classification-mlzoomcamp) * [Default of Credit Card Clients (Additional Project) from Nikhil Shrestha](https://www.kaggle.com/snikhil17/default-of-credit-card-clients-logistic-regression) * [Notes from Alvaro Navas](https://github.com/ziritrion/ml-zoomcamp/blob/main/notes/03_classification.md) * [Notes from froukje](https://github.com/froukje/ml-zoomcamp/blob/main/week3/Lecture_3_churn_prediction.ipynb) * [Notes from Hareesh Tummala](https://github.com/tummala-hareesh/ml_zoomcamp_ht/blob/main/notes/week-3-notes.md) * [Notes from Giorgos Verikios](https://github.com/g-verikios/ml_zoomcamp/blob/d412072625964385023d7100cad342ef2742659d/Classification-Churn.ipynb) * [Notes from Memoona Tahira](https://github.com/MemoonaTahira/MLZoomcamp2022/tree/main/Notes/Week_3-logistic_regression_classification) * [Notes from Marcos Benício](https://github.com/marcosbenicio/DataScience/blob/main/02Classification/churn.ipynb) * [Notes from Oscar Garcia](https://github.com/ozkary/machine-learning-engineering/tree/main/03-classification) * [Notes from Peter Ernicke](https://knowmledge.com/category/courses/ml-zoomcamp/classification/) * [Notes from Kemal Dahha](https://github.com/kemaldahha/machine-learning-course/blob/main/week_3_notes.ipynb) * [Notes from Maximilien Eyengue](https://github.com/maxim-eyengue/Python-Codes/blob/main/ML_Zoomcamp_2024/03_classification/Summary_Session_03.md) * [Cohort|2025 Notes BY Nitin Gupta](https://github.com/niting9881/ML-zoomcamp-local/blob/main/03-classification/README.md) * Add your notes here ================================================ FILE: 03-classification/homework.md ================================================ ## Homework * For 2025 cohort homework, check [the 2025 cohort folder](../cohorts/2025/03-classification/homework.md) * For 2024 cohort homework, check [the 2024 cohort folder](../cohorts/2024/03-classification/homework.md) * For 2023 cohort homework, check [the 2023 cohort folder](../cohorts/2023/03-classification/homework.md) * For 2022 cohort homework, check [the 2022 cohort folder](../cohorts/2022/03-classification/homework.md) * For 2021 cohort homework and solution, check [the 2021 cohort folder](../cohorts/2021/03-classification/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [Explore more](14-explore-more.md) ================================================ FILE: 03-classification/meta.csv ================================================ lesson,name,page_name,video,slides,notebook 1,Churn prediction project,01-churn-project.md,https://www.youtube.com/watch?v=0Zw04wdeTQo,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb 2,Data preparation,02-data-preparation.md,https://www.youtube.com/watch?v=VSGGU9gYvdg,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb 3,Setting up the validation framework,03-validation.md,https://www.youtube.com/watch?v=_lwz34sOnSE,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb 4,EDA,04-eda.md,https://www.youtube.com/watch?v=BNF1wjBwTQA,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb 5,Feature importance: Churn rate and risk ratio,05-risk.md,https://www.youtube.com/watch?v=fzdzPLlvs40,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb 6,Feature importance: Mutual information,06-mutual-info.md,https://www.youtube.com/watch?v=_u2YaGT6RN0,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb 7,Feature importance: Correlation,07-correlation.md,https://www.youtube.com/watch?v=mz1707QVxiY,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb 8,One-hot encoding,08-ohe.md,https://www.youtube.com/watch?v=L-mjQFN5aR0,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb 9,Logistic regression,09-logistic-regression.md,https://www.youtube.com/watch?v=7KFE2ltnBAg,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb 10,Training logistic regression with Scikit-Learn,10-training-log-reg.md,https://www.youtube.com/watch?v=hae_jXe2fN0,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb 11,Model interpretation,11-log-reg-interpretation.md,https://www.youtube.com/watch?v=OUrlxnUAAEA,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb 12,Using the model,12-using-log-reg.md,https://www.youtube.com/watch?v=Y-NGmnFpNuM,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb 13,Summary,13-summary.md,https://www.youtube.com/watch?v=Zz6oRGsJkW4,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb 14,Explore more,14-explore-more.md,,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb 15,Homework,homework.md,,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-3-machine-learning-for-classification,notebook.ipynb ================================================ FILE: 03-classification/meta.json ================================================ { "data": "meta.csv", "session": 3, "name": "Machine Learning for Classification" } ================================================ FILE: 03-classification/notebook-scaling-ohe.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2021-09-27 17:03:29-- https://raw.githubusercontent.com/alexeygrigorev/datasets/master/AB_NYC_2019.csv\n", "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n", "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 7077973 (6.8M) [text/plain]\n", "Saving to: ‘AB_NYC_2019.csv’\n", "\n", "AB_NYC_2019.csv 100%[===================>] 6.75M 7.92MB/s in 0.9s \n", "\n", "2021-09-27 17:03:30 (7.92 MB/s) - ‘AB_NYC_2019.csv’ saved [7077973/7077973]\n", "\n" ] } ], "source": [ "!wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/AB_NYC_2019.csv -O AB_NYC_2019.csv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data preparation" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "usecols = [\n", " 'room_type', 'neighbourhood_group',\n", " 'latitude', 'longitude', 'price','minimum_nights',\n", " 'number_of_reviews', 'reviews_per_month', \n", " 'calculated_host_listings_count', 'availability_365'\n", "]\n", "\n", "df = pd.read_csv('AB_NYC_2019.csv', usecols=usecols)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "df['reviews_per_month'] = df.reviews_per_month.fillna(0)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "df['price'] = df['price'] >= 152" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "df_train_full, df_test = train_test_split(df, test_size=0.2, random_state=42)\n", "df_train, df_val = train_test_split(df_train_full, test_size=0.25, random_state=42)\n", "\n", "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)\n", "\n", "y_train = df_train.price.values\n", "y_val = df_val.price.values\n", "y_test = df_test.price.values\n", "\n", "del df_train['price']\n", "del df_val['price']\n", "del df_test['price']" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import accuracy_score" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "cat = ['neighbourhood_group', 'room_type']\n", "\n", "num = [\n", " 'latitude', 'longitude', 'minimum_nights', 'number_of_reviews',\n", " 'reviews_per_month', 'calculated_host_listings_count',\n", " 'availability_365'\n", "]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Training the model\n", "\n", "You get a convergence warning:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/alexey/.pyenv/versions/3.8.11/lib/python3.8/site-packages/sklearn/linear_model/_logistic.py:763: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " n_iter_i = _check_optimize_result(\n" ] }, { "data": { "text/plain": [ "LogisticRegression()" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_dict = df_train[cat + num].to_dict(orient='records')\n", "\n", "dv = DictVectorizer(sparse=False)\n", "dv.fit(train_dict)\n", "\n", "X_train = dv.transform(train_dict)\n", "\n", "model = LogisticRegression(solver='lbfgs', C=1.0)\n", "model.fit(X_train, y_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can fix this model by using a scaler. You can read more about scalers\n", "[here](https://scikit-learn.org/stable/modules/preprocessing.html).\n", "\n", "Also, we'll show you how to use `OneHotEncoding` instead of `DictVectorizer`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Feature scaling + OHE" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "from sklearn.preprocessing import StandardScaler\n", "from sklearn.preprocessing import MinMaxScaler\n", "from sklearn.preprocessing import OneHotEncoder" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, we prepare the numerical variables. We'll use the scaler for that\n", "and write the results to `X_train_num`:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "X_train_num = df_train[num].values\n", "\n", "scaler = StandardScaler()\n", "#scaler = MinMaxScaler()\n", "\n", "X_train_num = scaler.fit_transform(X_train_num)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The scaler scales the numerical features. Compare the un-scaled version of\n", "latitude with the scaled one:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([40.7276 , 40.70847, 40.83149, ..., 40.79994, 40.69585, 40.64438])" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train.latitude.values" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-0.02524398, -0.37616878, 1.88053632, ..., 1.3017764 ,\n", " -0.60767275, -1.5518494 ])" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train_num[:, 0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's process categorical features using `OneHotEncoding`.\n", "We'll write the results to `X_train_cat`:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "ohe = OneHotEncoder(sparse=False, handle_unknown='ignore')" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "X_train_cat = ohe.fit_transform(df_train[cat].values)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['x0_Bronx', 'x0_Brooklyn', 'x0_Manhattan', 'x0_Queens',\n", " 'x0_Staten Island', 'x1_Entire home/apt', 'x1_Private room',\n", " 'x1_Shared room'], dtype=object)" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ohe.get_feature_names()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we need to combine two matrices into one - `X_train`:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "X_train = np.column_stack([X_train_num, X_train_cat])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And now let's train the model:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LogisticRegression(random_state=42)" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = LogisticRegression(solver='lbfgs', C=1.0, random_state=42)\n", "model.fit(X_train, y_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can check it's accuracy:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "X_val_num = df_val[num].values\n", "X_val_num = scaler.transform(X_val_num)\n", "\n", "X_val_cat = ohe.transform(df_val[cat].values)\n", "\n", "X_val = np.column_stack([X_val_num, X_val_cat])" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7976275692811126" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred = model.predict_proba(X_val)[:, 1]\n", "accuracy_score(y_val, y_pred >= 0.5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It's a little bit better than the version without scaled features." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.11" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: 03-classification/notebook.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. Machine Learning for Classification\n", "\n", "We'll use logistic regression to predict churn\n", "\n", "\n", "## 3.1 Churn prediction project\n", "\n", "* Dataset: https://www.kaggle.com/blastchar/telco-customer-churn\n", "* https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-03-churn-prediction/WA_Fn-UseC_-Telco-Customer-Churn.csv\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.2 Data preparation\n", "\n", "* Download the data, read it with pandas\n", "* Look at the data\n", "* Make column names and values look uniform\n", "* Check if all the columns read correctly\n", "* Check if the churn variable needs any preparation" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "data = 'https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-03-churn-prediction/WA_Fn-UseC_-Telco-Customer-Churn.csv'" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2021-09-17 21:42:33-- https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-03-churn-prediction/WA_Fn-UseC_-Telco-Customer-Churn.csv\n", "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.109.133, 185.199.110.133, 185.199.108.133, ...\n", "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.109.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 977501 (955K) [text/plain]\n", "Saving to: ‘data-week-3.csv’\n", "\n", "data-week-3.csv 100%[===================>] 954,59K --.-KB/s in 0,1s \n", "\n", "2021-09-17 21:42:33 (8,64 MB/s) - ‘data-week-3.csv’ saved [977501/977501]\n", "\n" ] } ], "source": [ "!wget $data -O data-week-3.csv " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
customerIDgenderSeniorCitizenPartnerDependentstenurePhoneServiceMultipleLinesInternetServiceOnlineSecurity...DeviceProtectionTechSupportStreamingTVStreamingMoviesContractPaperlessBillingPaymentMethodMonthlyChargesTotalChargesChurn
07590-VHVEGFemale0YesNo1NoNo phone serviceDSLNo...NoNoNoNoMonth-to-monthYesElectronic check29.8529.85No
15575-GNVDEMale0NoNo34YesNoDSLYes...YesNoNoNoOne yearNoMailed check56.951889.5No
23668-QPYBKMale0NoNo2YesNoDSLYes...NoNoNoNoMonth-to-monthYesMailed check53.85108.15Yes
37795-CFOCWMale0NoNo45NoNo phone serviceDSLYes...YesYesNoNoOne yearNoBank transfer (automatic)42.301840.75No
49237-HQITUFemale0NoNo2YesNoFiber opticNo...NoNoNoNoMonth-to-monthYesElectronic check70.70151.65Yes
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " customerID gender SeniorCitizen Partner Dependents tenure PhoneService \\\n", "0 7590-VHVEG Female 0 Yes No 1 No \n", "1 5575-GNVDE Male 0 No No 34 Yes \n", "2 3668-QPYBK Male 0 No No 2 Yes \n", "3 7795-CFOCW Male 0 No No 45 No \n", "4 9237-HQITU Female 0 No No 2 Yes \n", "\n", " MultipleLines InternetService OnlineSecurity ... DeviceProtection \\\n", "0 No phone service DSL No ... No \n", "1 No DSL Yes ... Yes \n", "2 No DSL Yes ... No \n", "3 No phone service DSL Yes ... Yes \n", "4 No Fiber optic No ... No \n", "\n", " TechSupport StreamingTV StreamingMovies Contract PaperlessBilling \\\n", "0 No No No Month-to-month Yes \n", "1 No No No One year No \n", "2 No No No Month-to-month Yes \n", "3 Yes No No One year No \n", "4 No No No Month-to-month Yes \n", "\n", " PaymentMethod MonthlyCharges TotalCharges Churn \n", "0 Electronic check 29.85 29.85 No \n", "1 Mailed check 56.95 1889.5 No \n", "2 Mailed check 53.85 108.15 Yes \n", "3 Bank transfer (automatic) 42.30 1840.75 No \n", "4 Electronic check 70.70 151.65 Yes \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv('data-week-3.csv')\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "df.columns = df.columns.str.lower().str.replace(' ', '_')\n", "\n", "categorical_columns = list(df.dtypes[df.dtypes == 'object'].index)\n", "\n", "for c in categorical_columns:\n", " df[c] = df[c].str.lower().str.replace(' ', '_')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01234
customerid7590-vhveg5575-gnvde3668-qpybk7795-cfocw9237-hqitu
genderfemalemalemalemalefemale
seniorcitizen00000
partneryesnononono
dependentsnonononono
tenure1342452
phoneservicenoyesyesnoyes
multiplelinesno_phone_servicenonono_phone_serviceno
internetservicedsldsldsldslfiber_optic
onlinesecuritynoyesyesyesno
onlinebackupyesnoyesnono
deviceprotectionnoyesnoyesno
techsupportnononoyesno
streamingtvnonononono
streamingmoviesnonononono
contractmonth-to-monthone_yearmonth-to-monthone_yearmonth-to-month
paperlessbillingyesnoyesnoyes
paymentmethodelectronic_checkmailed_checkmailed_checkbank_transfer_(automatic)electronic_check
monthlycharges29.8556.9553.8542.370.7
totalcharges29.851889.5108.151840.75151.65
churnnonoyesnoyes
\n", "
" ], "text/plain": [ " 0 1 2 \\\n", "customerid 7590-vhveg 5575-gnvde 3668-qpybk \n", "gender female male male \n", "seniorcitizen 0 0 0 \n", "partner yes no no \n", "dependents no no no \n", "tenure 1 34 2 \n", "phoneservice no yes yes \n", "multiplelines no_phone_service no no \n", "internetservice dsl dsl dsl \n", "onlinesecurity no yes yes \n", "onlinebackup yes no yes \n", "deviceprotection no yes no \n", "techsupport no no no \n", "streamingtv no no no \n", "streamingmovies no no no \n", "contract month-to-month one_year month-to-month \n", "paperlessbilling yes no yes \n", "paymentmethod electronic_check mailed_check mailed_check \n", "monthlycharges 29.85 56.95 53.85 \n", "totalcharges 29.85 1889.5 108.15 \n", "churn no no yes \n", "\n", " 3 4 \n", "customerid 7795-cfocw 9237-hqitu \n", "gender male female \n", "seniorcitizen 0 0 \n", "partner no no \n", "dependents no no \n", "tenure 45 2 \n", "phoneservice no yes \n", "multiplelines no_phone_service no \n", "internetservice dsl fiber_optic \n", "onlinesecurity yes no \n", "onlinebackup no no \n", "deviceprotection yes no \n", "techsupport yes no \n", "streamingtv no no \n", "streamingmovies no no \n", "contract one_year month-to-month \n", "paperlessbilling no yes \n", "paymentmethod bank_transfer_(automatic) electronic_check \n", "monthlycharges 42.3 70.7 \n", "totalcharges 1840.75 151.65 \n", "churn no yes " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head().T" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "tc = pd.to_numeric(df.totalcharges, errors='coerce')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "df.totalcharges = pd.to_numeric(df.totalcharges, errors='coerce')" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "df.totalcharges = df.totalcharges.fillna(0)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 no\n", "1 no\n", "2 yes\n", "3 no\n", "4 yes\n", "Name: churn, dtype: object" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.churn.head()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "df.churn = (df.churn == 'yes').astype(int)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.3 Setting up the validation framework\n", "\n", "* Perform the train/validation/test split with Scikit-Learn" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "df_full_train, df_test = train_test_split(df, test_size=0.2, random_state=1)\n", "df_train, df_val = train_test_split(df_full_train, test_size=0.25, random_state=1)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(4225, 1409, 1409)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(df_train), len(df_val), len(df_test)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "y_train = df_train.churn.values\n", "y_val = df_val.churn.values\n", "y_test = df_test.churn.values\n", "\n", "del df_train['churn']\n", "del df_val['churn']\n", "del df_test['churn']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.4 EDA\n", "\n", "* Check missing values\n", "* Look at the target variable (churn)\n", "* Look at numerical and categorical variables" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "df_full_train = df_full_train.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "customerid 0\n", "gender 0\n", "seniorcitizen 0\n", "partner 0\n", "dependents 0\n", "tenure 0\n", "phoneservice 0\n", "multiplelines 0\n", "internetservice 0\n", "onlinesecurity 0\n", "onlinebackup 0\n", "deviceprotection 0\n", "techsupport 0\n", "streamingtv 0\n", "streamingmovies 0\n", "contract 0\n", "paperlessbilling 0\n", "paymentmethod 0\n", "monthlycharges 0\n", "totalcharges 0\n", "churn 0\n", "dtype: int64" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_full_train.isnull().sum()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 0.730032\n", "1 0.269968\n", "Name: churn, dtype: float64" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_full_train.churn.value_counts(normalize=True)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.26996805111821087" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_full_train.churn.mean()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "numerical = ['tenure', 'monthlycharges', 'totalcharges']" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "categorical = [\n", " 'gender',\n", " 'seniorcitizen',\n", " 'partner',\n", " 'dependents',\n", " 'phoneservice',\n", " 'multiplelines',\n", " 'internetservice',\n", " 'onlinesecurity',\n", " 'onlinebackup',\n", " 'deviceprotection',\n", " 'techsupport',\n", " 'streamingtv',\n", " 'streamingmovies',\n", " 'contract',\n", " 'paperlessbilling',\n", " 'paymentmethod',\n", "]" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "gender 2\n", "seniorcitizen 2\n", "partner 2\n", "dependents 2\n", "phoneservice 2\n", "multiplelines 3\n", "internetservice 3\n", "onlinesecurity 3\n", "onlinebackup 3\n", "deviceprotection 3\n", "techsupport 3\n", "streamingtv 3\n", "streamingmovies 3\n", "contract 3\n", "paperlessbilling 2\n", "paymentmethod 4\n", "dtype: int64" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_full_train[categorical].nunique()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.5 Feature importance: Churn rate and risk ratio\n", "\n", "Feature importance analysis (part of EDA) - identifying which features affect our target variable\n", "\n", "* Churn rate\n", "* Risk ratio\n", "* Mutual information - later" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Churn rate" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
customeridgenderseniorcitizenpartnerdependentstenurephoneservicemultiplelinesinternetserviceonlinesecurity...deviceprotectiontechsupportstreamingtvstreamingmoviescontractpaperlessbillingpaymentmethodmonthlychargestotalchargeschurn
05442-pptjymale0yesyes12yesnonono_internet_service...no_internet_serviceno_internet_serviceno_internet_serviceno_internet_servicetwo_yearnomailed_check19.70258.350
16261-rcvnsfemale0nono42yesnodslyes...yesyesnoyesone_yearnocredit_card_(automatic)73.903160.551
22176-osjuvmale0yesno71yesyesdslyes...noyesnonotwo_yearnobank_transfer_(automatic)65.154681.750
36161-erdgdmale0yesyes71yesyesdslyes...yesyesyesyesone_yearnoelectronic_check85.456300.850
42364-ufrommale0nono30yesnodslyes...noyesyesnoone_yearnoelectronic_check70.402044.750
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " customerid gender seniorcitizen partner dependents tenure phoneservice \\\n", "0 5442-pptjy male 0 yes yes 12 yes \n", "1 6261-rcvns female 0 no no 42 yes \n", "2 2176-osjuv male 0 yes no 71 yes \n", "3 6161-erdgd male 0 yes yes 71 yes \n", "4 2364-ufrom male 0 no no 30 yes \n", "\n", " multiplelines internetservice onlinesecurity ... \\\n", "0 no no no_internet_service ... \n", "1 no dsl yes ... \n", "2 yes dsl yes ... \n", "3 yes dsl yes ... \n", "4 no dsl yes ... \n", "\n", " deviceprotection techsupport streamingtv \\\n", "0 no_internet_service no_internet_service no_internet_service \n", "1 yes yes no \n", "2 no yes no \n", "3 yes yes yes \n", "4 no yes yes \n", "\n", " streamingmovies contract paperlessbilling paymentmethod \\\n", "0 no_internet_service two_year no mailed_check \n", "1 yes one_year no credit_card_(automatic) \n", "2 no two_year no bank_transfer_(automatic) \n", "3 yes one_year no electronic_check \n", "4 no one_year no electronic_check \n", "\n", " monthlycharges totalcharges churn \n", "0 19.70 258.35 0 \n", "1 73.90 3160.55 1 \n", "2 65.15 4681.75 0 \n", "3 85.45 6300.85 0 \n", "4 70.40 2044.75 0 \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_full_train.head()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.27682403433476394" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "churn_female = df_full_train[df_full_train.gender == 'female'].churn.mean()\n", "churn_female" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.2632135306553911" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "churn_male = df_full_train[df_full_train.gender == 'male'].churn.mean()\n", "churn_male" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.26996805111821087" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "global_churn = df_full_train.churn.mean()\n", "global_churn" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-0.006855983216553063" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "global_churn - churn_female" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.006754520462819769" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "global_churn - churn_male" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "no 2932\n", "yes 2702\n", "Name: partner, dtype: int64" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_full_train.partner.value_counts()" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.20503330866025166" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "churn_partner = df_full_train[df_full_train.partner == 'yes'].churn.mean()\n", "churn_partner" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.06493474245795922" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "global_churn - churn_partner" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.3298090040927694" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "churn_no_partner = df_full_train[df_full_train.partner == 'no'].churn.mean()\n", "churn_no_partner" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-0.05984095297455855" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "global_churn - churn_no_partner" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Risk ratio" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.2216593879412643" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "churn_no_partner / global_churn" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7594724924338315" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "churn_partner / global_churn" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```\n", "SELECT\n", " gender,\n", " AVG(churn),\n", " AVG(churn) - global_churn AS diff,\n", " AVG(churn) / global_churn AS risk\n", "FROM\n", " data\n", "GROUP BY\n", " gender;\n", "```" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "from IPython.display import display" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gender\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
gender
female0.27682427960.0068561.025396
male0.2632142838-0.0067550.974980
\n", "
" ], "text/plain": [ " mean count diff risk\n", "gender \n", "female 0.276824 2796 0.006856 1.025396\n", "male 0.263214 2838 -0.006755 0.974980" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "seniorcitizen\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
seniorcitizen
00.2422704722-0.0276980.897403
10.4133779120.1434091.531208
\n", "
" ], "text/plain": [ " mean count diff risk\n", "seniorcitizen \n", "0 0.242270 4722 -0.027698 0.897403\n", "1 0.413377 912 0.143409 1.531208" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "partner\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
partner
no0.32980929320.0598411.221659
yes0.2050332702-0.0649350.759472
\n", "
" ], "text/plain": [ " mean count diff risk\n", "partner \n", "no 0.329809 2932 0.059841 1.221659\n", "yes 0.205033 2702 -0.064935 0.759472" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "dependents\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
dependents
no0.31376039680.0437921.162212
yes0.1656661666-0.1043020.613651
\n", "
" ], "text/plain": [ " mean count diff risk\n", "dependents \n", "no 0.313760 3968 0.043792 1.162212\n", "yes 0.165666 1666 -0.104302 0.613651" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "phoneservice\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
phoneservice
no0.241316547-0.0286520.893870
yes0.27304950870.0030811.011412
\n", "
" ], "text/plain": [ " mean count diff risk\n", "phoneservice \n", "no 0.241316 547 -0.028652 0.893870\n", "yes 0.273049 5087 0.003081 1.011412" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "multiplelines\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
multiplelines
no0.2574072700-0.0125610.953474
no_phone_service0.241316547-0.0286520.893870
yes0.29074223870.0207731.076948
\n", "
" ], "text/plain": [ " mean count diff risk\n", "multiplelines \n", "no 0.257407 2700 -0.012561 0.953474\n", "no_phone_service 0.241316 547 -0.028652 0.893870\n", "yes 0.290742 2387 0.020773 1.076948" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "internetservice\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
internetservice
dsl0.1923471934-0.0776210.712482
fiber_optic0.42517124790.1552031.574895
no0.0778051221-0.1921630.288201
\n", "
" ], "text/plain": [ " mean count diff risk\n", "internetservice \n", "dsl 0.192347 1934 -0.077621 0.712482\n", "fiber_optic 0.425171 2479 0.155203 1.574895\n", "no 0.077805 1221 -0.192163 0.288201" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "onlinesecurity\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
onlinesecurity
no0.42092128010.1509531.559152
no_internet_service0.0778051221-0.1921630.288201
yes0.1532261612-0.1167420.567570
\n", "
" ], "text/plain": [ " mean count diff risk\n", "onlinesecurity \n", "no 0.420921 2801 0.150953 1.559152\n", "no_internet_service 0.077805 1221 -0.192163 0.288201\n", "yes 0.153226 1612 -0.116742 0.567570" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "onlinebackup\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
onlinebackup
no0.40432324980.1343551.497672
no_internet_service0.0778051221-0.1921630.288201
yes0.2172321915-0.0527360.804660
\n", "
" ], "text/plain": [ " mean count diff risk\n", "onlinebackup \n", "no 0.404323 2498 0.134355 1.497672\n", "no_internet_service 0.077805 1221 -0.192163 0.288201\n", "yes 0.217232 1915 -0.052736 0.804660" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "deviceprotection\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
deviceprotection
no0.39587524730.1259071.466379
no_internet_service0.0778051221-0.1921630.288201
yes0.2304121940-0.0395560.853480
\n", "
" ], "text/plain": [ " mean count diff risk\n", "deviceprotection \n", "no 0.395875 2473 0.125907 1.466379\n", "no_internet_service 0.077805 1221 -0.192163 0.288201\n", "yes 0.230412 1940 -0.039556 0.853480" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "techsupport\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
techsupport
no0.41891427810.1489461.551717
no_internet_service0.0778051221-0.1921630.288201
yes0.1599261632-0.1100420.592390
\n", "
" ], "text/plain": [ " mean count diff risk\n", "techsupport \n", "no 0.418914 2781 0.148946 1.551717\n", "no_internet_service 0.077805 1221 -0.192163 0.288201\n", "yes 0.159926 1632 -0.110042 0.592390" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "streamingtv\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
streamingtv
no0.34283222460.0728641.269897
no_internet_service0.0778051221-0.1921630.288201
yes0.30272321670.0327551.121328
\n", "
" ], "text/plain": [ " mean count diff risk\n", "streamingtv \n", "no 0.342832 2246 0.072864 1.269897\n", "no_internet_service 0.077805 1221 -0.192163 0.288201\n", "yes 0.302723 2167 0.032755 1.121328" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "streamingmovies\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
streamingmovies
no0.33890622130.0689381.255358
no_internet_service0.0778051221-0.1921630.288201
yes0.30727322000.0373051.138182
\n", "
" ], "text/plain": [ " mean count diff risk\n", "streamingmovies \n", "no 0.338906 2213 0.068938 1.255358\n", "no_internet_service 0.077805 1221 -0.192163 0.288201\n", "yes 0.307273 2200 0.037305 1.138182" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "contract\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
contract
month-to-month0.43170131040.1617331.599082
one_year0.1205731186-0.1493950.446621
two_year0.0282741344-0.2416940.104730
\n", "
" ], "text/plain": [ " mean count diff risk\n", "contract \n", "month-to-month 0.431701 3104 0.161733 1.599082\n", "one_year 0.120573 1186 -0.149395 0.446621\n", "two_year 0.028274 1344 -0.241694 0.104730" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "paperlessbilling\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
paperlessbilling
no0.1720712313-0.0978970.637375
yes0.33815133210.0681831.252560
\n", "
" ], "text/plain": [ " mean count diff risk\n", "paperlessbilling \n", "no 0.172071 2313 -0.097897 0.637375\n", "yes 0.338151 3321 0.068183 1.252560" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "paymentmethod\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meancountdiffrisk
paymentmethod
bank_transfer_(automatic)0.1681711219-0.1017970.622928
credit_card_(automatic)0.1643391217-0.1056300.608733
electronic_check0.45589018930.1859221.688682
mailed_check0.1938701305-0.0760980.718121
\n", "
" ], "text/plain": [ " mean count diff risk\n", "paymentmethod \n", "bank_transfer_(automatic) 0.168171 1219 -0.101797 0.622928\n", "credit_card_(automatic) 0.164339 1217 -0.105630 0.608733\n", "electronic_check 0.455890 1893 0.185922 1.688682\n", "mailed_check 0.193870 1305 -0.076098 0.718121" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n" ] } ], "source": [ "for c in categorical:\n", " print(c)\n", " df_group = df_full_train.groupby(c).churn.agg(['mean', 'count'])\n", " df_group['diff'] = df_group['mean'] - global_churn\n", " df_group['risk'] = df_group['mean'] / global_churn\n", " display(df_group)\n", " print()\n", " print()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.6 Feature importance: Mutual information\n", "\n", "Mutual information - concept from information theory, it tells us how much \n", "we can learn about one variable if we know the value of another\n", "\n", "* https://en.wikipedia.org/wiki/Mutual_information" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import mutual_info_score" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0983203874041556" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mutual_info_score(df_full_train.churn, df_full_train.contract)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0001174846211139946" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mutual_info_score(df_full_train.gender, df_full_train.churn)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0983203874041556" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mutual_info_score(df_full_train.contract, df_full_train.churn)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.009967689095399745" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mutual_info_score(df_full_train.partner, df_full_train.churn)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "def mutual_info_churn_score(series):\n", " return mutual_info_score(series, df_full_train.churn)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "contract 0.098320\n", "onlinesecurity 0.063085\n", "techsupport 0.061032\n", "internetservice 0.055868\n", "onlinebackup 0.046923\n", "deviceprotection 0.043453\n", "paymentmethod 0.043210\n", "streamingtv 0.031853\n", "streamingmovies 0.031581\n", "paperlessbilling 0.017589\n", "dependents 0.012346\n", "partner 0.009968\n", "seniorcitizen 0.009410\n", "multiplelines 0.000857\n", "phoneservice 0.000229\n", "gender 0.000117\n", "dtype: float64" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mi = df_full_train[categorical].apply(mutual_info_churn_score)\n", "mi.sort_values(ascending=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.7 Feature importance: Correlation\n", "\n", "How about numerical columns?\n", "\n", "* Correlation coefficient - https://en.wikipedia.org/wiki/Pearson_correlation_coefficient" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "72" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_full_train.tenure.max()" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tenure 0.351885\n", "monthlycharges 0.196805\n", "totalcharges 0.196353\n", "dtype: float64" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_full_train[numerical].corrwith(df_full_train.churn).abs()" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5953420669577875" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_full_train[df_full_train.tenure <= 2].churn.mean()" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.3994413407821229" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_full_train[(df_full_train.tenure > 2) & (df_full_train.tenure <= 12)].churn.mean()" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.17634908339788277" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_full_train[df_full_train.tenure > 12].churn.mean()" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.08795411089866156" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_full_train[df_full_train.monthlycharges <= 20].churn.mean()" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.18340943683409436" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_full_train[(df_full_train.monthlycharges > 20) & (df_full_train.monthlycharges <= 50)].churn.mean()" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.32499341585462205" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_full_train[df_full_train.monthlycharges > 50].churn.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.8 One-hot encoding\n", "\n", "* Use Scikit-Learn to encode categorical features" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "from sklearn.feature_extraction import DictVectorizer" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "dv = DictVectorizer(sparse=False)\n", "\n", "train_dict = df_train[categorical + numerical].to_dict(orient='records')\n", "X_train = dv.fit_transform(train_dict)\n", "\n", "val_dict = df_val[categorical + numerical].to_dict(orient='records')\n", "X_val = dv.transform(val_dict)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.9 Logistic regression\n", "\n", "* Binary classification\n", "* Linear vs logistic regression" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [], "source": [ "def sigmoid(z):\n", " return 1 / (1 + np.exp(-z))" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [], "source": [ "z = np.linspace(-7, 7, 51)" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sigmoid(10000)" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(z, sigmoid(z))" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [], "source": [ "def linear_regression(xi):\n", " result = w0\n", " \n", " for j in range(len(w)):\n", " result = result + xi[j] * w[j]\n", " \n", " return result" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "def logistic_regression(xi):\n", " score = w0\n", " \n", " for j in range(len(w)):\n", " score = score + xi[j] * w[j]\n", " \n", " result = sigmoid(score)\n", " return result" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.10 Training logistic regression with Scikit-Learn\n", "\n", "* Train a model with Scikit-Learn\n", "* Apply it to the validation dataset\n", "* Calculate the accuracy" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import LogisticRegression" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, l1_ratio=None, max_iter=100,\n", " multi_class='warn', n_jobs=None, penalty='l2',\n", " random_state=None, solver='lbfgs', tol=0.0001, verbose=0,\n", " warm_start=False)" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = LogisticRegression(solver='lbfgs')\n", "# solver='lbfgs' is the default solver in newer version of sklearn\n", "# for older versions, you need to specify it explicitly\n", "model.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-0.10903395348323511" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.intercept_[0]" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.475, -0.175, -0.408, -0.03 , -0.078, 0.063, -0.089, -0.081,\n", " -0.034, -0.073, -0.335, 0.316, -0.089, 0.004, -0.258, 0.141,\n", " 0.009, 0.063, -0.089, -0.081, 0.266, -0.089, -0.284, -0.231,\n", " 0.124, -0.166, 0.058, -0.087, -0.032, 0.07 , -0.059, 0.141,\n", " -0.249, 0.215, -0.12 , -0.089, 0.102, -0.071, -0.089, 0.052,\n", " 0.213, -0.089, -0.232, -0.07 , 0. ])" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.coef_[0].round(3)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [], "source": [ "y_pred = model.predict_proba(X_val)[:, 1]" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [], "source": [ "churn_decision = (y_pred >= 0.5)" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8034066713981547" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(y_val == churn_decision).mean()" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [], "source": [ "df_pred = pd.DataFrame()\n", "df_pred['probability'] = y_pred\n", "df_pred['prediction'] = churn_decision.astype(int)\n", "df_pred['actual'] = y_val" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [], "source": [ "df_pred['correct'] = df_pred.prediction == df_pred.actual" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8034066713981547" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_pred.correct.mean()" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 0, 0, ..., 0, 1, 1])" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "churn_decision.astype(int)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.11 Model interpretation\n", "\n", "* Look at the coefficients\n", "* Train a smaller model with fewer features" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [], "source": [ "a = [1, 2, 3, 4]\n", "b = 'abcd'" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{1: 'a', 2: 'b', 3: 'c', 4: 'd'}" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dict(zip(a, b))" ] }, { "cell_type": "code", "execution_count": 75, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "{'contract=month-to-month': 0.475,\n", " 'contract=one_year': -0.175,\n", " 'contract=two_year': -0.408,\n", " 'dependents=no': -0.03,\n", " 'dependents=yes': -0.078,\n", " 'deviceprotection=no': 0.063,\n", " 'deviceprotection=no_internet_service': -0.089,\n", " 'deviceprotection=yes': -0.081,\n", " 'gender=female': -0.034,\n", " 'gender=male': -0.073,\n", " 'internetservice=dsl': -0.335,\n", " 'internetservice=fiber_optic': 0.316,\n", " 'internetservice=no': -0.089,\n", " 'monthlycharges': 0.004,\n", " 'multiplelines=no': -0.258,\n", " 'multiplelines=no_phone_service': 0.141,\n", " 'multiplelines=yes': 0.009,\n", " 'onlinebackup=no': 0.063,\n", " 'onlinebackup=no_internet_service': -0.089,\n", " 'onlinebackup=yes': -0.081,\n", " 'onlinesecurity=no': 0.266,\n", " 'onlinesecurity=no_internet_service': -0.089,\n", " 'onlinesecurity=yes': -0.284,\n", " 'paperlessbilling=no': -0.231,\n", " 'paperlessbilling=yes': 0.124,\n", " 'partner=no': -0.166,\n", " 'partner=yes': 0.058,\n", " 'paymentmethod=bank_transfer_(automatic)': -0.087,\n", " 'paymentmethod=credit_card_(automatic)': -0.032,\n", " 'paymentmethod=electronic_check': 0.07,\n", " 'paymentmethod=mailed_check': -0.059,\n", " 'phoneservice=no': 0.141,\n", " 'phoneservice=yes': -0.249,\n", " 'seniorcitizen': 0.215,\n", " 'streamingmovies=no': -0.12,\n", " 'streamingmovies=no_internet_service': -0.089,\n", " 'streamingmovies=yes': 0.102,\n", " 'streamingtv=no': -0.071,\n", " 'streamingtv=no_internet_service': -0.089,\n", " 'streamingtv=yes': 0.052,\n", " 'techsupport=no': 0.213,\n", " 'techsupport=no_internet_service': -0.089,\n", " 'techsupport=yes': -0.232,\n", " 'tenure': -0.07,\n", " 'totalcharges': 0.0}" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dict(zip(dv.get_feature_names_out(), model.coef_[0].round(3)))" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [], "source": [ "small = ['contract', 'tenure', 'monthlycharges']" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'contract': 'two_year', 'tenure': 72, 'monthlycharges': 115.5},\n", " {'contract': 'month-to-month', 'tenure': 10, 'monthlycharges': 95.25},\n", " {'contract': 'month-to-month', 'tenure': 5, 'monthlycharges': 75.55},\n", " {'contract': 'month-to-month', 'tenure': 5, 'monthlycharges': 80.85},\n", " {'contract': 'two_year', 'tenure': 18, 'monthlycharges': 20.1},\n", " {'contract': 'month-to-month', 'tenure': 4, 'monthlycharges': 30.5},\n", " {'contract': 'month-to-month', 'tenure': 1, 'monthlycharges': 75.1},\n", " {'contract': 'month-to-month', 'tenure': 1, 'monthlycharges': 70.3},\n", " {'contract': 'two_year', 'tenure': 72, 'monthlycharges': 19.75},\n", " {'contract': 'month-to-month', 'tenure': 6, 'monthlycharges': 109.9}]" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train[small].iloc[:10].to_dict(orient='records')" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [], "source": [ "dicts_train_small = df_train[small].to_dict(orient='records')\n", "dicts_val_small = df_val[small].to_dict(orient='records')" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DictVectorizer(dtype=, separator='=', sort=True,\n", " sparse=False)" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dv_small = DictVectorizer(sparse=False)\n", "dv_small.fit(dicts_train_small)" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['contract=month-to-month',\n", " 'contract=one_year',\n", " 'contract=two_year',\n", " 'monthlycharges',\n", " 'tenure']" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dv_small.get_feature_names_out()" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [], "source": [ "X_train_small = dv_small.transform(dicts_train_small)" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, l1_ratio=None, max_iter=100,\n", " multi_class='warn', n_jobs=None, penalty='l2',\n", " random_state=None, solver='lbfgs', tol=0.0001, verbose=0,\n", " warm_start=False)" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_small = LogisticRegression(solver='lbfgs')\n", "model_small.fit(X_train_small, y_train)" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-2.476775657751665" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w0 = model_small.intercept_[0]\n", "w0" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.97 , -0.025, -0.949, 0.027, -0.036])" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w = model_small.coef_[0]\n", "w.round(3)" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'contract=month-to-month': 0.97,\n", " 'contract=one_year': -0.025,\n", " 'contract=two_year': -0.949,\n", " 'monthlycharges': 0.027,\n", " 'tenure': -0.036}" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dict(zip(dv_small.get_feature_names_out(), w.round(3)))" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-3.473" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "-2.47 + (-0.949) + 30 * 0.027 + 24 * (-0.036)" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.030090303318277657" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sigmoid(_)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.12 Using the model" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [], "source": [ "dicts_full_train = df_full_train[categorical + numerical].to_dict(orient='records')" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [], "source": [ "dv = DictVectorizer(sparse=False)\n", "X_full_train = dv.fit_transform(dicts_full_train)" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [], "source": [ "y_full_train = df_full_train.churn.values" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, l1_ratio=None, max_iter=100,\n", " multi_class='warn', n_jobs=None, penalty='l2',\n", " random_state=None, solver='lbfgs', tol=0.0001, verbose=0,\n", " warm_start=False)" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = LogisticRegression(solver='lbfgs')\n", "model.fit(X_full_train, y_full_train)" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [], "source": [ "dicts_test = df_test[categorical + numerical].to_dict(orient='records')" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [], "source": [ "X_test = dv.transform(dicts_test)" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [], "source": [ "y_pred = model.predict_proba(X_test)[:, 1]" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [], "source": [ "churn_decision = (y_pred >= 0.5)" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.815471965933286" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(churn_decision == y_test).mean()" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 0, 0, ..., 0, 0, 1])" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_test" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'gender': 'female',\n", " 'seniorcitizen': 0,\n", " 'partner': 'yes',\n", " 'dependents': 'yes',\n", " 'phoneservice': 'yes',\n", " 'multiplelines': 'yes',\n", " 'internetservice': 'fiber_optic',\n", " 'onlinesecurity': 'yes',\n", " 'onlinebackup': 'no',\n", " 'deviceprotection': 'yes',\n", " 'techsupport': 'no',\n", " 'streamingtv': 'yes',\n", " 'streamingmovies': 'yes',\n", " 'contract': 'month-to-month',\n", " 'paperlessbilling': 'yes',\n", " 'paymentmethod': 'electronic_check',\n", " 'tenure': 17,\n", " 'monthlycharges': 104.2,\n", " 'totalcharges': 1743.5}" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "customer = dicts_test[-1]\n", "customer" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [], "source": [ "X_small = dv.transform([customer])" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5968852088293909" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.predict_proba(X_small)[0, 1]" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_test[-1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.13 Summary\n", "\n", "* Feature importance - risk, mutual information, correlation\n", "* One-hot encoding can be implemented with `DictVectorizer`\n", "* Logistic regression - linear model like linear regression\n", "* Output of log reg - probability\n", "* Interpretation of weights is similar to linear regression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.14 Explore more\n", "\n", "More things\n", "\n", "* Try to exclude least useful features\n", "\n", "\n", "Use scikit-learn in project of last week\n", "\n", "* Re-implement train/val/test split using scikit-learn in the project from the last week\n", "* Also, instead of our own linear regression, use `LinearRegression` (not regularized) and `RidgeRegression` (regularized). Find the best regularization parameter for Ridge\n", "\n", "Other projects\n", "\n", "* Lead scoring - https://www.kaggle.com/ashydv/leads-dataset\n", "* Default prediction - https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.9" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 04-evaluation/01-overview.md ================================================ ## 4.1 Evaluation metrics: session overview [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification) ## Notes The fourth week of Machine Learning Zoomcamp is about different metrics to evaluate a binary classifier. These measures include accuracy, confusion table, precision, recall, ROC curves(TPR, FRP, random model, and ideal model), AUROC, and cross-validation. For this project, we used a [Kaggle dataset](https://www.kaggle.com/blastchar/telco-customer-churn) about churn prediction. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/02/ml-zoomcamp-2023-evaluation-metrics-for-classification-part-1/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 4: Evaluation Metrics for Classification](./) * Next: [Accuracy and dummy model](02-accuracy.md) ================================================ FILE: 04-evaluation/02-accuracy.md ================================================ ## 4.2 Accuracy and dummy model [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification) ## Notes **Accuracy** measures the fraction of correct predictions. Specifically, it is the number of correct predictions divided by the total number of predictions. We can change the **decision threshold**, it should not be always 0.5. But, in this particular problem, the best decision cutoff, associated with the hightest accuracy (80%), was indeed 0.5. Note that if we build a **dummy model** in which the decision cutoff is 1, so the algorithm predicts that no clients will churn, the accuracy would be 73%. Thus, we can see that the improvement of the original model with respect to the dummy model is not as high as we would expect. Therefore, in this problem accuracy can not tell us how good is the model because the dataset is **unbalanced**, which means that there are more instances from one category than the other. This is also known as **class imbalance**. **Classes and methods:** * `np.linspace(x,y,z)` - returns a numpy array starting at `x` until `y` with `z` evenly spaced samples * `Counter(x)` - collection class that counts the number of instances that satisfy the `x` condition * `accuracy_score(x, y)` - sklearn.metrics class for calculating the accuracy of a model, given a predicted `x` dataset and a target `y` dataset. The entire code of this project is available in [this jupyter notebook](notebook.ipynb). Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/03/ml-zoomcamp-2023-evaluation-metrics-for-classification-part-2/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 4: Evaluation Metrics for Classification](./) * Previous: [Evaluation metrics: session overview](01-overview.md) * Next: [Confusion table](03-confusion-table.md) ================================================ FILE: 04-evaluation/03-confusion-table.md ================================================ ## 4.3 Confusion table [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification) ## Notes Confusion table is a way of measuring different types of errors and correct decisions that binary classifiers can make. Considering this information, it is possible to evaluate the quality of the model by different strategies. When comes to a prediction of an LR model, each falls into one of four different categories: * Prediction is that the customer WILL churn. This is known as the **Positive class** * And Customer actually churned - Known as a **True Positive (TP)** * But Customer actually did not churn - Known as a **False Positive (FP)** * Prediction is that the customer WILL NOT churn' - This is known as the **Negative class** * Customer did not churn - **True Negative (TN)** * Customer churned - **False Negative (FN)** `Confusion Table` is a way to summarize the above results in a tabular format, as shown below:
Predictions
Negative Positive
Actual Negative TN FP
Positive FN TP
![confusion_matrix.png](images%2Fconfusion_matrix.png) The **accuracy** corresponds to the sum of TN and TP divided by the total of observations. The code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/04-evaluation/notebook.ipynb). Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/04/ml-zoomcamp-2023-evaluation-metrics-for-classification-part-3/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 4: Evaluation Metrics for Classification](./) * Previous: [Accuracy and dummy model](02-accuracy.md) * Next: [Precision and Recall](04-precision-recall.md) ================================================ FILE: 04-evaluation/04-precision-recall.md ================================================ ## 4.4 Precision and Recall [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification) ## Notes **Precision** tell us the fraction of positive predictions that are correct. It takes into account only the **positive class** (TP and FP - second column of the confusion matrix), as is stated in the following formula: $$P = \cfrac{TP}{TP + FP}$$ **Recall** measures the fraction of correctly identified positive instances. It considers parts of the **positive and negative classes** (TP and FN - second row of confusion table). The formula of this metric is presented below: $$R = \cfrac{TP}{TP + FN}$$ In this problem, the precision and recall values were 67% and 54% respectively. So, these measures reflect some errors of our model that accuracy did not notice due to the **class imbalance**. ![classification_metrics.png](images%2Fclassification_metrics.png) **MNEMONICS:** - Precision : From the `pre`dicted positives, how many we predicted right. See how the word `pre`cision is similar to the word `pre`diction? - Recall : From the `real` positives, how many we predicted right. See how the word `re`c`al`l is similar to the word `real`? Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/05/ml-zoomcamp-2023-evaluation-metrics-for-classification-part-4/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 4: Evaluation Metrics for Classification](./) * Previous: [Confusion table](03-confusion-table.md) * Next: [ROC Curves](05-roc.md) ================================================ FILE: 04-evaluation/05-roc.md ================================================ ## 4.5 ROC Curves [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification) ## Notes ROC stands for Receiver Operating Characteristic, and this idea was applied during the Second World War for evaluating the strength of radio detectors. This measure considers **False Positive Rate** (FPR) and **True Postive Rate** (TPR), which are derived from the values of the confusion matrix. **FPR** is the fraction of false positives (FP) divided by the total number of negatives (FP and TN - the first row of confusion matrix), and we want to `minimize` it. The formula of FPR is the following:

$FPR = \large \frac{FP}{TN + FP}$

In the other hand, **TPR** or **Recall** is the fraction of true positives (TP) divided by the total number of positives (FN and TP - second row of confusion table), and we want to `maximize` this metric. The formula of this measure is presented below:

$TPR =\large \frac{TP}{TP + FN}$

![TPR_FPR.png](images%2FTPR_FPR.png) ROC curves consider Recall and FPR under all the possible thresholds. If the threshold is 0 or 1, the FPR and Recall scores are the opposite of the threshold (1 and 0 respectively), but they have different meanings, as we explained before. We need to compare the ROC curves against a point of reference to evaluate its performance, so the corresponding curves of random and ideal models are required. It is possible to plot the ROC curves with FPR and Recall scores vs thresholds, or FPR vs Recall. **Classes and methods:** * `np.repeat([x,y], [z,w])` - returns a numpy array with a z number of x values first, and then a w number of y values. * `roc_curve(x, y)` - sklearn.metrics class for calculating the false positive rates, true positive rates, and thresholds, given a target x dataset and a predicted y dataset. The entire code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/04-evaluation/notebook.ipynb). Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/06/ml-zoomcamp-2023-evaluation-metrics-for-classification-part-5/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 4: Evaluation Metrics for Classification](./) * Previous: [Precision and Recall](04-precision-recall.md) * Next: [ROC AUC](06-auc.md) ================================================ FILE: 04-evaluation/06-auc.md ================================================ ## 4.6 ROC AUC [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification) ## Notes The Area under the ROC curves can tell us how good is our model with a single value. The AUROC of a random model is 0.5, while for an ideal one is 1. In other words, AUC can be interpreted as the probability that a randomly selected positive example has a greater score than a randomly selected negative example. **Classes and methods:** * `auc(x, y)` - sklearn.metrics class for calculating area under the curve of the x and y datasets. For ROC curves x would be false positive rate, and y true positive rate. * `roc_auc_score(x, y)` - sklearn.metrics class for calculating area under the ROC curves of the x false positive rate and y true positive rate datasets. * `randint(x, y, size=z)` - np.random class for generating random integers from the “discrete uniform” distribution; from `x` (inclusive) to `y` (exclusive) of size `z`. The entire code of this project is available in [this jupyter notebook](notebook.ipynb). Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/07/ml-zoomcamp-2023-evaluation-metrics-for-classification-part-6/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 4: Evaluation Metrics for Classification](./) * Previous: [ROC Curves](05-roc.md) * Next: [Cross-Validation](07-cross-validation.md) ================================================ FILE: 04-evaluation/07-cross-validation.md ================================================ ## 4.7 Cross-Validation [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification) ### Extra resources In the lesson we talked about iterators and generators in Python. You can read more about them here: - https://anandology.com/python-practice-book/iterators.html - https://www.google.com/search?q=python+iterators+and+generators ## Notes **Cross-validations** refers to evaluating the same model on different subsets of a dataset, getting the average prediction, and spread within predictions. This method is applied in the **parameter tuning** step, which is the process of selecting the best parameter. In this algorithm, the full training dataset is divided into **k partitions**, we train the model in k-1 partitions of this dataset and evaluate it on the remaining subset. Then, we end up evaluating the model in all the k folds, and we calculate the average evaluation metric for all the folds. In general, if the dataset is large, we should use the hold-out validation dataset strategy. In the other hand, if the dataset is small or we want to know the standard deviation of the model across different folds, we can use the cross-validation approach. **Libraries, classes and methods:** - `Kfold(k, s, x)` - sklearn.model_selection class for calculating the cross validation with k folds, s boolean attribute for shuffle decision, and an x random state - `Kfold.split(x)` - sklearn.Kfold method for splitting the x dataset with the attributes established in the Kfold's object construction. - `for i in tqdm()` - library for showing the progress of each i iteration in a for loop. The code of this project is available in [this jupyter notebook](notebook.ipynb). Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
- [Notes from Peter Ernicke](https://knowmledge.com/2023/10/08/ml-zoomcamp-2023-evaluation-metrics-for-classification-part-7/) ## Navigation - [Machine Learning Zoomcamp course](../) - [Session 4: Evaluation Metrics for Classification](./) - Previous: [ROC AUC](06-auc.md) - Next: [Summary](08-summary.md) ================================================ FILE: 04-evaluation/08-summary.md ================================================ ## 4.8 Summary [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification) ## Notes General definitions: * **Metric:** A single number that describes the performance of a model * **Accuracy:** Fraction of correct answers; sometimes misleading * Precision and recall are less misleading when we have class imbalance * **ROC Curve:** A way to evaluate the performance at all thresholds; okay to use with imbalance * **K-Fold CV:** More reliable estimate for performance (mean + std) In brief, this weeks was about different metrics to evaluate a binary classifier. These measures included accuracy, confusion table, precision, recall, ROC curves(TPR, FPR, random model, and ideal model), and AUROC. Also, we talked about a different way to estimate the performance of the model and make the parameter tuning with cross-validation. The code of this project is available in [this jupyter notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/04-evaluation/notebook.ipynb). Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
- [Notes from Maximilien Eyengue](https://github.com/maxim-eyengue/Python-Codes/blob/main/ML_Zoomcamp_2024/04_evaluation/Summary_Session_04.md) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 4: Evaluation Metrics for Classification](./) * Previous: [Cross-Validation](07-cross-validation.md) * Next: [Explore more](09-explore-more.md) ================================================ FILE: 04-evaluation/09-explore-more.md ================================================ ## 4.9 Explore more * Check the precision and recall of the dummy classifier that always predict "FALSE" * F1 score = 2 P R / (P + R) * Evaluate precision and recall at different thresholds, plot P vs R - this way you'll get the precision/recall curve (similar to ROC curve) * Area under the PR curve is also a useful metric ### Other projects * Calculate the metrics for the suggested datasets from the previous week ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 4: Evaluation Metrics for Classification](./) * Previous: [Summary](08-summary.md) * Next: [Homework](homework.md) ================================================ FILE: 04-evaluation/README.md ================================================ ## 4. Evaluation Metrics for Classification - 4.1 [Evaluation metrics: session overview](01-overview.md) - 4.2 [Accuracy and dummy model](02-accuracy.md) - 4.3 [Confusion table](03-confusion-table.md) - 4.4 [Precision and Recall](04-precision-recall.md) - 4.5 [ROC Curves](05-roc.md) - 4.6 [ROC AUC](06-auc.md) - 4.7 [Cross-Validation](07-cross-validation.md) - 4.8 [Summary](08-summary.md) - 4.9 [Explore more](09-explore-more.md) - 4.10 [Homework](homework.md) ## Community notes Did you take notes? You can share them here (or in each unit separately) * [Some cross-validation methods](https://github.com/razekmaiden/ml_zoomcamp/blob/main/additional_topics/ML_ZOOMCAMP_CROSS_VALIDATION_METHODS.ipynb) * [Notes from Kwang Yang](https://www.kaggle.com/kwangyangchia/notebook-for-lesson-4-mle) * [Notes from Sebastián Ayala Ruano](https://github.com/sayalaruano/100DaysOfMLCode/blob/main/Classification/Notes/NotesDay14.md) * [Notes from Alvaro Navas](https://github.com/ziritrion/ml-zoomcamp/blob/main/notes/04_01_classification_eval_metrics.md) * [Notes from froukje](https://github.com/froukje/ml-zoomcamp/blob/main/week4/Lecture_4_metrics.ipynb) * [Notes from Hareesh Tummala](https://github.com/tummala-hareesh/ml_zoomcamp_ht/blob/main/notes/week-4-notes.md) * [Notes from Memoona Tahira](https://github.com/MemoonaTahira/MLZoomcamp2022/tree/main/Notes/Week_4%20-evaluation_metrics_for_ML_model) * [Notes from Peter Ernicke](https://knowmledge.com/category/courses/ml-zoomcamp/evaluation-metrics/) * [Notes from Kemal Dahha](https://github.com/kemaldahha/machine-learning-course/blob/main/week_4_notes.ipynb) * [Cohort|2025 notes by Nitin gupta](https://github.com/niting9881/ML-zoomcamp-local/blob/main/04-evaluation/README.md) * Add your notes here ================================================ FILE: 04-evaluation/homework.md ================================================ ## Homework * For 2025 cohort homework, check [the 2025 cohort folder](../cohorts/2025/04-evaluation/homework.md) * For 2024 cohort homework, check [the 2024 cohort folder](../cohorts/2024/04-evaluation/homework.md) * For 2023 cohort homework, check [the 2023 cohort folder](../cohorts/2023/04-evaluation/homework.md) * For 2022 cohort homework, check [the 2022 cohort folder](../cohorts/2022/04-evaluation/homework.md) * For 2021 cohort homework and solution, check [the 2021 cohort folder](../cohorts/2021/04-evaluation/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 4: Evaluation Metrics for Classification](./) * Previous: [Explore more](09-explore-more.md) ================================================ FILE: 04-evaluation/meta.csv ================================================ lesson,name,page_name,video,slides,notebook 1,Evaluation metrics: session overview,01-overview.md,https://www.youtube.com/watch?v=gmg5jw1bM8A,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification,notebook.ipynb 2,Accuracy and dummy model,02-accuracy.md,https://www.youtube.com/watch?v=FW_l7lB0HUI,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification,notebook.ipynb 3,Confusion table,03-confusion-table.md,https://www.youtube.com/watch?v=Jt2dDLSlBng,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification,notebook.ipynb 4,Precision and Recall,04-precision-recall.md,https://www.youtube.com/watch?v=gRLP_mlglMM,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification,notebook.ipynb 5,ROC Curves,05-roc.md,https://www.youtube.com/watch?v=dnBZLk53sQI,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification,notebook.ipynb 6,ROC AUC,06-auc.md,https://www.youtube.com/watch?v=hvIQPAwkVZo,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification,notebook.ipynb 7,Cross-Validation,07-cross-validation.md,https://www.youtube.com/watch?v=BIIZaVtUbf4,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification,notebook.ipynb 8,Summary,08-summary.md,https://www.youtube.com/watch?v=-v8XEQ2AHvQ,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-4-evaluation-metrics-for-classification,notebook.ipynb 9,Explore more,09-explore-more.md,,,notebook.ipynb 10,Homework,homework.md,,,notebook.ipynb ================================================ FILE: 04-evaluation/meta.json ================================================ { "data": "meta.csv", "session": 4, "name": "Evaluation Metrics for Classification" } ================================================ FILE: 04-evaluation/notebook.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "id": "3fb05700", "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "IPython.notebook.set_autosave_interval(0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Autosave disabled\n" ] } ], "source": [ "%autosave 0" ] }, { "cell_type": "markdown", "id": "464b9b4a", "metadata": {}, "source": [ "# 4. Evaluation Metrics for Classification\n", "\n", "In the previous session we trained a model for predicting churn. How do we know if it's good?\n", "\n", "\n", "## 4.1 Evaluation metrics: session overview \n", "\n", "* Dataset: https://www.kaggle.com/blastchar/telco-customer-churn\n", "* https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-03-churn-prediction/WA_Fn-UseC_-Telco-Customer-Churn.csv\n", "\n", "\n", "*Metric* - function that compares the predictions with the actual values and outputs a single number that tells how good the predictions are" ] }, { "cell_type": "code", "execution_count": 3, "id": "b3ff7c44", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 4, "id": "ff66e768", "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.linear_model import LogisticRegression" ] }, { "cell_type": "code", "execution_count": 5, "id": "81ee3ecc", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('data-week-3.csv')\n", "\n", "df.columns = df.columns.str.lower().str.replace(' ', '_')\n", "\n", "categorical_columns = list(df.dtypes[df.dtypes == 'object'].index)\n", "\n", "for c in categorical_columns:\n", " df[c] = df[c].str.lower().str.replace(' ', '_')\n", "\n", "df.totalcharges = pd.to_numeric(df.totalcharges, errors='coerce')\n", "df.totalcharges = df.totalcharges.fillna(0)\n", "\n", "df.churn = (df.churn == 'yes').astype(int)" ] }, { "cell_type": "code", "execution_count": 6, "id": "0b1903b3", "metadata": {}, "outputs": [], "source": [ "df_full_train, df_test = train_test_split(df, test_size=0.2, random_state=1)\n", "df_train, df_val = train_test_split(df_full_train, test_size=0.25, random_state=1)\n", "\n", "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)\n", "\n", "y_train = df_train.churn.values\n", "y_val = df_val.churn.values\n", "y_test = df_test.churn.values\n", "\n", "del df_train['churn']\n", "del df_val['churn']\n", "del df_test['churn']" ] }, { "cell_type": "code", "execution_count": 7, "id": "ab4132a4", "metadata": {}, "outputs": [], "source": [ "numerical = ['tenure', 'monthlycharges', 'totalcharges']\n", "\n", "categorical = [\n", " 'gender',\n", " 'seniorcitizen',\n", " 'partner',\n", " 'dependents',\n", " 'phoneservice',\n", " 'multiplelines',\n", " 'internetservice',\n", " 'onlinesecurity',\n", " 'onlinebackup',\n", " 'deviceprotection',\n", " 'techsupport',\n", " 'streamingtv',\n", " 'streamingmovies',\n", " 'contract',\n", " 'paperlessbilling',\n", " 'paymentmethod',\n", "]" ] }, { "cell_type": "code", "execution_count": 8, "id": "cc4583b9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LogisticRegression()" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dv = DictVectorizer(sparse=False)\n", "\n", "train_dict = df_train[categorical + numerical].to_dict(orient='records')\n", "X_train = dv.fit_transform(train_dict)\n", "\n", "model = LogisticRegression()\n", "model.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 9, "id": "4ea51f38", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8034066713981547" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val_dict = df_val[categorical + numerical].to_dict(orient='records')\n", "X_val = dv.transform(val_dict)\n", "\n", "y_pred = model.predict_proba(X_val)[:, 1]\n", "churn_decision = (y_pred >= 0.5)\n", "(y_val == churn_decision).mean()" ] }, { "cell_type": "markdown", "id": "3d8a7559", "metadata": {}, "source": [ "## 4.2 Accuracy and dummy model\n", "\n", "* Evaluate the model on different thresholds\n", "* Check the accuracy of dummy baselines" ] }, { "cell_type": "code", "execution_count": 16, "id": "948eda88", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1409" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(y_val)" ] }, { "cell_type": "code", "execution_count": 19, "id": "fc59dff6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8034066713981547" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(y_val == churn_decision).mean()" ] }, { "cell_type": "code", "execution_count": 18, "id": "6bcb4def", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8034066713981547" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1132/ 1409" ] }, { "cell_type": "code", "execution_count": 24, "id": "adf1012b", "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import accuracy_score" ] }, { "cell_type": "code", "execution_count": 29, "id": "ffb75fc5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8034066713981547" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "accuracy_score(y_val, y_pred >= 0.5)" ] }, { "cell_type": "code", "execution_count": 30, "id": "27840301", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.00 0.274\n", "0.05 0.509\n", "0.10 0.591\n", "0.15 0.666\n", "0.20 0.710\n", "0.25 0.739\n", "0.30 0.760\n", "0.35 0.772\n", "0.40 0.785\n", "0.45 0.793\n", "0.50 0.803\n", "0.55 0.801\n", "0.60 0.795\n", "0.65 0.786\n", "0.70 0.766\n", "0.75 0.744\n", "0.80 0.735\n", "0.85 0.726\n", "0.90 0.726\n", "0.95 0.726\n", "1.00 0.726\n" ] } ], "source": [ "thresholds = np.linspace(0, 1, 21)\n", "\n", "scores = []\n", "\n", "for t in thresholds:\n", " score = accuracy_score(y_val, y_pred >= t)\n", " print('%.2f %.3f' % (t, score))\n", " scores.append(score)" ] }, { "cell_type": "code", "execution_count": 24, "id": "11f492a8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(thresholds, scores)" ] }, { "cell_type": "code", "execution_count": 34, "id": "174b048b", "metadata": {}, "outputs": [], "source": [ "from collections import Counter" ] }, { "cell_type": "code", "execution_count": 35, "id": "e0897055", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Counter({False: 1409})" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Counter(y_pred >= 1.0)" ] }, { "cell_type": "code", "execution_count": 39, "id": "8b8ece7e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7260468417317246" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 - y_val.mean()" ] }, { "cell_type": "markdown", "id": "b1600912", "metadata": {}, "source": [ "## 4.3 Confusion table\n", "\n", "* Different types of errors and correct decisions\n", "* Arranging them in a table" ] }, { "cell_type": "code", "execution_count": 25, "id": "501711e7", "metadata": {}, "outputs": [], "source": [ "actual_positive = (y_val == 1)\n", "actual_negative = (y_val == 0)" ] }, { "cell_type": "code", "execution_count": 26, "id": "d898b9ff", "metadata": {}, "outputs": [], "source": [ "t = 0.5\n", "predict_positive = (y_pred >= t)\n", "predict_negative = (y_pred < t)" ] }, { "cell_type": "code", "execution_count": 27, "id": "ce46cfef", "metadata": {}, "outputs": [], "source": [ "tp = (predict_positive & actual_positive).sum()\n", "tn = (predict_negative & actual_negative).sum()\n", "\n", "fp = (predict_positive & actual_negative).sum()\n", "fn = (predict_negative & actual_positive).sum()" ] }, { "cell_type": "code", "execution_count": 28, "id": "778f4ef6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[922, 101],\n", " [176, 210]])" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "confusion_matrix = np.array([\n", " [tn, fp],\n", " [fn, tp]\n", "])\n", "confusion_matrix" ] }, { "cell_type": "code", "execution_count": 29, "id": "4a7aab64", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0.65, 0.07],\n", " [0.12, 0.15]])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(confusion_matrix / confusion_matrix.sum()).round(2)" ] }, { "cell_type": "markdown", "id": "a37b1d4c", "metadata": {}, "source": [ "## 4.4 Precision and Recall" ] }, { "cell_type": "code", "execution_count": 30, "id": "7dfcf399", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6752411575562701" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = tp / (tp + fp)\n", "p" ] }, { "cell_type": "code", "execution_count": 31, "id": "4e180eec", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5440414507772021" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r = tp / (tp + fn)\n", "r" ] }, { "cell_type": "markdown", "id": "5088b30e", "metadata": {}, "source": [ "## 4.5 ROC Curves\n", "\n", "### TPR and FRP" ] }, { "cell_type": "code", "execution_count": 32, "id": "f8b9350d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5440414507772021" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tpr = tp / (tp + fn)\n", "tpr" ] }, { "cell_type": "code", "execution_count": 33, "id": "0a8b418e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.09872922776148582" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fpr = fp / (fp + tn)\n", "fpr" ] }, { "cell_type": "code", "execution_count": 34, "id": "fc8e1021", "metadata": {}, "outputs": [], "source": [ "scores = []\n", "\n", "thresholds = np.linspace(0, 1, 101)\n", "\n", "for t in thresholds:\n", " actual_positive = (y_val == 1)\n", " actual_negative = (y_val == 0)\n", " \n", " predict_positive = (y_pred >= t)\n", " predict_negative = (y_pred < t)\n", "\n", " tp = (predict_positive & actual_positive).sum()\n", " tn = (predict_negative & actual_negative).sum()\n", "\n", " fp = (predict_positive & actual_negative).sum()\n", " fn = (predict_negative & actual_positive).sum()\n", " \n", " scores.append((t, tp, fp, fn, tn))" ] }, { "cell_type": "code", "execution_count": 35, "id": "76beba9a", "metadata": {}, "outputs": [], "source": [ "columns = ['threshold', 'tp', 'fp', 'fn', 'tn']\n", "df_scores = pd.DataFrame(scores, columns=columns)\n", "\n", "df_scores['tpr'] = df_scores.tp / (df_scores.tp + df_scores.fn)\n", "df_scores['fpr'] = df_scores.fp / (df_scores.fp + df_scores.tn)" ] }, { "cell_type": "code", "execution_count": 36, "id": "e125f2fe", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(df_scores.threshold, df_scores['tpr'], label='TPR')\n", "plt.plot(df_scores.threshold, df_scores['fpr'], label='FPR')\n", "plt.legend()" ] }, { "cell_type": "markdown", "id": "f09dc644", "metadata": {}, "source": [ "### Random model" ] }, { "cell_type": "code", "execution_count": 37, "id": "b3a4b466", "metadata": {}, "outputs": [], "source": [ "np.random.seed(1)\n", "y_rand = np.random.uniform(0, 1, size=len(y_val))" ] }, { "cell_type": "code", "execution_count": 38, "id": "c6c24296", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5017743080198722" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "((y_rand >= 0.5) == y_val).mean()" ] }, { "cell_type": "code", "execution_count": 47, "id": "ba13786f", "metadata": {}, "outputs": [], "source": [ "def tpr_fpr_dataframe(y_val, y_pred):\n", " scores = []\n", "\n", " thresholds = np.linspace(0, 1, 101)\n", "\n", " for t in thresholds:\n", " actual_positive = (y_val == 1)\n", " actual_negative = (y_val == 0)\n", "\n", " predict_positive = (y_pred >= t)\n", " predict_negative = (y_pred < t)\n", "\n", " tp = (predict_positive & actual_positive).sum()\n", " tn = (predict_negative & actual_negative).sum()\n", "\n", " fp = (predict_positive & actual_negative).sum()\n", " fn = (predict_negative & actual_positive).sum()\n", "\n", " scores.append((t, tp, fp, fn, tn))\n", "\n", " columns = ['threshold', 'tp', 'fp', 'fn', 'tn']\n", " df_scores = pd.DataFrame(scores, columns=columns)\n", "\n", " df_scores['tpr'] = df_scores.tp / (df_scores.tp + df_scores.fn)\n", " df_scores['fpr'] = df_scores.fp / (df_scores.fp + df_scores.tn)\n", " \n", " return df_scores" ] }, { "cell_type": "code", "execution_count": 40, "id": "f7af4bd1", "metadata": {}, "outputs": [], "source": [ "df_rand = tpr_fpr_dataframe(y_val, y_rand)" ] }, { "cell_type": "code", "execution_count": 41, "id": "6ea930c8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(df_rand.threshold, df_rand['tpr'], label='TPR')\n", "plt.plot(df_rand.threshold, df_rand['fpr'], label='FPR')\n", "plt.legend()" ] }, { "cell_type": "markdown", "id": "1958bf4d", "metadata": {}, "source": [ "### Ideal model" ] }, { "cell_type": "code", "execution_count": 42, "id": "b56b21df", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1023, 386)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "num_neg = (y_val == 0).sum()\n", "num_pos = (y_val == 1).sum()\n", "num_neg, num_pos" ] }, { "cell_type": "code", "execution_count": 43, "id": "7f051585", "metadata": {}, "outputs": [], "source": [ "\n", "y_ideal = np.repeat([0, 1], [num_neg, num_pos])\n", "y_ideal\n", "\n", "y_ideal_pred = np.linspace(0, 1, len(y_val))" ] }, { "cell_type": "code", "execution_count": 44, "id": "f7f9c21f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7260468417317246" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 - y_val.mean()" ] }, { "cell_type": "code", "execution_count": 45, "id": "c85adf63", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "accuracy_score(y_ideal, y_ideal_pred >= 0.726)" ] }, { "cell_type": "code", "execution_count": 51, "id": "b30738fe", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
thresholdtpfpfntntprfpr
00.03861023001.0000001.000000
100.138688201411.0000000.862170
200.238674102821.0000000.724340
300.338660004231.0000000.586510
400.438645905641.0000000.448680
500.538631907041.0000000.311828
600.638617808451.0000000.173998
700.73863709861.0000000.036168
800.8282010410230.7305700.000000
900.9141024510230.3652850.000000
1001.01038510230.0025910.000000
\n", "
" ], "text/plain": [ " threshold tp fp fn tn tpr fpr\n", "0 0.0 386 1023 0 0 1.000000 1.000000\n", "10 0.1 386 882 0 141 1.000000 0.862170\n", "20 0.2 386 741 0 282 1.000000 0.724340\n", "30 0.3 386 600 0 423 1.000000 0.586510\n", "40 0.4 386 459 0 564 1.000000 0.448680\n", "50 0.5 386 319 0 704 1.000000 0.311828\n", "60 0.6 386 178 0 845 1.000000 0.173998\n", "70 0.7 386 37 0 986 1.000000 0.036168\n", "80 0.8 282 0 104 1023 0.730570 0.000000\n", "90 0.9 141 0 245 1023 0.365285 0.000000\n", "100 1.0 1 0 385 1023 0.002591 0.000000" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_ideal = tpr_fpr_dataframe(y_ideal, y_ideal_pred)\n", "df_ideal[::10]" ] }, { "cell_type": "code", "execution_count": 52, "id": "60cb9f81", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(df_ideal.threshold, df_ideal['tpr'], label='TPR')\n", "plt.plot(df_ideal.threshold, df_ideal['fpr'], label='FPR')\n", "plt.legend()" ] }, { "cell_type": "markdown", "id": "434d98c9", "metadata": {}, "source": [ "### Putting everything together" ] }, { "cell_type": "code", "execution_count": 53, "id": "d7a28486", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABLNUlEQVR4nO3dd3xN9//A8dcnm4jYQkRi7wgihNp7htorMapUUdVqKb9SHWip0iq1aWvvldqhFA2VmrVjj9SOmfH5/XES39CQSO69556bz/PRPJJ77uk975Pxdu7nvD/vj5BSoiiKohifnd4BKIqiKKahErqiKIqNUAldURTFRqiEriiKYiNUQlcURbERDnodOFeuXNLHx0evwyuKohjSgQMH/pVS5k7uOd0Suo+PD/v379fr8IqiKIYkhDj/sufUkIuiKIqNUAldURTFRqiEriiKYiNUQlcURbERKqEriqLYiBQTuhBithDihhDiyEueF0KIyUKI00KIQ0KIiqYPU1EURUlJaq7Q5wKNX/F8E6BYwsfbwNT0h6UoiqK8rhTr0KWUO4UQPq/YJQiYL7U+vHuFENmEEPmklFdNFWRSEyaswv38av4sEkTuvHnJnj07dkKY41CKkuG5uTjSpWpBMjvpNmVFeQ2m+Cl5AheTPL6UsO0/CV0I8TbaVTwFCxZM08GcLmzmrRwryB51gyFXehPHv2jpXCT+R5IvFEVJBylh9d+XmRlcGQ93F73DUVJg0X92pZTTgekA/v7+aVpZo0ijKXwyphBf1fucSlnvMS2qMoeO/sPRo0e5cOHCs/2yZMlC8+bNad++PU2aNMHFRf0yKsrr2vbPdQYsOEjQlF3MDK5MuQLueoekvIIpqlwuA15JHhdI2GYWxYrBmF0fsi/HWHweHmJs+fNsWLWU8+fPc+/ePfbu3cusWbPo1KkTW7Zs4c033yR37tx07dqVNWvW8PjxY3OFpig2p27JvCzvVw0HOzva/fQHZ6Ki9Q5JeQVTJPQ1QHBCtUtV4K65xs8BfHzA3h7W3ngHWn4PZ7bB3OYQHYWbmxtVqlShZ8+eTJ8+natXr7J582Y6duxIaGgoQUFB5M2bl+DgYNatW8eTJ0/MFaai2IySHllZ0a8a8RLm7D6ndzjKK6SmbHEhsAcoIYS4JIToJYToK4Tom7DLBuAscBqYAfQzW7SAo6OW1E+dAioGQ4df4MZxmNUAbp55bl8HBwfq16/PjBkzuHbtGr/99htt2rRh7dq1tGjRAg8PDxYvXmzOcBXFJuTN6kJQ+fys+Osy9x7H6B2O8hIpJnQpZScpZT4ppaOUsoCUcpaUcpqUclrC81JK+a6UsoiUspyU0uwtFIsVS0joACWbQcgaeHwXZjWESweS/X8cHR1p1KgRs2fP5vr166xfv55SpUrRsWNHRo8ejVosW1FeLaSaDw+fxrF0/yW9Q1FewpAzRYsVg9OntTvwAHgFQK/N4OQK85rDyY2v/P+dnJxo2rQp27dvJzg4mJEjR9K5c2cOHDjAw4cPzX8CimJAZT3dqeSdnZ/3RBIfry6ArJEhE3rRonD/Pty4kWRjrqJaUs9VDBZ2gr/mp/g6zs7OzJ07lzFjxrBo0SL8/f3JkiULRYsWpX///uzcuZO4uDjznYiiGExINR8ibz5kx6kovUNRkmHIhF6smPb52bBLIre80H09FK4NawZA2Ngkl/HJE0IwdOhQzp49y7Jlyxg1ahRly5Zl9uzZ1KpVCy8vL7788kvu379vlnNRFCNpXMaD3G7OzPsjUu9QlGQYOqGfPp3Mk85u0Hkx+HWBsDGwdiDExab4moUKFaJNmzZ8+umnrFq1ihs3brBo0SL8/PwYMWIEPj4+jBkzhpMnT6qrdiXDcnKwo0uVgoSdiCLy3wd6h6O8wJAJ3dtbK138zxV6IntHCJoCNYdoQy+LOsPT1/vly5IlCx06dGDDhg38+eefVK1alU8++YQSJUrg6upK+fLlqVWrFrVq1aJ27drMmjUr/SemKAbQuUpBHO0F8/e8dCU0RSeGTOiOjlCo0CsSOoAQUHcENJ8Ipzc/q1VPi8qVK7N+/XqOHDnCnDlz6N+/PwUKFMDOzg47Oztu3rzJW2+9xXvvvUdsbMrvBhTFyPK4udCkbD6W7r/Igyfq992aGLbjTmKlS4r8e0IWD1jWU6tV77occhZJ0zHLlClDmTJl/rM9Li6Ojz76iG+//ZaTJ0+yaNEi3N3VFGnFdoVU82HN31dYcfAy3ap66x2OksCQV+igVbqcOpXiPU9NyabP16pfTr5WPa3s7e2ZMGEC06dPZ8uWLVSvXp1z59SMOsV2VSyYjbKeWZn/R6Saw2FFDJvQixWD6Gi4fj2V/0PSWvW5Kdeqp0Xv3r3ZuHEjly9fJiAggN27d5v8GIpiDYQQhAT6cOpGNHvO3NQ7HCWBoRM6pHLYJVEaatVfV926ddm3bx/Zs2enbt26zJgxQ13BKDapRfn8ZM/syFxVwmg1DJvQixbVPr/yxmhy0lCr/rqKFy/O3r17qVmzJm+//TbNmjXj8mWzNaBUFF24ONrTMaAgW45f59JtNcPaGhg2ofv4gINDGhI6/K9WvXzn16pVfx05cuRg48aNTJ48mbCwMMqUKcP8+fPV1bpiU7pW9UYCi/68mOK+ivkZNqE7OGili6815JKUvSO0+jFJrXqn165VT4mdnR0DBgzg0KFDlC1blpCQEFq1asW1a9dMehxF0YtntkzULp6bJfsvEhsXr3c4GZ5hEzr8r9IlzZ6rVd+Srlr1VylatCg7duxgwoQJbNq0iTJlyvDll1+yfv16IiMjiY9XfwiKcXUMKMiN+0/Y9s+NlHdWzMrQCT2xjW66RzH8e0KHX1/aV90U7O3tGTx4MAcPHqRUqVKMGDGC5s2bU6hQITw9PRkwYAC7du1SyV0xnLol85DHzZlF4WrYRW+GTujFi8ODB3DliglerGRTCFlrtlr1Z4cpWZJdu3Zx69Ytdu3axbRp06hWrRozZ86kRo0aBAQEcPOmKgNTjMPR3o52/gUIO3GDK3ce6R1OhmbohO7rq33++28TvaBXZbPXqifKnj071atXp0+fPixfvpwbN24wc+ZMjhw5Qv369bl165bZjq0optaxckHiJSzZr67S9WTohF6+vPb54EETvmiuovDWFshV3Gy16slxc3OjV69erF69muPHj1O/fn1u375tkWMrSnp55chMjWK5WBJ+kTi1+IVuDJ3Qs2aFIkUgIsLEL5wlj1arXqSO2WrVX6ZRo0asXLmSo0ePUrduXVW/rhhGx8oFuXL3MTtOqpujejF0QgeoUMHEV+iJnLNAp0Wv3VfdFJo0acLq1as5ffo0AQEBHDhgnvF8RTGlBqXzktvNWbXV1ZHhE7qfH5w5A3fvmuHFTdBXPa0aN27M7t27cXBwoEaNGixcuFBNSlKsmpODHZ0DtMUvzqnFL3Rh+IReoYL2+dAhMx3AhH3VX5evry9//vkn5cuXp3PnzgQGBrJx40aV2BWr1aVKQRzsBPP3ROodSoZk+ITu56d9NsuwS1IWqFVPTt68edm5cyfTp0/n6tWrNG7cmAYNGvDggboCUqxPnqwuNC2Xj2X7L6nFL3Rg+ISeLx/kyWOGG6PJsVCt+oscHR3p3bs3p06dYtKkSWzbto3g4GA1CUmxSiHVvLn/JJYVB9UNfUszfEIXwow3RpNjwVr1Fzk5OTFw4EAmTJjAihUr+OSTTyx2bEVJrYoFs6vFL3Ri+IQO2rDL0aPw9KmFDmiBvuqvMmjQIPr27cu4ceOYOXOmRY+tKClRi1/oxyYSeoUKEBMDx45Z8KAv9lXf8Y3FatWFEEyePJmGDRvSu3dvmjVrxv79+y1ybEVJjRbl85PD1UktfmFhNpHQE2+MWmQcPanEvuq+HWD7F7BlpMWSuqOjIytXruSrr75i7969VK5cmVatWnHxopp6rejPxdGejpW91OIXFmYTCb1YMXB1teA4elL2jtBqmlYFs3sSbBgCFrpZmTlzZoYNG8a5c+f44osv2LJlC2XLlmXOnDlq7FLRXZeq3gD8sveCzpFkHDaR0O3stL4uuiT0xACafQvVBkD4DFjVF2ItNaAPWbNmZfjw4Rw6dIgKFSrQs2dPWrZsycOH6spI0Y9ntkw0LO3BovALPI6J0zucDMEmEjpowy4RERa7OP4vIaDB59okpEOLYUE7eHzPoiEULlyYbdu2MXHiRNavX09ISIgqbVR0FVLNhzsPY1gTYYoe10pKUpXQhRCNhRAnhBCnhRBDk3m+oBBiuxDioBDikBCiqelDfbWKFeH+/XQsSWcKQmhtAoKmwLnfYW5TuG/Z5ebs7OwYNGgQ33zzDcuWLeP//u//LHp8RUmqauEclMjrxlxVwmgRKSZ0IYQ9MAVoApQGOgkhSr+w2whgiZSyAtAR+NHUgaakenXt886dlj5yMip0hc5L4OZZmNkAok5aPITBgwfTu3dvvvrqK+bOnWvx4ysKaBVZwdW8OXb1HgfOq3bQ5paaK/QA4LSU8qyU8imwCAh6YR8JZE342h2w+PurEiUgb17YscPSR36JYvWh+zqIfQSzG8KFvRY9vBCCKVOmUK9ePd5++23mzZtn0eMrSqLWFTzJ6uKgShgtIDUJ3RNIWgt3KWFbUqOArkKIS8AGYEByLySEeFsIsV8IsT8qyrQNroSAmjW1hG417+w8K2oTkDLlgPlBcHytRQ/v6OjI8uXLqVGjBt27d2fYsGFqTF2xuMxODrT39+K3I9e4fu+x3uHYNFPdFO0EzJVSFgCaAj8LIf7z2lLK6VJKfymlf+7cuU106P+pWRMuXoTISJO/dNrlKKQldY9ysLgb/DnDood3d3fnt99+4+2332bs2LEEBQWxcOFCDh06xJMnTywai5JxdQv0Jk5Kft2nShjNKTUJ/TLgleRxgYRtSfUClgBIKfcALkAuUwT4OmrV0j5bzbBLItecELwGSjSBDR/CllEWfRvh6OjItGnTmDhxIps2baJz586UL1+eXLlysWvXLovFoWRc3jldqVMiDwv2XeBprHqXaC6pSejhQDEhRCEhhBPaTc81L+xzAagHIIQohZbQLdM0PIkyZSBHDitM6ABOmaH9z1CpB+yaCCv7WLRWXQjBoEGDuHfvHocOHWLhwoV4eHjQsWNH/v33X4vFoWRcIdV8+Df6CaFHruodis1KMaFLKWOB/sBG4DhaNctRIcRoIUTLhN0+AHoLIf4GFgLdpQ41SnZ2/xtHt0r2DtpCGTrWqjs7O1OuXDk6duzIkiVLiIqKonv37mpsXTG7GkVzUSiXq7o5akapGkOXUm6QUhaXUhaRUn6ZsO1TKeWahK+PSSmrSynLSyn9pJSbzBn0q9SqBefOaWPpVulZrfqP/6tVv6fPFUuFChX49ttvWb9+PRMnTtQlBiXjsLMTBAd6c/DCHQ5duqN3ODbJZmaKJrLacfQXVejyv1r1WQ0g6oQuYfTr148333yToUOHMn36dDX5QzGrtpUK4Opkz7w/1ELS5mBzCd3XF9zdDZDQQatV77EeYh9rKyBZuFYdtLH1WbNmUatWLfr06UPjxo1Vx0bFbNxcHHmzYgHWHrrCzWhVZWVqNpfQ7e2hRg2DJHSA/BW0ssbMOXWpVQfIli0bmzZtYsqUKezatYuyZcuq6hfFbEKqefM0Np5F4erCwdRsLqGDNuxy6hRcMUo/oBdr1fdNt3gIdnZ29OvXj8OHD+Ph4UGrVq04c8YyC2ErGUvRPG5UL5qTX/eeJzZO3Yw3JZtM6A0aaJ/Xr9c3jteStFY9dAhsHqlL68jChQuzfv16pJQ0b96c27dV/w3F9EICfbhy9zFbjl/XOxSbYpMJ3dcXvL1h9Wq9I3lNibXq/j1h93cW76ueqGjRoqxcuZIzZ87Qtm1bnlpssVYlo6hXKi+e2TKpEkYTs8mELgQEBcGWLRAdrXc0r8neQVsso+7/6VarDlCzZk1mzpzJtm3bqFq1KocPH7Z4DIrtsrcTdAv0Zu/ZW/xzzfK/37bKJhM6QKtW8OQJbNKtIj4dhICaH2q16pG7dKtVDw4OZuXKlVy+fJlKlSrx1Vdf8ejRI4vHodimDv5eODvYqRJGE7LZhF6jBmTPbsBhl6QqdNEWodaxVr1Vq1YcOXKE1q1bM3z4cPLkyUPXrl1Zs2YNjx+rznlK2mV3daKVnyerDl7m7sMYvcOxCTab0B0coFkzWLcOYmP1jiYditaHHhsg9oluteq5c+dm8eLFbNu2jY4dOxIaGkpQUBB58+YlODiYdevWqc6NSpoEV/PmUUwcSw+oEkZTsNmEDto4+q1bsHu33pGkU34/eGszuObSrVYdoE6dOsyYMYNr164RGhpK27ZtWbt2LS1atCBv3rx0796dDRs2qJuoSqqVye9OZZ/szN9znvh4NUs5vWw6oTdqBE5OBh92SZTdB3pu0q2velKOjo40btyYWbNmcf36ddavX0/r1q1ZtWoVzZo1w8PDg169erFx40ZiDf32SLGEkGo+XLj1kLCTN/QOxfBsOqG7uUG9elpCt4kWJS/2VdepVj0pJycnmjZtypw5c7h+/Tpr166lefPmLF26lMaNG1OnTh3Vnld5pUZlPMib1Zm56uZoutl0Qgdt2OXsWThwQO9ITCRpX3Uda9WT4+zsTPPmzZk/fz43btxg5syZ7N+/n4CAAI4dO6Z3eIqVcrS3o0sVb3aejOJMlNHqjK2LzSf0Dh20apdRo/SOxISsoK96SlxcXOjVqxdhYWE8fPiQwMBApk6dqq7WlWR1CiiIk70dP+9RV+npYfMJPVs2+PhjrQ2A4W+OJvViX/U5+vVVf5UqVaoQHh5OiRIl6NevHx4eHjRq1IgtW7boHZpiRXK7OdPMNx/LDlwi+om675JWNp/QAfr3Bw8PGDbMRsbSk0rsq35L377qr+Ll5cW+ffs4ePAgH330ESdOnKBRo0ZMmjRJ9V9XngkO9Cb6SSwr/rqkdyiGlSESuqsrjBgBv/9u0JmjKbGCvuopEULg5+fHV199xdGjR2nZsiWDBg2iX79+xMSoSSUKVCiYnfIF3Jn3R6T6hz6NMkRCB+jdG3x84JNPdC8MMY+kfdXntYRjL67jbT1cXV1Zvnw5Q4cOZdq0aXTq1En9ASuAVsJ4JuoBu0/f1DsUQ8owCd3JCT77DP76C+bP1zsaM0nsq57PF5YE69JXPbXs7OwYM2YM48aNY/ny5Xz//fd6h6RYgWa++cjp6qS6MKZRhknoAF27QvXq8P77cNX67h+ahpX0VU+tIUOG0KJFCz788EP279+vdziKzpwd7OkUUJCt/1zn4q2HeodjOBkqodvZwezZ8PgxvPOODd4gTZRcX/U46xynFkIwd+5cPDw86NChA3fv3tU7JEVnXaoWxE4IftmrShhfV4ZK6ADFi8Po0drs0SVL9I7GjJ71VU+oVV/cDWKssztijhw5WLhwIefPn6dp06bs3Wt9N3UVy8nnnonGZTxYFH6RR0/j9A7HUDJcQgdtyKVyZa2c8YYtt49IrFVvOh5OhsKC9vDEOmfiVa9enTlz5nDy5EkCAwNp2rQp4eHheoel6CQ40Ju7j2JY8/dlvUMxlAyZ0B0ctKGX6Gjo1Mng7XVTI6A3tJoKkb/DL2/CI+tcJ7Rbt26cO3eOsWPH8ueffxIQEECLFi04YDN9G5TUCiiUg5Iebsz947yqgHoNGTKhA5QtC1OnwrZtWimjzfPrDG3nwOW/YHZjuGudkzeyZMnCxx9/zLlz5/jqq6/YvXs3/v7+tGzZkoMHD+odnmIhQgi6V/Ph+NV7hEda5wWINcqwCR2ge3ft5ug338DSpXpHYwFlWkHX5XDvCsxsANeP6h3RS7m5uTFs2DAiIyP5/PPP+f3336lYsSKtW7cmPDxcXbVlAEF+nrhncmSeKmFMtQyd0AG++w6qVoUePeCE9c2aN73CtaBHKCC1K/VzO/WO6JWyZs3KiBEjiIyMZNSoUWzfvp2AgACKFy/O8OHDOXnypN4hKmaSycmeDpW9+O3oNa7dtc4b+tYmwyd0JydYtkwbVx88WO9oLMSjrDYBKWt++KUNHF6md0Qpcnd3Z+TIkURGRjJjxgx8fHwYO3Ysfn5+aozdhnWt4k28lPy6T5UwpkaGT+gAnp5ar5cNG2y010tysnlBz9/A0x+W94I/ftA7olTJli0bb731Fps3byYyMpLcuXPTokULLl2yznsCSvoUzJmZeiXzsPDPCzyJVSWMKUlVQhdCNBZCnBBCnBZCDH3JPu2FEMeEEEeFEAtMG6b5DRgAhQrBBx9AXEb5vcmUHbqthNJBsGk4/DbMqmeVvsjLy4t169YRHR1NixYtiI62zpJMJX1Cqvnwb/RTNhy21endppNiQhdC2ANTgCZAaaCTEKL0C/sUA4YB1aWUZYBBpg/VvJyd4euv4cgRraQxw3B0gbZzoco7sPdHWNbDaicgJadcuXIsXryYQ4cO0aFDBx49eqR3SIqJVS+Si8K5XdUSdamQmiv0AOC0lPKslPIpsAgIemGf3sAUKeVtACmlIafrtGmj9XoZMQLu39c7Gguys4PGY6DhF3BslVXXqienSZMm/Pjjj4SGhlKnTh2uXbumd0iKCdnZCUICffj74h0iLt7ROxyrlpqE7glcTPL4UsK2pIoDxYUQu4UQe4UQjZN7ISHE20KI/UKI/VFRUWmL2IyEgIkTtdmj332ndzQWJgRUGwBtZsHFP626Vj05ffr0Yfny5Rw+fJiAgAD+/vtvvUNSTKhNpQJkcXZgviphfCVT3RR1AIoBtYFOwAwhRLYXd5JSTpdS+ksp/XPnzm2iQ5tW5crQvLmW0DPkkGy5tklq1evDtSN6R5RqrVu3ZteuXcTHx1O9enXWrl2rd0iKiWRxdqBNRU/WHbrKv9FP9A7HaqUmoV8GvJI8LpCwLalLwBopZYyU8hxwEi3BG9Inn8CtWzBjht6R6ORZrbqAOU2svlY9qQoVKvDnn39SqlQpgoKCGD9+vJqEZCOCq/nwNC6ehfsu6B2K1UpNQg8HigkhCgkhnICOwIvL4axCuzpHCJELbQjmrOnCtKzAQKhTB8aPhycZ9WLAoyy8tRmyesLPbxqiVj1R/vz52bFjB23atGHIkCH07t2bWJtv2GP7iuTOQo1iufh13wVi4oxTjWVJKSZ0KWUs0B/YCBwHlkgpjwohRgshWibsthG4KYQ4BmwHhkgpDb2G1CefwJUrNry6UWq4F4CeoeAVkFCr/r1hmshnzpyZxYsXM3z4cGbNmkX37t2JyzD1qLYrJNCHa/ces+nodb1DsUpCr7ej/v7+0ppXqJESqlTRhl7++UebSZphxTyGlX20Cpgq70Cjr7TKGIMYM2YMn3zyCd26dWPOnDnY29vrHZKSRnHxktrjt5MvayaW9A3UOxxdCCEOSCn9k3vOOH+VFiaEdpV+5gz88ove0ejM0UXr1FjlHdg31XC16sOGDePzzz/n559/pnPnzqxfv57z51VbViOytxMEV/Xhz8hbHLtyT+9wrI5K6K/QsqU2nv7BB3A9o7/Ds7ODJmOh4ZeGrFUfMWIEn3/+OUuXLqV58+b4+PiQJ08e5s+frxK7wbTzL4CLox3z90TqHYrVUQn9FRLXIH3wQFvdSAGq9ddq1S+FG65WfcSIEdy8eZNdu3Yxbdo0ihcvTkhICK1atVKTkQwkW2YnWlfwZFXEZe48fKp3OFZFJfQUlCwJo0ZpHRmXGafQw7yeq1W37r7qL8qePTvVq1enT58+7Ny5kwkTJrBp0yZKly7NuHHjVD8YgwgO9OFxTDxL9l9MeecMRCX0VPjwQ6hUCd59F24aunbHhArV1Lo1giH6qifH3t6ewYMHExERQZUqVRg6dCiFChXim2++4cGDB3qHp7xCqXxZCSiUg/l7zhMXr4bMEqmEngqJa5DeugXDhukdjRXJWyahVt04fdWTU6JECUJDQ/njjz+oWLEiH330EYULF+bbb7/l4cOHeoenvET3aj5cuv2I7f8YsnWUWaiEnkq+vto4+qxZcOiQ3tFYEfcC2pV6gcqGq1V/UWBgIBs3bmT37t34+vrywQcfUKRIESZNmqS6OFqhhqXzks/dhXnq5ugzKqG/hv/7P3B316peDJqzzCNTdui6Akq3gk0jDNdX/UXVqlVj8+bN7Ny5k1KlSjFo0CCKFCnC999/ryYnWREHezu6VCnI76f+5fQNde8DVEJ/LTlywMiRsGULhIbqHY2VSaxVr9rPkLXqyalRowbbtm0jLCyM4sWLM3DgQD755BO9w1KS6BhQECd7VcKYSCX01/TOO1CsmHaVHhOjdzRW5llfdWPWqr9MrVq1CAsLo0+fPnz99deEqn/NrUauLM40L5+P5Qcucf+x+oNUCf01OTnBN99o7QAmTdI7GiuVWKtuwL7qrzJx4kR8fX0JDg7m8uUXG44qeulezYcHT+NYfsA2fs/SQyX0NGjZElq1gqFDYfNmvaOxUuXaQrcVhuyr/jKZMmVi8eLFPHr0iM6dO/P0qZrUYg18C2TDzysb8/ecJz6DlzCqhJ4GQmhdGEuVgvbt4eRJvSOyUs9q1RP6qp/doXdE6VayZEmmTp3Kzp078fDwoFevXmzcuFG1D9BZ92o+nP33Ab+f/lfvUHSlEnoaubnB2rVajXqLFnDb+EPF5vGsVt3T0LXqSXXr1o2NGzfSvHlzli5dSuPGjRk9erTeYWVoTcvlI1cW5wy/RJ1K6Ong4wMrV8K5c9pNUuUlEmvVDdhX/WUaNmzI/PnzuXHjBh07duSLL74gIiJC77AyLCcHOzoHeLHtxA0u3My4k8FUQk+nN97QWgLMn68lduUlMmV7vlZ90wjDJ3UAFxcXpkyZQs6cOenRowcxqvRJN12qemMvRIYuYVQJ3QSGDNGGXsaM0TsSK5dYqx7QB/b8AGvfg3jjT9TJkSMHU6dOJSIignHjxukdToaVN6sLjct6sGT/RR4+zZhLDqqEbgL580Pv3jB3Lpw/r3c0Vs7ODpqMgxofwF/ztJWQ4ox/Vdu6dWs6dOjA6NGj+e2339RNUp2EVPPh3uNYVh7MmGWlKqGbyMcfa9Uv6gItFYSAep9CvZFweCks7gZPjT/u+f3331OgQAGaNGlC7dq1CQsL0zukDMffOzul82Xl5z0Zc0UqldBNpEAB6NlTa951Sc1vSJ0ag6HpeDj5G8xvCQ+M3Zs4d+7cHDt2jMmTJ3Pq1Cnq1KnDgAEDMmRi0YsQgq5Vvfnn2n0OXryjdzgWpxK6CQ0dqvWk+uwzvSMxkIDe0OFnuHYYZjWAW8a+s+zi4sKAAQM4c+YM7733Hj/88APvvfeeSuoW1NIvP5md7Fn05wW9Q7E4ldBNyNsbBg2CmTNh2za9ozGQUi0geDU8vKkl9SsH9Y4o3TJlysTEiRMZPHgw33//Pe+//75K6haSxdmBFr75Wfv31QzX30UldBMbPVpr3vXWW9papEoqFawKvTaDQyaY0wxOb9E7onQTQjB+/Hjee+89Jk2axDvvvKPKGi2kU5WCPIqJY3XEFb1DsSiV0E0sUyZtHP3cORg+XO9oDCZ3cW1Wac7CsKADRCzQO6J0E0IwceJEhg4dyk8//USTJk24raYVm135Au6U9HBjYQYbdlEJ3Qxq1NBWN5o8GXbv1jsag3HzgO4bwOcNWPUO7PzG8BOQhBCMGTOGOXPmsHPnTgIDAzlz5ozeYdk0IQSdqxTk6JV7HL50V+9wLEYldDMZM0YbU+/QQVW9vDaXrNB5Kfh2gG1fwLr3Ic74E0W6d+/Oli1biIqKomXLlmohajML8vPExdGOheEZ5ypdJXQzyZIF1qyB+/ehaVO4m3EuEkzDwQla/wRvvA8H5sDirjZRq16zZk0WL17M8ePHGThwoN7h2DT3TI40K5ef1QcvZ5iboyqhm1G5crB8ORw/Dm3bgmqf/ZqEgPqj/lerPq+F4WvVAerXr8/w4cOZPXs2v/zyi97h2LTgQO8MtfiFSuhmVr++Vsa4ZYs28UitMZwGibXq14/YRK06wMiRI6lRowZ9+/blxIkTeodjs8p7ZazFL1RCt4CQEG1M/ddftXLG+Hi9IzIgG6tVd3BwYMGCBTg7O/Pee+/pHY5NC6nmnWEWv1AJ3UKGDtVmkM6dC2+/rZJ6mrxYq37K2LXqBQoU4IMPPmDjxo0cOnRI73Bslrb4hVOGWPwiVQldCNFYCHFCCHFaCDH0Ffu1EUJIIYS/6UK0HZ9+CiNGaHXq/fsbvhpPH0lr1Rd2gIO/6h1Rurzzzju4uroyfvx4vUOxWc4O9nQOKJghFr9IMaELIeyBKUAToDTQSQhROpn93ID3gH2mDtKWjB4NH34IU6eqzoxplrRWfXU/Q9eqZ8+enbfeeouFCxdy8eJFvcOxWRll8YvUXKEHAKellGellE+BRUBQMvt9DowDHpswPpuT2GK3Y0cYNgwWLtQ7IoOyoVr1xD4vkyZN0jsUm5U3qwuNMsDiF6lJ6J5A0kuHSwnbnhFCVAS8pJTrX/VCQoi3hRD7hRD7o6KiXjtYW2Fnp42l16wJ3bvDjh16R2RQL9aqLzFmX3Vvb2/at2/P9OnTuasmLJhN94TFL1YdtN3+Lum+KSqEsAO+BVJcJllKOV1K6S+l9M+dO3d6D21ozs7aAtOFC0NQEPz9t94RGVTSWvUToYbtqz5kyBDu37+vxtLNKHHxi3l/RNps58vUJPTLgFeSxwUStiVyA8oCYUKISKAqsEbdGE1ZjhywcSO4uUGjRnD6tN4RGdiLfdVvR+od0WupUKEC7du354svvmDIkCHEqQkLJieEIKSaNyeu32ffuVt6h2MWqUno4UAxIUQhIYQT0BFYk/iklPKulDKXlNJHSukD7AVaSin3myViG1OwIGzerE04atAALmfMpRBNI2mt+kzj1ar/+uuvvPvuu4wfP54333yT6OhovUOyOUF+nmTL7Mg8Gy1hTDGhSyljgf7ARuA4sERKeVQIMVoI0dLcAWYEJUtCaCj8+682s1Ql9XQoWBV6bQIHF8PVqjs4OPDDDz/www8/sH79evz9/dm7d6/eYdkUF0d7OlT2YtOx61y580jvcEwuVWPoUsoNUsriUsoiUsovE7Z9KqVck8y+tdXV+evz94cNG7TOjDVrQmSk3hEZWO4SSfqqtzdcrfq7777Lpk2bePjwIdWrV2fo0KE8fqyKx0ylaxVvpJT8sve83qGYnJopakVq1ICtW+H2bXjjDVAtPtIhsVa9UA1D1qrXrVuXw4cP07NnT8aNG0ejRo2IjbXdcjtL8sqRmXql8rIo/CKPY2zrXoVK6FYmIADCwiAmBqpXVyWN6WLwWnV3d3dmzJjB7Nmz2blzJyNHjtQ7JJvRvZoPtx48Zf2hq3qHYlIqoVshX19tpaNcubQx9enT9Y7IwGygr3qPHj3o1asXY8aMYdOmTXqHYxOqFclJ0TxZmLfHtkoYVUK3UkWLwt69WkLv0wfee0819EqzZPuqG6vz3uTJkyldujTdunXj6lXbuqrUgxCCkEBvDl26y8GLd/QOx2RUQrdi2bLBunUwaJC2Pmn37qCGUdPhub7qDQ3VVz1z5swsWbKE+/fv06VLF1WnbgJvViyAm7ODTXVhVAndytnbw7ffwhdfwM8/az1g1MpH6WDgvuqlS5dmypQpbN++nS+//FLvcAzP1dmBtv4FWH/4Kjfu20YVkUroBiAEDB8OEydqS9q9+aZ201RJIwP3Ve/evTtdu3bls88+IywsTO9wDK9bVW9i4iQL99lGp0uV0A1k0CCt7e769TB4sN7RGJxB+6oLIfjxxx8pWrQonTt3JiM3uTOFwrmzUKt4bn7dd56nsca/SaUSusH07QsffAA//ADTpukdjcG92Fd9hzFq1d3c3FiyZAm3bt2iU6dOatJROnWv5sON+0/YePSa3qGkm0roBjRuHDRtCgMGwPbtekdjcElr1bd/AesGGaJWvXz58kyfPp2tW7fSpk0bnjx5ondIhlWreG68c2a2if4uKqEbkL29tjBG8eLQsiV88w2ov+d0eK5Wfa5hatWDg4OZPn06GzZsoG3btiqpp5GdnaBbVW/2n7/NkcvG7kevErpBZc0Kv/0GtWvDRx9BmTKwapUhRgys04u16r+2gyf39Y4qRb1792batGmsW7eONm3aqA6NadTO34tMjvaGX6JOJXQD8/KCtWu1nurOztC6NdSrB2oB+XQI6A1tZsKFPTA/CB5af9/sPn36MG3aNEJDQ3njjTfU2qRp4J7JkdYVPVkdcYXbD4xbF6wSug1o2FBb8WjKFC2ZV6gA77wDD61/1MA6lWv7v8Uy5rWA+9f1jihFffr0Yd26dZw9e5aAgAD+/PNPvUMynJBAH57ExrMo3Lj/IKqEbiMcHKBfPzh1CgYOhJ9+0ro3qou1NCrZDDovhltntQlI/1r/clJNmjRhz549uLi40KBBA3Wl/ppKeLgRWDgnv+w9T1y8MccuhV6Nafz9/eX+/c+3TY+JieHSpUuqDCsdXFxcKFCgAJs3O9KxI2TOrI2tV62qd2QGdfkA/NoeZDx0XgJelfWOKEVnzpzB19eXWrVqsX79eoQQeodkGL8duUrfX/7ip26VaFTGQ+9wkiWEOCClTH6JTymlLh+VKlWSLzp79qyMioqS8fHx/3lOSVl8fLyMioqSZ8+elVJKefSolEWKSOnoKOWoUVI+fqxzgEb172kpvysv5ed5pTy+Xu9oUuW7776TgJw7d67eoRhKTGycDPxqi+w0fY/eobwUsF++JK9a1ZDL48ePyZkzp7qiSCMhBDlz5nz2Dqd0adi3D9q2hVGjtLH1Xbv0jdGQchbRWgXkKQWLu8D+2XpHlKIBAwZQvXp1Bg0axJUrV/QOxzAc7O3oUtWbP87c5NR1669yepFVJXRAJfN0evH7lzMnLFigLW/38KG2vN2HH4Ia1XpNWXJD93VQtL62UMbWz626RtTOzo7Zs2fz+PFj+vXrp3c4htIpoCBODnbMM2AJo9UldMU8mjSBI0e01gETJmgrI6nyxtfk5AodF0LFYPh9PKzqB3HW2yWtePHifPbZZ6xevZqtW7fqHY5h5HB1omX5/Kz46zL3Hlvvzzc5KqEncfPmTfz8/PDz88PDwwNPT89nj4UQ+Pn5UbZsWdq1a8fDhJpAe3v7Z9tbtGjBnTt39D2JV8iSBX78UWvudeMGVK6sXb0rr8HeAVpMhtqfwN8LYEEHq56ANHDgQAoWLMjHH39MvFohJdVCAn14+DSOpfsv6R3Ka1EJPYmcOXMSERFBREQEffv25f3333/22NXVlYiICI4cOYKTkxPTEjpjZcqU6dn2HDlyMGXKFJ3PImVNm8LhwxAYCF26aK0DrHj0wPoIAbU/hpbfw9kwmNvMamvVXVxc+OKLLzhw4ABLly7VOxzDKFfAnYoFs/HznkjiDVTC6KB3AC8zaNAgIiIiTPqafn5+fPfdd+l+nRo1anAomfGKwMDAZLdbo9y5tRmmwcFa64BLl7SFNOzt9Y7MQCoGQxYPWBqi1ap3XQG5iuod1X907tyZ8ePHM3z4cFq3bo2Tk5PeIRlCSDUf3lsUwY5TUdQpkUfvcFJFXaG/ptjYWEJDQylXrtxz2+Pi4ti6dSstW7bUKbLX5+ysNfkaPFhb4q5RI20oRnkNxRtqN0ufPtCS+kXrm6Fpb2/P2LFjOXPmDDNmzNA7HMNoUjYfud2cDdWF0Wqv0E1xJW1Kjx49ws/PD9Cu0Hv16vXc9suXL1OqVCkaNGigY5Svz85Ou0latqw209TPDxYv1maZKqnkWQl6bYJf22qtAtrOgZJN9Y7qOY0bN6Z27dqMHDmShg0bUqxYMb1DsnpODnZ0DijIpK2niPz3AT65XPUOKUXqCj2VEsfKIyIi+P7775+9bU3cfv78eaSUhhhDT06PHrB3r3bjtE4d6NMHLlzQOyoDSaxVz1vGKmvVhRBMnToVOzs76tSpw+nT1t/KwBp0qVIQBzvB/D3n9Q4lVVRCN5HMmTMzefJkJkyYQGys9S+QkJzy5WH/fq20cc4cKFYM3n0XTp7UOzKDcM0FIWuhaAOtVn3bF1Z1t7lkyZJs3bqVJ0+eUKdOHc6cOaN3SFYvT1YXmpbLx9L9F3nwxPr/rlVCN6EKFSrg6+vLwoUL9Q4lzbJm1Za3O31au2qfPh1KlIA33oBZs+C6dRZzWA8nV+i4QLthuvMbWP2uVdWqlytXjq1bt/Lo0SPq1q2r+qenQkg1b+4/iWXFwct6h5Iiq2rOdfz4cUqVKqVLPLbElN/Ha9fg559h9mz45x9tW+nS2rBM06Za/3VnZ5McyrZICTvGQdgYKFIP2s8H5yx6R/XMrl27qFGjBuPGjeOjjz7SOxyrJqWkxQ+7eBITz6b3a+o+m/1VzbnUFbrySh4eMGQIHDumDceMHastrDF3LjRrppU/duqkjb8rSQgBtYcmqVVvalW16m+88QaNGjVi/PjxPHjwQO9wrJoQgpBAH07diGbPmZt6h/NKqUroQojGQogTQojTQoihyTw/WAhxTAhxSAixVQjhbfpQFT0JAZUqwccfa0vf3bypzTht3x42b9YmKXXtqvqv/0fFYOi0CP49BbPqa5+txMiRI4mKino2SU55uRbl85PD1Ym5Vl7CmGJCF0LYA1OAJkBpoJMQovQLux0E/KWUvsAy4GtTB6pYF2dnbchl5kyIjIQRI2D5cm28/a23tGZgas3iBM9q1R/CrIZWU6seGBhIgwYN+Prrr5+1slCS5+JoT8fKXmw5fp1Lt633e5WaK/QA4LSU8qyU8imwCAhKuoOUcruUMvEs9wIFTBumYs2yZIHPP9fG2Dt0gCVL/jccExICO3ZYVbGHPhJr1V3ctVr1f9brHREAn376KTdu3OCnn37SOxSr16WqNvDwy17rredNTUL3BJK+kb6UsO1legGhyT0hhHhbCLFfCLE/Kioq9VEqhuDtrZU7RkVpV+jt22urJdWuDUWLai0GQkPhvvX2sjKvZ33VS8PirhA+S++IeOONN6hbty5ff/01jx490jscq+aZLRMNS3uwKPwCj2Pi9A4nWSa9KSqE6Ar4A98k97yUcrqU0l9K6Z87d25THlqxIs7OWrvemTPh6lWtSqZQIfjuO22YJnt26N4dMmTFXNK+6usHW0Vf9f/7v//j2rVrzJ8/X9c4jCCkmg93Hsaw5m/rXDQkNQn9MuCV5HGBhG3PEULUB4YDLaWUhh09TWyHm/gRGRlJWFgY7u7u+Pn5UapUKT777DOA57aXLFmSDz/8UOforU/mzNrN0i1b4M4d7Qbqu+9qST4gQKueyXCsrK96rVq18Pf3Z8KECcTFWeeVp7WoWjgHJfK6Me+PSPQq+X6ll61Nl/iB1u/lLFAIcAL+Bsq8sE8F4AxQLKXXS/xIbk3RY8eOmWzdvbRydXX9z7bt27fLZs2aSSmljI6OlkWLFpUHDhx4bvvDhw9liRIl5K5duywab3Ks4fuYkq1bpcyTR8rMmaWcNEnK6Gi9I9JBfLyU28dIOTKrlPNbS/n4nm6hLF68WAJyxYoVusVgFL/sjZTeH6+T4edu6nJ8XrGmaIrNuaSUsUKI/sBGwB6YLaU8KoQYnfDCa9CGWLIASxOK7i9IKdPVdnDQIDBx91z8/LS3/enh6upKpUqVOH36NHny/K+lZqZMmZ416VJSVrcuHDwI3brBe+/BZ59p/WMGDtRq3zOExFr1rPlh7SCtr3rnpeCW1+KhvPnmmxQqVIhvvvmG1q1bW/z4RtK6gidjQ/9h3p7z+Pvk0Duc56RqDF1KuUFKWVxKWURK+WXCtk8TkjlSyvpSyrxSSr+ED+P0kH1BYvdEPz+/ZH+xb968yd69eylTpsxz22/fvs2pU6eoWbOmpUI1vPz5taGY33/XbpyOHat1ffztN70js7CKwdBpYUKtegP41/KNsxwcHBg8eDB79uxh9+7dFj++kWR2cqC9vxehh69y/Z6VLc77skt3c38Ybcgla9as0s/PT1asWFFOnTr1ue2+vr4yU6ZMctiwYZYON1nW8H1Mi2PHpPT1lVIIKUeMkDI2Vu+ILOzSfinHFZZyrI+UF/ZZ/PDR0dEyZ86csmXLlhY/ttFE/hstfYaukxM2nbD4sXnFkIua+p9KNWrU4ODBgxw4cIC+ffs+t/3vv//m6NGjzJo1y+SrLGUkpUppLQR69IAvvoCqVWHpUjBo88rX51kJ3tqsW626q6sr7777LmvWrGHlypUWPbbReOd0pU6JPCzYd4GnsdazVqtK6CZSqFAhhg4dyrhx4/QOxdAyZdK6Ov7yC9y+rdWyFy0Kn3yiNQjbtk2rc7dZOQrrWqs+ZMgQAgMDad++PatXr7bosY0mONCbf6OfEHrkqt6hPKMSugn17duXnTt3EhkZqXcohtelC5w4AStXahOWxo2DXr207o6entpaqAcP6h2lmTyrVW9g8Vr1LFmyEBoaSqVKlWjXrh1r1661yHGNqGax3BTK5WpV/V1U+1wbZIvfx5gYbSHrc+dg9WrtKv7BA/D31+rZK1SAWrW0RTlsRlwsrH8f/poPfl2hxSSwt8yqkXfv3qVBgwZEREQQHh5O+fLlLXJco5mz+xyfrT3Gmv7V8S2QzSLHVO1zFcNzdNRmm9atC5Mmacn9m2+0IZqff4bevbU+7dOn6x2pCdk7QIvJUGsoRPwCy3tB7FOLHNrd3Z3Q0FDc3d3p37+/dU6isQJtKhUgs5M98/6wjiXqVEJXDClbNvjwQ9i5U5uBevIkNGig1bIPGGBDN1KFgDrDoOEXcGyVNq4eY5meKzlz5mTs2LHs2rWLX3/91SLHNJqsLo60qViAtYeucDNa/wnyKqErhmdnpw21rF0LH3ygLaHXoIE2Bm8zqg2A5hPh1Cb4tR08umORw/bo0YPKlSszZMgQ7t27Z5FjGk1INW+exsazKFz/xQBUQldshr09jB+vraZ04IA2Sen997VqGZvg3xPenAEX9sCcpnDP/A2i7OzsmDJlCtevX3/Ww0h5XtE8blQvmpNf954nNk7fEkaV0BWbExICp05Bz54webJWJdO5MyxbZgMdHn3bQZelcOcCzGwAN46b/ZCVK1emV69eTJo0iZ07d5r9eEYUEujDlbuP2XJc32UGVUJXbFLevPDTT/DXX9CundblsV07yJNH6x+zfTvEW898kNdTpC702ADxMTC7EUSaf6r+2LFjKVasGE2bNmXXrl1mP57R1CuVF89smXQvYVQJPYmbN28+6+Pi4eGBp6fns8dCCPz8/Chbtizt2rV7tmRXYrvdsmXL0qJFC+7cuZPsa1erVi3Z7d27d2fZsmVpinfUqFGMHz8+Tf9vRlG+vFbiePUqhIVp9etr1mjVMoUKadUxCxZozxtKPl9tAlKWvPBzKzhq3pmdOXPmZNu2bXh6etKkSRP++OMPsx7PaOztBN0Cvdl79hb/XNPvXoNK6EnkzJmTiIgIIiIi6Nu3L++///6zx66urkRERHDkyBGcnJyeLaybKVOmZ9tz5MjBlClTkn1t9QegLwcHrU592jS4dg1+/VXrvrl0qTaJqUAB6NsXbtzQO9LXkN0bem6E/BVhaQ/Y86NZD5cvXz62b99Ovnz5aNy4MYcOHTLr8YymY2UvnB3smL9HvxJGy8xSSIPP1h7l2BXT/ktXOn9WRrYok/KOKahRo0ayv8yBgYEv/SXPkiUL0dHRSCkZMGAAmzdvxsvLCycnp2f7HDhwgMGDBxMdHU2uXLmYO3cu+fLlY8aMGUyfPp2nT59StGhRfv75ZzJnzpzu88ioMmXSxtQ7d4a4OK1N87x5MHUqLFwIw4ZBzZrg46O18rWz5suezDkgeBWs6A0bh8G9y9Dgc7MFnT9/frZv307lypVp3749+/fvJ0uWLGY5ltFky+xEKz9PVv51mY8blcQ9s6PFY7DmX1WrFBsbS2hoKOXKlXtue1xcHFu3bqVly1d3Dl65ciUnTpzg2LFjzJ8//9mVe0xMDAMGDGDZsmUcOHCAnj17Mnz4cEDrVR0eHs7ff/9NqVKlmDVL/7UobYW9PVSqpN08PXwY3nhDS+jVq2stBtzctCv4rVuteMzdMRO0mwcBb8OeH2DFWxBrvppoT09PFixYwKlTp3j33XfNdhwjCq7mzaOYOJYe0KeE0Wqv0E1xJW1KiX3SQbtC79Wr13PbL1++TKlSpWjQoMErX2fnzp106tQJe3t78ufPT926dQE4ceIER44cefb/x8XFkS9fPgCOHDnCiBEjuHPnDtHR0TRq1MhMZ5mxlSwJ69drFTKnT2ttBv7+G5Ys0cbZvby0FgM+PlC4sDYOX7asNvdHd3b20ORryOoJW0ZC9A3o+KvWudEMateuzaeffsqoUaOoU6cO3bt3N8txjKZMfncq+2Rn/p7z9KheCHs7y/5yWG1CtzaJY+Uv2/7w4UMaNWrElClTGDhw4Gu/vpSSMmXKsGfPnv881717d1atWkX58uWZO3cuYWFhaTgDJbWKFXu+J8ykSbBqlTbefuqU1vExsfyxSBF4802tcViJErqE+z9CwBuDwC0frO4Hs5tA12XaikhmMGLECMLCwnj33XdxdHSkY8eO2Nvbm+VYRhIc6MOAhQfZcfIGdUtadvUpNeRiIpkzZ2by5MlMmDCB2FfMO69ZsyaLFy8mLi6Oq1evsn37dgBKlChBVFTUs4QeExPD0aNHAbh//z758uUjJiZGTcHWgYsLdOwIy5fDoUNw757WS2baNK2173ffaVf3zZtbydBM+Q7QZVlCrXp9s9Wq29vbs2DBAooVK0bXrl0pW7YsCxcuJF73b4C+Gpf1IG9WZ+bq0N9FJXQTqlChAr6+vixcuPCl+7Ru3ZpixYpRunRpgoODCQwMBMDJyYlly5bx8ccfU758efz8/J6Nr3/++edUqVKF6tWrU7JkSYuci/JyQmjj6336aMvlXboEo0bBn39C/fqQNas2Bt+/P4SH6xRkkToJtepxMMt8ter58uXjr7/+YsmSJdjb29O5c2fat2/PgwcPzHI8I3C0t6NLFW92noziTJSFZ7K9bCkjc39Y6xJ0tkB9H/Xx6JGUv/4q5cCBUtaoIaWrq5QgZXCwlJcv6xTU7fNSfu8v5ehcUh5ZYdZDxcXFyfHjx0shhKxYsaK8dOmSWY9nza7feySLfrJejlx9xOSvjVqCTlHMz8VFK4WcNEnrAnnlCnz8MSxapI3JDxqkDdlYVLaCz9eq751qtkPZ2dnxwQcfsGbNGk6ePElAQECGrVXP4+ZCs3L5WHbgEtFPLNf6UyV0RTGTrFlh7Fg4fhyCguDHH7WZq/7+MGSI9njDBrh508yBJNaql2wGvw2FTSPMOtDfvHlzdu/ejRCCevXqcfjwYbMdy5qFVPMh+kksK/66ZLFjqoSuKGZWuLBW9njlinb1LgR8/z28+y40awb582t9ZjZsMGMfd8dM0H4+VO4Nf3xv9lp1X19fwsLCcHZ2pl69es9u8Gckfl7Z8C3gzrw/Ii22QIhK6IpiIblywcCB2o3Shw+1BL9zJ/Trp/WZadYMcuaEFi3g229h3z5tP5Oxs4em30D9UXBkOfzSxqx91YsWLcr27dtxcHCgbt26vLjkpK0TQhAS6MOZqAfsPm3ut2EaldAVRQd2dpAvH9SoARMnwuXLsGKFVh554oS2UEfVqtpM1TJltKv58HATrBUtBLzxfkJf9b0wpwncvWySc0pOsWLF2L59O05OTlStWpWRI0fy9KllltGzBs1885HT1cliXRhVQlcUK+DkBK1bay1/T57USiFXrIDhw7WukLNna4th+/pqJZJr1sDFi+lI8L7tE/qqX4RZ5u2rXqJECQ4dOkSXLl0YPXo0AQEBrFmzhidP9F+yzdxcHO3pGODF1n+uc/GWKd9uJU8l9BcktsNN/IiMjCQsLAx3d3f8/PwoVarUs5Vbkm4vWbIkH374YbKvuX///pfOHvXx8eHff/9NU6y1a9fOcG9jMwpPTy3Bjx4N69Zp7X2nTQNXV21bUBAULKj1d2/QAD76SBunP35caziWKs9q1WMTatXN1+c8e/bszJs3j9WrV3Pjxg2CgoLIkycPwcHBnDx50mzHtQZdq3pjJwS/7LXARKOX1TOa+8Na69BdXV3/s2379u2yWbNmUkopo6OjZdGiReWBAwee2/7w4UNZokQJuWvXrtc6nre3t4yKikpTrLVq1ZLh4eH/2W4N30fFfO7dk3LXLim//17KXr2krFhRSicnreYdpMyUSUp/fynbtZNyyBApf/pJyn37pHz48CUvmLRW/fBys8f/9OlTGRoaKnv06CHd3Nykl5eXvHr1qtmPq6d3ftkvfUdtlA+fxKb7tXhFHbr19nIJHQrXTFzu5FEOmoxN10u4urpSqVIlTp8+TZ48eZ5tz5Qp07MmXS8KCwtj/PjxrFu3jps3b9KpUycuX75MYGDgc3e/f/nlFyZPnszTp0+pUqUKP/74I/b29rzzzjuEh4fz6NEj2rZtq9Z2zODc3LSZqNWr/29bTIx2dX7woPZx7JjWFnj1akgcsra31ypucuSAbNm06ppmzaBx44K49twICzvBsp5w/xoE9jNb/I6OjjRu3JjGjRvTv39/atSoQVBQENu3b7fZttDBgT5sOHyN1RGX6RhQ0GzHUUMuL0jsnujn50fr1q3/8/zNmzfZu3cvZco83w3y9u3bnDp1ipo1a77y9T/77DPeeOMNjh49SuvWrblw4QIAx48fZ/HixezevZuIiAjs7e2f9W358ssv2b9/P4cOHWLHjh0ZdrKG8nKOjtr4ekiI1ltm0yZtLP7RIzhzRutDM2wYVKwI7u7awtmrV0Pbtlr1TesuOViTfRXxJZprfdU3DrdIU5qKFSuyYMECwsPDCQkJsdk+MFUK5aCkhxvz9pw3awmj9V6hp/NKOq1e1lXx999/p0KFCtjZ2TF06FDKlClDWFgYv//+O+XLl+fUqVMMGjQIDw+PV77+zp07WbFiBQDNmjUje/bsAGzdupUDBw5QuXJlQPuHJfEdwJIlS5g+fTqxsbFcvXqVY8eO4evra8KzVmyVnZ12VV64sNYVMqnYWPj9d1i5UuskuWpVJvLmmceSHkOpuecH7l2+SpauU7FzcjZrjEFBQXzzzTd8+OGH+Pr6PlvSsWbNmlStWhU7q15hJHWEEIRU82HYisOER94moFAOsxwnVQldCNEYmATYAzOllGNfeN4ZmA9UAm4CHaSUkaYNVV81atRg3bp1L91+7tw5qlatSvv27Z/1TX8dUkpCQkIYM2bMc9vPnTvH+PHjCQ8PJ3v27HTv3p3Hjx+n9TQU5RkHB6hTR/v49lvYuBHmzLGnwcSvec/fk68bjGRH3xt8fmgqznm98PbW6uSzZdM+smf/79dZs2pDO69r8ODBODo6Ehoayo4dO569Oy1QoADt2rWjZ8+elC1b1nQnr4Mgv/yM2XCceX9E6pfQhRD2wBSgAXAJCBdCrJFSHkuyWy/gtpSyqBCiIzAO6GCOgK1VoUKFGDp0KOPGjXtlt8WaNWuyYMECRowYQWhoKLdv3wagXr16BAUF8f7775MnTx5u3brF/fv3uXfvHq6urri7u3P9+nVCQ0OpXbu2hc5KySgcHLTx9GbN4OlTwbFjg9i5Kz/V5ADWF/Bn3qmBfL58EJejXFMslcya9X9J3stLWxDExwdy507+HwJXV+0KduDAgc+qwW7fvs369etZsmQJU6ZMYeLEibRv356RI0dSunRps34vzCWzkwMdKnsxe3ckV+8+Ip97JpMfIzVX6AHAaSnlWQAhxCIgCEia0IOAUQlfLwN+EEIIac7BIivUt29fxo8fT2RkJD4+PsnuM3LkSDp16kSZMmWoVq0aBQtqN0hKly7NF198QcOGDYmPj8fR0ZEpU6ZQtWpVKlSoQMmSJfHy8qJ60jthimIGTk7aAtr4tYc7gbBlFG/bfc3bfjORWfIQH6+VRsbHaZ/j4p//OulzMTHwNAbizwBnnj/OvYQPBNjbaVf2SVd/qgpULQKyX3ni4uKIizuB/KEzx6xiiai0aW0vaZftKfO+6sjQcZ+a/PVFSjlXCNEWaCylfCvhcTegipSyf5J9jiTscynh8ZmEff594bXeBt4GKFiwYKXz55+vyzx+/DilSpVK90lldOr7qJjchX2wfxbEpm2472kMPH2SkOCf/i/RxzxN+Jzw9avuicbHxxMdHU1MTEwaT8JKOEnu+7Sk04i+afrfhRAHpJT+yT1n0ZuiUsrpwHQAf3//DHX1riiGVrCK9pFGTgkfinml5vbxZcAryeMCCduS3UcI4QC4o90cVRRFUSwkNQk9HCgmhCgkhHACOgJrXthnDRCS8HVbYFtax88z2LC7yanvn6JkXCkmdCllLNAf2AgcB5ZIKY8KIUYLIVom7DYLyCmEOA0MBoamJRgXFxdu3rypklIaSSm5efMmLi4ueoeiKIoOUrwpai7+/v7yxcZSMTExXLp0SdVZp4OLiwsFChTA0dFR71AURTEDq7kpmhJHR0cKFSqkdxiKoiiGZPw5tYqiKAqgErqiKIrNUAldURTFRuh2U1QIEQWkdQmPXEDalvkxLnXOGYM654whPefsLaXMndwTuiX09BBC7H/ZXV5bpc45Y1DnnDGY65zVkIuiKIqNUAldURTFRhg1oU/XOwAdqHPOGNQ5ZwxmOWdDjqEriqIo/2XUK3RFURTlBSqhK4qi2AirTuhCiMZCiBNCiNNCiP90cBRCOAshFic8v08I4aNDmCaVinMeLIQ4JoQ4JITYKoTw1iNOU0rpnJPs10YIIYUQhi9xS805CyHaJ/ysjwohFlg6RlNLxe92QSHEdiHEwYTf76Z6xGkqQojZQogbCSu6Jfe8EEJMTvh+HBJCVEz3QaWUVvkB2KOtQlgYbbGTv4HSL+zTD5iW8HVHYLHecVvgnOsAmRO+ficjnHPCfm7ATmAv4K933Bb4ORcDDgLZEx7n0TtuC5zzdOCdhK9LA5F6x53Oc64JVASOvOT5pkAoINCWUN2X3mNa8xX6s8WppZRPgcTFqZMKAuYlfL0MqCeEgVeQTcU5Sym3SykfJjzci7aClJGl5ucM8DkwDrCF3sqpOefewBQp5W0AKeUNC8doaqk5ZwlkTfjaHbhiwfhMTkq5E7j1il2CgPlSsxfIJoTIl55jWnNC9wQuJnl8KWFbsvtIbSGOu0BOi0RnHqk556R6of0Lb2QpnnPCW1EvKeV6SwZmRqn5ORcHigshdgsh9gohGlssOvNIzTmPAroKIS4BG4ABlglNN6/7954iq+qHrqSeEKIr4A/U0jsWcxJC2AHfAt11DsXSHNCGXWqjvQvbKYQoJ6W8o2dQZtYJmCulnCCECAR+FkKUlVLG6x2YUVjzFXpGXJw6NeeMEKI+MBxoKaV8YqHYzCWlc3YDygJhQohItLHGNQa/MZqan/MlYI2UMkZKeQ44iZbgjSo159wLWAIgpdwDuKA1sbJVqfp7fx3WnNAtuji1lUjxnIUQFYCf0JK50cdVIYVzllLelVLmklL6SCl90O4btJRS7k/+5QwhNb/bq9CuzhFC5EIbgjlrwRhNLTXnfAGoByCEKIWW0KMsGqVlrQGCE6pdqgJ3pZRX0/WKet8JTuEucVO0K5MzwPCEbaPR/qBB+4EvBU4DfwKF9Y7ZAue8BbgORCR8rNE7ZnOf8wv7hmHwKpdU/pwF2lDTMeAw0FHvmC1wzqWB3WgVMBFAQ71jTuf5LgSuAjFo77h6AX2Bvkl+xlMSvh+HTfF7rab+K4qi2AhrHnJRFEVRXoNK6IqiKDZCJXRFURQboRK6oiiKjVAJXVEUxUaohK4oimIjVEJXFEWxEf8PX8nF+zQWLj4AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(df_scores.threshold, df_scores['tpr'], label='TPR', color='black')\n", "plt.plot(df_scores.threshold, df_scores['fpr'], label='FPR', color='blue')\n", "\n", "plt.plot(df_ideal.threshold, df_ideal['tpr'], label='TPR ideal')\n", "plt.plot(df_ideal.threshold, df_ideal['fpr'], label='FPR ideal')\n", "\n", "# plt.plot(df_rand.threshold, df_rand['tpr'], label='TPR random', color='grey')\n", "# plt.plot(df_rand.threshold, df_rand['fpr'], label='FPR random', color='grey')\n", "\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 54, "id": "bc605391", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(5, 5))\n", "\n", "plt.plot(df_scores.fpr, df_scores.tpr, label='Model')\n", "plt.plot([0, 1], [0, 1], label='Random', linestyle='--')\n", "\n", "plt.xlabel('FPR')\n", "plt.ylabel('TPR')\n", "\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 55, "id": "4a689523", "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import roc_curve" ] }, { "cell_type": "code", "execution_count": 57, "id": "37c94946", "metadata": {}, "outputs": [], "source": [ "fpr, tpr, thresholds = roc_curve(y_val, y_pred)" ] }, { "cell_type": "code", "execution_count": 58, "id": "5863648f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(5, 5))\n", "\n", "plt.plot(fpr, tpr, label='Model')\n", "plt.plot([0, 1], [0, 1], label='Random', linestyle='--')\n", "\n", "plt.xlabel('FPR')\n", "plt.ylabel('TPR')\n", "\n", "plt.legend()" ] }, { "cell_type": "markdown", "id": "886f8028", "metadata": {}, "source": [ "## 4.6 ROC AUC\n", "\n", "* Area under the ROC curve - useful metric\n", "* Interpretation of AUC" ] }, { "cell_type": "code", "execution_count": 60, "id": "7509a4b6", "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import auc" ] }, { "cell_type": "code", "execution_count": 61, "id": "6643a6e6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.843850505725819" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "auc(fpr, tpr)" ] }, { "cell_type": "code", "execution_count": 62, "id": "e1c0c11b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8438796286447967" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "auc(df_scores.fpr, df_scores.tpr)" ] }, { "cell_type": "code", "execution_count": 63, "id": "0774697c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9999430203759136" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "auc(df_ideal.fpr, df_ideal.tpr)" ] }, { "cell_type": "code", "execution_count": 68, "id": "9f8658f5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.843850505725819" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fpr, tpr, thresholds = roc_curve(y_val, y_pred)\n", "auc(fpr, tpr)" ] }, { "cell_type": "code", "execution_count": 65, "id": "29cbdd64", "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import roc_auc_score" ] }, { "cell_type": "code", "execution_count": 66, "id": "9fd31898", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.843850505725819" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "roc_auc_score(y_val, y_pred)" ] }, { "cell_type": "code", "execution_count": 70, "id": "02bb73e9", "metadata": {}, "outputs": [], "source": [ "neg = y_pred[y_val == 0]\n", "pos = y_pred[y_val == 1]" ] }, { "cell_type": "code", "execution_count": 73, "id": "cfeb22b1", "metadata": {}, "outputs": [], "source": [ "import random" ] }, { "cell_type": "code", "execution_count": 82, "id": "ee7da8e1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8434" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = 100000\n", "success = 0 \n", "\n", "for i in range(n):\n", " pos_ind = random.randint(0, len(pos) - 1)\n", " neg_ind = random.randint(0, len(neg) - 1)\n", "\n", " if pos[pos_ind] > neg[neg_ind]:\n", " success = success + 1\n", "\n", "success / n" ] }, { "cell_type": "code", "execution_count": 90, "id": "2b9e19e4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.84646" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = 50000\n", "\n", "np.random.seed(1)\n", "pos_ind = np.random.randint(0, len(pos), size=n)\n", "neg_ind = np.random.randint(0, len(neg), size=n)\n", "\n", "(pos[pos_ind] > neg[neg_ind]).mean()" ] }, { "cell_type": "markdown", "id": "6336a636", "metadata": {}, "source": [ "## 4.7 Cross-Validation\n", "\n", "* Evaluating the same model on different subsets of data\n", "* Getting the average prediction and the spread within predictions" ] }, { "cell_type": "code", "execution_count": 121, "id": "92708443", "metadata": {}, "outputs": [], "source": [ "def train(df_train, y_train, C=1.0):\n", " dicts = df_train[categorical + numerical].to_dict(orient='records')\n", "\n", " dv = DictVectorizer(sparse=False)\n", " X_train = dv.fit_transform(dicts)\n", "\n", " model = LogisticRegression(C=C, max_iter=1000)\n", " model.fit(X_train, y_train)\n", " \n", " return dv, model" ] }, { "cell_type": "code", "execution_count": 123, "id": "4689044d", "metadata": {}, "outputs": [], "source": [ "dv, model = train(df_train, y_train, C=0.001)" ] }, { "cell_type": "code", "execution_count": 110, "id": "08ac302c", "metadata": {}, "outputs": [], "source": [ "def predict(df, dv, model):\n", " dicts = df[categorical + numerical].to_dict(orient='records')\n", "\n", " X = dv.transform(dicts)\n", " y_pred = model.predict_proba(X)[:, 1]\n", "\n", " return y_pred" ] }, { "cell_type": "code", "execution_count": 98, "id": "95d88ee1", "metadata": {}, "outputs": [], "source": [ "y_pred = predict(df_val, dv, model)" ] }, { "cell_type": "code", "execution_count": 99, "id": "e3c7e607", "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import KFold" ] }, { "cell_type": "code", "execution_count": 100, "id": "e1d8a427", "metadata": {}, "outputs": [], "source": [ "\n" ] }, { "cell_type": "code", "execution_count": 112, "id": "d5c8e07d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: tqdm in /home/alexey/.pyenv/versions/3.8.11/lib/python3.8/site-packages (4.61.2)\n", "\u001b[33mWARNING: You are using pip version 21.2.2; however, version 21.2.4 is available.\n", "You should consider upgrading via the '/home/alexey/.pyenv/versions/3.8.11/bin/python3.8 -m pip install --upgrade pip' command.\u001b[0m\n" ] } ], "source": [ "!pip install tqdm" ] }, { "cell_type": "code", "execution_count": 113, "id": "a8fe7363", "metadata": {}, "outputs": [], "source": [ "from tqdm.auto import tqdm" ] }, { "cell_type": "code", "execution_count": 129, "id": "ce936aca", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6bdfe85df0c7415582b9e25df38dc9c6", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/7 [00:00 [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment) ## Notes In this session, we talked about the earlier model we made in chapter 3 for churn prediction.
This chapter contains the deployment of the model. If we want to use the model to predict new values without running the code, there's a way to do this. The way to use the model in different machines without running the code, is to deploy the model in a server (run the code and make the model). After deploying the code in a machine used as server we can make some endpoints (using api's) to connect from another machine to the server and predict values. Model deployment is crucial when you need to use the model across different machines or applications without having to retrain or rerun the code. By deploying the model as a web service, external systems (like marketing services) can send requests to the server to get predictions, such as whether a customer is likely to churn. Based on the prediction, actions like sending promotional offers can be automated. To deploy the model in a server there are some steps: 1. **Train and Save the Model**: After training the model, save it as a file, to use it for making predictions in future (session 02-pickle). 2. **Create API Endpoints**: Make the API endpoints in order to request predictions. It is possible to use the Flask framework to create web service API endpoints that other services can interact with (session 03-flask-intro and 04-flask-deployment). 3. **Some other server deployment options** (sessions 5 to 9): - **Pipenv**: Create isolated environments to manage the Python dependencies of the web service, ensuring they don’t interfere with other services on the machine. - **Docker**: Package the service in a Docker container, which includes both system and Python dependencies, making it easier to deploy consistently across different environments. 4. **Deploy to the Cloud**: Finally, deploy the Docker container to a cloud service like AWS to make the model accessible globally, ensuring scalability and reliability. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/09/ml-zoomcamp-2023-deploying-machine-learning-models-part-1/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 5: Deploying Machine Learning Models](./) * Next: [Saving and loading the model](02-pickle.md) ================================================ FILE: 05-deployment/02-pickle.md ================================================ ## 5.2 Saving and loading the model [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment) ## Notes **In this session we'll cover the idea "How to use the model in future without training and evaluating the code"** - To save the model we made before there is an option using the pickle library: - First install the library with the command ```pip install pickle-mixin``` if you don't have it. - After training the model and making it ready for the prediction process, use this code to save the model for later. - ```python import pickle with open('model.bin', 'wb') as f_out: # 'wb' means write-binary pickle.dump((dict_vectorizer, model), f_out) ``` - In the code above we'll make a binary file named model.bin, and write the dict_vectorizer for one hot encoding and the model as array in it. (We will save it as binary in case it wouldn't be readable by humans) - To be able to use the model in future without running the code, We need to open the binary file we saved before. - ```python import pickle with open('mode.bin', 'rb') as f_in: # very important to use 'rb' here, it means read-binary dict_vectorizer, model = pickle.load(f_in) ## Note: never open a binary file you do not trust the source! ``` - With unpacking the model and the dict_vectorizer, We're able to predict again for new input values without training a new model by re-running the code. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/10/ml-zoomcamp-2023-deploying-machine-learning-models-part-2/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 5: Deploying Machine Learning Models](./) * Previous: [Intro / Session overview](01-intro.md) * Next: [Web services: introduction to Flask](03-flask-intro.md) ================================================ FILE: 05-deployment/03-flask-intro.md ================================================ ## 5.3 Web services: introduction to Flask [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment) ## Links * [0.0.0.0 vs localhost](https://stackoverflow.com/a/20778887/861423) * [Top-level script enviroment](https://docs.python.org/3.9/library/__main__.html) * [route decorator](https://flask.palletsprojects.com/en/2.2.x/api/#flask.Flask.route) ## Notes In this session we talked about what is a web service and how to create a simple web service. - What is actually a web service - A web service is a method used to communicate between electronic devices. - There are some methods in web services that we can use to satisfy our problems. Here below we would list some. - **GET:** GET is a method used to retrieve files, For example when we are searching for a cat image in google we are actually requesting cat images with GET method. - **POST:** POST is the second common method used in web services. It enables sending data to a server to create or update a resource. For example in a sign up process, when we are submiting our name, username, passwords, etc we are posting our data to a server that is using the web service. (Note that there is no specification where the data goes) - **PUT:** PUT is same as POST but we are specifying where the data is going to. - **DELETE:** DELETE is a method that is used to request to delete some data from the server. - For more information just google the HTTP methods, You'll find useful information about this. - To create a simple web service, there are plenty libraries available in every language. Here we would like to introduce Flask library in python. - If you haven't installed the library just try installing it with the code ```pip install Flask``` - To create a simple web service just run the code below: - ```python from flask import Flask app = Flask('ping') # give an identity to your web service @app.route('/ping', methods=['GET']) # use decorator to add Flask's functionality to our function def ping(): return 'PONG' if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=9696) # run the code in local machine with the debugging mode true and port 9696 ``` - With the code above we made a simple web server and created a route named ping that would send pong string. - To test it, just use the `cURL` command in a new terminal by typing ```curl http://localhost:9696/ping```, or simply open your browser and search ```localhost:9696/ping```, You'll see that the 'PONG' string is received. Congrats You've made a simple web server 🥳. - To use our web server to predict new values we must modify it. See how in the next session. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/11/ml-zoomcamp-2023-deploying-machine-learning-models-part-3/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 5: Deploying Machine Learning Models](./) * Previous: [Saving and loading the model](02-pickle.md) * Next: [Serving the churn model with Flask](04-flask-deployment.md) ================================================ FILE: 05-deployment/04-flask-deployment.md ================================================ ## 5.4 Serving the churn model with Flask [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment) ## Notes In this session, we talked about implementing the functionality of prediction to our churn web service and how to make it usable in development environment. - To make the web service predict the churn value for each customer we must modify the code in session 3 with the code we had in previous chapters. Below we can see how the code works in order to predict the churn value. - In order to predict we need to first load the previous saved model and use a prediction function in a special route. - To load the previous saved model we use the code below: - ```python import pickle with open('churn-model.bin', 'rb') as f_in: dv, model = pickle.load(f_in) ``` - As we had earlier to predict a value for a customer we need a function like below: - ```python def predict_single(customer, dv, model): X = dv.transform([customer]) ## apply the one-hot encoding feature to the customer data y_pred = model.predict_proba(X)[:, 1] return y_pred[0] ``` - Then at last we make the final function used for creating the web service. - ```python @app.route('/predict', methods=['POST']) ## in order to send the customer information we need to post its data. def predict(): customer = request.get_json() ## web services work best with json frame, So after the user post its data in json format we need to access the body of json. prediction = predict_single(customer, dv, model) churn = prediction >= 0.5 result = { 'churn_probability': float(prediction), ## we need to cast numpy float type to python native float type 'churn': bool(churn), ## same as the line above, casting the value using bool method } return jsonify(result) ## send back the data in json format to the user ``` - The whole code above is available in this link: [churn_serving.py](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-05-deployment/churn_serving.py) - Finally, run your code. To see the result we can't use a simple request in web browser, because we are expecting a `POST` request in our app. We can run the code below to **post** customer data as `json` and see the response - ```python ## a new customer informations customer = { 'customerid': '8879-zkjof', 'gender': 'female', 'seniorcitizen': 0, 'partner': 'no', 'dependents': 'no', 'tenure': 41, 'phoneservice': 'yes', 'multiplelines': 'no', 'internetservice': 'dsl', 'onlinesecurity': 'yes', 'onlinebackup': 'no', 'deviceprotection': 'yes', 'techsupport': 'yes', 'streamingtv': 'yes', 'streamingmovies': 'yes', 'contract': 'one_year', 'paperlessbilling': 'yes', 'paymentmethod': 'bank_transfer_(automatic)', 'monthlycharges': 79.85, 'totalcharges': 3320.75 } import requests ## to use the POST method we use a library named requests url = 'http://localhost:9696/predict' ## this is the route we made for prediction response = requests.post(url, json=customer) ## post the customer information in json format result = response.json() ## get the server response print(result) ``` - Until here we saw how we made a simple web server that predicts the churn value for every user. When you run your app you will see a warning that it is not a WGSI server and not suitable for production environmnets. To fix this issue and run this as a production server there are plenty of ways available. - One way to create a WSGI server is to use gunicorn. To install it use the command ```pip install gunicorn```, And to run the WGSI server you can simply run it with the command ```gunicorn --bind 0.0.0.0:9696 churn:app```. Note that in __churn:app__ the name churn is the name we set for the file containing the code ```app = Flask('churn')```(for example: churn.py), You may need to change it to whatever you named your Flask app file. - Windows users may not be able to use gunicorn library because windows system do not support some dependecies of the library. So to be able to run this on a windows machine, there is an alternative library waitress and to install it, just use the command ```pip install waitress```. - to run the waitress wgsi server use the command ```waitress-serve --listen=0.0.0.0:9696 churn:app```. - To test it, you can run the code above and the result will be the same. - So until here you were able to make a production server that predicts the churn value for new customers. In the next session, we can see how to solve library version conflicts in each machine and manage dependencies for production environments. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/12/ml-zoomcamp-2023-deploying-machine-learning-models-part-4/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 5: Deploying Machine Learning Models](./) * Previous: [Web services: introduction to Flask](03-flask-intro.md) * Next: [Python virtual environment: Pipenv](05-pipenv.md) ================================================ FILE: 05-deployment/05-pipenv.md ================================================ ## 5.5 Python virtual environment: Pipenv [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment) ## Notes In this session we're going to make virtual environments for our project. So Let's start this session by getting to know what is a virtual environment and how to make it. - Every time we're running a file from a directory we're using the executive files from a global directory. When we install python on our machine the executable files that are able to run our codes will go to somewhere like _/home/username/python/bin/_. The pip command, for example, may go to _/home/username/python/bin/pip_. - Sometimes the versions of libraries conflict (the project may not run or get into massive errors). For example, we have an old project that uses sklearn library with the version of 0.24.1 and now we want to run it using sklearn version 1.0.0. We may get into errors because of the version conflict. - To solve the conflict we can make virtual environments. A virtual environment is an operation that can separate the libraries installed in our system and the libraries with specified version we want our project to run with. There are a lot of ways to create virtual environments. One way we are going to use is a library named pipenv. - pipenv is a library that can create a virutal environment. To install this library just use the classic method ```pip install pipenv```. - After installing pipenv we must install the libraries we want for our project in the new virtual environment. It's really easy, Just use the command pipenv instead of pip. ```pipenv install numpy scikit-learn==0.24.1 flask```. With this command we installed the libraries we want for our project. - Note that using the pipenv command we made two files named _Pipfile_ and _Pipfile.lock_. If we look at these files closely we can see that in Pipfile the libraries we installed are named. If we specified the library name, it's also specified in Pipfile. - In _Pipfile.lock_ we can see that each library with its installed version is named and a hash file is there to reproduce if we move the environment to another machine. - If we want to run the project in another machine, we can easily install the libraries we want with the command ```pipenv install```. This command will look into _Pipfile_ and _Pipfile.lock_ to install the libraries with specified version. - After installing the required libraries we can run the project in the virtual environment with ```pipenv shell``` command. This will go to the virtual environment's shell and then any command we execute will use the virtual environment's libraries. Typing `gunicorn --bind localhost:9696 predict:app` can run the web service. However, if we prefer to use only one command to run the application in our environment, we just have to type: `pipenv run gunicorn --bind localhost:9696 predict:app`. - Installing and using the libraries such as gunicorn is the same as the last session. - Until here we made a virtual environment for our libraries with a required specified version. To seperate this environment more, such as making gunicorn be able to run in windows machines we need another way. The other way is using Docker. Docker allows us to seperate everything more than before and make any project able to run on any machine that supports Docker smoothly. - In the next session we'll go in detail of how Docker works and how to use it. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/13/ml-zoomcamp-2023-deploying-machine-learning-models-part-5/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 5: Deploying Machine Learning Models](./) * Previous: [Serving the churn model with Flask](04-flask-deployment.md) * Next: [Environment management: Docker](06-docker.md) ================================================ FILE: 05-deployment/06-docker.md ================================================ ## 5.6 Environment management: Docker [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment) ## Installing Docker To isolate more our project file from our system machine, there is an option named Docker. With Docker you are able to pack all your project in the system that you want and run it in any other machine system. For example if you want Ubuntu 20.4 you can have it in a mac or windows machine or other operating systems.
To get started with Docker for the churn prediction project you can follow the instructions below. ### Ubuntu ```bash sudo apt-get install docker.io ``` To run docker without `sudo`, follow [this instruction](https://docs.docker.com/engine/install/linux-postinstall/). ### Windows To install the Docker you can just follow the instruction by Andrew Lock in this link: https://andrewlock.net/installing-docker-desktop-for-windows/. If you are using a subsystem, and the integration fails when running Docker for the first time, make sure your distribution is enabled in the resources settings. ### MacOS Follow the steps in the [Docker docs](https://docs.docker.com/desktop/install/mac-install/). ## Notes - Once our project was packed in a Docker container, we're able to run our project on any machine. - First we have to make a Docker image. In Docker image file there are settings and dependecies we have in our project. To find Docker images that you need you can simply search the [Docker](https://hub.docker.com/search?type=image) website. Here a Dockerfile (There should be no comments in Dockerfile, so remove the comments when you copy) ```docker # First install the python 3.8, the slim version uses less space FROM python:3.8.12-slim # Install pipenv library in Docker RUN pip install pipenv # create a directory in Docker named app and we're using it as work directory WORKDIR /app # Copy the Pip files into our working derectory COPY ["Pipfile", "Pipfile.lock", "./"] # install the pipenv dependencies for the project and deploy them. RUN pipenv install --deploy --system # Copy any python files and the model we had to the working directory of Docker COPY ["*.py", "churn-model.bin", "./"] # We need to expose the 9696 port because we're not able to communicate with Docker outside it EXPOSE 9696 # If we run the Docker image, we want our churn app to be running ENTRYPOINT ["gunicorn", "--bind=0.0.0.0:9696", "churn_serving:app"] ``` The flags `--deploy` and `--system` make sure that we install the dependencies directly inside the Docker container without creating an additional virtual environment (which `pipenv` does by default). If we don't put the last line `ENTRYPOINT`, we will be in a python shell. Note that for the entrypoint, we put our commands in double quotes. After creating the Dockerfile, we need to build it: ```bash docker build -t churn-prediction . ``` To run it, execute the command below: ```bash docker run -it -p 9696:9696 churn-prediction:latest ``` Flag explanations: - `-t`: is used for specifying the tag name "churn-prediction". - `-it`: in order for Docker to allow us access to the terminal. - `--rm`: allows us to remove the image from the system after we're done. - `-p`: to map the 9696 port of the Docker to 9696 port of our machine. (first 9696 is the port number of our machine and the last one is Docker container port.) - `--entrypoint=bash`: After running Docker, we will now be able to communicate with the container using bash (as you would normally do with the Terminal). Default is `python`. At last you've deployed your prediction app inside a Docker container. Congratulations 🥳
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/14/ml-zoomcamp-2023-deploying-machine-learning-models-part-6/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 5: Deploying Machine Learning Models](./) * Previous: [Python virtual environment: Pipenv](05-pipenv.md) * Next: [Deployment to the cloud: AWS Elastic Beanstalk (optional)](07-aws-eb.md) ================================================ FILE: 05-deployment/07-aws-eb.md ================================================ ## 5.7 Deployment to the cloud: AWS Elastic Beanstalk (optional) [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment) ## Links * [Creating an account on AWS](https://mlbookcamp.com/article/aws) ## Notes ### Deployment to the Cloud using AWS Elastic Beanstalk AWS is the most popular cloud provider, and Elastic Beanstalk offers a simple way to deploy applications with just a few commands. It's well-suited for deploying containerized applications, like our churn prediction service packaged in a Docker container. In this session, we explored how to deploy a machine learning model to the cloud using AWS Elastic Beanstalk, leveraging Docker to containerize the application for easy deployment and scalability. #### Architecture Overview 1. The churn prediction service is packaged into a Docker container. 2. This container is deployed to AWS Elastic Beanstalk. 3. A marketing service sends requests to the Elastic Beanstalk environment. 4. Elastic Beanstalk forwards these requests to the Docker container. 5. The container processes the request and sends the response back to Elastic Beanstalk. 6. Elastic Beanstalk relays the response to the requesting service. #### Scalability with Elastic Beanstalk (EB) Elastic Beanstalk automatically scales the application based on traffic. If the churn prediction service receives a high volume of requests, EB automatically adds more instances of the service to handle the load without interruption (horizontal scaling). Similarly, when traffic decreases, EB scales down the number of instances to optimize resource utilization. #### Deployment Steps 1. **Install the AWS EB CLI:** ```bash pipenv install awsebcli --dev ``` Note: This installs the EB CLI as a development dependency, as it's not needed within the container itself. 2. **Initialize the EB environment:** ```bash eb init -p docker -r eu-north-1 churn-serving ``` This command configures the EB environment with the following parameters: * `-p docker`: Specifies the platform as Docker. * `-r eu-north-1`: Sets the region to `eu-north-1`. You can choose a different region based on your account information. * `churn-serving`: Defines the name of the environment. 3. **Verify the EB Configuration:** ```bash less .elasticbeanstalk/config.yml ``` This command allows you to review the generated configuration file. 4. **Test Locally:** ```bash eb local run --port 9696 ``` This command starts the application locally using the specified port. You can use the `predict.py` script to test the service locally. 5. **Deploy to AWS:** ```bash eb create churn-serving-env ``` This command creates the Elastic Beanstalk environment and deploys the application. 6. **Access the Deployed Service:** After successful deployment, Elastic Beanstalk provides the endpoint URL for the service. Update the `predict-test` script with the new host address. Note that you'll no longer need the port number when accessing the deployed service. 7. **Security Considerations:** The deployed service is publicly accessible. In a production environment, it's crucial to implement appropriate security measures to restrict access to authorized users or networks. 8. **Terminate the Service:** ```bash eb terminate churn-serving-env ``` This command terminates the Elastic Beanstalk environment and removes all associated resources. #### Additional Note * Remember to configure your AWS credentials before running the EB CLI commands. ### Deployment with Heroku As we saw how to deploy our apps in AWS Let's find it out how to deploy them in Heroku. - First of all create your web service with flask. (example file: [churn_prediction.py](https://github.com/amindadgar/customer-churn-app/blob/main/churn_serving.py) - Then create a file named _requirements.txt_ and pass your dependencies there. Example: ``` pickle numpy flask gunicorn ``` - Create another file named _Procfile_ and add the app you want to be able to run there. Example: ``` web: gunicorn churn_serving:app ``` Note that the churn_serving name in the box above is the name of the main python file we're going to be running. - Create your heroku profile, Go to dashboard and the Deploy tab. - Follow the instruction to Deploy using Heroku Git. - Great, your app is now available from global universe. I've put my heroku app files in this repository: https://github.com/amindadgar/customer-churn-app Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/15/ml-zoomcamp-2023-deploying-machine-learning-models-part-7/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 5: Deploying Machine Learning Models](./) * Previous: [Environment management: Docker](06-docker.md) * Next: [Summary](08-summary.md) ================================================ FILE: 05-deployment/08-summary.md ================================================ ## 5.8 Summary [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment) ## Notes In this chapter we learned these topics: - We learned how to save the model and load it to re-use it without running the previous code. - How to deploy the model in a web service. - How to create a virtual environment. - How to create a container and run our code in any operating systems. - How to deploy our code in a public web service and access it externally from outside a local computer. In the next chapter we will learn the algorithms such as Decision trees, Random forests and Gradient boosting as an alternative way of combining decision tress. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 5: Deploying Machine Learning Models](./) * Previous: [Deployment to the cloud: AWS Elastic Beanstalk (optional)](07-aws-eb.md) * Next: [Explore more](09-explore-more.md) ================================================ FILE: 05-deployment/09-explore-more.md ================================================ ## 5.9 Explore more * Flask is not the only framework for creating web services. Try others, e.g. FastAPI. * Experiment with other ways of managing environment, e.g. virtual env, conda, poetry. * Explore other ways of deploying web services, e.g. GCP, Azure, Heroku, Python Anywhere, etc. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 5: Deploying Machine Learning Models](./) * Previous: [Summary](08-summary.md) * Next: [Homework](homework.md) ================================================ FILE: 05-deployment/README.md ================================================ ## 5. Deploying Machine Learning Models Note: these materials are partly outdated, which is why we recorded a workshop that updates this module. You will find the materials in the [workshop/](workshop/) folder The theory in the module is still relevant, which is why we suggest you to watch both the workshop and the module content. While watching the module content, focus on the theory part. The practical part is all covered in the workshop. - 5.1 [Intro / Session overview](01-intro.md) - 5.2 [Saving and loading the model](02-pickle.md) - 5.3 [Web services: introduction to Flask](03-flask-intro.md) - 5.4 [Serving the churn model with Flask](04-flask-deployment.md) - 5.5 [Python virtual environment: Pipenv](05-pipenv.md) - 5.6 [Environment management: Docker](06-docker.md) - 5.7 [Deployment to the cloud: AWS Elastic Beanstalk (optional)](07-aws-eb.md) - 5.8 [Summary](08-summary.md) - 5.9 [Explore more](09-explore-more.md) - 5.10 [Homework](homework.md) How to watch it: - First, watch the units 5.1-5.6 - Then watch the workshop and do the practice - Finally, do the homework ## Community notes Did you take notes? You can share them here (or in each unit separately) * [Notes from Alvaro Navas](https://github.com/ziritrion/ml-zoomcamp/blob/main/notes/05a_deployment.md) * [Docker notes](https://github.com/ayoub-berdeddouch/mlbookcamp-homeworks/blob/main/Deployment/README.md) * [Notes from froukje](https://github.com/froukje/ml-zoomcamp/blob/main/week5/lecture/Lecture_5_deploying_ml_models.ipynb) * [WSL + Docker notes](https://github.com/MemoonaTahira/MLZoomcamp2022/blob/main/Notes/Week_5-flask_and_docker_for_deployment/readme.md) * [Notes from Hareesh Tummala](https://github.com/tummala-hareesh/ml_zoomcamp_ht/blob/main/notes/week-5-notes.md) * [Notes about Docker](https://github.com/shayansm2/eng-notebook/tree/main/docker) * [Notes about Deployment, Pipenv, Flask, Docker by Oscar Garcia](https://github.com/ozkary/machine-learning-engineering/tree/main/05-deployment) * [Notebook with commands for pipenv, flask, gunicorn, and Docker](https://github.com/javier-cp6/ml-zoomcamp/blob/main/05-deployment/05-train-churn-model.ipynb) * [Notes from Peter Ernicke](https://knowmledge.com/category/courses/ml-zoomcamp/model-deployment/) * [Notes from Kemal Dahha](https://github.com/kemaldahha/machine-learning-course/blob/main/week_5_notes.ipynb) * [Notes from Williams Alnice](https://github.com/nice-bills/ml_zoomcamp/tree/main/module_5) * [Cohort 2025| Notes by Nitin Gupta](https://github.com/niting9881/ML-zoomcamp-local/blob/main/05-deployment/README.md) * Add your notes here ### Deployment tutorials * [Using PythonAnywhere to host your Python Web App for free!!! (an an alternative to AWS/Azure/Google cloud)](https://github.com/nindate/ml-zoomcamp-exercises/blob/main/how-to-use-pythonanywhere.md) * [Deploy Churn Service on Heroku](https://github.com/razekmaiden/churn_service_heroku.git) * [Installing and using pipenv and Docker on Intel Macs](https://github.com/ziritrion/ml-zoomcamp/blob/main/notes/05b_virtenvs.md) * [Azure Guide](https://github.com/yusyel/guides/tree/master/azure#1-creating-azure-account) * Add your tutorials here ================================================ FILE: 05-deployment/code/05-train-churn-model.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "464b9b4a", "metadata": {}, "source": [ "In the previous session we trained a model for predicting churn and evaluated it. Now let's deploy it" ] }, { "cell_type": "code", "execution_count": 10, "id": "b3ff7c44", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.model_selection import KFold\n", "\n", "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import roc_auc_score" ] }, { "cell_type": "code", "execution_count": 5, "id": "81ee3ecc", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('data-week-3.csv')\n", "\n", "df.columns = df.columns.str.lower().str.replace(' ', '_')\n", "\n", "categorical_columns = list(df.dtypes[df.dtypes == 'object'].index)\n", "\n", "for c in categorical_columns:\n", " df[c] = df[c].str.lower().str.replace(' ', '_')\n", "\n", "df.totalcharges = pd.to_numeric(df.totalcharges, errors='coerce')\n", "df.totalcharges = df.totalcharges.fillna(0)\n", "\n", "df.churn = (df.churn == 'yes').astype(int)" ] }, { "cell_type": "code", "execution_count": 7, "id": "0b1903b3", "metadata": {}, "outputs": [], "source": [ "df_full_train, df_test = train_test_split(df, test_size=0.2, random_state=1)" ] }, { "cell_type": "code", "execution_count": 18, "id": "ab4132a4", "metadata": {}, "outputs": [], "source": [ "numerical = ['tenure', 'monthlycharges', 'totalcharges']\n", "\n", "categorical = [\n", " 'gender',\n", " 'seniorcitizen',\n", " 'partner',\n", " 'dependents',\n", " 'phoneservice',\n", " 'multiplelines',\n", " 'internetservice',\n", " 'onlinesecurity',\n", " 'onlinebackup',\n", " 'deviceprotection',\n", " 'techsupport',\n", " 'streamingtv',\n", " 'streamingmovies',\n", " 'contract',\n", " 'paperlessbilling',\n", " 'paymentmethod',\n", "]" ] }, { "cell_type": "code", "execution_count": 13, "id": "92708443", "metadata": {}, "outputs": [], "source": [ "def train(df_train, y_train, C=1.0):\n", " dicts = df_train[categorical + numerical].to_dict(orient='records')\n", "\n", " dv = DictVectorizer(sparse=False)\n", " X_train = dv.fit_transform(dicts)\n", "\n", " model = LogisticRegression(C=C, max_iter=1000)\n", " model.fit(X_train, y_train)\n", " \n", " return dv, model" ] }, { "cell_type": "code", "execution_count": 14, "id": "08ac302c", "metadata": {}, "outputs": [], "source": [ "def predict(df, dv, model):\n", " dicts = df[categorical + numerical].to_dict(orient='records')\n", "\n", " X = dv.transform(dicts)\n", " y_pred = model.predict_proba(X)[:, 1]\n", "\n", " return y_pred" ] }, { "cell_type": "code", "execution_count": 15, "id": "2b01b2b1", "metadata": {}, "outputs": [], "source": [ "C = 1.0\n", "n_splits = 5" ] }, { "cell_type": "code", "execution_count": 16, "id": "ce936aca", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C=1.0 0.841 +- 0.008\n" ] } ], "source": [ "kfold = KFold(n_splits=n_splits, shuffle=True, random_state=1)\n", "\n", "scores = []\n", "\n", "for train_idx, val_idx in kfold.split(df_full_train):\n", " df_train = df_full_train.iloc[train_idx]\n", " df_val = df_full_train.iloc[val_idx]\n", "\n", " y_train = df_train.churn.values\n", " y_val = df_val.churn.values\n", "\n", " dv, model = train(df_train, y_train, C=C)\n", " y_pred = predict(df_val, dv, model)\n", "\n", " auc = roc_auc_score(y_val, y_pred)\n", " scores.append(auc)\n", "\n", "print('C=%s %.3f +- %.3f' % (C, np.mean(scores), np.std(scores)))" ] }, { "cell_type": "code", "execution_count": 17, "id": "2f72b194", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0.8423083263338855,\n", " 0.8450681201165409,\n", " 0.8324061810154525,\n", " 0.8319390707936304,\n", " 0.8522598914373568]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scores" ] }, { "cell_type": "code", "execution_count": 18, "id": "03e81326", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8572386167896259" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dv, model = train(df_full_train, df_full_train.churn.values, C=1.0)\n", "y_pred = predict(df_test, dv, model)\n", "\n", "y_test = df_test.churn.values\n", "auc = roc_auc_score(y_test, y_pred)\n", "auc" ] }, { "cell_type": "markdown", "id": "3847f586", "metadata": {}, "source": [ "Save the model" ] }, { "cell_type": "code", "execution_count": 8, "id": "e3a452f1", "metadata": {}, "outputs": [], "source": [ "import pickle" ] }, { "cell_type": "code", "execution_count": 9, "id": "b4d16a27", "metadata": {}, "outputs": [], "source": [ "output_file = f'model_C={C}.bin'" ] }, { "cell_type": "code", "execution_count": 10, "id": "9533d28c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'model_C=1.0.bin'" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "output_file" ] }, { "cell_type": "code", "execution_count": 16, "id": "f07f38d2", "metadata": {}, "outputs": [], "source": [ "f_out = open(output_file, 'wb') \n", "pickle.dump((dv, model), f_out)\n", "f_out.close()" ] }, { "cell_type": "code", "execution_count": 22, "id": "8887621f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-rwxrwxrwx 1 alexey alexey 2.5K Sep 30 14:10 'model_C=1.0.bin'\r\n" ] } ], "source": [ "!ls -lh *.bin" ] }, { "cell_type": "code", "execution_count": 21, "id": "8f85192f", "metadata": {}, "outputs": [], "source": [ "with open(output_file, 'wb') as f_out: \n", " pickle.dump((dv, model), f_out)" ] }, { "cell_type": "markdown", "id": "70d8a59e", "metadata": {}, "source": [ "Load the model" ] }, { "cell_type": "code", "execution_count": 1, "id": "8fe3b3eb", "metadata": {}, "outputs": [], "source": [ "import pickle" ] }, { "cell_type": "code", "execution_count": 2, "id": "007e9b49", "metadata": {}, "outputs": [], "source": [ "input_file = 'model_C=1.0.bin'" ] }, { "cell_type": "code", "execution_count": 4, "id": "e9dd11c3", "metadata": {}, "outputs": [], "source": [ "with open(input_file, 'rb') as f_in: \n", " dv, model = pickle.load(f_in)" ] }, { "cell_type": "code", "execution_count": 8, "id": "5806ef9b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LogisticRegression(max_iter=1000)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model" ] }, { "cell_type": "code", "execution_count": 27, "id": "16d96d50", "metadata": {}, "outputs": [], "source": [ "customer = {\n", " 'gender': 'female',\n", " 'seniorcitizen': 0,\n", " 'partner': 'yes',\n", " 'dependents': 'no',\n", " 'phoneservice': 'no',\n", " 'multiplelines': 'no_phone_service',\n", " 'internetservice': 'dsl',\n", " 'onlinesecurity': 'no',\n", " 'onlinebackup': 'yes',\n", " 'deviceprotection': 'no',\n", " 'techsupport': 'no',\n", " 'streamingtv': 'no',\n", " 'streamingmovies': 'no',\n", " 'contract': 'month-to-month',\n", " 'paperlessbilling': 'yes',\n", " 'paymentmethod': 'electronic_check',\n", " 'tenure': 1,\n", " 'monthlycharges': 29.85,\n", " 'totalcharges': 29.85\n", "}" ] }, { "cell_type": "code", "execution_count": 28, "id": "17ad51a5", "metadata": {}, "outputs": [], "source": [ "X = dv.transform([customer])" ] }, { "cell_type": "code", "execution_count": 29, "id": "d0758291", "metadata": {}, "outputs": [], "source": [ "y_pred = model.predict_proba(X)[0, 1]" ] }, { "cell_type": "code", "execution_count": 30, "id": "79c7d951", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "input: {'gender': 'female', 'seniorcitizen': 0, 'partner': 'yes', 'dependents': 'no', 'phoneservice': 'no', 'multiplelines': 'no_phone_service', 'internetservice': 'dsl', 'onlinesecurity': 'no', 'onlinebackup': 'yes', 'deviceprotection': 'no', 'techsupport': 'no', 'streamingtv': 'no', 'streamingmovies': 'no', 'contract': 'month-to-month', 'paperlessbilling': 'yes', 'paymentmethod': 'electronic_check', 'tenure': 1, 'monthlycharges': 29.85, 'totalcharges': 29.85}\n", "output: 0.5912433520805763\n" ] } ], "source": [ "print('input:', customer)\n", "print('output:', y_pred)" ] }, { "cell_type": "markdown", "id": "163bfa7d", "metadata": {}, "source": [ "Making requests" ] }, { "cell_type": "code", "execution_count": 40, "id": "934c7834", "metadata": {}, "outputs": [], "source": [ "import requests" ] }, { "cell_type": "code", "execution_count": 41, "id": "68bf9932", "metadata": {}, "outputs": [], "source": [ "url = 'http://localhost:9696/predict'" ] }, { "cell_type": "code", "execution_count": 42, "id": "506e09a2", "metadata": {}, "outputs": [], "source": [ "customer = {\n", " 'gender': 'female',\n", " 'seniorcitizen': 0,\n", " 'partner': 'yes',\n", " 'dependents': 'no',\n", " 'phoneservice': 'no',\n", " 'multiplelines': 'no_phone_service',\n", " 'internetservice': 'dsl',\n", " 'onlinesecurity': 'no',\n", " 'onlinebackup': 'yes',\n", " 'deviceprotection': 'no',\n", " 'techsupport': 'no',\n", " 'streamingtv': 'no',\n", " 'streamingmovies': 'no',\n", " 'contract': 'two_year',\n", " 'paperlessbilling': 'yes',\n", " 'paymentmethod': 'electronic_check',\n", " 'tenure': 1,\n", " 'monthlycharges': 29.85,\n", " 'totalcharges': 29.85\n", "}" ] }, { "cell_type": "code", "execution_count": null, "id": "72f4135e", "metadata": {}, "outputs": [], "source": [ "response = requests.post(url, json=customer).json()" ] }, { "cell_type": "code", "execution_count": 39, "id": "4b2c002a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'churn': True, 'churn_probability': 0.5133820686195286}" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response" ] }, { "cell_type": "code", "execution_count": 27, "id": "8db38caf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "sending email to asdx-123d\n" ] } ], "source": [ "if response['churn']:\n", " print('sending email to', 'asdx-123d')" ] }, { "cell_type": "code", "execution_count": null, "id": "a4a9a70b", "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.9.5" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 05-deployment/code/Dockerfile ================================================ FROM python:3.8.12-slim RUN pip install pipenv WORKDIR /app COPY ["Pipfile", "Pipfile.lock", "./"] RUN pipenv install --system --deploy COPY ["predict.py", "model_C=1.0.bin", "./"] EXPOSE 9696 ENTRYPOINT ["gunicorn", "--bind=0.0.0.0:9696", "predict:app"] ================================================ FILE: 05-deployment/code/Pipfile ================================================ [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] numpy = "*" scikit-learn = "==0.24.2" flask = "*" gunicorn = "*" [dev-packages] [requires] python_version = "3.8" ================================================ FILE: 05-deployment/code/ping.py ================================================ from flask import Flask app = Flask('ping') @app.route('/ping', methods=['GET']) def ping(): return "PONG" if __name__ == "__main__": app.run(debug=True, host='0.0.0.0', port=9696) ================================================ FILE: 05-deployment/code/plan.md ================================================ # 5. Deploying Machine Learning models We'll use the same model we trained and evaluated previously - the churn prediction model. Now we'll deploy it as a web service. ## 5.1 Intro / Session overview * What we will cover this week ## 5.2 Saving and loading the model * Saving the model to pickle * Loading the model from pickle * Turning our notebook into a Python script ## 5.3 Web services: introduction to Flask * Writing a simple ping/pong app * Querying it with `curl` and browser ## 5.4 Serving the churn model with Flask * Wrapping the predict script into a Flask app * Querying it with `requests` * Preparing for production: gunicorn * Running it on Windows with waitress ## 5.5 Python virtual environment: Pipenv * Dependency and environment management * Why we need virtual environment * Installing Pipenv * Installing libraries with Pipenv * Running things with Pipenv ## 5.6 Environment management: Docker * Why we need Docker * Running a Python image with docker * Dockerfile * Building a docker image * Running a docker image ## 5.7 Deployment to the cloud: AWS Elastic Beanstalk (optional) * Installing the eb cli * Running eb locally * Deploying the model ## 5.8 Summary * Save models with picke * Use Flask to turn the model into a web service * Use a dependency & env manager * Package it in Docker * Deploy to the cloud ## 5.9 Explore more * Flask is not the only framework for creating web services. Try others, e.g. FastAPI * Experiment with other ways of managing environment, e.g. virtual env, conda, poetry. * Explore other ways of deploying web services, e.g. GCP, Azure, Heroku, Python Anywhere, etc ================================================ FILE: 05-deployment/code/predict-test.py ================================================ #!/usr/bin/env python # coding: utf-8 import requests url = 'http://localhost:9696/predict' customer_id = 'xyz-123' customer = { "gender": "female", "seniorcitizen": 0, "partner": "yes", "dependents": "no", "phoneservice": "no", "multiplelines": "no_phone_service", "internetservice": "dsl", "onlinesecurity": "no", "onlinebackup": "yes", "deviceprotection": "no", "techsupport": "no", "streamingtv": "no", "streamingmovies": "no", "contract": "month-to-month", "paperlessbilling": "yes", "paymentmethod": "electronic_check", "tenure": 24, "monthlycharges": 29.85, "totalcharges": (24 * 29.85) } response = requests.post(url, json=customer).json() print(response) if response['churn'] == True: print('sending promo email to %s' % customer_id) else: print('not sending promo email to %s' % customer_id) ================================================ FILE: 05-deployment/code/predict.py ================================================ import pickle from flask import Flask from flask import request from flask import jsonify model_file = 'model_C=1.0.bin' with open(model_file, 'rb') as f_in: dv, model = pickle.load(f_in) app = Flask('churn') @app.route('/predict', methods=['POST']) def predict(): customer = request.get_json() X = dv.transform([customer]) y_pred = model.predict_proba(X)[0, 1] churn = y_pred >= 0.5 result = { 'churn_probability': float(y_pred), 'churn': bool(churn) } return jsonify(result) if __name__ == "__main__": app.run(debug=True, host='0.0.0.0', port=9696) ================================================ FILE: 05-deployment/code/train.py ================================================ #!/usr/bin/env python # coding: utf-8 import pickle import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.model_selection import KFold from sklearn.feature_extraction import DictVectorizer from sklearn.linear_model import LogisticRegression from sklearn.metrics import roc_auc_score # parameters C = 1.0 n_splits = 5 output_file = f'model_C={C}.bin' # data preparation df = pd.read_csv('data-week-3.csv') df.columns = df.columns.str.lower().str.replace(' ', '_') categorical_columns = list(df.dtypes[df.dtypes == 'object'].index) for c in categorical_columns: df[c] = df[c].str.lower().str.replace(' ', '_') df.totalcharges = pd.to_numeric(df.totalcharges, errors='coerce') df.totalcharges = df.totalcharges.fillna(0) df.churn = (df.churn == 'yes').astype(int) df_full_train, df_test = train_test_split(df, test_size=0.2, random_state=1) numerical = ['tenure', 'monthlycharges', 'totalcharges'] categorical = [ 'gender', 'seniorcitizen', 'partner', 'dependents', 'phoneservice', 'multiplelines', 'internetservice', 'onlinesecurity', 'onlinebackup', 'deviceprotection', 'techsupport', 'streamingtv', 'streamingmovies', 'contract', 'paperlessbilling', 'paymentmethod', ] # training def train(df_train, y_train, C=1.0): dicts = df_train[categorical + numerical].to_dict(orient='records') dv = DictVectorizer(sparse=False) X_train = dv.fit_transform(dicts) model = LogisticRegression(C=C, max_iter=1000) model.fit(X_train, y_train) return dv, model def predict(df, dv, model): dicts = df[categorical + numerical].to_dict(orient='records') X = dv.transform(dicts) y_pred = model.predict_proba(X)[:, 1] return y_pred # validation print(f'doing validation with C={C}') kfold = KFold(n_splits=n_splits, shuffle=True, random_state=1) scores = [] fold = 0 for train_idx, val_idx in kfold.split(df_full_train): df_train = df_full_train.iloc[train_idx] df_val = df_full_train.iloc[val_idx] y_train = df_train.churn.values y_val = df_val.churn.values dv, model = train(df_train, y_train, C=C) y_pred = predict(df_val, dv, model) auc = roc_auc_score(y_val, y_pred) scores.append(auc) print(f'auc on fold {fold} is {auc}') fold = fold + 1 print('validation results:') print('C=%s %.3f +- %.3f' % (C, np.mean(scores), np.std(scores))) # training the final model print('training the final model') dv, model = train(df_full_train, df_full_train.churn.values, C=1.0) y_pred = predict(df_test, dv, model) y_test = df_test.churn.values auc = roc_auc_score(y_test, y_pred) print(f'auc={auc}') # Save the model with open(output_file, 'wb') as f_out: pickle.dump((dv, model), f_out) print(f'the model is saved to {output_file}') ================================================ FILE: 05-deployment/homework.md ================================================ ## Homework * For 2025 cohort homework, check [the 2025 cohort folder](../cohorts/2025/05-deployment/homework.md) * For 2024 cohort homework, check [the 2024 cohort folder](../cohorts/2024/) * For 2023 cohort homework, check [the 2023 cohort folder](../cohorts/2023/) * For 2022 cohort homework, check [the 2022 cohort folder](../cohorts/2022/) * For 2021 cohort homework and solution, check [the 2021 cohort folder](../cohorts/2021/05-deployment/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 5: Deploying Machine Learning Models](./) * Previous: [Explore more](09-explore-more.md) ================================================ FILE: 05-deployment/meta.csv ================================================ lesson,name,page_name,video,slides 1,Intro / Session overview,01-intro.md,https://www.youtube.com/watch?v=agIFak9A3m8,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment 2,Saving and loading the model,02-pickle.md,https://www.youtube.com/watch?v=EJpqZ7OlwFU,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment 3,Web services: introduction to Flask,03-flask-intro.md,https://www.youtube.com/watch?v=W7ubna1Rfv8,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment 4,Serving the churn model with Flask,04-flask-deployment.md,https://www.youtube.com/watch?v=Q7ZWPgPnRz8,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment 5,Python virtual environment: Pipenv,05-pipenv.md,https://www.youtube.com/watch?v=BMXh8JGROHM,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment 6,Environment management: Docker,06-docker.md,https://www.youtube.com/watch?v=wAtyYZ6zvAs,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment 7,Deployment to the cloud: AWS Elastic Beanstalk (optional),07-aws-eb.md,https://www.youtube.com/watch?v=HGPJ4ekhcLg,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment 8,Summary,08-summary.md,https://www.youtube.com/watch?v=sSAqYSk7Br4,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-5-model-deployment 9,Explore more,09-explore-more.md,, 10,Homework,homework.md,, ================================================ FILE: 05-deployment/meta.json ================================================ { "data": "meta.csv", "session": 5, "name": "Deploying Machine Learning Models" } ================================================ FILE: 05-deployment/workshop/.dockerignore ================================================ # flyctl launch added from .venv\.gitignore .venv\**\* fly.toml ================================================ FILE: 05-deployment/workshop/.python-version ================================================ 3.13 ================================================ FILE: 05-deployment/workshop/Dockerfile ================================================ FROM python:3.13.5-slim-bookworm COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ WORKDIR /code ENV PATH="/code/.venv/bin:$PATH" COPY "pyproject.toml" "uv.lock" ".python-version" ./ RUN uv sync --locked COPY "predict.py" "model.bin" ./ EXPOSE 9696 ENTRYPOINT ["uvicorn", "predict:app", "--host", "0.0.0.0", "--port", "9696"] ================================================ FILE: 05-deployment/workshop/README.md ================================================ # Deploying ML Models with FastAPI and uv * Video: https://www.youtube.com/watch?v=jzGzw98Eikk In this workshop we will revise [Module 5](https://github.com/DataTalksClub/machine-learning-zoomcamp/tree/master/05-deployment) of [Machine Learning Zoomcamp](https://github.com/DataTalksClub/machine-learning-zoomcamp). In particular, we will introduce more modern tools: - Scikit-Learn pipelines - uv instead of Pipenv - FastAPI instead of Flask - Fly.io instead of AWS EBS In this workshop, we will follow the same order as in the module: - Saving and loading the model with pickle - Turning the notebook into a train script - Introduction to FastAPI (instead of Flask) - Serving the model with FastAPI - Input validation with Pydantic (new) - Virtual environment management - uv (instead of Pipenv) - Containerization - Docker - Deployment with Fly.io ## Environment For the environment, you can use [GitHub Codespaces](https://www.youtube.com/watch?v=pqQFlV3f9Bo&list=PL3MmuxUbc_hIhxl5Ji8t4O6lPAOpHaCLR) Install the required libraries: ```bash pip install jupyter scikit-learn pandas ``` Then download the starter notebook and save it as workshop-uv-fastapi.ipynb. We will base our work on it. ```bash wget https://raw.githubusercontent.com/alexeygrigorev/workshops/main/mlzoomcamp-fastapi-uv/starter.ipynb -O workshop-uv-fastapi.ipynb ``` Open it in Jupyter. ## Loading and saving the model Let's make a prediction for this datapoint: ```python datapoint = { 'gender': 'female', 'seniorcitizen': 0, 'partner': 'yes', 'dependents': 'no', 'phoneservice': 'no', 'multiplelines': 'no_phone_service', 'internetservice': 'dsl', 'onlinesecurity': 'no', 'onlinebackup': 'yes', 'deviceprotection': 'no', 'techsupport': 'no', 'streamingtv': 'no', 'streamingmovies': 'no', 'contract': 'month-to-month', 'paperlessbilling': 'yes', 'paymentmethod': 'electronic_check', 'tenure': 1, 'monthlycharges': 29.85, 'totalcharges': 29.85 } ``` We first transform it with the dictionary vectorizer ```python X = dv.transform(datapoint) ``` And then get the predictions ```python model.predict_proba(X)[0, 1] ``` Let's save this to pickle: ```python with open('model.bin', 'wb') as f_out: pickle.dump((dv, model), f_out) ``` This is how we load: ```python with open('model.bin', 'rb') as f_in: (dv, model) = pickle.load(f_in) ``` ## Scikit-Learn Pipelines It's not convenient to deal with two objects: `dv` and `model`. Let's combine them into one: ```python from sklearn.pipeline import make_pipeline pipeline = make_pipeline( DictVectorizer(), LogisticRegression(solver='liblinear') ) pipeline.fit(train_dict, y_train) ``` Now predicting becomes simpler too: ```python pipeline.predict_proba(datapoint)[0, 1] ``` ## Turning the notebook into a script We can now turn this notebook into a training script: ```bash jupyter nbconvert --to=script workshop-uv-fastapi.ipynb mv workshop-uv-fastapi.py train.py ``` Let's edit it. At the end, we have the code similar to [train.py](train.py) ```python df = load_data() pipeline = train_model(df) save_model(pipeline, 'model.bin') print('Model saved to model.bin') ``` Let's load the saved model. Create [predict.py](predict.py) and load the model there: ```python import pickle with open('model.bin', 'rb') as f_in: pipeline = pickle.load(f_in) # apply the model ``` ## FastAPI Now we will turn predict.py into a web service. Let's install FastAPI and uvicorn for that: ```bash pip install fastapi uvicorn ``` The simplest FastAPI app ([created with ChatGPT](https://chatgpt.com/share/6899dc68-03a8-800a-8bd8-9f2218f103e6) by translating [the old Flask code](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/05-deployment/code/ping.py)). Let's put it to `ping.py`: ```python from fastapi import FastAPI import uvicorn app = FastAPI(title="ping") @app.get("/ping") def ping(): return "PONG" if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=9696) ``` Run it: ```bash python ping.py ``` "Proper" way of running it: ```bash uvicorn ping:app --host 0.0.0.0 --port 9696 --reload ``` You can now open it in the browser at http://localhost:9696/ping Or send a request with curl: ```bash curl localhost:9696/ping ``` No differences with Flask so far. But we can see the docs (not possible with Flask): http://localhost:9696/docs Let's now turn our script into a web application: ```python import pickle from fastapi import FastAPI import uvicorn app = FastAPI(title="customer-churn-prediction") with open('model.bin', 'rb') as f_in: pipeline = pickle.load(f_in) def predict_single(customer): result = pipeline.predict_proba(customer)[0, 1] return float(result) @app.post("/predict") def predict(customer): prob = predict_single(customer) return { "churn_probability": prob, "churn": bool(prob >= 0.5) } if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=9696) ``` Run it: ```bash uvicorn predict:app --host 0.0.0.0 --port 9696 --reload ``` Right now it doesn't recognize it as JSON, so let's add type hints: ```python from typing import Dict, Any @app.post("/predict") def predict(customer: Dict[str, Any]): prob = predict_single(customer) return { "churn_probability": prob, "churn": bool(prob >= 0.5) } ``` Open the docs and send a request: ```json { "gender": "female", "seniorcitizen": 0, "partner": "yes", "dependents": "no", "phoneservice": "no", "multiplelines": "no_phone_service", "internetservice": "dsl", "onlinesecurity": "no", "onlinebackup": "yes", "deviceprotection": "no", "techsupport": "no", "streamingtv": "no", "streamingmovies": "no", "contract": "month-to-month", "paperlessbilling": "yes", "paymentmethod": "electronic_check", "tenure": 1, "monthlycharges": 29.85, "totalcharges": 29.85 } ``` We can also do it with curl: ```bash curl -X 'POST' 'http://localhost:9696/predict' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "gender": "female", "seniorcitizen": 0, "partner": "yes", "dependents": "no", "phoneservice": "no", "multiplelines": "no_phone_service", "internetservice": "dsl", "onlinesecurity": "no", "onlinebackup": "yes", "deviceprotection": "no", "techsupport": "no", "streamingtv": "no", "streamingmovies": "no", "contract": "month-to-month", "paperlessbilling": "yes", "paymentmethod": "electronic_check", "tenure": 1, "monthlycharges": 29.85, "totalcharges": 29.85 }' ``` We need to include headers -- FastAPI is more strict about schemas and validation than Flask. To do it from a script, we'll use the requests library. Install it: ```bash pip install requests ``` Create [`test.py`](test.py): ```python import requests url = 'http://localhost:9696/predict' customer = { 'gender': 'female', 'seniorcitizen': 0, 'partner': 'yes', 'dependents': 'no', 'phoneservice': 'no', 'multiplelines': 'no_phone_service', 'internetservice': 'dsl', 'onlinesecurity': 'no', 'onlinebackup': 'yes', 'deviceprotection': 'no', 'techsupport': 'no', 'streamingtv': 'no', 'streamingmovies': 'no', 'contract': 'month-to-month', 'paperlessbilling': 'yes', 'paymentmethod': 'electronic_check', 'tenure': 1, 'monthlycharges': 29.85, 'totalcharges': 29.85 } response = requests.post(url, json=customer) predictions = response.json() print(predictions) if predictions['churn']: print('customer is likely to churn, send promo') else: print('customer is not likely to churn') ``` ## Pydantic and Validation Another feature of FastAPI that we didn't have in Flask is input and output validation To come up with this schema, I used ChatGPT. I gave it an example, and also the output of this piece of code: ```python for n in numerical: print(df[n].describe()) print() for c in categorical: print(df[c].value_counts()) print() ``` The models (input and output): ```python from typing import Literal from pydantic import BaseModel, Field class Customer(BaseModel): gender: Literal["male", "female"] seniorcitizen: Literal[0, 1] partner: Literal["yes", "no"] dependents: Literal["yes", "no"] phoneservice: Literal["yes", "no"] multiplelines: Literal["no", "yes", "no_phone_service"] internetservice: Literal["dsl", "fiber_optic", "no"] onlinesecurity: Literal["no", "yes", "no_internet_service"] onlinebackup: Literal["no", "yes", "no_internet_service"] deviceprotection: Literal["no", "yes", "no_internet_service"] techsupport: Literal["no", "yes", "no_internet_service"] streamingtv: Literal["no", "yes", "no_internet_service"] streamingmovies: Literal["no", "yes", "no_internet_service"] contract: Literal["month-to-month", "one_year", "two_year"] paperlessbilling: Literal["yes", "no"] paymentmethod: Literal[ "electronic_check", "mailed_check", "bank_transfer_(automatic)", "credit_card_(automatic)", ] tenure: int = Field(..., ge=0) monthlycharges: float = Field(..., ge=0.0) totalcharges: float = Field(..., ge=0.0) class PredictResponse(BaseModel): churn_probability: float churn: bool ``` Now we can be more explicit with the input we expect and the output we generate: ```python @app.post("/predict") def predict(customer: Customer) -> PredictResponse: prob = predict_single(customer.model_dump()) return PredictResponse( churn_probability=prob, churn=prob >= 0.5 ) ``` Note: if you use `customer.dict()` instead of `model_dump()`, you can get the following warning: ``` PydanticDeprecatedSince20: The `dict` method is deprecated; use `model_dump` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.11/migration/ ``` We now can test how it behaves with incorrect input. Let's add a field `"whatever": 31337` to our test.py and execute it. When we run it, nothing happens: it continues working like previously. In order to make Pydantic raise an error, we need to add `model_config`: ```python from pydantic import ConfigDict class Customer(BaseModel): model_config = ConfigDict(extra="forbid") ... # rest of the fields ``` Now we will get an error: ```python response: {'detail': [{'type': 'extra_forbidden', 'loc': ['body', 'whatever'], 'msg': 'Extra inputs are not permitted', 'input': 31337}]} ``` What if we send a value that is not defined by the model? For example, ```json { ... "streamingtv": "maybe" ... } ``` In this case, it works as expected: it throws an error: ```python response: {'detail': [{'type': 'literal_error', 'loc': ['body', 'streamingtv'], 'msg': "Input should be 'no', 'yes' or 'no_internet_service'", 'input': 'maybe', 'ctx': {'expected': "'no', 'yes' or 'no_internet_service'"}}]} ``` ## Environment management It works now but we can have version conflicts with other projects. So we need to isolate this project from the others. We will not go into theoretical details about why you want to use virtual environments. Check [module 5](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/05-deployment/05-pipenv.md) for more information For that, we will use [`uv`](https://docs.astral.sh/uv/) -- a tool for dependency and environment management Install it: ```bash pip install uv ``` Initialize the project: ```bash uv init ``` We don't need main.py, so we can remove it: ```bash rm main.py ``` Notice that it created some files: - .python-version - pyproject.toml We need to have Scikit-Learn and FastAPI for this project. So let's add them: ```bash uv add scikit-learn fastapi uvicorn ``` A few more things appeared: - .venv with all the packages - uv.lock with a more detailed description of the dependencies We also have a development dependency -- we won't need it in production: ```bash uv add --dev requests ``` If we want to run something in this virtual environment, simply prefix it with `uv run`: ```bash uv run uvicorn predict:app --host 0.0.0.0 --port 9696 --reload uv run python test.py ``` When you get a fresh copy of a project that already uses uv, you can install all the dependencies using the sync command: ```bash uv sync ``` ## Docker Let's use Docker for complete isolation. If you want to learn more about Docker, check [module 5](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/05-deployment/06-docker.md). In this workshop, we will adjust the [Dockerfile](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/05-deployment/code/Dockerfile) we created in the module. First, we need to decide, which Python version we need. You can check the version of Python using this command: ```bash $ python -V Python 3.13.5 ``` So let's use the 3.13.5 image of Python: ```dockerfile # Use the official Python 3.13.5 slim version based on Debian Bookworm as the base image FROM python:3.13.5-slim-bookworm # Copy the 'uv' and 'uvx' executables from the latest uv image into /bin/ in this image # 'uv' is a fast Python package installer and environment manager COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ # Set the working directory inside the container to /code # All subsequent commands will be run from here WORKDIR /code # Add the virtual environment's bin directory to the PATH so Python tools work globally ENV PATH="/code/.venv/bin:$PATH" # Copy the project configuration files into the container # pyproject.toml → project metadata and dependencies # uv.lock → locked dependency versions (for reproducibility) # .python-version → Python version specification COPY "pyproject.toml" "uv.lock" ".python-version" ./ # Install dependencies exactly as locked in uv.lock, without updating them RUN uv sync --locked # Copy application code and model data into the container COPY "predict.py" "model.bin" ./ # Expose TCP port 9696 so it can be accessed from outside the container EXPOSE 9696 # Run the application using uvicorn (ASGI server) # predict:app → refers to 'app' object inside predict.py # --host 0.0.0.0 → listen on all interfaces # --port 9696 → listen on port 9696 ENTRYPOINT ["uvicorn", "predict:app", "--host", "0.0.0.0", "--port", "9696"] ``` (The comments are added by [ChatGPT](https://chatgpt.com/share/6899ebd9-96f8-800a-819e-093fccadaf7e)) Build it: ```bash docker build -t predict-churn . ``` And run it: ```bash docker run -it --rm -p 9696:9696 predict-churn ``` ## Deployment Once the application is dockerized, you can deploy it everywhere. In the course, we showed Elastic Beanstalk. Other alternatives: - Google CloudRun - AWS App Runner - Fly.io - Check the course for contributions from other students, there are a lot of other options According to ChatGPT, using Fly.io is very simple, so let's do that: ```bash # for other OS, check https://fly.io/docs/flyctl/install/ # you may also need to replace fly with flyctl curl -L https://fly.io/install.sh | sh fly auth signup fly launch --generate-name fly deploy ``` Get the URL from the logs, it should be something along these lines: ``` Visit your newly deployed app at https://mlzoomcamp-flask-uv.fly.dev/ ``` Put the url into test.py and check that it works. Now you can terminate the deployment ```bash fly apps destroy ``` You can see the list of apps by using the `apps list` command. Note: check the pricing information. ## Summary In this workshop we dockerized our ML model and deployed it to the cloud. If you want to learn more about ML Engineering, check our [ML Zoomcamp course](https://github.com/DataTalksClub/machine-learning-zoomcamp/). ================================================ FILE: 05-deployment/workshop/fly.toml ================================================ # fly.toml app configuration file generated for mlzoomcamp-flask-uv on 2025-08-11T15:21:50+02:00 # # See https://fly.io/docs/reference/configuration/ for information about how to use this file. # app = "mlzoomcamp-flask-uv" primary_region = "fra" [build] [http_service] internal_port = 9696 force_https = true auto_stop_machines = true auto_start_machines = true min_machines_running = 0 processes = ["app"] [[vm]] cpu_kind = "shared" cpus = 1 memory_mb = 1024 ================================================ FILE: 05-deployment/workshop/ping.py ================================================ from fastapi import FastAPI import uvicorn app = FastAPI(title="ping") @app.get("/ping") def ping(): return "PONG" if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=9696) ================================================ FILE: 05-deployment/workshop/predict.py ================================================ import pickle from typing import Literal from pydantic import BaseModel, Field from fastapi import FastAPI import uvicorn class Customer(BaseModel): gender: Literal["male", "female"] seniorcitizen: Literal[0, 1] partner: Literal["yes", "no"] dependents: Literal["yes", "no"] phoneservice: Literal["yes", "no"] multiplelines: Literal["no", "yes", "no_phone_service"] internetservice: Literal["dsl", "fiber_optic", "no"] onlinesecurity: Literal["no", "yes", "no_internet_service"] onlinebackup: Literal["no", "yes", "no_internet_service"] deviceprotection: Literal["no", "yes", "no_internet_service"] techsupport: Literal["no", "yes", "no_internet_service"] streamingtv: Literal["no", "yes", "no_internet_service"] streamingmovies: Literal["no", "yes", "no_internet_service"] contract: Literal["month-to-month", "one_year", "two_year"] paperlessbilling: Literal["yes", "no"] paymentmethod: Literal[ "electronic_check", "mailed_check", "bank_transfer_(automatic)", "credit_card_(automatic)", ] tenure: int = Field(..., ge=0) monthlycharges: float = Field(..., ge=0.0) totalcharges: float = Field(..., ge=0.0) class PredictResponse(BaseModel): churn_probability: float churn: bool app = FastAPI(title="customer-churn-prediction") with open('model.bin', 'rb') as f_in: pipeline = pickle.load(f_in) def predict_single(customer): result = pipeline.predict_proba(customer)[0, 1] return float(result) @app.post("/predict") def predict(customer: Customer) -> PredictResponse: prob = predict_single(customer.model_dump()) return PredictResponse( churn_probability=prob, churn=prob >= 0.5 ) if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=9696) ================================================ FILE: 05-deployment/workshop/predict_old.py ================================================ import pickle with open('model.bin', 'rb') as f_in: pipeline = pickle.load(f_in) datapoint = { 'gender': 'female', 'seniorcitizen': 0, 'partner': 'yes', 'dependents': 'no', 'phoneservice': 'no', 'multiplelines': 'no_phone_service', 'internetservice': 'dsl', 'onlinesecurity': 'no', 'onlinebackup': 'yes', 'deviceprotection': 'no', 'techsupport': 'no', 'streamingtv': 'no', 'streamingmovies': 'no', 'contract': 'month-to-month', 'paperlessbilling': 'yes', 'paymentmethod': 'electronic_check', 'tenure': 1, 'monthlycharges': 29.85, 'totalcharges': 29.85 } result = pipeline.predict_proba(datapoint)[0, 1] print(f'Probability of churn: {result:.3f}') ================================================ FILE: 05-deployment/workshop/pyproject.toml ================================================ [project] name = "mlzoomcamp-flask-uv" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.13" dependencies = [ "fastapi>=0.116.1", "scikit-learn>=1.7.1", "uvicorn>=0.35.0", ] [dependency-groups] dev = [ "requests>=2.32.4", ] ================================================ FILE: 05-deployment/workshop/starter.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "4458df13-d0f7-462e-bc80-42169bb1a62b", "metadata": {}, "source": [ "This is a starter notebook for an updated module 5 of ML Zoomcamp\n", "\n", "The code is based on the modules 3 and 4. We use the same dataset: [telco customer churn](https://www.kaggle.com/datasets/blastchar/telco-customer-churn)" ] }, { "cell_type": "code", "execution_count": 1, "id": "a16177e8-cbd2-4088-9bb0-07a0cfb3eee6", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import sklearn" ] }, { "cell_type": "code", "execution_count": 2, "id": "498798c7-1848-47f0-9789-5881ae3658bd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pandas==2.3.1\n", "numpy==2.3.1\n", "sklearn==1.7.0\n" ] } ], "source": [ "print(f'pandas=={pd.__version__}')\n", "print(f'numpy=={np.__version__}')\n", "print(f'sklearn=={sklearn.__version__}')" ] }, { "cell_type": "code", "execution_count": 3, "id": "8afe407b-b259-47ca-a4df-0f098df8435b", "metadata": {}, "outputs": [], "source": [ "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.linear_model import LogisticRegression" ] }, { "cell_type": "code", "execution_count": 4, "id": "e9e9464c-d8ed-45ea-9e8c-70e6d73842f7", "metadata": {}, "outputs": [], "source": [ "data_url = 'https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-03-churn-prediction/WA_Fn-UseC_-Telco-Customer-Churn.csv'\n", "\n", "df = pd.read_csv(data_url)\n", "\n", "df.columns = df.columns.str.lower().str.replace(' ', '_')\n", "\n", "categorical_columns = list(df.dtypes[df.dtypes == 'object'].index)\n", "\n", "for c in categorical_columns:\n", " df[c] = df[c].str.lower().str.replace(' ', '_')\n", "\n", "df.totalcharges = pd.to_numeric(df.totalcharges, errors='coerce')\n", "df.totalcharges = df.totalcharges.fillna(0)\n", "\n", "df.churn = (df.churn == 'yes').astype(int)" ] }, { "cell_type": "code", "execution_count": 5, "id": "8ca89823-6714-42b7-a9a7-d0db94898aee", "metadata": {}, "outputs": [], "source": [ "y_train = df.churn" ] }, { "cell_type": "code", "execution_count": 6, "id": "4d704727-25c1-4000-bbb4-6390bfad72f8", "metadata": {}, "outputs": [], "source": [ "numerical = ['tenure', 'monthlycharges', 'totalcharges']\n", "\n", "categorical = [\n", " 'gender',\n", " 'seniorcitizen',\n", " 'partner',\n", " 'dependents',\n", " 'phoneservice',\n", " 'multiplelines',\n", " 'internetservice',\n", " 'onlinesecurity',\n", " 'onlinebackup',\n", " 'deviceprotection',\n", " 'techsupport',\n", " 'streamingtv',\n", " 'streamingmovies',\n", " 'contract',\n", " 'paperlessbilling',\n", " 'paymentmethod',\n", "]" ] }, { "cell_type": "code", "execution_count": 7, "id": "b2cba1c9-b346-428e-976e-649f1f9bcc72", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
LogisticRegression(solver='liblinear')
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LogisticRegression(solver='liblinear')" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dv = DictVectorizer()\n", "\n", "train_dict = df[categorical + numerical].to_dict(orient='records')\n", "X_train = dv.fit_transform(train_dict)\n", "\n", "model = LogisticRegression(solver='liblinear')\n", "model.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": null, "id": "80f2002c-433b-4e77-9df7-965839859d4a", "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.13.5" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 05-deployment/workshop/test.py ================================================ import requests url = 'http://localhost:9696/predict' # url = 'https://mlzoomcamp-flask-uv.fly.dev/predict' customer = { 'gender': 'female', 'seniorcitizen': 0, 'partner': 'yes', 'dependents': 'no', 'phoneservice': 'no', 'multiplelines': 'no_phone_service', 'internetservice': 'dsl', 'onlinesecurity': 'no', 'onlinebackup': 'yes', 'deviceprotection': 'no', 'techsupport': 'no', 'streamingtv': 'no', 'streamingmovies': 'no', 'contract': 'month-to-month', 'paperlessbilling': 'yes', 'paymentmethod': 'electronic_check', 'tenure': 1, 'monthlycharges': 29.85, 'totalcharges': 29.85 } response = requests.post(url, json=customer) predictions = response.json() if predictions['churn']: print('customer is likely to churn, send promo') else: print('customer is not likely to churn') ================================================ FILE: 05-deployment/workshop/train.py ================================================ #!/usr/bin/env python import pickle import pandas as pd import numpy as np import sklearn from sklearn.feature_extraction import DictVectorizer from sklearn.linear_model import LogisticRegression from sklearn.pipeline import make_pipeline print(f'pandas=={pd.__version__}') print(f'numpy=={np.__version__}') print(f'sklearn=={sklearn.__version__}') def load_data(): data_url = 'https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-03-churn-prediction/WA_Fn-UseC_-Telco-Customer-Churn.csv' df = pd.read_csv(data_url) df.columns = df.columns.str.lower().str.replace(' ', '_') categorical_columns = list(df.dtypes[df.dtypes == 'object'].index) for c in categorical_columns: df[c] = df[c].str.lower().str.replace(' ', '_') df.totalcharges = pd.to_numeric(df.totalcharges, errors='coerce') df.totalcharges = df.totalcharges.fillna(0) df.churn = (df.churn == 'yes').astype(int) return df def train_model(df): numerical = ['tenure', 'monthlycharges', 'totalcharges'] categorical = [ 'gender', 'seniorcitizen', 'partner', 'dependents', 'phoneservice', 'multiplelines', 'internetservice', 'onlinesecurity', 'onlinebackup', 'deviceprotection', 'techsupport', 'streamingtv', 'streamingmovies', 'contract', 'paperlessbilling', 'paymentmethod', ] y_train = df.churn train_dict = df[categorical + numerical].to_dict(orient='records') pipeline = make_pipeline( DictVectorizer(), LogisticRegression(solver='liblinear') ) pipeline.fit(train_dict, y_train) return pipeline def save_model(pipeline, output_file): with open(output_file, 'wb') as f_out: pickle.dump(pipeline, f_out) df = load_data() pipeline = train_model(df) save_model(pipeline, 'model.bin') print('Model saved to model.bin') ================================================ FILE: 05-deployment/workshop/workshop-uv-fastapi.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "4458df13-d0f7-462e-bc80-42169bb1a62b", "metadata": { "_sphinx_cell_id": "500974ae-aca1-4886-8e01-04212cff2196" }, "source": [ "This is a starter notebook for an updated module 5 of ML Zoomcamp\n", "\n", "The code is based on the modules 3 and 4. We use the same dataset: [telco customer churn](https://www.kaggle.com/datasets/blastchar/telco-customer-churn)" ] }, { "cell_type": "code", "execution_count": 2, "id": "a16177e8-cbd2-4088-9bb0-07a0cfb3eee6", "metadata": { "_sphinx_cell_id": "720159b4-24b3-4b65-a5bc-78f27c091658" }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import sklearn" ] }, { "cell_type": "code", "execution_count": 3, "id": "498798c7-1848-47f0-9789-5881ae3658bd", "metadata": { "_sphinx_cell_id": "3d92b02a-5d95-4d33-ad36-ee71be78bd36" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pandas==2.3.1\n", "numpy==2.3.1\n", "sklearn==1.7.0\n" ] } ], "source": [ "print(f'pandas=={pd.__version__}')\n", "print(f'numpy=={np.__version__}')\n", "print(f'sklearn=={sklearn.__version__}')" ] }, { "cell_type": "code", "execution_count": 4, "id": "8afe407b-b259-47ca-a4df-0f098df8435b", "metadata": { "_sphinx_cell_id": "8f3b41ad-89fd-4493-ab83-73fa4fd6aed5" }, "outputs": [], "source": [ "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.linear_model import LogisticRegression" ] }, { "cell_type": "code", "execution_count": 5, "id": "e9e9464c-d8ed-45ea-9e8c-70e6d73842f7", "metadata": { "_sphinx_cell_id": "8e4a456a-e951-4097-a96e-3f9d60b2df7d" }, "outputs": [], "source": [ "data_url = 'https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-03-churn-prediction/WA_Fn-UseC_-Telco-Customer-Churn.csv'\n", "\n", "df = pd.read_csv(data_url)\n", "\n", "df.columns = df.columns.str.lower().str.replace(' ', '_')\n", "\n", "categorical_columns = list(df.dtypes[df.dtypes == 'object'].index)\n", "\n", "for c in categorical_columns:\n", " df[c] = df[c].str.lower().str.replace(' ', '_')\n", "\n", "df.totalcharges = pd.to_numeric(df.totalcharges, errors='coerce')\n", "df.totalcharges = df.totalcharges.fillna(0)\n", "\n", "df.churn = (df.churn == 'yes').astype(int)" ] }, { "cell_type": "code", "execution_count": 6, "id": "8ca89823-6714-42b7-a9a7-d0db94898aee", "metadata": { "_sphinx_cell_id": "e78895de-43bf-47de-af5c-30d1cb63f8de" }, "outputs": [], "source": [ "y_train = df.churn" ] }, { "cell_type": "code", "execution_count": 7, "id": "4d704727-25c1-4000-bbb4-6390bfad72f8", "metadata": { "_sphinx_cell_id": "ee25c793-bf5b-4a08-9f62-f0067eb32dec" }, "outputs": [], "source": [ "numerical = ['tenure', 'monthlycharges', 'totalcharges']\n", "\n", "categorical = [\n", " 'gender',\n", " 'seniorcitizen',\n", " 'partner',\n", " 'dependents',\n", " 'phoneservice',\n", " 'multiplelines',\n", " 'internetservice',\n", " 'onlinesecurity',\n", " 'onlinebackup',\n", " 'deviceprotection',\n", " 'techsupport',\n", " 'streamingtv',\n", " 'streamingmovies',\n", " 'contract',\n", " 'paperlessbilling',\n", " 'paymentmethod',\n", "]" ] }, { "cell_type": "code", "execution_count": 8, "id": "b2cba1c9-b346-428e-976e-649f1f9bcc72", "metadata": { "_sphinx_cell_id": "34dd1bd4-695f-4ade-b85a-7487270f532c" }, "outputs": [ { "data": { "text/html": [ "
LogisticRegression(solver='liblinear')
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LogisticRegression(solver='liblinear')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dv = DictVectorizer()\n", "\n", "train_dict = df[categorical + numerical].to_dict(orient='records')\n", "X_train = dv.fit_transform(train_dict)\n", "\n", "model = LogisticRegression(solver='liblinear')\n", "model.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 11, "id": "80f2002c-433b-4e77-9df7-965839859d4a", "metadata": { "_sphinx_cell_id": "ea9993b9-1ba6-4d12-a0d2-99b8c238974e" }, "outputs": [], "source": [ "datapoint = {\n", " 'gender': 'female',\n", " 'seniorcitizen': 0,\n", " 'partner': 'yes',\n", " 'dependents': 'no',\n", " 'phoneservice': 'no',\n", " 'multiplelines': 'no_phone_service',\n", " 'internetservice': 'dsl',\n", " 'onlinesecurity': 'no',\n", " 'onlinebackup': 'yes',\n", " 'deviceprotection': 'no',\n", " 'techsupport': 'no',\n", " 'streamingtv': 'no',\n", " 'streamingmovies': 'no',\n", " 'contract': 'month-to-month',\n", " 'paperlessbilling': 'yes',\n", " 'paymentmethod': 'electronic_check',\n", " 'tenure': 1,\n", " 'monthlycharges': 29.85,\n", " 'totalcharges': 29.85\n", "}" ] }, { "cell_type": "code", "execution_count": 14, "id": "ef770ee3-1a8a-4f5b-b872-99b51443b304", "metadata": { "_sphinx_cell_id": "3029e553-f2ce-4958-8be2-91494dc33cbd" }, "outputs": [], "source": [ "X = dv.transform(datapoint)" ] }, { "cell_type": "code", "execution_count": null, "id": "2ef6806e-91b0-45c4-a8b0-8e016014718c", "metadata": { "_sphinx_cell_id": "49e8e56b-383a-403f-bede-92765fc41839" }, "outputs": [ { "data": { "text/plain": [ "np.float64(0.33617994559536546)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.predict_proba(X)[0, 1]" ] }, { "cell_type": "code", "execution_count": 20, "id": "6964382c-0494-4da7-87ab-37c5efbf1501", "metadata": { "_sphinx_cell_id": "a92890a5-040c-4621-8389-8e81a4d9a64e" }, "outputs": [], "source": [ "import pickle" ] }, { "cell_type": "code", "execution_count": 21, "id": "041247c3-a348-459b-98f1-9f380e3797cf", "metadata": { "_sphinx_cell_id": "69c17159-d152-440a-9281-afe966593a4b" }, "outputs": [], "source": [ "with open('model.bin', 'wb') as f_out:\n", " pickle.dump((dv, model), f_out)" ] }, { "cell_type": "code", "execution_count": 22, "id": "33d1238a-033f-4094-a5b2-0af7e0d99e86", "metadata": { "_sphinx_cell_id": "47b91d65-c465-4fdf-b3d2-6a73334560e2" }, "outputs": [], "source": [ "with open('model.bin', 'rb') as f_in:\n", " (dv, model) = pickle.load(f_in)" ] }, { "cell_type": "code", "execution_count": 25, "id": "f56b0762-527e-441c-9bf5-1ba0048c77fb", "metadata": { "_sphinx_cell_id": "e4beb4bb-8947-457d-a08a-bd9cec54d324" }, "outputs": [], "source": [ "from sklearn.pipeline import make_pipeline" ] }, { "cell_type": "code", "execution_count": 26, "id": "baf3f68b-71c1-4896-bbdb-7ef0262672ee", "metadata": { "_sphinx_cell_id": "7b98b581-a996-4871-b953-a4d523fa4128" }, "outputs": [], "source": [ "pipeline = make_pipeline(\n", " DictVectorizer(),\n", " LogisticRegression(solver='liblinear')\n", ")" ] }, { "cell_type": "code", "execution_count": 29, "id": "e3dda0e1-0caf-461a-b1f7-af0ff9492b10", "metadata": { "_sphinx_cell_id": "9b2d2f25-a7e6-4e1a-b594-1b8e25ab3c69" }, "outputs": [ { "data": { "text/html": [ "
Pipeline(steps=[('dictvectorizer', DictVectorizer()),\n",
       "                ('logisticregression', LogisticRegression(solver='liblinear'))])
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "Pipeline(steps=[('dictvectorizer', DictVectorizer()),\n", " ('logisticregression', LogisticRegression(solver='liblinear'))])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipeline.fit(train_dict, y_train)" ] }, { "cell_type": "code", "execution_count": null, "id": "c7633e08-d70c-41a6-82c0-d1059e75c900", "metadata": { "_sphinx_cell_id": "d35acc26-ae79-4601-9ac7-92f6881ee9a3" }, "outputs": [ { "data": { "text/plain": [ "np.float64(0.33617994559536546)" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipeline.predict_proba(datapoint)[0, 1]" ] }, { "cell_type": "code", "execution_count": 33, "id": "183f6ef1-b419-40cd-8fa9-cf46a3825dd2", "metadata": { "_sphinx_cell_id": "409ce0b6-7efd-450d-bf35-a6d9fcda67f5" }, "outputs": [], "source": [ "import requests" ] }, { "cell_type": "code", "execution_count": 36, "id": "92e03f99-463c-45f5-b282-ac4adbd8e39c", "metadata": { "_sphinx_cell_id": "6c499eb8-caf1-4abf-bc8d-389aa1e2d62d" }, "outputs": [], "source": [ "url = 'http://localhost:9696/predict'\n", "\n", "customer = {\n", " 'gender': 'female',\n", " 'seniorcitizen': 0,\n", " 'partner': 'yes',\n", " 'dependents': 'no',\n", " 'phoneservice': 'no',\n", " 'multiplelines': 'no_phone_service',\n", " 'internetservice': 'dsl',\n", " 'onlinesecurity': 'no',\n", " 'onlinebackup': 'yes',\n", " 'deviceprotection': 'no',\n", " 'techsupport': 'no',\n", " 'streamingtv': 'no',\n", " 'streamingmovies': 'no',\n", " 'contract': 'month-to-month',\n", " 'paperlessbilling': 'yes',\n", " 'paymentmethod': 'electronic_check',\n", " 'tenure': 1,\n", " 'monthlycharges': 29.85,\n", " 'totalcharges': 29.85\n", "}\n", "\n", "response = requests.post(url, json=customer)" ] }, { "cell_type": "code", "execution_count": 38, "id": "c944566f-fadb-4dca-9293-f9301b82a7b3", "metadata": { "_sphinx_cell_id": "812b6293-8d80-48d2-953c-40d9b2cb06ff" }, "outputs": [], "source": [ "predictions = response.json()" ] }, { "cell_type": "code", "execution_count": 39, "id": "faf73f16-79bb-4983-bb68-6b5aded795ec", "metadata": { "_sphinx_cell_id": "f2ce2a92-ac4a-467b-9315-32906d002981" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "reject loan application\n" ] } ], "source": [ "if predictions['churn']:\n", " print('accept loan application')\n", "else:\n", " print('reject loan application')" ] }, { "cell_type": "code", "execution_count": 46, "id": "f373982d-e547-4435-a522-2abf010e7006", "metadata": { "_sphinx_cell_id": "cf0e124d-cc0b-4013-83e5-314d0fbb1249" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "count 7043.000000\n", "mean 32.371149\n", "std 24.559481\n", "min 0.000000\n", "25% 9.000000\n", "50% 29.000000\n", "75% 55.000000\n", "max 72.000000\n", "Name: tenure, dtype: float64\n", "\n", "count 7043.000000\n", "mean 64.761692\n", "std 30.090047\n", "min 18.250000\n", "25% 35.500000\n", "50% 70.350000\n", "75% 89.850000\n", "max 118.750000\n", "Name: monthlycharges, dtype: float64\n", "\n", "count 7043.000000\n", "mean 2279.734304\n", "std 2266.794470\n", "min 0.000000\n", "25% 398.550000\n", "50% 1394.550000\n", "75% 3786.600000\n", "max 8684.800000\n", "Name: totalcharges, dtype: float64\n", "\n", "gender\n", "male 3555\n", "female 3488\n", "Name: count, dtype: int64\n", "\n", "seniorcitizen\n", "0 5901\n", "1 1142\n", "Name: count, dtype: int64\n", "\n", "partner\n", "no 3641\n", "yes 3402\n", "Name: count, dtype: int64\n", "\n", "dependents\n", "no 4933\n", "yes 2110\n", "Name: count, dtype: int64\n", "\n", "phoneservice\n", "yes 6361\n", "no 682\n", "Name: count, dtype: int64\n", "\n", "multiplelines\n", "no 3390\n", "yes 2971\n", "no_phone_service 682\n", "Name: count, dtype: int64\n", "\n", "internetservice\n", "fiber_optic 3096\n", "dsl 2421\n", "no 1526\n", "Name: count, dtype: int64\n", "\n", "onlinesecurity\n", "no 3498\n", "yes 2019\n", "no_internet_service 1526\n", "Name: count, dtype: int64\n", "\n", "onlinebackup\n", "no 3088\n", "yes 2429\n", "no_internet_service 1526\n", "Name: count, dtype: int64\n", "\n", "deviceprotection\n", "no 3095\n", "yes 2422\n", "no_internet_service 1526\n", "Name: count, dtype: int64\n", "\n", "techsupport\n", "no 3473\n", "yes 2044\n", "no_internet_service 1526\n", "Name: count, dtype: int64\n", "\n", "streamingtv\n", "no 2810\n", "yes 2707\n", "no_internet_service 1526\n", "Name: count, dtype: int64\n", "\n", "streamingmovies\n", "no 2785\n", "yes 2732\n", "no_internet_service 1526\n", "Name: count, dtype: int64\n", "\n", "contract\n", "month-to-month 3875\n", "two_year 1695\n", "one_year 1473\n", "Name: count, dtype: int64\n", "\n", "paperlessbilling\n", "yes 4171\n", "no 2872\n", "Name: count, dtype: int64\n", "\n", "paymentmethod\n", "electronic_check 2365\n", "mailed_check 1612\n", "bank_transfer_(automatic) 1544\n", "credit_card_(automatic) 1522\n", "Name: count, dtype: int64\n", "\n" ] } ], "source": [ "for n in numerical:\n", " print(df[n].describe())\n", " print()\n", "\n", "for c in categorical:\n", " print(df[c].value_counts())\n", " print()" ] }, { "cell_type": "code", "execution_count": null, "id": "9ba8cae3-c83b-4522-8e1c-1ba0b3426ee5", "metadata": { "_sphinx_cell_id": "414a64a0-1c4a-4d1a-a80f-a89fa6d5b5ba" }, "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.13.5" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 06-trees/01-credit-risk.md ================================================ ## 6.1 Credit risk scoring project [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning) ## Notes In this session we'll learn about decision trees and ensemble learning algorithms. The questions that we try to address this week are, "What are decision trees? How are they different from ensemble algorithms? How can we implement and fine-tune these models to make binary classification predictions?" To be specific, we'll use [credit scoring data](https://github.com/gastonstat/CreditScoring) to build a model that predicts whether a bank should lend loan to a client or not. The bank takes these decisions based on the historical record. In the credit scoring classification problem, - if the model returns 0, this means, the client is very likely to payback the loan and the bank will approve the loan. - if the model returns 1, then the client is considered as a `defaulter` and the bank may not approve the loan. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/16/ml-zoomcamp-2023-decision-trees-and-ensemble-learning-part-1/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 6: Decision Trees and Ensemble Learning](./) * Next: [Data cleaning and preparation](02-data-prep.md) ================================================ FILE: 06-trees/02-data-prep.md ================================================ ## 6.2 Data cleaning and preparation [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning) ## Notes In this section we clean and prepare the [dataset](https://github.com/gastonstat/CreditScoring/raw/master/CreditScoring.csv) for the model which involves the following steps: - Download the data from the given link. - Reformat categorical columns (`status`, `home`, `marital`, `records`, and `job`) by mapping with appropriate values. - Replace the maximum value of `income`, `assests`, and `debt` columns with NaNs. - Replace the NaNs in the dataframe with `0` (*will be shown in the next lesson*). - Extract only those rows in the column `status` who are either ok or default as value. - Split the data in a two-step process which finally leads to the distribution of 60% train, 20% validation, and 20% test sets with random seed to `11`. - Prepare target variable `status` by converting it from categorical to binary, where 0 represents `ok` and 1 represents `default`. - Finally delete the target variable from the train/val/test dataframe. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/17/ml-zoomcamp-2023-decision-trees-and-ensemble-learning-part-2/) * [Notes from Peter Ernicke](https://knowmledge.com/2023/10/18/ml-zoomcamp-2023-decision-trees-and-ensemble-learning-part-3/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 6: Decision Trees and Ensemble Learning](./) * Previous: [Credit risk scoring project](01-credit-risk.md) * Next: [Decision trees](03-decision-trees.md) ================================================ FILE: 06-trees/03-decision-trees.md ================================================ ## 6.3 Decision trees [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning) ## Notes Decision Trees are powerful algorithms, capable of fitting complex datasets. The decision trees make predictions based on the bunch of *if/else* statements by splitting a node into two or more sub-nodes. With versatility, the decision tree is also prone to overfitting. One of the reasons why this algorithm often overfits is its depth. It tends to memorize all the patterns in the train data but struggles to perform well on the unseen data (validation or test set). To overcome the overfitting problem, we can reduce the complexity of the algorithm by reducing the depth size. A decision tree with a depth of 1 is called `decision stump` and has only one split from the root. **Classes, functions, and methods**: - `DecisionTreeClassifier`: classification model from `sklearn.tree` class. - `max_depth`: hyperparameter to control the maximum depth of decision tree algorithm. - `export_text`: method from `sklearn.tree` class to display the text report showing the rules of a decision tree. *Note*: we have already covered `DictVectorizer` in session 3 and `roc_auc_score` in session 4 respectively. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/19/ml-zoomcamp-2023-decision-trees-and-ensemble-learning-part-4/) * [Notes from Peter Ernicke](https://knowmledge.com/2023/10/20/ml-zoomcamp-2023-decision-trees-and-ensemble-learning-part-5/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 6: Decision Trees and Ensemble Learning](./) * Previous: [Data cleaning and preparation](02-data-prep.md) * Next: [Decision tree learning algorithm](04-decision-tree-learning.md) ================================================ FILE: 06-trees/04-decision-tree-learning.md ================================================ ## 6.4 Decision tree learning algorithm [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning) ## Notes This lesson first reviews the topics learned in the previous lesson about how to train a decision tree using scikit-learn, and handle a decision tree model not generalizing well due to overfitting of the data. In this lesson, we learn about how to best split a decision tree and different classification criteria that can be used to split a tree. We dive deep in an example, splitting trees with `misclassification` criteria. Additionally, different stopping criteria to break the iterative tree split are discussed. * **Structure of a decision tree**: A decision tree is a data structure composed of **nodes** (which contain conditions) and **branches** (which represent the values for a condition: True or False). The tree starts with a **root node**, which is the parent of two other nodes, and each of these nodes can also be the parent of others. At the last level of the tree, there are terminal nodes, also called **leaves**. * **Depth of a decision tree**: The **depth** of a tree is the number of levels it has, or simply the length of the longest path from the root node to a leaf node. * **Rules & Conditions, Thresholds**: The learning algorithm for a decision tree involves determining the best **conditions** to split the data at each node in order to achieve the best possible classifier. When there are many **features**, the algorithm considers each feature with its optimized **threshold** to determine the best feature for splitting at a particular node. In essence, at each node, the algorithm evaluates all possible thresholds for every feature and calculates the resulting misclassification rate. It then selects the condition (feature and threshold) that yields the lowest impurity. * **Misclassification rate**: After each split, the goal is to divide the data into two sets that are as **pure** as possible. This means that the data within each set should belong predominantly to either one class, or the other. Another way to describe this is to aim for the lowest possible **misclassification rate** (impurity). The misclassification rate is a weighted average of the error rates obtained after splitting the data into two sets. The predicted class for each set is determined by the **majority class** present in this set. * **Impurity criteria**: Common misclassification rate measurements are **GINI Impurity** and **Entropy**. It is also possible to use **MSE** for regression problems. * **Decision trees can be used to solve regression problems**: While we focused on decision tree classifiers, it's important to note that decision trees can also be applied to regression problems using decision tree regressors. * **Stopping Criteria**: The process of recursively splitting the data at each child node eventually stops based on certain **stopping criteria**. These criteria prevent the model from overfitting and include: * The group is already **pure**: 0% impurity. * The **maximum depth** has been reached. * The group is **smaller** than the minimum size set for groups. * The maximum number of **leaves/terminal nodes** has been reached. #### Decision Tree Learning Algorithm in a Nutshell * At a node, find the best split. * Stop if max\_depth is reached. * For each child node, if the node is sufficiently large and not pure, repeat the process from the beginning. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/21/ml-zoomcamp-2023-decision-trees-and-ensemble-learning-part-6/) * [Notes from Peter Ernicke](https://knowmledge.com/2023/10/22/ml-zoomcamp-2023-decision-trees-and-ensemble-learning-part-7/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 6: Decision Trees and Ensemble Learning](./) * Previous: [Decision trees](03-decision-trees.md) * Next: [Decision trees parameter tuning](05-decision-tree-tuning.md) ================================================ FILE: 06-trees/05-decision-tree-tuning.md ================================================ ## 6.5 Decision trees parameter tuning [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning) ## Notes In this lesson, we will discuss about different parameters used to control a Decision Tree (DT). Two of them, `max_depth` and `min_samples_leaf` have a greater importance than the others. We will further see how we first tune `max_depth` parameter and then move to tuning other parameters will help. After that, a dataframe will be created with all possible combinations of `max_depth`, `min_sample_leaf` and the auc score corresponding to them. These results will be visualized using a heatmap by pivoting the dataframe to easily determine the best possible `max_depth` and `min_samples_leaf` combination. Finally, the DT will be retrained using the identified parameter combination. The DT so trained will be viewed as a tree diagram, for visualizing decision rules. ### Steps * **Fine-Tuning Process:** iterate to find optimal parameter settings. * Start by tuning `max_depth` with various values to determine a subset of optimal depths. * Then, using this subset, fine-tune the model further by exploring different `min_samples_leaf` values. This method is computationally efficient for **large datasets**, though it may not be optimal for smaller ones. * **Heatmaps for Visualization:** Store the scores (e.g., AUC) obtained during tuning in a pivot table, and create a heatmap with `seaborn` to easily identify high score areas, which helps pinpoint the optimal `max_depth` and `min_samples_leaf` combination. **NB:** Choose parameter values that effectively control the tree's size and avoid values like 'nan' (Not a Number), even if they seem to lead to better scores. ### Importance of `max_depth` and `min_samples_leaf` * **Controlling Overfitting:** these parameters play a critical role in preventing overfitting. * `max_depth` limits the tree's complexity, preventing it from growing too deep and memorizing the training data. * `min_samples_leaf` ensures that leaf nodes have a sufficient number of samples, reducing the chance of creating nodes that are too specific to the training data. * **Impact on Bias and Variance:** They also affect the model's bias and variance. * Increasing `max_depth` and decreasing `min_samples_leaf` can lead to a more complex model with lower bias but higher variance. * Decreasing `max_depth` and increasing `min_samples_leaf` results in a simpler model with higher bias but lower variance. It's then important to find the right balance between `max_depth` and `min_samples_leaf` to achieve optimal model performance. This involves a trade-off between bias and variance, and the best values depend on the specific dataset and problem. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/23/ml-zoomcamp-2023-decision-trees-and-ensemble-learning-part-8/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 6: Decision Trees and Ensemble Learning](./) * Previous: [Decision tree learning algorithm](04-decision-tree-learning.md) * Next: [Ensemble learning and random forest](06-random-forest.md) ================================================ FILE: 06-trees/06-random-forest.md ================================================ ## 6.6 Ensemble learning and random forest [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning) ## Notes **Ensemble learning** is a machine learning paradigm where multiple models, often referred to as 'weak learners', are strategically combined to solve a particular computational intelligence problem. This approach frequently yields superior predictive performance compared to using a single model. **Random Forest** is an example of ensemble learning where each model is a decision tree and their predictions are aggregated to identify the most popular result. Random forest only selects a random subset of features from the original data to make predictions. The 'randomness' in Random Forest stems from two key aspects: - Each tree is potentially trained on a bootstrapped sample of the original data, introducing randomness at the row level. - At each node during tree construction, only a random subset of features is considered for splitting. This feature randomness helps decorrelate the trees, preventing overfitting and promoting generalization to unseen data. **Bootstrapping** is a resampling technique where numerous subsets of the data are created by sampling the original data with replacement. This means that some data points may appear multiple times in a single bootstrap sample, while others may be excluded. In Random Forest, each decision tree is trained on a distinct bootstrap sample, further contributing to the diversity and robustness of the ensemble. **Parameter tuning** is crucial for optimizing the performance of a Random Forest model. Two critical parameters are `max_depth`, which controls the maximum depth of each decision tree, and `n_estimators`, which determines the number of trees in the forest. Increasing `max_depth` allows for more complex trees, potentially leading to overfitting. Conversely, a larger `n_estimators` generally improves model accuracy but increases computational cost. In random forests, the decision trees are trained independently to each other. **Classes, functions, and methods**: - `from sklearn.ensemble import RandomForestClassifier`: random forest classifier from sklearn ensemble class. - `plt.plot(x, y)`: draw line plot for the values of y against x values. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/24/ml-zoomcamp-2023-decision-trees-and-ensemble-learning-part-9/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 6: Decision Trees and Ensemble Learning](./) * Previous: [Decision trees parameter tuning](05-decision-tree-tuning.md) * Next: [Gradient boosting and XGBoost](07-boosting.md) ================================================ FILE: 06-trees/07-boosting.md ================================================ ## 6.7 Gradient boosting and XGBoost [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning) ## Notes **Gradient Boosting** Unlike Random Forest where each decision tree trains independently, in the Gradient Boosting Trees, the models are combined sequentially, where each model takes the prediction errors made by the previous model and then tries to improve the prediction. This process continues to `n` number of iterations, and in the end, all the predictions get combined to make the final prediction. XGBoost is one of the libraries which implements the gradient boosting technique. To make use of the library, we need to install with `pip install xgboost`. To train and evaluate the model, we need to wrap our train and validation data into a special data structure from XGBoost which is called `DMatrix`. This data structure is optimized to train XGBoost models faster. **XGBoost Training Parameters** * `eta`: learning rate, which indicates how fast the model learns. * `max_depth`: to control the size of the trees. * `min_child_weight`: to control the minimum size of a child node. * `objective`: To specify which problem we are trying to solve, either regression, or classification (binary: `'binary:logistic'`, or other). * `nthread`: 8, used for parallelized training. * `seed`: 1, for reproducibility. * `verbosity`: 1 (`True`) to show warnings, if any, during model training. **Classes, functions, and methods**: - `xgb.train()`: method to train xgboost model. - `xgb_params`: key-value pairs of hyperparameters to train xgboost model. - `watchlist`: list to store training and validation data to evaluate the performance of the model after each training iteration. The list takes tuple of train and validation set from DMatrix wrapper, for example, `watchlist = [(dtrain, 'train'), (dval, 'val')]`. - `%%capture output`: IPython magic command which captures the standard output and standard error of a cell. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
- [Notes from Peter Ernicke](https://knowmledge.com/2023/10/25/ml-zoomcamp-2023-decision-trees-and-ensemble-learning-part-10/) - [Notes from Peter Ernicke](https://knowmledge.com/2023/10/26/ml-zoomcamp-2023-decision-trees-and-ensemble-learning-part-11/) ### Extracting results from `xgb.train(..)` In the video we use jupyter magic command `%%capture output` to extract the output of `xgb.train(..)` method. Alternatively you can use the `evals_result` parameter of the `xgb.train(..)`. You can pass an empty dictionary in for this parameter and the train() method will populate it with the results. The result will be of type `OrderedDict` so we have to transform it to a dataframe. For this, `zip()` can help. Here's an example code snippet: ```python evals_result = {} model = xgb.train(params=xgb_params, dtrain=dm_train, num_boost_round=200, verbose_eval=5, evals=watchlist, evals_result=evals_result) columns = ['iter', 'train_auc', 'val_auc'] train_aucs = list(evals_result['train'].values())[0] val_aucs = list(evals_result['val'].values())[0] df_scores = pd.DataFrame( list(zip( range(1, len(train_aucs) + 1), train_aucs, val_aucs )), columns=columns) plt.plot(df_scores.iter, df_scores.train_auc, label='train') plt.plot(df_scores.iter, df_scores.val_auc, label='val') plt.legend() ``` ## Installing XGBoost on Mac Some students reported problems with installing XGBoost on Mac. When you run `pip install xgboost` and when you try to `import xgboost` in a script you might get an warning or error stating that libomp has not been installed and to run `brew install libomp` in the terminal. Be careful: this will install a version of libomp that does not work with `xgboost`! This shows in one of two ways after attempting to run `xgb.DMatrix(X_train, label=y_train, feature_names=features)`: - **python script:** Segmentation fault: 11 - **jupyter notebook:** Never finished running, and notebook is unresponsive until kernal restart. However confusingly it sometimes works ### Conda If you use anaconda or miniconda, try installing xgboost with conda. First, uninstall xgboost with pip (if you already installed it previously with pip): ```bash pip uninstall xgboost ``` Then re-install it with conda: ```bash conda install -c conda-forge xgboost ``` It will also install the required version of libomp. ### Without conda If you don't use conda, you can manualy install a different version of libopm that works well with XGBoost. The versions of libomp with this problem are 12.x.x and 13.x.x, however issue has a workaround [xgboost issue #7039](https://github.com/dmlc/xgboost/issues/7039) installing the older libomp 11 using the terminal. In the terminal run `brew list --version libomp`, to determine the current version of libomp if any. Then if you have a problematic version run `brew unlink libomp`. To install the old version of libomp run: ```bash brew update wget https://raw.githubusercontent.com/chenrui333/homebrew-core/0094d1513ce9e2e85e07443b8b5930ad298aad91/Formula/libomp.rb brew install --build-from-source ./libomp.rb ``` and then run ```bash brew list --version libomp ``` to check that everything worked, it should now state `libomp 11.1.0`, and your code should now be able to run. ## Navigation - [Machine Learning Zoomcamp course](../) - [Session 6: Decision Trees and Ensemble Learning](./) - Previous: [Ensemble learning and random forest](06-random-forest.md) - Next: [XGBoost parameter tuning](08-xgb-tuning.md) ================================================ FILE: 06-trees/08-xgb-tuning.md ================================================ ## 6.8 XGBoost parameter tuning [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning) ## Notes XGBoost has various tunable parameters but the three most important ones are: - `eta` (default=0.3) - It is also called `learning_rate` and is used to prevent overfitting by regularizing the weights of new features in each boosting step. range: [0, 1] - `max_depth` (default=6) - Maximum depth of a tree. Increasing this value will make the model more complex and more likely to overfit. range: [0, inf] - `min_child_weight` (default=1) - Minimum number of samples in leaf node. range: [0, inf] For XGBoost models, there are other ways of finding the best parameters as well but the one we implement in the notebook follows the sequence of: - First find the best value for `eta` - Second, find the best value for `max_depth` - Third, find the best value for `min_child_weight` Other useful parameter are: - `subsample` (default=1) - Subsample ratio of the training instances. Setting it to 0.5 means that model would randomly sample half of the training data prior to growing trees. range: (0, 1] - `colsample_bytree` (default=1) - This is similar to random forest, where each tree is made with the subset of randomly choosen features. - `lambda` (default=1) - Also called `reg_lambda`. L2 regularization term on weights. Increasing this value will make model more conservative. - `alpha` (default=0) - Also called `reg_alpha`. L1 regularization term on weights. Increasing this value will make model more conservative. ### Alternative: Tuning XGBoost using a loop Instead of repeating the training process manually for each `eta` value, you can use a loop to automate it (and other parameters to be tuned): ```python # Train XGBoost models for each eta and store AUC results scores = {} # dictionary to store results for each eta etas = [0.01, 0.05, 0.1, 0.3, 1.0] # list of parameter values. in this case it is 'eta'. for eta in etas: evals_result = {} xgb_params = { 'eta': eta, 'max_depth': 6, 'min_child_weight': 1, 'objective': 'binary:logistic', 'eval_metric': 'auc', 'nthread': 8, 'seed': 1, 'verbosity': 1 } model = xgb.train( xgb_params, dtrain, evals=watchlist, verbose_eval=0, num_boost_round=200, evals_result=evals_result ) columns = ['iter', 'train_auc', 'val_auc'] train_aucs = list(evals_result['train'].values())[0] val_aucs = list(evals_result['val'].values())[0] df_results = pd.DataFrame( list(zip(range(1, len(train_aucs) + 1), train_aucs, val_aucs)), columns=columns ) key = f'eta={eta}' scores[key] = df_results ``` Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/27/ml-zoomcamp-2023-decision-trees-and-ensemble-learning-part-12/) * [Notes from Peter Ernicke](https://knowmledge.com/2023/10/28/ml-zoomcamp-2023-decision-trees-and-ensemble-learning-part-13/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 6: Decision Trees and Ensemble Learning](./) * Previous: [Gradient boosting and XGBoost](07-boosting.md) * Next: [Selecting the best model](09-final-model.md) ================================================ FILE: 06-trees/09-final-model.md ================================================ ## 6.9 Selecting the best model [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning) ## Notes We select the final model from decision tree, random forest, or xgboost based on the best auc scores. After that we prepare the `df_full_train` and `df_test` to train and evaluate the final model. If there is not much difference between model auc scores on the train as well as test data then the model has generalized the patterns well enough. Generally, XGBoost models perform better on tabular data than other machine learning models but the downside is that these model are easy to overfit cause of the high number of hyperparameter. Therefore, XGBoost models require a lot more attention for parameters tuning to optimize them. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/10/29/ml-zoomcamp-2023-decision-trees-and-ensemble-learning-part-14/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 6: Decision Trees and Ensemble Learning](./) * Previous: [XGBoost parameter tuning](08-xgb-tuning.md) * Next: [Summary](10-summary.md) ================================================ FILE: 06-trees/10-summary.md ================================================ ## 6.10 Summary [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning) ## Notes - Decision trees learn if-then-else rules from data. - Finding the best split: select the least impure split. This algorithm can overfit, that's why we control it by limiting the max depth and the size of the group. - Random forest is a way of combining multiple decision trees. It should have a diverse set of models to make good predictions. - Gradient boosting trains model sequentially: each model tries to fix errors of the previous model. XGBoost is an implementation of gradient boosting. Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 6: Decision Trees and Ensemble Learning](./) * Previous: [Selecting the best model](09-final-model.md) * Next: [Explore more](11-explore-more.md) ================================================ FILE: 06-trees/11-explore-more.md ================================================ ## 6.11 Explore more * For this dataset we didn't do EDA or feature engineering. You can do it to get more insights into the problem. * For random forest, there are more parameters that we can tune. Check max_features and bootstrap. * There's a variation of random forest caled "extremely randomized trees", or "extra trees". Instead of selecting the best split among all possible thresholds, it selects a few thresholds randomly and picks the best one among them. Because of that extra trees never overfit. In Scikit-Learn, they are implemented in ExtraTreesClassifier. Try it for this project. * XGBoost can deal with NAs - we don't have to do fillna for it. Check if not filling NA's help improve performance. * Experiment with other XGBoost parameters: subsample and colsample_bytree. * When selecting the best split, decision trees find the most useful features. This information can be used for understanding which features are more important than otheres. See example here for random forest (it's the same for plain decision trees) and for xgboost * Trees can also be used for solving the regression problems: check DecisionTreeRegressor, RandomForestRegressor and the objective=reg:squarederror parameter for XGBoost. ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 6: Decision Trees and Ensemble Learning](./) * Previous: [Summary](10-summary.md) * Next: [Homework](homework.md) ================================================ FILE: 06-trees/README.md ================================================ ## 6. Decision Trees and Ensemble Learning - 6.1 [Credit risk scoring project](01-credit-risk.md) - 6.2 [Data cleaning and preparation](02-data-prep.md) - 6.3 [Decision trees](03-decision-trees.md) - 6.4 [Decision tree learning algorithm](04-decision-tree-learning.md) - 6.5 [Decision trees parameter tuning](05-decision-tree-tuning.md) - 6.6 [Ensemble learning and random forest](06-random-forest.md) - 6.7 [Gradient boosting and XGBoost](07-boosting.md) - 6.8 [XGBoost parameter tuning](08-xgb-tuning.md) - 6.9 [Selecting the best model](09-final-model.md) - 6.10 [Summary](10-summary.md) - 6.11 [Explore more](11-explore-more.md) - 6.12 [Homework](homework.md) ## Community notes Did you take notes? You can share them here (or in each unit separately) * [Kwang Yang's Notes](https://www.kaggle.com/kwangyangchia/notebook-for-lesson-6-mle) * [Alvaro Navas' Notes](https://github.com/ziritrion/ml-zoomcamp/blob/main/notes/06_trees.md) * [Notes from froukje](https://github.com/froukje/ml-zoomcamp/blob/main/week6/Lecture_6_Decision_Trees_Ensemble_Learning.ipynb) * [Decision Trees and Ensembled Learning by Oscar Garcia](https://github.com/ozkary/machine-learning-engineering/tree/main/06-trees) * [Notes from Peter Ernicke](https://knowmledge.com/category/courses/ml-zoomcamp/decision-trees/) * [Notes from Maximilien Eyengue](https://github.com/maxim-eyengue/Python-Codes/blob/main/ML_Zoomcamp_2024/06_trees/Summary_Session_06.md) * [Notes from Kemal Dahha](https://github.com/kemaldahha/machine-learning-course/blob/main/week_6_notes.ipynb) * Add your notes here ================================================ FILE: 06-trees/homework.md ================================================ ## Homework * For 2025 cohort homework, check [the 2025 cohort folder](../cohorts/2025/06-trees/homework.md) * For 2024 cohort homework, check [the 2024 cohort folder](../cohorts/2024/06-trees/homework.md) * For 2023 cohort homework, check [the 2023 cohort folder](../cohorts/2023/) * For 2022 cohort homework, check [the 2022 cohort folder](../cohorts/2022/) * For 2021 cohort homework and solution, check [the 2021 cohort folder](../cohorts/2021/06-trees/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 6: Decision Trees and Ensemble Learning](./) * Previous: [Explore more](11-explore-more.md) ================================================ FILE: 06-trees/meta.csv ================================================ lesson,name,page_name,video,slides,notebook 1,Credit risk scoring project,01-credit-risk.md,https://www.youtube.com/watch?v=GJGmlfZoCoU,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning,notebook.ipynb 2,Data cleaning and preparation,02-data-prep.md,https://www.youtube.com/watch?v=tfuQdI3YO2c,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning,notebook.ipynb 3,Decision trees,03-decision-trees.md,https://www.youtube.com/watch?v=YGiQvFbSIg8,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning,notebook.ipynb 4,Decision tree learning algorithm,04-decision-tree-learning.md,https://www.youtube.com/watch?v=XODz6LwKY7g,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning,notebook.ipynb 5,Decision trees parameter tuning,05-decision-tree-tuning.md,https://www.youtube.com/watch?v=XJaxwH50Qok,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning,notebook.ipynb 6,Ensemble learning and random forest,06-random-forest.md,https://www.youtube.com/watch?v=FZhcmOfNNZE,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning,notebook.ipynb 7,Gradient boosting and XGBoost,07-boosting.md,https://www.youtube.com/watch?v=xFarGClszEM,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning,notebook.ipynb 8,XGBoost parameter tuning,08-xgb-tuning.md,https://www.youtube.com/watch?v=VX6ftRzYROM,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning,notebook.ipynb 9,Selecting the best model,09-final-model.md,https://www.youtube.com/watch?v=lqdnyIVQq,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning,notebook.ipynb 10,Summary,10-summary.md,https://www.youtube.com/watch?v=JZ6sRZ_5j_c,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-6-decision-trees-and-ensemble-learning,notebook.ipynb 11,Explore more,11-explore-more.md,,, 12,Homework,homework.md,https://www.youtube.com/watch?v=WoXSOyzcIbU,,homework-6-solution.ipynb ================================================ FILE: 06-trees/meta.json ================================================ { "data": "meta.csv", "session": 6, "name": "Decision Trees and Ensemble Learning" } ================================================ FILE: 06-trees/notebook.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "52472024", "metadata": {}, "source": [ "# 6. Decision Trees and Ensemble Learning\n", "\n", "\n", "This week, we'll talk about decision trees and tree-based ensemble algorithms" ] }, { "cell_type": "markdown", "id": "5b5d753c", "metadata": {}, "source": [ "## 6.1 Credit risk scoring project\n", "\n", "* Dataset: https://github.com/gastonstat/CreditScoring" ] }, { "cell_type": "code", "execution_count": 9, "id": "d04e7bea", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "import seaborn as sns\n", "from matplotlib import pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "id": "a7ff5c0c", "metadata": {}, "source": [ "## 6.2 Data cleaning and preparation" ] }, { "cell_type": "markdown", "id": "928e8f5f", "metadata": {}, "source": [ "* Downloading the dataset\n", "* Re-encoding the categorical variables\n", "* Doing the train/validation/test split" ] }, { "cell_type": "code", "execution_count": 5, "id": "8ed7436d", "metadata": {}, "outputs": [], "source": [ "data = 'https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-06-trees/CreditScoring.csv'" ] }, { "cell_type": "code", "execution_count": 6, "id": "b6a9b129", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2021-10-10 07:19:46-- https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-06-trees/CreditScoring.csv\n", "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n", "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 182489 (178K) [text/plain]\n", "Saving to: ‘CreditScoring.csv’\n", "\n", "CreditScoring.csv 100%[===================>] 178.21K 396KB/s in 0.5s \n", "\n", "2021-10-10 07:19:47 (396 KB/s) - ‘CreditScoring.csv’ saved [182489/182489]\n", "\n" ] } ], "source": [ "!wget $data" ] }, { "cell_type": "code", "execution_count": 7, "id": "7f8f141a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\"Status\",\"Seniority\",\"Home\",\"Time\",\"Age\",\"Marital\",\"Records\",\"Job\",\"Expenses\",\"Income\",\"Assets\",\"Debt\",\"Amount\",\"Price\"\r\n", "1,9,1,60,30,2,1,3,73,129,0,0,800,846\r\n", "1,17,1,60,58,3,1,1,48,131,0,0,1000,1658\r\n", "2,10,2,36,46,2,2,3,90,200,3000,0,2000,2985\r\n", "1,0,1,60,24,1,1,1,63,182,2500,0,900,1325\r\n", "1,0,1,36,26,1,1,1,46,107,0,0,310,910\r\n", "1,1,2,60,36,2,1,1,75,214,3500,0,650,1645\r\n", "1,29,2,60,44,2,1,1,75,125,10000,0,1600,1800\r\n", "1,9,5,12,27,1,1,1,35,80,0,0,200,1093\r\n", "1,0,2,60,32,2,1,3,90,107,15000,0,1200,1957\r\n" ] } ], "source": [ "!head CreditScoring.csv" ] }, { "cell_type": "code", "execution_count": 10, "id": "49807b73", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(data)" ] }, { "cell_type": "code", "execution_count": 13, "id": "28b3fadb", "metadata": {}, "outputs": [], "source": [ "df.columns = df.columns.str.lower()" ] }, { "cell_type": "code", "execution_count": 16, "id": "e7457322", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1 3200\n", "2 1254\n", "0 1\n", "Name: status, dtype: int64" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.status.value_counts()" ] }, { "cell_type": "code", "execution_count": 18, "id": "ce035396", "metadata": {}, "outputs": [], "source": [ "status_values = {\n", " 1: 'ok',\n", " 2: 'default',\n", " 0: 'unk'\n", "}\n", "\n", "df.status = df.status.map(status_values)" ] }, { "cell_type": "code", "execution_count": 20, "id": "ab86b3ef", "metadata": {}, "outputs": [], "source": [ "home_values = {\n", " 1: 'rent',\n", " 2: 'owner',\n", " 3: 'private',\n", " 4: 'ignore',\n", " 5: 'parents',\n", " 6: 'other',\n", " 0: 'unk'\n", "}\n", "\n", "df.home = df.home.map(home_values)\n", "\n", "marital_values = {\n", " 1: 'single',\n", " 2: 'married',\n", " 3: 'widow',\n", " 4: 'separated',\n", " 5: 'divorced',\n", " 0: 'unk'\n", "}\n", "\n", "df.marital = df.marital.map(marital_values)\n", "\n", "records_values = {\n", " 1: 'no',\n", " 2: 'yes',\n", " 0: 'unk'\n", "}\n", "\n", "df.records = df.records.map(records_values)\n", "\n", "job_values = {\n", " 1: 'fixed',\n", " 2: 'partime',\n", " 3: 'freelance',\n", " 4: 'others',\n", " 0: 'unk'\n", "}\n", "\n", "df.job = df.job.map(job_values)" ] }, { "cell_type": "code", "execution_count": 21, "id": "f1d8917e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
statusseniorityhometimeagemaritalrecordsjobexpensesincomeassetsdebtamountprice
0ok9rent6030marriednofreelance7312900800846
1ok17rent6058widownofixed481310010001658
2default10owner3646marriedyesfreelance902003000020002985
3ok0rent6024singlenofixed63182250009001325
4ok0rent3626singlenofixed4610700310910
\n", "
" ], "text/plain": [ " status seniority home time age marital records job expenses \\\n", "0 ok 9 rent 60 30 married no freelance 73 \n", "1 ok 17 rent 60 58 widow no fixed 48 \n", "2 default 10 owner 36 46 married yes freelance 90 \n", "3 ok 0 rent 60 24 single no fixed 63 \n", "4 ok 0 rent 36 26 single no fixed 46 \n", "\n", " income assets debt amount price \n", "0 129 0 0 800 846 \n", "1 131 0 0 1000 1658 \n", "2 200 3000 0 2000 2985 \n", "3 182 2500 0 900 1325 \n", "4 107 0 0 310 910 " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 23, "id": "40962339", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
senioritytimeageexpensesincomeassetsdebtamountprice
count4455.04455.04455.04455.04455.04455.04455.04455.04455.0
mean8.046.037.056.0763317.01060341.0404382.01039.01463.0
std8.015.011.020.08703625.010217569.06344253.0475.0628.0
min0.06.018.035.00.00.00.0100.0105.0
25%2.036.028.035.080.00.00.0700.01118.0
50%5.048.036.051.0120.03500.00.01000.01400.0
75%12.060.045.072.0166.06000.00.01300.01692.0
max48.072.068.0180.099999999.099999999.099999999.05000.011140.0
\n", "
" ], "text/plain": [ " seniority time age expenses income assets \\\n", "count 4455.0 4455.0 4455.0 4455.0 4455.0 4455.0 \n", "mean 8.0 46.0 37.0 56.0 763317.0 1060341.0 \n", "std 8.0 15.0 11.0 20.0 8703625.0 10217569.0 \n", "min 0.0 6.0 18.0 35.0 0.0 0.0 \n", "25% 2.0 36.0 28.0 35.0 80.0 0.0 \n", "50% 5.0 48.0 36.0 51.0 120.0 3500.0 \n", "75% 12.0 60.0 45.0 72.0 166.0 6000.0 \n", "max 48.0 72.0 68.0 180.0 99999999.0 99999999.0 \n", "\n", " debt amount price \n", "count 4455.0 4455.0 4455.0 \n", "mean 404382.0 1039.0 1463.0 \n", "std 6344253.0 475.0 628.0 \n", "min 0.0 100.0 105.0 \n", "25% 0.0 700.0 1118.0 \n", "50% 0.0 1000.0 1400.0 \n", "75% 0.0 1300.0 1692.0 \n", "max 99999999.0 5000.0 11140.0 " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe().round()" ] }, { "cell_type": "code", "execution_count": 28, "id": "476a7da9", "metadata": {}, "outputs": [], "source": [ "for c in ['income', 'assets', 'debt']:\n", " df[c] = df[c].replace(to_replace=99999999, value=np.nan)" ] }, { "cell_type": "code", "execution_count": 29, "id": "16b9fb41", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
senioritytimeageexpensesincomeassetsdebtamountprice
count4455.04455.04455.04455.04421.04408.04437.04455.04455.0
mean8.046.037.056.0131.05403.0343.01039.01463.0
std8.015.011.020.086.011573.01246.0475.0628.0
min0.06.018.035.00.00.00.0100.0105.0
25%2.036.028.035.080.00.00.0700.01118.0
50%5.048.036.051.0120.03000.00.01000.01400.0
75%12.060.045.072.0165.06000.00.01300.01692.0
max48.072.068.0180.0959.0300000.030000.05000.011140.0
\n", "
" ], "text/plain": [ " seniority time age expenses income assets debt amount \\\n", "count 4455.0 4455.0 4455.0 4455.0 4421.0 4408.0 4437.0 4455.0 \n", "mean 8.0 46.0 37.0 56.0 131.0 5403.0 343.0 1039.0 \n", "std 8.0 15.0 11.0 20.0 86.0 11573.0 1246.0 475.0 \n", "min 0.0 6.0 18.0 35.0 0.0 0.0 0.0 100.0 \n", "25% 2.0 36.0 28.0 35.0 80.0 0.0 0.0 700.0 \n", "50% 5.0 48.0 36.0 51.0 120.0 3000.0 0.0 1000.0 \n", "75% 12.0 60.0 45.0 72.0 165.0 6000.0 0.0 1300.0 \n", "max 48.0 72.0 68.0 180.0 959.0 300000.0 30000.0 5000.0 \n", "\n", " price \n", "count 4455.0 \n", "mean 1463.0 \n", "std 628.0 \n", "min 105.0 \n", "25% 1118.0 \n", "50% 1400.0 \n", "75% 1692.0 \n", "max 11140.0 " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe().round()" ] }, { "cell_type": "code", "execution_count": 33, "id": "4fd52ad9", "metadata": {}, "outputs": [], "source": [ "df = df[df.status != 'unk'].reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 34, "id": "febb388b", "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "\n", "df_full_train, df_test = train_test_split(df, test_size=0.2, random_state=11)\n", "df_train, df_val = train_test_split(df_full_train, test_size=0.25, random_state=11)" ] }, { "cell_type": "code", "execution_count": 36, "id": "6f924284", "metadata": {}, "outputs": [], "source": [ "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 41, "id": "9b5c933a", "metadata": {}, "outputs": [], "source": [ "y_train = (df_train.status == 'default').astype('int').values\n", "y_val = (df_val.status == 'default').astype('int').values\n", "y_test = (df_test.status == 'default').astype('int').values" ] }, { "cell_type": "code", "execution_count": 42, "id": "b6aa7a81", "metadata": {}, "outputs": [], "source": [ "del df_train['status']\n", "del df_val['status']\n", "del df_test['status']" ] }, { "cell_type": "code", "execution_count": 43, "id": "f3e76730", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
seniorityhometimeagemaritalrecordsjobexpensesincomeassetsdebtamountprice
010owner3636marriednofreelance750.010000.00.010001400
16parents4832singleyesfixed3585.00.00.011001330
21parents4840marriednofixed75121.00.00.013201600
31parents4823singlenopartime3572.00.00.010781079
45owner3646marriednofreelance60100.04000.00.011001897
..........................................
266718private3645marriednofixed45220.020000.00.08001600
26687private6029marriednofixed6051.03500.0500.010001290
26691parents2419singlenofixed3528.00.00.0400600
267015owner4843marriednofreelance60100.018000.00.025002976
267112owner4827marriedyesfixed45110.05000.01300.04501636
\n", "

2672 rows × 13 columns

\n", "
" ], "text/plain": [ " seniority home time age marital records job expenses \\\n", "0 10 owner 36 36 married no freelance 75 \n", "1 6 parents 48 32 single yes fixed 35 \n", "2 1 parents 48 40 married no fixed 75 \n", "3 1 parents 48 23 single no partime 35 \n", "4 5 owner 36 46 married no freelance 60 \n", "... ... ... ... ... ... ... ... ... \n", "2667 18 private 36 45 married no fixed 45 \n", "2668 7 private 60 29 married no fixed 60 \n", "2669 1 parents 24 19 single no fixed 35 \n", "2670 15 owner 48 43 married no freelance 60 \n", "2671 12 owner 48 27 married yes fixed 45 \n", "\n", " income assets debt amount price \n", "0 0.0 10000.0 0.0 1000 1400 \n", "1 85.0 0.0 0.0 1100 1330 \n", "2 121.0 0.0 0.0 1320 1600 \n", "3 72.0 0.0 0.0 1078 1079 \n", "4 100.0 4000.0 0.0 1100 1897 \n", "... ... ... ... ... ... \n", "2667 220.0 20000.0 0.0 800 1600 \n", "2668 51.0 3500.0 500.0 1000 1290 \n", "2669 28.0 0.0 0.0 400 600 \n", "2670 100.0 18000.0 0.0 2500 2976 \n", "2671 110.0 5000.0 1300.0 450 1636 \n", "\n", "[2672 rows x 13 columns]" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train" ] }, { "cell_type": "markdown", "id": "bff85b4b", "metadata": {}, "source": [ "## 6.3 Decision trees\n", "\n", "* How a decision tree looks like\n", "* Training a decision tree \n", "* Overfitting\n", "* Controlling the size of a tree" ] }, { "cell_type": "code", "execution_count": 44, "id": "f327b1df", "metadata": {}, "outputs": [], "source": [ "def assess_risk(client):\n", " if client['records'] == 'yes':\n", " if client['job'] == 'parttime':\n", " return 'default'\n", " else:\n", " return 'ok'\n", " else:\n", " if client['assets'] > 6000:\n", " return 'ok'\n", " else:\n", " return 'default'" ] }, { "cell_type": "code", "execution_count": 47, "id": "7f783fe3", "metadata": {}, "outputs": [], "source": [ "xi = df_train.iloc[0].to_dict()" ] }, { "cell_type": "code", "execution_count": 48, "id": "a0423220", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'ok'" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "assess_risk(xi)" ] }, { "cell_type": "code", "execution_count": 65, "id": "3af9c1c9", "metadata": {}, "outputs": [], "source": [ "from sklearn.tree import DecisionTreeClassifier\n", "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.metrics import roc_auc_score\n", "from sklearn.tree import export_text" ] }, { "cell_type": "code", "execution_count": 60, "id": "1fd8b59f", "metadata": {}, "outputs": [], "source": [ "train_dicts = df_train.fillna(0).to_dict(orient='records')" ] }, { "cell_type": "code", "execution_count": 61, "id": "5fe56815", "metadata": {}, "outputs": [], "source": [ "dv = DictVectorizer(sparse=False)\n", "X_train = dv.fit_transform(train_dicts)" ] }, { "cell_type": "code", "execution_count": 62, "id": "47c8a000", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DecisionTreeClassifier()" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt = DecisionTreeClassifier()\n", "dt.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 63, "id": "4b4bda82", "metadata": {}, "outputs": [], "source": [ "val_dicts = df_val.fillna(0).to_dict(orient='records')\n", "X_val = dv.transform(val_dicts)" ] }, { "cell_type": "code", "execution_count": 69, "id": "c17a38f4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6548400377806302" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred = dt.predict_proba(X_val)[:, 1]\n", "roc_auc_score(y_val, y_pred)" ] }, { "cell_type": "code", "execution_count": 70, "id": "45972386", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred = dt.predict_proba(X_train)[:, 1]\n", "roc_auc_score(y_train, y_pred)" ] }, { "cell_type": "code", "execution_count": 81, "id": "4d29de27", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DecisionTreeClassifier(max_depth=2)" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt = DecisionTreeClassifier(max_depth=2)\n", "dt.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 82, "id": "3c961387", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "train: 0.7054989859726213\n", "val: 0.6685264343319367\n" ] } ], "source": [ "y_pred = dt.predict_proba(X_train)[:, 1]\n", "auc = roc_auc_score(y_train, y_pred)\n", "print('train:', auc)\n", "\n", "y_pred = dt.predict_proba(X_val)[:, 1]\n", "auc = roc_auc_score(y_val, y_pred)\n", "print('val:', auc)" ] }, { "cell_type": "code", "execution_count": 83, "id": "1bfb617f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "|--- records=no <= 0.50\n", "| |--- seniority <= 6.50\n", "| | |--- class: 1\n", "| |--- seniority > 6.50\n", "| | |--- class: 0\n", "|--- records=no > 0.50\n", "| |--- job=partime <= 0.50\n", "| | |--- class: 0\n", "| |--- job=partime > 0.50\n", "| | |--- class: 1\n", "\n" ] } ], "source": [ "print(export_text(dt, feature_names=list(dv.get_feature_names_out())))" ] }, { "cell_type": "markdown", "id": "3f21216d", "metadata": {}, "source": [ "## 6.4 Decision tree learning algorithm\n", "\n", "* Finding the best split for one column\n", "* Finding the best split for the entire dataset\n", "* Stopping criteria\n", "* Decision tree learning algorithm" ] }, { "cell_type": "code", "execution_count": 85, "id": "2b337b88", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
08000default
12000default
20default
35000ok
45000ok
54000ok
69000ok
73000default
\n", "
" ], "text/plain": [ " assets status\n", "0 8000 default\n", "1 2000 default\n", "2 0 default\n", "3 5000 ok\n", "4 5000 ok\n", "5 4000 ok\n", "6 9000 ok\n", "7 3000 default" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = [\n", " [8000, 'default'],\n", " [2000, 'default'],\n", " [ 0, 'default'],\n", " [5000, 'ok'],\n", " [5000, 'ok'],\n", " [4000, 'ok'],\n", " [9000, 'ok'],\n", " [3000, 'default'],\n", "]\n", "\n", "df_example = pd.DataFrame(data, columns=['assets', 'status'])\n", "df_example" ] }, { "cell_type": "code", "execution_count": 86, "id": "4e58696d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
20default
12000default
73000default
54000ok
35000ok
45000ok
08000default
69000ok
\n", "
" ], "text/plain": [ " assets status\n", "2 0 default\n", "1 2000 default\n", "7 3000 default\n", "5 4000 ok\n", "3 5000 ok\n", "4 5000 ok\n", "0 8000 default\n", "6 9000 ok" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_example.sort_values('assets')" ] }, { "cell_type": "code", "execution_count": 91, "id": "63ad2cc5", "metadata": {}, "outputs": [], "source": [ "Ts = [0, 2000, 3000, 4000, 5000, 8000]" ] }, { "cell_type": "code", "execution_count": 96, "id": "9d786e42", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
12000default
20default
54000ok
73000default
\n", "
" ], "text/plain": [ " assets status\n", "1 2000 default\n", "2 0 default\n", "5 4000 ok\n", "7 3000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 0.75\n", "ok 0.25\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
08000default
35000ok
45000ok
69000ok
\n", "
" ], "text/plain": [ " assets status\n", "0 8000 default\n", "3 5000 ok\n", "4 5000 ok\n", "6 9000 ok" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 0.75\n", "ok 0.25\n", "Name: status, dtype: float64\n" ] } ], "source": [ "T = 4000\n", "df_left = df_example[df_example.assets <= T]\n", "df_right = df_example[df_example.assets > T]\n", "\n", "display(df_left)\n", "print(df_left.status.value_counts(normalize=True))\n", "display(df_right)\n", "print(df_left.status.value_counts(normalize=True))" ] }, { "cell_type": "code", "execution_count": 92, "id": "bdcf4ac4", "metadata": {}, "outputs": [], "source": [ "from IPython.display import display" ] }, { "cell_type": "code", "execution_count": 98, "id": "0c4b8afa", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
20default
\n", "
" ], "text/plain": [ " assets status\n", "2 0 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 1.0\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
08000default
12000default
35000ok
45000ok
54000ok
69000ok
73000default
\n", "
" ], "text/plain": [ " assets status\n", "0 8000 default\n", "1 2000 default\n", "3 5000 ok\n", "4 5000 ok\n", "5 4000 ok\n", "6 9000 ok\n", "7 3000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "ok 0.571429\n", "default 0.428571\n", "Name: status, dtype: float64\n", "\n", "2000\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
12000default
20default
\n", "
" ], "text/plain": [ " assets status\n", "1 2000 default\n", "2 0 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 1.0\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
08000default
35000ok
45000ok
54000ok
69000ok
73000default
\n", "
" ], "text/plain": [ " assets status\n", "0 8000 default\n", "3 5000 ok\n", "4 5000 ok\n", "5 4000 ok\n", "6 9000 ok\n", "7 3000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "ok 0.666667\n", "default 0.333333\n", "Name: status, dtype: float64\n", "\n", "3000\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
12000default
20default
73000default
\n", "
" ], "text/plain": [ " assets status\n", "1 2000 default\n", "2 0 default\n", "7 3000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 1.0\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
08000default
35000ok
45000ok
54000ok
69000ok
\n", "
" ], "text/plain": [ " assets status\n", "0 8000 default\n", "3 5000 ok\n", "4 5000 ok\n", "5 4000 ok\n", "6 9000 ok" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "ok 0.8\n", "default 0.2\n", "Name: status, dtype: float64\n", "\n", "4000\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
12000default
20default
54000ok
73000default
\n", "
" ], "text/plain": [ " assets status\n", "1 2000 default\n", "2 0 default\n", "5 4000 ok\n", "7 3000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 0.75\n", "ok 0.25\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
08000default
35000ok
45000ok
69000ok
\n", "
" ], "text/plain": [ " assets status\n", "0 8000 default\n", "3 5000 ok\n", "4 5000 ok\n", "6 9000 ok" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "ok 0.75\n", "default 0.25\n", "Name: status, dtype: float64\n", "\n", "5000\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
12000default
20default
35000ok
45000ok
54000ok
73000default
\n", "
" ], "text/plain": [ " assets status\n", "1 2000 default\n", "2 0 default\n", "3 5000 ok\n", "4 5000 ok\n", "5 4000 ok\n", "7 3000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 0.5\n", "ok 0.5\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
08000default
69000ok
\n", "
" ], "text/plain": [ " assets status\n", "0 8000 default\n", "6 9000 ok" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 0.5\n", "ok 0.5\n", "Name: status, dtype: float64\n", "\n", "8000\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
08000default
12000default
20default
35000ok
45000ok
54000ok
73000default
\n", "
" ], "text/plain": [ " assets status\n", "0 8000 default\n", "1 2000 default\n", "2 0 default\n", "3 5000 ok\n", "4 5000 ok\n", "5 4000 ok\n", "7 3000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 0.571429\n", "ok 0.428571\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsstatus
69000ok
\n", "
" ], "text/plain": [ " assets status\n", "6 9000 ok" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "ok 1.0\n", "Name: status, dtype: float64\n", "\n" ] } ], "source": [ "for T in Ts:\n", " print(T)\n", " df_left = df_example[df_example.assets <= T]\n", " df_right = df_example[df_example.assets > T]\n", " \n", " display(df_left)\n", " print(df_left.status.value_counts(normalize=True))\n", " display(df_right)\n", " print(df_right.status.value_counts(normalize=True))\n", "\n", " print()" ] }, { "cell_type": "code", "execution_count": 99, "id": "d3f490e9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
080003000default
120001000default
201000default
350001000ok
450001000ok
540001000ok
69000500ok
730002000default
\n", "
" ], "text/plain": [ " assets debt status\n", "0 8000 3000 default\n", "1 2000 1000 default\n", "2 0 1000 default\n", "3 5000 1000 ok\n", "4 5000 1000 ok\n", "5 4000 1000 ok\n", "6 9000 500 ok\n", "7 3000 2000 default" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = [\n", " [8000, 3000, 'default'],\n", " [2000, 1000, 'default'],\n", " [ 0, 1000, 'default'],\n", " [5000, 1000, 'ok'],\n", " [5000, 1000, 'ok'],\n", " [4000, 1000, 'ok'],\n", " [9000, 500, 'ok'],\n", " [3000, 2000, 'default'],\n", "]\n", "\n", "df_example = pd.DataFrame(data, columns=['assets', 'debt', 'status'])\n", "df_example" ] }, { "cell_type": "code", "execution_count": 100, "id": "4fb4a432", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
69000500ok
120001000default
201000default
350001000ok
450001000ok
540001000ok
730002000default
080003000default
\n", "
" ], "text/plain": [ " assets debt status\n", "6 9000 500 ok\n", "1 2000 1000 default\n", "2 0 1000 default\n", "3 5000 1000 ok\n", "4 5000 1000 ok\n", "5 4000 1000 ok\n", "7 3000 2000 default\n", "0 8000 3000 default" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_example.sort_values('debt')" ] }, { "cell_type": "code", "execution_count": 101, "id": "13044480", "metadata": {}, "outputs": [], "source": [ "thresholds = {\n", " 'assets': [0, 2000, 3000, 4000, 5000, 8000],\n", " 'debt': [500, 1000, 2000]\n", "}" ] }, { "cell_type": "code", "execution_count": 102, "id": "6c29ca81", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#####################\n", "assets\n", "0\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
201000default
\n", "
" ], "text/plain": [ " assets debt status\n", "2 0 1000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 1.0\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
080003000default
120001000default
350001000ok
450001000ok
540001000ok
69000500ok
730002000default
\n", "
" ], "text/plain": [ " assets debt status\n", "0 8000 3000 default\n", "1 2000 1000 default\n", "3 5000 1000 ok\n", "4 5000 1000 ok\n", "5 4000 1000 ok\n", "6 9000 500 ok\n", "7 3000 2000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "ok 0.571429\n", "default 0.428571\n", "Name: status, dtype: float64\n", "\n", "2000\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
120001000default
201000default
\n", "
" ], "text/plain": [ " assets debt status\n", "1 2000 1000 default\n", "2 0 1000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 1.0\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
080003000default
350001000ok
450001000ok
540001000ok
69000500ok
730002000default
\n", "
" ], "text/plain": [ " assets debt status\n", "0 8000 3000 default\n", "3 5000 1000 ok\n", "4 5000 1000 ok\n", "5 4000 1000 ok\n", "6 9000 500 ok\n", "7 3000 2000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "ok 0.666667\n", "default 0.333333\n", "Name: status, dtype: float64\n", "\n", "3000\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
120001000default
201000default
730002000default
\n", "
" ], "text/plain": [ " assets debt status\n", "1 2000 1000 default\n", "2 0 1000 default\n", "7 3000 2000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 1.0\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
080003000default
350001000ok
450001000ok
540001000ok
69000500ok
\n", "
" ], "text/plain": [ " assets debt status\n", "0 8000 3000 default\n", "3 5000 1000 ok\n", "4 5000 1000 ok\n", "5 4000 1000 ok\n", "6 9000 500 ok" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "ok 0.8\n", "default 0.2\n", "Name: status, dtype: float64\n", "\n", "4000\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
120001000default
201000default
540001000ok
730002000default
\n", "
" ], "text/plain": [ " assets debt status\n", "1 2000 1000 default\n", "2 0 1000 default\n", "5 4000 1000 ok\n", "7 3000 2000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 0.75\n", "ok 0.25\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
080003000default
350001000ok
450001000ok
69000500ok
\n", "
" ], "text/plain": [ " assets debt status\n", "0 8000 3000 default\n", "3 5000 1000 ok\n", "4 5000 1000 ok\n", "6 9000 500 ok" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "ok 0.75\n", "default 0.25\n", "Name: status, dtype: float64\n", "\n", "5000\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
120001000default
201000default
350001000ok
450001000ok
540001000ok
730002000default
\n", "
" ], "text/plain": [ " assets debt status\n", "1 2000 1000 default\n", "2 0 1000 default\n", "3 5000 1000 ok\n", "4 5000 1000 ok\n", "5 4000 1000 ok\n", "7 3000 2000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 0.5\n", "ok 0.5\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
080003000default
69000500ok
\n", "
" ], "text/plain": [ " assets debt status\n", "0 8000 3000 default\n", "6 9000 500 ok" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 0.5\n", "ok 0.5\n", "Name: status, dtype: float64\n", "\n", "8000\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
080003000default
120001000default
201000default
350001000ok
450001000ok
540001000ok
730002000default
\n", "
" ], "text/plain": [ " assets debt status\n", "0 8000 3000 default\n", "1 2000 1000 default\n", "2 0 1000 default\n", "3 5000 1000 ok\n", "4 5000 1000 ok\n", "5 4000 1000 ok\n", "7 3000 2000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 0.571429\n", "ok 0.428571\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
69000500ok
\n", "
" ], "text/plain": [ " assets debt status\n", "6 9000 500 ok" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "ok 1.0\n", "Name: status, dtype: float64\n", "\n", "#####################\n", "#####################\n", "debt\n", "500\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
69000500ok
\n", "
" ], "text/plain": [ " assets debt status\n", "6 9000 500 ok" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "ok 1.0\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
080003000default
120001000default
201000default
350001000ok
450001000ok
540001000ok
730002000default
\n", "
" ], "text/plain": [ " assets debt status\n", "0 8000 3000 default\n", "1 2000 1000 default\n", "2 0 1000 default\n", "3 5000 1000 ok\n", "4 5000 1000 ok\n", "5 4000 1000 ok\n", "7 3000 2000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 0.571429\n", "ok 0.428571\n", "Name: status, dtype: float64\n", "\n", "1000\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
120001000default
201000default
350001000ok
450001000ok
540001000ok
69000500ok
\n", "
" ], "text/plain": [ " assets debt status\n", "1 2000 1000 default\n", "2 0 1000 default\n", "3 5000 1000 ok\n", "4 5000 1000 ok\n", "5 4000 1000 ok\n", "6 9000 500 ok" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "ok 0.666667\n", "default 0.333333\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
080003000default
730002000default
\n", "
" ], "text/plain": [ " assets debt status\n", "0 8000 3000 default\n", "7 3000 2000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 1.0\n", "Name: status, dtype: float64\n", "\n", "2000\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
120001000default
201000default
350001000ok
450001000ok
540001000ok
69000500ok
730002000default
\n", "
" ], "text/plain": [ " assets debt status\n", "1 2000 1000 default\n", "2 0 1000 default\n", "3 5000 1000 ok\n", "4 5000 1000 ok\n", "5 4000 1000 ok\n", "6 9000 500 ok\n", "7 3000 2000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "ok 0.571429\n", "default 0.428571\n", "Name: status, dtype: float64\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
assetsdebtstatus
080003000default
\n", "
" ], "text/plain": [ " assets debt status\n", "0 8000 3000 default" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "default 1.0\n", "Name: status, dtype: float64\n", "\n", "#####################\n" ] } ], "source": [ "for feature, Ts in thresholds.items():\n", " print('#####################')\n", " print(feature)\n", " for T in Ts:\n", " print(T)\n", " df_left = df_example[df_example[feature] <= T]\n", " df_right = df_example[df_example[feature] > T]\n", "\n", " display(df_left)\n", " print(df_left.status.value_counts(normalize=True))\n", " display(df_right)\n", " print(df_right.status.value_counts(normalize=True))\n", "\n", " print()\n", " print('#####################')" ] }, { "cell_type": "markdown", "id": "f778bdd6", "metadata": {}, "source": [ "## 6.5 Decision trees parameter tuning\n", "\n", "* selecting `max_depth`\n", "* selecting `min_samples_leaf`" ] }, { "cell_type": "code", "execution_count": 27, "id": "1378499f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 1 -> 0.606\n", " 2 -> 0.669\n", " 3 -> 0.739\n", " 4 -> 0.761\n", " 5 -> 0.767\n", " 6 -> 0.744\n", " 10 -> 0.683\n", " 15 -> 0.654\n", " 20 -> 0.654\n", "None -> 0.662\n" ] } ], "source": [ "depths = [1, 2, 3, 4, 5, 6, 10, 15, 20, None]\n", "\n", "for depth in depths: \n", " dt = DecisionTreeClassifier(max_depth=depth)\n", " dt.fit(X_train, y_train)\n", " \n", " y_pred = dt.predict_proba(X_val)[:, 1]\n", " auc = roc_auc_score(y_val, y_pred)\n", " \n", " print('%4s -> %.3f' % (depth, auc))" ] }, { "cell_type": "code", "execution_count": 28, "id": "479b1fa6", "metadata": {}, "outputs": [], "source": [ "scores = []\n", "\n", "for depth in [4, 5, 6]:\n", " for s in [1, 5, 10, 15, 20, 500, 100, 200]:\n", " dt = DecisionTreeClassifier(max_depth=depth, min_samples_leaf=s)\n", " dt.fit(X_train, y_train)\n", "\n", " y_pred = dt.predict_proba(X_val)[:, 1]\n", " auc = roc_auc_score(y_val, y_pred)\n", " \n", " scores.append((depth, s, auc))" ] }, { "cell_type": "code", "execution_count": 29, "id": "69e95a9f", "metadata": {}, "outputs": [], "source": [ "columns = ['max_depth', 'min_samples_leaf', 'auc']\n", "df_scores = pd.DataFrame(scores, columns=columns)" ] }, { "cell_type": "code", "execution_count": 30, "id": "8c635465", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
auc
max_depth456
min_samples_leaf
10.7610.7670.759
50.7610.7680.759
100.7610.7620.778
150.7640.7720.785
200.7610.7740.774
1000.7560.7630.776
2000.7470.7590.768
5000.6800.6800.680
\n", "
" ], "text/plain": [ " auc \n", "max_depth 4 5 6\n", "min_samples_leaf \n", "1 0.761 0.767 0.759\n", "5 0.761 0.768 0.759\n", "10 0.761 0.762 0.778\n", "15 0.764 0.772 0.785\n", "20 0.761 0.774 0.774\n", "100 0.756 0.763 0.776\n", "200 0.747 0.759 0.768\n", "500 0.680 0.680 0.680" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_scores_pivot = df_scores.pivot(index='min_samples_leaf', columns=['max_depth'], values=['auc'])\n", "df_scores_pivot.round(3)" ] }, { "cell_type": "code", "execution_count": 31, "id": "0786f509", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.heatmap(df_scores_pivot, annot=True, fmt=\".3f\")" ] }, { "cell_type": "code", "execution_count": 32, "id": "853d72f1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DecisionTreeClassifier(max_depth=6, min_samples_leaf=15)" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt = DecisionTreeClassifier(max_depth=6, min_samples_leaf=15)\n", "dt.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 33, "id": "8bff643c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "|--- records=no <= 0.50\n", "| |--- seniority <= 6.50\n", "| | |--- amount <= 862.50\n", "| | | |--- price <= 925.00\n", "| | | | |--- amount <= 525.00\n", "| | | | | |--- class: 1\n", "| | | | |--- amount > 525.00\n", "| | | | | |--- class: 1\n", "| | | |--- price > 925.00\n", "| | | | |--- price <= 1382.00\n", "| | | | | |--- class: 0\n", "| | | | |--- price > 1382.00\n", "| | | | | |--- class: 0\n", "| | |--- amount > 862.50\n", "| | | |--- assets <= 8250.00\n", "| | | | |--- job=fixed <= 0.50\n", "| | | | | |--- assets <= 3425.00\n", "| | | | | | |--- class: 1\n", "| | | | | |--- assets > 3425.00\n", "| | | | | | |--- class: 1\n", "| | | | |--- job=fixed > 0.50\n", "| | | | | |--- age <= 31.50\n", "| | | | | | |--- class: 1\n", "| | | | | |--- age > 31.50\n", "| | | | | | |--- class: 1\n", "| | | |--- assets > 8250.00\n", "| | | | |--- income <= 132.50\n", "| | | | | |--- class: 1\n", "| | | | |--- income > 132.50\n", "| | | | | |--- class: 0\n", "| |--- seniority > 6.50\n", "| | |--- income <= 103.50\n", "| | | |--- assets <= 4500.00\n", "| | | | |--- seniority <= 12.50\n", "| | | | | |--- class: 1\n", "| | | | |--- seniority > 12.50\n", "| | | | | |--- class: 1\n", "| | | |--- assets > 4500.00\n", "| | | | |--- class: 0\n", "| | |--- income > 103.50\n", "| | | |--- time <= 33.00\n", "| | | | |--- class: 0\n", "| | | |--- time > 33.00\n", "| | | | |--- seniority <= 11.50\n", "| | | | | |--- age <= 37.50\n", "| | | | | | |--- class: 1\n", "| | | | | |--- age > 37.50\n", "| | | | | | |--- class: 0\n", "| | | | |--- seniority > 11.50\n", "| | | | | |--- assets <= 7250.00\n", "| | | | | | |--- class: 0\n", "| | | | | |--- assets > 7250.00\n", "| | | | | | |--- class: 0\n", "|--- records=no > 0.50\n", "| |--- job=partime <= 0.50\n", "| | |--- income <= 74.50\n", "| | | |--- assets <= 4250.00\n", "| | | | |--- income <= 20.00\n", "| | | | | |--- seniority <= 1.50\n", "| | | | | | |--- class: 1\n", "| | | | | |--- seniority > 1.50\n", "| | | | | | |--- class: 1\n", "| | | | |--- income > 20.00\n", "| | | | | |--- expenses <= 71.00\n", "| | | | | | |--- class: 0\n", "| | | | | |--- expenses > 71.00\n", "| | | | | | |--- class: 1\n", "| | | |--- assets > 4250.00\n", "| | | | |--- debt <= 1600.00\n", "| | | | | |--- seniority <= 2.50\n", "| | | | | | |--- class: 0\n", "| | | | | |--- seniority > 2.50\n", "| | | | | | |--- class: 0\n", "| | | | |--- debt > 1600.00\n", "| | | | | |--- class: 1\n", "| | |--- income > 74.50\n", "| | | |--- seniority <= 5.50\n", "| | | | |--- amount <= 1330.00\n", "| | | | | |--- assets <= 3326.00\n", "| | | | | | |--- class: 0\n", "| | | | | |--- assets > 3326.00\n", "| | | | | | |--- class: 0\n", "| | | | |--- amount > 1330.00\n", "| | | | | |--- assets <= 3750.00\n", "| | | | | | |--- class: 1\n", "| | | | | |--- assets > 3750.00\n", "| | | | | | |--- class: 0\n", "| | | |--- seniority > 5.50\n", "| | | | |--- income <= 114.50\n", "| | | | | |--- expenses <= 84.00\n", "| | | | | | |--- class: 0\n", "| | | | | |--- expenses > 84.00\n", "| | | | | | |--- class: 0\n", "| | | | |--- income > 114.50\n", "| | | | | |--- amount <= 1188.50\n", "| | | | | | |--- class: 0\n", "| | | | | |--- amount > 1188.50\n", "| | | | | | |--- class: 0\n", "| |--- job=partime > 0.50\n", "| | |--- assets <= 7250.00\n", "| | | |--- time <= 27.00\n", "| | | | |--- price <= 909.50\n", "| | | | | |--- class: 1\n", "| | | | |--- price > 909.50\n", "| | | | | |--- class: 0\n", "| | | |--- time > 27.00\n", "| | | | |--- age <= 34.50\n", "| | | | | |--- price <= 1049.00\n", "| | | | | | |--- class: 1\n", "| | | | | |--- price > 1049.00\n", "| | | | | | |--- class: 1\n", "| | | | |--- age > 34.50\n", "| | | | | |--- assets <= 2750.00\n", "| | | | | | |--- class: 1\n", "| | | | | |--- assets > 2750.00\n", "| | | | | | |--- class: 1\n", "| | |--- assets > 7250.00\n", "| | | |--- class: 0\n", "\n" ] } ], "source": [ "print(export_text(dt, feature_names=list(dv.get_feature_names_out())))" ] }, { "cell_type": "markdown", "id": "2ff722ec", "metadata": {}, "source": [ "## 6.6 Ensembles and random forest\n", "\n", "* Board of experts\n", "* Ensembling models \n", "* Random forest - ensembling decision trees\n", "* Tuning random forest" ] }, { "cell_type": "code", "execution_count": 34, "id": "75d43abc", "metadata": {}, "outputs": [], "source": [ "from sklearn.ensemble import RandomForestClassifier" ] }, { "cell_type": "code", "execution_count": 35, "id": "3091e6c8", "metadata": {}, "outputs": [], "source": [ "scores = []\n", "\n", "for n in range(10, 201, 10):\n", " rf = RandomForestClassifier(n_estimators=n, random_state=1)\n", " rf.fit(X_train, y_train)\n", "\n", " y_pred = rf.predict_proba(X_val)[:, 1]\n", " auc = roc_auc_score(y_val, y_pred)\n", " \n", " scores.append((n, auc))" ] }, { "cell_type": "code", "execution_count": 36, "id": "507a1009", "metadata": {}, "outputs": [], "source": [ "df_scores = pd.DataFrame(scores, columns=['n_estimators', 'auc'])" ] }, { "cell_type": "code", "execution_count": 37, "id": "687263dc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(df_scores.n_estimators, df_scores.auc)" ] }, { "cell_type": "code", "execution_count": 41, "id": "871ebe9e", "metadata": {}, "outputs": [], "source": [ "scores = []\n", "\n", "for d in [5, 10, 15]:\n", " for n in range(10, 201, 10):\n", " rf = RandomForestClassifier(n_estimators=n,\n", " max_depth=d,\n", " random_state=1)\n", " rf.fit(X_train, y_train)\n", "\n", " y_pred = rf.predict_proba(X_val)[:, 1]\n", " auc = roc_auc_score(y_val, y_pred)\n", "\n", " scores.append((d, n, auc))" ] }, { "cell_type": "code", "execution_count": 42, "id": "96f07149", "metadata": {}, "outputs": [], "source": [ "columns = ['max_depth', 'n_estimators', 'auc']\n", "df_scores = pd.DataFrame(scores, columns=columns)" ] }, { "cell_type": "code", "execution_count": 43, "id": "e4e839b8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for d in [5, 10, 15]:\n", " df_subset = df_scores[df_scores.max_depth == d]\n", " \n", " plt.plot(df_subset.n_estimators, df_subset.auc,\n", " label='max_depth=%d' % d)\n", "\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 44, "id": "effdcd40", "metadata": {}, "outputs": [], "source": [ "max_depth = 10" ] }, { "cell_type": "code", "execution_count": 45, "id": "eb3418f9", "metadata": {}, "outputs": [], "source": [ "scores = []\n", "\n", "for s in [1, 3, 5, 10, 50]:\n", " for n in range(10, 201, 10):\n", " rf = RandomForestClassifier(n_estimators=n,\n", " max_depth=max_depth,\n", " min_samples_leaf=s,\n", " random_state=1)\n", " rf.fit(X_train, y_train)\n", "\n", " y_pred = rf.predict_proba(X_val)[:, 1]\n", " auc = roc_auc_score(y_val, y_pred)\n", "\n", " scores.append((s, n, auc))" ] }, { "cell_type": "code", "execution_count": 47, "id": "695d60f2", "metadata": {}, "outputs": [], "source": [ "columns = ['min_samples_leaf', 'n_estimators', 'auc']\n", "df_scores = pd.DataFrame(scores, columns=columns)" ] }, { "cell_type": "code", "execution_count": 48, "id": "274f7625", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "colors = ['black', 'blue', 'orange', 'red', 'grey']\n", "values = [1, 3, 5, 10, 50]\n", "\n", "for s, col in zip(values, colors):\n", " df_subset = df_scores[df_scores.min_samples_leaf == s]\n", " \n", " plt.plot(df_subset.n_estimators, df_subset.auc,\n", " color=col,\n", " label='min_samples_leaf=%d' % s)\n", "\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 49, "id": "33fed76c", "metadata": {}, "outputs": [], "source": [ "min_samples_leaf = 3" ] }, { "cell_type": "code", "execution_count": 50, "id": "a84fa9d2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RandomForestClassifier(max_depth=10, min_samples_leaf=3, n_estimators=200,\n", " random_state=1)" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rf = RandomForestClassifier(n_estimators=200,\n", " max_depth=max_depth,\n", " min_samples_leaf=min_samples_leaf,\n", " random_state=1)\n", "rf.fit(X_train, y_train)" ] }, { "cell_type": "markdown", "id": "fe3e097b", "metadata": {}, "source": [ "Other useful parametes:\n", "\n", "* `max_features`\n", "* `bootstrap`\n", "\n", "https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html" ] }, { "cell_type": "markdown", "id": "a1d8776c", "metadata": {}, "source": [ "## 6.7 Gradient boosting and XGBoost\n", "\n", "* Gradient boosting vs random forest\n", "* Installing XGBoost\n", "* Training the first model\n", "* Performance monitoring\n", "* Parsing xgboost's monitoring output" ] }, { "cell_type": "code", "execution_count": 52, "id": "60051cde", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: xgboost in /home/alexey/.pyenv/versions/3.8.11/lib/python3.8/site-packages (1.4.2)\r\n", "Requirement already satisfied: numpy in /home/alexey/.pyenv/versions/3.8.11/lib/python3.8/site-packages (from xgboost) (1.21.1)\r\n", "Requirement already satisfied: scipy in /home/alexey/.pyenv/versions/3.8.11/lib/python3.8/site-packages (from xgboost) (1.7.0)\r\n" ] } ], "source": [ "!pip install xgboost" ] }, { "cell_type": "code", "execution_count": 53, "id": "2b7df0bb", "metadata": {}, "outputs": [], "source": [ "import xgboost as xgb" ] }, { "cell_type": "code", "execution_count": 56, "id": "63185f7a", "metadata": {}, "outputs": [], "source": [ "features = list(dv.get_feature_names_out())\n", "dtrain = xgb.DMatrix(X_train, label=y_train, feature_names=features)\n", "dval = xgb.DMatrix(X_val, label=y_val, feature_names=features)" ] }, { "cell_type": "code", "execution_count": 65, "id": "d27e12df", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[22:13:34] WARNING: ../src/learner.cc:1095: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n" ] } ], "source": [ "xgb_params = {\n", " 'eta': 0.3, \n", " 'max_depth': 6,\n", " 'min_child_weight': 1,\n", " \n", " 'objective': 'binary:logistic',\n", " 'nthread': 8,\n", " \n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "\n", "model = xgb.train(xgb_params, dtrain, num_boost_round=10)" ] }, { "cell_type": "code", "execution_count": 66, "id": "796098e2", "metadata": {}, "outputs": [], "source": [ "y_pred = model.predict(dval)" ] }, { "cell_type": "code", "execution_count": 67, "id": "167421e4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8152745150274878" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "roc_auc_score(y_val, y_pred)" ] }, { "cell_type": "code", "execution_count": 68, "id": "82cf8da9", "metadata": {}, "outputs": [], "source": [ "watchlist = [(dtrain, 'train'), (dval, 'val')]" ] }, { "cell_type": "code", "execution_count": 72, "id": "e5ffdb5a", "metadata": {}, "outputs": [], "source": [ "%%capture output\n", "\n", "xgb_params = {\n", " 'eta': 0.3, \n", " 'max_depth': 6,\n", " 'min_child_weight': 1,\n", " \n", " 'objective': 'binary:logistic',\n", " 'eval_metric': 'auc',\n", "\n", " 'nthread': 8,\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "\n", "model = xgb.train(xgb_params, dtrain, num_boost_round=200,\n", " verbose_eval=5,\n", " evals=watchlist)" ] }, { "cell_type": "code", "execution_count": 76, "id": "491eb842", "metadata": {}, "outputs": [], "source": [ "s = output.stdout" ] }, { "cell_type": "code", "execution_count": 97, "id": "bb1fbf42", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0]\ttrain-auc:0.86300\tval-auc:0.76818\n", "[5]\ttrain-auc:0.92863\tval-auc:0.80606\n", "[10]\ttrain-auc:0.95002\tval-auc:0.81558\n", "[15]\ttrain-auc:0.96558\tval-auc:0.81680\n", "[20]\ttrain-auc:0.97316\tval-auc:0.81775\n", "[25]\ttr\n" ] } ], "source": [ "print(s[:200])" ] }, { "cell_type": "code", "execution_count": 91, "id": "aa0257b1", "metadata": {}, "outputs": [], "source": [ "def parse_xgb_output(output):\n", " results = []\n", "\n", " for line in output.stdout.strip().split('\\n'):\n", " it_line, train_line, val_line = line.split('\\t')\n", "\n", " it = int(it_line.strip('[]'))\n", " train = float(train_line.split(':')[1])\n", " val = float(val_line.split(':')[1])\n", "\n", " results.append((it, train, val))\n", " \n", " columns = ['num_iter', 'train_auc', 'val_auc']\n", " df_results = pd.DataFrame(results, columns=columns)\n", " return df_results" ] }, { "cell_type": "code", "execution_count": 93, "id": "e4956bc7", "metadata": {}, "outputs": [], "source": [ "df_score = parse_xgb_output(output)" ] }, { "cell_type": "code", "execution_count": 98, "id": "70c1cc20", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAjZklEQVR4nO3dfXRV9Z3v8fc3yckTCSGQ8BggURFFqaKp0vpQb1sr4ihtHav1qZ1ph9u72mltxzuLrs5qrfPk3M69a27ntvVqS6utSi29TukdvGo7MK6poAYFBUR5kDwRICTkAfKc/O4fvx1yCAkJJDn7sM/ntdZeZ5+99znnm53kc/b+/X5nH3POISIi0ZUWdgEiIjKxFPQiIhGnoBcRiTgFvYhIxCnoRUQiLiPsAgYrKipypaWlYZchInJO2bJlyxHnXPFQ65Iu6EtLS6moqAi7DBGRc4qZVQ63Tk03IiIRp6AXEYk4Bb2ISMQp6EVEIk5BLyIScSMGvZmtNrPDZrZ9mPVmZt83sz1m9paZXRG37nNmtjuYPjeehYuIyOiM5oj+Z8Cy06y/GVgQTCuBHwGY2VTgO8DVwFXAd8yscCzFiojImRtxHL1z7mUzKz3NJiuAJ52/3vFmM5tiZrOAG4CXnHONAGb2Ev4N45kxVy3nNOcc3b2O7t4+unv76Ortoyf+fo+jp29gvn+539bR3dNHb9/A5bUdbtDzgwtu+5wL5t3A/RPr3Unb9K8jbp076TlHvqT3iccPtVBkBDMLcrj76nnj/rzj8YGpOUB13P2aYNlwy09hZivxZwPMmzf+P6SMXXdvH4daOqhr7uBAUzt1zR0cbumkvbuXzu5eOnp66ezuO+W2q7ePrp6BqTO4n2rMwq5AzgWXz52StEE/Zs65x4DHAMrLy3X4k2A9vX0cbu2krrmDg80d1DW3n5g/0NxOXVMHh1s76Bv0m5mUmU5uVgZZGWlkx9JP3GbH0picEyMrI43MjDQy04PbYMqKu5+RlkYsI43MdCOWnkZGup/PSPPrY+lpZGb4df1TZnoaaWlgcek5OEfNIM0Mw2938v1Tl6UF9wnm+5+j//H9rzGawDaluiSZ8Qj6WmBu3P2SYFktvvkmfvnGcXg9OQPN7d0cbO7gUIufDrd2cqjFh/ih1k4ONQ8d4jmxdGYVZDNrSjbXLShi1pQcZhdkn3Sbl5UUxwkiMoLx+E9dB3zFzNbgO16bnXN1ZvYC8HdxHbCfAL45Dq8ng/T2OWqOtrG3/hh7Dx/3t/XH2Ft/nMbjXadsPyU3xoz8bKZPzmLB9KITwT2zINuH++QcJudk6MhUJCJGDHozewZ/ZF5kZjX4kTQxAOfco8B6YDmwB2gD/iRY12hmfw28HjzVw/0dszI2zjneqWvlpZ2H+P2uQ+yqa6Wrd6Dde9qkTM4vzuOmS2ZQVjSJWQU+xPvDPTuWHmL1IpJolmxfDl5eXu509cpTdff28dr7jby08xAv7TxEbVM7ZnDFvELK5xdy/vQ8zi+exHlFeRROygy7XBFJMDPb4pwrH2qdGlmTmHOO/9hzhLVbatiw6zAtHT1kZaRx3YIivvqxC/joRTMozs8Ku0wRSXIK+iTU3dvHb7cd4LGX97HrYCtTJ2Vy0yUzuXHRDK5dUERupn5tIjJ6Sowk0tLRzZrXqvjpH/ZT19zBhTPy+N4ff4AVl88hM0OXJRKRs6OgTwIHmtr52Sv7efrVKo519vDh86fxd59ezA0XFmvki4iMmYI+RN29ffxo417++d920+fglsWz+LPrzmNxSUHYpYlIhCjoQ/JOXQsP/mobOw60cOtls/nLmxYyd2pu2GWJSAQp6BMs/ii+ICfGo/deybJLZ4ZdlohEmII+gd6pa+G/rt3G9toWbrtsNt+97RKNeReRCaegT4BTj+KvYNmls8IuS0RShIJ+gjW1dfGnP3udN6qauDU4ip+qo3gRSSAF/QQ6cqyTe3/8Kvvqj/PPn13CrZfNDrskEUlBCvoJcrC5g7t/vJkDTe385PPlXLegOOySRCRFKegnQHVjG3f/eDNHj3fz5J9ezVVlU8MuSURSmIJ+nO2tP8a9P36Vtq5envri1Vw2d0rYJYlIilPQj6N36lq47yevArBm5VIunjU55IpERBT042ZbdRP3r36NnFg6v/ji1VwwPS/skkREAAX9uNi8r4EvPlHBlNwYz/zZUl3KQESSiq59O0a/qqjmvp+8yozJWfzqSx9SyItI0tER/Vnq63N878V3+dHGvVxzwTR+ePeVFOTGwi5LROQUCvqz0NbVwzd+uY3/t+Mgd189j+/edgmxdJ0ciUhyUtCfoUMtHXzxiQq2H2jmr265mC9cW6YvBxGRpKagPwPba5v54hMVtHR08/h95Xx80YywSxIRGZGCfpRe2HGQB9ZspTA3xtovfZhFszVGXkTODQr6Udha3cR/+cUWFs8p4PH7y5k+OTvskkRERk1BPwLnHN/97Q6m5WXxiy9eTX62RtaIyLlFQ0VG8JutB3izqom/vGmhQl5EzkkK+tNo6+rhked38YGSAm6/oiTsckREzoqC/jQe3biXgy0dfOfWRaSlaQiliJybFPTDqG5s43+/vI/bLpvNlfN1PXkROXcp6IfxyPO7MINVN18UdikiImOioB/Cq/sa+Ne36/jSR85n9pScsMsRERkTBf0gvX2O7/52J7MLsvnP158fdjkiImOmoB/kVxXV7KxrYdXyi8nJTA+7HBGRMVPQx2np6OZ7L7xL+fxCbv3ArLDLEREZF6MKejNbZmbvmtkeM1s1xPr5ZvZ7M3vLzDaaWUncul4z2xpM68az+PH2v/5tD41tXXzn1kt0RUoRiYwRL4FgZunAD4AbgRrgdTNb55zbGbfZPwJPOueeMLOPAn8P3Besa3fOXT6+ZY+/948c56d/eJ87rixhcUlB2OWIiIyb0RzRXwXscc7tc851AWuAFYO2WQT8WzC/YYj1Se+R598hKyOdB29aGHYpIiLjajRBPweojrtfEyyLtw34dDD/KSDfzKYF97PNrMLMNpvZJ4d6ATNbGWxTUV9fP/rqx0lVQxsv7jzEn1xTyvR8XZlSRKJlvDpjHwQ+YmZvAh8BaoHeYN1851w5cDfwT2Z2yphF59xjzrly51x5cXHxOJU0er94tZI0M+65en7CX1tEZKKN5jLFtcDcuPslwbITnHMHCI7ozSwPuN051xSsqw1u95nZRmAJsHeshY+Xju5enq2o5hOLZjCzQEfzIhI9ozmifx1YYGZlZpYJ3AWcNHrGzIrMrP+5vgmsDpYXmllW/zbANUB8J27o1m07QFNbN/d/qDTsUkREJsSIQe+c6wG+ArwAvAM865zbYWYPm9ltwWY3AO+a2XvADOBvg+UXAxVmtg3fSfvIoNE6oXLO8eSm/Vw4I4+l5+nCZSISTaP6hinn3Hpg/aBl346bXwusHeJxrwCLx1jjhHmzuonttS389QqNmxeR6ErpT8b+fFMleVkZfEpfKiIiEZayQX/kWCf/+lYdt18xh7wsfXWuiERXygb9L1+vpqu3j/s+pCGVIhJtKRn0Pb19PLW5kmsumMYF0/PDLkdEZEKlZND/ftdhDjR3cN/S0rBLERGZcCkZ9E9u2s/sgmw+fvH0sEsREZlwKRf0ew4f4w97Grhn6Xwy0lPuxxeRFJRySfeLzZVkpqdx5wfnjryxiEgEpFTQH+vs4ddbali+eCZFeVlhlyMikhApFfTPvVlLa2cP93+4NOxSREQSJmWC3jnHzzft59I5k1kyd0rY5YiIJEzKBP1r7zfy3qFj3L+0VNe1EZGUkjJBv2lfA2bwR5fNCrsUEZGESpmgr2poY9bkbHIzdV0bEUktKRP0lY1tzJuWG3YZIiIJlzpB39DG/KmTwi5DRCThUiLoj3f2cORYp47oRSQlpUTQVzW2ATBfQS8iKSglgr6yIQh6Nd2ISApKiaCvajwOoKYbEUlJKRH0lQ1tTMmNUZATC7sUEZGES4mgr2psY/5UHc2LSGpKiaCvbGhj3jS1z4tIaop80Hf39lHb1K4jehFJWZEP+gNN7fT2OXXEikjKinzQDwytVNCLSGqKftCf+LCU2uhFJDVFPuirGo6TlZHG9Hx9daCIpKbIB31lQxvzpuaSlqYvGxGR1BT5oK9qbNM1bkQkpUU66J1zVDW2MU/XuBGRFBbpoK8/1klbV6+O6EUkpUU66KuCoZUaQy8iqWxUQW9my8zsXTPbY2arhlg/38x+b2ZvmdlGMyuJW/c5M9sdTJ8bz+JHojH0IiIw4jdlm1k68APgRqAGeN3M1jnndsZt9o/Ak865J8zso8DfA/eZ2VTgO0A54IAtwWOPjvcPMpTKxjbSDEoKFfQiUdfd3U1NTQ0dHR1hlzKhsrOzKSkpIRYb/dV4Rwx64Cpgj3NuH4CZrQFWAPFBvwj4RjC/AfiXYP4m4CXnXGPw2JeAZcAzo65wDKoajjOrIIfMjEi3UIkIUFNTQ35+PqWlpZhFczi1c46GhgZqamooKysb9eNGk4BzgOq4+zXBsnjbgE8H858C8s1s2igfO2EqNbRSJGV0dHQwbdq0yIY8gJkxbdq0Mz5rGa9D3QeBj5jZm8BHgFqgd7QPNrOVZlZhZhX19fXjVJLvjFXQi6SOKId8v7P5GUcT9LXA3Lj7JcGyE5xzB5xzn3bOLQG+FSxrGs1jg20fc86VO+fKi4uLz+wnGMaxzh4ajndpDL2IJERTUxM//OEPz/hxy5cvp6mpafwLijOaoH8dWGBmZWaWCdwFrIvfwMyKzKz/ub4JrA7mXwA+YWaFZlYIfCJYNuEqG/z3xOqIXkQSYbig7+npOe3j1q9fz5QpUyaoKm/EzljnXI+ZfQUf0OnAaufcDjN7GKhwzq0DbgD+3swc8DLw5eCxjWb21/g3C4CH+ztmJ9qJMfQaWikiCbBq1Sr27t3L5ZdfTiwWIzs7m8LCQnbt2sV7773HJz/5Saqrq+no6OBrX/saK1euBKC0tJSKigqOHTvGzTffzLXXXssrr7zCnDlz+M1vfkNOTs6YaxvNqBucc+uB9YOWfTtufi2wdpjHrmbgCD9hBi5PrKAXSTXf/e0Odh5oGdfnXDR7Mt+59ZJh1z/yyCNs376drVu3snHjRm655Ra2b99+YnTM6tWrmTp1Ku3t7Xzwgx/k9ttvZ9q0aSc9x+7du3nmmWd4/PHH+cxnPsOvf/1r7r333jHXPqqgPxdVNrQxdVIm+dmjH2sqIjJerrrqqpOGQH7/+9/nueeeA6C6uprdu3efEvRlZWVcfvnlAFx55ZXs379/XGqJbNBXNR5Xs41IijrdkXeiTJo0MBBk48aN/O53v2PTpk3k5uZyww03DDlEMitr4Hsz0tPTaW9vH5daIvtJokoNrRSRBMrPz6e1tXXIdc3NzRQWFpKbm8uuXbvYvHlzQmuL5BF9V08fB5ra+fSShH02S0RS3LRp07jmmmu49NJLycnJYcaMGSfWLVu2jEcffZSLL76YhQsXsnTp0oTWFsmgr21qp8/BPH1PrIgk0NNPPz3k8qysLJ5//vkh1/W3wxcVFbF9+/YTyx988MFxqyuSTTcaQy8iMiCSQV/VqMsTi4j0i2TQVza0kRNLpzg/a+SNRUQiLrJBP29qbkpc4EhEZCSRDPqqxuP6+kARkUDkgt45R1Vjm9rnRUQCkQv6w62ddHT3acSNiCS1vLy8hL1W5IK+/wvBNYZeRMSL3AemToyhV9ONiCTQqlWrmDt3Ll/+8pcBeOihh8jIyGDDhg0cPXqU7u5u/uZv/oYVK1YkvLbIBX1VYxvpacacwrFfw1lEzlHPr4KDb4/vc85cDDc/MuzqO++8kwceeOBE0D/77LO88MILfPWrX2Xy5MkcOXKEpUuXcttttyV8RGDkgr6yoY3ZU7KJpUeuVUpEktiSJUs4fPgwBw4coL6+nsLCQmbOnMnXv/51Xn75ZdLS0qitreXQoUPMnDkzobVFL+gb25iv74kVSW2nOfKeSHfccQdr167l4MGD3HnnnTz11FPU19ezZcsWYrEYpaWlQ16eeKJF7rC3qkFj6EUkHHfeeSdr1qxh7dq13HHHHTQ3NzN9+nRisRgbNmygsrIylLoidUTf0tHN0bZudcSKSCguueQSWltbmTNnDrNmzeKee+7h1ltvZfHixZSXl3PRRReFUlekgr7/C8E1hl5EwvL22wOdwEVFRWzatGnI7Y4dO5aokqLVdHNiDL3a6EVETohW0Df6MfRqoxcRGRCpoK9qaKMoL5O8rEi1SImIjEmkgr7/8sQikpqcc2GXMOHO5meMVNBXNbYxX9e4EUlJ2dnZNDQ0RDrsnXM0NDSQnZ19Ro+LTBtHZ08vB5rbdUQvkqJKSkqoqamhvr4+7FImVHZ2NiUlJWf0mMgEfXN7N5fOLmDhzPywSxGREMRiMcrKysIuIylFJuin52fz2z+/NuwyRESSTqTa6EVE5FQKehGRiFPQi4hEnIJeRCTiFPQiIhGnoBcRibhRBb2ZLTOzd81sj5mtGmL9PDPbYGZvmtlbZrY8WF5qZu1mtjWYHh3vH0BERE5vxHH0ZpYO/AC4EagBXjezdc65nXGb/RXwrHPuR2a2CFgPlAbr9jrnLh/XqkVEZNRGc0R/FbDHObfPOdcFrAFWDNrGAZOD+QLgwPiVKCIiYzGaoJ8DVMfdrwmWxXsIuNfMavBH838et64saNL5dzO7bqgXMLOVZlZhZhVRv06FiEiijVdn7GeBnznnSoDlwM/NLA2oA+Y555YA3wCeNrPJgx/snHvMOVfunCsvLi4ep5JERARGF/S1wNy4+yXBsnhfAJ4FcM5tArKBIudcp3OuIVi+BdgLXDjWokVEZPRGE/SvAwvMrMzMMoG7gHWDtqkCPgZgZhfjg77ezIqDzlzM7DxgAbBvvIoXEZGRjTjqxjnXY2ZfAV4A0oHVzrkdZvYwUOGcWwf8BfC4mX0d3zH7eeecM7PrgYfNrBvoA77knGucsJ9GREROYcn2bSzl5eWuoqIi7DJERM4pZrbFOVc+1Dp9MlZEJOIU9CIiEaegFxGJOAW9iEjEKehFRCJOQS8iEnEKehGRiFPQi4hEnIJeRCTiFPQiIhGnoBcRiTgFvYhIxCnoRUQiTkEvIhJxCnoRkYhT0IuIRJyCXkQk4hT0IiIRp6AXEYk4Bb2ISMRlhF1AJHR3QOsBaK6B5lp/2xI/Xwtp6ZA3E/JnQv4syJ/hb/NmQEEJzLoM0mNh/yQiEkEK+pH0dEJTNRzd78O7pc6HeksdtNZBywFobzz1cblFUDAHpp0PZdeD64XWg346shuOHYS+noHtswpgwY1w0S1wwcche3LCfkQRiTYFfb/WQ1D5Bzj6vg/1xuC2uQZwcRsaTCqGybOgYC7MvQryZ8Pk2T7YC+b6+VjO6V+vrw/aGnzgN+6D916E956H7WshLebfHC66BRYu968lInKWzDk38lYJVF5e7ioqKhL7ovXvwU+X+eAFH+SFZTC1DApL/XxhqW9iyZ85cU0sfb1Q/Srs+lc/HX3fL5++yJ8Z9Nc09Tw/X1Dim4T69XRB2xE4fmTgtrsNzv8oTJk3MTWLSFIwsy3OufIh16V80B+thNXLfDPKZ56EmZdCVn7iXn84zkH9Lh/41a/6M4ymSujtGtgmLTYQ4MePQGfz8M9Xdj1cdjcsug0yJ01s7SKScAr64bQe9CHf3gifX+9DPpn19fo+gaPvB01LwW1auu8TmFQMk6bFzRf5N4wdz8G2p31TVGYeLFoBl98N8z4MaRp4JRIFCvqhtDXCT5dDUxXc/xuY+8GJf80wOQdVm2Dr07DjX6Cr1Z8NLL4DFnwC5pRDurpsRM5VCvrBOlvhidvg0A6451dw3kcm9vWSTVcb7Pq/PvTff9mPCMougPP+kx/xc8HH1QEsco45XdCn3iFcdzs8fRfUbYO7nkq9kAfIzIUPfMZP7Udh37/Dnpdgz+9h57/4bWZc6gO/+CLfBJQ7zU+TitTGL3KOSa2g7+mCZ+/3wyhv/zEsvDnsisKXUwiXfNJPzsHhnbD7JdjzO9j0A+jrPvUxGTlB+E+FrMnBlO/H/mflB9NkiOX6EUrpMUjP9J3H8fdjOX6bzEl+yshRn4HIBEidoO/rhedWwu4X4Y/+CRb/cdgVJR8zmHGJn659wDfxtNb5YafxQzbbGgamzlbfydvZCp0t/tb1nn0NsUn+jCOW498Y0jL8G0Naup/vX5aWBhZM2MC8BfMZWf5NJCN74A0llh3c5vqmquwCyJkSzE/xb05j6afoaoOu4/7NU/0dkkRS56/xjSf96JMbH4byPwm7mnNDZq4fvz/t/NE/xjk/dr+z1YdeXw/0dvthoX09/rb/fne737bruJ9Omm/3ZxN9Pf5Nurd/Prjf0wU4cH3BNGi+p8M/R0/7wOuM6mfO90E9KWiqyg2arfrvZ0/xzV2tdf7SFvGfkO5oGnienMJg5FNx8PhgfspcKFoIxRf6NxiRBEidoN+3wX9q9ZqvhV1JtJkNNMUkE+f85Sz630w6W6C9CTqa46Ymv6z9aHDGcgSOvAfHG6D7+KAnNMib7j8FXVgG8z/sr12UNdkP1z1eH0xHoP5d2P8fp14qI38WFC8Mgn+hf0Pt6wnOjgZPLf7NLpYbnPEE+zgz1w+ZjeX6sx7n8G+A/bd9Jy/r6w2WBbf992O5Ax/Gm1Tsf48SGakR9M5B5SY474awK5GwmAVNN9m+b+FMdbf78G8/6o/W82ac+Seke7v9cN76d/2H4Y6852+3PgVdx4Z/XGae7/dIi/k3nK42f6YyUTLzBkK//1PY/Z3wmXkDb+SZeX7KyJy4WmRcjCrozWwZ8D+BdODHzrlHBq2fBzwBTAm2WeWcWx+s+ybwBaAX+Kpz7oVxq360GvfB8cMw/0MJf2mJiFiOv+REQcnZP0d6bKAp7KLlA8ud881Aje/7voUTHdr5PkjjL3PRr683ODtp828S3W1+mRm+z8Li+i+CZWnpcX0ZaXH304O+lvf9/0r/dGgH7Fo/dId8vLRYXGf8ZN8k1d8hnz3ZvymkZwad8Flx85n+503LGFh20nzQcZ+RNfDY+Pn0zJM7750bdEbD2feV9ARNjbGc0Z/d9PX5z6d0tvor2vb/jPE/7+CaE2TEvWBm6cAPgBuBGuB1M1vnnNsZt9lfAc86535kZouA9UBpMH8XcAkwG/idmV3o3Fh6685C1SZ/O09BL0nI7MzfRNLSB94MmDH2GvJnQNEFpy7v7fFXbW1vGug/6To2aP6YD7eOFt/E1NHiz1w6WvxlObraRn6zOGvGyRcdHCQzz5+N9PeR9M/nBmcobUfg2GE/Ha+HY4f8/In+FotrLosfIZbt+4E6Wgaa17paR1lyuj8rnDLXNydPmRf8/uf6M6gZi8a4T041mre7q4A9zrl9AGa2BlgBxAe9A/qvq1sAHAjmVwBrnHOdwPtmtid4vk3jUPvoVW3yO7ZoYUJfVuScl54RXNhvjM/j3EAnfPzU0+XfBHqD6cR8fOd9sF1vp1/X0zkw39fDSWct8bfO+b6X/v6SpmqofcPPxx9rZub7/pa86f5zI2XXw6Tp/ii8/6ypv8msv4+nu92/iUyePXD2khU3vDiWE/fzxv/c3b7240eguRoOv+OHM/c3xc2+AlZuGOPOPtVogn4OUB13vwa4etA2DwEvmtmfA5OAj8c9dvOgx84Z/AJmthJYCTBv3gRcZbFyE8xdqjHaImEx8235ydCe39fnj9i7jvsj/JEuKT7RnPP9P83VvvltAoxX8n0W+JlzrgRYDvzczEb93M65x5xz5c658uLi4nEqKdB6CBr3qn1eRLy0NN8hP2Vu+CEP/k1wUhHMXgIlQ17BYMxGc0RfC8yNu18SLIv3BWAZgHNuk5llA0WjfOzEqg5OKOZ9OKEvKyKSLEZz1P06sMDMyswsE9+5um7QNlXAxwDM7GIgG6gPtrvLzLLMrAxYALw2XsWPSuUm/9H6WZcl9GVFRJLFiEf0zrkeM/sK8AJ+6ORq59wOM3sYqHDOrQP+AnjczL6O75j9vPOXxdxhZs/iO257gC+HMuKmpDw52gZFREIwqkGmwZj49YOWfTtufidwzTCP/Vvgb8dQ49nrbIWDb8F1fxHKy4uIJINoD0Opfs1/vFvj50UkhUU76Ks2+0/+zb0q7EpEREIT8aDfBDMXJ8eXfYuIhCS6Qd/TBTUVGlYpIikvukFft81/rFgflBKRFBfdoK96xd+qI1ZEUlyEg34zTD3fX6hIRCSFRTPo+/p8R6yO5kVEIhr0R9713wSk9nkRkYgGvb5oRETkhGgGfeUm/8UBU88LuxIRkdBFM+irNvtmG32TvYhIBIO+uQaaq9RsIyISiF7QV6p9XkQkXvSCvmqT/7LfGZeGXYmISFKIZtDP/aD/9noREYlY0LcfhcM7dSEzEZE40Qr6qlf97byl4dYhIpJEIhb0r0BazH9HrIiIAJEL+s0wewnEcsKuREQkaUQn6LvbofYNNduIiAwSnaDvaIFFK+CCj4VdiYhIUonOGMT8GfDHPwm7ChGRpBOdI3oRERmSgl5EJOIU9CIiEaegFxGJOAW9iEjEKehFRCJOQS8iEnEKehGRiDPnXNg1nMTM6oHKMTxFEXBknMoZT6rrzCRrXZC8tamuM5OsdcHZ1TbfOVc81IqkC/qxMrMK51zSXb5SdZ2ZZK0Lkrc21XVmkrUuGP/a1HQjIhJxCnoRkYiLYtA/FnYBw1BdZyZZ64LkrU11nZlkrQvGubbItdGLiMjJonhELyIicRT0IiIRF5mgN7NlZvaume0xs1Uh1jHXzDaY2U4z22FmXwuWP2RmtWa2NZiWh1TffjN7O6ihIlg21cxeMrPdwW1hgmtaGLdftppZi5k9EMY+M7PVZnbYzLbHLRty/5j3/eBv7i0zuyLBdX3PzHYFr/2cmU0JlpeaWXvcfnt0ouo6TW3D/u7M7JvBPnvXzG5KcF2/jKtpv5ltDZYnbJ+dJiMm7u/MOXfOT0A6sBc4D8gEtgGLQqplFnBFMJ8PvAcsAh4CHkyCfbUfKBq07L8Bq4L5VcA/hPy7PAjMD2OfAdcDVwDbR9o/wHLgecCApcCrCa7rE0BGMP8PcXWVxm8X0j4b8ncX/C9sA7KAsuD/Nj1RdQ1a/9+Bbyd6n50mIybs7ywqR/RXAXucc/ucc13AGmBFGIU45+qcc28E863AO8CcMGo5AyuAJ4L5J4BPhlcKHwP2OufG8unos+acexloHLR4uP2zAnjSeZuBKWY2K1F1OededM71BHc3AyUT8dojGWafDWcFsMY51+mcex/Yg///TWhdZmbAZ4BnJuK1T+c0GTFhf2dRCfo5QHXc/RqSIFzNrBRYArwaLPpKcOq1OtHNI3Ec8KKZbTGzlcGyGc65umD+IDAjnNIAuIuT//mSYZ8Nt3+S6e/uT/FHff3KzOxNM/t3M7supJqG+t0lyz67DjjknNsdtyzh+2xQRkzY31lUgj7pmFke8GvgAedcC/Aj4HzgcqAOf9oYhmudc1cANwNfNrPr41c6f64YyphbM8sEbgN+FSxKln12Qpj7Zzhm9i2gB3gqWFQHzHPOLQG+ATxtZpMTXFbS/e4G+SwnH1AkfJ8NkREnjPffWVSCvhaYG3e/JFgWCjOL4X+BTznn/g+Ac+6Qc67XOdcHPM4Ena6OxDlXG9weBp4L6jjUfyoY3B4Oozb8m88bzrlDQY1Jsc8Yfv+E/ndnZp8H/gi4JwgHgmaRhmB+C74d/MJE1nWa310y7LMM4NPAL/uXJXqfDZURTODfWVSC/nVggZmVBUeFdwHrwigkaPv7CfCOc+5/xC2Pb1P7FLB98GMTUNskM8vvn8d35m3H76vPBZt9DvhNomsLnHSUlQz7LDDc/lkH3B+MilgKNMedek84M1sG/CVwm3OuLW55sZmlB/PnAQuAfYmqK3jd4X5364C7zCzLzMqC2l5LZG3Ax4Fdzrma/gWJ3GfDZQQT+XeWiF7mREz4nun38O/E3wqxjmvxp1xvAVuDaTnwc+DtYPk6YFYItZ2HH/GwDdjRv5+AacDvgd3A74CpIdQ2CWgACuKWJXyf4d9o6oBufFvoF4bbP/hRED8I/ubeBsoTXNcefNtt/9/Zo8G2twe/363AG8CtIeyzYX93wLeCffYucHMi6wqW/wz40qBtE7bPTpMRE/Z3pksgiIhEXFSabkREZBgKehGRiFPQi4hEnIJeRCTiFPQiIhGnoBcRiTgFvYhIxP1/Bf9hsieuM44AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(df_score.num_iter, df_score.train_auc, label='train')\n", "plt.plot(df_score.num_iter, df_score.val_auc, label='val')\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 95, "id": "737dda99", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(df_score.num_iter, df_score.val_auc, label='val')\n", "plt.legend()" ] }, { "cell_type": "markdown", "id": "76389daf", "metadata": {}, "source": [ "## 6.8 XGBoost parameter tuning\n", "\n", "Tuning the following parameters:\n", "\n", "* `eta`\n", "* `max_depth`\n", "* `min_child_weight`\n" ] }, { "cell_type": "code", "execution_count": 100, "id": "dd8c7ee2", "metadata": {}, "outputs": [], "source": [ "scores = {}" ] }, { "cell_type": "code", "execution_count": 114, "id": "71beb544", "metadata": {}, "outputs": [], "source": [ "%%capture output\n", "\n", "xgb_params = {\n", " 'eta': 0.01, \n", " 'max_depth': 6,\n", " 'min_child_weight': 1,\n", " \n", " 'objective': 'binary:logistic',\n", " 'eval_metric': 'auc',\n", "\n", " 'nthread': 8,\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "\n", "model = xgb.train(xgb_params, dtrain, num_boost_round=200,\n", " verbose_eval=5,\n", " evals=watchlist)" ] }, { "cell_type": "code", "execution_count": 100, "id": "a6e7e90a", "metadata": {}, "outputs": [], "source": [ "scores = {}" ] }, { "cell_type": "code", "execution_count": 115, "id": "4a942338", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'eta=0.01'" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" } ], "source": [ "key = 'eta=%s' % (xgb_params['eta'])\n", "scores[key] = parse_xgb_output(output)\n", "key" ] }, { "cell_type": "code", "execution_count": 121, "id": "fcab5ce9", "metadata": {}, "outputs": [], "source": [ "scores = {}" ] }, { "cell_type": "code", "execution_count": 128, "id": "2775e115", "metadata": {}, "outputs": [], "source": [ "%%capture output\n", "\n", "xgb_params = {\n", " 'eta': 0.1, \n", " 'max_depth': 10,\n", " 'min_child_weight': 1,\n", " \n", " 'objective': 'binary:logistic',\n", " 'eval_metric': 'auc',\n", "\n", " 'nthread': 8,\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "\n", "model = xgb.train(xgb_params, dtrain, num_boost_round=200,\n", " verbose_eval=5,\n", " evals=watchlist)" ] }, { "cell_type": "code", "execution_count": 129, "id": "87011661", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'max_depth=10'" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" } ], "source": [ "key = 'max_depth=%s' % (xgb_params['max_depth'])\n", "scores[key] = parse_xgb_output(output)\n", "key" ] }, { "cell_type": "code", "execution_count": 131, "id": "71c17c58", "metadata": {}, "outputs": [], "source": [ "del scores['max_depth=10']" ] }, { "cell_type": "code", "execution_count": 133, "id": "b4ca0a0f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 133, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for max_depth, df_score in scores.items():\n", " plt.plot(df_score.num_iter, df_score.val_auc, label=max_depth)\n", "\n", "plt.ylim(0.8, 0.84)\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 121, "id": "5f8916c8", "metadata": {}, "outputs": [], "source": [ "scores = {}" ] }, { "cell_type": "code", "execution_count": 138, "id": "c16ac409", "metadata": {}, "outputs": [], "source": [ "%%capture output\n", "\n", "xgb_params = {\n", " 'eta': 0.1, \n", " 'max_depth': 3,\n", " 'min_child_weight': 30,\n", " \n", " 'objective': 'binary:logistic',\n", " 'eval_metric': 'auc',\n", "\n", " 'nthread': 8,\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "\n", "model = xgb.train(xgb_params, dtrain, num_boost_round=200,\n", " verbose_eval=5,\n", " evals=watchlist)" ] }, { "cell_type": "code", "execution_count": 139, "id": "d8ca1530", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'min_child_weight=30'" ] }, "execution_count": 139, "metadata": {}, "output_type": "execute_result" } ], "source": [ "key = 'min_child_weight=%s' % (xgb_params['min_child_weight'])\n", "scores[key] = parse_xgb_output(output)\n", "key" ] }, { "cell_type": "code", "execution_count": 144, "id": "c08950e0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 144, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAD8CAYAAACcjGjIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABNkElEQVR4nO3dd3hUxfrA8e+bHlIISSiBUELvUkKTokgRuQoWVFARlJ94VfSKekWvXvXa9XoVu6IiWBCxIwICCkozECD0TiAkhAApJCE9md8fZwNLSFmSTYG8n+fZJ7tz5syZs0n23TkzZ0aMMSillFL2XKq7AkoppWoeDQ5KKaXOocFBKaXUOTQ4KKWUOocGB6WUUufQ4KCUUuocDgUHERkhIrtFZJ+IPFbM9mYislxENonIFhEZWcz2dBF5pKwyRSRMRCJs6V+LiEdFTlAppdT5KzM4iIgr8C5wFdARGCciHYtkexKYZ4zpDowF3iuy/XVgkYNlvgK8YYxpDSQDk873pJRSSlWMIy2H3sA+Y8wBY0wOMBcYXSSPAfxtz+sCRwo3iMi1QDSwvawyRUSAK4BvbflmA9eezwkppZSqODcH8jQBDtu9jgX6FMnzDLBERO4HfIChACLiC0wDhgGP2OUvqcwgIMUYk2eX3qS4SonIZGAygI+PT8/27ds7cCpKKaUKbdiw4YQxpn5x2xwJDo4YB8wyxvxPRPoBn4tIZ6yg8YYxJt1qFDiPMWYGMAMgPDzcREZGOrV8pZS62InIoZK2ORIc4oCmdq9DbWn2JgEjAIwxa0XECwjGag2MEZFXgQCgQESygA0llJkIBIiIm631UNyxlFJKVTJH+hzWA21so4g8sDqc5xfJEwMMARCRDoAXcNwYM9AY08IY0wKYDrxojHmnpDKNNQvgcmCMrdwJwE8VOUGllFLnr8zgYPsGPwX4FdiJNSppu4g8KyKjbNkeBu4Skc3AV8BEU8p0ryWVads8DXhIRPZh9UF8Ur5TU0opVV5yMUzZXVyfQ25uLrGxsWRlZVVTrdSFysvLi9DQUNzd3au7KkpVKhHZYIwJL26bszqka5zY2Fj8/Pxo0aIFzu4MVxcvYwyJiYnExsYSFhZW3dVRqtpctNNnZGVlERQUpIFBnRcRISgoSFucqta7aIMDoIFBlYv+3Sh1kQcHpZRS5aPBQSml1Dk0OFSz+fPn8/LLLzutvMsvv5zi7haPjIzkgQceAGDWrFlMmTKl2P19fX2dVhd7I0eOJCUlpdQ8JdU9KiqKhQsXntfx7rzzTho0aEDnzp3Paz+llEWDQzUbNWoUjz12zizoThceHs5bb71V6ccpycKFCwkICCjXvuUJDhMnTmTx4sXlOp5S6iIeymrvPz9vZ8eRVKeW2bGxP09f06nUPAcPHmTEiBH07duXNWvW0KtXL+644w6efvppjh07xpdffsmOHTuIjIzknXfeYeLEifj7+xMZGcnRo0d59dVXGTNmTInlv/LKK3zxxRe4uLhw1VVXnW6BfPPNN9x7772kpKTwySefMHDgQFasWMFrr73GggULziojOjqaW265hfT0dEaPLjrZ7tnuu+8+rrzySkaNGsV1111HvXr1mDlzJjNnzmT//v288MILfPHFF7z11lvk5OTQp08f3nvvPVxdXWnRogWRkZEEBwfz3HPP8cUXX1C/fn2aNm1Kz549eeSRR4qte58+fXjqqafIzMxk1apVPP7449x8881l/n4GDRrEwYMHy8ynlCqethwq2b59+3j44YfZtWsXu3btYs6cOaxatYrXXnuNF1988Zz88fHxrFq1igULFpTaoli0aBE//fQTERERbN68mUcfffT0try8PNatW8f06dP5z3/+U2r9/vGPf3DPPfewdetWQkJCSs07cOBAVq5cCUBcXBw7duwAYOXKlQwaNIidO3fy9ddfs3r1aqKionB1deXLL788q4z169fz3XffsXnzZhYtWnTOZaSidffw8ODZZ5/l5ptvJioqiptvvpnly5fTrVu3cx6XXnppqfVXSjmuVrQcyvqGX5nCwsLo0qULAJ06dWLIkCGICF26dCn2m+21116Li4sLHTt2JCEhocRyly1bxh133EGdOnUACAwMPL3t+uuvB6Bnz55lfntevXo13333HQDjx49n2rRpJeYdOHAg06dPZ8eOHXTs2JHk5GTi4+NZu3Ytb731FrNnz2bDhg306tULgMzMTBo0aHDO8UaPHo2XlxdeXl5cc801Z213pO6DBw8mKiqq1PNSSlVMrQgO1cnT0/P0cxcXl9OvXVxcyMvLKzV/eac2KSzD1dW12GMU5ei4/iZNmpCSksLixYsZNGgQSUlJzJs3D19fX/z8/DDGMGHCBF566aVy1dvRui9fvpypU6eek16nTh3WrFlT7mMrpc7Qy0oXqGHDhvHpp5+SkZEBQFJSUrnK6d+/P3PnzgU45xJQcfr27cv06dMZNGgQAwcO5LXXXmPgwIEADBkyhG+//ZZjx46drtOhQ2dPF9+/f39+/vlnsrKySE9PP6cPpDh+fn6kpaWdfl3Ycij60MCglPNocLhAjRgxglGjRhEeHk63bt147bXXylXOm2++ybvvvkuXLl2Iiyt76YyBAweSl5dH69at6dGjB0lJSaeDQ8eOHXn++ecZPnw4Xbt2ZdiwYcTHx5+1f69evRg1ahRdu3blqquuokuXLtStW7fUYw4ePJgdO3bQrVs3vv76a4fOa9y4cfTr14/du3cTGhrKJ5/o5L5KnY+LdlbWnTt30qFDh2qqkSpNeno6vr6+ZGRkMGjQIGbMmEGPHj2qu1pn0b8fVRvUyllZVc01efJkduzYQVZWFhMmTKhxgUEppcGhxtu6dSvjx48/K83T05OIiIgL9phz5sxxSjlKqcqjwaGG69KlS5UP26yOYyqlahbtkFZKKXUOh4KDiIwQkd0isk9EzrltV0SaichyEdkkIltEZKQtvbeIRNkem0XkOlt6O7v0KBFJFZEHbdueEZE4u20jnXi+SimlHFDmZSURcQXeBYYBscB6EZlvjNlhl+1JYJ4x5n0R6QgsBFoA24BwY0yeiIQAm0XkZ2PMbqCbXflxwA925b1hjCnf2EyllFIV5kjLoTewzxhzwBiTA8wFis7QZgB/2/O6wBEAY0yGMabwNlcvW76ihgD7jTGHitmmlFKqGjgSHJoAh+1ex9rS7D0D3CYisVithvsLN4hIHxHZDmwF/m4XLAqNBb4qkjbFdnlqpojUc6COFyxdz+GMqljPISkpiWHDhtGmTRuGDRtGcnLyeZWrVG3hrA7pccAsY0woMBL4XERcAIwxEcaYTkAv4HER8SrcSUQ8gFHAN3ZlvQ+0wrrsFA/8r7gDishkEYkUkcjjx4876TSqnq7nUDZnrufw8ssvM2TIEPbu3cuQIUOcGpiVupg4MpQ1Dmhq9zrUlmZvEjACwBiz1hYAgoFjhRmMMTtFJB3oDBR+PbwK2GiMSbDLd/q5iHwEFDv5jjFmBjADrDukSz2DRY/B0a2lZjlvjbrAVaV/sOh6DjVvPYeffvqJFStWADBhwgQuv/xyXnnllTLLU6q2caTlsB5oIyJhtm/6Y4H5RfLEYPUdICIdsPoXjtv2cbOlNwfaAwft9htHkUtKto7rQtdhdWpfsHQ9h5q1nkNCQsLp82zUqFGp06IrVZuV2XKwjTSaAvwKuAIzjTHbReRZINIYMx94GPhIRKZidTpPNMYYERkAPCYiuUABcK8x5gSAiPhgjYC6u8ghXxWRbrZyDhaz/fyV8Q2/Mul6DjV3PQcRcXi6cqVqG4fukDbGLMTqaLZPe8ru+Q6gfzH7fQ58XkKZp4CgYtLHF5P9gqXrOTi/7hVZz6Fhw4bEx8cTEhJCfHz8OcFLKWXRO6QvULqeQ/nWcxg1ahSzZ88GYPbs2WX2syhVW2lwuEDpeg6lK2k9h8cee4ylS5fSpk0bli1bViUjxZS6EOl6DqrK6XoOStUMup6DqlF0PQd1McrKzcfL3bW6q+E0GhxqOF3PQamazRjDrDUHeeGXnfRtGcRDw9vSo9mFP7GDBocaTtdzUKrqGGPOa3hzVm4+T/64jW83xNI7LJCd8alc/94aBrerz0PD2tEltPT+tJpMg4NSqtbLySvgmZ+38/PmI9w1sCWTBoTh41n6x2NCahZ3f76BqMMpPDCkDQ8OaUNmbj6z1x7kwz8OcM07qxjesSFTh7WlQ4h/qWXVRDpaSSlVqyWmZ3PbJxHMiYihVX1fXl+6h8v+u4LP/zpEbn5BsftsjEnmmrdXsSchjQ9u68FDw9ri4iL4eLpx7+WtWTVtMFOHtmXt/kSuenMl983ZyL5j6VV8ZhWjwUEpVWvtOprK6HdXE3U4hek3d+PH+/rz/b2X0jLYh3//uI3hb/zJwq3xZ92QOi/yMGM//AtPdxe+v/dSRnQ+d9oZPy93/jG0DaumXcGUwa1ZsesYI99cyfcbY6vy9CpEh7IqVQz9+7n4Ldl+lKlfR+Hj6caM28Pp1jTg9DZjDL/vOsYri3exJyGdS5oG8OiV7Vi6I4FZaw7Sv3UQ74zrQT0fD4eOdSI9m/vnbGLtgUTuvbwVjwxvh4tL9U/dUtpQVm05VDNdz+EMZ63nkJWVRe/evbnkkkvo1KkTTz/99Olt0dHR9OnTh9atW3PzzTeTk5PjcLnq4mCM4d3l+7j7iw20auDL/CkDzgoMYE0pM6RDQxb9YxD/HdOVY6lZ3PpxBLPWHGTSgDBm39Hb4cAAEOzryWeTejOud1PeW7Gfe7/cSEZO2VPbVCcNDtVM13Mo2/kGB09PT37//Xc2b95MVFQUixcv5q+//gJg2rRpTJ06lX379lGvXr3Td06r2iErN59/zI3iv7/u5pqujZl3dz8a1fUqMb+ri3BjeFOWP3I5T1/TkXdv6cG/r+6Im+v5f3S6u7rw4nVd+PfVHVmy4yg3frCW+JOZFTmdSlUrRiu9su4VdiXtcmqZ7QPbM613yTOYgq7nUF3rOYjI6RZQbm4uubm5iIh1qeD330/fZzFhwgSeeeYZ7rnnnlLLUxe+zJx8luw4yod/HGDn0VT+eWU77r28lcPDVr3cXbmjf1iF6yEiTBoQRstgH+7/ahOj31nNR7eHc0mRlktNoC2HSqbrOVTPeg75+fl069aNBg0aMGzYMPr06UNiYiIBAQG4uVnfiUJDQx2aT0pdmAoKDH8dSOTRbzfT64Vl/GNuFCczc5kxPpz7Breu1unaB7dvwHf3XIqHmws3fbiWX7acmYMsv8CQmJ7NnoQ01uw/wc+bj/D9xliycvOrtI61ouVQ1jf8yqTrOVTPeg6urq5ERUWRkpLCddddx7Zt22jUqFGp+6iLw8ETp/h+Yyzfb4ojNjkTHw9XRnYJ4YaeofRuEVgjOoIB2jXy48f7+vP3zzdw35yNvLHMl5SMHJJO5VBQzDih+ZuPMGN8OB5uVfOdvlYEh+qk6zk4v+7ns55DQEAAgwcPZvHixTz88MOkpKSQl5eHm5sbsbGxNGnSpNx1VTXLsdQs/vXDVpbtPIYIDGgdzCPD2zG8U0PqeNTMj7pgX0++vKsPry/Zw8HEUwT5BhLs40GQrydBvh4E+ngQ7OvJXwcSeeqn7UydF8VbY7vjWgUBrma+Y6pMw4YN49lnn+XWW2+lTp06JCUlndV6cFTheg633Xbbea3n8Pvvv5OYmMiYMWNO94sMGTKE0aNHM3XqVBo0aEBSUhJpaWk0b978rOPdfffdPP744+Tl5bFgwQImT55c6jFLWs+hJMePH8fd3Z2AgAAyMzNZunQp06ZNQ0QYPHgw3377LWPHjtX1HC4ii7Ye4fFfFpHjtZ5O3bNpElAHX09PVqe6svYvF9xc3HARF9xd3Gnm14y2gW1pV68dQd7nrDdW5TzdXHl8ZOnDpts29CMrN58XF+7Cz9ONl67vUumXxTQ4XKBGjBhBVFQU4eHheHh4MHLkyGL7MMry5ptvcsstt/DKK6849EE5cOBAlixZQuvWrWnevHmJ6zkUFBTg7u7Ou+++e1ZwsF/PoWHDhg6v5/Dyyy/TrVs3hzqk4+PjmTBhAvn5+RQUFHDTTTdx9dVXA1Yn/tixY3nyySfp3r07kyZNKvOcVc21PymOfy6axa5Tv+MacgwvFw/q1GlJYnYqx7MKyCvII9/kU2Cs5zn5OSRnJ5/ev753/dOBol29doT6hZKek87JnJOczLY9bM9Ts1PpE9KHWzvcWi39FZMHtSI1M493lu/Dz8uNf43sUKn10JvgVJXT9RxUSfYkpPHe8n0E+nhyebv69A4LPGca7My8TH6L+Y0vtn7P9uRIEEMD93bc1eMmrgq7krqepX/ZSMlKYXfybnYn7T79c//J/eQVFH8Zs45bHQI8A3B3dedQ6iFubHsjT/R5AleXqp+e2xjD0/O389naQzwyvC1TrmhTofIqvJ6DiIwA3gRcgY+NMS8X2d4MmA0E2PI8ZoxZKCK9gRmF2YBnjDE/2PY5CKQB+UBeYQVFJBD4GmgBHARuMsacCfXqgqfrOaii0rJyeW3pVr6M3IG3Zya5kspn29Lw8MigcVA+gf45eHlmkFmQSkxqDBl5GRTkBlAnZzjPDL6dv3Xo6vCxArwC6BPShz4hfU6n5ebncuDkAY6eOoqfhx8BngH4e/pT16Mu7q7ugPXB/Pamt/lo60ecyDzBq4Nexcut5HskKoOI8Mw1nUjLyuO1JXvw83JnwqUtKudYZbUcRMQV2AMMA2KB9cA4Y8wOuzwzgE3GmPdFpCOw0BjTQkTqADnGmDwRCQE2A41trw8C4caYE0WO9yqQZIx5WUQeA+oZY0odbnQxtxwuxvUcLgQXy99PTVNgClgYvZB18etIykoiMSuR2JPHSclOBpcS7lYv8KQgzweT74O3S11cTSCJCe24sdNl/PvqTmXOnupsX+36ipciXuKS+pfwzpB3ymypVIa8/ALu+XIjS3ckMP3mblzbvXwDKyracugN7DPGHLAVNhcYDeywy2OAwjlp6wJHAIwxGXZ5vGz5yjIauNz2fDawAijXWNTznZu9JtL1HKrexXCptSbamLCRV9e/yvbE7QR6BVLXPZhjKe6kpDUmuE4XrurQmo4NGxPoFUiQdxCBXoHU86qHt5s30SdO8cfuY6zYc5z4lCxeHNOOoR0bVst5jGs/jiCvIB5f+Ti3L7qdD4Z+QIhv6fcIOZubqwtvj+vO499vpVPjypkO3JGWwxhghDHm/2yvxwN9jDFT7PKEAEuAeoAPMNQYs8G2rQ8wE2gOjLe7rBQNJGMFjA+NMTNs6SnGmADbcwGSC18XqddkYDJAs2bNeh46dOis7dHR0fj5+REUFHTBBwhVdYwxJCYmkpaWRlhYxe+IvVilZ+fhKoK3R9nX3WPTYnljwxssObSEBnUaMLnT/ezY24ovIg7j7+XGtBHtuSm8aY25/8BRkUcjeeD3B/B28+b9Ye/Ttl7b6q7SeSut5eCs4PCQraz/iUg/4BOgszGmwC5PB6yWwCBjTJaINDHGxIlIA2ApcL8x5k/74GDbL9kYU+qae8VdVsrNzSU2NpasrKxSz0+pory8vAgNDcXd3b26q1Ij/bnnOHd9FokB+oQFcnm7Blzerj4tg33O+iKWnpPOx1s/5vMdnyO40Nl3NCeP9mdzjHVB4dY+zXl4eFsC6jg+gV1Nszd5L39f9ncycjN464q36NWoV3VX6bxU9LJSHNDU7nWoLc3eJGAEgDFmrYh4AcHAscIMxpidIpIOdAYijTFxtvRjIvID1uWrP4EEEQkxxsTbWiTHKAd3d3f95qeUkxhjOJF5gp+2bea1FWsICk2jSaAXe0/k8dcaw8urPAis40vnkPr0CG2Ih3cSM7fPID0vGZdT4aQeGcaKvLp0DXVnyuDW/K1rY9o18qvu06qwNvXa8OXIL/n70r8zeelkOgd1polfE5r4nv1o5NMIN5cL684BR1oOblgd0kOwgsJ64BZjzHa7PIuAr40xs2wthN+AJlgjjg7bOqCbA2uBrkAm4GKMSRMRH6yWw7PGmMUi8l8g0a5DOtAYc2bioGIU13JQSjmmwBSQmp16uoM4KSuJpKwkEk4lEJMWQ0xqDDFpMWTmnZlB1FWsy0n5puT5fvIzmuNx8loua9GTy9vVZ2Cb+gT7epaY/0J2Mvsk70a9y76UfRxJP8LRU0fPem9cxZVm/s0Y2mwoI8JG0CagTY243F2hy0q2AkYC07GGqc40xrwgIs9itQDm20YofQT4YvUhPGqMWWK7BPUYkAsUYAWAH0WkJfCDrXg3YI4x5gXbsYKAeUAz4BDWUNak0uqnwUEpxx3LOMaP+35k2aFlHM88TnJWcrEf8m4uboT6htLMvxkFOUH8vrWAZn7NePOGobQJboq7izu5+blk5GWQmZdJZl4mqdmniIo9TkxiFn9r24dLmtarkqkeaprcglwSTiUQlx7HkfQjxKbHsvn4ZtYfXU+BKaBV3VZcGXYlI1qMIKxu9V3hqHBwqOk0OChVuvyCfFYfWc23e77lz9g/yTf59GjQg7C6YadHB9XzrEegdyCBXtajnmc9XF1c+WVLPA/M3UTX0LrMvrM3/l7aF1NeJzJPsOzQMhYfXMzGhI0YDO0D23NliytpV68dri6uuIk11Yebixuu4oqLiwtu4oanqydebl54unqefu4iFZuET4ODUrXU0VNH+WHfD3y/93uOnjpKoFcg17a+lhva3EAz/2Zl7v9TVBwPzdtM96YBfHpHL/w0MDhNwqkElhxawuKDi9lyfEu5ynB3cedfff7FmLYlr/tSmgrfIa2UqlkycjP4cd+PbEjYQL7JJ78gnzyTR4EpIL8gn3yTT3Z+NtsTt1NgCri08aX8M/yfDG46+PQdv2X5fmMsj3yzmV4tApk5sVeV32x2sWvo05DxHcczvuN4jp46SkJGwunfXeHv1P53m52fTXZeNln5WWc9b1OvYlNolER/20pdQE5knmDOzjl8vftrUnNSCfUNxcvN6/QlCFdxxdXFFRdxoY5bHe7sfCfXt7mepn5Nyy7czvcbY3n4m830axnExxPCa+yU1xeLRj6NaORTs9Yb0d+4UheAAykH+GzHZ8zfP5+8gjyuaHYFEztNpFuDbk4/1qq9J3j02y30axnEzIm9zpn4TtUOGhyUqiYHTx5k+sbpHMs4droTuHDKiECvQIK8gsg3+czbPY8VsSvwdPXkutbXcXun22nu37zsA5TDrqOp3PPFBlo38OWD8T01MNRiGhyUqmJZeVl8vPVjZm6biaerJ12Cu5CQkcDOpJ0kZSWdM3V0Pc963HvJvdzc/mYCvc5/QSdHJaRmceen6/H2cGXmxF46KqmW0+CgVBVaGbuSFyNeJDY9lpFhI3kk/BHq16l/ersxhrTcNJIyrRvRMvIy6NmwJ95u3pVar1PZedw5az0nM3P5+u5+NA6o3OOpmk+Dg1JV4Oipo7y6/lWWHlpKC/8WfDT8I/qG9D0nn4jg7+GPv4c/Leq2qJK65eUXMGXORnYdTePjCeF0blL1U1CrmkeDg1KVKLcglzk75/Bu1LsUmALu734/EztNxMO1Zkw2V7iy2PLdx3nhus4MbteguqukaggNDkpVkrScNKaumEpEfASDQgfxeO/HCfULre5qnWXGnwf4MiKGv1/Wilv7VE4nt7owaXBQqhIcPXWUe3+7l+iUaJ699FmubX1tjZhozd4vW+J5adEu/tY1hEevbFfd1bEUFMDJGPAPBVf9eKpO+u4r5WR7kvdwz7J7OJV7ineHvsuljS+t7iqdxRjD9xvjePyHrYQ3r8f/bryk+hbayU6DuA1weB3E/AWxkZB9Epr0hDEzoV6L6qmX0uCglDNFxEfw4PIHqeNWh9kjZtMusIZ8I7c5npbNEz9sZcmOBHq3CKz6exmMgf2/we5FcDgCEraDKQAEGnSEztdDQFNYNR0+GASj3oJO1zrn2AUFcHAlhIaDh49zyrRnDNSw1mFFaHBQykl+3v8zT615ihb+LXh/6Ps1bjqERVvjeeLHbaRn5/HEyA7cOSCs6qbTzsuBbd/Cmrfh2A7w8LU+pAf9E5r2hibh4B1wJn/nG+DbO+GbCRA9Ca58Edy9yn/8uI2w8BGrldJ8ANz2Lbg7abjuqURY9TpsmA0D/gEDH7kogoQGB6UqyBjDJ9s+4c2Nb9KrUS+mD56Ov0flLPpeHiczcnl6/jZ+jDpClyZ1ef2mS2jTsIpWYcs6CZGfQsQHkBZvtQ6ufR86jwG3UkZs1WsBdyyG35+1AsrhCBjzKdQ/z3WaM5Lgt2dhwyzwqQ9974O/3oNvJsLNX4CDkxAWf26pVllr3oHcU9CwM/z+PKQchr+9fsH3mVzYtVeqmuUV5PFSxEvM2zOPq8Ku4vn+zzt1mGpCahb16njg4Va+efv/2HOcR7/dTGJ6Dg8ObcN9g1vj7lqxNQBIPwbL/mP1DfiFgG9D66ef7advI8jNsALChtmQkwZhl8God6D1EMe/Vbt5wPDnocUg+OFumHE5/O016HZL2fsW5MPG2VZgyEqFvvfA5Y+BV10Iagm/PAw//B2unwEu53lZLTcT1n8CK/8HmUnQYRQMfgLqt7OOt+p1KxCO+RQ8fc+v7BpE13NQqpzSctL45x//ZPWR1dzR+Q4e7PFghRdfKWSM4dVfd/P+iv14u7sS3qIel7YKpl+rIDo39sethA/41KxcdsWnsePISdYfTOaXrfG0aeDL6zd1o0uoE25u27sMfvy71ZFcr4X1IZh1svi84mr1IfSbAo27Vey4qUfgu7vg0Crrw7hZX/BrZAUiP9ujsB8hNtK6hHRkk3UJaeR/oWHHs8tb+Tr89h8Iv9P6lu9IwMrPg6gvYMUrkHYEWg6GIU9Bkx5n51v/iXX8kEvglnngW3PvHdHFfpRyssOph5ny+xRiUmN4su+T3ND2BqeVnZdfwL9+2Mq8yFiu694Efy831h5IZE9COgB+nm70DgukX6sgmgR4s+toGjvjU9kRn0ps8pl1ngN9PLgxPJSpQ9tWvNM5L9v6Vrz2HWjQCcZ8Ag06WNtyMyHtKKQnWMEiLQHyMq1+g4CyFxRyWEE+/PEqrHnLapkU5elvXTpK2m8FjStfsOpQ0gf/0qdh9XQYMBWGPlPycfPzYMvXsPI1SDoAob2soBA2qOR9di+y+kx86sNt30Nw6/M50yrjjDWkRwBvYq0h/bEx5uUi25sBs4EAW57HjDELRaQ3MKMwG/CMMeYHEWkKfAY0xFpzeoYx5k1bWc8AdwHHbfv9yxizsLT6aXBQVSnyaCRTV0zFYHjj8jfo1aiX08rOys1nypxNLNuZwAND2jB16JmF6I+nZfPXgUTW7E/krwOJRJ84BYCLQFiwDx1C/OkQ4k/Hxv50DPGngZ+nc+6tOLEPvrsT4jdDr7tg+HPO68wtD2MgM/nsYJQWf+Z1UBsY8CB4ltGvYgwsmAobPoUhT8PAh87enp9rBYU/X4PkaGjUFS5/HNpd5VhLI3YDzLnJGo01bi4061PuU64spQUHjDGlPrA+7PcDLQEPYDPQsUieGcA9tucdgYO253UAN9vzEOAYVj9HCNDDlu4H7CksE3gGeKSsetk/evbsaZSqCt/v+d50+6ybufr7q82hk4ecWnbKqRwz5v3VpsVjC8xna6LLzH8kJcNsPpxsMrLznFqP0woKjNn4hTHPhxjzcnNjdi6onONUp/w8Y76505in/Y1Z95GVlpdjzIbPjJne1Ur/YKAxO3+x3o/zlbjfmDe7G/NcA2Oi5hqTm+Xc+lcQEGlK+Fx1pEO6N7DPGHPAFmnmAqOBHfYxBigcnlEXOGILPPZtPy9bPowx8UC87XmaiOwEmhQpU6kaI78gn+kbpzNr+yz6hvTltcteo66n8yaoS0jN4vZP1hF94hTvjOvB37qGlLlPSF1vQupW0jf4jCTruvm276DFQKvj1r9x5RyrOrm4wnUfQE46/PIIJO6HXb9AyiEI6Qbjvoa2V5Z/aGpgS5i0FL4aCz9Mhp8fgKZ9rEtSYYOgcfeKjZiqRI4EhybAYbvXsUDR9tEzwBIRuR/wAYYWbhCRPsBMoDkw3hhz1mT1ItIC6A5E2CVPEZHbgUjgYWNMctFKichkYDJAs2ZOvK6pVBEZuRlMWzmNFYdXcHO7m5nWexruLs77hz5wPJ3xn6wjJSOHWXf04tLWwU4r+7xkJFkfjDt+ggMrrMshV/zbuiZ/viN6LiSu7nDjLPjyRmtoauPuVid2m+HOuV/BJwgmLoB9v1k34UX/Cb8/Z23z8IVm/SBsIHS92epYryHK7HMQkTHACGPM/9lejwf6GGOm2OV5yFbW/0SkH/AJ0NkYU2CXpwNWv8QgY0yWLc0X+AN4wRjzvS2tIXACq5XxHBBijLmztDpqn4OqLElZSfx96d/Znbybab2mcUsHB4ZRliG/wJCamUtKZi7RJ9J55JstCDDrjt7OGVF0PtKPwa4FVkCIXgkm3+pE7jgauo6FRp2rtj7VKTcTEnZYo48q+ya2Uyfg4KozweLEHghqDXf9bg23rSKl9Tk40nKIA+xXJw+1pdmbBIwAMMasFREvIBirjwFb+k4RSQc6A5Ei4g58B3xZGBhs+RLsKv4RsMCBOirldAmnEpi8dDJx6XG8fcXbDAotZXRKCaIOpzB92R6ST+WQnJFLSkYOqVlnr/TWNNCbz+7sQ1hwJUzpUMgY6wPpxB7bYy/ER0HMWquFENgS+v8DOo6yLqdcBHf4njd3bwjtWTXH8gm2pgUpnBokeiV8Nhp+vNe6Oa8GvP+OBIf1QBsRCcMKCmOBol+fYoAhwCxbC8ELOG7b57AxJk9EmgPtgYNiDaH4BNhpjHndviARCbH1SQBcB2wr57kpVW5x6XH836//R1JWEu8Pfb9cI5Ly8gt4aF4UKRm5dGlSlxbBPgR4uxNQx4OAOu7Ww9uDHs3rUdfbydedjYEt8858Kz2xB7JSzmx387Zu2hr4iNVKaNipRnwg1VphA61RYL/+68zw2mpWZnCwfbBPAX7FGrk00xizXUSexerpng88DHwkIlOxLgdNNMYYERkAPCYiuUABcK8x5oQtfTywVUSibIcqHLL6qoh0s5VzELjbieerVJmiT0Zz15K7yMjL4KPhH9G1ftdylfPthlgOHD/Fh+N7cmWnKryWnJ9ndSZv+NQaZ1+/vXUzWnDbMw//JuDinBv2lJP0vde6ge+3Z61+j5aXV2t19CY4pezsTtrN5KWTAZgxbEa5Z1XNzMnn8teW0yTAm+/uubTq1nLITrPmDdq3DAY8ZHUoaxC4cGSnw8dD4NRxuPtPqFu5i0OV1uegfzVK2Ww9vpU7f70TNxc3Ph3xaYWm25615iAJqdk8dlWHqgsMqUdg5lWwfzlc8yYMfVoDw4XG09fqc8jLgXm3W3emVxP9y1EK667nu5behZ+HH7NHzKZl3ZblLislI4f3V+zjivYN6B0W6MRaluLoVvhoCCQfhFvnQc+JVXNc5XzBbeC6963pxRc/Vm3V0FlZVa0XeTSSe5bdQ4hvCB8N+4iGPg0rVN77K/aTlp3HoyMqsNBPXvaZcfFBrawbpxp0LP5+g33LYN4Ea26hOxdBoy7lP66qGTpcA/0ftDqnm4RD91urvAoaHFStdizjGA//8TCNfBrx6ZWfEuQdVKHyjqRk8umag1zXvQntG53nmg75uRD9B2z7HnYusKbEdnGHglxru4eftUBO0z7WAjmhvWD797DgIStw3Drv4ryLuba64t9wZCP88pB1v0nIJVV6eA0OqtbKK8jjn3/8k8y8TD4Z/kmFAwPA9GV7wMBDwxxclKYgHw6ttqap2DHfWh/A0x/aX22NMGp5OaTGWWssH46AmAj489UzS2tioPVQ6w7fsiaaUxcWVzdrTYgPB8Hc26xpPHIzrRlvc7PO/Lx0CrT/m9MPr8FB1VpvbXqLjcc28tLAl2hdr+JTKu9NSOPbDbHc0T+M0Hp1zt6Yl21N92x/E1rhz5x0cPexZvvsfD20GnL2kpj1WliPrjdZr7NSrevRhyPAzctaL+ECX3VMlcAnGG763Fouddt31o16bl5n/6RyBjzoX5SqlZbHLOfTbZ9yU9ubuLrl1U4p87+/7sbHw437BtsFmt2L4NcnrCmfz8wmA/6hVsdjt1uheT9ocyV41Dm30OJ4+UOrwdZDXfxCe8LUqr8XWIODqnUOpx3midVP0CGwA4/2ftQpZW44lMSSHQk8MrwtgT62ZULTjlrLW/o2su5EDm5rBYSg1hf08pGqdtDgoGqV7PxsHl7xMACvX/46nq6eFS7TGMMri3ZT38+TOweEFSZa6xTnZcPYOTV2JTClSqL3Oaha5ZV1r7AzaScv9H+BUD/n3H36+65jrDuYxD+GtKGOh+371vYfrNlOB/9LA4O6IGlwULXGz/t/5ps933Bn5zsZ3Mw51+vzCwyvLt5NWLAPN/eyTV586oQ1t1HjHtD3PqccR6mqpsFB1Qr7kvfx3F/P0bNhT+7vfr/Tyn3zt73sTkjj0Svb4e5q+3da9Kg1ouja93QUkbpgaXBQF719yfuYumIqddzq8N9B/8XNxTkf2Cv3Huft3/cypmcoV3WxLeu5c4E15PCyadCgg1OOo1R10K816qKVkZvBh1s+5LPtn1HHvQ5vDn6T+nXqO6XsoyezeHBuFG0b+PHcaNtqaZnJtrtZu8CAB51yHKWqiwYHddExxvD74d95Zd0rxJ+K59rW1zK151QCvZwzCV5efgH3f7WRzNx83r21B94etvmOFv8LMhLh1m9q7KLxSjlKg4O6qMSlx/FSxEv8EfsHrQNaM3vEbHo07OHUY7y2ZA/rDybz5thutG5gu19h71LYPAcG/bPK58BRqjJocFAXhdz8XGZtn8WMLTMQER4Jf4RbOtyCu4tzv8H/viuBD/7Yzy19mjG6WxMrMSsVfv6HteLaoH869XhKVRcNDuqCl3Aqgft/v5+dSTsZ2mwo03pPo5GP85fljE3OYOrXm+kY4s9TV3c8s2HpU5AWb82B41bxm+qUqgkcGq0kIiNEZLeI7BORc1afEJFmIrJcRDaJyBYRGWlL7y0iUbbHZhG5rqwyRSRMRCJs6V+LiIczTlRdnHYm7uSWX27hUOohpg+ezhuD36iUwJCTV8CUOZvILzC8d2sPvNxd4fB6+OIGa63mfvdZc+AodZEoMziIiCvwLnAV0BEYJyIdi2R7EphnjOkOjAXes6VvA8KNMd2AEcCHIuJWRpmvAG8YY1oDycCkCpyfuogtj1nOhMUTcHFx4bOrPmNIsyGVdqyXF+0i6nAKr47pSouMbfD5dfDJUDiyCYb+B4Y8XWnHVqo6OHJZqTewzxhzAEBE5gKjgR12eQxQuLJJXeAIgDEmwy6Ply1fiWWKyE7gCuAWW77ZwDPA++d1VuqiZozh8x2f81rka3QM6sjbV7zttCGqRWXk5PFT1BFmro7m311TGbnpHjiwHOoEw7BnIXySTqKnLkqOBIcmwGG717FAnyJ5ngGWiMj9gA8wtHCDiPQBZgLNgfHGmDwRKanMICDFGJNnl96kuEqJyGRgMkCzZs0cOA11McgryOPldS/z9e6vGdpsKC8OfBFvN2+nlX8yI5fIQ0msi04iIjqJHXHJ9GIbP/ototueKPCpD8Ofh/A7wcPHacdVqqZxVof0OGCWMeZ/ItIP+FxEOhtjCowxEUAnEekAzBaRRc44oDFmBjADIDw83JSRXV0E0nPSeeSPR1h9ZDV3dL6DB3s8iItU/Cb/3UfT+GpdDBHRSew6mgqmgD5ue7nbbyMDfVbjm5uE8WgAg1+wBQUH111Q6gLmSHCIA5ravQ61pdmbhNWngDFmrYh4AcHAscIMxpidIpIOdC6lzEQgQETcbK2H4o6laqHjGceZvHQyB08e5Ol+TzOm7ZgKl5mYns3rS/fw1boYPNyEG0OO8UJYBJ1SluOZEQ+5XtbSjJ2uR9peaVt1S6nawZHgsB5oIyJhWB/UYznTJ1AoBhgCzLK1ELyA47Z9DtsuJTUH2gMHgZTiyjTGGBFZDowB5gITgJ8qdorqYvDmxjc5nHaY94a+R7/G/SpUVnZePrPXHOTt3/aRkZvPM52OcevxN3A9dghc3KHNMOj0HLQboesyq1qrzOBg+2CfAvwKuAIzjTHbReRZINIYMx94GPhIRKZidTpPtH3QDwAeE5FcoAC41xhzAqC4Mm2HnAbMFZHngU3AJ848YXXhiUmNYcGBBYxrP65CgcEYw5IdCby4cCeHEjMY3K4+z4Zn03T+JAhoBqPfsxZq9w5wXuWVukCJMRf+5frw8HATGRlZ3dVQleSJVU/w68FfWXzDYoK9g8tVxo4jqTy3YAdrDyTSpoEvT17dkcuCUuGT4VYfwqRl4NfQyTVXqmYTkQ3GmPDitukd0qpGO5R6iAUHFnBrh1vLHRiiT5zi2ndX4+PpynPXdmZcr6a4ZSbCJzeAKYDbvtfAoFQRGhxUjTZjyww8XDy4s/Od5S7jveX7cHGBxQ8OoqG/F2Snw5wbIe0oTPgZgts4scZKXRx0sR9VYx08eZAFBxZwc7uby91qOJyUwQ+b4hjXu5kVGPJz4ZuJEL8ZxsyEpr2cW2mlLhLaclA11odbPsTDxYOJnSeWu4wP/tiPiwiTB7UEY2DBg7BvKVz9BrQf6bS6KnWx0ZaDqpGiT0azMHohY9uPLXer4ejJLL6JjGVMeCghdb1hxUuw6QsY9Kh1M5tSqkQaHFSN9OGWD/F09WRip4nlLmPGnwfIN4Z7LmsFkZ/CH69At9tg8L+cV1GlLlJ6WUnVOAdOHmBR9CImdJxAkHdQuco4kZ7NnHWHuOmSIJquex7+eg9aD4NrpoOIcyus1EVIg4OqcT7cbGs1VKCv4ZNV0XTO38l/jnwGO6Ot2VOHP69rOyvlIA0OqkY5kGK1GiZ2nkigV2C5ykg5eZKGa59lnsdCXGgKt8+Hlpc5uaZKXdw0OKga5YPNH+Dl5sUdne4oXwExERTM+T8mSgzJHcdTb/RLOj+SUuWgHdKqxtifsp/FBxdzS/tbqOdV7/x2zs2EX5/AzLySzKxMXg/5L/VuekcDg1LlpC0HVe2MMRzLOMabG9/E282bCZ0mOL7z8T0Q9QVsngvpCewIuYGbokcy92/DKq/CStUCGhxUlUrKSmJ/yn72Ju9lX8o+63nKXtJy0gC4u+vdZbcastNg+4+w6XM4HAHiCm2vJCv8bsbPzaVXu7p0Ca1b+Sej1EVMg4OqMi9GvMhXu746/drfw5/WAa25qsVVtK7XmjYBbejZsGfJBcT8BRs/h+0/QO4pCG5rrePcdSz4NeSLlQdIOrWT+69oXQVno9TFTYODqhJ7k/cyd9dcWnoP4KG+t9IhuC31vesjjt5zsP1H+GYCePhClxug+3gI7XX6noWs3Hxm/HmAfi2D6Nm8fKOclFJnaHBQVeKFNW9SkO/B5s2DeS42n9dv8qBBqGOB4ejJLGIXf0YzE8DV2W9RZ7c/QXF5BPlsIMjXkyAfD46lZXEsLZvpN3er3BNRqpbQ0Uqq0q2J2cyGE3/gkzWYD8YNJD0rj+veW8MbS/eQm19Q4n45eQV8+Md+hvxvOc1TI4kP7MXInq3pGhqAl7sLMUkZLN2RwPt/7GdeZCy9wwLp16p8d1Qrpc6mLQdVqXLzC3h42X8xePP+NVPp0TSEfi2Deebn7bz5215+25XA6zd1o23Ds4ecrtp7gqfnb2P/8VPc3iqD+nEnqT9wNJf06HTOMQoKDCmZufh6ujl+mUopVSqHWg4iMkJEdovIPhF5rJjtzURkuYhsEpEtIjLSlj5MRDaIyFbbzyts6X4iEmX3OCEi023bJorIcbtt/+fE81VV7LEFC0l33czQxjfSo2ljAOrWceeNm7vxwW09OJKSxdVvr2LGn/vJLzAcScnk3i83cNsnEeTmG2ZODOfZrklWYWGDij2Gi4sQ6OOBh5s2hJVyljJbDiLiCrwLDANigfUiMt8Ys8Mu25PAPGPM+yLSEVgItABOANcYY46ISGfgV6CJMSYN6GZ3jA3A93blfW2MmVKhM1PVbvG2eBbGzsLbz5fnr7jnnO0jOofQs3kg//phKy8u3MWPm44QfeIUBcbw0LC2TB7UEi93V/jqD6jXAuo1r/qTUKqWcuSrVm9gnzHmgDEmB5gLjC6SxwD+tud1gSMAxphNxpgjtvTtgLeIeNrvKCJtgQbAyvKdgqqJDhxP55H583Hz3c3dl0zC18O32Hz1/TyZMb4n/7vxEo6czGRgm2CWPXQZDwxpYwWGgnw4uKrEVoNSqnI40ufQBDhs9zoW6FMkzzPAEhG5H/ABhhZTzg3ARmNMdpH0sVgtBWOfV0QGAXuAqcaYw0X2QUQmA5MBmjVr5sBpqKqSkZPHPV9sxCVwCf4e9Rjf8ZZS84sIN/QM5foeTc7tM4iPguyTEKYT5ylVlZx1kXYcMMsYEwqMBD4XkdNli0gn4BXg7mL2HQt8Zff6Z6CFMaYrsBSYXdwBjTEzjDHhxpjw+vXrO+k0VEUZY3jih23sS9uC8d7DXV0nUce9jkP7FtuZHP2n9VNbDkpVKUeCQxzQ1O51qC3N3iRgHoAxZi3gBQQDiEgo8ANwuzFmv/1OInIJ4GaM2VCYZoxJtGtdfAyUcsusqmm+iIjhh01xtGq7mmDvYG5qd1PFCjzwB9TvAL4NnFNBpZRDHAkO64E2IhImIh5Y3/TnF8kTAwwBEJEOWMHhuIgEAL8AjxljVhdT9jjObjUgIiF2L0cBOx2oo6oBtsWd5Nmft9Oj3Qnis7fxf13+D2837/IXmJdtTZmhazEoVeXK7HMwxuSJyBSskUauwExjzHYReRaINMbMBx4GPhKRqVid0xONMca2X2vgKRF5ylbkcGPMMdvzm7AuQ9l7QERGAXlAEjCxYqeoqoIxhqfnb8ff2w2v+ktpmNmQMW3HVKzQ2EjIy9RLSkpVA4dugjPGLMQanmqf9pTd8x1A/2L2ex54vpRyWxaT9jjwuCP1UjXHT1FH2HAombuvzGVOzGb+3fffeLp6lr1jaaL/AHGB5uf8aSmlKpneNaQq7FR2Hi8t2knnJv5sOfU1jX0ac13r6ypecPSfENINvAMqXpZS6rxocFAV9t6KfSSkZnPTgEy2JW7j7kvuxt3VvWKFZqdD7Hrtb1CqmmhwUBUSk5jBRyujubZbY2Ky1+Ht5s3VLa92QsF/QUGe9jcoVU00OKgKeWHhDtxchGkj2rMqbhV9Qvrg4epR8YKjV4CrBzTtW/GylFLnTYODKrfV+07w6/YE7hvcmkyJJy49joFNBjqn8Og/IbQ3eDh2A51Syrk0OKhyycsv4D8/b6dZYB0mDQhjZaw1NdaAJgMqXnhGEsRv0UtKSlUjDQ6qXL746xB7EtJ54m8d8HJ3ZVXcKlrVbUVj38YVL/zgKsBoZ7RS1UiDgzpvSadyeH3pHvq3DmJ4x4Zk5GawIWGDc1oNYF1ScveBxj2cU55S6rxpcFDn7fWluzmVk8/T13RCRIiIjyC3IJeBoc7qb/gDml8Kbk7o2FZKlYsGB3VedhxJZU5EDOP7Nj+9tOequFXUcatDjwZO+KafGg8n9mh/g1LVTIODOi/PLdhBXW93pg5tC1hzKq2MW0nfkL4Vv/ENzkzRrf0NSlUrDQ7KYcfTsll7IJH/G9iSunWsQHDg5AHiT8UzINSJ/Q3e9aBhF+eUp5QqFw0OymEbY5IB6Nsy8HRa4RBWp9zfYIzV39BiILjon6ZS1Un/A5XDNsWk4O4qdGpc93TaqrhVtA5oTSOfRhU/QHI0nDys/Q1K1QAaHJTDNsYk07FxXbzcXQE4lXuKDcc2OHGUUuGSoNrfoFR10+CgHJKbX8CW2BR6NAs4nfZX/F/kFeQ5b8qMA3+AXwgEt3FOeUqpctPgoByy+2gaWbkF9GhW73TaytiV+Lj70K1Bt4oVXpAP+5fDgRXWJSWRipWnlKowh1aCU6qwM7q7reVgjGFV3Cr6hfTD3aWcQ1iP74HNc2DLPEiNA8+60HOicyqslKoQh1oOIjJCRHaLyD4ReayY7c1EZLmIbBKRLSIy0pY+TEQ2iMhW288r7PZZYSszyvZoYEv3FJGvbceKEJEWTjpXVQEbDyXTwM+TJgHeAOxN2UtCRsL59zdkJMG6j+CjK+DdXrD6LWjYGcZ8Co/sse6MVkpVuzJbDiLiCrwLDANigfUiMt+2bnShJ4F5xpj3RaQj1nrTLYATwDXGmCMi0hn4FWhit9+txpjIIoecBCQbY1qLyFjgFeDm8p2ecpZNh1Po0aweYrvksypuFQD9G5/H+s6r34LfnoWCXOs+huEvQJcbwa9hZVRZKVUBjlxW6g3sM8YcABCRucBowD44GMDf9rwucATAGLPJLs92wFtEPI0x2aUcbzTwjO35t8A7IiLGGONAXVUlOJGezaHEDG7p3ex02srYlbSr146GPg5+sKclwPIXIGwgDHsWGulNbkrVZI5cVmoCHLZ7HcvZ3/7B+jC/TURisVoN9xdTzg3AxiKB4VPbJaV/i5zuhTx9PGNMHnASCCpamIhMFpFIEYk8fvy4A6ehyisqJgWAHs2tzui0nDSijkWd3yysa9+G/BwY+ZoGBqUuAM4arTQOmGWMCQVGAp+LyOmyRaQT1uWhu+32udUY0wUYaHuMP58DGmNmGGPCjTHh9evXr/AJqJJtjEnGzUXo0sS6+e2v+L/IM3mO9zecSoT1M6HzGAhqVYk1VUo5iyPBIQ5oavc61JZmbxIwD8AYsxbwAoIBRCQU+AG43Rizv3AHY0yc7WcaMAfr8tVZxxMRN6zLVInnc1LKuayb3/xP3/y2Km4Vfu5+XFL/EscKiHgfck/BwIcrsZZKKWdyJDisB9qISJiIeABjgflF8sQAQwBEpANWcDguIgHAL8BjxpjVhZlFxE1ECoOHO3A1sM22eT4wwfZ8DPC79jdUn7z8ArbEnjx9f4MxhlWxq+jXuB9uLg50WWWmQMSH0GEUNGhfuZVVSjlNmf/dxpg8EZmCNdLIFZhpjNkuIs8CkcaY+cDDwEciMhWrc3qiMcbY9msNPCUiT9mKHA6cAn61BQZXYBnwkW37J1iXpfYBSVjBSFWT3QlpZOTkn76/YU/yHo5lHnO8v2HdR5CdCoMeqbxKKqWczqGb4IwxC7E6mu3TnrJ7vgM4Z0yjMeZ54PkSiu1ZwrGygBsdqZeqfBsLO6NtLYeVcdYsrA4Fh+x0+OtdaDsCQhy8BKWUqhF0+gxVqk0xyQT7ehJaz7r5bWXsSjoEdqB+HQcGAUTOhMxkGKitBqUuNBocVKk2xaTQvVkAIsIfh/9g07FNXN708rJ3zM2ENW9Dy8uhaa/KrqZSysk0OKgSJZ3KIfrEKXo0q8f+lP1MWzmNDkEduKPzHWXvvPFzOHUMBv2z8iuqlHI6nXhPlSjqsDXZXtsQFx74fQperl68OfhNvN28S98xLwdWT4dm/aD5eUyvoZSqMTQ4qBJtPJSCq0sBc6JfIP5UPDOvnOnYim+b51izrI56W6ffVuoCpZeVVIk2xiTTsMUy1iVE8O++/3Zs3Yb8PFj5OjTuAa2uKDu/UqpG0uCgipVfYNicspQ0z9+5rcNtXNfmOsd23PYtpByy+hq01aDUBUuDgyrWgt1rkeDvaOXbnYfDHZz2oiAfVv7PWp+h7YjKraBSqlJpcFDnOHrqKC9tmIbJC+D5S192bJoMgK3fwok91hxKLvqnpdSFTP+D1Vmy8rL4x/J/kJWfhceJSXRqFOLgjqmw9N9WX0PHayu1jkqpyqejldRZ3tn0DjsTd+J3cjIdGrdHHO03WPEypB+DcXO11aDURUD/i9VpxhiWxSyjf+NBxB0Jo7ttPqUyJWyHiA+g50Ro0qNS66iUqhoaHNRpB1MPEpceRxPP7gCnZ2ItlTHwyyPgVReGPFV2fqXUBUGDgzptdZy15EZ+eltcBC4JDSh7py3zIGYNDH0G6gRWav2UUlVHg4M6bVXcKsLqhrEv3oP2jfzx8SyjSyrrJCx5Epr0hO7ntcqrUqqG0+CgAGuUUmRCJP1D+hNlm4m1TMtfglPH4W//005opS4y+h+tAIhMiCQ7P5sWPj1Iy847vbhPiY5uhXUfQvid0Lh71VRSKVVlNDgowOpv8HT1JCe9BVBGZ3RhJ7R3PbjiySqpn1KqajkUHERkhIjsFpF9IvJYMdubichyEdkkIltEZKQtfZiIbBCRrbafV9jS64jILyKyS0S2i8jLdmVNFJHjIhJle/yfs05WlWxV3CrCG4Wz5XAGAXXcCQv2KTnz5rlw+C8Y+h/thFbqIlVmcBARV+Bd4CqgIzBORDoWyfYkMM8Y0x0YC7xnSz8BXGOM6QJMAD632+c1Y0x7oDvQX0Sustv2tTGmm+3xcXlOTDkuNi2Wg6kHGdB4AOsOJtGrRWDJN79lplh3Qof2gm63Vmk9lVJVx5GWQ29gnzHmgDEmB5gLjC6SxwD+tud1gSMAxphNxpgjtvTtgLeIeBpjMowxy215coCNQGjFTkWV15ojawBo5x/OocQM+oSV0hpY/iKcOgEjX9NOaKUuYo78dzcBDtu9jrWl2XsGuE1EYoGFwP3FlHMDsNEYk22fKCIBwDXAb/Z5bZenvhWRpg7UUVXAqrhVNPFtQtxxXwD6hAUVn/H4Hlj/ka0TulvVVVApVeWc9dVvHDDLGBMKjAQ+F5HTZYtIJ+AV4G77nUTEDfgKeMsYc8CW/DPQwhjTFVgKzC7ugCIyWUQiRSTy+PHjTjqN2ic3P5eI+Aj6N+7PuoPJ+Hq60bGxf/GZf/sPuPvA4H9VbSWVUlXOkeAQB9h/ew+1pdmbBMwDMMasBbyAYAARCQV+AG43xuwvst8MYK8xZnphgjEm0a518THQs7hKGWNmGGPCjTHh9evXd+A0VHGijkeRkZdB/yb9WRedRHiLeri6FNPfcHg97FoA/R8An+Cqr6hSqko5EhzWA21EJExEPLA6nOcXyRMDDAEQkQ5YweG47ZLRL8BjxpjV9juIyPNY/RMPFkm3nyN6FLDT0ZNR529V3CrcxI3Wft3Ydyy9+EtKxsCyp8GnAfS9t+orqZSqcmUGB2NMHjAF+BXrg3qeMWa7iDwrIqNs2R4G7hKRzViXiSYaY4xtv9bAU3ZDUxvYWhNPYI1+2lhkyOoDtuGtm4EHgInOO11V1Oq41XRv2J1tsVZjrU/LYjqj9y6FQ6vhskfB07eKa6iUqg5ifYZf2MLDw01kZGR1V+OCcyzjGEO+GcKDPR4k5kAf5kXGsuWZ4bi72n1nKMiHDwZCbgbctw7cPKqvwkoppxKRDcaY8OK26VjEWqxwCOuAJgOIiE6iZ/N6ZwcGgK3fwLHt1p3QGhiUqjU0ONRiq+NWE+wdTAPPFuxOSDv3/oa8bPj9BQi5BDpdXz2VVEpVCw0OtVR+QT5rjqyhf+P+rD+YjDHQp2WRzuj1n8DJGGutBr3hTalaRf/ja6ltidtIzUk9fUnJw82FS5rWPZMh6yT8+V9oeTm0uqLa6qmUqh4aHGqp1XGrcREX+ob0ZV10Et2bBuDp5nomw5q3ITPJajUopWodDQ611Oq41XQO7owLPmw/cvLsS0ppCbD2XaufQddqUKpW0uBQC6VkpbD1xFYGNB7AhoPJFBjoa98Z/ccrkJ+jazUoVYtpcKiF1savxWDo36Q/EdFJuLsK3QtXfkvcDxtnQ48JENSqeiuqlKo2GhxqoVVxq6jrWZdOQZ2IiE6ka2gA3h62/oY/XwNXD7hsWvVWUilVrTQ41DIFpoDVcau5NORSsvMMW2NPnrm/ITMFtn8Pl4wFv4bVWk+lVPXS4FDL7EraRWJWIv2b9GfDoWTyCsyZzuit30BelnVJSSlVq2lwqGV+2vcT7i7uDAodxLroJFxdhJ7N61kzr26Ybd0NrQv5KFXraXCoRTLzMvn5wM8MbT6Uel71iDiQROfG/vh6usGRTZCwFXrcXt3VVErVABocapElB5eQlpPGjW1vJCs3n6jDKWcuKW2cDe51oMuN1VtJpVSNoMGhFvlmzzeE1Q0jvGE4UYdTyMkvsDqjs9Nh67fQ6Trwqlt2QUqpi54Gh1piT/IeNh/fzJg2YxARIg4kIQLhLQJh+w+Qk66XlJRSp2lwqCW+2f0NHi4ejG49GoCI6EQ6NPKnrre7dUkpuB007VPNtVRK1RQaHGqBjNwMFhxYwPAWw6nrWZecvAI2xiRbS4Im7IDY9VarQaS6q6qUqiE0ONQCvx78lfTcdG5sa3U2b41LISu3gD5hQbDxM+uO6EvGVXMtlVI1iUPBQURGiMhuEdknIo8Vs72ZiCwXkU0iskVERtrSh4nIBhHZavt5hd0+PW3p+0TkLRHra6uIBIrIUhHZa/tZz1knW1t9s+cbWtVtRfcG1gyrfx1IAqB30zqwZS60vxp8gkorQilVy5QZHETEFXgXuAroCIwTkY5Fsj0JzDPGdAfGAu/Z0k8A1xhjugATgM/t9nkfuAtoY3uMsKU/BvxmjGkD/GZ7rcppV9Iutp7Yyo3tbsQWf4mITqJtQ18CY5ZAZrJ2RCulzuFIy6E3sM8Yc8AYkwPMBUYXyWMAf9vzusARAGPMJmPMEVv6dsBbRDxFJATwN8b8ZYwxwGfAtbZ8o4HZtuez7dJVOXy751s8XT25uuXVAOTlF7DhYJLtktJsCGgOYZdVcy2VUjWNmwN5mgCH7V7HAkWHtTwDLBGR+wEfYGgx5dwAbDTGZItIE1s59mU2sT1vaIyJtz0/ChQ7A5yITAYm216mi8huB86lOMFYLZyayGl1CxgfcNbrHcDzhS+munKeaup7pvU6PzW1XlBz63ax1at5SRscCQ6OGAfMMsb8T0T6AZ+LSGdjTAGAiHQCXgGGn0+hxhgjIqaEbTOAGRWsNyISaYwJr2g5laGm1k3rdX60XuevptatNtXLkctKcUBTu9ehtjR7k4B5AMaYtYAXViRDREKBH4DbjTH77coMLaHMBNtlJ2w/jzl6MkoppZzDkeCwHmgjImEi4oHV4Ty/SJ4YYAiAiHTACg7HRSQA+AV4zBizujCz7bJRqoj0tY1Suh34ybZ5PlbnNbafhelKKaWqSJnBwRiTB0wBfgV2Yo1K2i4iz4rIKFu2h4G7RGQz8BUw0dbRPAVoDTwlIlG2RwPbPvcCHwP7gP3AIlv6y8AwEdmL1XfxsjNOtBQVvjRViWpq3bRe50frdf5qat1qTb3E+gxXSimlztA7pJVSSp1Dg4NSSqlz1OrgUNa0IFVYj6a26Ud2iMh2EfmHLf0ZEYmz668ZWQ11O2ib5iRKRCJtadU6xYmItLN7T6JEJFVEHqyu90tEZorIMRHZZpdW7Hsklrdsf3NbRKRHFdfrvyKyy3bsH2yDRhCRFiKSaffefVDF9Srxdycij9ver90icmVl1auUun1tV6+DIhJlS6+S96yUz4fK/RszxtTKB+CK1RHeEvAANgMdq6kuIUAP23M/YA/WVCXPAI9U8/t0EAgukvYq1gg0sKY3eaWaf49HsW7mqZb3CxgE9AC2lfUeASOxBl8I0BeIqOJ6DQfcbM9fsatXC/t81fB+Ffu7s/0fbAY8gTDb/6xrVdatyPb/AU9V5XtWyudDpf6N1eaWgyPTglQJY0y8MWaj7Xka1qiwJqXvVa1q0hQnQ4D9xphD1VUBY8yfQFKR5JLeo9HAZ8byFxBQeF9PVdTLGLPEWCMQAf7i7PuNqkQJ71dJRgNzjTHZxphorNGNvaujbrZh9zdhjcisMqV8PlTq31htDg7FTQtS7R/IItIC6A5E2JKm2JqGM6v68o2NwZoaZYNYU5aAg1OcVJGxnP3PWt3vV6GS3qOa9Hd3J2eGkAOEiTWz8h8iMrAa6lPc764mvV8DgQRjzF67tCp9z4p8PlTq31htDg41joj4At8BDxpjUrFmrm0FdAPisZq0VW2AMaYH1qy894nIIPuNxmrHVst4aLFuyhwFfGNLqgnv1zmq8z0qiYg8AeQBX9qS4oFmxppZ+SFgjoj4l7R/JaiRv7sixnH2F5Eqfc+K+Xw4rTL+xmpzcHBkWpAqIyLuWL/4L40x3wMYYxKMMfnGmqPqIyqxOV0SY0yc7ecxrGlQelNzpji5CmsyxwRbHav9/bJT0ntU7X93IjIRuBq41fahgu2yTaLt+Qasa/ttq6pOpfzuqv39AhARN+B64OvCtKp8z4r7fKCS/8Zqc3BwZFqQKmG7lvkJsNMY87pduv11wuuAbUX3reR6+YiIX+FzrM7MbdScKU7O+iZX3e9XESW9R/OB220jSvoCJ+0uDVQ6ERkBPAqMMsZk2KXXF2vtFkSkJdYaKweqsF4l/e7mA2PFmuo/zFavdVVVLztDgV3GmNOzSVfVe1bS5wOV/TdW2T3tNfmB1au/ByviP1GN9RiA1STcAkTZHiOxFkfaakufD4RUcb1aYo0U2Yy1HscTtvQgrIWY9gLLgMBqeM98gESgrl1atbxfWAEqHsjFur47qaT3CGsEybu2v7mtQHgV12sf1vXowr+zD2x5b7D9jqOAjViLdFVlvUr83QFP2N6v3cBVVf27tKXPAv5eJG+VvGelfD5U6t+YTp+hlFLqHLX5spJSSqkSaHBQSil1Dg0OSimlzqHBQSml1Dk0OCillDqHBgellFLn0OCglFLqHP8PWghVwzqQHkMAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for min_child_weight, df_score in scores.items():\n", " plt.plot(df_score.num_iter, df_score.val_auc, label=min_child_weight)\n", "\n", "plt.ylim(0.82, 0.84)\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 145, "id": "c5663990", "metadata": {}, "outputs": [], "source": [ "xgb_params = {\n", " 'eta': 0.1, \n", " 'max_depth': 3,\n", " 'min_child_weight': 1,\n", "\n", " 'objective': 'binary:logistic',\n", " 'eval_metric': 'auc',\n", "\n", " 'nthread': 8,\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "\n", "model = xgb.train(xgb_params, dtrain, num_boost_round=175)" ] }, { "cell_type": "markdown", "id": "9209de3a", "metadata": {}, "source": [ "Other parameters: https://xgboost.readthedocs.io/en/latest/parameter.html\n", "\n", "Useful ones:\n", "\n", "* `subsample` and `colsample_bytree`\n", "* `lambda` and `alpha`" ] }, { "cell_type": "markdown", "id": "0519a9e0", "metadata": {}, "source": [ "## 6.9 Selecting the final model\n", "\n", "* Choosing between xgboost, random forest and decision tree\n", "* Training the final model\n", "* Saving the model" ] }, { "cell_type": "code", "execution_count": 146, "id": "a4ec2011", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DecisionTreeClassifier(max_depth=6, min_samples_leaf=15)" ] }, "execution_count": 146, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt = DecisionTreeClassifier(max_depth=6, min_samples_leaf=15)\n", "dt.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 150, "id": "aa4525d6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7850802838390931" ] }, "execution_count": 150, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred = dt.predict_proba(X_val)[:, 1]\n", "roc_auc_score(y_val, y_pred)" ] }, { "cell_type": "code", "execution_count": 148, "id": "aa1a1a70", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RandomForestClassifier(max_depth=10, min_samples_leaf=3, n_estimators=200,\n", " random_state=1)" ] }, "execution_count": 148, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rf = RandomForestClassifier(n_estimators=200,\n", " max_depth=10,\n", " min_samples_leaf=3,\n", " random_state=1)\n", "rf.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 151, "id": "a623a21d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8249709379767989" ] }, "execution_count": 151, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred = rf.predict_proba(X_val)[:, 1]\n", "roc_auc_score(y_val, y_pred)" ] }, { "cell_type": "code", "execution_count": 149, "id": "d1e284f4", "metadata": {}, "outputs": [], "source": [ "xgb_params = {\n", " 'eta': 0.1, \n", " 'max_depth': 3,\n", " 'min_child_weight': 1,\n", "\n", " 'objective': 'binary:logistic',\n", " 'eval_metric': 'auc',\n", "\n", " 'nthread': 8,\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "\n", "model = xgb.train(xgb_params, dtrain, num_boost_round=175)" ] }, { "cell_type": "code", "execution_count": 152, "id": "27904559", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8360387251459157" ] }, "execution_count": 152, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred = model.predict(dval)\n", "roc_auc_score(y_val, y_pred)" ] }, { "cell_type": "code", "execution_count": 155, "id": "89314e47", "metadata": {}, "outputs": [], "source": [ "df_full_train = df_full_train.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 157, "id": "c43e218a", "metadata": {}, "outputs": [], "source": [ "y_full_train = (df_full_train.status == 'default').astype(int).values" ] }, { "cell_type": "code", "execution_count": 159, "id": "f92f8492", "metadata": {}, "outputs": [], "source": [ "del df_full_train['status']" ] }, { "cell_type": "code", "execution_count": 161, "id": "29f22b05", "metadata": {}, "outputs": [], "source": [ "dicts_full_train = df_full_train.to_dict(orient='records')\n", "\n", "dv = DictVectorizer(sparse=False)\n", "X_full_train = dv.fit_transform(dicts_full_train)\n", "\n", "dicts_test = df_test.to_dict(orient='records')\n", "X_test = dv.transform(dicts_test)" ] }, { "cell_type": "code", "execution_count": 164, "id": "4abf51bd", "metadata": {}, "outputs": [], "source": [ "dfulltrain = xgb.DMatrix(X_full_train, label=y_full_train,\n", " feature_names=dv.get_feature_names_out())\n", "\n", "dtest = xgb.DMatrix(X_test, feature_names=dv.get_feature_names_out())" ] }, { "cell_type": "code", "execution_count": 165, "id": "d77e0221", "metadata": {}, "outputs": [], "source": [ "xgb_params = {\n", " 'eta': 0.1, \n", " 'max_depth': 3,\n", " 'min_child_weight': 1,\n", "\n", " 'objective': 'binary:logistic',\n", " 'eval_metric': 'auc',\n", "\n", " 'nthread': 8,\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "\n", "model = xgb.train(xgb_params, dfulltrain, num_boost_round=175)" ] }, { "cell_type": "code", "execution_count": 166, "id": "667da6cd", "metadata": {}, "outputs": [], "source": [ "y_pred = model.predict(dtest)" ] }, { "cell_type": "code", "execution_count": 169, "id": "936f74d3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8322662626460096" ] }, "execution_count": 169, "metadata": {}, "output_type": "execute_result" } ], "source": [ "roc_auc_score(y_test, y_pred)" ] }, { "cell_type": "markdown", "id": "4d28d67d", "metadata": {}, "source": [ "## 6.10 Summary\n", "\n", "* Decision trees learn if-then-else rules from data.\n", "* Finding the best split: select the least impure split. This algorithm can overfit, that's why we control it by limiting the max depth and the size of the group.\n", "* Random forest is a way of combininig multiple decision trees. It should have a diverse set of models to make good predictions.\n", "* Gradient boosting trains model sequentially: each model tries to fix errors of the previous model. XGBoost is an implementation of gradient boosting. " ] }, { "cell_type": "markdown", "id": "c3329e00", "metadata": {}, "source": [ "## 6.11 Explore more\n", "\n", "* For this dataset we didn't do EDA or feature engineering. You can do it to get more insights into the problem.\n", "* For random forest, there are more parameters that we can tune. Check `max_features` and `bootstrap`.\n", "* There's a variation of random forest caled \"extremely randomized trees\", or \"extra trees\". Instead of selecting the best split among all possible thresholds, it selects a few thresholds randomly and picks the best one among them. Because of that extra trees never overfit. In Scikit-Learn, they are implemented in `ExtraTreesClassifier`. Try it for this project.\n", "* XGBoost can deal with NAs - we don't have to do `fillna` for it. Check if not filling NA's help improve performance.\n", "* Experiment with other XGBoost parameters: `subsample` and `colsample_bytree`.\n", "* When selecting the best split, decision trees find the most useful features. This information can be used for understanding which features are more important than otheres. See example here for [random forest](https://scikit-learn.org/stable/auto_examples/ensemble/plot_forest_importances.html) (it's the same for plain decision trees) and for [xgboost](https://stackoverflow.com/questions/37627923/how-to-get-feature-importance-in-xgboost)\n", "* Trees can also be used for solving the regression problems: check `DecisionTreeRegressor`, `RandomForestRegressor` and the `objective=reg:squarederror` parameter for XGBoost." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.11" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 08-deep-learning/01-fashion-classification.md ================================================ ## 8.1 Fashion classification [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316) If you have problems cloning the repository with the data, use a different command for cloning: ```bash git clone https://github.com/alexeygrigorev/clothing-dataset-small.git ``` In this session, we'll be working on multiclass image classification with deep learning. Some deep learning frameworks like TensorFlow and Keras will be implemented on clothing dataset to classify images of clothes as t-shirts, hats, pants, etc. The dataset has 5000 images of 20 different classes. However, we'll be using the subset which contains 10 of the most popular classes. The dataset can be downloaded from the above link. **Useful links**: - Full dataset: https://www.kaggle.com/agrigorev/clothing-dataset-full - Subset: https://github.com/alexeygrigorev/clothing-dataset-small - Corresponding Medium article: https://medium.com/data-science-insider/clothing-dataset-5b72cd7c3f1f - CS231n CNN for Visual Recognition: https://cs231n.github.io/ ## Notes Add notes from the video (PRs are welcome) * introduction to this weeks topics * using images as data source instead of tabular data * classifying images of t-shirts using a convolutional neural network * 5000 images and 20 different classes https://www.kaggle.com/agrigorev/clothing-dataset-full * see corresponding medium.com article https://medium.com/data-science-insider/clothing-dataset-5b72cd7c3f1f * deep learning with tensorflow and keras * parameters, layers, regularization
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/11/18/ml-zoomcamp-2023-deep-learning-part-1/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Next: [Setting up the Environment on Saturn Cloud](01b-saturn-cloud.md) ================================================ FILE: 08-deep-learning/02-tensorflow-keras.md ================================================ ## 8.2 TensorFlow and Keras [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316) In the video the ```load_img``` function from Keras is imported using ```python from tensorflow.keras.processing.image import load_img ``` If the import is not working, try using ```python from tensorflow.keras.utils import load_img ``` [Tensorflow documentation](https://www.tensorflow.org/api_docs/python/tf/keras/utils/load_img) Notes: - TensorFlow is a library to train deep learning models and Keras is higher level abstraction on the top of TensorFlow. Keras used to be separate library but from tensorflow 2+ version, keras became part of the tensorflow library. The libraries can be installed using `pip install tensorflow` (for CPU and GPU). However, additional setup is required to integrate TensorFlow with GPU. - Neural networks expect an image of a certain size, therefore, we need to provide the image size in `target_size` parameter of the `load_img` function. - Each image consists of pixel and each of these pixels has the shape of 3 dimensions ***(height, width, color channels)*** - A typical color image consists of three color channels: `red`, `green` and `blue`. Each color channel has 8 bits or 1 byte and can represent distinct values between 0-256 (uint8 type). **Classes, functions, and methods**: - `import tensorflow as tf`: to import tensorflow library - `from tensorflow import keras`: to import keras - `from tensorflow.keras.preprocessing.image import load_img`: to import load_img function - `load_img('path/to/image', targe_size=(150,150))`: to load the image of 150 x 150 size in PIL format - `np.array(img)`: convert image into a numpy array of 3D shape, where each row of the array represents the value of red, green, and blue color channels of one pixel in the image. ## Notes Add notes from the video (PRs are welcome) * tensorflow and keras as deep learning libraries * end-to-end open source machine learning framework * tensorflow as library for training deep learning models * keras as high-level abstraction on top of tensorflow * installing tensorflow * local vs cloud configuration * loading and preprocessing images * keras is part of tensorflow since version 2.0 * working with different image sizes * processing images using the python pillow library * encoding images as numpy arrays * image size (i.e. 150 x 150 pixels) multiplied by number of colors (i.e. RGB) equals shape of array * numpy array dtype as unsigned int8 (uint8) which includes the range from 0 to 255
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/11/19/ml-zoomcamp-2023-deep-learning-part-3/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [Setting up the Environment on Saturn Cloud](01b-saturn-cloud.md) * Next: [Pre-trained convolutional neural networks](03-pretrained-models.md) ================================================ FILE: 08-deep-learning/03-pretrained-models.md ================================================ ## 8.3 Pre-trained convolutional neural networks [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316) > **Important**: If you rent a GPU from a cloud provider (such as AWS), don't forget to turn it > off after you finish. It's not free and you might get a large bill at the end of the month. ### Links * [Renting a GPU with AWS SageMaker](https://livebook.manning.com/book/machine-learning-bookcamp/appendix-e/6) - The `keras.applications` module has different pre-trained models with different architectures. We'll use the model [Xception](https://keras.io/api/applications/xception/) which takes the input image size of `(229, 229)` and each image's pixel is scaled between `-1` and `1`. - We create the instance of the pre-trained model using `model = Xception(weights='imagenet', input_shape=(299, 229, 3))`. Our model will use the weights from pre-trained imagenet and expect the input shape of (229, 229, 3) for images. - Along with image size, the model also expects the `batch_size` which is the size of the batches of data (default 32). If one image is passed to the model, then the expected shape of the model should be (1, 229, 229, 3). - The image data was peprocessed using `preprocess_input` function during `Xception` model's pre-taining. Therefore, we'll have to use this function on our data before making predictions, like so: `X = preprocess_input(X)`. - The `pred = model.predict(X)` function returns 2D array of shape `(1, 1000)`, where 1000 is the probablity of the image classes. `decode_predictions(pred)` can be used to get the class names and their probabilities in readable format. - In order to make the pre-trained model useful specific to our case, we'll have to do some tweak, which we'll do in the coming sections. **Classes, functions, and methods**: - `from tensorflow.keras.applications.xception import Xception`: import the model from keras applications - `from tensorflow.keras.application.xception import preprocess_input`: function to perform preprocessing on images - `from tensorflow.keras.applications.xception import decode_predictions`: extract the predictions class names in the form of tuple of list - `model.predict(X)`: function to make predictions on the test images **Links**: - [Renting a GPU with AWS SageMaker](https://livebook.manning.com/book/machine-learning-bookcamp/appendix-e/23) - [Keras Applications](https://keras.io/api/applications/) provide a list of pre-trained deep learning models - [ImageNet](https://www.image-net.org/) is an image database that has 1,431,167 images of 1000 classes ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/11/19/ml-zoomcamp-2023-deep-learning-part-4/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [TensorFlow and Keras](02-tensorflow-keras.md) * Next: [Convolutional neural networks](04-conv-neural-nets.md) ================================================ FILE: 08-deep-learning/04-conv-neural-nets.md ================================================ ## 8.4 Convolutional neural networks [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316) ### What is Convolutional Neural Network? A convolutional neural network, also know as CNN or ConvNet, is a feed-forward neural network that is generally used to analyze visual images by processing data with grid-like topology. A CNN is used to detect and classify objects in an image. In CNNs, every image is represented in the form of an array of pixel values. The convoluion operation forms the basis of any CNN. In a convolution operation, the arrays are multiplied element-wise, and the dot product is summed to create a new array, which represents `Wx`. ### Layers in a Convolutional Neural Network A Convolution neural network has multiple hidden layers that help in extracting information from an image. The four important layers in CNN are: 1. Convolution layer 2. ReLU layer 3. Pooling layer 4. Fully connected layer (also called Dense layer) **Convolution layer** This is the first step in the process of extracting valuable features from an image. A convolution layer has several filters that perform the convolution operation. Every image is considered as a matrix of pixel values. Consider a black and white image of 5x5 size whose pixel values are either 0 or 1 and also a filter matrix with a dimension of 3x3. Next, slide the filter matrix over the image and compute the dot product to get the convolved feature matrix. ```python nn.Conv2d( in_channels, # number of channels in the input image out_channels, # number of filters to learn kernel_size, # size of each filter (int or tuple) stride=1, # step size for moving the filter padding=0, # zero-padding around input ``` Explanation: * in_channels: Input depth (e.g., 3 for RGB images). * out_channels: Number of filters the layer will learn. Each produces one output feature map. * kernel_size: Size of the convolutional filter. Can be a single number (square filter) or a tuple (height, width). * stride: How many pixels the filter moves each step. Default is 1. image * padding: Number of pixels added around the input to control output size. Default is 0. image image Output size after Conv2d image $$\text{Output size} = \frac{W - K + 2P}{S} + 1$$ Where: * 𝑊 = input size (height or width) * 𝐾 = kernel size * 𝑃 = padding * 𝑆 = stride **ReLU layer** Once the feature maps are extracted, the next step is to move them to a ReLU layer. ReLU (Rectified Linear Unit) is an activation function which performs an element-wise operation and sets all the negative pixels to 0. It introduces non-linearity to the network, and the generated output is a rectified feature map. The relu function is: `f(x) = max(0,x)`. **Pooling layer** Pooling is a down-sampling operation that reduces the dimensionality of the feature map. The rectified feature map goes through a pooling layer to generate a pooled feature map. Imagine a rectified feature map of size 4x4 goes through a max pooling filter of 2x2 size with stride of 2. In this case, the resultant pooled feature map will have a pooled feature map of 2x2 size where each value will represent the maximum value of each stride. The pooling layer uses various filters to identify different parts of the image like edges, shapes etc. **Fully Connected layer** The next step in the process is called flattening. Flattening is used to convert all the resultant 2D arrays from pooled feature maps into a single linear vector. This flattened vector is then fed as input to the fully connected layer to classify the image. **Convolutional Neural Networks in a nutshell** - The pixels from the image are fed to the convolutional layer that performs the convolution operation - It results in a convolved map - The convolved map is applied to a ReLU function to generate a rectified feature map - The image is processed with multiple convolutions and ReLU layers for locating the features - Different pooling layers with various filters are used to identify specific parts of the image - The pooled feature map is flattened and fed to a fully connected layer to get the final output **Links**: - Learn [CNN](https://poloclub.github.io/cnn-explainer/) in the browser ## Notes Add notes from the video (PRs are welcome) * convolutional neural networks (CNN) consist of different types of layers * convolutional layer as filters (i.e. 5 x 5) * dense layers * sliding the filter across the cells of the entire image * calculating similarity scores of the different positions of the filter * creating the feature map, one feature map per filter * chaining layers of simple and complex filters allows the CNN to "learn" * resulting in vector representation of image * activation functions sigmoid for binary classification and softmax for multiclass
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/11/20/ml-zoomcamp-2023-deep-learning-part-5/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [Pre-trained convolutional neural networks](03-pretrained-models.md) * Next: [Tranfser learning](05-transfer-learning.md) ================================================ FILE: 08-deep-learning/05-transfer-learning.md ================================================ ## 8.5 Transfer learning [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316) Transfer learning is a machine learning method where a model developed for a task is reused as the starting point for a model on a second task. Usually a pretrained model is trained with large volume of images and that is why the convolutional layers and vector representation of this model can be used for other tasks as well. However, the dense layers need to be retrained because they are specific to the dataset to make predictions with. In our problem, we want to keep convoluational layers but we want to train new dense layers. Following are the steps to create train/validation data for model: ```python # Build image generator for training (takes preprocessing input function) train_gen = ImageDataGenerator(preprocessing_function=preprocess_input) # Load in train dataset into train generator train_ds = train_gen.flow_from_directory(directory=path/to/train_imgs_dir, # Train images directory target_size=(150,150), # resize images to train faster batch_size=32) # 32 images per batch # Create image generator for validation val_gen = ImageDataGenerator(preprocessing_function=preprocess_input) # Load in image for validation val_ds = val_gen.flow_from_directory(directory=path/to/val_imgs_dir, # Validation image directory target_size=(150,150), batch_size=32, shuffle=False) # False for validation ``` Following are the steps to build model from a pretrained model: ```python # Build base model base_model = Xception(weights='imagenet', include_top=False, # to create custom dense layer input_shape=(150,150,3)) # Freeze the convolutional base by preventing the weights being updated during training base_model.trainable = False # Define expected image shape as input inputs = keras.Input(shape=(150,150,3)) # Feed inputs to the base model base = base_model(inputs, training=False) # set False because the model contains BatchNormalization layer # Convert matrices into vectors using pooling layer vectors = keras.layers.GlobalAveragePooling2D()(base) # Create dense layer of 10 classes outputs = keras.layers.Dense(10)(vectors) # Create model for training model = keras.Model(inputs, outputs) ``` Following are the steps to instantiate optimizer and loss function: ```python # Define learning rate learning_rate = 0.01 # Create optimizer optimizer = keras.optimizers.Adam(learning_rate=learning_rate) # Define loss function loss = keras.losses.CategoricalCrossentropy(from_logits=True) # to keep the raw output of dense layer without applying softmax # Compile the model model.compile(optimizer=optimizer, loss=loss, metrics=['accuracy']) # evaluation metric accuracy ``` The model is ready to train once it is defined and compiled: ```python # Train the model, validate it with validation data, and save the training history history = model.fit(train_ds, epochs=10, validation_data=val_ds) ``` **Classes, function, and attributes**: - `from tensorflow.keras.preprocessing.image import ImageDataGenerator`: to read the image data and make it useful for training/validation - `flow_from_directory()`: method to read the images directly from the directory - `next(train_ds)`: to unpack features and target variables - `train_ds.class_indices`: attribute to get classes according to the directory structure - `GlobalAveragePooling2D()`: accepts 4D tensor as input and operates the mean on the height and width dimensionalities for all the channels and returns vector representation of all images - `CategoricalCrossentropy()`: method to produces a one-hot array containing the probable match for each category in multi classification - `model.fit()`: method to train model - `epochs`: number of iterations over all of the training data - `history.history`: history attribute is a dictionary recording loss and metrics values (accuracy in our case) for each epoch ## Notes Add notes from the video (PRs are welcome) * convolutional layers convert an image into a vector representation * dense layers use vector representations to make predictions * using a pretrained neural network * imagenet has 1000 different classes * a dense layer may be specific to a certain number of classes whereas the vector representation can be applied to another dataset * reusing the vector representation from convolutional layers means transferring knowledge and the idea behind transfer learning * train faster on smaller size images * the batch size * base model vs custom model * bottom layers vs top layers in keras * keras optimizers * using the adam optimizer * weights, learning rates * eta in xgboost * model loss * categorical cross entropy * changing accuracy during several training epochs * overfitting
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/11/21/ml-zoomcamp-2023-deep-learning-part-6/) * [Notes from Peter Ernicke](https://knowmledge.com/2023/11/22/ml-zoomcamp-2023-deep-learning-part-7/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [Convolutional neural networks](04-conv-neural-nets.md) * Next: [Adjusting the learning rate](06-learning-rate.md) ================================================ FILE: 08-deep-learning/06-learning-rate.md ================================================ ## 8.6 Adjusting the learning rate [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316) One of the most important hyperparameters of deep learning models is the learning rate. It is a tuning parameter in an optimization function that determines the step size (how big or small) at each iteration while moving toward a mininum of a loss function. Imagine you have a book, and you want to read it. The *learning rate* represents how fast you can read and absorb its content. If you read the book very quickly, you risk forgetting important parts and struggling to recall key details when you need to apply them. On the other hand, reading slowly allows you to study each concept thoroughly and understand it deeply, ensuring better retention. However, if you read too slowly, you might never finish the book. The goal is to find the right reading pace, or learning rate, that balances comprehension and efficiency. Reading too fast may result in superficial understanding, while reading too slowly might mean not acquiring knowledge quickly enough to meet your goals. By maintaining a moderate, balanced pace, you can maximize understanding and effectively apply what you've learned. This analogy relates to training machine learning models. Training a model is like reading a book: you're trying to "learn" from the data. Applying that knowledge during testing or validation corresponds to validating the model. If you train the model too quickly (with a high learning rate), it may overfit, memorizing the training data without generalizing well to new data. If you train it too slowly (with a low learning rate), it may underfit, failing to learn enough patterns from the data. A balanced learning rate ensures the model acquires sufficient knowledge and performs well on both training and validation data. We can experiement with different learning rates to find the optimal value where the model has best results. In order to try different learning rates, we should define a function to create a function first, for instance: ```python # Function to create model def make_model(learning_rate=0.01): base_model = Xception(weights='imagenet', include_top=False, input_shape=(150,150,3)) base_model.trainable = False ######################################### inputs = keras.Input(shape=(150,150,3)) base = base_model(inputs, training=False) vectors = keras.layers.GlobalAveragePooling2D()(base) outputs = keras.layers.Dense(10)(vectors) model = keras.Model(inputs, outputs) ######################################### optimizer = keras.optimizers.Adam(learning_rate=learning_rate) loss = keras.losses.CategoricalCrossentropy(from_logits=True) # Compile the model model.compile(optimizer=optimizer, loss=loss, metrics=['accuracy']) return model ``` Next, we can loop over on the list of learning rates: ```python # Dictionary to store history with different learning rates scores = {} # List of learning rates lrs = [0.0001, 0.001, 0.01, 0.1] for lr in lrs: print(lr) model = make_model(learning_rate=lr) history = model.fit(train_ds, epochs=10, validation_data=val_ds) scores[lr] = history.history print() print() ``` Visualizing the training and validation accuracies help us to determine which learning rate value is the best for for the model. One typical way to determine the best value is by looking at the gap between training and validation accuracy. The smaller gap indicates the optimal value of the learning rate. ## Notes Add notes from the video (PRs are welcome) * learning rate analogy: the speed of reading a book * reading fast (skimming thus missing details) vs reading slow (not much progress and leaving out books) * finding the optimal learning rate
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/11/23/ml-zoomcamp-2023-deep-learning-part-8/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [Tranfser learning](05-transfer-learning.md) * Next: [Checkpointing](07-checkpointing.md) ================================================ FILE: 08-deep-learning/07-checkpointing.md ================================================ ## 8.7 Checkpointing [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316) `ModelCheckpoint` callback is used with training the model to save a model or weights in a checkpoint file at some interval, so the model or weights can be loaded later to continue the training from the state saved or to use for deployment. **Classes, function, and attributes**: - `keras.callbacks.ModelCheckpoint`: ModelCheckpoint class from keras callbacks api - `filepath`: path to save the model file - `monitor`: the metric name to monitor - `save_best_only`: only save when the model is considered the best according to the metric provided in `monitor` - `mode`: overwrite the save file based on either maximum or the minimum scores according the metric provided in `monitor` ## Notes Add notes from the video (PRs are welcome) * checkpointing saves the model after each training iteration * checkpoint conditions may include reaching the best performance * keras callbacks
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/11/24/ml-zoomcamp-2023-deep-learning-part-9/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [Adjusting the learning rate](06-learning-rate.md) * Next: [Adding more layers](08-more-layers.md) ================================================ FILE: 08-deep-learning/08-more-layers.md ================================================ ## 8.8 Adding more layers [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316) It is also possible to add more layers between the `vector representation layer` and the `output layer` to perform intermediate processing of the vector representation. These layers are the same dense layers as the output but the difference is that these layers use `relu` activation function for non-linearity. Like learning rates, we should also experiment with different values of inner layer sizes: ```python # Function to define model by adding new dense layer def make_model(learning_rate=0.01, size_inner=100): # default layer size is 100 base_model = Xception(weights='imagenet', include_top=False, input_shape=(150,150,3)) base_model.trainable = False ######################################### inputs = keras.Input(shape=(150,150,3)) base = base_model(inputs, training=False) vectors = keras.layers.GlobalAveragePooling2D()(base) inner = keras.layers.Dense(size_inner, activation='relu')(vectors) # activation function 'relu' outputs = keras.layers.Dense(10)(inner) model = keras.Model(inputs, outputs) ######################################### optimizer = keras.optimizers.Adam(learning_rate=learning_rate) loss = keras.losses.CategoricalCrossentropy(from_logits=True) # Compile the model model.compile(optimizer=optimizer, loss=loss, metrics=['accuracy']) return model ``` Next, train the model with different sizes of inner layer: ```python # Experiement different number of inner layer with best learning rate # Note: We should've added the checkpoint for training but for simplicity we are skipping it learning_rate = 0.001 scores = {} # List of inner layer sizes sizes = [10, 100, 1000] for size in sizes: print(size) model = make_model(learning_rate=learning_rate, size_inner=size) history = model.fit(train_ds, epochs=10, validation_data=val_ds) scores[size] = history.history print() print() ``` Note: It may not always be possible that the model improves. Adding more layers mean introducing complexity in the model, which may not be recommended in some cases. In the next section, we'll try different regularization technique to improve the performance with the added inner layer. ## Notes Add notes from the video (PRs are welcome) * softmax takes raw scores from a dense layer and transforms it into a probability * activation functions used for output vs activation functions used for intermediate steps * have a look at http://cs231n.stanford.edu/2017/ * sigmoid: negativ input --> zero, positive input --> straight line * relu * softmax
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/11/25/ml-zoomcamp-2023-deep-learning-part-10/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [Checkpointing](07-checkpointing.md) * Next: [Regularization and dropout](09-dropout.md) ================================================ FILE: 08-deep-learning/09-dropout.md ================================================ ## 8.9 Regularization and dropout [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316) Dropout is a technique that prevents overfitting in neural networks by randomly dropping nodes of a layer during training. As a result, the trained model works as an ensemble model consisting of multiple neural networks. From previous experiments we got the best values of learning rate `0.01` and layer size of `100`. We'll use these values for the next experiment along with different values of dropout rates: ```python # Function to define model by adding new dense layer and dropout def make_model(learning_rate=0.01, size_inner=100, droprate=0.5): base_model = Xception(weights='imagenet', include_top=False, input_shape=(150,150,3)) base_model.trainable = False ######################################### inputs = keras.Input(shape=(150,150,3)) base = base_model(inputs, training=False) vectors = keras.layers.GlobalAveragePooling2D()(base) inner = keras.layers.Dense(size_inner, activation='relu')(vectors) drop = keras.layers.Dropout(droprate)(inner) # add dropout layer outputs = keras.layers.Dense(10)(drop) model = keras.Model(inputs, outputs) ######################################### optimizer = keras.optimizers.Adam(learning_rate=learning_rate) loss = keras.losses.CategoricalCrossentropy(from_logits=True) # Compile the model model.compile(optimizer=optimizer, loss=loss, metrics=['accuracy']) return model # Create checkpoint to save best model for version 3 filepath = './xception_v3_{epoch:02d}_{val_accuracy:.3f}.h5' checkpoint = keras.callbacks.ModelCheckpoint(filepath=filepath, save_best_only=True, monitor='val_accuracy', mode='max') # Set the best values of learning rate and inner layer size based on previous experiments learning_rate = 0.001 size = 100 # Dict to store results scores = {} # List of dropout rates droprates = [0.0, 0.2, 0.5, 0.8] for droprate in droprates: print(droprate) model = make_model(learning_rate=learning_rate, size_inner=size, droprate=droprate) # Train for longer (epochs=30) cause of dropout regularization history = model.fit(train_ds, epochs=30, validation_data=val_ds, callbacks=[checkpoint]) scores[droprate] = history.history print() print() ``` Note: Because we introduce dropout in the neural networks, we will need to train our model for longer, hence, number of epochs is set to `30`. **Classes, functions, attributes**: - `tf.keras.layers.Dropout()`: dropout layer to randomly sets input units (i.e, nodes) to 0 with a frequency of rate at each epoch during training - `rate`: argument to set the fraction of the input units to drop, it is a value of float between 0 and 1 ## Notes Add notes from the video (PRs are welcome) * A neural network might learn false patterns, i.e. if it repeatedly recognizes a certain logo on a t-shirt it might learn that the logo defines the t-shirt which is wrong since the logo might also be seen on a hoodie. * hiding parts of the images (freeze) from being seen by the learning neural network * dropout = randomly freezing parts of the image * comparing different performance parameters while changing dropout rate and regularization
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/11/26/ml-zoomcamp-2023-deep-learning-part-11/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [Adding more layers](08-more-layers.md) * Next: [Data augmentation](10-augmentation.md) ================================================ FILE: 08-deep-learning/10-augmentation.md ================================================ ## 8.10 Data augmentation In this video, I had a typo/bug: instead of using `val_gen` for generating images for validation, I used `train_gen`. That's why adding augmentations didn't help in the video. [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316) Data augmentation is a process of artifically increasing the amount of data by generating new images from existing images. This includes adding minor alterations to images by flipping, cropping, adding brightness and/or contrast, and many more. Keras `ImageDataGenerator` class has many parameters for data augmentation that we can use for generating data. Important thing to remember that the data augmentation should only be implemented on train data, not the validation. Here's how we can generate augmented data for training the model: ```python # Create image generator for train data and also augment the images train_gen = ImageDataGenerator(preprocessing_function=preprocess_input, rotation_range=30, width_shift_range=10.0, height_shift_range=10.0, shear_range=10, zoom_range=0.1, vertical_flip=True) train_ds = train_gen.flow_from_directory(directory=train_imgs_dir, target_size=(150,150), batch_size=32) ``` **How to choose augmentations?** - First step is to use our own judgement, for example, looking at the images (both on train and validation), does it make sense to introduce horizontal flip? - Look at the dataset, what kind of variations are there? Are objects always centered? - Augmentations are hyperparameters: like many other hyperparameters, often times we need to test whether image augmentations are useful for the model or not. If the model doesn't improve or have same performance after certain epochs (let's say 20), in that case we don't use it. Usually augmented data required training for longer. ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/11/27/ml-zoomcamp-2023-deep-learning-part-12/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [Regularization and dropout](09-dropout.md) * Next: [Training a larger model](11-large-model.md) ================================================ FILE: 08-deep-learning/11-large-model.md ================================================ ## 8.11 Training a larger model [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316) In this section we increase the image input size from `150` to `299`, reduce the amount of data augmentation parameters and lower the learning rate. This gives us the best results than any previous experiments. ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/11/28/ml-zoomcamp-2023-deep-learning-part-13/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [Data augmentation](10-augmentation.md) * Next: [Using the model](12-using-model.md) ================================================ FILE: 08-deep-learning/12-using-model.md ================================================ ## 8.12 Using the model [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316) Earlier we used **h5 format** to save our model when creating the checkpoint. The HDF5 format contains the model's architecture, weights values, and `compile()` information. The saved model can be loaded and used for prediction with `keras.models.load_model(path/to/saved_model)` method. To evaluate the model and make prediction on test data, we'll need to create the same preprocessing steps for the image as we have done with train and validation data: ```python # Create image generator for test data test_gen = ImageDataGenerator(preprocessing_function=preprocess_input) # Path of test images directory test_imgs_dir = '../input/mlzoomcampimageclassification/zoomcamp-image-classification/clothing-dataset-small/test' # Load in test images to generator test_ds = test_gen.flow_from_directory(directory=test_imgs_dir, target_size=(299,299), batch_size=32, shuffle=False) # Path of an image to make predictions img_path = 'path/to/image' # Load image img = load_img(img_path, target_size=(299,299)) # Convert image to numpy array x = np.array(img) # Add batch dimension to the image X = np.array([x]) # Preprocess the image X = preprocess_input(X) ``` The model performance can be evaluated on test data with `model.evaluate(test_ds)` and the prediction on the test image can be made using the method `model.predict(X)`. We can then zip the class names and prediction to see the likelihood. **Classes, functions, attributes**: - `keras.models.load_model()`: method to load saved model - `model.evaluate()`: method to evaluate the performance of the model based on the evaluation metrics - `model.predict()`: method to make predictions of output depending on the input ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/11/29/ml-zoomcamp-2023-deep-learning-part-14/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [Training a larger model](11-large-model.md) * Next: [Summary](13-summary.md) ================================================ FILE: 08-deep-learning/13-summary.md ================================================ ## 8.13 Summary - We can use pre-trained models for general image classification - Convolutional layers let us turn an image into a vector - Dense layers use the vector to make the predictions - Instead of training a model from scratch, we can use transfer learning and re-use already trained convolutional layers - First, train a small model (150x150) before training a big one (299x299) - Learning rate - how fast the model trains. Fast learner aren't always best ones - We can save the best model using callbacks and checkpointing - To avoid overfitting, use dropout and augmentation ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [Using the model](12-using-model.md) * Next: [Explore more](14-explore-more.md) ================================================ FILE: 08-deep-learning/14-explore-more.md ================================================ ## 8.14 Explore more **TODO** - Add more data, e.g, Zalando etc - Albumentations - another way of generating augmentations - Use PyTorch or MXNet instead of TensorFlow/Keras - In addition to Xception, there are others architectures - try them **Other projects:** - cats vs dogs - Hotdog vs not hotdog - Category of images ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [Summary](13-summary.md) * Next: [Homework](homework.md) ================================================ FILE: 08-deep-learning/README.md ================================================ ## 8. Neural Networks and Deep Learning Note: in the module we use TensorFlow+Keras. These videos were recorded a while ago, and while they are still relevant, PyTorch became the to-go framework for training neural networks. That's why we also re-recorded the content of this module with PyTorch. You can find the materials in the [pytorch/](pytorch/) folder. We don't go over the theory in the PyTorch part. For that, refer to the main module (the one that still uses Keras). How to watch it: - If you want to learn PyTorch only, watch the module content for the theory only and then follow along the content of the PyTorch part - If you want to learn both (and have time), first do the module and then the PyTorch part TensorFlow module videos: - 8.1 [Fashion classification](01-fashion-classification.md) - 8.2 [TensorFlow and Keras](02-tensorflow-keras.md) - 8.3 [Pre-trained convolutional neural networks](03-pretrained-models.md) - 8.4 [Convolutional neural networks](04-conv-neural-nets.md) - 8.5 [Transfer learning](05-transfer-learning.md) - 8.6 [Adjusting the learning rate](06-learning-rate.md) - 8.7 [Checkpointing](07-checkpointing.md) - 8.8 [Adding more layers](08-more-layers.md) - 8.9 [Regularization and dropout](09-dropout.md) - 8.10 [Data augmentation](10-augmentation.md) - 8.11 [Training a larger model](11-large-model.md) - 8.12 [Using the model](12-using-model.md) - 8.13 [Summary](13-summary.md) - 8.14 [Explore more](14-explore-more.md) - 8.15 [Homework](homework.md) ## Community notes Did you take notes? You can share them here (or in each unit separately) * [Alvaro Navas' Notes](https://github.com/ziritrion/ml-zoomcamp/blob/main/notes/08_deep_learning.md) * [Kwang Yang's Notes on PyTorch](https://github.com/kwangyy/ml-zoomcamp/blob/main/Week%208%20Code/Week%208%20-%20Deep%20Learning%20but%20PyTorch.ipynb) * [Notes from froukje](https://github.com/froukje/ml-zoomcamp/blob/main/week8/Lecture_week_8.ipynb) * [Saturn Cloud setup](https://github.com/dimzachar/mlzoomcamp/blob/master/Notes/saturn.md) * [Connecting Github, Saturn Cloud and local VSCode via SSH](https://github.com/MemoonaTahira/MLZoomcamp2022/tree/main/Notes/Week_8-Deep_Learning) * [Gradio demonstration with Huggingface Space](https://github.com/yusyel/guides/tree/master/huggingface#gradio-demonstration-with-huggingface-space) * [Hyperparameter Search With Keras-tuners](https://github.com/yusyel/guides/tree/master/keras%20tuner) * [Installation of tensorflow v2.14 in WSL2 and Ubuntu 22.04 with Nvidia GPU](https://github.com/ellacharmed/machine-learning-zoomcamp/blob/master/08-deep-learning/install.md) * [Notes from Peter Ernicke](https://knowmledge.com/category/courses/ml-zoomcamp/deep-learning/) * [Notes from Kemal Dahha](https://github.com/kemaldahha/machine-learning-course/blob/main/week_8_notes.ipynb) * [Notes from Maximilien Eyengue](https://github.com/maxim-eyengue/Python-Codes/blob/main/ML_Zoomcamp_2024/08_deep_learning/Summary_Session_08.md) * [Notes from Revathy Ramalingam](https://github.com/RevathyRamalingam/machineLearning/blob/main/08-DeepLearning/README.md) * Add your notes here ================================================ FILE: 08-deep-learning/homework.md ================================================ ## Homework * For 2025 cohort homework, check [the 2025 cohort folder](../cohorts/2025/08-deep-learning/homework.md) * For 2024 cohort homework, check [the 2024 cohort folder](../cohorts/2024/08-deep-learning/) * For 2023 cohort homework, check [the 2023 cohort folder](../cohorts/2023/08-deep-learning/) * For 2022 cohort homework, check [the 2022 cohort folder](../cohorts/2022/) * For 2021 cohort homework and solution, check [the 2021 cohort folder](../cohorts/2021/08-deep-learning/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [Explore more](14-explore-more.md) ================================================ FILE: 08-deep-learning/install.md ================================================ # Installation of tensorflow date: 2023 Nov 12 This installation guide is specific to the use case as in the pre-requisites. I'm not sure if it is similar for Mac/Linux native OSes or Other WSL2 Distros. Let me know either way if it does help. Also, welcome to edit and make corrections directly (via PRs) or let me know via Slack. ## pre-requisites - wsl2 on Windows 10 19044 or higher - Nvidia Pascal GPU, current driver 546.01 - Ubuntu 22.04 LTS - micromamba environment manager - bash/zsh shell - cuda_12.3.0_545.84_windows.exe and cudnn-windows-x86_64-8.9.6.50_cuda12-archive.zip - Nvidia CUDA Toolkit 12.3 on WSL2 - Tensorflow v2.14 with cuda ## starting over or pre-install ### windows host 1. control panel --> Uninstall Cuda v??.? 2. verify Nvidia driver is >= v450.xx (currently v546.01 as of @2023 Nov 12) 3. [download cuda executable for Win10](https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exe_local) - install following screen prompts, but select `Custom Install`, shorten the Path if desired. I've shorten from the defaults to just `cuda` - disable nsight, visual studio, GPU driver, GeForce Experience, HD Audio driver (if installed separately) - add to PATH manually or verify these are present; first 2 are mandatory, 3rd might be optional (I'm not sure): - `C:\Program Files\cuda\v12.3\bin` - `C:\Program Files\cuda\v12.3\libnvvp` - `D:\Program Files\cuda\v12.3\extras\CUPTI\lib64` 4. [cudnn-windows-x86_64-8.9.6.zip](https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.6/local_installers/12.x/cudnn-windows-x86_64-8.9.6.50_cuda12-archive.zip/), [download cudnn archive for other versions](https://developer.nvidia.com/rdp/cudnn-archive) - unzip and drag contents into the `C:\Program Files\cuda\v12.3\` where the matching `bin`, `include` and `lib` are located. Let the contents from `cudnn*.zip` replace the folders in the `CUDA` folder ### wsl2 Ubuntu 22.04 [source](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#removing-cuda-toolkit-and-driver) --> go to Ubuntu and Debian section In the wsl2 Ubuntu terminal, clean up previous installs especially if on a different version ```bash sudo apt-key del 7fa2af80 sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \ "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*" sudo apt-get --purge remove "*nvidia*" "libxnvctrl*" sudo apt-get autoremove rm -rf "*.deb" "*.tar" "*.gz" ``` [source: go here for exact version numbers, other than 12.3 @2023 Nov 12](https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/) ```bash wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/12.3.0/local_installers/cuda-repo-wsl-ubuntu-12-3-local_12.3.0-1_amd64.deb sudo dpkg -i cuda-repo-wsl-ubuntu-12-3-local_12.3.0-1_amd64.deb sudo cp /var/cuda-repo-wsl-ubuntu-12-3-local/cuda-*-keyring.gpg /usr/share/keyrings/ sudo apt-get update sudo apt-get -y install cuda-toolkit-12-3 ``` ## post Install ```bash export PATH=/usr/local/cuda-12.3/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-12.3/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} ``` ## create new environment ```bash micromamba create -n py310 python=3.10 ``` ## activate environment ```bash micromamba activate py310 ``` ## install tensorflow ```bash pip install 'tensorflow[and-cuda]' or python3 -m pip install 'tensorflow[and-cuda]' ``` Outcome: in virtual environment - tensorflow-2.14 - tensorboard<2.15,>=2.14 - keras<2.15,>=2.14.0 in wsl2 - nvidia-cuda-runtime-cu12==11.8.89 - nvidia-cudnn-cu12==8.7.0.84 - ## verify install 1. Run test_tf.ipynb to check if GPU recognized, or 2. Run the notebook.ipynb cells, and use `nvidia-smi` while it's running. Ensure the correct versions are reported in `nvidia-smi` output. - Driver version - CUDA version - processes list your python version - if you repeatedly run it with the up-arrow key you should be able to see the values of FAN%, Temp, Wattage, Memory, and Util change each time ```bash nvidia-smi Sun Nov 12 22:59:54 2023 +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 545.29.01 Driver Version: 546.01 CUDA Version: 12.3 | |-----------------------------------------+----------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 NVIDIA GeForce GTX 970 On | 00000000:01:00.0 On | N/A | | 40% 61C P2 93W / 200W | 3872MiB / 4096MiB | 54% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | 0 N/A N/A 23 G /Xwayland N/A | | 0 N/A N/A 2490 C /python3.10 N/A | +---------------------------------------------------------------------------------------+ ``` ## FAQs > **Issue**: `/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link` > > **Solution**: paste this `ldconfig = false` entry into `[automount]` section in your `%USERPROFILE%/.wslconfig` file. Open the file in `vs-code` or text editor like `notepad++`. Mine's at `"C:\Users\Ella\.wslconfig"`. I had a previous entry to cap my RAM usage in WSL2. > [source](https://github.com/microsoft/WSL/issues/5548#issuecomment-724674428) ```bash [wsl2] memory=12GB [automount] ldconfig = false ``` |=============================================================================| > **Issue**: warnings and info messages > > **Solution**: surpress with > [source](https://stackoverflow.com/questions/35911252/disable-tensorflow-debugging-information) ```python import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' ``` |=============================================================================| ================================================ FILE: 08-deep-learning/meta.csv ================================================ lesson,name,page_name,video,slides,notebook 1,Fashion classification,01-fashion-classification.md,https://www.youtube.com/watch?v=it1Lu7NmMpw,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316,https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/08-deep-learning/notebook.ipynb 2,TensorFlow and Keras,02-tensorflow-keras.md,https://www.youtube.com/watch?v=R6o_CUmoN9Q,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316,https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/08-deep-learning/notebook.ipynb 3,Pre-trained convolutional neural networks,03-pretrained-models.md,https://www.youtube.com/watch?v=qGDXEz-cr6M,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316,https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/08-deep-learning/notebook.ipynb 4,Convolutional neural networks,04-conv-neural-nets.md,https://www.youtube.com/watch?v=BN-fnYzbdc8,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316,https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/08-deep-learning/notebook.ipynb 5,Transfer learning,05-transfer-learning.md,https://www.youtube.com/watch?v=WKHylqfNmq4,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316,https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/08-deep-learning/notebook.ipynb 6,Adjusting the learning rate,06-learning-rate.md,https://www.youtube.com/watch?v=2gPmRRGz0Hc,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316,https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/08-deep-learning/notebook.ipynb 7,Checkpointing,07-checkpointing.md,https://www.youtube.com/watch?v=NRpGUx0o3Ps,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316,https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/08-deep-learning/notebook.ipynb 8,Adding more layers,08-more-layers.md,https://www.youtube.com/watch?v=bSRRrorvAZs,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316,https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/08-deep-learning/notebook.ipynb 9,Regularization and dropout,09-dropout.md,https://www.youtube.com/watch?v=74YmhVM6FTM,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316,https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/08-deep-learning/notebook.ipynb 10,Data augmentation,10-augmentation.md,https://www.youtube.com/watch?v=aoPfVsS3BDE,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316,https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/08-deep-learning/notebook.ipynb 11,Training a larger model,11-large-model.md,https://www.youtube.com/watch?v=_QpDGJwFjYA,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316,https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/08-deep-learning/notebook.ipynb 12,Using the model,12-using-model.md,https://www.youtube.com/watch?v=cM1WHKae1wo,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-8-neural-networks-and-deep-learning-250592316,https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/08-deep-learning/notebook.ipynb 13,Summary,13-summary.md,https://www.youtube.com/watch?v=mn0BcXJlRFM,,https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/08-deep-learning/notebook.ipynb 14,Explore more,14-explore-more.md,,, 15,Homework,homework.md,,, ================================================ FILE: 08-deep-learning/meta.json ================================================ { "data": "meta.csv", "session": 8, "name": "Neural Networks and Deep Learning" } ================================================ FILE: 08-deep-learning/notebook.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "id": "a8f9405b", "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "IPython.notebook.set_autosave_interval(0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Autosave disabled\n" ] } ], "source": [ "%autosave 0" ] }, { "cell_type": "markdown", "id": "c7094cad", "metadata": {}, "source": [ "# 8. Neural networks and deep learning\n", "\n", "This week, we'll learn about neural nets and build a model\n", "for classifying images of clothes\n", "\n", "\n", "## 8.1 Fashion classification\n", "\n", "Dataset: \n", "\n", "* Full: https://github.com/alexeygrigorev/clothing-dataset\n", "* Small: https://github.com/alexeygrigorev/clothing-dataset-small\n", "\n", "Links:\n", "\n", "* https://cs231n.github.io/" ] }, { "cell_type": "code", "execution_count": null, "id": "1afdbb2c", "metadata": {}, "outputs": [], "source": [ "!git clone git@github.com:alexeygrigorev/clothing-dataset-small.git" ] }, { "cell_type": "markdown", "id": "12765d10", "metadata": {}, "source": [ "## 8.2 TensorFlow and Keras\n", "\n", "* Installing TensorFlow\n", "* Loading images" ] }, { "cell_type": "code", "execution_count": 2, "id": "53990556", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 3, "id": "905fd095", "metadata": {}, "outputs": [], "source": [ "import tensorflow as tf\n", "from tensorflow import keras" ] }, { "cell_type": "code", "execution_count": 4, "id": "296e289a", "metadata": {}, "outputs": [], "source": [ "from tensorflow.keras.preprocessing.image import load_img" ] }, { "cell_type": "code", "execution_count": 10, "id": "059cd78a", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path = './clothing-dataset-small/train/t-shirt'\n", "name = '5f0a3fa0-6a3d-4b68-b213-72766a643de7.jpg'\n", "fullname = f'{path}/{name}'\n", "load_img(fullname)" ] }, { "cell_type": "code", "execution_count": 11, "id": "d857636e", "metadata": {}, "outputs": [], "source": [ "img = load_img(fullname, target_size=(299, 299))" ] }, { "cell_type": "code", "execution_count": 12, "id": "242ba0c0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(299, 299, 3)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = np.array(img)\n", "x.shape" ] }, { "cell_type": "markdown", "id": "e3928249", "metadata": {}, "source": [ "## 8.3 Pre-trained convolutional neural networks\n", "\n", "* Imagenet dataset: https://www.image-net.org/\n", "* Pre-trained models: https://keras.io/api/applications/\n" ] }, { "cell_type": "code", "execution_count": 5, "id": "fcc0d5a3", "metadata": {}, "outputs": [], "source": [ "from tensorflow.keras.applications.xception import Xception\n", "from tensorflow.keras.applications.xception import preprocess_input\n", "from tensorflow.keras.applications.xception import decode_predictions" ] }, { "cell_type": "code", "execution_count": 6, "id": "297a0926", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.4/xception_weights_tf_dim_ordering_tf_kernels.h5\n", "91889664/91884032 [==============================] - 2s 0us/step\n" ] } ], "source": [ "model = Xception(weights='imagenet', input_shape=(299, 299, 3))" ] }, { "cell_type": "code", "execution_count": 18, "id": "a777bfc1", "metadata": {}, "outputs": [], "source": [ "X = np.array([x])" ] }, { "cell_type": "code", "execution_count": 19, "id": "5df763eb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 299, 299, 3)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.shape" ] }, { "cell_type": "code", "execution_count": 24, "id": "c5660b22", "metadata": {}, "outputs": [], "source": [ "X = preprocess_input(X)" ] }, { "cell_type": "code", "execution_count": 27, "id": "099d68d7", "metadata": {}, "outputs": [], "source": [ "pred = model.predict(X)" ] }, { "cell_type": "code", "execution_count": 31, "id": "9a6f5d9e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading data from https://storage.googleapis.com/download.tensorflow.org/data/imagenet_class_index.json\n", "40960/35363 [==================================] - 0s 0us/step\n" ] }, { "data": { "text/plain": [ "[[('n03595614', 'jersey', 0.6792451),\n", " ('n02916936', 'bulletproof_vest', 0.039600316),\n", " ('n04370456', 'sweatshirt', 0.035299566),\n", " ('n03710637', 'maillot', 0.010884117),\n", " ('n04525038', 'velvet', 0.0018057569)]]" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "decode_predictions(pred)" ] }, { "cell_type": "markdown", "id": "e2c2d908", "metadata": {}, "source": [ "## 8.4 Convolutional neural networks\n", "\n", "* Types of layers: convolutional and dense \n", "* Convolutional layers and filters\n", "* Dense layers\n", "\n", "There are more layers. Read here: https://cs231n.github.io/" ] }, { "cell_type": "markdown", "id": "1cf118bf", "metadata": {}, "source": [ "## 8.5 Transfer learning\n", "\n", "* Reading data with `ImageDataGenerator`\n", "* Train `Xception` on smaller images (150x150)\n", "\n", "(Better to run it with a GPU)" ] }, { "cell_type": "code", "execution_count": 6, "id": "c967d218", "metadata": {}, "outputs": [], "source": [ "from tensorflow.keras.preprocessing.image import ImageDataGenerator" ] }, { "cell_type": "code", "execution_count": 8, "id": "5fca12c8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 3068 images belonging to 10 classes.\n" ] } ], "source": [ "train_gen = ImageDataGenerator(preprocessing_function=preprocess_input)\n", "\n", "train_ds = train_gen.flow_from_directory(\n", " './clothing-dataset-small/train',\n", " target_size=(150, 150),\n", " batch_size=32\n", ")" ] }, { "cell_type": "code", "execution_count": 10, "id": "1b12ce6d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'dress': 0,\n", " 'hat': 1,\n", " 'longsleeve': 2,\n", " 'outwear': 3,\n", " 'pants': 4,\n", " 'shirt': 5,\n", " 'shoes': 6,\n", " 'shorts': 7,\n", " 'skirt': 8,\n", " 't-shirt': 9}" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_ds.class_indices" ] }, { "cell_type": "code", "execution_count": 14, "id": "181633a7", "metadata": {}, "outputs": [], "source": [ "X, y = next(train_ds)" ] }, { "cell_type": "code", "execution_count": 18, "id": "d4f88c8f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],\n", " [0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],\n", " [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],\n", " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", " [0., 0., 0., 0., 0., 0., 0., 0., 0., 1.]], dtype=float32)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y[:5]" ] }, { "cell_type": "code", "execution_count": 9, "id": "17973f1f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 341 images belonging to 10 classes.\n" ] } ], "source": [ "val_gen = ImageDataGenerator(preprocessing_function=preprocess_input)\n", "\n", "val_ds = val_gen.flow_from_directory(\n", " './clothing-dataset-small/validation',\n", " target_size=(150, 150),\n", " batch_size=32,\n", " shuffle=False\n", ")" ] }, { "cell_type": "code", "execution_count": 10, "id": "22b2e3e8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.4/xception_weights_tf_dim_ordering_tf_kernels_notop.h5\n", "83689472/83683744 [==============================] - 1s 0us/step\n" ] } ], "source": [ "base_model = Xception(\n", " weights='imagenet',\n", " include_top=False,\n", " input_shape=(150, 150, 3)\n", ")\n", "\n", "base_model.trainable = False\n", "\n", "\n", "\n", "inputs = keras.Input(shape=(150, 150, 3))\n", "\n", "base = base_model(inputs, training=False)\n", "\n", "vectors = keras.layers.GlobalAveragePooling2D()(base)\n", "\n", "outputs = keras.layers.Dense(10)(vectors)\n", "\n", "model = keras.Model(inputs, outputs)" ] }, { "cell_type": "code", "execution_count": 50, "id": "bc2083a1", "metadata": {}, "outputs": [], "source": [ "learning_rate = 0.01\n", "optimizer = keras.optimizers.Adam(learning_rate=learning_rate)\n", "\n", "loss = keras.losses.CategoricalCrossentropy(from_logits=True)\n", "\n", "model.compile(optimizer=optimizer, loss=loss, metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 51, "id": "4c8f36be", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/10\n", "96/96 [==============================] - 20s 211ms/step - loss: 1.2568 - accuracy: 0.6698 - val_loss: 0.8537 - val_accuracy: 0.7449\n", "Epoch 2/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.5745 - accuracy: 0.8188 - val_loss: 0.6850 - val_accuracy: 0.8065\n", "Epoch 3/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.3261 - accuracy: 0.8885 - val_loss: 0.7734 - val_accuracy: 0.8152\n", "Epoch 4/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.2215 - accuracy: 0.9244 - val_loss: 0.9123 - val_accuracy: 0.7918\n", "Epoch 5/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.1433 - accuracy: 0.9475 - val_loss: 0.8244 - val_accuracy: 0.8094\n", "Epoch 6/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 0.0897 - accuracy: 0.9707 - val_loss: 0.8517 - val_accuracy: 0.8035\n", "Epoch 7/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.0855 - accuracy: 0.9703 - val_loss: 0.7886 - val_accuracy: 0.8299\n", "Epoch 8/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 0.0907 - accuracy: 0.9661 - val_loss: 0.8840 - val_accuracy: 0.8123\n", "Epoch 9/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 0.0458 - accuracy: 0.9876 - val_loss: 0.9531 - val_accuracy: 0.8035\n", "Epoch 10/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.0465 - accuracy: 0.9876 - val_loss: 0.9695 - val_accuracy: 0.7889\n" ] } ], "source": [ "history = model.fit(train_ds, epochs=10, validation_data=val_ds)" ] }, { "cell_type": "code", "execution_count": 59, "id": "d73a587e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#plt.plot(history.history['accuracy'], label='train')\n", "plt.plot(history.history['val_accuracy'], label='val')\n", "plt.xticks(np.arange(10))\n", "plt.legend()" ] }, { "cell_type": "markdown", "id": "6def1b4b", "metadata": {}, "source": [ "## 8.6 Adjusting the learning rate\n", "\n", "* What's the learning rate\n", "* Trying different values" ] }, { "cell_type": "code", "execution_count": 60, "id": "55bd9ed4", "metadata": {}, "outputs": [], "source": [ "def make_model(learning_rate=0.01):\n", " base_model = Xception(\n", " weights='imagenet',\n", " include_top=False,\n", " input_shape=(150, 150, 3)\n", " )\n", "\n", " base_model.trainable = False\n", "\n", " #########################################\n", "\n", " inputs = keras.Input(shape=(150, 150, 3))\n", " base = base_model(inputs, training=False)\n", " vectors = keras.layers.GlobalAveragePooling2D()(base)\n", " outputs = keras.layers.Dense(10)(vectors)\n", " model = keras.Model(inputs, outputs)\n", " \n", " #########################################\n", "\n", " optimizer = keras.optimizers.Adam(learning_rate=learning_rate)\n", " loss = keras.losses.CategoricalCrossentropy(from_logits=True)\n", "\n", " model.compile(\n", " optimizer=optimizer,\n", " loss=loss,\n", " metrics=['accuracy']\n", " )\n", " \n", " return model" ] }, { "cell_type": "code", "execution_count": 61, "id": "62596012", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0001\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/10\n", "96/96 [==============================] - 20s 208ms/step - loss: 1.9262 - accuracy: 0.3403 - val_loss: 1.5806 - val_accuracy: 0.4897\n", "Epoch 2/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 1.3832 - accuracy: 0.5613 - val_loss: 1.2368 - val_accuracy: 0.6012\n", "Epoch 3/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 1.1397 - accuracy: 0.6463 - val_loss: 1.0575 - val_accuracy: 0.6716\n", "Epoch 4/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 1.0022 - accuracy: 0.6858 - val_loss: 0.9497 - val_accuracy: 0.7214\n", "Epoch 5/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.9087 - accuracy: 0.7141 - val_loss: 0.8773 - val_accuracy: 0.7566\n", "Epoch 6/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.8401 - accuracy: 0.7376 - val_loss: 0.8281 - val_accuracy: 0.7713\n", "Epoch 7/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.7886 - accuracy: 0.7565 - val_loss: 0.7873 - val_accuracy: 0.7801\n", "Epoch 8/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 0.7453 - accuracy: 0.7637 - val_loss: 0.7537 - val_accuracy: 0.7830\n", "Epoch 9/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 0.7094 - accuracy: 0.7757 - val_loss: 0.7299 - val_accuracy: 0.7859\n", "Epoch 10/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 0.6791 - accuracy: 0.7806 - val_loss: 0.7060 - val_accuracy: 0.7889\n", "\n", "\n", "0.001\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/10\n", "96/96 [==============================] - 20s 204ms/step - loss: 1.1293 - accuracy: 0.6199 - val_loss: 0.7179 - val_accuracy: 0.7625\n", "Epoch 2/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.6555 - accuracy: 0.7761 - val_loss: 0.6018 - val_accuracy: 0.8035\n", "Epoch 3/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.5239 - accuracy: 0.8230 - val_loss: 0.5708 - val_accuracy: 0.8094\n", "Epoch 4/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.4409 - accuracy: 0.8553 - val_loss: 0.5574 - val_accuracy: 0.8035\n", "Epoch 5/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 0.3796 - accuracy: 0.8820 - val_loss: 0.5373 - val_accuracy: 0.8152\n", "Epoch 6/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 0.3307 - accuracy: 0.9029 - val_loss: 0.5273 - val_accuracy: 0.8270\n", "Epoch 7/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 0.2973 - accuracy: 0.9153 - val_loss: 0.5111 - val_accuracy: 0.8152\n", "Epoch 8/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 0.2657 - accuracy: 0.9316 - val_loss: 0.5245 - val_accuracy: 0.8006\n", "Epoch 9/10\n", "96/96 [==============================] - 16s 168ms/step - loss: 0.2394 - accuracy: 0.9426 - val_loss: 0.5233 - val_accuracy: 0.8299\n", "Epoch 10/10\n", "96/96 [==============================] - 16s 168ms/step - loss: 0.2137 - accuracy: 0.9505 - val_loss: 0.5017 - val_accuracy: 0.8240\n", "\n", "\n", "0.01\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/10\n", "96/96 [==============================] - 20s 209ms/step - loss: 1.1734 - accuracy: 0.6701 - val_loss: 1.0102 - val_accuracy: 0.7390\n", "Epoch 2/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.5969 - accuracy: 0.8129 - val_loss: 0.8572 - val_accuracy: 0.7771\n", "Epoch 3/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 0.3137 - accuracy: 0.8902 - val_loss: 0.7792 - val_accuracy: 0.7947\n", "Epoch 4/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.2034 - accuracy: 0.9273 - val_loss: 0.9025 - val_accuracy: 0.7859\n", "Epoch 5/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.1677 - accuracy: 0.9423 - val_loss: 0.9980 - val_accuracy: 0.7713\n", "Epoch 6/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.2104 - accuracy: 0.9205 - val_loss: 1.0246 - val_accuracy: 0.8123\n", "Epoch 7/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.1228 - accuracy: 0.9615 - val_loss: 0.9585 - val_accuracy: 0.8094\n", "Epoch 8/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 0.0779 - accuracy: 0.9743 - val_loss: 0.8759 - val_accuracy: 0.8123\n", "Epoch 9/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.0651 - accuracy: 0.9791 - val_loss: 0.8844 - val_accuracy: 0.8211\n", "Epoch 10/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 0.0619 - accuracy: 0.9817 - val_loss: 1.0551 - val_accuracy: 0.7889\n", "\n", "\n", "0.1\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/10\n", "96/96 [==============================] - 20s 203ms/step - loss: 10.4920 - accuracy: 0.6327 - val_loss: 6.0144 - val_accuracy: 0.7537\n", "Epoch 2/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 5.2193 - accuracy: 0.7744 - val_loss: 7.3142 - val_accuracy: 0.7566\n", "Epoch 3/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 3.4999 - accuracy: 0.8387 - val_loss: 8.0551 - val_accuracy: 0.7683\n", "Epoch 4/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 2.9493 - accuracy: 0.8625 - val_loss: 9.5917 - val_accuracy: 0.7507\n", "Epoch 5/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 2.4901 - accuracy: 0.8814 - val_loss: 9.1683 - val_accuracy: 0.7507\n", "Epoch 6/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 2.1291 - accuracy: 0.9016 - val_loss: 9.2850 - val_accuracy: 0.7654\n", "Epoch 7/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 1.4794 - accuracy: 0.9185 - val_loss: 10.4883 - val_accuracy: 0.7566\n", "Epoch 8/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 1.4156 - accuracy: 0.9211 - val_loss: 11.8833 - val_accuracy: 0.7742\n", "Epoch 9/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 1.1350 - accuracy: 0.9400 - val_loss: 10.6944 - val_accuracy: 0.7625\n", "Epoch 10/10\n", "96/96 [==============================] - 16s 167ms/step - loss: 1.1251 - accuracy: 0.9475 - val_loss: 8.6116 - val_accuracy: 0.7889\n", "\n", "\n" ] } ], "source": [ "scores = {}\n", "\n", "for lr in [0.0001, 0.001, 0.01, 0.1]:\n", " print(lr)\n", "\n", " model = make_model(learning_rate=lr)\n", " history = model.fit(train_ds, epochs=10, validation_data=val_ds)\n", " scores[lr] = history.history\n", "\n", " print()\n", " print()" ] }, { "cell_type": "code", "execution_count": 65, "id": "e5329752", "metadata": {}, "outputs": [], "source": [ "del scores[0.1]\n", "del scores[0.0001]" ] }, { "cell_type": "code", "execution_count": 68, "id": "14096c8e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for lr, hist in scores.items():\n", " #plt.plot(hist['accuracy'], label=('train=%s' % lr))\n", " plt.plot(hist['val_accuracy'], label=('val=%s' % lr))\n", "\n", "plt.xticks(np.arange(10))\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": null, "id": "3d77b040", "metadata": {}, "outputs": [], "source": [ "learning_rate = 0.001" ] }, { "cell_type": "markdown", "id": "8f906434", "metadata": {}, "source": [ "## 8.7 Checkpointing\n", "\n", "* Saving the best model only\n", "* Training a model with callbacks" ] }, { "cell_type": "code", "execution_count": 70, "id": "137f8135", "metadata": {}, "outputs": [], "source": [ "model.save_weights('model_v1.h5', save_format='h5')" ] }, { "cell_type": "code", "execution_count": 21, "id": "13755c3d", "metadata": {}, "outputs": [], "source": [ "chechpoint = keras.callbacks.ModelCheckpoint(\n", " 'xception_v1_{epoch:02d}_{val_accuracy:.3f}.h5',\n", " save_best_only=True,\n", " monitor='val_accuracy',\n", " mode='max'\n", ")" ] }, { "cell_type": "code", "execution_count": 79, "id": "45a5689f", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/10\n", "96/96 [==============================] - 21s 216ms/step - loss: 1.1353 - accuracy: 0.6170 - val_loss: 0.7258 - val_accuracy: 0.7801\n", "Epoch 2/10\n", "96/96 [==============================] - 16s 168ms/step - loss: 0.6469 - accuracy: 0.7735 - val_loss: 0.6332 - val_accuracy: 0.7859\n", "Epoch 3/10\n", "96/96 [==============================] - 16s 169ms/step - loss: 0.5182 - accuracy: 0.8243 - val_loss: 0.5905 - val_accuracy: 0.8094\n", "Epoch 4/10\n", "96/96 [==============================] - 16s 170ms/step - loss: 0.4390 - accuracy: 0.8553 - val_loss: 0.5550 - val_accuracy: 0.8152\n", "Epoch 5/10\n", "96/96 [==============================] - 16s 170ms/step - loss: 0.3827 - accuracy: 0.8827 - val_loss: 0.5437 - val_accuracy: 0.8211\n", "Epoch 6/10\n", "96/96 [==============================] - 16s 170ms/step - loss: 0.3342 - accuracy: 0.8990 - val_loss: 0.5319 - val_accuracy: 0.8358\n", "Epoch 7/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.2978 - accuracy: 0.9149 - val_loss: 0.5169 - val_accuracy: 0.8299\n", "Epoch 8/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.2652 - accuracy: 0.9283 - val_loss: 0.5422 - val_accuracy: 0.8299\n", "Epoch 9/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.2419 - accuracy: 0.9387 - val_loss: 0.5234 - val_accuracy: 0.8211\n", "Epoch 10/10\n", "96/96 [==============================] - 16s 166ms/step - loss: 0.2157 - accuracy: 0.9498 - val_loss: 0.5320 - val_accuracy: 0.8328\n" ] } ], "source": [ "learning_rate = 0.001\n", "\n", "model = make_model(learning_rate=learning_rate)\n", "\n", "history = model.fit(\n", " train_ds,\n", " epochs=10,\n", " validation_data=val_ds,\n", " callbacks=[chechpoint]\n", ")" ] }, { "cell_type": "markdown", "id": "c33d7b9b", "metadata": {}, "source": [ "## 8.8 Adding more layers\n", "\n", "\n", "* Adding one inner dense layer\n", "* Experimenting with different sizes of inner layer" ] }, { "cell_type": "code", "execution_count": 3, "id": "165e823a", "metadata": {}, "outputs": [], "source": [ "def make_model(learning_rate=0.01, size_inner=100):\n", " base_model = Xception(\n", " weights='imagenet',\n", " include_top=False,\n", " input_shape=(150, 150, 3)\n", " )\n", "\n", " base_model.trainable = False\n", "\n", " #########################################\n", "\n", " inputs = keras.Input(shape=(150, 150, 3))\n", " base = base_model(inputs, training=False)\n", " vectors = keras.layers.GlobalAveragePooling2D()(base)\n", " \n", " inner = keras.layers.Dense(size_inner, activation='relu')(vectors)\n", " \n", " outputs = keras.layers.Dense(10)(inner)\n", " \n", " model = keras.Model(inputs, outputs)\n", " \n", " #########################################\n", "\n", " optimizer = keras.optimizers.Adam(learning_rate=learning_rate)\n", " loss = keras.losses.CategoricalCrossentropy(from_logits=True)\n", "\n", " model.compile(\n", " optimizer=optimizer,\n", " loss=loss,\n", " metrics=['accuracy']\n", " )\n", " \n", " return model" ] }, { "cell_type": "code", "execution_count": 13, "id": "f4288d1c", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10\n", "Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.4/xception_weights_tf_dim_ordering_tf_kernels_notop.h5\n", "83689472/83683744 [==============================] - 1s 0us/step\n", "[2021-11-03 13:35:43.005 ip-172-16-64-149:21634 INFO utils.py:27] RULE_JOB_STOP_SIGNAL_FILENAME: None\n", "[2021-11-03 13:35:43.104 ip-172-16-64-149:21634 INFO profiler_config_parser.py:111] Unable to find config at /opt/ml/input/config/profilerconfig.json. Profiler is disabled.\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/10\n", "96/96 [==============================] - 42s 438ms/step - loss: 1.1849 - accuracy: 0.6033 - val_loss: 0.8076 - val_accuracy: 0.7243\n", "Epoch 2/10\n", "96/96 [==============================] - 16s 169ms/step - loss: 0.7314 - accuracy: 0.7474 - val_loss: 0.7305 - val_accuracy: 0.7507\n", "Epoch 3/10\n", "96/96 [==============================] - 16s 169ms/step - loss: 0.5834 - accuracy: 0.8018 - val_loss: 0.6308 - val_accuracy: 0.7889\n", "Epoch 4/10\n", "96/96 [==============================] - 16s 170ms/step - loss: 0.4878 - accuracy: 0.8370 - val_loss: 0.6715 - val_accuracy: 0.7859\n", "Epoch 5/10\n", "96/96 [==============================] - 16s 170ms/step - loss: 0.4128 - accuracy: 0.8647 - val_loss: 0.5720 - val_accuracy: 0.8094\n", "Epoch 6/10\n", "96/96 [==============================] - 16s 170ms/step - loss: 0.3512 - accuracy: 0.8980 - val_loss: 0.5757 - val_accuracy: 0.8152\n", "Epoch 7/10\n", "96/96 [==============================] - 16s 171ms/step - loss: 0.3043 - accuracy: 0.9091 - val_loss: 0.5484 - val_accuracy: 0.8152\n", "Epoch 8/10\n", "96/96 [==============================] - 16s 172ms/step - loss: 0.2564 - accuracy: 0.9306 - val_loss: 0.5492 - val_accuracy: 0.7918\n", "Epoch 9/10\n", "96/96 [==============================] - 16s 171ms/step - loss: 0.2220 - accuracy: 0.9459 - val_loss: 0.5523 - val_accuracy: 0.7977\n", "Epoch 10/10\n", "96/96 [==============================] - 16s 172ms/step - loss: 0.2006 - accuracy: 0.9462 - val_loss: 0.5594 - val_accuracy: 0.8152\n", "\n", "\n", "100\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/10\n", "96/96 [==============================] - 20s 208ms/step - loss: 0.9623 - accuracy: 0.6819 - val_loss: 0.6446 - val_accuracy: 0.7801\n", "Epoch 2/10\n", "96/96 [==============================] - 17s 173ms/step - loss: 0.4784 - accuracy: 0.8341 - val_loss: 0.6494 - val_accuracy: 0.7918\n", "Epoch 3/10\n", "96/96 [==============================] - 17s 172ms/step - loss: 0.3548 - accuracy: 0.8752 - val_loss: 0.6583 - val_accuracy: 0.7830\n", "Epoch 4/10\n", "96/96 [==============================] - 17s 172ms/step - loss: 0.2430 - accuracy: 0.9166 - val_loss: 0.6221 - val_accuracy: 0.8006\n", "Epoch 5/10\n", "96/96 [==============================] - 17s 172ms/step - loss: 0.1873 - accuracy: 0.9413 - val_loss: 0.6345 - val_accuracy: 0.8035\n", "Epoch 6/10\n", "96/96 [==============================] - 17s 172ms/step - loss: 0.1431 - accuracy: 0.9566 - val_loss: 0.6523 - val_accuracy: 0.8065\n", "Epoch 7/10\n", "96/96 [==============================] - 16s 172ms/step - loss: 0.1153 - accuracy: 0.9700 - val_loss: 0.8347 - val_accuracy: 0.7713\n", "Epoch 8/10\n", "96/96 [==============================] - 17s 172ms/step - loss: 0.0802 - accuracy: 0.9795 - val_loss: 0.7221 - val_accuracy: 0.7859\n", "Epoch 9/10\n", "96/96 [==============================] - 17s 172ms/step - loss: 0.0647 - accuracy: 0.9870 - val_loss: 0.7199 - val_accuracy: 0.8152\n", "Epoch 10/10\n", "96/96 [==============================] - 17s 172ms/step - loss: 0.0518 - accuracy: 0.9922 - val_loss: 0.7012 - val_accuracy: 0.8123\n", "\n", "\n", "1000\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/10\n", "96/96 [==============================] - 20s 208ms/step - loss: 1.5152 - accuracy: 0.6633 - val_loss: 0.9100 - val_accuracy: 0.7771\n", "Epoch 2/10\n", "96/96 [==============================] - 16s 172ms/step - loss: 0.5736 - accuracy: 0.8237 - val_loss: 0.7562 - val_accuracy: 0.7830\n", "Epoch 3/10\n", "96/96 [==============================] - 16s 171ms/step - loss: 0.4004 - accuracy: 0.8703 - val_loss: 0.9595 - val_accuracy: 0.7507\n", "Epoch 4/10\n", "96/96 [==============================] - 16s 171ms/step - loss: 0.2576 - accuracy: 0.9065 - val_loss: 0.7193 - val_accuracy: 0.8065\n", "Epoch 5/10\n", "96/96 [==============================] - 16s 171ms/step - loss: 0.1669 - accuracy: 0.9410 - val_loss: 0.8278 - val_accuracy: 0.7977\n", "Epoch 6/10\n", "96/96 [==============================] - 17s 174ms/step - loss: 0.1255 - accuracy: 0.9563 - val_loss: 0.8112 - val_accuracy: 0.8035\n", "Epoch 7/10\n", "96/96 [==============================] - 16s 171ms/step - loss: 0.1177 - accuracy: 0.9596 - val_loss: 0.8148 - val_accuracy: 0.8123\n", "Epoch 8/10\n", "96/96 [==============================] - 16s 171ms/step - loss: 0.1825 - accuracy: 0.9342 - val_loss: 0.9044 - val_accuracy: 0.7889\n", "Epoch 9/10\n", "96/96 [==============================] - 16s 171ms/step - loss: 0.1303 - accuracy: 0.9537 - val_loss: 1.0076 - val_accuracy: 0.7859\n", "Epoch 10/10\n", "96/96 [==============================] - 16s 172ms/step - loss: 0.0891 - accuracy: 0.9694 - val_loss: 1.1218 - val_accuracy: 0.8006\n", "\n", "\n" ] } ], "source": [ "learning_rate = 0.001\n", "\n", "scores = {}\n", "\n", "for size in [10, 100, 1000]:\n", " print(size)\n", "\n", " model = make_model(learning_rate=learning_rate, size_inner=size)\n", " history = model.fit(train_ds, epochs=10, validation_data=val_ds)\n", " scores[size] = history.history\n", "\n", " print()\n", " print()" ] }, { "cell_type": "code", "execution_count": 16, "id": "b36bb404", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for size, hist in scores.items():\n", " plt.plot(hist['val_accuracy'], label=('val=%s' % size))\n", "\n", "plt.xticks(np.arange(10))\n", "plt.yticks([0.78, 0.80, 0.82, 0.825, 0.83])\n", "plt.legend()" ] }, { "cell_type": "markdown", "id": "76c1849b", "metadata": {}, "source": [ "## 8.9 Regularization and dropout\n", "\n", "* Regularizing by freezing a part of the network\n", "* Adding dropout to our model\n", "* Experimenting with different values" ] }, { "cell_type": "code", "execution_count": 8, "id": "4ae364d9", "metadata": {}, "outputs": [], "source": [ "def make_model(learning_rate=0.01, size_inner=100, droprate=0.5):\n", " base_model = Xception(\n", " weights='imagenet',\n", " include_top=False,\n", " input_shape=(150, 150, 3)\n", " )\n", "\n", " base_model.trainable = False\n", "\n", " #########################################\n", "\n", " inputs = keras.Input(shape=(150, 150, 3))\n", " base = base_model(inputs, training=False)\n", " vectors = keras.layers.GlobalAveragePooling2D()(base)\n", " \n", " inner = keras.layers.Dense(size_inner, activation='relu')(vectors)\n", " drop = keras.layers.Dropout(droprate)(inner)\n", " \n", " outputs = keras.layers.Dense(10)(drop)\n", " \n", " model = keras.Model(inputs, outputs)\n", " \n", " #########################################\n", "\n", " optimizer = keras.optimizers.Adam(learning_rate=learning_rate)\n", " loss = keras.losses.CategoricalCrossentropy(from_logits=True)\n", "\n", " model.compile(\n", " optimizer=optimizer,\n", " loss=loss,\n", " metrics=['accuracy']\n", " )\n", " \n", " return model" ] }, { "cell_type": "code", "execution_count": 13, "id": "7ee3e3d1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0\n", "[2021-11-03 21:19:20.707 ip-172-16-13-140:18999 INFO utils.py:27] RULE_JOB_STOP_SIGNAL_FILENAME: None\n", "[2021-11-03 21:19:20.814 ip-172-16-13-140:18999 INFO profiler_config_parser.py:111] Unable to find config at /opt/ml/input/config/profilerconfig.json. Profiler is disabled.\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/30\n", "96/96 [==============================] - 56s 583ms/step - loss: 0.9642 - accuracy: 0.6747 - val_loss: 0.6832 - val_accuracy: 0.7566\n", "Epoch 2/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.5163 - accuracy: 0.8230 - val_loss: 0.6058 - val_accuracy: 0.7918\n", "Epoch 3/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.3458 - accuracy: 0.8885 - val_loss: 0.5577 - val_accuracy: 0.8270\n", "Epoch 4/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.2575 - accuracy: 0.9218 - val_loss: 0.5166 - val_accuracy: 0.8416\n", "Epoch 5/30\n", "96/96 [==============================] - 15s 157ms/step - loss: 0.2002 - accuracy: 0.9394 - val_loss: 0.5974 - val_accuracy: 0.8152\n", "Epoch 6/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.1322 - accuracy: 0.9684 - val_loss: 0.5695 - val_accuracy: 0.8152\n", "Epoch 7/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.0874 - accuracy: 0.9863 - val_loss: 0.6004 - val_accuracy: 0.8152\n", "Epoch 8/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.0674 - accuracy: 0.9902 - val_loss: 0.5810 - val_accuracy: 0.8211\n", "Epoch 9/30\n", "96/96 [==============================] - 15s 157ms/step - loss: 0.0485 - accuracy: 0.9971 - val_loss: 0.6084 - val_accuracy: 0.8270\n", "Epoch 10/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.0326 - accuracy: 0.9987 - val_loss: 0.6066 - val_accuracy: 0.8416\n", "Epoch 11/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.0235 - accuracy: 0.9990 - val_loss: 0.6404 - val_accuracy: 0.8152\n", "Epoch 12/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.0229 - accuracy: 0.9990 - val_loss: 0.6242 - val_accuracy: 0.8270\n", "Epoch 13/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.0171 - accuracy: 0.9997 - val_loss: 0.6530 - val_accuracy: 0.8328\n", "Epoch 14/30\n", "96/96 [==============================] - 15s 157ms/step - loss: 0.0130 - accuracy: 0.9997 - val_loss: 0.6650 - val_accuracy: 0.8358\n", "Epoch 15/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.0138 - accuracy: 0.9993 - val_loss: 0.6573 - val_accuracy: 0.8328\n", "Epoch 16/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.0117 - accuracy: 0.9993 - val_loss: 0.7331 - val_accuracy: 0.8152\n", "Epoch 17/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.0121 - accuracy: 0.9997 - val_loss: 0.6736 - val_accuracy: 0.8270\n", "Epoch 18/30\n", "96/96 [==============================] - 15s 157ms/step - loss: 0.0105 - accuracy: 0.9993 - val_loss: 0.6732 - val_accuracy: 0.8299\n", "Epoch 19/30\n", "96/96 [==============================] - 15s 157ms/step - loss: 0.0065 - accuracy: 0.9997 - val_loss: 0.7275 - val_accuracy: 0.8240\n", "Epoch 20/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.0087 - accuracy: 0.9997 - val_loss: 0.6873 - val_accuracy: 0.8328\n", "Epoch 21/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.0074 - accuracy: 0.9993 - val_loss: 0.7036 - val_accuracy: 0.8387\n", "Epoch 22/30\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.0048 - accuracy: 0.9997 - val_loss: 0.7190 - val_accuracy: 0.8358\n", "Epoch 23/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.0062 - accuracy: 0.9997 - val_loss: 0.7420 - val_accuracy: 0.8240\n", "Epoch 24/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.0089 - accuracy: 0.9990 - val_loss: 0.7259 - val_accuracy: 0.8358\n", "Epoch 25/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.0092 - accuracy: 0.9987 - val_loss: 0.7479 - val_accuracy: 0.8299\n", "Epoch 26/30\n", "96/96 [==============================] - 16s 163ms/step - loss: 0.0033 - accuracy: 0.9997 - val_loss: 0.7662 - val_accuracy: 0.8358\n", "Epoch 27/30\n", "96/96 [==============================] - 16s 165ms/step - loss: 0.0097 - accuracy: 0.9987 - val_loss: 0.8429 - val_accuracy: 0.8211\n", "Epoch 28/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.0072 - accuracy: 0.9990 - val_loss: 0.8050 - val_accuracy: 0.8358\n", "Epoch 29/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.0125 - accuracy: 0.9964 - val_loss: 0.8644 - val_accuracy: 0.8152\n", "Epoch 30/30\n", "96/96 [==============================] - 15s 157ms/step - loss: 0.0091 - accuracy: 0.9987 - val_loss: 0.8397 - val_accuracy: 0.8358\n", "\n", "\n", "0.2\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/30\n", "96/96 [==============================] - 19s 201ms/step - loss: 1.0421 - accuracy: 0.6421 - val_loss: 0.6269 - val_accuracy: 0.8152\n", "Epoch 2/30\n", "96/96 [==============================] - 15s 157ms/step - loss: 0.5996 - accuracy: 0.7862 - val_loss: 0.5930 - val_accuracy: 0.7830\n", "Epoch 3/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.4595 - accuracy: 0.8390 - val_loss: 0.5409 - val_accuracy: 0.8152\n", "Epoch 4/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.3463 - accuracy: 0.8866 - val_loss: 0.4990 - val_accuracy: 0.8182\n", "Epoch 5/30\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.2764 - accuracy: 0.9113 - val_loss: 0.4907 - val_accuracy: 0.8446\n", "Epoch 6/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.2235 - accuracy: 0.9299 - val_loss: 0.5487 - val_accuracy: 0.8270\n", "Epoch 7/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.1744 - accuracy: 0.9505 - val_loss: 0.5264 - val_accuracy: 0.8152\n", "Epoch 8/30\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.1422 - accuracy: 0.9645 - val_loss: 0.5496 - val_accuracy: 0.8299\n", "Epoch 9/30\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.1153 - accuracy: 0.9690 - val_loss: 0.5453 - val_accuracy: 0.8152\n", "Epoch 10/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.0955 - accuracy: 0.9769 - val_loss: 0.5783 - val_accuracy: 0.8152\n", "Epoch 11/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.0775 - accuracy: 0.9834 - val_loss: 0.5469 - val_accuracy: 0.8270\n", "Epoch 12/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.0595 - accuracy: 0.9886 - val_loss: 0.5578 - val_accuracy: 0.8446\n", "Epoch 13/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.0514 - accuracy: 0.9922 - val_loss: 0.6008 - val_accuracy: 0.8416\n", "Epoch 14/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.0491 - accuracy: 0.9909 - val_loss: 0.5807 - val_accuracy: 0.8358\n", "Epoch 15/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.0407 - accuracy: 0.9948 - val_loss: 0.6196 - val_accuracy: 0.8270\n", "Epoch 16/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.0384 - accuracy: 0.9928 - val_loss: 0.6152 - val_accuracy: 0.8387\n", "Epoch 17/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.0330 - accuracy: 0.9935 - val_loss: 0.5942 - val_accuracy: 0.8416\n", "Epoch 18/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.0286 - accuracy: 0.9932 - val_loss: 0.7247 - val_accuracy: 0.8152\n", "Epoch 19/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.0319 - accuracy: 0.9941 - val_loss: 0.6897 - val_accuracy: 0.8387\n", "Epoch 20/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.0289 - accuracy: 0.9941 - val_loss: 0.6490 - val_accuracy: 0.8270\n", "Epoch 21/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.0329 - accuracy: 0.9928 - val_loss: 0.7535 - val_accuracy: 0.8152\n", "Epoch 22/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.0310 - accuracy: 0.9938 - val_loss: 0.6456 - val_accuracy: 0.8270\n", "Epoch 23/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.0259 - accuracy: 0.9954 - val_loss: 0.7003 - val_accuracy: 0.8328\n", "Epoch 24/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.0195 - accuracy: 0.9961 - val_loss: 0.7779 - val_accuracy: 0.8094\n", "Epoch 25/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.0291 - accuracy: 0.9932 - val_loss: 0.8031 - val_accuracy: 0.8065\n", "Epoch 26/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.0256 - accuracy: 0.9932 - val_loss: 0.7989 - val_accuracy: 0.8182\n", "Epoch 27/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.0254 - accuracy: 0.9935 - val_loss: 0.7228 - val_accuracy: 0.8416\n", "Epoch 28/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.0217 - accuracy: 0.9948 - val_loss: 0.7898 - val_accuracy: 0.8094\n", "Epoch 29/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.0190 - accuracy: 0.9964 - val_loss: 0.8253 - val_accuracy: 0.8152\n", "Epoch 30/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.0267 - accuracy: 0.9928 - val_loss: 0.8274 - val_accuracy: 0.8065\n", "\n", "\n", "0.5\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/30\n", "96/96 [==============================] - 19s 201ms/step - loss: 1.3015 - accuracy: 0.5668 - val_loss: 0.7597 - val_accuracy: 0.7302\n", "Epoch 2/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.8380 - accuracy: 0.7190 - val_loss: 0.6347 - val_accuracy: 0.7977\n", "Epoch 3/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.6791 - accuracy: 0.7598 - val_loss: 0.5996 - val_accuracy: 0.8035\n", "Epoch 4/30\n", "96/96 [==============================] - 16s 163ms/step - loss: 0.5698 - accuracy: 0.8044 - val_loss: 0.5472 - val_accuracy: 0.8152\n", "Epoch 5/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.4974 - accuracy: 0.8331 - val_loss: 0.5318 - val_accuracy: 0.8240\n", "Epoch 6/30\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.4530 - accuracy: 0.8429 - val_loss: 0.5004 - val_accuracy: 0.8387\n", "Epoch 7/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.3973 - accuracy: 0.8664 - val_loss: 0.5179 - val_accuracy: 0.8211\n", "Epoch 8/30\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.3331 - accuracy: 0.8866 - val_loss: 0.5019 - val_accuracy: 0.8328\n", "Epoch 9/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.3214 - accuracy: 0.8869 - val_loss: 0.5001 - val_accuracy: 0.8270\n", "Epoch 10/30\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.2866 - accuracy: 0.9035 - val_loss: 0.5753 - val_accuracy: 0.8123\n", "Epoch 11/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.2766 - accuracy: 0.9045 - val_loss: 0.5196 - val_accuracy: 0.8328\n", "Epoch 12/30\n", "96/96 [==============================] - 16s 163ms/step - loss: 0.2353 - accuracy: 0.9188 - val_loss: 0.5102 - val_accuracy: 0.8416\n", "Epoch 13/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.2174 - accuracy: 0.9241 - val_loss: 0.5461 - val_accuracy: 0.8270\n", "Epoch 14/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.1872 - accuracy: 0.9345 - val_loss: 0.5343 - val_accuracy: 0.8416\n", "Epoch 15/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.1835 - accuracy: 0.9384 - val_loss: 0.5541 - val_accuracy: 0.8299\n", "Epoch 16/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.1647 - accuracy: 0.9505 - val_loss: 0.5677 - val_accuracy: 0.8240\n", "Epoch 17/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.1602 - accuracy: 0.9475 - val_loss: 0.5600 - val_accuracy: 0.8387\n", "Epoch 18/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.1437 - accuracy: 0.9550 - val_loss: 0.5300 - val_accuracy: 0.8270\n", "Epoch 19/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.1383 - accuracy: 0.9550 - val_loss: 0.5526 - val_accuracy: 0.8358\n", "Epoch 20/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.1418 - accuracy: 0.9495 - val_loss: 0.5425 - val_accuracy: 0.8446\n", "Epoch 21/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.1214 - accuracy: 0.9615 - val_loss: 0.5780 - val_accuracy: 0.8534\n", "Epoch 22/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.0991 - accuracy: 0.9684 - val_loss: 0.6000 - val_accuracy: 0.8358\n", "Epoch 23/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.1028 - accuracy: 0.9664 - val_loss: 0.5995 - val_accuracy: 0.8065\n", "Epoch 24/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.0974 - accuracy: 0.9674 - val_loss: 0.6249 - val_accuracy: 0.8094\n", "Epoch 25/30\n", "96/96 [==============================] - 15s 160ms/step - loss: 0.1086 - accuracy: 0.9602 - val_loss: 0.5936 - val_accuracy: 0.8299\n", "Epoch 26/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.0951 - accuracy: 0.9697 - val_loss: 0.6485 - val_accuracy: 0.8240\n", "Epoch 27/30\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.0916 - accuracy: 0.9694 - val_loss: 0.5958 - val_accuracy: 0.8328\n", "Epoch 28/30\n", "96/96 [==============================] - 16s 163ms/step - loss: 0.0821 - accuracy: 0.9729 - val_loss: 0.6749 - val_accuracy: 0.8328\n", "Epoch 29/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.1033 - accuracy: 0.9602 - val_loss: 0.6781 - val_accuracy: 0.8270\n", "Epoch 30/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.0970 - accuracy: 0.9645 - val_loss: 0.6907 - val_accuracy: 0.8299\n", "\n", "\n", "0.8\n", "WARNING:tensorflow:Large dropout rate: 0.8 (>0.5). In TensorFlow 2.x, dropout() uses dropout rate instead of keep_prob. Please ensure that this is intended.\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/30\n", "WARNING:tensorflow:Large dropout rate: 0.8 (>0.5). In TensorFlow 2.x, dropout() uses dropout rate instead of keep_prob. Please ensure that this is intended.\n", "WARNING:tensorflow:Large dropout rate: 0.8 (>0.5). In TensorFlow 2.x, dropout() uses dropout rate instead of keep_prob. Please ensure that this is intended.\n", "96/96 [==============================] - 19s 199ms/step - loss: 1.8235 - accuracy: 0.3879 - val_loss: 1.1518 - val_accuracy: 0.6158\n", "Epoch 2/30\n", "96/96 [==============================] - 15s 157ms/step - loss: 1.4182 - accuracy: 0.5010 - val_loss: 0.9966 - val_accuracy: 0.7155\n", "Epoch 3/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 1.2934 - accuracy: 0.5310 - val_loss: 0.8925 - val_accuracy: 0.7331\n", "Epoch 4/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 1.2507 - accuracy: 0.5417 - val_loss: 0.8229 - val_accuracy: 0.7683\n", "Epoch 5/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 1.1791 - accuracy: 0.5818 - val_loss: 0.8120 - val_accuracy: 0.7537\n", "Epoch 6/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 1.1207 - accuracy: 0.5896 - val_loss: 0.7615 - val_accuracy: 0.7625\n", "Epoch 7/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 1.0704 - accuracy: 0.6043 - val_loss: 0.7264 - val_accuracy: 0.7918\n", "Epoch 8/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 1.0273 - accuracy: 0.6261 - val_loss: 0.6978 - val_accuracy: 0.7742\n", "Epoch 9/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 1.0470 - accuracy: 0.6102 - val_loss: 0.7046 - val_accuracy: 0.7918\n", "Epoch 10/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.9995 - accuracy: 0.6157 - val_loss: 0.6775 - val_accuracy: 0.7947\n", "Epoch 11/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.9725 - accuracy: 0.6375 - val_loss: 0.6745 - val_accuracy: 0.7977\n", "Epoch 12/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.9577 - accuracy: 0.6323 - val_loss: 0.6670 - val_accuracy: 0.7918\n", "Epoch 13/30\n", "96/96 [==============================] - 16s 163ms/step - loss: 0.9401 - accuracy: 0.6392 - val_loss: 0.6382 - val_accuracy: 0.7918\n", "Epoch 14/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.9195 - accuracy: 0.6477 - val_loss: 0.6157 - val_accuracy: 0.8065\n", "Epoch 15/30\n", "96/96 [==============================] - 16s 163ms/step - loss: 0.8835 - accuracy: 0.6662 - val_loss: 0.6243 - val_accuracy: 0.8006\n", "Epoch 16/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.8784 - accuracy: 0.6591 - val_loss: 0.6263 - val_accuracy: 0.7889\n", "Epoch 17/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.8439 - accuracy: 0.6780 - val_loss: 0.6110 - val_accuracy: 0.8035\n", "Epoch 18/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.8262 - accuracy: 0.6757 - val_loss: 0.6072 - val_accuracy: 0.8065\n", "Epoch 19/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.8425 - accuracy: 0.6698 - val_loss: 0.6029 - val_accuracy: 0.8094\n", "Epoch 20/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.8072 - accuracy: 0.6913 - val_loss: 0.6007 - val_accuracy: 0.7889\n", "Epoch 21/30\n", "96/96 [==============================] - 16s 164ms/step - loss: 0.8056 - accuracy: 0.6920 - val_loss: 0.5905 - val_accuracy: 0.8035\n", "Epoch 22/30\n", "96/96 [==============================] - 16s 163ms/step - loss: 0.7889 - accuracy: 0.6842 - val_loss: 0.5832 - val_accuracy: 0.8035\n", "Epoch 23/30\n", "96/96 [==============================] - 16s 164ms/step - loss: 0.7635 - accuracy: 0.6965 - val_loss: 0.6038 - val_accuracy: 0.8094\n", "Epoch 24/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.7756 - accuracy: 0.6962 - val_loss: 0.5772 - val_accuracy: 0.8065\n", "Epoch 25/30\n", "96/96 [==============================] - 15s 159ms/step - loss: 0.7670 - accuracy: 0.6995 - val_loss: 0.6003 - val_accuracy: 0.8094\n", "Epoch 26/30\n", "96/96 [==============================] - 15s 158ms/step - loss: 0.7333 - accuracy: 0.7066 - val_loss: 0.5757 - val_accuracy: 0.8211\n", "Epoch 27/30\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.7398 - accuracy: 0.7080 - val_loss: 0.5493 - val_accuracy: 0.8240\n", "Epoch 28/30\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.7143 - accuracy: 0.7171 - val_loss: 0.5323 - val_accuracy: 0.8328\n", "Epoch 29/30\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.7117 - accuracy: 0.7122 - val_loss: 0.5473 - val_accuracy: 0.8094\n", "Epoch 30/30\n", "96/96 [==============================] - 16s 165ms/step - loss: 0.6907 - accuracy: 0.7256 - val_loss: 0.5628 - val_accuracy: 0.8299\n", "\n", "\n" ] } ], "source": [ "learning_rate = 0.001\n", "size = 100\n", "\n", "scores = {}\n", "\n", "for droprate in [0.0, 0.2, 0.5, 0.8]:\n", " print(droprate)\n", "\n", " model = make_model(\n", " learning_rate=learning_rate,\n", " size_inner=size,\n", " droprate=droprate\n", " )\n", "\n", " history = model.fit(train_ds, epochs=30, validation_data=val_ds)\n", " scores[droprate] = history.history\n", "\n", " print()\n", " print()" ] }, { "cell_type": "code", "execution_count": 16, "id": "53b2b5c0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for droprate, hist in scores.items():\n", " plt.plot(hist['val_accuracy'], label=('val=%s' % droprate))\n", "\n", "plt.ylim(0.78, 0.86)\n", "plt.legend()" ] }, { "cell_type": "code", "execution_count": 23, "id": "f0690ae1", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD4CAYAAADvsV2wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABQwklEQVR4nO2dd3hU15n/P2dGvfeGQKiAJEQREsYYXHAF9564l2xiO7FjZ5N1yv6SdeLd7GaTTdmNHTtOHOOK4xbb2MbY2IArBgSiSKIIAep1JCFQH53fH2dGGkkz0sxo1Ebn8zw80szce+dcRvO9732rkFKi0Wg0Gu/HMNkL0Gg0Gs3EoAVfo9FoZgha8DUajWaGoAVfo9FoZgha8DUajWaG4DPZC7BHTEyMnDt37mQvQ6PRaKYNBQUFjVLK2JG2mZKCP3fuXHbt2jXZy9BoNJppgxDixGjbaJeORqPRzBC04Gs0Gs0MQQu+RqPRzBC04Gs0Gs0MQQu+RqPRzBC04Gs0Gs0MQQu+RqPRzBC04E8GJRugpXyyVzG1aa2Cwpegt3uyV6LReA1a8CearlPwyh2w9VeTvZKpzbZfwZvfhj+fAye+nOzVaDRegRb8iabhIMg+KNsGeviMfaSEo1shfhF0n4Zn1sKGh6CjebJXptFMa7TgTzR1RernyUpoOjq5a5mqNB+D1nLIvxO+sx3OegB2PwePLYcDr+sLpUbjJlrwJ5r6YhBG9XvZlsldy1SlbKv6mXY++IfAml/CPVshfBa89g148QZoPj6JC9Ropida8CeauiJIyoWIOQPCphlM2VYIS4bo9IHnEpfANz+Ctf8N5dvh8RXw2R/A3DNZq9Roph1a8CcSKZXgx+dA6nlw7FPoM0/2qqYWfWY49gmkrQYhBr9mMMKK++D+ryD9Atj8CDy1GioLJmOlGs20Qwu+h9hcXMdNT31Jr7nP8Uan6qDDBHE5StC6WqG6cKKWOG5s3F/DbX/9ir4+D/jWa/ep4GzaeY63CU+Gm1+Cr78I7Sb464Ww869jf+/x5PAH8NT5ULp5sleicURPB/xtLRz/fLJXMm44JfhCiLVCiENCiFIhxI/tvB4uhNgghNgrhCgSQtw95HWjEGKPEOIdTy18qvHsl8fZXmbieNNpxxvVHVA/4xcoCx+8wo//zBfH+ay0kaqWjrEfzOrmSh1B8K1kX6Gs/XmXwHs/hOOfjf39PU1bLbxyJ7x0I1TvVjUYmqlJzV4o/xJKP5zslYwbowq+EMIIPA5cCiwAbhZCLBiy2f1AsZRyCbAa+K0Qws/m9YeAEo+seArS2tHDl0ebADhY2+Z4w7pi9TMuB0JiVdrhNPfjN57qYtdxEzDKuTtL2VaIWwCh8c5tHxAG1/8VotKUsLZWjn0NnqCvD3Y+rTKLDm2EC34KycsH/gY0Uw/r3bYXZ885Y+EvB0qllGVSym7gZeDqIdtIIFQIIYAQwAT0AgghkoHLgSl+z+0+Hx+so9fizjhYM4Lo1RdDSAIER6vHaedBxVfQ3T4BqxwfNhfXYfXkHKw5ObaD9XSoIqu01a7tFxAGN70EvV3w99uhp3Ns6xgrdcXwtzXw7vdVgP47X8K5D6vAc32xuhhoph41heqnqWxSlzGeOCP4s4AKm8eVludseQzIBqqB/cBDUkrrX/UfgB8CXvtXvulAHQlhAaTFBo9i4Rcpd46VtPPB3K1uI6cpm4pqmR0VyOyoQA7WjdHCr/gKzF2uCz5A7Hy47s/KbfLuDyYnV7+nAzb/QlUHm47CtX+GO94ayDaKz4HuU6rGQDP1sFr4pjKvrfVwRvCFneeG/m+sAQqBJCAXeEwIESaEuAKol1KOmkYhhLhHCLFLCLGroaHBiWVNDTq6zWw9XM8lOfFkJ4ZxqM6BlWvuhYZD6ktvJeUsMPhOW7dOW2cPn5c2sWZBAlkJYRwaq0unbCsYfCBlpXv7Z10O5/4QCl+AXU+PbS2ucvRj+NMK+Ox3sPgmeGAXLLlpcKaR9bPXbp2pR/dpaDwEwbHQ0w5tNZO9onHBGcGvBGbbPE5GWfK23A28IRWlwDEgC1gFXCWEOI5yBV0ghHjB3ptIKZ+SUi6TUi6LjR1x8PqU4pMjDXT29LE2J4Gs+FAqTB2c6uodvqHpqLJe42wE3y8YZp85bQV/y6EGus19rF2YQFZCKMcaT9PZM4Y007KtkHwG+Ie6f4zVP1FB3I0/mpgePO0meP2b8Py16mJ15ztwzeMQFDV827hs9dNabe0JavZ63IW1r7KFk50zrL6h9oBqeZJzrXrspX58ZwR/JzBPCJFqCcTeBLw9ZJty4EIAIUQ8kAmUSSl/IqVMllLOtez3sZTyNo+tfgqw6UAtEUG+LE+NIisxDMC+pWv9kscPiXenrVapiKebxneh48CmA7XEhPiTNyeSrIQwzH2S0vpT7h2s3aRuqd1x59hiMMB1f1GFba/cASeH2iYe5sOfQdE/4LwfwX2fQ+o5jrf1D4WIFKj3kOC3m+AvF8CW//DM8YB399Vw1WOfc+Fvt/HOvmqkl7o2hmH13y+8Xv00zVDBl1L2Ag8Am1CZNq9IKYuEEPcJIe6zbPbvwEohxH7gI+BHUsrG8Vr0VKHH3Mfmkjouyo7Hx2ggK0FZpg4FXxghJnPw81aBO7ZtfBfrYTp7zGw5pFxZBoMgc6Rzd4bjnwJy7IIPEBihgrjdp5Xo93aN/Zj26GyF/a/D0tvg/H8F34DR94nP8ZxLp3oP9PXCnhc9co6Hatt4+LW9LE4OJz7Mnwde2sM31u2kwjR9kwqcprpQuXOSzwCj34y28JFSvielnC+lTJdS/tLy3JNSyictv1dLKS+RUi6SUi6UUg5z20gpt0opr/Ds8ieX7WVNnOzsZU1OAgCzIgIJ9jNyqNaOH7++GKIzhotC0lLwD5t2gv/ZkUbau8395z43Ogg/HwOH3A3clm0DvxCYle+ZBcZlw7VPQOVO2PhDzxxzKPtegd4OyL/LhXUtgKZSz7hhrFZph2nM+f2t7T3c8/wugv19+Msdy3jzO6v46eXZfHXMxCW//4SnPjk6clHhdKemEBJzVTV3ZKrXZuroStsx8P6BWoL8jJwzLwag39ItcWThD3XnABh9YO45086P/35RLaEBPpyVplJMfYwG5seHUOJuambZVph7Nhh9PbfIBVfD2f8MBetg1zOeOy6oLI6CdSrVMmmp8/vF54A0qwDhWKkuVC6iiBS1Fjcx90ke+vseqls6eOLWPOLDAvAxGvjmOWl8+P3zWJURzX++d5CrHvucvRUtY1/3VKO7XbUtT8pVj6PTZ7aFrxlOX5/kg+I6VmfGEuBr7H8+05KtMsj32dUGLScGB2xtSVutuj+ajo3rmj1Fr40ry89n4E8oM97NTJ2WcuUz9YQ7ZygX/Ez13XnvYajY4bnjVu1WldOuWPfg2UydmkKYlQd5dyiXWGOpW4f5w+bDbD3UwCNX5rBs7uBg86yIQP5yxzKeuDWPxlNdXPOnz/n520W0eVNQt84SsE3MVY+j0lSLbi+sl9CC7yZ7KpppaOvqd2lYyUoIpbWjh7qTNj7VekuRcfwIgg/Txq2z45iJlvYe1uQMrobNSgilvq0L02kXxxKWWc57PATfYITrn4awJFWU1VbrmeMWPAO+wbDwBtf2i0oHo//YA7ftJnWhTMxVMQRhhN3PunyYTUW1/PHjUr6+bDa3njnH7jZCCC5dlMjmH5zH7StSePbL41z8u0/YVOSh/8vJxpp/b2vh93bCyarJWtG4oQXfTTYV1eFrFJyfFTfoeWvwssTWj+8oQ8dKzDwITZo2bp1NRbUE+Bo4d/7g9FnruR+0F8MYibKtEBIPsVkeWuEQgqIwf/1FejtaOPrEjVQ0uZlJZKXzpBrEsuh6VeXrCkYfiM0ce2qm1X+flAuhCZB5qcszgEvr2/jBK3tZMjuCX1ydgxjanXQIYQG+PHr1Ql7/9koigny59/kCvv9KodunYI8vShv5r/dKPBov+LC4jv/dfMTxBjWFEBQDYZZ60ihLodwImTpbDtXzuw8Pe2yNAH/77BjffqHAM00IHaAF3w2klLx/oJZVGTGEBQz2OdvN1KkrUgHJcPsWFEIo67Zs25S/jezrk2wqquPcebEE+fkMei0r0Y1Mnb4+Jfj22iF7iOLqk1z/xkn+tfN20tv38fv//fXYgpD7X1XFOXl3ube/JzJ1rFZp4hL1M/9uaG+EQ+86tfvJzh7ueb6AAF8DT96WN8gtORp5cyLZ8N2z+caqVN7YXcX+ylYXF28fKSWPvlPMnz8p4zcfeCDGARRWtHD/i7v5/ebDVDY7yDaqLlQXTuvfX3SG+tnk2EX2fx8d4Y8fH/FovcKWQ/Ucb2rHYBif7wFowXeLkpo2yk3trB3izgGICPIjISxgsOjVF6vsDMMI/91pq1W2Rd1+zy/Yg+yraqX2ZCdrFw4/99gQf6KC/VwT/PpiJVTj4M7p6DbzXxtLuPKxz6gwtbPy+gfpicnmR36v8ev3DrgfhNz9rGp8NyvPvYXFLYBTtWOrvagphMi5EBipHqefrwwKJ4K3fX2S7/99L+VN7Tx+Sx6J4YEuv72v0cBDF80jwNfA+p2eaRWxp6KFg7VtpMUG8+dtZbyzb2w1FA1tXdz3fAHhQcoo21RUN3yjng4VsLX67wFCE8EnEJrsZ+rUtnayp7wFKaGwvGVMa7Ri7pPsKW8hPyXCI8dzhBZ8N9hUVItBwEUL7Hd0zEwIHeip0z/0xIE7x4q1//sUd+u8f6AWH4Pgwqzh5y6EIDPeQZaSI1xph+wCWw/Vc/Hvt/HnbWXckJfMRz84j2vy5uB78c+J763izbPK3AtCVu9R1a35d7p/R2KN5YzFj19dOFikDEYVvC3bOmpK4R8/LmVzSR0/vTybMy1ZVu4QHujLFYuTeGtPFaftVZe7yMs7ygn2M/L6fSvJT4nk4Vf3ue4etNBj7uP+l3bT3N7NM3edQWZ8qP2YQ+0BlTVl9d+DMsyi0hy6dD4sHjhOwYlmt9Y3lMN1bZzq6iU/JdIjx3OEFnw32FRUy7K5UcSE+Nt9PSsxlNL6NnrMfaonR2eL4wwdK6EJEJs9pQVfSsmmolrOSo/ut5qGkpUYypG6Nuf9kGVbIWa+mlfrAerbOvnu+j3c9cxO/HwM/P2eFfz3DYuJCLJ0656/BmafycLSP7P5wTNcD0IWrFPW3+Kvub/IsWbqtJtU1pfVnWNl6a2W4O1zDnf9qKSO328+zHV5s7hz5Vz33t+Gm5fP4XS3eczW+MnOHjbsreGq3FlEBvvxxK15hAb4cO/zBbS2u+42+c/3SthxzMSvrl/EwlnhrFmYwM7jJhpPDSlQs8ZCbC+eANFpDlMz3y+qJT02mAWJYR4TfOtxlqXYacnhQbTgu8jxxtMcrG0blp1jS1ZCKD1mybHG0zYB21EEH5SVf+LLyW/v64Aj9ac41niaS0Y59/ZuMxWO/KW29HbDic89Yt339Ule+qqci367jU0HavneRfPY+NA5wy1YIeCin0NbDWF7nxkWhLznuV3UtDoY5NLVBvtfU+X3AeHuLzYkHgKj3Lfwa/aqn7ZWKahMpPlrYc8LdoO3ZQ2n+N7LhSycFcZ/Xrto1CCtM+TNiSAzPpSXdlSMvvEIvFVYTUePmZuXq7ZdcWEBPHFbHtUtHTz09z2YXQhkvrG7kmc+P843VqVy7dJkANbmJCClauc9iOpCCIpWU9RsiUpXqdLmwXcuLe3dbC8zsSYngfyUSPaUN7u0NkcUnGgmNtSf5EjX3WuuoAXfRaxW4NCURFsy41XmxsHattEzdGxJW60qNys9mC/uQd4/UIsQsMaBKwtUHQI4OQylcqcKfo7Rf3+kro2vP/Ul//qP/SxICmPj987hexfNx9/HQSAyZaVqsPbZ76CjuT8I+eNLs/jkSAMX/XYbz3x+bPgX+cDrqr2xq7n3QxHCErh1V/AL1c+hVimotZ1ugMMbBz19qquXe54vwNfHwJO35bsUpB0JIQQ3LZ/N3ooWiqpHCN52tjpsOSyluljnJIWxaNbAhTQ/JYpHrsxh66EGfu9kRsyBqlZ+8sZ+VqRF8ZPLBrK+shNDmR0VyPtD7+KsFbZDL37R6dDXA62DL2SbS+ox90nWLlSCf7rbPPYusSjBz58T6ZGL8EhowXeRTUW1LJwVRnJkkMNt0uOC8TEINRCkvlilXAY64ZtLWaVuyaeoW2dTUS15cyKJC3PcM2Z+fAhCjDIIxkrZVhAGVWHrJkXVrVz12OccqT/Fb25YzPpvrSA9NmT0HS/8NyVCn/8foIKQ952Xzof/fB7L5kbxiw3FPPP5kEK4gnXKNZe8zO319hOfA/UH3cvKqi5UzeHsdeTMuBDCkocFb3+1sYRjjad57JalI/7tusO1S2fh72PgZUdWfsUO+J/5Dl1N+ypbKak5yc3L5wwTvFvPnMPXl83msS2lvH9g5JbFptPd3Pt8AdHBfjx2Sx6+xgF5E0KwNieBL0qbBjJrejpUjczQOyVwmJq5qaiWpPAAFs0K7/e3F5SPza1T39ZJual93P33oAXfJepOdrK7vMVudo4t/j5G0mKD1ZW/rsg5dw6onO7kZVNS8CtM7RRVnxzxzgYgyM+HlKggx3MBbCnbCkl5qtmZGzRbvuDhgb5s+t653LhstvMWUsIiWHQjbH9iUDHW7Kgg1t19BlkJoXxUUj+wfXWhCtjm3+WZ9NG4BdBzGlqOu76v1Sq1h8EIeber/vzN6tjHGk+zfkcFt505h5XpMW4u2DERQX5cviiRN/dU0d49JHjbVqsK3no74cQXdvdfv6OcQF8jV+cmDXtNCMEvrs5hyewIfvDKXo446NXUa+7jgZd203Cqiydvz7cbX1uTk0C3uY8tBy2fa12RCtja+7+0Dq2xydQ53dXLJ4cbuCQnASEEyZGBxIX6U2AZ8ekuu0+0AJA/Vwv+lOIDi/9vJP+9lcyEMI7UNFuGnjjhzrGStloJS4dngkGeYsCV5cy5h47u0ulshaoCt905veY+vrt+D/Un1Rc8foS7Doec/6/qtn3brwc9LYTgnHkxFJxopqPb0t9/97PgEzC2YK0t8QvVT1fdOh3NSsjtWaVWlt6m7pwsFvXvPjyMv4+BBy6Y59ZSneHmM+fQ1tXLO/tsrPDebjVnuOukusBZXVE2tHX28Pbeaq5akkRogP1EgABfI0/elkegn5F7ny+wm/v+3+8f5IujTfzymoUsTo6we5y8OZHEhvoPBOer96if9v4vQ+JV7YyNhb/tcANdvX393wEhBPkpkWO28AtOmPDzMZCT5GIRnxtowXeBTQdqSYsNJiNudJdBVkIo/iePKUEZLUPHlrTVqq/H8c/cX+g4sKmolqyEUFKig0fdNishjOOjDUM5/rmyrtwU/N98cIjPShv5j2sWkjs7wq1jEJWmLPbdzw7LyFiVEUO3uY+dx03QdQr2vQo517l9NzKMuCxAuJ6pYw3YOrLwQQUg510Ce17gQEUjG/ZW882zU4kNtZ9V5gmWpUSSERfC+h02OfmbfgIV2+GqP0L2VdB4WLWstuHtvdW0d5u52UFbByuJ4YE8fkse5aZ2vv/3wkFZYG8VVvGXT49x51kp3LhstsNjGAyCixfEs/VQg/rbrClUwfNwO/sIAVGpg/4uNhXVEhXsxxk2lnh+SiQVpg7qT7qfaFFwopnFs8Idx5w8iBZ8J2lp7+bLsibWWG7nRiMrIZRsYfnjd8XCn7VM9WiZQm6dhrYudp1otltsZY+shFD6JBypG6GFQdlWld44e7nL63lnXzV/3lbGbSvm8LUzHH/BneLch1X/8y3/Oejp5alR+BoFn5c2QtEb0N029mCtLX7BqnDK1Uyd/r4vo3TozL8LTtXx8VvPERHkyzfPTXNjkc4jhODm5XPYU96iOqbueQF2/hVWfhcW3aCsaNkHtYMLC9fvKCc7MYwlyaNnPZ2ZFs3PrljA5pJ6/u9j1SqhuPokP3p9H8vnRvHTK0b/nq3NSaC928ynRxqheu/gCtuhRKX3W/jdvX18XFLPRdlx+NjEBvIsfvfdblr5nT1mDlSdnBD/PWjBd5qPrNF5J1waoNwamYZy+oSPyjN3Fh8/mLtqSgn+h8V1SOmcOwec7KlTtlVly/i4ZnUerD3Jw6/uIz8lkn+7woU7J0eEJsCKb8OB16BmX//TQX4+5M2J5LPSRhUAjc126+I0Iu60WKgpVBW19gK2tmRcTFdQAovr3uT+1RnDWoCMB9ctnYWfj4FPtmyCd76v0m0v/Ll60VozYL1gAfsrWzlQdZJbljsfe7njrBSuz0vmD5uP8OquCu59YRcRgX48fuvgIK0jVqRFExbgw0f7T0BDych3StHp0HwCzD18cbSRtq7eYUbPwqRw/HwMbufjF1W30m3u679wjDda8J3k/aJaEsMDWOyEJQKqrWyOsZIG/9kuixppq1Ufj5ax5TbbxXTM5d7p7xfVkhId1N8naDRSooMJ8DU49uOfrFb94F1057S293Dv8wWEBvjwxK15g1ozj4mVD0JABHz06KCnz86IQdbsU7EGTwVrbYnPURZkz+C8/+1lTbz0Vbn98YLVhZC0ZPjzQ5AGI29yAeca93FH9vim+lmJDPbja1n+XH34R/SFxMENz6hmcaDaFQTHDfLjv7SjnABfA1cvdb7oTgjBL69dyKJZ4Tz82j7qWrt44rY8p91Vfj4GLsyOp/LgTjUtbKRYSFS6cju2lLOpqJZgP+OwoLefj4ElyeHsclPwdx1X+2kLfwrR3q2i8866c0D9YeYYKznCyL5Ju4xnu+Rt/w0bHnK6d3prRw9fHm106dyNBsH8+FDH+clutEMeNKTjtrwRU0NdJjACzvk+lH6oYgsWVs2L4SbjFswGP88Fa22JW6DcHA0HAZVW+INX9nLTU9v513/s5/ntJwZv39Gi+rSPZJVa+LC4jv81rUAA/vtf9PjS7WLu4YdtvyJCnuTjJb+HYJuiNyGUuFos/FNdvbxdWMWVi5NcvvsI8DXy5O35LJwVxq+uX8TSOa6J5ZqcBFK6LX//I1r4qomaubGUD4vrOD8rzm79Ql5KJAeqWkeOWTmg4EQzc6ODHFbtexot+E6w7dDg6LxTdLYS21fPrs4k1wdBxy1Q8zU97dYx98AhS0HOQedG4m05WE+PWbp27kBm/AiZOmVbVXWjNVPFCX7/oRrS8fOrcsgfj/Lz5fcoK/SjX/QXCC2O9eFa42fsC1s9ugvFHSznL+uKeL2gkgt/u5W3Cqu4//x0LsyK49ENxew4ZpPy56jCdgjmPslvNh0iIDYFmXER7H5+WMXouPDBzwir+4rfBT7AE4fsBPcTc9WdXfdpNuyt5rQTwVpHzIoI5J3vnsN1ecmjbzyE8+bHssR4nHZjmKpncIQlNbOy9ACNp7odxrDy50TSY5YcqHKta6iUkt3lzRPmzgEt+E6xqaiWyCDfQdH5UbEMPdnXPYuaVhcj+P3tkrc6rE50i+Ofqb4+PgFOz0DdVFRLXKg/S13MhMlMCKXxVNfw3iVSqvNKPW/k7qE2vH+glse2lHLTGbO5Zbl7AjEqvoGw+sdQ8RUcfh8An4NvESo6+GuHZxu79ROVSp9PABs3f8QPXt1LWmwI7z54Dg+vyeL3N+UyJyqI77xYMNDqob/CduSA7T/2VHGk/hQPX5KJYdndqjPnkU3jcw5W9v4dvnoCVnyHuFV3UHCiefgdXn/g9gDrd5STlRDq8t+VJwj0M7IioJz9famM2BUhKBr8w6k/fgA/HwOrM+PsbtZfgOWiW+dEUzuNp7onzJ0DWvBHpbu3j48O1nPxgvhB0flRseRXH+qb7V7Hv7TVqkS+3gOj8KwcfAd8g1TmRFUBtI480aezx8zWQw1ckhPvco/u7ESVUzzsS99wSAmQk+4cNaSj0OkhHWMi9zZ1G//Ro9BnhoJ1tASn8m7rXMqbnOgN5ALdvX38cUsZRT1JRJ4+wi+vXcir957VH/AOC/Dlz7fn09Ft5r4XdtPVa1bukPDZg10lQ+jqNfP7Dw+zODlcWaTz1kBIwphm3o5KzV7Y8CCknA0XP8p1ecn4GQ2DUzSh331SXfIl+ypb7VbWTgi9XST3HKegJ4W9lS2OtxMCGZ2GbDrKORkxhPj72N0sOsSf1Jhgl/34E9UwzRYt+KPwZVkTbZ29Lrs0qCtC+oVSRYxzfWWGYm0o5im3Tl8flLyjSu8XWfzRB0celvHJ4QY6esyszUl0+e0GMnWGnLv1fJwQ/JOdPdzzXAGBfqrwZtzzlI0+cMFP1UV28yNQuZOe3DsAwedHGz32NjuPm7js/z7ltx8e5lT4fJYH1XLrmSnDLqrz4kP57deWsLeihUfeKrJU2I4csH1xezlVLR38aG2WElOjj6q8PfLh+CQBnG6Cl29T1vCN68DoS1SwH2sWJvDG7srBfu2wJAiOpfbgdvx9DFyT65kOqS5TV4RB9lIs04b31hlCa+AcEnurR/3+582JZPeJZpfctwXlzYT6+zDPiboeT6EFfxTeP6Ci86syXCxJry9GxOeQFB7oXnOliNnK2vSU4FcVKMs6+yqInQ8xmaP68d8vqiU80Jcz01y3QGJC/IkJ8ePQ0Lubsq0QmQqRKSPur4Z0FFJucn9Ih1tkX60s0S/+CEY/YlbeSUJYgErPHCOt7T385I193Pjkl3R0m3nmrjM466xzMbY3wKkGu/usXZjI/een8+7OQ6rP/Qj++1NdvTy2pZSzM2IG/70uvV393PP8mM9hEOZeeO1uOFUHX38eQgZGXt68fDYnO3t5b79N5a0QmBOWEGI6wOWLEx222B53LK4xvzlL2XSgdkSRLumKJUk0ctH8iBEPmZ8SSdPpbk64cCe4+0QzS1Mix3XC1VC04I+AlJLNJXWsdhCdH2FHlV8dv4CsxDD3u+mlrVZZIz0O2vW6QsnbYPBRFZgA2VeoYzuYulTf1smHxXVcmB3nVH6zPbISwgZb+D2dKo6QNrpP/Lkvj7O5pJ6fXbFgTEM6XMZggIseUb8vuBoRHM2qjBi+KG0c06zR9u5eLvu/T3llVyXfOieVD79/rpqHHGcpFhqhAOv7F2dyy5wWAI4YMxxu99dPyzCd7ubhNZmDX4hMUXd2ng7efvG/KpPsit/DrPxBL52VFs3c6KBhbp1DIp10Krktb/A85AmluhACIshbnMvxpnYOj1AguK0xFKOQRHWP3O9/2VzX/PitHT0cqmsj38UMo7GiBX8EWjt6aGjrcj2w1FoJXa0Qt4DMhFBK60/R3etGV8QF16gGW8Vvub6vLVKqIG3qeQOtAbKvVDnGQ9rogvIv3//ibnrMfdwzhgrNzIRQDte1DbQZLtmgKlYXXDPKciXrvjhOfkokd5w18p3AuJB2Plz9uOqoCazKiKa5vYfiGvemLwG8s6+GqpYO/nrHMv7f5QsG5gE7MQzFaBB8b4FqSXD/lj67ZfxNp7r4yydlXLowgSX2/l7z74K2aijd7PY5DMLcCzv+CukXqMErQ7BW3u483jyo4dlb9bEYhWSpX6Vn1uEONYWQlGtpgobDwTdHG06xvdUiyA6GoVjJiA0hNMDHaT9+YYUakbhsAhqm2aIFfwTKTer2bHaUi+1krYHW+IVkJYTS2ycpaxyhzYAj5p6tij/GGnCrL1b529lXDjyXmKsCgCXvDNv8P94tZufxZv77+sVkJbjf0CkzIZTOnr7+/0cK1il3zigDT74sa+J4Uzu3njlJQT0hVAMyS8qe1T3y+RjcOut3lJMeG8zqzCGWbUicSsEdpYlaYON+ekKSqOgK5tsv7h5mQDy+5SgdPWZ+cEmm/QPMX6sagnkqeFv6obqALPuGw02uz0/G1yhYb2mbXFx9krfrVbdVYU0xnWh6u9TFNTGXuLAA8uZE8v4B+4K/qaiWY9Liu3cw7tCKwSD6/fjOUHCiGYPA/sV5HNGCPwJWoZrjquBbv7xx2f3BS7fcOkIoy6z8S9U73V1KNgACsi4ffOysK1Qb3a6Btb2yq4LnvjzBt85J5eoxBtWslbkHa05C4xE48ZmaBTtKOub6HRWEBfhw2SLXg8XjQXxYAPPiQtz245fUnGRPeYvjrJS4BaP31KkpxDc5j9/cuJiCE808+s7A9pXN7byw/QQ35s923NjP6KsuYkc2jZqd5RQF69QFZP5ah5vEhPhzSU4Cr1uCty/vLKfJJ4a+oBi7nTMnhPpi1dDQEgtZm5NAcc1JKkzDfe+biuqYmzxLzbIYxcIH5cc/XN9Ga8foIxl3n2gmKyHMYebPeKEFfwTctvDritQQisAI0mJC8DUKSpwZCGKP3FvA4Ks6OrpLyTswZ4WyJm3JvgLMXf23+XsrWvjpmwdYmR7Nj9Zm2TmQa8yLC8UgLJk6BetUDCF3+O2/LU2nuth0oJbr8pI9NpXJE6zKiGHncZNb1ZQv7yjHz2jgekdFQv3DUBwcu/OkarWRmMsVi5O499w0Xthezt93Kv/4HzYfAQEPXTRK++O8O1Qe/J4XXD6HQbRWwpEP1AXEOHLg9Zblc2jt6OEfe6r4x+4qLl+UhMGm4nbCsb6vJUXUmn0z1K1T3dLB3ooW1ixMGNREbSTyUyKRUrlrRqLX3Mee8uYJzb+3ogV/BCpM7UQH+7l+Fa4v7vfN+vkYSI8NGZ6t4izBMUqYC19yb9at6RjU7VfW/FDmnAVBMVCygcZTXdz3QgGxIf48dkueazUHDgj0MzI3OpijNU1q/ZmXDb/oDOGN3VV0m/u4ebwKrNzk7IwYOnv6XO6K2NFt5o09VVy6KIHIYD/7G8XnqNGWpmP2X6+1NHWzWKUPr8nk7IwYfvZmEa/uquCN3ZXceVYKSRGjZDJFzlU+993POb64OMOeF9SFI++OUTc9Ky2alOggHt1QTFtXr/pcE3NVOwlPJCO4Sk2h6psUOReAOdFBZCeGDXPrfGA7/yE6fdAgFEfkzo7AIBh1IMqhujZOd5sn3H8PWvBHpNzU7rp139ut+n7btETOTBihr4wz5N+lKmRL3nZ934MWH322HcE3GCHzUuThD3johe2YTnfz59vziXIkTG6QmRBKXNWH0GEatb2wlJL1O8rJT4nsd4VNFc5Mi8JoEC778d/dX0NbZ+/IF7DRMnWGWKU+RgN/vHkpcWH+PPzaPoL9fPjOasfZO4PIvwtOVkLpR85tP5Q+s7pgpF/QL5ojYTAIbjpjDh09ZtJjg1W1elKuShioPeDeGsZCdaGqZbBxra3NSaCgvJn6tgGDalNRHfPiQtS4zKh09X82ygUq2N+H7MSwUQeiWP38eROcoQNa8Eek3NTuuv++8bDqwmcz9CQrIYzq1k5a20f37dll7rkq2OlOwK1kgxrn5+jLmX0VorsN3/JP+a/rFrHQZoi0J8hKCOOijo30hc9R2S8j8NUxE2WNp6ecdQ8QGuBL7uwIPiu1n8bqiPU7ykmLCebM1BFqGWJHGYZSUwhhswbluUcG+/Hn2/MJ9ffhwQvnOb57GErmZaprpbvB29LNcLLKpdkAN+QnE+rvw92rUlUMw9qwbKL9+L3d6u57SPHamoXxSKkazoFqYvfVsaaBYivruENHd2A25KdEUljeQq/ZcVZewYlm4kL9SY6coNoSG7TgO6DH3Ed1S6frgt+foWMr+JbArYN5nKNiMKhg54nPoeGw8/u11aoB0tlXOdzkrZMZtMlAHkw66FYjqtFYGtzISkMxdRlfdyJYW05ogA+XT5Fg7VBWZcSwv7LF6Qv3odo2Ck40j95CwC9IicpIFr6dro45SeHs+tlFfMuV1Fmjr0qjPPy+alPtKgXr1AUj8zKnd4kN9WfH/7uIW62N0sKTVWXuRPvx64vB3D2seC0zPpS50UFsKlKCv7mkjj7JQLO0fsF3zo9/uts84nd91wnlv5+MDDQt+A6oaenE3Cfdy9Ax+ELMQABtIFPH/Txucm9VQU9XgrcH3wWkff89cKCqlR++eYh9gctZ2v7l2Py6DlhS/xa90sCOiEtH3K75dDcb99dy3dJZBPpNnWCtLWdnxNAnVdqoM6y3BmvznbiQxi2wn5rZ1aYCtg4qbN1qN5F3h3Kp7HGxbfLJanWhWHrrqMHaoQT6GQcEzmrlT7SF3998LnfQ00II1uQk8EVpI60dPWw6UKvmWVhnzEZZB5o7J/jguACr7mQnlc0dkxKwBS34DhlThk7M/EFfiMTwAMICfNzrqWMlJE6lVRa+pHKJnaFkg/pjjcse9pLpdDf3Pl9AVLAfiy6+HdHeCOXb3V+fPXq7CTv0KlvIp7Bl5P71r++uVMFaN9vlTgS5syMI8jM65cfv7DHzxu5K1ixMcC4mEp+jXAZDZr6qKVzSqR74ThOVpmohXA3euhCsHZWkXNVRdiIDt9WF4B+uzn8IaxYm0Nsn2bC3mk9Lh8x/CAhTtRJOWPizIgKJD/N3KPhW/70W/ClGfw5+tBsunSEzbIUQw9sMuEP+XSr46Uxr445mOP6pKrYacuvYa+7ju+t303Cqiydvyyds4aVg9He6ZbLTHHoX0d7I5xFXjhi0tgZrl86JGFOh13jj52PgzNQopwR/44EaTnb2cvNyJ2fuxucAsn8YSj9Wq3SUHvguk38XtJbD0S3ObW8N1qattiuYLpOYq+4yRik48yg1hZC42O7kstzkCOJC/fmfDw7R3dvHmpz4wRtEpTtl4QshyE+JdCj4u0404+djICfJs7EyZ9GC74ByUzu+RkGCK5OVOppVQMvGf28lMyGUw7Vtrg9DsSV1NUSkOBdwO7xJBY9tq2st/HrTIT4vbeKX1yxUlX7+ISrr4uA7nu2/X7AOwufQmXwuB0c4953HmznaMDWDtUNZlRFDWeNpqlpGtkzXf1XB3OggznK2D5A1U2eoAFYXQmjSqOmsLpN1hUrJLXjGue2PfgytFZ4b5G69gFXv8czxRqO3W/3fOrhwGgzKrdPS3kN0sB/L5g4Jskc7J/igsm8qmzuos9MCo+BEM0uSwz03ntNFnHpXIcRaIcQhIUSpEOLHdl4PF0JsEELsFUIUCSHutjw/WwixRQhRYnn+IU+fwHhRYWonOTIIoyud7CxDT2wzdKxkJYbS1tU7qlCMiDV4e/zT0UcUlmxQQpGUN+jpt/dW89QnZdy+IoUbl9lYn9lXqC+0p/yqpjLVGTPvDjKTIjCd7qZh6DAUC+t3lBPq78MVi6dmsNaWs+eN3mahtL6NHcdNrvV7j0xVswqGZupY+r54HB8/VdR3aKMK7o9GwTp1gci8fNRNnSJ8NgRGTZwfv6FEBWxHcI1Zg7SX5MQP/95Hpalus12jt0ixXiyGtlno7DFTVN06PhPbnGRUwRdCGIHHgUuBBcDNQogFQza7HyiWUi4BVgO/FUL4Ab3AD6SU2cAK4H47+05J3MrBt1pn8cNPcaDNwBjdOrm3jR687W5XedZZlw/KjCmuPskPX9vLspRIfnbFkDXOvxSE0XNund3PqeMtvXXE9hIt7d28u7+Ga5bOGmgoNoXJjA8lJsRvRMFfv6MCX6NwLlhrxWBQsRbbTJ2uNtWSwpP+e1vy7rQEb0epvG2rVReGpbeqC4Un6J9xO0E9dawZQUmOp4WdmRrFXSvn8k9npw5/sT9TZ/QCrAWJYfj7GIY1Uttf1UqPWU6a/x6cs/CXA6VSyjIpZTfwMnD1kG0kECqUORMCmIBeKWWNlHI3gJSyDSgBJmnqgWuoHHwX82TriiAgXOVMD2F+/BhTM62ExkPmpVD4ouPg7dGPVOWmjTunpb2be1/YRXigL3+6LW/4LWVwNKSstNtMzWV6u5WIzF8LYUn9fnl7gv/G7iq6e6deZa0jhBCsyojh89JGuy6qzh4zr++u5JKcBNcHU1szdazHrd0PyPGx8AFiMmDuOZbg7QjdXPe8oC4MeXd69v0Tc5Xl7U4FuavUFIJ/mLqTcoCP0cDPr8ohI85O0Z81U8eJwK2fj4ElyRHD/Pi7jlsLriKcXbXHcUbwZwG2o3IqGS7ajwHZQDWwH3hISjnoL0gIMRdYCnxl702EEPcIIXYJIXY1NNgfBjFRtLb30NrR414OflyO3aBQaIAvsyICxx64BeVHbW9yPLGqZINq+JSyClBDrb+7fg+1rZ08cVs+caEO4hLZV6kh067k+tvj8EY1ntHi740K9iM21H9YPyFrsHbJ7AgWJE3dYO1QVmXE0Hiq2+7Fe1NRLS3tPe7N3o3PUZ/rqXr1eEiF7biQfxe0nIBjW+2/3ten7iZTzx2wcj1FUq6KM01E4NZaYevkHOVhWAPVzvrxUyIpqm4d1Hup4EQzqTHBRLtqCHgQZ87enhNyqGmzBigEkoBc4DEhRP83WAgRArwOfE9KaTcZXUr5lJRymZRyWWzsJA5HACqa3eiSaTP0xBHZiaFjy8W3knYBhM+xH7zt7Va50pmXqfF2wG8/OMSnRxp59OqFI5dzW7tpjjIJa1QK1qnmcRkXDhw6IZRDdYPPveBEM0fqT3GLs5ksUwRru+TPjgx367z0VTkprgRrbbEG+61unZpCNY82NN7hLmMm+0rlS3eUCFC2BVrKPRestaW/4nacA7fmHnVRGWU85Ij4h6jPwgmXDsCylEh6zJL9Va2AMm52T1LDNFucEfxKwPYbmYyy5G25G3hDKkqBY0AWgBDCFyX2L0op3xj7kscft3LwW8rVcA87GTpWMhNCOdpwWg2kHgsGg8qFPrZtuMVx/FPobO0vtnpvfw1/2nqUm5fPGd1tEj5LTS4aix+/+bjK6Mi7XfXqsZCVEMqRulODSs7X76ggxN+HKxYnuf9+k8CsiEDSYoKH+fGPNpziq2Mmbjpjjntj66zBfqvFW104fu4cKz7+Knh78N2BOwtbCtapqlgHxXtjImKOuhMd74rb+hLVFXYE/71TuJKpYxF2qxvneFM7ptPd00LwdwLzhBCplkDsTcDQLl7lwIUAQoh4IBMos/j0nwZKpJS/89yyxxe3BN/aUsFOho6VzIQwzH2So/WnHW7jNEtvVUHR3c8Nfr5kA/gGQ/r5HK5r419e3cvSORH8/ConY+VZV6hUOXcHXu9+DoRBtc61ITMhjK7ePo5bZn62tvfwzr5qrs5NIniCe4J7glUZMXx1zDRoEMnLO8rxMQhucCVYa0twtOoxX1esskEaD4+vO8dK/l3KtVI4pPK2rQ4OvacuCD7j4IaYqIpbBxW2LhOV5pQPH5QbMy0muN+Pv8vSQXPKC76Ushd4ANiECrq+IqUsEkLcJ4S4z7LZvwMrhRD7gY+AH0kpG4FVwO3ABUKIQss/55twTBLlpnYig3wJC3CyfPzEl/Dhv4HRz25Vq5Xs/p46HnDrhCWpoGjhi8qNA6o45uC7MO9iWnt9uOe5XQT7+/DkbfnOl+Bb++44ig+MhLlHBfjmXaL6pdiQNSRT583CKrqmUbB2KKsyYmjvNvf3Pu/qNfP67iouyYknNnQM4hifo1w64x2wtSVmHqScDQXPDg7eFr6oLgR5d43fe/dX3I5j4PbEFw4rbF0iOl3Fpjqd+/7mpUSyu7y5350TFuBDRqyDATUThFMRDCnle1LK+VLKdCnlLy3PPSmlfNLye7WU8hIp5SIp5UIp5QuW5z+TUgop5WIpZa7l33vjdzqeocLZLpkdzfD2g/DMWlUiftN6VYbtgLkxwfgZDWNPzbSSf5f6Azxk+S+t3Amn6+nLuoLvvbyHyuYO/nRrHvGuFI/FZKjuje64dQ6/D6fq7Pp7M+JCMBoEh2pP9gdrFyeHe7w750RxVlo0BkH/FKwPiuowne4e+wUsboEahlJVoB5PhIUP6jNrPgbHP1GPrcHaueeov4nxIjFXXVRGm/jlLp2tUPQm5FzjfsDWSrTl/8FJK39ZSiSm090cb2qn4EQzeSmR7rn6PIiutLXDqDn4UsL+1+Cx5cqiPesBuP8rmHfRiMf1NRpIjwvxTKYOqKBoWPJAwK1kAxj9+FNlGlsONfDIlQs4Y2jFoDNkXwnlX8BpF0f6FaxTxV4ZFw97KcDXyNzoIA7WtrGnooWDtW3T1roHCA/yZdGs8H4//vod5cyOCmRVeszYDhyfo/zNRW8o907YBBWjZV+p/OnWv6Vj21Q8ZjyCtbb0V9wWjs/x972iUpQ9cR4uNFGDAffNxwfrOVx3ivxJ6H8/FC34Q+g191HV3OHYwm8+Di/eAK//kwpy3rMF1vwS/IKdOn72WIeh2GIwquBt2RaVPVCygYbYFfzPJ7XcmJ/MbStS3Dtu1hWqSdYhF27Gmk+oYq+82/uzg4YdNlH1E1r/VTnBfkauXDK9grVDWZURQ2FFCweqWvniaJP7wVpbrC0WqgomzroH8A2AJbeoOoxTDUr4A6PGJ1hrS0SKmkA1Hn58KZWbKmHx2AO2AFGWHH4nM3XSY0MIC/Dhb5+pPvqT7b8HLfjDqGntpNdeW2RzD3z2B3h8heoqufa/4ZsfuZzqlZkQSu3JTlrauz2z4KW3qSDpxh9Bywkeq8lmcXI4/37NQvf7bScuUWmfrhRh7Xnesp7bHW6SFR9KuamdDfuquSp31oQPcPY0Z2fEYO6T/Mure/ExCG5c5oF5ArFZ6vOEifHf25J/pxrw/fkfVF+l3FvUhWA8EUL9vY2HhV+9W433zL/Lbm2My/gGqjtqJy18g0GQlxJJVUsHBoHqWzXJaMEfgnV6/SDBr9wFT62GzY+oJmP3fwUr7huUdugs1jYDHnPrhM+CeWvgyAeYMfC5cTlP3pY/tgHgQqjeOmVbnAtQmXstwdqLIcJxTr313Dt7+twrTJpi5KVE4u9j4GBtGxdlxzsuaHMF34ABX/FEWvgAsZkwZyV8+ZglWOvhylpHWAO3zrb9dpaCdao/0aIbPXfM6DQ1n8BJllms+uzEsCmRjTb5K/AUfWZ472FIPQdyrnX7MMNSMj/+JXzyGwhNhK+/aH82rAtY2wz87oPDpLjaetkB2Z3n8Q02sqtvPv9xx/mjD7N26qBXwvY/wWvfUL7kkehohrYauPy3I25mPfeFs8JYlDw9g7W2BPgaWZ4axadHGj3bxz9ugUrJnGgLH5Q1XP6FqtKOnT8x75mYq+4s6opgVt6omztF50nY/zosvH7ERAqXiUqH4jed3jw/OZjvGN/EJ/HrnlvDGPAewTcYofgt9YczRsH3MQgSwwNU5s0nv1Z+zGue8MgfTnyYP+fNj+VIXRuVloresbJdppNlyEfm3coqdyo87TH7TFVOX18y0AV0JOaeo+40RiA5MpDzM2OndbB2KDcvn4O/j4FzMsYYrLVl4XWAVEbGRLPgKuWeO/t7E/ee1gtbTaHnBP/Aa9BzGvLv9szxrESnKwOn3QRBoydEnHHw15zl+wotrY3AyEkdE4H3CD5YKuGcC6g4otzUzqzIQHyMBmi0HCvnWo9ZCUIInv3Gco8cazCXePZwBiPc6dmBKAaD4Jm7x+PcJ4/LFiVymadn8C64Wv2bDHwD4S4PNNBzhchU1XTQk378gnUQv8hzFxAr/U3UykYX/IJn8dn9DMRmEVH5saoHSFnp2fW4iHf58KPSnc6RdcSgHHxrcMbTTaM0Gs0A1sBtjYdaJVfvUcfKv9MzwVpbop1MzazcBe/9i4r5fXOz6sOz+ReeHTDkBt4l+NFpypc8dC6oCwzKwbdePKK04Gs040pirmpP0uuB7LWCdeATCIu/NvZjDSVyrsqiGsmwbKuDv9+uXHLXPw3+obD6R1CxXU2im0S8S/Btb7fcoK2zh+b2nsEWfnCsZ4M+Go1mOEm5aiKVtSeVu3S1qaLIhdcpN5Gn8fFXbUMcWfi93fDqncrPf9OLA26fpber1g4f/cK1wfEexrsE39nbLQdUmNT4wX7BN5Vp616jmQj6WyUXju04B16H7lPjWyE8kuv4g/8H5V/C1Y9BwqKB542+cMFP1QVt/2vjt7ZR8C7BtzZHctOPXz40B7/pqPbfazQTQVSaanA21sBtwTqV1pp8hidWZR9rcshQf3zhS7DjKdVqZdENw/dbcK2q+t3yH55xXbmBdwm+f6gKjriZqVNhm4PfdUoNLR5rhz2NRjM6QkDi4rFZ+NWFKmDrqcpaR0SlQ1ermk7W/957YMP3VCrzRb+wv5/BABc9omZnOBo4M854l+CD5errfCWcLeWmdsIDfQkP9B2IA2gLX6OZGJJyVfGVu9bv7mfBJ2B8grW2WCuhra7j043w8m0QEgc3POOwlxQA6ReqmpVPfq2MygnG+wTfhSEFQym3TcnUGToazcSSmKsCtw1OFPoNpesU7HtV1cwEjnOTMqsRaDqq2oq8ehe0N8LXX4DgUQrwhIALH1Ftzbc/Mb7rtIP3Cb6LQwpssZuDr106Gs3EYO1o6Y4fv+gNNWJ0vNs5gxrNKIxKIz78NzVW9Mr/db4VxuwzVPX+F/+nKnYnEO8T/Cibq68LmPsklc0dNjn4ZSqP1n9yJ9RoNDOGyFTwD3PPj1+wTnUanX2mp1c1HKMvRKaoIO32x2H5vbDkJteOccFPVTbRZxM7+dX7BN/N1My6k510m/sGW/janaPRTBwGg6q4rdzlWkVq7X41P2C8g7W2RKVDW7XqLrrml67vH5cNS26Gr56C1irPr88B3if4ka4NKbAyLCXTdFRV7mo0mokj/Xyo3QfrroDGI87tU/AsGP1h8QR2pJxzphre8rVnlcXvDqt/DEjY9iuPLm0kvE/w/YIgbJbLFv4gwe9sVXEAbeFrNBPLqn+GK/6grPYnVsLWX43cJ7+7Hfb9Xc2sdaJ7pcc492F4cI/KzHGXiDmw7J/ULImGw55b2wh4n+CDW5k6FaZ2jAZBYkSAbpqm0UwWBgMsuxse2KlmMmz9L3jybDj+uf3ti/4BXScnJlg7FDcGIA3jnB+oIS1b/mPsx3IC7xT86HS3LPykiAB8jYYBd5C28DWaySE0Hm74G9z6GvR2wrrL4K0Hhme1FKyDmPkw56xJWeaYCYlVlbnFb6k4xDjjnYIflQ4dJtXAyEnK7aZkpo7D4jQajdPMuxi+sx1WPaSyYh47A/a9ooK6dUVQuUONYpyoYO14cNb9EBQNHz067m/lnYLfn6njfOC2YmjRVViyGgah0WgmF79guPhRuHebSod841vwwnVq9KjRT2W7TGcCwuCcf4GyrXB0y7i+lXcKvou5+Ke7emk81T2Qg9+kM3Q0milHwiL4pw/hsv+Bip3Kf599FQR7aKznZLLsGxA+W7VPHschKd414tBK5FxAOO3Hr2i2k5K54JpxWZpGoxkDBiMs/xZkXa5aE0xGsHY88A2AC34G1btVzGKcvAveKfi+Aepq6aSFX95kI/jtFt+/ztDRaKYuYUlwyb9P9io8y5Kvq3/jiHe6dMClTJ1BOfg6Q0ej0Xgp3i34pqNO+cMqTO2EBviotsg6B1+j0Xgp3iv4UemqYtZ2SIEDrCmZQgh1kRAGSxxAo9FovAfvFXwXmqgNy8EPn62GFWs0Go0X4b2C72RqZl+fpKK5Y0jTNO3O0Wg03of3Cn5kysCQghGob+uiu7dP5eBLqYq1dMBWo9F4Id4r+EZf1Y1uFAt/UIbO6UY1nFhb+BqNxgvxXsEHp1IzB6dk6jm2Go3Ge/FuwY9KV3n1I6RmlpvaMQhIigjUKZkajcarcUrwhRBrhRCHhBClQogf23k9XAixQQixVwhRJIS429l9x5XodDU38lS9w00qTO0khgfi52OwpGQalStIo9FovIxRBV8IYQQeBy4FFgA3CyEWDNnsfqBYSrkEWA38Vgjh5+S+44cTmTrDUjIjU9wfWabRaDRTGGcs/OVAqZSyTErZDbwMXD1kGwmECiEEEAKYgF4n9x0/rB0vR/Djlw9ti6z99xqNxktxRvBnARU2jystz9nyGJANVAP7gYeklH1O7guAEOIeIcQuIcSuhoYGJ5c/CuFzwODj0MLv6DbT0NbFnGiblEztv9doNF6KM4Jvb5TM0CjoGqAQSAJygceEEGFO7quelPIpKeUyKeWy2NhYJ5blBEYf1SLBgYVvbYs8OyoITtVBz2lt4Ws0Gq/FGcGvBGbbPE5GWfK23A28IRWlwDEgy8l9xxdrpo4dBrVF7s/Q0YNPNBqNd+KM4O8E5gkhUoUQfsBNwNtDtikHLgQQQsQDmUCZk/uOL9EZDlMzBw0+0Tn4Go3Gyxl1AIqUslcI8QCwCTACf5NSFgkh7rO8/iTw78A6IcR+lBvnR1LKRgB7+47PqTggOg162qGtRg1NsKHc1E6Ivw+RQZa2yAZf1ThNo9FovBCnJl5JKd8D3hvy3JM2v1cDlzi774RitdibSocJfoWpndm2bZGjUpXfX6PRaLwQ7660hRHbJKuUTMvsSN00TaPReDneL/hhyWD0H5aaKaUcyMHv61N+fp2SqdFovBjvF3yDQblqmgZn6jSc6qKzp08Jfls19HZAlM7Q0Wg03ov3Cz5YUjMHW/gVli6ZyYNSMrWFr9FovJeZIfjRaWA6plw3FnRbZI1GM9OYGYIflQ7mLjhZ2f9UeVMHQsAsa1tknwAIs9v1QaPRaLyCmSH4djJ1yk3tJIQFEOBrVAHbyFTl79doNBovZWYonJ02ydYcfEBdCLT/XqPReDkzQ/BDE8EncFCmzkBKphmaj+kMHY1G4/XMDME3GJSgWyz8zh4ztSc7leC3VoK5W1v4Go3G65kZgg8qU8fiw69s7gB0ho5Go5lZzBzBj0qH5uNg7u3PwZ+tc/A1Gs0MYuYIfnQ69PVAa0V/Dv7sqECVoeMbpPz8Go1G48XMIMHPUD9NRyk3tRPoayQ2xF9Z+FFpIOwN59JoNBrvYeYIfn+b5LL+DJ3+tsjanaPRaGYAM0fwQ+LALwSaSgdy8M29yq+vA7YajWYGMHMEXwiISkNaXDpzooKg5QT09WoLX6PRzAhmjuADRKfT11hKe7dZDT6xDjfXFr5Go5kBzCzBj0rH0FqBD73MidYpmRqNZmYxswQ/Oh0hzcwWDQNFV36hEBw72SvTaDSacWdmCb7FdTNX1JIcabHwo3VKpkajmRnMLMG3uG4WBzZa2iIf1f57jUYzY5hZgh8UzWkRTLZ/A/R2Q0u59t9rNJoZw8wSfCEoJ4FUUatSMmWftvA1Gs2MYUYJflevmcO98ST0VusMHY1GM+OYUYJf1dzBcZlAWFct1BerJ7WFr9FoZggzSvDLTe0c60tA0AdHP4aAcAiKmuxlaTQazYQwowS/wtTOcZmgHpR/qax7nZKp0WhmCDNK8MtN7VQbk9SDvt6BlskajUYzA5hxgh8eFQeBFjeODthqNJoZxAwT/A7VUsEq9Dpgq9FoZhAzRvCllAN98K1CH502uYvSaDSaCcRnshcwUTS393Cqq1dZ+GSBwUdb+BqNZkYxYwTfOrh8TlQQpH8LUs+FwIjJXZRGo9FMIDPGpdMv+NFB4B8Cs/IneUUajUYzscwYwa+wCP7syKBJXolGo9FMDk4JvhBirRDikBCiVAjxYzuvPyyEKLT8OyCEMAshoiyv/bMQosjy/HohRICnT8IZypvaiQ31J9DPOBlvr9FoNJPOqIIvhDACjwOXAguAm4UQC2y3kVL+RkqZK6XMBX4CbJNSmoQQs4AHgWVSyoWAEbjJw+fgFP2DyzUajWaG4oyFvxwolVKWSSm7gZeBq0fY/mZgvc1jHyBQCOEDBAHV7i52LGjB12g0Mx1nBH8WUGHzuNLy3DCEEEHAWuB1ACllFfA/QDlQA7RKKT9wsO89QohdQohdDQ0Nzp+BE3T39lHT2qFy8DUajWaG4ozg2+suJh1seyXwuZTSBCCEiETdDaQCSUCwEOI2eztKKZ+SUi6TUi6LjfXsUPHqlg76JNrC12g0MxpnBL8SmG3zOBnHbpmbGOzOuQg4JqVskFL2AG8AK91Z6FgYlIOv0Wg0MxRnBH8nME8IkSqE8EOJ+ttDNxJChAPnAW/ZPF0OrBBCBAkhBHAhUDL2ZbuGFnyNRqNxotJWStkrhHgA2ITKsvmblLJICHGf5fUnLZteC3wgpTxts+9XQojXgN1AL7AHeMrD5zAqFaZ2/HwMxIX6T/RbazQazZTBqdYKUsr3gPeGPPfkkMfrgHV29n0EeMTtFXqAclM7syMDMRj0sBONRjNzmRGVtjolU6PRaGaA4EspKW/Sgq/RaDReL/itHT20dfXqHHyNRjPj8XrB1xk6Go1Go5g5gh+tBV+j0cxsZozg67bIGo1mpuP1gl9haicmxI9g/xkz3Euj0Wjs4vWCX24dXK7RaDQznBkh+Dpgq9FoNF4u+D3mPqpbOrXgazQaDV4u+DUtnZj7pA7YajQaDV4u+P0ZOtrC12g0mpkh+DoHX6PRaGaA4PsaBQlhAZO9FI1Go5l0vFrwK0ztJEcGYdRtkTUajca7BV/n4Gs0Gs0AXi/4c6ICJ3sZGo1GMyXwWsFvbe+htaNH5+BrNBqNBa8V/Ipm3RZZo9FobPHajmI6B1+j0Vjp6emhsrKSzs7OyV7KmAkICCA5ORlfX1+X99WCr9FovJ7KykpCQ0OZO3cuQkzfrD0pJU1NTVRWVpKamury/l7r0ik3tRMZ5EtYgOtXQY1G4110dnYSHR09rcUeQAhBdHS023cqXiv4FbpLpkajsWG6i72VsZyH1wq+zsHXaDSawXil4Pea+6hq7tAWvkajmVK8//77ZGZmkpGRwa9+9athr0spefDBB8nIyGDx4sXs3r3bo+/vlYJf09pJb5/Ugq/RaKYMZrOZ+++/n40bN1JcXMz69espLi4etM3GjRs5cuQIR44c4amnnuLb3/62R9fglVk6FSadg6/RaOzziw1FFFef9OgxFySF8ciVOSNus2PHDjIyMkhLSwPgpptu4q233mLBggX927z11lvccccdCCFYsWIFLS0t1NTUkJiY6JF1eqWFr1MyNRrNVKOqqorZs2f3P05OTqaqqsrlbcaCV1r45aZ2fAyCxHDdFlmj0QxmNEt8vJBSDntuaMaNM9uMBa+18GdFBuJj9MrT02g005Dk5GQqKir6H1dWVpKUlOTyNmPBKxVR5+BrNJqpxhlnnMGRI0c4duwY3d3dvPzyy1x11VWDtrnqqqt47rnnkFKyfft2wsPDPea/By926Vy6yHP/SRqNRjNWfHx8eOyxx1izZg1ms5lvfOMb5OTk8OSTTwJw3333cdlll/Hee++RkZFBUFAQzzzzjGfX4NGjTQHaOntobtdtkTUazdTjsssu47LLLhv03H333df/uxCCxx9/fNze3+tcOhWmDkCnZGo0Gs1QvE7wy3UOvkaj0djF6wS/QufgazQajV2cEnwhxFohxCEhRKkQ4sd2Xn9YCFFo+XdACGEWQkRZXosQQrwmhDgohCgRQpzl6ZOwpdzUTnigL+GBui2yRqPR2DKq4AshjMDjwKXAAuBmIcQC222klL+RUuZKKXOBnwDbpJQmy8v/C7wvpcwClgAlHlz/MMp1SqZGo9HYxRkLfzlQKqUsk1J2Ay8DV4+w/c3AegAhRBhwLvA0gJSyW0rZMqYVj4LOwddoNBr7OCP4s4AKm8eVlueGIYQIAtYCr1ueSgMagGeEEHuEEH8VQgQ72PceIcQuIcSuhoYGp0/AFnOfpLK5Q/vvNRrNlGS09sgvvvgiixcvZvHixaxcuZK9e/d69P2dEXx7jRyGN3xQXAl8buPO8QHygCeklEuB08CwGACAlPIpKeUyKeWy2NhYJ5Y1nLqTnXSb+7SFr9FophzOtEdOTU1l27Zt7Nu3j5/97Gfcc889Hl2DM4VXlcBsm8fJQLWDbW/C4s6x2bdSSvmV5fFrOBB8T6BTMjUazahs/DHU7vfsMRMWwaXDLXZbnGmPvHLlyv7fV6xYQWVlpUeX6YyFvxOYJ4RIFUL4oUT97aEbCSHCgfOAt6zPSSlrgQohRKblqQuB4qH7egot+BqNZqriauvjp59+mksvvdSjaxjVwpdS9gohHgA2AUbgb1LKIiHEfZbXn7Rsei3wgZTy9JBDfBd40XKxKAPu9tjqh1BhasdoECRG6LbIGo3GAaNY4uOFK62Pt2zZwtNPP81nn33m0TU41UtHSvke8N6Q554c8ngdsM7OvoXAMncX6ArlpnaSIgLw1W2RNRrNFMPZ1sf79u3jm9/8Jhs3biQ6Otqja/AqZdQ5+BqNZqriTHvk8vJyrrvuOp5//nnmz5/v8TV4VbfMClM7Fy+In+xlaDQazTCcaY/86KOP0tTUxHe+853+fXbt2uWxNQh7fqXJZtmyZdLVkzT3SR5+dS/nzI/h2qXJ47QyjUYzHSkpKSE7O3uyl+Ex7J2PEKJASjmi+9xrLHyjQfC7r+dO9jI0Go1myuJVPnyNRqPROEYLvkajmRFMRfe1O4zlPLTgazQarycgIICmpqZpL/pSSpqamggIcK/WyGt8+BqNRuOI5ORkKisrcbcx41QiICCA5GT3ElO04Gs0Gq/H19eX1NTUyV7GpKNdOhqNRjND0IKv0Wg0MwQt+BqNRjNDmJKVtkKIBuCEm7vHAI0eXM5k423nA953Tt52PuB95+Rt5wPDzylFSjni9KgpKfhjQQixa7Ty4umEt50PeN85edv5gPedk7edD7h3Ttqlo9FoNDMELfgajUYzQ/BGwX9qshfgYbztfMD7zsnbzge875y87XzAjXPyOh++RqPRaOzjjRa+RqPRaOygBV+j0WhmCF4j+EKItUKIQ0KIUiHEjyd7PZ5ACHFcCLFfCFEohPDcnLMJQgjxNyFEvRDigM1zUUKID4UQRyw/Iydzja7i4Jx+LoSosnxOhUKIyyZzja4ghJgthNgihCgRQhQJIR6yPD9tP6cRzmlafk5CiAAhxA4hxF7L+fzC8rzLn5FX+PCFEEbgMHAxUAnsBG6WUhZP6sLGiBDiOLBMSjktC0aEEOcCp4DnpJQLLc/9GjBJKX9luTBHSil/NJnrdAUH5/Rz4JSU8n8mc23uIIRIBBKllLuFEKFAAXANcBfT9HMa4Zy+xjT8nIQQAgiWUp4SQvgCnwEPAdfh4mfkLRb+cqBUSlkmpewGXgaunuQ1zXiklJ8ApiFPXw08a/n9WdQXcdrg4JymLVLKGinlbsvvbUAJMItp/DmNcE7TEqk4ZXnoa/knceMz8hbBnwVU2DyuZBp/wDZI4AMhRIEQ4p7JXoyHiJdS1oD6YgJxk7weT/GAEGKfxeUzbdwftggh5gJLga/wks9pyDnBNP2chBBGIUQhUA98KKV06zPyFsEXdp6b/r4qWCWlzAMuBe63uBM0U48ngHQgF6gBfjupq3EDIUQI8DrwPSnlyclejyewc07T9nOSUpqllLlAMrBcCLHQneN4i+BXArNtHicD1ZO0Fo8hpay2/KwH/oFyXU136iw+VquvtX6S1zNmpJR1li9kH/AXptnnZPELvw68KKV8w/L0tP6c7J3TdP+cAKSULcBWYC1ufEbeIvg7gXlCiFQhhB9wE/D2JK9pTAghgi0BJ4QQwcAlwIGR95oWvA3cafn9TuCtSVyLR7B+6SxcyzT6nCwBwaeBEinl72xemrafk6Nzmq6fkxAiVggRYfk9ELgIOIgbn5FXZOkAWFKs/gAYgb9JKX85uSsaG0KINJRVD2oU5UvT7ZyEEOuB1ag2rnXAI8CbwCvAHKAcuFFKOW2CoA7OaTXKTSCB48C9Vt/qVEcIcTbwKbAf6LM8/a8on/e0/JxGOKebmYafkxBiMSooa0QZ6a9IKR8VQkTj4mfkNYKv0Wg0mpHxFpeORqPRaEZBC75Go9HMELTgazQazQxBC75Go9HMELTgazQazQxBC75Go9HMELTgazQazQzh/wNeLEtTSUWB6QAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "hist = scores[0.0]\n", "plt.plot(hist['val_accuracy'], label=0.0)\n", "\n", "hist = scores[0.2]\n", "plt.plot(hist['val_accuracy'], label=0.2)\n", "\n", "plt.legend()\n", "#plt.plot(hist['accuracy'], label=('val=%s' % droprate))" ] }, { "cell_type": "markdown", "id": "e042866c", "metadata": {}, "source": [ "## 8.10 Data augmentation\n", "\n", "* Different data augmentations\n", "* Training a model with augmentations\n", "* How to select data augmentations?" ] }, { "cell_type": "code", "execution_count": 17, "id": "b689b785", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 3068 images belonging to 10 classes.\n", "Found 341 images belonging to 10 classes.\n" ] } ], "source": [ "train_gen = ImageDataGenerator(\n", " preprocessing_function=preprocess_input,\n", "# vertical_flip=True,\n", ")\n", "\n", "train_ds = train_gen.flow_from_directory(\n", " './clothing-dataset-small/train',\n", " target_size=(150, 150),\n", " batch_size=32\n", ")\n", "\n", "val_gen = ImageDataGenerator(preprocessing_function=preprocess_input)\n", "\n", "val_ds = val_gen.flow_from_directory(\n", " './clothing-dataset-small/validation',\n", " target_size=(150, 150),\n", " batch_size=32,\n", " shuffle=False\n", ")" ] }, { "cell_type": "code", "execution_count": 18, "id": "928cb784", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/50\n", "96/96 [==============================] - 19s 200ms/step - loss: 1.0738 - accuracy: 0.6346 - val_loss: 0.6670 - val_accuracy: 0.7859\n", "Epoch 2/50\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.6210 - accuracy: 0.7846 - val_loss: 0.5732 - val_accuracy: 0.8182\n", "Epoch 3/50\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.4573 - accuracy: 0.8387 - val_loss: 0.5620 - val_accuracy: 0.8182\n", "Epoch 4/50\n", "96/96 [==============================] - 15s 161ms/step - loss: 0.3637 - accuracy: 0.8797 - val_loss: 0.5376 - val_accuracy: 0.8094\n", "Epoch 5/50\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.2951 - accuracy: 0.9042 - val_loss: 0.5465 - val_accuracy: 0.8065\n", "Epoch 6/50\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.2348 - accuracy: 0.9283 - val_loss: 0.6016 - val_accuracy: 0.7918\n", "Epoch 7/50\n", "96/96 [==============================] - 16s 163ms/step - loss: 0.1910 - accuracy: 0.9446 - val_loss: 0.5404 - val_accuracy: 0.8299\n", "Epoch 8/50\n", "96/96 [==============================] - 16s 162ms/step - loss: 0.1439 - accuracy: 0.9589 - val_loss: 0.5493 - val_accuracy: 0.8182\n", "Epoch 9/50\n", "96/96 [==============================] - 16s 163ms/step - loss: 0.1177 - accuracy: 0.9690 - val_loss: 0.5867 - val_accuracy: 0.8328\n", "Epoch 10/50\n", "96/96 [==============================] - 16s 163ms/step - loss: 0.1066 - accuracy: 0.9736 - val_loss: 0.5887 - val_accuracy: 0.8240\n", "Epoch 11/50\n", "96/96 [==============================] - 16s 164ms/step - loss: 0.0842 - accuracy: 0.9821 - val_loss: 0.6101 - val_accuracy: 0.8240\n", "Epoch 12/50\n", "83/96 [========================>.....] - ETA: 1s - loss: 0.0721 - accuracy: 0.9832" ] }, { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 9\u001b[0m )\n\u001b[1;32m 10\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0mhistory\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrain_ds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mepochs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m50\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalidation_data\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mval_ds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)\u001b[0m\n\u001b[1;32m 823\u001b[0m \u001b[0mmax_queue_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmax_queue_size\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 824\u001b[0m \u001b[0mworkers\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mworkers\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 825\u001b[0;31m use_multiprocessing=use_multiprocessing)\n\u001b[0m\u001b[1;32m 826\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 827\u001b[0m def evaluate(self,\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training_v2.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, model, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)\u001b[0m\n\u001b[1;32m 340\u001b[0m \u001b[0mmode\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mModeKeys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTRAIN\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 341\u001b[0m \u001b[0mtraining_context\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtraining_context\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 342\u001b[0;31m total_epochs=epochs)\n\u001b[0m\u001b[1;32m 343\u001b[0m \u001b[0mcbks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmake_logs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mepoch_logs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtraining_result\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mModeKeys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTRAIN\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 344\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training_v2.py\u001b[0m in \u001b[0;36mrun_one_epoch\u001b[0;34m(model, iterator, execution_function, dataset_size, batch_size, strategy, steps_per_epoch, num_samples, mode, training_context, total_epochs)\u001b[0m\n\u001b[1;32m 126\u001b[0m step=step, mode=mode, size=current_batch_size) as batch_logs:\n\u001b[1;32m 127\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 128\u001b[0;31m \u001b[0mbatch_outs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mexecution_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0miterator\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 129\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mStopIteration\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mOutOfRangeError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 130\u001b[0m \u001b[0;31m# TODO(kaftan): File bug about tf function and errors.OutOfRangeError?\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training_v2_utils.py\u001b[0m in \u001b[0;36mexecution_function\u001b[0;34m(input_fn)\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0;31m# `numpy` translates Tensors to values in Eager mode.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 97\u001b[0m return nest.map_structure(_non_none_constant_value,\n\u001b[0;32m---> 98\u001b[0;31m distributed_function(input_fn))\n\u001b[0m\u001b[1;32m 99\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mexecution_function\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/eager/def_function.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 566\u001b[0m \u001b[0mxla_context\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mExit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 567\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 568\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 569\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 570\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtracing_count\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_tracing_count\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/eager/def_function.py\u001b[0m in \u001b[0;36m_call\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 597\u001b[0m \u001b[0;31m# In this case we have created variables on the first call, so we run the\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 598\u001b[0m \u001b[0;31m# defunned version which is guaranteed to never create variables.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 599\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_stateless_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# pylint: disable=not-callable\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 600\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_stateful_fn\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 601\u001b[0m \u001b[0;31m# Release the lock early so that multiple threads can perform the call\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 2361\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_lock\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2362\u001b[0m \u001b[0mgraph_function\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_maybe_define_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2363\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mgraph_function\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_filtered_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# pylint: disable=protected-access\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2364\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2365\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py\u001b[0m in \u001b[0;36m_filtered_call\u001b[0;34m(self, args, kwargs)\u001b[0m\n\u001b[1;32m 1609\u001b[0m if isinstance(t, (ops.Tensor,\n\u001b[1;32m 1610\u001b[0m resource_variable_ops.BaseResourceVariable))),\n\u001b[0;32m-> 1611\u001b[0;31m self.captured_inputs)\n\u001b[0m\u001b[1;32m 1612\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1613\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_call_flat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcaptured_inputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcancellation_manager\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py\u001b[0m in \u001b[0;36m_call_flat\u001b[0;34m(self, args, captured_inputs, cancellation_manager)\u001b[0m\n\u001b[1;32m 1690\u001b[0m \u001b[0;31m# No tape is watching; skip to running the function.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1691\u001b[0m return self._build_call_outputs(self._inference_function.call(\n\u001b[0;32m-> 1692\u001b[0;31m ctx, args, cancellation_manager=cancellation_manager))\n\u001b[0m\u001b[1;32m 1693\u001b[0m forward_backward = self._select_forward_and_backward_functions(\n\u001b[1;32m 1694\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py\u001b[0m in \u001b[0;36mcall\u001b[0;34m(self, ctx, args, cancellation_manager)\u001b[0m\n\u001b[1;32m 543\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 544\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"executor_type\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexecutor_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"config_proto\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconfig\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 545\u001b[0;31m ctx=ctx)\n\u001b[0m\u001b[1;32m 546\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 547\u001b[0m outputs = execute.execute_with_cancellation(\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/eager/execute.py\u001b[0m in \u001b[0;36mquick_execute\u001b[0;34m(op_name, num_outputs, inputs, attrs, ctx, name)\u001b[0m\n\u001b[1;32m 59\u001b[0m tensors = pywrap_tensorflow.TFE_Py_Execute(ctx._handle, device_name,\n\u001b[1;32m 60\u001b[0m \u001b[0mop_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 61\u001b[0;31m num_outputs)\n\u001b[0m\u001b[1;32m 62\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_NotOkStatusException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], "source": [ "learning_rate = 0.001\n", "size = 100\n", "droprate = 0.2\n", "\n", "model = make_model(\n", " learning_rate=learning_rate,\n", " size_inner=size,\n", " droprate=droprate\n", ")\n", "\n", "history = model.fit(train_ds, epochs=50, validation_data=val_ds)" ] }, { "cell_type": "code", "execution_count": 12, "id": "93d7729d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "hist = history.history\n", "plt.plot(hist['val_accuracy'], label='val')\n", "plt.plot(hist['accuracy'], label='train')\n", "\n", "plt.legend()" ] }, { "cell_type": "markdown", "id": "5beaea4b", "metadata": {}, "source": [ "## 8.11 Training a larger model\n", "\n", "* Train a 299x299 model" ] }, { "cell_type": "code", "execution_count": 19, "id": "b4c3abb4", "metadata": {}, "outputs": [], "source": [ "def make_model(input_size=150, learning_rate=0.01, size_inner=100,\n", " droprate=0.5):\n", "\n", " base_model = Xception(\n", " weights='imagenet',\n", " include_top=False,\n", " input_shape=(input_size, input_size, 3)\n", " )\n", "\n", " base_model.trainable = False\n", "\n", " #########################################\n", "\n", " inputs = keras.Input(shape=(input_size, input_size, 3))\n", " base = base_model(inputs, training=False)\n", " vectors = keras.layers.GlobalAveragePooling2D()(base)\n", " \n", " inner = keras.layers.Dense(size_inner, activation='relu')(vectors)\n", " drop = keras.layers.Dropout(droprate)(inner)\n", " \n", " outputs = keras.layers.Dense(10)(drop)\n", " \n", " model = keras.Model(inputs, outputs)\n", " \n", " #########################################\n", "\n", " optimizer = keras.optimizers.Adam(learning_rate=learning_rate)\n", " loss = keras.losses.CategoricalCrossentropy(from_logits=True)\n", "\n", " model.compile(\n", " optimizer=optimizer,\n", " loss=loss,\n", " metrics=['accuracy']\n", " )\n", " \n", " return model" ] }, { "cell_type": "code", "execution_count": 25, "id": "e5294b27", "metadata": {}, "outputs": [], "source": [ "input_size = 299" ] }, { "cell_type": "code", "execution_count": 38, "id": "2c2edbc5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 3068 images belonging to 10 classes.\n", "Found 341 images belonging to 10 classes.\n" ] } ], "source": [ "train_gen = ImageDataGenerator(\n", " preprocessing_function=preprocess_input,\n", " shear_range=10,\n", " zoom_range=0.1,\n", " horizontal_flip=True\n", ")\n", "\n", "train_ds = train_gen.flow_from_directory(\n", " './clothing-dataset-small/train',\n", " target_size=(input_size, input_size),\n", " batch_size=32\n", ")\n", "\n", "\n", "val_gen = ImageDataGenerator(preprocessing_function=preprocess_input)\n", "\n", "val_ds = train_gen.flow_from_directory(\n", " './clothing-dataset-small/validation',\n", " target_size=(input_size, input_size),\n", " batch_size=32,\n", " shuffle=False\n", ")" ] }, { "cell_type": "code", "execution_count": 39, "id": "49c3ebaf", "metadata": {}, "outputs": [], "source": [ "checkpoint = keras.callbacks.ModelCheckpoint(\n", " 'xception_v4_1_{epoch:02d}_{val_accuracy:.3f}.h5',\n", " save_best_only=True,\n", " monitor='val_accuracy',\n", " mode='max'\n", ")" ] }, { "cell_type": "code", "execution_count": 40, "id": "602bca1f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "Train for 96 steps, validate for 11 steps\n", "Epoch 1/50\n", "96/96 [==============================] - 78s 816ms/step - loss: 1.0387 - accuracy: 0.6793 - val_loss: 0.5567 - val_accuracy: 0.8211\n", "Epoch 2/50\n", "96/96 [==============================] - 77s 805ms/step - loss: 0.5472 - accuracy: 0.8214 - val_loss: 0.4331 - val_accuracy: 0.8622\n", "Epoch 3/50\n", "96/96 [==============================] - 74s 772ms/step - loss: 0.4525 - accuracy: 0.8491 - val_loss: 0.4360 - val_accuracy: 0.8504\n", "Epoch 4/50\n", "96/96 [==============================] - 75s 778ms/step - loss: 0.4000 - accuracy: 0.8605 - val_loss: 0.3728 - val_accuracy: 0.8856\n", "Epoch 5/50\n", "96/96 [==============================] - 75s 785ms/step - loss: 0.3586 - accuracy: 0.8853 - val_loss: 0.3832 - val_accuracy: 0.8768\n", "Epoch 6/50\n", "96/96 [==============================] - 75s 777ms/step - loss: 0.3261 - accuracy: 0.8934 - val_loss: 0.3828 - val_accuracy: 0.8827\n", "Epoch 7/50\n", "96/96 [==============================] - 75s 778ms/step - loss: 0.3105 - accuracy: 0.8957 - val_loss: 0.3707 - val_accuracy: 0.8768\n", "Epoch 8/50\n", "96/96 [==============================] - 74s 772ms/step - loss: 0.2857 - accuracy: 0.9055 - val_loss: 0.3801 - val_accuracy: 0.8592\n", "Epoch 9/50\n", "96/96 [==============================] - 74s 773ms/step - loss: 0.2686 - accuracy: 0.9058 - val_loss: 0.3884 - val_accuracy: 0.8563\n", "Epoch 10/50\n", "96/96 [==============================] - 74s 776ms/step - loss: 0.2575 - accuracy: 0.9143 - val_loss: 0.3733 - val_accuracy: 0.8710\n", "Epoch 11/50\n", "96/96 [==============================] - 75s 778ms/step - loss: 0.2372 - accuracy: 0.9208 - val_loss: 0.3582 - val_accuracy: 0.8680\n", "Epoch 12/50\n", "96/96 [==============================] - 74s 776ms/step - loss: 0.2231 - accuracy: 0.9250 - val_loss: 0.3572 - val_accuracy: 0.8798\n", "Epoch 13/50\n", "96/96 [==============================] - 75s 783ms/step - loss: 0.2075 - accuracy: 0.9289 - val_loss: 0.3355 - val_accuracy: 0.9032\n", "Epoch 14/50\n", "96/96 [==============================] - 74s 772ms/step - loss: 0.2042 - accuracy: 0.9325 - val_loss: 0.3347 - val_accuracy: 0.8915\n", "Epoch 15/50\n", "96/96 [==============================] - 76s 796ms/step - loss: 0.1941 - accuracy: 0.9312 - val_loss: 0.3390 - val_accuracy: 0.8886\n", "Epoch 16/50\n", "96/96 [==============================] - 74s 773ms/step - loss: 0.1773 - accuracy: 0.9439 - val_loss: 0.3915 - val_accuracy: 0.8768\n", "Epoch 17/50\n", "96/96 [==============================] - 76s 789ms/step - loss: 0.1729 - accuracy: 0.9420 - val_loss: 0.3564 - val_accuracy: 0.8915\n", "Epoch 18/50\n", "96/96 [==============================] - 75s 777ms/step - loss: 0.1632 - accuracy: 0.9439 - val_loss: 0.3387 - val_accuracy: 0.8944\n", "Epoch 19/50\n", "96/96 [==============================] - 75s 783ms/step - loss: 0.1548 - accuracy: 0.9462 - val_loss: 0.3415 - val_accuracy: 0.8768\n", "Epoch 20/50\n", "96/96 [==============================] - 74s 775ms/step - loss: 0.1484 - accuracy: 0.9527 - val_loss: 0.3625 - val_accuracy: 0.8651\n", "Epoch 21/50\n", "96/96 [==============================] - 75s 781ms/step - loss: 0.1395 - accuracy: 0.9557 - val_loss: 0.3616 - val_accuracy: 0.8739\n", "Epoch 22/50\n", "25/96 [======>.......................] - ETA: 51s - loss: 0.1452 - accuracy: 0.9583" ] }, { "ename": "KeyError", "evalue": "'val_accuracy'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training_v2.py\u001b[0m in \u001b[0;36mon_epoch\u001b[0;34m(self, epoch, mode)\u001b[0m\n\u001b[1;32m 766\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 767\u001b[0;31m \u001b[0;32myield\u001b[0m \u001b[0mepoch_logs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 768\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training_v2.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, model, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)\u001b[0m\n\u001b[1;32m 341\u001b[0m \u001b[0mtraining_context\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtraining_context\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 342\u001b[0;31m total_epochs=epochs)\n\u001b[0m\u001b[1;32m 343\u001b[0m \u001b[0mcbks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmake_logs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mepoch_logs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtraining_result\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mModeKeys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTRAIN\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training_v2.py\u001b[0m in \u001b[0;36mrun_one_epoch\u001b[0;34m(model, iterator, execution_function, dataset_size, batch_size, strategy, steps_per_epoch, num_samples, mode, training_context, total_epochs)\u001b[0m\n\u001b[1;32m 127\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 128\u001b[0;31m \u001b[0mbatch_outs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mexecution_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0miterator\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 129\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mStopIteration\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mOutOfRangeError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training_v2_utils.py\u001b[0m in \u001b[0;36mexecution_function\u001b[0;34m(input_fn)\u001b[0m\n\u001b[1;32m 97\u001b[0m return nest.map_structure(_non_none_constant_value,\n\u001b[0;32m---> 98\u001b[0;31m distributed_function(input_fn))\n\u001b[0m\u001b[1;32m 99\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/eager/def_function.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 567\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 568\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 569\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/eager/def_function.py\u001b[0m in \u001b[0;36m_call\u001b[0;34m(self, *args, **kwds)\u001b[0m\n\u001b[1;32m 598\u001b[0m \u001b[0;31m# defunned version which is guaranteed to never create variables.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 599\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_stateless_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# pylint: disable=not-callable\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 600\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_stateful_fn\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 2362\u001b[0m \u001b[0mgraph_function\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_maybe_define_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2363\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mgraph_function\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_filtered_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# pylint: disable=protected-access\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2364\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py\u001b[0m in \u001b[0;36m_filtered_call\u001b[0;34m(self, args, kwargs)\u001b[0m\n\u001b[1;32m 1610\u001b[0m resource_variable_ops.BaseResourceVariable))),\n\u001b[0;32m-> 1611\u001b[0;31m self.captured_inputs)\n\u001b[0m\u001b[1;32m 1612\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py\u001b[0m in \u001b[0;36m_call_flat\u001b[0;34m(self, args, captured_inputs, cancellation_manager)\u001b[0m\n\u001b[1;32m 1691\u001b[0m return self._build_call_outputs(self._inference_function.call(\n\u001b[0;32m-> 1692\u001b[0;31m ctx, args, cancellation_manager=cancellation_manager))\n\u001b[0m\u001b[1;32m 1693\u001b[0m forward_backward = self._select_forward_and_backward_functions(\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/eager/function.py\u001b[0m in \u001b[0;36mcall\u001b[0;34m(self, ctx, args, cancellation_manager)\u001b[0m\n\u001b[1;32m 544\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"executor_type\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexecutor_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"config_proto\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mconfig\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 545\u001b[0;31m ctx=ctx)\n\u001b[0m\u001b[1;32m 546\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/eager/execute.py\u001b[0m in \u001b[0;36mquick_execute\u001b[0;34m(op_name, num_outputs, inputs, attrs, ctx, name)\u001b[0m\n\u001b[1;32m 60\u001b[0m \u001b[0mop_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattrs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 61\u001b[0;31m num_outputs)\n\u001b[0m\u001b[1;32m 62\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_NotOkStatusException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: ", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m history = model.fit(train_ds, epochs=50, validation_data=val_ds,\n\u001b[0;32m---> 13\u001b[0;31m callbacks=[checkpoint])\n\u001b[0m", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)\u001b[0m\n\u001b[1;32m 823\u001b[0m \u001b[0mmax_queue_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmax_queue_size\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 824\u001b[0m \u001b[0mworkers\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mworkers\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 825\u001b[0;31m use_multiprocessing=use_multiprocessing)\n\u001b[0m\u001b[1;32m 826\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 827\u001b[0m def evaluate(self,\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training_v2.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, model, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)\u001b[0m\n\u001b[1;32m 395\u001b[0m total_epochs=1)\n\u001b[1;32m 396\u001b[0m cbks.make_logs(model, epoch_logs, eval_result, ModeKeys.TEST,\n\u001b[0;32m--> 397\u001b[0;31m prefix='val_')\n\u001b[0m\u001b[1;32m 398\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 399\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/contextlib.py\u001b[0m in \u001b[0;36m__exit__\u001b[0;34m(self, type, value, traceback)\u001b[0m\n\u001b[1;32m 97\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 98\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 99\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgen\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mthrow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtraceback\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 100\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mStopIteration\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mexc\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 101\u001b[0m \u001b[0;31m# Suppress StopIteration *unless* it's the same exception that\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/engine/training_v2.py\u001b[0m in \u001b[0;36mon_epoch\u001b[0;34m(self, epoch, mode)\u001b[0m\n\u001b[1;32m 769\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mModeKeys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTRAIN\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 770\u001b[0m \u001b[0;31m# Epochs only apply to `fit`.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 771\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcallbacks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_epoch_end\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mepoch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mepoch_logs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 772\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprogbar\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_epoch_end\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mepoch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mepoch_logs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 773\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/callbacks.py\u001b[0m in \u001b[0;36mon_epoch_end\u001b[0;34m(self, epoch, logs)\u001b[0m\n\u001b[1;32m 300\u001b[0m \u001b[0mlogs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlogs\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 301\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mcallback\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcallbacks\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 302\u001b[0;31m \u001b[0mcallback\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_epoch_end\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mepoch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlogs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 303\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 304\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mon_train_batch_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlogs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/callbacks.py\u001b[0m in \u001b[0;36mon_epoch_end\u001b[0;34m(self, epoch, logs)\u001b[0m\n\u001b[1;32m 990\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_save_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mepoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mepoch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlogs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlogs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 991\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 992\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_save_model\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mepoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mepoch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlogs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlogs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 993\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_in_multi_worker_mode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 994\u001b[0m \u001b[0;31m# For multi-worker training, back up the weights and current training\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/callbacks.py\u001b[0m in \u001b[0;36m_save_model\u001b[0;34m(self, epoch, logs)\u001b[0m\n\u001b[1;32m 1009\u001b[0m int) or self.epochs_since_last_save >= self.period:\n\u001b[1;32m 1010\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mepochs_since_last_save\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1011\u001b[0;31m \u001b[0mfilepath\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_file_path\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mepoch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlogs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1012\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1013\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/tensorflow2_p36/lib/python3.6/site-packages/tensorflow_core/python/keras/callbacks.py\u001b[0m in \u001b[0;36m_get_file_path\u001b[0;34m(self, epoch, logs)\u001b[0m\n\u001b[1;32m 1053\u001b[0m if not self.model._in_multi_worker_mode(\n\u001b[1;32m 1054\u001b[0m ) or multi_worker_util.should_save_checkpoint():\n\u001b[0;32m-> 1055\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfilepath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mepoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mepoch\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mlogs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1056\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1057\u001b[0m \u001b[0;31m# If this is multi-worker training, and this worker should not\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mKeyError\u001b[0m: 'val_accuracy'" ] } ], "source": [ "learning_rate = 0.0005\n", "size = 100\n", "droprate = 0.2\n", "\n", "model = make_model(\n", " input_size=input_size,\n", " learning_rate=learning_rate,\n", " size_inner=size,\n", " droprate=droprate\n", ")\n", "\n", "history = model.fit(train_ds, epochs=50, validation_data=val_ds,\n", " callbacks=[checkpoint])" ] }, { "cell_type": "markdown", "id": "a7ce7ef6", "metadata": {}, "source": [ "## 8.12 Using the model\n", "\n", "* Loading the model\n", "* Evaluating the model\n", "* Getting predictions" ] }, { "cell_type": "code", "execution_count": 3, "id": "54d9b615", "metadata": {}, "outputs": [], "source": [ "import tensorflow as tf\n", "from tensorflow import keras" ] }, { "cell_type": "code", "execution_count": 13, "id": "e2af9154", "metadata": {}, "outputs": [], "source": [ "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n", "from tensorflow.keras.preprocessing.image import load_img\n", "\n", "from tensorflow.keras.applications.xception import preprocess_input" ] }, { "cell_type": "code", "execution_count": 7, "id": "9a4b950e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 372 images belonging to 10 classes.\n" ] } ], "source": [ "test_gen = ImageDataGenerator(preprocessing_function=preprocess_input)\n", "\n", "test_ds = test_gen.flow_from_directory(\n", " './clothing-dataset-small/test',\n", " target_size=(299, 299),\n", " batch_size=32,\n", " shuffle=False\n", ")" ] }, { "cell_type": "code", "execution_count": 11, "id": "a9643701", "metadata": {}, "outputs": [], "source": [ "model = keras.models.load_model('xception_v4_1_13_0.903.h5')" ] }, { "cell_type": "code", "execution_count": 10, "id": "eda51aef", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "WARNING:tensorflow:sample_weight modes were coerced from\n", " ...\n", " to \n", " ['...']\n", "12/12 [==============================] - 8s 645ms/step - loss: 0.2939 - accuracy: 0.8978\n" ] }, { "data": { "text/plain": [ "[0.29389633300403756, 0.89784944]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.evaluate(test_ds)" ] }, { "cell_type": "code", "execution_count": 12, "id": "beaac061", "metadata": {}, "outputs": [], "source": [ "path = 'clothing-dataset-small/test/pants/c8d21106-bbdb-4e8d-83e4-bf3d14e54c16.jpg'" ] }, { "cell_type": "code", "execution_count": 15, "id": "b4e90085", "metadata": {}, "outputs": [], "source": [ "img = load_img(path, target_size=(299, 299))" ] }, { "cell_type": "code", "execution_count": 16, "id": "0cd31e72", "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 18, "id": "075f3ef2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 299, 299, 3)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = np.array(img)\n", "X = np.array([x])\n", "X.shape" ] }, { "cell_type": "code", "execution_count": 21, "id": "74f5e433", "metadata": {}, "outputs": [], "source": [ "X = preprocess_input(X)" ] }, { "cell_type": "code", "execution_count": 23, "id": "b27444d4", "metadata": {}, "outputs": [], "source": [ "pred = model.predict(X)" ] }, { "cell_type": "code", "execution_count": 25, "id": "9205e397", "metadata": {}, "outputs": [], "source": [ "classes = [\n", " 'dress',\n", " 'hat',\n", " 'longsleeve',\n", " 'outwear',\n", " 'pants',\n", " 'shirt',\n", " 'shoes',\n", " 'shorts',\n", " 'skirt',\n", " 't-shirt'\n", "]" ] }, { "cell_type": "code", "execution_count": 26, "id": "800b96ef", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'dress': -1.4282539,\n", " 'hat': -5.522186,\n", " 'longsleeve': -3.1655293,\n", " 'outwear': -2.201648,\n", " 'pants': 9.294684,\n", " 'shirt': -3.4289198,\n", " 'shoes': -4.2395606,\n", " 'shorts': 3.4339347,\n", " 'skirt': -4.194675,\n", " 't-shirt': -2.9939806}" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dict(zip(classes, pred[0]))" ] }, { "cell_type": "markdown", "id": "8263dbd8", "metadata": {}, "source": [ "## 8.13 Summary\n", "\n", "* We can use pre-trained models for general image classification\n", "* Convolutional layers let us turn an image into a vector\n", "* Dense layers use the vector to make the predictions\n", "* Instead of training a model from scratch, we can use transfer learning and re-use already trained convolutional layers\n", "* First, train a small model (150x150) before training a big one (299x299)\n", "* Learning rate - how fast the model trians. Fast learners aren't always best ones\n", "* We can save the best model using callbacks and checkpointing\n", "* To avoid overfitting, use dropout and augmentation" ] }, { "cell_type": "markdown", "id": "b5378439", "metadata": {}, "source": [ "## 8.14 Explore more\n", "\n", "* Add more data, e.g. Zalando, etc (ADD LINKS)\n", "* Albumentations - another way of generating augmentations\n", "* Use PyTorch or MXNet instead of TensorFlow/Keras\n", "* In addition to Xception, there are others architectures - try them \n", "\n", "Other projects:\n", "\n", "* cats vs dogs\n", "* Hotdog vs not hotdog\n", "* Category of images\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.5" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 08-deep-learning/pytorch/README.md ================================================ # Deep Learning with PyTorch Workshop * [Video](https://www.youtube.com/watch?v=Ne25VujHRLA) * [Notebook](https://colab.research.google.com/drive/1nCA4Q0f8DVFiLpfXdXvZtYUh-yYDy5i_?usp=sharing) This workshop introduces deep learning for image classification using PyTorch. It is based on the [ML Zoomcamp Deep Learning module (08-deep-learning)](..) but adapted to use PyTorch instead of TensorFlow/Keras. Before preparing this workshop, I asked Gemini (inside Google Colab) to translate my Keras code into PyTorch and [this is what happened](https://colab.research.google.com/drive/1_kvvbi_msBuTFkkdLxMEpB3mj-Jhh-Bc?usp=sharing). This workshop is based on the code from this notebook. ## Workshop Overview In this workshop, you will learn how to build an image classification model using PyTorch and transfer learning. We'll work with a clothing dataset and progressively improve our model through experimentation and optimization. ## Plan - Introduction to PyTorch for deep learning - Loading and preprocessing image data - Using pre-trained models (MobileNetV2) - Understanding convolutional neural networks (CNNs) - Transfer learning: adapting pre-trained models - Hyperparameter tuning: learning rate optimization - Model checkpointing: saving the best model - Adding more layers to improve performance - Dropout regularization to prevent overfitting - Data augmentation for better generalization - Training the final model - Using the model for predictions - Exporting models to ONNX format ## Prerequisites Tools: - PyTorch - torchvision - PIL (Pillow) - NumPy ## Setup We will use Google Colab, so no setup (like installing libraries or CUDA) is required. Download the dataset: ```bash git clone https://github.com/alexeygrigorev/clothing-dataset-small.git ``` The dataset contains: - 10 clothing categories (dress, hat, longsleeve, outwear, pants, shirt, shoes, shorts, skirt, t-shirt) - Training, validation, and test splits - Pre-organized directory structure ## 1. Introduction to PyTorch PyTorch is a popular open-source deep learning framework developed by Facebook's AI Research lab. It provides: - Dynamic computation graphs (define-by-run) - Pythonic API - Strong GPU acceleration - Rich ecosystem of tools and libraries Key Differences from TensorFlow/Keras: | TensorFlow/Keras | PyTorch | |------------------|---------| | `model.fit()` | Manual training loop | | `ImageDataGenerator` | `Dataset` + `DataLoader` + `transforms` | | `keras.layers.Dense()` | `nn.Linear()` | | `keras.Model` | `nn.Module` | | `.h5` or `.keras` files | `.pth` or `.pt` files | ## 2. PyTorch and Image Loading PyTorch is a popular open-source deep learning framework developed by Facebook's AI Research lab. Key differences from TensorFlow/Keras: - Dynamic computation graphs (define-by-run) - More Pythonic and flexible - Manual training loops instead of `model.fit()` - Explicit device management (CPU/GPU) ### Loading and Preprocessing Images Images are represented as 3D arrays: - Height × Width × Channels - Channels: RGB (Red, Green, Blue) - Each channel: 8 bits (0-255 values) ```python from PIL import Image import numpy as np # Load an image img = Image.open('clothing-dataset-small/train/pants/0098b991-e36e-4ef1-b5ee-4154b21e2a92.jpg') # Resize to target size img = img.resize((224, 224)) # Convert to numpy array x = np.array(img) print(x.shape) # (224, 224, 3) ``` ## 3. Pre-trained Models Instead of training from scratch, we'll use a model pre-trained on ImageNet (1.4M images, 1000 classes). Why use pre-trained models? - Already learned to recognize edges, textures, shapes - Saves training time - Works well even with small datasets - Better performance than training from scratch ### Using MobileNetV2 We'll use MobileNetV2 (in the original tutorial we used Xception): ```python import torch import torchvision.models as models from torchvision import transforms import numpy as np # Load pre-trained model model = models.mobilenet_v2(weights='IMAGENET1K_V1') model.eval() # Preprocessing for MobileNetV2 preprocess = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), ]) ``` Now do the prediction: ```python img = Image.open('clothing-dataset-small/train/pants/0098b991-e36e-4ef1-b5ee-4154b21e2a92.jpg') img_t = preprocess(img) batch_t = torch.unsqueeze(img_t, 0) # Make prediction with torch.no_grad(): output = model(batch_t) # Get top predictions _, indices = torch.sort(output, descending=True) ``` Let's see what's inside: ```python !wget https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt -O imagenet_classes.txt # Load ImageNet class names with open("imagenet_classes.txt", "r") as f: categories = [s.strip() for s in f.readlines()] # Get top 5 predictions top5_indices = indices[0, :5].tolist() top5_classes = [categories[i] for i in top5_indices] print("Top 5 predictions:") for i, class_name in enumerate(top5_classes): print(f"{i+1}: {class_name}") ``` Key concepts: - Input size: MobileNetV2 expects 224×224 images (Xception uses 299×299) - Normalization: Images scaled with ImageNet mean and std - Batch size: Number of images processed together - Batch dimension: Shape (batch_size, channels, height, width) - e.g., (1, 3, 224, 224) ## 4. Convolutional Neural Networks Convolutional Neural Networks (CNNs) are specialized neural networks for processing grid-like data such as images. Key Components: 1. Convolutional Layer: Extracts features using filters - Applies filters (e.g., 3×3, 5×5) to detect patterns - Creates feature maps (one per filter) - Detects edges, textures, shapes 2. ReLU Activation: Introduces non-linearity - `f(x) = max(0, x)` - Sets negative values to 0 - Helps network learn complex patterns 3. Pooling Layer: Down-samples feature maps - Reduces spatial dimensions - Max pooling: takes maximum value in a region - Makes features more robust to small translations 4. Fully Connected (Dense) Layer: Final classification - Flattens 2D feature maps to 1D vector - Connects to output classes CNN Workflow: ``` Input Image → Conv + ReLU → Pooling → Conv + ReLU → Pooling → Flatten → Dense → Output ``` ## 5. Transfer Learning Transfer Learning reuses a model trained on one task (ImageNet) for a different task (clothing classification). Approach: 1. Load pre-trained model (feature extractor) 2. Remove original classification head 3. Freeze convolutional layers 4. Add custom layers for our task 5. Train only the new layers ### Custom Dataset Class First, create a PyTorch `Dataset` to load images: ```python import os from torch.utils.data import Dataset from PIL import Image class ClothingDataset(Dataset): def __init__(self, data_dir, transform=None): self.data_dir = data_dir self.transform = transform self.image_paths = [] self.labels = [] self.classes = sorted(os.listdir(data_dir)) self.class_to_idx = {cls: i for i, cls in enumerate(self.classes)} for label_name in self.classes: label_dir = os.path.join(data_dir, label_name) for img_name in os.listdir(label_dir): self.image_paths.append(os.path.join(label_dir, img_name)) self.labels.append(self.class_to_idx[label_name]) def __len__(self): return len(self.image_paths) def __getitem__(self, idx): img_path = self.image_paths[idx] image = Image.open(img_path).convert('RGB') label = self.labels[idx] if self.transform: image = self.transform(image) return image, label ``` ### Simple Preprocessing ```python from torchvision import transforms input_size = 224 # ImageNet normalization values mean = [0.485, 0.456, 0.406] std = [0.229, 0.224, 0.225] # Simple transforms - just resize and normalize train_transforms = transforms.Compose([ transforms.Resize((input_size, input_size)), transforms.ToTensor(), transforms.Normalize(mean=mean, std=std) ]) val_transforms = transforms.Compose([ transforms.Resize((input_size, input_size)), transforms.ToTensor(), transforms.Normalize(mean=mean, std=std) ]) ``` ### Create DataLoaders ```python from torch.utils.data import DataLoader train_dataset = ClothingDataset( data_dir='./clothing-dataset-small/train', transform=train_transforms ) val_dataset = ClothingDataset( data_dir='./clothing-dataset-small/validation', transform=val_transforms ) train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True) val_loader = DataLoader(val_dataset, batch_size=32, shuffle=False) ``` ### Build the Model ```python import torch.nn as nn import torchvision.models as models class ClothingClassifierMobileNet(nn.Module): def __init__(self, num_classes=10): super(ClothingClassifierMobileNet, self).__init__() # Load pre-trained MobileNetV2 self.base_model = models.mobilenet_v2(weights='IMAGENET1K_V1') # Freeze base model parameters for param in self.base_model.parameters(): param.requires_grad = False # Remove original classifier self.base_model.classifier = nn.Identity() # Add custom layers self.global_avg_pooling = nn.AdaptiveAvgPool2d((1, 1)) self.output_layer = nn.Linear(1280, num_classes) def forward(self, x): x = self.base_model.features(x) x = self.global_avg_pooling(x) x = torch.flatten(x, 1) x = self.output_layer(x) return x ``` ### Train the Model ```python import torch import torch.optim as optim device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model = ClothingClassifierMobileNet(num_classes=10) model.to(device) optimizer = optim.Adam(model.parameters(), lr=0.01) criterion = nn.CrossEntropyLoss() ``` Now train it: ```python # Training loop num_epochs = 10 for epoch in range(num_epochs): # Training phase model.train() # Set the model to training mode running_loss = 0.0 correct = 0 total = 0 # Iterate over the training data for inputs, labels in train_loader: # Move data to the specified device (GPU or CPU) inputs, labels = inputs.to(device), labels.to(device) # Zero the parameter gradients to prevent accumulation optimizer.zero_grad() # Forward pass outputs = model(inputs) # Calculate the loss loss = criterion(outputs, labels) # Backward pass and optimize loss.backward() optimizer.step() # Accumulate training loss running_loss += loss.item() # Get predictions _, predicted = torch.max(outputs.data, 1) # Update total and correct predictions total += labels.size(0) correct += (predicted == labels).sum().item() # Calculate average training loss and accuracy train_loss = running_loss / len(train_loader) train_acc = correct / total # Validation phase model.eval() # Set the model to evaluation mode val_loss = 0.0 val_correct = 0 val_total = 0 # Disable gradient calculation for validation with torch.no_grad(): # Iterate over the validation data for inputs, labels in val_loader: # Move data to the specified device (GPU or CPU) inputs, labels = inputs.to(device), labels.to(device) # Forward pass outputs = model(inputs) # Calculate the loss loss = criterion(outputs, labels) # Accumulate validation loss val_loss += loss.item() # Get predictions _, predicted = torch.max(outputs.data, 1) # Update total and correct predictions val_total += labels.size(0) val_correct += (predicted == labels).sum().item() # Calculate average validation loss and accuracy val_loss /= len(val_loader) val_acc = val_correct / val_total # Print epoch results print(f'Epoch {epoch+1}/{num_epochs}') print(f' Train Loss: {train_loss:.4f}, Train Acc: {train_acc:.4f}') print(f' Val Loss: {val_loss:.4f}, Val Acc: {val_acc:.4f}') ``` It's a lower-level framework, that's why we need to implement some of these things like calculating accuracy on validation. The line `optimizer.zero_grad()` is crucial in the training loop. In PyTorch, gradients are accumulated by default. This means that if you don't zero the gradients before calculating the gradients for the current batch, the gradients from the previous batch will be added to the gradients of the current batch. This would lead to incorrect updates to your model's parameters. By calling `optimizer.zero_grad()`, you clear out the old gradients, ensuring that the gradients calculated during the `loss.backward()` call are only based on the current batch of data. This is essential for the optimizer to take the correct step during `optimizer.step()`. `model.train()` and `model.eval()` are needed to manage the behavior of certain layers during training and evaluation. `model.train()` sets the model to training mode. In training mode, layers like Dropout and BatchNorm behave differently. Dropout layers are active (randomly dropping neurons), and BatchNorm layers update their running statistics (mean and variance) based on the current batch. `model.eval()` sets the model to evaluation mode. In evaluation mode, Dropout layers are inactive (they pass through all neurons), and BatchNorm layers use their accumulated running statistics instead of the current batch statistics. This ensures consistent behavior during inference and prevents randomness from affecting the evaluation results. Let's put it inside a function so it's easier for us to call it: ```python def train_and_evaluate(model, optimizer, train_loader, val_loader, criterion, num_epochs, device): for epoch in range(num_epochs): # Training phase model.train() running_loss = 0.0 correct = 0 total = 0 for inputs, labels in train_loader: inputs, labels = inputs.to(device), labels.to(device) optimizer.zero_grad() outputs = model(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() running_loss += loss.item() _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() train_loss = running_loss / len(train_loader) train_acc = correct / total # Validation phase model.eval() val_loss = 0.0 val_correct = 0 val_total = 0 with torch.no_grad(): for inputs, labels in val_loader: inputs, labels = inputs.to(device), labels.to(device) outputs = model(inputs) loss = criterion(outputs, labels) val_loss += loss.item() _, predicted = torch.max(outputs.data, 1) val_total += labels.size(0) val_correct += (predicted == labels).sum().item() val_loss /= len(val_loader) val_acc = val_correct / val_total print(f'Epoch {epoch+1}/{num_epochs}') print(f' Train Loss: {train_loss:.4f}, Train Acc: {train_acc:.4f}') print(f' Val Loss: {val_loss:.4f}, Val Acc: {val_acc:.4f}') ``` ## 6. Tuning the Learning Rate The learning rate controls how much to update model weights during training. It's one of the most important hyperparameters. Analogy: Reading speed - Too fast: Skip details, poor understanding (may not converge) - Too slow: Never finish the book (training takes too long) - Just right: Good comprehension and efficiency Experimentation approach: 1. Try multiple values: `[0.0001, 0.001, 0.01, 0.1]` 2. Train for a few epochs each 3. Compare validation accuracy 4. Choose the rate with best performance and smallest train/val gap ```python def make_model(learning_rate=0.01): model = ClothingClassifierMobileNet(num_classes=10) model.to(device) optimizer = optim.Adam(model.parameters(), lr=learning_rate) return model, optimizer ``` Let's test different learning rates: ```python learning_rates = [0.0001, 0.001, 0.01, 0.1] for lr in learning_rates: print(f'\n=== Learning Rate: {lr} ===') model, optimizer = make_model(learning_rate=lr) train_and_evaluate(model, optimizer, train_loader, val_loader, criterion, num_epochs, device) ``` The best learning rate is 0.001 (accuracy 0.815). ## 7. Model Checkpointing Checkpointing saves the model during training to: - Keep the best performing model - Resume training if interrupted - Avoid losing progress Update the train function: ```python def train_and_evaluate_with_checkpointing(model, optimizer, train_loader, val_loader, criterion, num_epochs, device): best_val_accuracy = 0.0 # Initialize variable to track the best validation accuracy # exising code # Checkpoint the model if validation accuracy improved if val_acc > best_val_accuracy: best_val_accuracy = val_acc checkpoint_path = f'mobilenet_v2_{epoch+1:02d}_{val_acc:.3f}.pth' torch.save(model.state_dict(), checkpoint_path) print(f'Checkpoint saved: {checkpoint_path}') ``` TensorFlow/Keras equivalent: - Keras: `ModelCheckpoint` callback - PyTorch: Manual saving in training loop ## 8. Adding Inner Layers We can add intermediate dense layers between feature extraction and output: ```python class ClothingClassifierMobileNet(nn.Module): def __init__(self, size_inner=100, num_classes=10): super(ClothingClassifierMobileNet, self).__init__() self.base_model = models.mobilenet_v2(weights='IMAGENET1K_V1') for param in self.base_model.parameters(): param.requires_grad = False self.base_model.classifier = nn.Identity() self.global_avg_pooling = nn.AdaptiveAvgPool2d((1, 1)) self.inner = nn.Linear(1280, size_inner) # New inner layer self.relu = nn.ReLU() self.output_layer = nn.Linear(size_inner, num_classes) def forward(self, x): x = self.base_model.features(x) x = self.global_avg_pooling(x) x = torch.flatten(x, 1) x = self.inner(x) x = self.relu(x) x = self.output_layer(x) return x ``` Update `make_model`: ```python def make_model(learning_rate=0.001, size_inner=100): model = ClothingClassifierMobileNet( num_classes=10, size_inner=size_inner ) model.to(device) optimizer = optim.Adam(model.parameters(), lr=learning_rate) return model, optimizer ``` Experiment with different sizes: - Try: `size_inner = [10, 100, 1000]` - Larger layers: more capacity, may overfit - Smaller layers: faster, may underfit Key points: - Inner layer uses ReLU activation - Output layer has no activation (logits) - `CrossEntropyLoss` applies softmax internally ## 9. Dropout Regularization Dropout randomly drops neurons during training to prevent overfitting. How it works: - Training: randomly set fraction of activations to 0 - Inference: use all neurons (dropout disabled automatically) - Creates ensemble effect Benefits: - Prevents relying on specific features - Forces learning robust patterns - Reduces overfitting ```python class ClothingClassifierMobileNet(nn.Module): def __init__(self, size_inner=100, droprate=0.2, num_classes=10): super(ClothingClassifierMobileNet, self).__init__() self.base_model = models.mobilenet_v2(weights='IMAGENET1K_V1') for param in self.base_model.parameters(): param.requires_grad = False self.base_model.classifier = nn.Identity() self.global_avg_pooling = nn.AdaptiveAvgPool2d((1, 1)) self.inner = nn.Linear(1280, size_inner) self.relu = nn.ReLU() self.dropout = nn.Dropout(droprate) # Add dropout self.output_layer = nn.Linear(size_inner, num_classes) def forward(self, x): x = self.base_model.features(x) x = self.global_avg_pooling(x) x = torch.flatten(x, 1) x = self.inner(x) x = self.relu(x) x = self.dropout(x) # Apply dropout x = self.output_layer(x) return x ``` Update our function: ```python def make_model( learning_rate=0.001, size_inner=100, droprate=0.2 ): model = ClothingClassifierMobileNet( num_classes=10, size_inner=size_inner, droprate=droprate ) model.to(device) optimizer = optim.Adam(model.parameters(), lr=learning_rate) return model, optimizer ``` Experimentation: - Try: `droprate = [0.0, 0.2, 0.5, 0.8]` - Typical values: 0.2 to 0.5 - Higher dropout may need more training epochs (Our case: best droprate is 0.2) ## 10. Data Augmentation Data Augmentation artificially increases dataset size by applying random transformations to training images. Common transformations: - Rotation - Horizontal/vertical flipping - Zooming (random cropping) - Shifting - Shearing Important rules: - ✅ Apply ONLY to training data - ❌ Never augment validation/test data ### Augmented Training Transforms ```python # Training transforms WITH augmentation train_transforms = transforms.Compose([ transforms.RandomRotation(10), # Rotate up to 10 degrees transforms.RandomResizedCrop(224, scale=(0.9, 1.0)), # Zoom transforms.RandomHorizontalFlip(), # Horizontal flip transforms.ToTensor(), transforms.Normalize(mean=mean, std=std) ]) # Validation transforms - NO augmentation, same as before val_transforms = transforms.Compose([ transforms.Resize((224, 224)), transforms.ToTensor(), transforms.Normalize(mean=mean, std=std) ]) ``` When to use augmentation: 1. Small datasets 2. Risk of overfitting 3. Images can appear in different orientations Tips: - Choose augmentations that make sense for your data - Too much augmentation can hurt performance - Usually requires longer training (more epochs) - If no improvement after ~20 epochs, don't use it ## 11. Using the Trained Model ### Loading a Saved Model ```python import glob # Find best checkpoint list_of_files = glob.glob('mobilenet_v2_*.pth') latest_file = max(list_of_files, key=os.path.getctime) print(f"Loading model from: {latest_file}") # Load model model = ClothingClassifierMobileNet(size_inner=32, droprate=0.2, num_classes=10) model.load_state_dict(torch.load(latest_file)) model.to(device) model.eval() ``` ### Making Predictions ```python from keras_image_helper import create_preprocessor import numpy as np def preprocess_pytorch_style(X): # X: shape (1, 224, 224, 3), dtype=float32, values in [0, 255] X = X / 255.0 mean = np.array([0.485, 0.456, 0.406]).reshape(1, 3, 1, 1) std = np.array([0.229, 0.224, 0.225]).reshape(1, 3, 1, 1) # Convert NHWC → NCHW (batch, height, width, channels → batch, channels, height, width) X = X.transpose(0, 3, 1, 2) # Normalize X = (X - mean) / std return X.astype(np.float32) preprocessor = create_preprocessor(preprocess_pytorch_style, target_size=(224, 224)) # Predict from URL url = 'http://bit.ly/mlbookcamp-pants' X = preprocessor.from_url(url) X = torch.Tensor(X).to(device) with torch.no_grad(): pred = model(X).cpu().numpy()[0] classes = [ "dress", "hat", "longsleeve", "outwear", "pants", "shirt", "shoes", "shorts", "skirt", "t-shirt" ] result = dict(zip(classes, pred.tolist())) print(result) ``` ## 12. Exporting to ONNX ONNX (Open Neural Network Exchange) is a format for model interoperability. Benefits: - Deploy on different platforms - Use optimized runtimes (ONNX Runtime) - Better inference performance - Language-agnostic deployment ```python # Create dummy input dummy_input = torch.randn(1, 3, 224, 224).to(device) # Export to ONNX onnx_path = "clothing_classifier_mobilenet_v2.onnx" torch.onnx.export( model, dummy_input, onnx_path, verbose=True, input_names=['input'], output_names=['output'], dynamic_axes={ 'input': {0: 'batch_size'}, 'output': {0: 'batch_size'} } ) print(f"Model exported to {onnx_path}") ``` We will use it in the Serverless module. ## Summary ## TensorFlow/Keras vs PyTorch Quick Reference | Concept | TensorFlow/Keras | PyTorch | |---------|------------------|---------| | Framework | High-level API (Keras) on TensorFlow | Low-level, explicit control | | Data Loading | `ImageDataGenerator` | `Dataset` + `DataLoader` | | Transforms | `preprocessing_function` | `transforms.Compose()` | | Model | Functional API or Sequential | `nn.Module` class | | Layers | `keras.layers.Dense()` | `nn.Linear()` | | Training | `model.fit()` | Manual training loop | | Loss | `CategoricalCrossentropy` | `CrossEntropyLoss` | | Optimizer | `keras.optimizers.Adam` | `optim.Adam` | | Saving | `.h5` or `.keras` | `.pth` or `.pt` | | Checkpointing | `ModelCheckpoint` callback | Manual in training loop | | Device | Automatic | Explicit `.to(device)` | ## Key Concepts Learned 1. Transfer Learning: Reuse pre-trained models for new tasks 2. CNN Architecture: Conv layers → Pooling → Dense layers 3. Hyperparameter Tuning: Learning rate is critical 4. Regularization: Dropout prevents overfitting 5. Data Augmentation: Increases effective dataset size 6. Model Checkpointing: Save best models during training 7. PyTorch Workflow: Dataset → DataLoader → Model → Training Loop ## Best Practices 1. Start with pre-trained models (transfer learning) 2. Freeze convolutional layers initially 3. Use appropriate normalization (match pre-training) 4. Experiment with one hyperparameter at a time 5. Monitor train/val gap for overfitting 6. Use checkpointing to save best models 7. Augment training data only, not validation 8. Train longer with dropout and augmentation 9. Use GPU when available: `torch.cuda.is_available()` ## Next Steps - Try different pre-trained models (ResNet, EfficientNet) - Experiment with learning rate schedulers - Fine-tune the entire model (unfreeze convolutional layers) - Try different optimizers (SGD with momentum, AdamW) - Deploy the ONNX model (see [mlzoomcamp-serverless](../mlzoomcamp-serverless/)) - Explore the original [TensorFlow/Keras version](08-deep-learning/) ## Resources - [PyTorch Documentation](https://pytorch.org/docs/) - [torchvision Models](https://pytorch.org/vision/stable/models.html) - [ML Zoomcamp Course](https://github.com/DataTalksClub/machine-learning-zoomcamp) - [Original Tutorial (TensorFlow/Keras)](08-deep-learning/) - [ONNX Documentation](https://onnx.ai/) ## Credits This workshop is based on the ML Zoomcamp Deep Learning module by [Alexey Grigorev](https://github.com/alexeygrigorev), adapted to use PyTorch instead of TensorFlow/Keras. ================================================ FILE: 08-deep-learning/pytorch/install_pytorch.md ================================================ # **Complete PyTorch Installation Guide (GPU & CPU Support)** Hi 👋 This guide walks you through installing PyTorch with GPU acceleration using **uv**, a modern Python package manager. It also shows how to check your GPU, verify your installation, and fix common issues. Tested on Linux and WSL2. --- ## **Table of Contents** 1. [Prerequisites](#prerequisites) 2. [Step-by-Step Installation](#step-by-step-installation) * [Step 1: Check Your Graphics Card](#step-1-check-your-graphics-card) * [Step 2: Create an Environment](#step-2-create-an-environment) * [Step 3: Install PyTorch](#step-3-install-pytorch) * [Step 4: Verify Installation](#step-4-verify-installation) 3. [Troubleshooting Common Issues](#troubleshooting-common-issues) 4. [FAQs](#faqs) --- ## **Prerequisites** Before installing PyTorch, ensure your system meets the following requirements. ### **System Requirements** * **OS**: Linux, WSL2 (recommended for Windows), or macOS * **Shell**: bash, zsh, or similar * **Python**: 3.10+ * **Memory**: At least 8 GB RAM (16 GB recommended for deep learning) ### **GPU Requirements** * **NVIDIA GPU** with compute capability ≥ 3.5 * Recent **NVIDIA driver** installed * **AMD GPUs** supported via ROCm (check compatibility) * Integrated graphics are fine for CPU-only, but not recommended for serious training --- ## **Step-by-Step Installation** ### **Step 1: Check Your Graphics Card** First, identify your GPU and the maximum CUDA version your driver supports. ```bash nvidia-smi ``` Example output (shortened): ```shell +-----------------------------------------------------------------------------+ | NVIDIA-SMI 580.105.08 Driver Version: 580.105.08 CUDA Version: 13.0 | | 0 NVIDIA GeForce GTX 1650 On | 00000000:01:00.0 On | N/A | +-----------------------------------------------------------------------------+ ``` Key information to note: * **Driver Version** * **CUDA Version** (this is the *maximum* supported) * **GPU Model** > 💡 **Note:** PyTorch ships its own CUDA runtime – you do **not** need to install the system CUDA toolkit just to use PyTorch. Optional: check compute capability: ```bash nvidia-smi --query-gpu=compute_cap --format=csv ``` > 💡 **Note:** For the AMD versions, there is a similar command `amd-smi`, to accomplish the same effect as the NVIDIA system. --- ## **Step 2: Create an Environment** PyTorch should always be installed inside a **dedicated environment** to avoid dependency conflicts and keep your system clean. During the seminar, we used **uv**, a fast modern Python package manager. ### **Install uv** ```bash # Linux/macOS curl -LsSf https://astral.sh/uv/install.sh | sh # Windows (PowerShell) powershell -c "irm https://astral.sh/uv/install.ps1 | iex" ``` ### **Create and activate an isolated environment** ```bash uv venv pytorch-env source pytorch-env/bin/activate # Linux/macOS .\pytorch-env\Scripts\activate # Windows ``` Your environment is now ready for the PyTorch installation step. --- ## **Step 3: Install PyTorch** This is the core of the guide: choosing the **right PyTorch build** and installing it with `uv`. PyTorch offers several flavours: * **CUDA builds** (for NVIDIA GPUs) * **CPU-only builds** (no GPU required) * **ROCm builds** (for supported AMD GPUs) > **Recommendation:** Use the newest PyTorch CUDA version that is **≤ the CUDA version** shown by `nvidia-smi`. For most users, **CUDA 12.8** is the best, stable choice. ### **3.1 Choose your build** Use this decision flow: * **You have an NVIDIA GPU and want GPU acceleration** → Use the **CUDA 12.8 build**. * **You do not have a dedicated GPU / just want CPU** → Use the **CPU-only build**. * **You have a supported AMD GPU** → Use the **ROCm build** (check your model in AMD’s ROCm compatibility list). You can always check other combinations on the official PyTorch install page: [https://pytorch.org/get-started/locally/](https://pytorch.org/get-started/locally/) ### **3.2 Install with uv** All commands below assume your `uv` environment is already activated. #### **Install PyTorch (CUDA 12.8 — recommended)** ```bash uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128 ``` This installs: * `torch` (PyTorch core) * `torchvision` (vision utilities and models) * `torchaudio` (audio utilities) > **Other variants:** > > * **CPU-only:** replace `cu128` with `cpu` > * **AMD ROCm:** replace `cu128` with `rocm6.4` > * **Nightly build:** replace `download.pytorch.org/whl` with `download.pytorch.org/whl/nightly` > Example for nightly CUDA 12.8: > > ```bash > uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128 > ``` > > Check the PyTorch website for all supported builds. --- ## **Step 4: Verify Installation** Run this one-liner to confirm that PyTorch is installed and can see your GPU: ```bash python -c "import torch; print(f'CUDA available: {torch.cuda.is_available()}')" ``` If `CUDA available: True`, your GPU build is working. --- ## **Troubleshooting Common Issues** ### **CUDA not available** 1. Check `nvidia-smi` detects your GPU 2. Make sure you installed a **CUDA-enabled (cuXXX)** build, not CPU-only 3. Update your NVIDIA driver to a recent version ### **Out-of-memory errors (OOM)** * Reduce batch size * Use mixed precision (`torch.cuda.amp`) * Close other GPU-heavy applications ### **Python version issues** * If you encounter installation errors, recreate your `uv` environment with a **supported Python version** (e.g., 3.10 or 3.11). * Avoid the **very latest** Python release, as PyTorch support often lags behind new versions. * Downgrading Python is a valid and common solution when facing compatibility issues. ### **WSL2-specific issues** * Update WSL: `wsl --update` (from Windows) * Ensure GPU passthrough is enabled * Run `nvidia-smi` inside WSL to confirm access --- ## **FAQs** **• Which CUDA version should I choose?** Use the newest PyTorch CUDA build that is **≤ your driver’s max CUDA**. For most users, **CUDA 12.8** is ideal. **• Do I need to install the system CUDA toolkit?** No. PyTorch bundles its own CUDA runtime. Install system CUDA only if some *other* software requires it. **• PyTorch sees my GPU but training is slow — what can I do?** * Enable mixed precision (`torch.cuda.amp`) * Use `pin_memory=True` in your DataLoader * Increase batch size if VRAM allows * Set: ```python torch.set_float32_matmul_precision("high") ``` **• Does PyTorch support AMD GPUs?** Yes, via **ROCm**. Use the ROCm build and confirm your GPU is on AMD’s ROCm compatibility list. --- ## **Need More Help?** * **PyTorch Official Docs**: [https://pytorch.org/get-started/locally/](https://pytorch.org/get-started/locally/) * **uv Documentation**: [https://docs.astral.sh/uv/](https://docs.astral.sh/uv/) * **NVIDIA CUDA Docs**: [https://docs.nvidia.com/cuda/](https://docs.nvidia.com/cuda/) * **GitHub Issues (PyTorch)**: [https://github.com/pytorch/pytorch/issues](https://github.com/pytorch/pytorch/issues) --- *Last Updated: 02-12-2025* *GitHub Author: @mchadolias* ================================================ FILE: 09-serverless/01-intro.md ================================================ ## 9.1 Introduction to Serverless In the last session, we built and trained a clothes classification deep learning model using `Keras` and `TensorFlow`. This session focuses on deploying it. The model categorizes images of clothing items (e.g., 👕 t-shirts, 👖 pants, etc.) uploaded by users on a website. Deployment will be done using **AWS Lambda**, a serverless solution to execute code without managing servers, and instead of `TensorFlow`, we will use `TensorFlow-lite`. Refer to [updates.md](updates.md) for info on running TF lite in 2024. ## Notes Add notes from the video (PRs are welcome) * introduction to the topic of the week: deploying a deep learning model to the cloud, aws lambda and tensorflow lite
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/11/30/ml-zoomcamp-2023-serverless-part-1/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 9: Serverless Deep Learning](./) * Next: [AWS Lambda](02-aws-lambda.md) ================================================ FILE: 09-serverless/02-aws-lambda.md ================================================ ## 9.2 AWS Lambda AWS Lambda is a **serverless computing service** that lets you execute code without worrying about managing servers. Here's an overview of how it works and its benefits: ### **Setting Up a Lambda Function 🛠️** 1. **Accessing Lambda:** - Go to the AWS Management Console and search for the `Lambda` service. 2. **Creating a Function:** - Choose the `Author from scratch` option. - Name your function (e.g., `mlzoomcamp-test`). - Select the runtime environment (e.g., `Python 3.9`) and architecture (`x86_64`). 3. **Understanding Function Parameters:** - **`event`:** Contains the input data passed to the function (e.g., a JSON payload). - **`context`:** Provides details about the invocation, configuration, and execution environment. 4. **Updating the Default Function:** - Edit `lambda_function.py` with custom logic. Example: ```python def lambda_handler(event, context): print("Parameters:", event) # Print input parameters url = event["url"] # Extract URL from input return {"prediction": "clothes"} # Sample response ``` ### **Testing and Deployment 🚀** 1. **Create a Test Event:** - Define a mock input to simulate real-world data. 2. **Deploy Changes:** - Save and deploy the function to apply updates. 3. **Test Your Function:** - Run the function with the test event to ensure it works as expected. ### **Advantages of AWS Lambda ✅** - **Serverless Architecture 🖥️:** No need to provision or manage servers. - **Cost-Effective 💰:** Pay only for requests and compute time—idle time is free! - **Automatic Scaling 📈:** Adjusts automatically based on request volume. - **Ease of Use 🎯:** Focus on coding; AWS handles infrastructure. ### **Dynamic Link Management Use Case 🌐** `AWS lambda` was used to automatically redirect users to updated invite links for joining the DataTalks.Club community. This is to avoid expired links on the user side, by using a Lambda function that reads from a config file where invitation links can be update. ### Free Tier Usage Note that `AWS Lambda` offers a free tier that includes a certain number of free requests (1 million requests per month), and free compute time (400,000 GB-seconds per month). ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 9: Serverless Deep Learning](./) * Previous: [Introduction to Serverless](01-intro.md) * Next: [TensorFlow Lite](03-tensorflow-lite.md) ================================================ FILE: 09-serverless/03-tensorflow-lite.md ================================================ ## 9.3 TensorFlow Lite > Note: the materials in this unit are outdated. > > Refer to the [ONNX Workshop](workshop/) for the up-to-date materials. TensorFlow is a relatively large framework, with an unpacked size of approximately 1.7 GB. The size of such frameworks is an important consideration for several reasons: - **📜 Historical Constraints:** Previously, AWS Lambda imposed a limit of `50 MB` for package sizes. While Docker has since increased these limits to 10 GB, the size of the framework still plays a crucial role in certain scenarios. - **⚡ Performance Issues with Large Images:** Large frameworks like TensorFlow result in increased storage costs, longer initialization times (e.g., for invoking a Lambda function), slower loading times, and a significantly larger RAM footprint. ### Optimizing with TensorFlow Lite 🚀 To address these challenges, TensorFlow Lite (TF-Lite) provides a lightweight alternative designed specifically for inference tasks (i.e., making predictions with `model.predict(X)`), excluding any other functionality such as training. To use TensorFlow Lite, the original TensorFlow model needs to be converted into the TF-Lite format. This process can significantly reduce model size and improve performance. ## Notes New URL for downloading the model: ```bash wget https://github.com/DataTalksClub/machine-learning-zoomcamp/releases/download/chapter7-model/xception_v4_large_08_0.894.h5 -O clothing-model.h5 ``` Add notes from the video (PRs are welcome) * tensorflow has a size of approximately 1.7 GB * there are size limits of cloud services and docker container * tensorflow lite is small in size and limited to using a model to make predictions (inference) * convert tensorflow keras model to a tensorflow lite model
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/12/01/ml-zoomcamp-2023-serverless-part-2/) * [Notes from Peter Ernicke](https://knowmledge.com/2023/12/02/ml-zoomcamp-2023-serverless-part-3/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 9: Serverless Deep Learning](./) * Previous: [AWS Lambda](02-aws-lambda.md) * Next: [Preparing the code for Lambda](04-preparing-code.md) ================================================ FILE: 09-serverless/04-preparing-code.md ================================================ ## 9.4 Preparing the code for Lambda > Note: the materials in this unit are outdated. > > Refer to the [ONNX Workshop](workshop/) for the up-to-date materials. ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/12/03/ml-zoomcamp-2023-serverless-part-4/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 9: Serverless Deep Learning](./) * Previous: [TensorFlow Lite](03-tensorflow-lite.md) * Next: [Preparing a Docker image](05-docker-image.md) ================================================ FILE: 09-serverless/05-docker-image.md ================================================ ## 9.5 Preparing a Docker image > Note: the materials in this unit are outdated. > > Refer to the [ONNX Workshop](workshop/) for the up-to-date materials. ## Notes Refer to [updates.md](updates.md) for info on running TF lite in 2024. ### Using `pip install` for TF-Lite binaries When using `pip` to install the compiled binary, make sure you use the raw file, not a link to the github page. Correct: ```bash pip install https://github.com/alexeygrigorev/tflite-aws-lambda/raw/main/tflite/tflite_runtime-2.14.0-cp310-cp310-linux_x86_64.whl ``` (Note `/raw/` in the path) Also correct: ```bash pip install https://github.com/alexeygrigorev/tflite-aws-lambda/blob/main/tflite/tflite_runtime-2.14.0-cp310-cp310-linux_x86_64.whl?raw=true ``` The wheel file above is for Python 3.10. Check other available compiled TF lite versions [here](https://github.com/alexeygrigorev/tflite-aws-lambda/tree/main/tflite). Not correct - won't work: ```bash pip install https://github.com/alexeygrigorev/tflite-aws-lambda/blob/main/tflite/tflite_runtime-2.14.0-cp310-cp310-linux_x86_64.whl ``` If the file is incorrect, you'll get an error message like that: ``` zipfile.BadZipFile: File is not a zip file ``` ### `ENTRYPOINT` vs `CMD` This link explains the difference between them: https://stackoverflow.com/a/34245657 > `ENTRYPOINT` specifies a command that will always be executed when the container starts. > `CMD` specifies arguments that will be fed to the `ENTRYPOINT`. In case of the lambda base pacakge, the authors already specified the entrypoint and we only need to overwrite the arguments passed to the entrypoint,
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/12/04/ml-zoomcamp-2023-serverless-part-5/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 9: Serverless Deep Learning](./) * Previous: [Preparing the code for Lambda](04-preparing-code.md) * Next: [Creating the lambda function](06-creating-lambda.md) ================================================ FILE: 09-serverless/06-creating-lambda.md ================================================ ## 9.6 Creating the lambda function > Note: the materials in this unit are outdated. > > Refer to the [ONNX Workshop](workshop/) for the up-to-date materials. ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/12/05/ml-zoomcamp-2023-serverless-part-6/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 9: Serverless Deep Learning](./) * Previous: [Preparing a Docker image](05-docker-image.md) * Next: [API Gateway: exposing the lambda function](07-api-gateway.md) ================================================ FILE: 09-serverless/07-api-gateway.md ================================================ ## 9.7 API Gateway: exposing the lambda function ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* [Notes from Peter Ernicke](https://knowmledge.com/2023/12/06/ml-zoomcamp-2023-serverless-part-7/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 9: Serverless Deep Learning](./) * Previous: [Creating the lambda function](06-creating-lambda.md) * Next: [Summary](08-summary.md) ================================================ FILE: 09-serverless/08-summary.md ================================================ ## 9.8 Summary ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 9: Serverless Deep Learning](./) * Previous: [API Gateway: exposing the lambda function](07-api-gateway.md) * Next: [Explore more](09-explore-more.md) ================================================ FILE: 09-serverless/09-explore-more.md ================================================ ## 9.9 Explore more * Try similar serverless services from Google Cloud and Microsoft Azure * Deploy cats vs dogs and other Keras models with AWS Lambda * AWS Lambda is also good for other libraries, not just Tensorflow. You can deploy Scikit-Learn and XGBoost models with it as well ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 9: Serverless Deep Learning](./) * Previous: [Summary](08-summary.md) * Next: [Homework](homework.md) ================================================ FILE: 09-serverless/README.md ================================================ ## 9. Serverless Deep Learning Use the [workshop](workshop/) for most of the content. The content in the module still works, but most of it is outdated and doesn't work with newer version of Python. Check 9.1 and 9.2 for introduction, but for the rest of the module, use the workshop materials. Also, unit 9.7 could still be relevant. - 9.1 [Introduction to Serverless](01-intro.md) - 9.2 [AWS Lambda](02-aws-lambda.md) - (Outdated) 9.3 [TensorFlow Lite](03-tensorflow-lite.md) - (Outdated) 9.4 [Preparing the code for Lambda](04-preparing-code.md) - (Outdated) 9.5 [Preparing a Docker image](05-docker-image.md) - (Outdated) 9.6 [Creating the lambda function](06-creating-lambda.md) - 9.7 [API Gateway: exposing the lambda function](07-api-gateway.md) - 9.8 [Summary](08-summary.md) - 9.9 [Explore more](09-explore-more.md) - 9.10 [Homework](homework.md) ## Community notes Did you take notes? You can share them here (or in each unit separately) * [Alvaro Navas' Notes](https://github.com/ziritrion/ml-zoomcamp/blob/main/notes/09_serverless.md) * [Notes from froukje](https://github.com/froukje/ml-zoomcamp/blob/main/week9/Lecture_9_serverless.ipynb) * [Notes from Memoona Tahira](https://github.com/MemoonaTahira/MLZoomcamp2022/tree/main/Notes/Week_9-Serverless) * [Notes from Oscar Garcia](https://github.com/ozkary/machine-learning-engineering/tree/main/09-serverless) * [Notes from Peter Ernicke](https://knowmledge.com/category/courses/ml-zoomcamp/serverless-deployment/) * [Notes from Maximilien Eyengue](https://github.com/maxim-eyengue/Python-Codes/blob/main/ML_Zoomcamp_2024/09_serverless/Summary_Session_09.md) * Add your notes here ================================================ FILE: 09-serverless/code/Dockerfile ================================================ FROM public.ecr.aws/lambda/python:3.10 RUN pip install keras-image-helper RUN pip install https://github.com/alexeygrigorev/tflite-aws-lambda/raw/main/tflite/tflite_runtime-2.14.0-cp310-cp310-linux_x86_64.whl COPY clothing-model.tflite . COPY lambda_function.py . CMD [ "lambda_function.lambda_handler" ] ================================================ FILE: 09-serverless/code/convert-model.py ================================================ import tensorflow as tf from tensorflow import keras model = keras.models.load_model('clothing-model.h5') converter = tf.lite.TFLiteConverter.from_keras_model(model) tflite_model = converter.convert() with open('clothing-model.tflite', 'wb') as f_out: f_out.write(tflite_model) ================================================ FILE: 09-serverless/code/lambda_function.py ================================================ #!/usr/bin/env python # coding: utf-8 import tflite_runtime.interpreter as tflite from keras_image_helper import create_preprocessor preprocessor = create_preprocessor('xception', target_size=(299, 299)) interpreter = tflite.Interpreter(model_path='clothing-model.tflite') interpreter.allocate_tensors() input_index = interpreter.get_input_details()[0]['index'] output_index = interpreter.get_output_details()[0]['index'] classes = [ 'dress', 'hat', 'longsleeve', 'outwear', 'pants', 'shirt', 'shoes', 'shorts', 'skirt', 't-shirt' ] # url = 'http://bit.ly/mlbookcamp-pants' def predict(url): X = preprocessor.from_url(url) interpreter.set_tensor(input_index, X) interpreter.invoke() preds = interpreter.get_tensor(output_index) float_predictions = preds[0].tolist() return dict(zip(classes, float_predictions)) def lambda_handler(event, context): url = event['url'] result = predict(url) return result ================================================ FILE: 09-serverless/code/plan.md ================================================ # 9. Serverless Deep Learning We'll deploy the clothes classification model we trained previously. ## 9.1 Introduction to Serverless * What we'll cover this week ## 9.2 AWS Lambda * Intro to AWS Lambda * Serverless vs serverfull ## 9.3 TensorFlow Lite * Why not TensorFlow * Converting the model * Using the TF-Lite model for making predictions ## 9.4 Preparing the Lambda code * Moving the code from notebook to script * Testing it locally ## 9.5 Preparing a Docker image * Lambda base images * Preparing the Dockerfile * Using the right TF-Lite wheel ## 9.6 Creating the lambda function * Publishing the image to AWS ECR * Creating the function * Configuring it * Testing the function from the AWS Console * Pricing ## 9.7 API Gateway: exposing the lambda function * Creating and configuring the gateway ## 9.8 Summary * AWS Lambda is way of deploying models without having to worry about servers * Tensorflow Lite is a lightweight alternative to Tensorflow that only focuses on inference * To deploy your code, package it in a Docker container * Expose the lambda function via API Gateway ## 9.9 Explore more * Try similar serverless services from Google Cloud and Microsoft Azure * Deploy cats vs dogs and other Keras models with AWS Lambda * AWS Lambda is also good for other libraries, not just Tensorflow. You can deploy Scikit-Learn and XGBoost models with it as well. ================================================ FILE: 09-serverless/code/tensorflow-model.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "id": "37a8e270", "metadata": {}, "outputs": [ { "data": { "application/javascript": "IPython.notebook.set_autosave_interval(0)" }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Autosave disabled\n" ] } ], "source": [ "%autosave 0" ] }, { "cell_type": "code", "execution_count": 2, "id": "2c240107", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2021-11-20 22:29:34-- https://github.com/alexeygrigorev/mlbookcamp-code/releases/download/chapter7-model/xception_v4_large_08_0.894.h5\n", "Resolving github.com (github.com)... 140.82.121.4\n", "Connecting to github.com (github.com)|140.82.121.4|:443... connected.\n", "HTTP request sent, awaiting response... 302 Found\n", "Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/256401220/0156a400-0049-11eb-8490-c0d01b48ea8c?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20211120%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20211120T222934Z&X-Amz-Expires=300&X-Amz-Signature=2b0ca2655863a50c3ce11098e1da1b35da810a1b4c0cef1cc509ab75688512d1&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=256401220&response-content-disposition=attachment%3B%20filename%3Dxception_v4_large_08_0.894.h5&response-content-type=application%2Foctet-stream [following]\n", "--2021-11-20 22:29:34-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/256401220/0156a400-0049-11eb-8490-c0d01b48ea8c?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20211120%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20211120T222934Z&X-Amz-Expires=300&X-Amz-Signature=2b0ca2655863a50c3ce11098e1da1b35da810a1b4c0cef1cc509ab75688512d1&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=256401220&response-content-disposition=attachment%3B%20filename%3Dxception_v4_large_08_0.894.h5&response-content-type=application%2Foctet-stream\n", "Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.111.133, 185.199.108.133, 185.199.109.133, ...\n", "Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.111.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 86185888 (82M) [application/octet-stream]\n", "Saving to: ‘clothing-model.h5’\n", "\n", "clothing-model.h5 100%[===================>] 82.19M 75.8MB/s in 1.1s \n", "\n", "2021-11-20 22:29:38 (75.8 MB/s) - ‘clothing-model.h5’ saved [86185888/86185888]\n", "\n" ] } ], "source": [ "!wget https://github.com/DataTalksClub/machine-learning-zoomcamp/releases/download/chapter7-model/xception_v4_large_08_0.894.h5 -O clothing-model.h5" ] }, { "cell_type": "code", "execution_count": 1, "id": "4d77b177", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python 3.9.7\n" ] } ], "source": [ "!python -V" ] }, { "cell_type": "code", "execution_count": 2, "id": "76f422a7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'2.7.0'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "\n", "import tensorflow as tf\n", "from tensorflow import keras\n", "\n", "tf.__version__" ] }, { "cell_type": "code", "execution_count": 3, "id": "7cff12e6", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "--2022-05-31 16:28:06-- http://bit.ly/mlbookcamp-pants\n", "Resolving bit.ly (bit.ly)... 67.199.248.10, 67.199.248.11\n", "Connecting to bit.ly (bit.ly)|67.199.248.10|:80... connected.\n", "HTTP request sent, awaiting response... 301 Moved Permanently\n", "Location: https://raw.githubusercontent.com/alexeygrigorev/clothing-dataset-small/master/test/pants/4aabd82c-82e1-4181-a84d-d0c6e550d26d.jpg [following]\n", "--2022-05-31 16:28:06-- https://raw.githubusercontent.com/alexeygrigorev/clothing-dataset-small/master/test/pants/4aabd82c-82e1-4181-a84d-d0c6e550d26d.jpg\n", "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n", "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 23048 (23K) [image/jpeg]\n", "Saving to: 'pants.jpg'\n", "\n", " 0K .......... .......... .. 100% 2.07M=0.01s\n", "\n", "2022-05-31 16:28:06 (2.07 MB/s) - 'pants.jpg' saved [23048/23048]\n", "\n" ] } ], "source": [ "!wget http://bit.ly/mlbookcamp-pants -O pants.jpg" ] }, { "cell_type": "code", "execution_count": 4, "id": "e81115e9", "metadata": {}, "outputs": [], "source": [ "from tensorflow.keras.preprocessing.image import load_img\n", "from tensorflow.keras.applications.xception import preprocess_input" ] }, { "cell_type": "code", "execution_count": 5, "id": "d911b5ea", "metadata": {}, "outputs": [], "source": [ "model = keras.models.load_model('clothing-model.h5')" ] }, { "cell_type": "code", "execution_count": 6, "id": "51863ac5", "metadata": {}, "outputs": [], "source": [ "img = load_img('pants.jpg', target_size=(299, 299))\n", "\n", "x = np.array(img)\n", "X = np.array([x])\n", "\n", "X = preprocess_input(X)" ] }, { "cell_type": "code", "execution_count": 7, "id": "9c759646", "metadata": {}, "outputs": [], "source": [ "preds = model.predict(X)" ] }, { "cell_type": "code", "execution_count": 8, "id": "ae8e063e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-1.8682919, -4.761245 , -2.3169832, -1.0625719, 9.887158 ,\n", " -2.812432 , -3.6662836, 3.200363 , -2.6023405, -4.835046 ]],\n", " dtype=float32)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "preds" ] }, { "cell_type": "code", "execution_count": 9, "id": "09565d86", "metadata": {}, "outputs": [], "source": [ "classes = [\n", " 'dress',\n", " 'hat',\n", " 'longsleeve',\n", " 'outwear',\n", " 'pants',\n", " 'shirt',\n", " 'shoes',\n", " 'shorts',\n", " 'skirt',\n", " 't-shirt'\n", "]" ] }, { "cell_type": "code", "execution_count": 10, "id": "17c956c3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'dress': -1.8682919,\n", " 'hat': -4.761245,\n", " 'longsleeve': -2.3169832,\n", " 'outwear': -1.0625719,\n", " 'pants': 9.887158,\n", " 'shirt': -2.812432,\n", " 'shoes': -3.6662836,\n", " 'shorts': 3.200363,\n", " 'skirt': -2.6023405,\n", " 't-shirt': -4.835046}" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dict(zip(classes, preds[0]))" ] }, { "cell_type": "markdown", "id": "50149c7f", "metadata": {}, "source": [ "## Convert Keras to TF-Lite" ] }, { "cell_type": "code", "execution_count": 20, "id": "898dc5cf", "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2021-11-20 22:42:03.897442: W tensorflow/python/util/util.cc:368] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Assets written to: /tmp/tmp1igj75zx/assets\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2021-11-20 22:42:32.793557: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:363] Ignored output_format.\n", "2021-11-20 22:42:32.793604: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:366] Ignored drop_control_dependency.\n", "2021-11-20 22:42:32.794886: I tensorflow/cc/saved_model/reader.cc:43] Reading SavedModel from: /tmp/tmp1igj75zx\n", "2021-11-20 22:42:32.859041: I tensorflow/cc/saved_model/reader.cc:107] Reading meta graph with tags { serve }\n", "2021-11-20 22:42:32.859087: I tensorflow/cc/saved_model/reader.cc:148] Reading SavedModel debug info (if present) from: /tmp/tmp1igj75zx\n", "2021-11-20 22:42:33.089582: I tensorflow/cc/saved_model/loader.cc:210] Restoring SavedModel bundle.\n", "2021-11-20 22:42:33.859358: I tensorflow/cc/saved_model/loader.cc:194] Running initialization op on SavedModel bundle at path: /tmp/tmp1igj75zx\n", "2021-11-20 22:42:34.170920: I tensorflow/cc/saved_model/loader.cc:283] SavedModel load for tags { serve }; Status: success: OK. Took 1376037 microseconds.\n", "2021-11-20 22:42:34.864702: I tensorflow/compiler/mlir/tensorflow/utils/dump_mlir_util.cc:237] disabling MLIR crash reproducer, set env var `MLIR_CRASH_REPRODUCER_DIRECTORY` to enable.\n", "WARNING:absl:Buffer deduplication procedure will be skipped when flatbuffer library is not properly loaded\n" ] } ], "source": [ "converter = tf.lite.TFLiteConverter.from_keras_model(model)\n", "\n", "tflite_model = converter.convert()\n", "\n", "with open('clothing-model.tflite', 'wb') as f_out:\n", " f_out.write(tflite_model)" ] }, { "cell_type": "code", "execution_count": 21, "id": "6d47a365", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "total 163M\r\n", "-rw-rw-r-- 1 ubuntu ubuntu 83M Aug 17 10:47 clothing-model.h5\r\n", "-rw-rw-r-- 1 ubuntu ubuntu 81M Nov 20 22:42 clothing-model.tflite\r\n", "-rw-rw-r-- 1 ubuntu ubuntu 23K Nov 20 22:33 pants.jpg\r\n", "-rw-rw-r-- 1 ubuntu ubuntu 947 Nov 20 22:12 plan.md\r\n", "-rw-rw-r-- 1 ubuntu ubuntu 6.1K Nov 20 22:21 tensorflow-model.ipynb\r\n" ] } ], "source": [ "!ls -lh" ] }, { "cell_type": "code", "execution_count": 22, "id": "43051d0f", "metadata": {}, "outputs": [], "source": [ "import tensorflow.lite as tflite" ] }, { "cell_type": "code", "execution_count": 23, "id": "536f5426", "metadata": {}, "outputs": [], "source": [ "interpreter = tflite.Interpreter(model_path='clothing-model.tflite')\n", "interpreter.allocate_tensors()\n", "\n", "input_index = interpreter.get_input_details()[0]['index']\n", "output_index = interpreter.get_output_details()[0]['index']" ] }, { "cell_type": "code", "execution_count": 30, "id": "2787dd3b", "metadata": {}, "outputs": [], "source": [ "interpreter.set_tensor(input_index, X)\n", "interpreter.invoke()\n", "preds = interpreter.get_tensor(output_index)" ] }, { "cell_type": "code", "execution_count": 34, "id": "a6403dbc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'dress': -1.8682897,\n", " 'hat': -4.7612453,\n", " 'longsleeve': -2.316984,\n", " 'outwear': -1.0625705,\n", " 'pants': 9.887156,\n", " 'shirt': -2.8124316,\n", " 'shoes': -3.6662838,\n", " 'shorts': 3.2003622,\n", " 'skirt': -2.6023388,\n", " 't-shirt': -4.8350453}" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "classes = [\n", " 'dress',\n", " 'hat',\n", " 'longsleeve',\n", " 'outwear',\n", " 'pants',\n", " 'shirt',\n", " 'shoes',\n", " 'shorts',\n", " 'skirt',\n", " 't-shirt'\n", "]\n", "\n", "dict(zip(classes, preds[0]))" ] }, { "cell_type": "markdown", "id": "a50e64ac", "metadata": {}, "source": [ "## Removing TF dependency" ] }, { "cell_type": "code", "execution_count": 36, "id": "49d4edbc", "metadata": {}, "outputs": [], "source": [ "from PIL import Image" ] }, { "cell_type": "code", "execution_count": 38, "id": "65e25a72", "metadata": {}, "outputs": [], "source": [ "with Image.open('pants.jpg') as img:\n", " img = img.resize((299, 299), Image.NEAREST)" ] }, { "cell_type": "code", "execution_count": 45, "id": "f06c8daa", "metadata": {}, "outputs": [], "source": [ "def preprocess_input(x):\n", " x /= 127.5\n", " x -= 1.\n", " return x" ] }, { "cell_type": "code", "execution_count": 47, "id": "81bf48c8", "metadata": {}, "outputs": [], "source": [ "x = np.array(img, dtype='float32')\n", "X = np.array([x])\n", "\n", "X = preprocess_input(X)" ] }, { "cell_type": "code", "execution_count": 49, "id": "656b5981", "metadata": {}, "outputs": [], "source": [ "interpreter.set_tensor(input_index, X)\n", "interpreter.invoke()\n", "preds = interpreter.get_tensor(output_index)" ] }, { "cell_type": "code", "execution_count": 50, "id": "fd9bb26c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'dress': -1.8682897,\n", " 'hat': -4.7612453,\n", " 'longsleeve': -2.316984,\n", " 'outwear': -1.0625705,\n", " 'pants': 9.887156,\n", " 'shirt': -2.8124316,\n", " 'shoes': -3.6662838,\n", " 'shorts': 3.2003622,\n", " 'skirt': -2.6023388,\n", " 't-shirt': -4.8350453}" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "classes = [\n", " 'dress',\n", " 'hat',\n", " 'longsleeve',\n", " 'outwear',\n", " 'pants',\n", " 'shirt',\n", " 'shoes',\n", " 'shorts',\n", " 'skirt',\n", " 't-shirt'\n", "]\n", "\n", "dict(zip(classes, preds[0]))" ] }, { "cell_type": "markdown", "id": "9cfb17f7", "metadata": {}, "source": [ "## Simpler way of doing it" ] }, { "cell_type": "code", "execution_count": 52, "id": "4225e13b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Collecting keras-image-helper\n", " Using cached keras_image_helper-0.0.1-py3-none-any.whl (4.6 kB)\n", "Requirement already satisfied: numpy in /home/ubuntu/miniconda3/lib/python3.8/site-packages (from keras-image-helper) (1.21.4)\n", "Requirement already satisfied: pillow in /home/ubuntu/miniconda3/lib/python3.8/site-packages (from keras-image-helper) (8.4.0)\n", "Installing collected packages: keras-image-helper\n", "Successfully installed keras-image-helper-0.0.1\n" ] } ], "source": [ "!pip install keras-image-helper" ] }, { "cell_type": "code", "execution_count": 7, "id": "743b5fe1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Looking in indexes: https://pypi.org/simple, https://google-coral.github.io/py-repo/\n", "Collecting tflite_runtime\n", " Downloading https://github.com/google-coral/pycoral/releases/download/v2.0.0/tflite_runtime-2.5.0.post1-cp38-cp38-linux_x86_64.whl (1.5 MB)\n", "\u001b[K |████████████████████████████████| 1.5 MB 4.6 MB/s eta 0:00:01\n", "\u001b[?25hRequirement already satisfied: numpy>=1.16.0 in /home/ubuntu/miniconda3/lib/python3.8/site-packages (from tflite_runtime) (1.21.4)\n", "Installing collected packages: tflite-runtime\n", "Successfully installed tflite-runtime-2.5.0.post1\n" ] } ], "source": [ "!pip install --extra-index-url https://google-coral.github.io/py-repo/ tflite_runtime" ] }, { "cell_type": "code", "execution_count": 3, "id": "b9780017", "metadata": {}, "outputs": [], "source": [ "#import tensorflow.lite as tflite\n", "import tflite_runtime.interpreter as tflite\n", "from keras_image_helper import create_preprocessor" ] }, { "cell_type": "code", "execution_count": 4, "id": "f5903956", "metadata": {}, "outputs": [], "source": [ "interpreter = tflite.Interpreter(model_path='clothing-model.tflite')\n", "interpreter.allocate_tensors()\n", "\n", "input_index = interpreter.get_input_details()[0]['index']\n", "output_index = interpreter.get_output_details()[0]['index']" ] }, { "cell_type": "code", "execution_count": 5, "id": "8146a9cb", "metadata": {}, "outputs": [], "source": [ "preprocessor = create_preprocessor('xception', target_size=(299, 299))" ] }, { "cell_type": "code", "execution_count": 6, "id": "81622bd1", "metadata": {}, "outputs": [], "source": [ "url = 'http://bit.ly/mlbookcamp-pants'\n", "X = preprocessor.from_url(url)" ] }, { "cell_type": "code", "execution_count": 7, "id": "811511aa", "metadata": {}, "outputs": [], "source": [ "interpreter.set_tensor(input_index, X)\n", "interpreter.invoke()\n", "preds = interpreter.get_tensor(output_index)" ] }, { "cell_type": "code", "execution_count": 8, "id": "17c925c5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'dress': -1.8682901,\n", " 'hat': -4.7612457,\n", " 'longsleeve': -2.3169823,\n", " 'outwear': -1.0625706,\n", " 'pants': 9.8871565,\n", " 'shirt': -2.8124304,\n", " 'shoes': -3.6662836,\n", " 'shorts': 3.200361,\n", " 'skirt': -2.6023388,\n", " 't-shirt': -4.835045}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "classes = [\n", " 'dress',\n", " 'hat',\n", " 'longsleeve',\n", " 'outwear',\n", " 'pants',\n", " 'shirt',\n", " 'shoes',\n", " 'shorts',\n", " 'skirt',\n", " 't-shirt'\n", "]\n", "\n", "dict(zip(classes, preds[0]))" ] }, { "cell_type": "code", "execution_count": null, "id": "062462e1", "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.9.7" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 09-serverless/code/test.py ================================================ import requests url = 'http://localhost:8080/2015-03-31/functions/function/invocations' data = {'url': 'http://bit.ly/mlbookcamp-pants'} result = requests.post(url, json=data).json() print(result) ================================================ FILE: 09-serverless/homework.md ================================================ ## Homework * For 2025 cohort homework, check [the 2025 cohort folder](../cohorts/2025/09-serverless/homework.md) * For 2023 cohort homework, check [the 2023 cohort folder](../cohorts/2023/) * For 2022 cohort homework, check [the 2022 cohort folder](../cohorts/2022/) * For 2021 cohort homework and solution, check [the 2021 cohort folder](../cohorts/2021/09-serverless/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 9: Serverless Deep Learning](./) * Previous: [Explore more](09-explore-more.md) ================================================ FILE: 09-serverless/meta.csv ================================================ lesson,name,page_name,video,slides,notebook 1,Introduction to Serverless,01-intro.md,https://www.youtube.com/watch?v=JLIVwIsU6RA,, 2,AWS Lambda,02-aws-lambda.md,https://www.youtube.com/watch?v=_UX8-2WhHZo,, 3,TensorFlow Lite,03-tensorflow-lite.md,https://www.youtube.com/watch?v=OzZA4mSBE0Q,,code/tensorflow-model.ipynb 4,Preparing the code for Lambda,04-preparing-code.md,https://www.youtube.com/watch?v=XXBUivsHhec,, 5,Preparing a Docker image,05-docker-image.md,https://www.youtube.com/watch?v=y4_YQjfOsDo,, 6,Creating the lambda function,06-creating-lambda.md,https://www.youtube.com/watch?v=kBch5oD5BkY,, 7,API Gateway: exposing the lambda function,07-api-gateway.md,https://www.youtube.com/watch?v=wyZ9aqQOXvs,, 8,Summary,08-summary.md,https://www.youtube.com/watch?v=bu3nPiHCNLU,, 9,Explore more,09-explore-more.md,,, 10,Homework,homework.md,,, ================================================ FILE: 09-serverless/meta.json ================================================ { "data": "meta.csv", "session": 9, "name": "Serverless Deep Learning" } ================================================ FILE: 09-serverless/updates.md ================================================ ## Python 3.12 vs TF Lite 2.17 The latest versions of TF Lite don't support Python 3.12 yet. As a workaround, we can use the previous version of TF Lite to serve the models created by TensorFlow 2.17. We tested it with TF Lite 2.14 and the deep learning models we use in the course work successfully with this setup. Here's how you do it First, use Python 3.10. It means that you will need to use `public.ecr.aws/lambda/python:3.10` as the base image: ```docker FROM public.ecr.aws/lambda/python:3.10 ``` Second, use numpy 1.23.1: ```docker RUN pip install numpy==1.23.1 ``` When installing tf lite interpreter for AWS lambda, make sure you don't install dependencies with `--no-deps` flag: ```docker RUN pip install --no-deps https://github.com/alexeygrigorev/tflite-aws-lambda/raw/main/tflite/tflite_runtime-2.14.0-cp310-cp310-linux_x86_64.whl ``` If you don't do it, pip will try to upgdate the version of numpy and your code won't work (as the tflite runtime was compiled with numpy 1, not numpy 2). ================================================ FILE: 09-serverless/workshop/README.md ================================================ # Machine Learning and Deep Learning Model Deployment with Serverless * Video: https://www.youtube.com/watch?v=sHQaeVm5hT8 In this workshop we will revise [he Serverless module (Module 9)](https://github.com/DataTalksClub/machine-learning-zoomcamp/tree/master/09-serverless) of [Machine Learning Zoomcamp](https://github.com/DataTalksClub/machine-learning-zoomcamp). In the module, we - Convert a model into TF-lite representation - Deploy it with Lambda and Docker This approach is no longer usable today: - The latest versions of TF-lite are very difficult to compile for the target platform (Amazon Linux) (see the old approach [here](https://github.com/alexeygrigorev/tflite-aws-lambda)) - They are also becoming heavier In this workshop, we want to revise this module and redo it from scratch: - First, we want to talk about deploying usual ML models - i.e. models created with Scikit-Learn - Then we will look at deploying Deep Learning models ## Plan The plan for the workshop: - Creating a simple AWS Lambda function - Deploying Scikit-Learn models with Docker - Using ONNX for Keras and TF models - ONNX for PyTorch models ## Prerequisites - [AWS Account](https://mlbookcamp.com/article/aws) - [AWS Cli](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) ## Scikit-Learn Models First, let's train a simple scikit-learn model that we will later deploy We will take the [train.py](train/train.py) script (slightly adjusted) from the [uv+FastAPI workshop](../../05-deployment/workshop/). ```bash cd train uv sync uv run python train.py ``` As the result, you will have [model.bin](train/model.bin) - this is what we're going to deploy in the first part of the workshop. ## AWS Lambda First, let's look at the simplest AWS Lambda application. We will send a request, and it will look at it, and respond with a prediction. Let's create a file `lambda_function.py` (see [`lambda-sklearn/`](lambda-sklearn/)): ```python def predict_single(customer): # we will put our model here return 0.56 def lambda_handler(event, context): print("Parameters:", event) customer = event['customer'] prob = predict_single(customer) return { "churn_probability": prob, "churn": bool(prob >= 0.5) } ``` Let's "deploy" it: - Go to AWS -> Lambda - Click "Create Function" - Author from scratch - Name: "churn-prediction" - Runtime: Python 3.13 - Default execution role: create a new one (selected by default) - Additional configuration - keep as is - Put the code there Now let's test it. Deploy it, click test, then create a new event with the following data: ```json { "customer": { "gender": "female", "seniorcitizen": 0, "partner": "yes", "dependents": "no", "phoneservice": "no", "multiplelines": "no_phone_service", "internetservice": "dsl", "onlinesecurity": "no", "onlinebackup": "yes", "deviceprotection": "no", "techsupport": "no", "streamingtv": "no", "streamingmovies": "no", "contract": "month-to-month", "paperlessbilling": "yes", "paymentmethod": "electronic_check", "tenure": 1, "monthlycharges": 29.85, "totalcharges": 29.85 } } ``` We see the predictions: ```json { "churn_probability": 0.56, "churn": true } ``` Invoking with CLI: ```bash aws lambda invoke \ --function-name churn-prediction \ --cli-binary-format raw-in-base64-out \ --payload file://lambda-1-simple/customer.json \ output.json ``` or with boto3 (`pip install boto3`): ```python import boto3 import json lambda_client = boto3.client('lambda') customer = ... response = lambda_client.invoke( FunctionName='churn-prediction', InvocationType='RequestResponse', Payload=json.dumps(customer) ) result = json.loads(response['Payload'].read()) print(json.dumps(result, indent=2)) ``` You can also expose it as a web service (see [unit 9.7 about API Gateway](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/09-serverless/07-api-gateway.md)). ## AWS Lambda with Docker: Running Locally How do we add the actual model? That's how we load it: ```python import pickle with open('model.bin', 'rb') as f_in: pipeline = pickle.load(f_in) def predict_single(customer): result = pipeline.predict_proba(customer)[0, 1] return float(result) ``` But for that we need to package the dependencies along with our code in a single ZIP archive. The problem: Scikit-Learn with all the dependencies takes more than 250 mb. And this is a limit for the ZIP archive. If we add everything in Docker, we won't have this problem. So let's do it Copy our model: ```bash cp ../train/model.bin . ``` Define the Dockerfile (based on [this](https://github.com/alexeygrigorev/workshops/blob/main/mlzoomcamp-fastapi-uv/Dockerfile)): ```dockerfile FROM public.ecr.aws/lambda/python:3.13 COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/ COPY pyproject.toml uv.lock ./ RUN uv pip install --system -r <(uv export --format requirements-txt) COPY lambda_function.py model.bin ./ CMD ["lambda_function.lambda_handler"] ``` Build it: ```bash docker build -t churn-prediction-lambda . ``` Run it: ```bash docker run -it --rm -p 8080:8080 churn-prediction-lambda ``` Test it: ```python url = 'http://localhost:8080/2015-03-31/functions/function/invocations' result = requests.post(url, json=customer).json() print(result) ``` Or run ```bash python test.py ``` Note that since we can run it locally, we can test a lot of things without deploying ## AWS Lambda: Deployment It's time to deploy our Lambda to AWS. Since we use Docker, we'll need to create a registry You can do it through the web interface, but we'll save time and do it with AWS CLI: ```bash aws ecr create-repository \ --repository-name "churn-prediction-lambda" \ --region "eu-west-1" ``` You will get a response like that: ```json { "repository": { "repositoryArn": "arn:aws:ecr:eu-west-1:387546586013:repository/churn-prediction-lambda", "registryId": "387546586013", "repositoryName": "churn-prediction-lambda", "repositoryUri": "387546586013.dkr.ecr.eu-west-1.amazonaws.com/churn-prediction-lambda", "createdAt": "2025-08-15T11:21:46.389000+02:00", "imageTagMutability": "MUTABLE", "imageScanningConfiguration": { "scanOnPush": false }, "encryptionConfiguration": { "encryptionType": "AES256" } } } ``` Note `repositoryUri`. It will look like this: `"387546586013.dkr.ecr.eu-west-1.amazonaws.com/churn-prediction-lambda"` Here we have two parts: - First, ECR URL: `387546586013.dkr.ecr.eu-west-1.amazonaws.com` - Your account - The region - The name of the repository Let's put the ECR URL into a variable: ```bash ECR_URL="387546586013.dkr.ecr.eu-west-1.amazonaws.com" ``` Now login to that repo with Docker: ```bash aws ecr get-login-password \ --region "eu-west-1" \ | docker login \ --username AWS \ --password-stdin ${ECR_URL} ``` Now we tag our docker image with a special tag, and then push it to ECR: ```bash REMOTE_IMAGE_TAG="${ECR_URL}/churn-prediction-lambda:v1" docker build -t churn-prediction-lambda . docker tag churn-prediction-lambda ${REMOTE_IMAGE_TAG} docker push ${REMOTE_IMAGE_TAG} ``` Now go to Lambda: * Create function * Select "Container image" * Name: "churn-prediction-docker" * Select your container image * Create function * You may need to increase timeout to 30 seconds(Configuration -> General Configuration -> Edit) * Testing is the same as before * The first execution may take longer (it pull docker image, etc), but subsequent executions are faster ```json { "customer": { "gender": "female", "seniorcitizen": 0, "partner": "yes", "dependents": "no", "phoneservice": "no", "multiplelines": "no_phone_service", "internetservice": "dsl", "onlinesecurity": "no", "onlinebackup": "yes", "deviceprotection": "no", "techsupport": "no", "streamingtv": "no", "streamingmovies": "no", "contract": "month-to-month", "paperlessbilling": "yes", "paymentmethod": "electronic_check", "tenure": 1, "monthlycharges": 29.85, "totalcharges": 29.85 } } ``` If you have problems with ECR permissions, create a policy with name "Lambda-ECR-Read": ```json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:GetAuthorizationToken" ], "Resource": "arn:aws:ecr:eu-west-1:387546586013:repository/*" } ] } ``` And attach this policy to the lambda's role. Updating the lambda with AWS CLI: ```bash REMOTE_IMAGE_TAG="${ECR_URL}/churn-prediction-lambda:v2" docker build -t churn-prediction-lambda . docker tag churn-prediction-lambda ${REMOTE_IMAGE_TAG} docker push ${REMOTE_IMAGE_TAG} aws lambda update-function-code \ --function-name churn-prediction-docker \ --image-uri ${REMOTE_IMAGE_TAG} \ --region eu-west-1 ``` You can check [`deploy.sh`](lambda-sklearn/deploy.sh) for a little more advanced version of the deployment process. You can ask ChatGPT to explain you this script. Invoking the function is the same as before. See [`invoke.py`](lambda-sklearn/invoke.py). ## AWS Lambda: TensorFlow Models Previously we used TF-lite for AWS Lambda. In this workshop, we'll use an alternative - ONNX (Open Neural Network Exchange). We need will use the same Keras model as before. It was retrained for the newest TF version, you can see [here](https://colab.research.google.com/drive/1GTkGkq1QKOtAL0wiMjYr-LOCpVgsAwyk?usp=sharing) the training process. Let's download the model: ```bash wget https://github.com/DataTalksClub/machine-learning-zoomcamp/releases/download/dl-models/clothing-model-new.keras ``` Converting to ONNX happens in 2 steps: - First, convert it into the saved_model format of TensorFlow - Second, convert the saved_model format into ONNX. For the second step, we will need to install tf2onnx: ```bash # normally you install it with pip like that: # pip install tf2onnx # but the last release (Jan 2025) doesn't contain numpy 2 update # so install it from github directly: pip install git+https://github.com/onnx/tensorflow-onnx.git ``` First step: ```python from tensorflow import keras model = keras.models.load_model('clothing-model-new.keras') model.export("clothing-model-new_savedmodel") ``` Second step: ```bash python -m tf2onnx.convert \ --saved-model clothing-model-new_savedmodel \ --opset 13 \ --output clothing-model-new.onnx ``` To avoid version conflicts between TensorFlow and ONNX, let's do it in Docker: ```bash cd convert # you can update it to the latest commit COMMIT_ID=c34ac1d751427cf5d98023a21cce4c82b0cf96a1 TAG=${COMMIT_ID:0:7} docker build \ --build-arg COMMIT_ID=$COMMIT_ID \ -t tensorflow-onnx-runtime:$TAG . # it may take some time to build the image # if you don't want to build it yourself, use my build: # agrigorev/tensorflow-onnx-runtime mkdir models cp ../clothing-model-new.keras models/clothing-model-new.keras cp ../convert-saved-model.py models/convert-saved-model.py docker run -it --rm \ -v $(pwd)/models:/models \ tensorflow-onnx-runtime:$TAG # on gitbash, you may need to do /$(pwd)/models python convert-saved-model.py python -m tf2onnx.convert \ --saved-model clothing-model-new_savedmodel \ --opset 13 \ --output clothing-model-new.onnx exit ``` You can download the results here: ```bash wget https://github.com/DataTalksClub/machine-learning-zoomcamp/releases/download/dl-models/clothing-model-new.onnx ``` Now our models are saved in the ONNX format. Like with TF-lite, we only need ONNX-Runtime to run it: ```bash pip install onnxruntime ``` Like in the module, we can't use TF for our preprocessing. That's why we will rely on `keras-image-helper` to do that: ```bash pip install keras-image-helper ``` This is how you use ONNX-Runtime to make predictions: ```python import onnxruntime as ort onnx_model_path = "clothing-model-new.onnx" session = ort.InferenceSession(onnx_model_path, providers=["CPUExecutionProvider"]) inputs = session.get_inputs() outputs = session.get_outputs() input_name = inputs[0].name output_name = outputs[0].name ``` Get the image: ```python from keras_image_helper import create_preprocessor preprocessor = create_preprocessor('xception', target_size=(299, 299)) url = 'http://bit.ly/mlbookcamp-pants' X = preprocessor.from_url(url) ``` Make predictions: ```python result = session.run([output_name], {input_name: X}) predictions = result[0][0].tolist() classes = [ 'dress', 'hat', 'longsleeve', 'outwear', 'pants', 'shirt', 'shoes', 'shorts', 'skirt', 't-shirt' ] dict(zip(classes, predictions)) ``` Let's package this into a lambda function: ```python import onnxruntime as ort from keras_image_helper import create_preprocessor preprocessor = create_preprocessor("xception", target_size=(299, 299)) session = ort.InferenceSession( "clothing-model-new.onnx", providers=["CPUExecutionProvider"] ) input_name = session.get_inputs()[0].name output_name = session.get_outputs()[0].name classes = [ "dress", "hat", "longsleeve", "outwear", "pants", "shirt", "shoes", "shorts", "skirt", "t-shirt", ] def predict(url): X = preprocessor.from_url(url) result = session.run([output_name], {input_name: X}) float_predictions = result[0][0].tolist() return dict(zip(classes, float_predictions)) def lambda_handler(event, context): url = event["url"] result = predict(url) return result ``` Dockerfile: ```dockerfile FROM public.ecr.aws/lambda/python:3.13 RUN pip install onnxruntime keras-image-helper COPY clothing-model-new.onnx clothing-model-new.onnx COPY lambda_function.py ./ CMD ["lambda_function.lambda_handler"] ``` Build and run: ```bash docker build -t clothing-lambda-keras . docker run -it --rm -p 8080:8080 clothing-lambda-keras ``` Testing it: ```python import requests url = 'http://localhost:8080/2015-03-31/functions/function/invocations' request = { "url": "http://bit.ly/mlbookcamp-pants" } result = requests.post(url, json=request).json() print(result) ``` ## AWS Lambda: PyTorch Models With PyTorch, we can do the same: - Convert a model to ONNX - Serve it with the same code as before Here's a model [we trained with PyTorch](https://colab.research.google.com/drive/1_kvvbi_msBuTFkkdLxMEpB3mj-Jhh-Bc?usp=sharing): In PyTorch, when we train a model, we can save it directly to ONNX: ```python torch.onnx.export( model, input, onnx_path, ... ) ``` So we can just download our model: ```bash wget https://github.com/DataTalksClub/machine-learning-zoomcamp/releases/download/dl-models/clothing_classifier_mobilenet_v2_latest.onnx ``` The rest of the code stays the same - we already know how to load and serve ONNX. We need to adjust our preprocessor - PyTorch uses a different format (not `BCHW`, but `BHWC`, where `B` is batch, `C` is channel, `W` is width and `H` is height). You can see [`lambda_function.py`](lambda-onnx/lambda_function.py) or [`test.ipynb`](lambda-onnx/test.ipynb) for details. Let's build and run it: ```bash docker build -t clothing-lambda-onnx . docker run -it --rm -p 8080:8080 clothing-lambda-onnx ``` Test: ```bash python test.py ``` That's all! ## Summary We covered: 1. **Scikit-Learn Model Deployment** - Training a simple ML model for churn prediction - Basic AWS Lambda function creation and testing - Docker containerization to overcome size limitations - ECR deployment and AWS Lambda container image deployment 2. **Deep Learning Model Deployment with ONNX** - Converting TensorFlow/Keras models to ONNX format - Converting PyTorch models to ONNX format - Using ONNX Runtime for efficient inference - Docker-based deployment for deep learning models **Next Steps:** - Explore API Gateway integration for web service exposure - Implement monitoring and logging with CloudWatch - Consider using AWS Step Functions for complex ML workflows - Explore other serverless services like AWS Batch for training ================================================ FILE: 09-serverless/workshop/lambda-keras/.gitignore ================================================ *.keras *saved_model *.onnx *.h5 convert/models ================================================ FILE: 09-serverless/workshop/lambda-keras/Dockerfile ================================================ FROM public.ecr.aws/lambda/python:3.13 RUN pip install onnxruntime keras-image-helper COPY clothing-model-new.onnx clothing-model-new.onnx COPY lambda_function.py ./ CMD ["lambda_function.lambda_handler"] ================================================ FILE: 09-serverless/workshop/lambda-keras/convert/.dockerignore ================================================ models ================================================ FILE: 09-serverless/workshop/lambda-keras/convert/Dockerfile ================================================ FROM python:3.13.5-slim ARG COMMIT_ID ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 RUN apt-get update && apt-get install -y --no-install-recommends \ git \ build-essential \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* RUN pip install --upgrade pip RUN pip install git+https://github.com/onnx/tensorflow-onnx.git@${COMMIT_ID} RUN pip install tensorflow WORKDIR /models CMD ["bash"] ================================================ FILE: 09-serverless/workshop/lambda-keras/convert/README.md ================================================ ```bash # you can update it to the latest commit COMMIT_ID=c34ac1d751427cf5d98023a21cce4c82b0cf96a1 TAG=${COMMIT_ID:0:7} docker build \ --build-arg COMMIT_ID=$COMMIT_ID \ -t tensorflow-onnx-runtime:$TAG . docker login docker tag tensorflow-onnx-runtime:$TAG agrigorev/tensorflow-onnx-runtime:$TAG docker push agrigorev/tensorflow-onnx-runtime:$TAG docker tag tensorflow-onnx-runtime:$TAG agrigorev/tensorflow-onnx-runtime:latest docker push agrigorev/tensorflow-onnx-runtime:latest ``` ================================================ FILE: 09-serverless/workshop/lambda-keras/convert/convert-saved-model.py ================================================ from tensorflow import keras model = keras.models.load_model('clothing-model-new.keras') model.export("clothing-model-new_savedmodel") ================================================ FILE: 09-serverless/workshop/lambda-keras/lambda_function.py ================================================ import numpy as np import onnxruntime as ort from keras_image_helper import create_preprocessor def preprocess_pytorch(X): # X: shape (1, 299, 299, 3), dtype=float32, values in [0, 255] X = X / 255.0 mean = np.array([0.485, 0.456, 0.406]).reshape(1, 3, 1, 1) std = np.array([0.229, 0.224, 0.225]).reshape(1, 3, 1, 1) # Convert NHWC → NCHW # from (batch, height, width, channels) → (batch, channels, height, width) X = X.transpose(0, 3, 1, 2) # Normalize X = (X - mean) / std return X.astype(np.float32) preprocessor = create_preprocessor(preprocess_pytorch, target_size=(224, 224)) session = ort.InferenceSession( "clothing-model-new.onnx", providers=["CPUExecutionProvider"] ) input_name = session.get_inputs()[0].name output_name = session.get_outputs()[0].name classes = [ "dress", "hat", "longsleeve", "outwear", "pants", "shirt", "shoes", "shorts", "skirt", "t-shirt", ] def predict(url): X = preprocessor.from_url(url) result = session.run([output_name], {input_name: X}) float_predictions = result[0][0].tolist() return dict(zip(classes, float_predictions)) def lambda_handler(event, context): url = event["url"] result = predict(url) return result ================================================ FILE: 09-serverless/workshop/lambda-keras/test.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "id": "ced7eb3e-93b2-47b5-9c5a-ef2cf91baf4e", "metadata": {}, "outputs": [], "source": [ "from keras_image_helper import create_preprocessor\n", "preprocessor = create_preprocessor('xception', target_size=(299, 299))" ] }, { "cell_type": "code", "execution_count": 2, "id": "82dde169-e5fb-45d8-8a43-ee03f2ffcb49", "metadata": {}, "outputs": [], "source": [ "url = 'http://bit.ly/mlbookcamp-pants'\n", "X = preprocessor.from_url(url)" ] }, { "cell_type": "code", "execution_count": 3, "id": "2ea562a8-0656-4f97-a2dd-5d94264460be", "metadata": {}, "outputs": [], "source": [ "import onnxruntime as ort\n", "\n", "onnx_model_path = \"clothing-model-new.onnx\"\n", "session = ort.InferenceSession(onnx_model_path, providers=[\"CPUExecutionProvider\"])" ] }, { "cell_type": "code", "execution_count": null, "id": "b19c3f82-df0c-49df-ad18-a47a2aae45d1", "metadata": {}, "outputs": [], "source": [ "inputs = session.get_inputs()\n", "outputs = session.get_outputs()\n", "\n", "input_name = inputs[0].name\n", "output_name = outputs[0].name" ] }, { "cell_type": "code", "execution_count": 6, "id": "b7d5f18c-3169-42a9-bf9a-e5c245d38124", "metadata": {}, "outputs": [], "source": [ "result = session.run([output_name], {input_name: X})" ] }, { "cell_type": "code", "execution_count": 11, "id": "383a22a4-0411-4331-873a-32ecff40f9ff", "metadata": {}, "outputs": [], "source": [ "predictions = result[0][0].tolist()" ] }, { "cell_type": "code", "execution_count": 12, "id": "0faa16d2-37b0-4530-abfe-02ecce5083ec", "metadata": {}, "outputs": [], "source": [ "classes = [\n", " 'dress',\n", " 'hat',\n", " 'longsleeve',\n", " 'outwear',\n", " 'pants',\n", " 'shirt',\n", " 'shoes',\n", " 'shorts',\n", " 'skirt',\n", " 't-shirt'\n", "]" ] }, { "cell_type": "code", "execution_count": 14, "id": "65bddec9-5cf8-4acc-aa40-c116a2e3bbec", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'dress': -2.3684329986572266,\n", " 'hat': -4.414735794067383,\n", " 'longsleeve': -2.309055805206299,\n", " 'outwear': -1.739748239517212,\n", " 'pants': 8.660110473632812,\n", " 'shirt': -3.194986581802368,\n", " 'shoes': -5.595435619354248,\n", " 'shorts': 2.7487964630126953,\n", " 'skirt': -2.995649814605713,\n", " 't-shirt': -4.363430500030518}" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dict(zip(classes, predictions))" ] }, { "cell_type": "code", "execution_count": null, "id": "2c94a0a0-ab3f-4193-b35b-1a1b7973e97e", "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.13.5" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 09-serverless/workshop/lambda-keras/test.py ================================================ import requests url = 'http://localhost:8080/2015-03-31/functions/function/invocations' request = { "url": "http://bit.ly/mlbookcamp-pants" } result = requests.post(url, json=request).json() print(result) ================================================ FILE: 09-serverless/workshop/lambda-onnx/.gitignore ================================================ *.onnx ================================================ FILE: 09-serverless/workshop/lambda-onnx/Dockerfile ================================================ FROM public.ecr.aws/lambda/python:3.13 RUN pip install onnxruntime keras-image-helper==0.0.2 ARG MODEL_NAME=clothing_classifier_mobilenet_v2_latest.onnx ENV MODEL_NAME=${MODEL_NAME} COPY ${MODEL_NAME} ${MODEL_NAME} COPY lambda_function.py ./ CMD ["lambda_function.lambda_handler"] ================================================ FILE: 09-serverless/workshop/lambda-onnx/lambda_function.py ================================================ import os import numpy as np import onnxruntime as ort from keras_image_helper import create_preprocessor model_name = os.getenv("MODEL_NAME", "clothing-model-new.onnx") def preprocess_pytorch_style(X): # X: shape (1, 299, 299, 3), dtype=float32, values in [0, 255] X = X / 255.0 mean = np.array([0.485, 0.456, 0.406]).reshape(1, 3, 1, 1) std = np.array([0.229, 0.224, 0.225]).reshape(1, 3, 1, 1) # Convert NHWC → NCHW # from (batch, height, width, channels) → (batch, channels, height, width) X = X.transpose(0, 3, 1, 2) # Normalize X = (X - mean) / std return X.astype(np.float32) preprocessor = create_preprocessor( preprocess_pytorch_style, target_size=(224, 224) ) session = ort.InferenceSession( model_name, providers=["CPUExecutionProvider"] ) input_name = session.get_inputs()[0].name output_name = session.get_outputs()[0].name classes = [ "dress", "hat", "longsleeve", "outwear", "pants", "shirt", "shoes", "shorts", "skirt", "t-shirt", ] def predict(url): X = preprocessor.from_url(url) result = session.run([output_name], {input_name: X}) float_predictions = result[0][0].tolist() return dict(zip(classes, float_predictions)) def lambda_handler(event, context): url = event["url"] result = predict(url) return result ================================================ FILE: 09-serverless/workshop/lambda-onnx/test.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 5, "id": "b2b3e76f-09ac-42c1-bb0a-c93fe73e7167", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "from keras_image_helper import create_preprocessor" ] }, { "cell_type": "code", "execution_count": 6, "id": "7bd8e2df-87a9-4892-99da-21ffdab6f45e", "metadata": {}, "outputs": [], "source": [ "\n", "def preprocess_pytorch(X):\n", " # X: shape (1, 299, 299, 3), dtype=float32, values in [0, 255]\n", " X = X / 255.0\n", "\n", " mean = np.array([0.485, 0.456, 0.406]).reshape(1, 3, 1, 1)\n", " std = np.array([0.229, 0.224, 0.225]).reshape(1, 3, 1, 1)\n", "\n", " # Convert NHWC → NCHW\n", " # from (batch, height, width, channels) → (batch, channels, height, width)\n", " X = X.transpose(0, 3, 1, 2)\n", "\n", " # Normalize\n", " X = (X - mean) / std\n", "\n", " return X.astype(np.float32)\n", "\n", "\n", "preprocessor = create_preprocessor(preprocess_pytorch, target_size=(224, 224))" ] }, { "cell_type": "code", "execution_count": 7, "id": "bd8c57dc-578f-44ae-bce6-86436be60aec", "metadata": {}, "outputs": [], "source": [ "url = 'http://bit.ly/mlbookcamp-pants'\n", "X = preprocessor.from_url(url)" ] }, { "cell_type": "code", "execution_count": 8, "id": "57d6fccf-8f1d-4f20-9788-eb231a3c153c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 3, 224, 224)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.shape" ] }, { "cell_type": "code", "execution_count": 9, "id": "2dfab440-9f6b-458e-bb39-3619c1e2b242", "metadata": {}, "outputs": [], "source": [ "import onnxruntime as ort\n", "\n", "onnx_model_path = \"clothing_classifier_mobilenet_v2_latest.onnx\"\n", "session = ort.InferenceSession(onnx_model_path, providers=[\"CPUExecutionProvider\"])" ] }, { "cell_type": "code", "execution_count": 10, "id": "84a2fd2d-3152-4e89-b424-25f37ea61e32", "metadata": {}, "outputs": [], "source": [ "inputs = session.get_inputs()\n", "outputs = session.get_outputs()\n", "\n", "input_name = inputs[0].name\n", "output_name = outputs[0].name" ] }, { "cell_type": "code", "execution_count": 13, "id": "d3cc7805-7ec3-4395-b06a-4e9ee0e33340", "metadata": {}, "outputs": [], "source": [ "result = session.run([output_name], {input_name: X})" ] }, { "cell_type": "code", "execution_count": 14, "id": "85878d27-5e4d-4409-8545-726efef80038", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[array([[ 0.14996365, -1.7628496 , -3.336878 , -1.7682592 , 5.3368697 ,\n", " -1.0429132 , -0.30727357, 0.7430814 , -1.7061669 , -3.9114783 ]],\n", " dtype=float32)]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result" ] }, { "cell_type": "code", "execution_count": 15, "id": "6151be80-6009-49f6-8682-b61dad2dbaa3", "metadata": {}, "outputs": [], "source": [ "predictions = result[0][0].tolist()" ] }, { "cell_type": "code", "execution_count": 16, "id": "7fd9c200-2efd-4807-91d3-5adbc3fb037a", "metadata": {}, "outputs": [], "source": [ "classes = [\n", " 'dress',\n", " 'hat',\n", " 'longsleeve',\n", " 'outwear',\n", " 'pants',\n", " 'shirt',\n", " 'shoes',\n", " 'shorts',\n", " 'skirt',\n", " 't-shirt'\n", "]" ] }, { "cell_type": "code", "execution_count": 17, "id": "6226fadb-ed77-440a-854c-4ac3074ce080", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'dress': 0.1499636471271515,\n", " 'hat': -1.7628495693206787,\n", " 'longsleeve': -3.3368780612945557,\n", " 'outwear': -1.7682591676712036,\n", " 'pants': 5.336869716644287,\n", " 'shirt': -1.0429131984710693,\n", " 'shoes': -0.3072735667228699,\n", " 'shorts': 0.7430813908576965,\n", " 'skirt': -1.7061668634414673,\n", " 't-shirt': -3.911478281021118}" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dict(zip(classes, predictions))" ] }, { "cell_type": "code", "execution_count": null, "id": "d00cf2af-1fb4-4cc0-b4a9-456208d58d8e", "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.13.5" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 09-serverless/workshop/lambda-onnx/test.py ================================================ import requests url = 'http://localhost:8080/2015-03-31/functions/function/invocations' request = { "url": "http://bit.ly/mlbookcamp-pants" } result = requests.post(url, json=request).json() print(result) ================================================ FILE: 09-serverless/workshop/lambda-sklearn/.dockerignore ================================================ # Project specific invoke.py customer.json README.md test.py # Git .git .gitignore # Python __pycache__ *.pyc *.pyo *.pyd .Python env pip-log.txt pip-delete-this-directory.txt .tox .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.log .git .mypy_cache .pytest_cache .hypothesis # Virtual environments venv/ ENV/ env/ .venv/ # IDE .vscode/ .idea/ *.swp *.swo # OS .DS_Store Thumbs.db ================================================ FILE: 09-serverless/workshop/lambda-sklearn/.python-version ================================================ 3.13 ================================================ FILE: 09-serverless/workshop/lambda-sklearn/Dockerfile ================================================ FROM public.ecr.aws/lambda/python:3.13 COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/ COPY pyproject.toml uv.lock ./ RUN uv pip install --system -r <(uv export --format requirements-txt) COPY lambda_function.py model.bin ./ CMD ["lambda_function.lambda_handler"] ================================================ FILE: 09-serverless/workshop/lambda-sklearn/customer.json ================================================ { "customer": { "gender": "female", "seniorcitizen": 0, "partner": "yes", "dependents": "no", "phoneservice": "no", "multiplelines": "no_phone_service", "internetservice": "dsl", "onlinesecurity": "no", "onlinebackup": "yes", "deviceprotection": "no", "techsupport": "no", "streamingtv": "no", "streamingmovies": "no", "contract": "month-to-month", "paperlessbilling": "yes", "paymentmethod": "electronic_check", "tenure": 1, "monthlycharges": 29.85, "totalcharges": 29.85 } } ================================================ FILE: 09-serverless/workshop/lambda-sklearn/deploy.sh ================================================ #!/bin/bash IMAGE_NAME="churn-prediction-lambda" AWS_REGION="eu-west-1" AWS_ACCOUNT_ID=$(aws sts get-caller-identity | jq -r ".Account") # Get latest commit SHA and current datetime COMMIT_SHA=$(git rev-parse --short HEAD) DATETIME=$(date +"%Y%m%d-%H%M%S") IMAGE_TAG="${COMMIT_SHA}-${DATETIME}" ECR_URI="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com" IMAGE_URI="${ECR_URI}/${IMAGE_NAME}:${IMAGE_TAG}" # run it only once # aws ecr create-repository \ # --repository-name ${IMAGE_NAME} \ # --region ${AWS_REGION} aws ecr get-login-password \ --region ${AWS_REGION} \ | docker login \ --username AWS \ --password-stdin ${ECR_URI} docker build -t ${IMAGE_NAME}:${IMAGE_TAG} . docker tag ${IMAGE_NAME}:${IMAGE_TAG} ${IMAGE_URI} docker push ${IMAGE_URI} aws lambda update-function-code \ --function-name churn-prediction-docker \ --image-uri ${IMAGE_URI} \ --region ${AWS_REGION} ================================================ FILE: 09-serverless/workshop/lambda-sklearn/invoke.py ================================================ import boto3 import json lambda_client = boto3.client('lambda') customer_data = { "customer": { "gender": "female", "seniorcitizen": 0, "partner": "yes", "dependents": "no", "phoneservice": "no", "multiplelines": "no_phone_service", "internetservice": "dsl", "onlinesecurity": "no", "onlinebackup": "yes", "deviceprotection": "no", "techsupport": "no", "streamingtv": "no", "streamingmovies": "no", "contract": "month-to-month", "paperlessbilling": "yes", "paymentmethod": "electronic_check", "tenure": 1, "monthlycharges": 29.85, "totalcharges": 29.85 } } response = lambda_client.invoke( FunctionName='churn-prediction-docker', InvocationType='RequestResponse', Payload=json.dumps(customer_data) ) result = json.loads(response['Payload'].read()) print(json.dumps(result, indent=2)) ================================================ FILE: 09-serverless/workshop/lambda-sklearn/lambda_function.py ================================================ import pickle with open('model.bin', 'rb') as f_in: pipeline = pickle.load(f_in) def predict_single(customer): result = pipeline.predict_proba(customer)[0, 1] return float(result) def lambda_handler(event, context): # print("Parameters:", event) customer = event['customer'] prob = predict_single(customer) return { "churn_probability": prob, "churn": bool(prob >= 0.5) } ================================================ FILE: 09-serverless/workshop/lambda-sklearn/pyproject.toml ================================================ [project] name = "lambda-1-simple" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.13" dependencies = [ "scikit-learn>=1.7.1", ] ================================================ FILE: 09-serverless/workshop/lambda-sklearn/test.py ================================================ import requests import json url = 'http://localhost:8080/2015-03-31/functions/function/invocations' with open('customer.json', 'r') as f_in: customer = json.load(f_in) result = requests.post(url, json=customer).json() print(result) ================================================ FILE: 09-serverless/workshop/train/.python-version ================================================ 3.13 ================================================ FILE: 09-serverless/workshop/train/README.md ================================================ ================================================ FILE: 09-serverless/workshop/train/pyproject.toml ================================================ [project] name = "train" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.13" dependencies = [ "pandas>=2.3.1", "scikit-learn>=1.7.1", ] ================================================ FILE: 09-serverless/workshop/train/train.py ================================================ import pickle import pandas as pd import sklearn from sklearn.feature_extraction import DictVectorizer from sklearn.linear_model import LogisticRegression from sklearn.pipeline import make_pipeline print(f'pandas=={pd.__version__}') print(f'sklearn=={sklearn.__version__}') def load_data(): data_url = 'https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-03-churn-prediction/WA_Fn-UseC_-Telco-Customer-Churn.csv' df = pd.read_csv(data_url) df.columns = df.columns.str.lower().str.replace(' ', '_') categorical_columns = list(df.dtypes[df.dtypes == 'object'].index) for c in categorical_columns: df[c] = df[c].str.lower().str.replace(' ', '_') df.totalcharges = pd.to_numeric(df.totalcharges, errors='coerce') df.totalcharges = df.totalcharges.fillna(0) df.churn = (df.churn == 'yes').astype(int) return df def train_model(df): numerical = ['tenure', 'monthlycharges', 'totalcharges'] categorical = [ 'gender', 'seniorcitizen', 'partner', 'dependents', 'phoneservice', 'multiplelines', 'internetservice', 'onlinesecurity', 'onlinebackup', 'deviceprotection', 'techsupport', 'streamingtv', 'streamingmovies', 'contract', 'paperlessbilling', 'paymentmethod', ] y_train = df.churn train_dict = df[categorical + numerical].to_dict(orient='records') pipeline = make_pipeline( DictVectorizer(), LogisticRegression(solver='liblinear') ) pipeline.fit(train_dict, y_train) return pipeline def save_model(pipeline, output_file): with open(output_file, 'wb') as f_out: pickle.dump(pipeline, f_out) df = load_data() pipeline = train_model(df) save_model(pipeline, 'model.bin') print('Model saved to model.bin') ================================================ FILE: 10-kubernetes/01-overview.md ================================================ ## 10.1 Overview [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-10-kubernetes) ## Notes Add notes from the video (PRs are welcome) * same use case as in the session before: classifying images of clothes * using tensorflow serving, written in C++, with focus on inference * gRPC binary protocol * deploying to kubernetes * 1st component: gateway (download image, resize, turn into numpy array - computationally not expensive - can be done with CPU) * 2nd component: model (matrix multiplications - computationally expensive - thus use GPU) * scaling the two components independently: i.e. 5 gateways handing images to 1 model * two components in two different docker container (lesson four) * kubernetes main concepts (lesson five) * running kubernetes on your local machine (lesson six) * deploy the two services to kubernetes (lesson seven) * move from local to cloud (lesson eight)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 10: Kubernetes and TensorFlow Serving](./) * Next: [TensorFlow Serving](02-tensorflow-serving.md) ================================================ FILE: 10-kubernetes/02-tensorflow-serving.md ================================================ ## 10.2 TensorFlow Serving To build the app we need to convert the keras model `HDF5` into special format called tensorflow `SavedModel`. To do that, we download a prebuilt model and save it in the working directory: ```bash wget https://github.com/DataTalksClub/machine-learning-zoomcamp/releases/download/chapter7-model/xception_v4_large_08_0.894.h5 -O clothing-model.h5 ``` Then convert the model to `SavedModel` format: ```python import tensorflow as tf from tensorflow import keras model = keras.models.load_model('./clothing-model.h5') tf.saved_model.save(model, 'clothing-model') ``` We can inspect what's inside the saved model using the utility (saved_model_cli) from TensorFlow and the following command: ```shell saved_model_cli show --dir clothing-model --all ``` Running the command outputs a few things but we are interested in the signature, specifically the following one. For instance: ```bash signature_def['serving_default']: The given SavedModel SignatureDef contains the following input(s): inputs['input_8'] tensor_info: dtype: DT_FLOAT shape: (-1, 299, 299, 3) name: serving_default_input_8:0 The given SavedModel SignatureDef contains the following output(s): outputs['dense_7'] tensor_info: dtype: DT_FLOAT shape: (-1, 10) name: StatefulPartitionedCall:0 Method name is: tensorflow/serving/predict ``` Alternatively one can also use the following command to output just the desired part: ```shell saved_model_cli show --dir clothing-model --tag_set serve --signature_def serving_default ``` We can run the model (`clothing-model`) with the prebuilt docker image `tensorflow/serving:2.7.0`: ```bash docker run -it --rm \ -p 8500:8500 \ -v $(pwd)/clothing-model:/models/clothing-model/1 \ -e MODEL_NAME="clothing-model" \ tensorflow/serving:2.7.0 ``` - docker run -it --rm (to run the docker) - -p 8500:8500 (port mapping) - -v $(pwd)/clothing-model:/models/clothing-model/1 (volumn mapping of *absolute model directory* to *model directory inside the docker image*) - -e MODEL_NAME="clothing-model" (set environment variable for docker image) - tensorflow/serving:2.7.0 (name of the image to run) Tensorflow uses special serving called `gRPC` protocol which is optimized to use binary data format. We need to convert our prediction into `protobuf`. ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 10: Kubernetes and TensorFlow Serving](./) * Previous: [Overview](01-overview.md) * Next: [Creating a pre-processing service](03-preprocessing.md) ================================================ FILE: 10-kubernetes/03-preprocessing.md ================================================ ## 10.3 Creating a pre-processing service In the previous section we created jupyter notebook to communicate with the model deployed with tensorflow. This notebook fetches an image, pre-processes it, turns it into protobuf, sends it to tensorflow-serving, does post-processing, and finally gives a human-readable answer. In this section we convert the notebook into python script to build a flask application. To convert the notebook into script we can run the command `jupyter nbconvert --to script notebook.ipynb`. We also rename the script to `gateway.py`. Then we create functions to prepare a request, send it, and prepare the response. For the flask app, we can reuse the code from session 5: ```python # Create flask app app = Flask('gateway') @app.route('/predict', methods=['POST']) def predict_endpoint(): data = request.get_json() url = data['url'] result = predict(url) return jsonify(result) ``` Our application has two components: docker container with tensorflow serving and flask application with the gateway. We also want to put everything in the `pipenv` for deployment. For that we need to install few libraries with pipenv: `pipenv install grpcio==1.42.0 flask gunicorn keras-image-helper`. As we discussed tensorflow is a large library and we don't want to use it in our application. Instead we can use the following script to convert numpy array into protobuf format and import the `np_to_protobuf` function into our `gateway.py` script. In order the make the script work we need to install the following libraries as well `pipenv install tensorflow-protobuf==2.7.0 protobuf==3.19`: ```python from tensorflow.core.framework import tensor_pb2, tensor_shape_pb2, types_pb2 def dtypes_as_dtype(dtype): if dtype == "float32": return types_pb2.DT_FLOAT raise Exception("dtype %s is not supported" % dtype) def make_tensor_proto(data): shape = data.shape dims = [tensor_shape_pb2.TensorShapeProto.Dim(size=i) for i in shape] proto_shape = tensor_shape_pb2.TensorShapeProto(dim=dims) proto_dtype = dtypes_as_dtype(data.dtype) tensor_proto = tensor_pb2.TensorProto(dtype=proto_dtype, tensor_shape=proto_shape) tensor_proto.tensor_content = data.tostring() return tensor_proto def np_to_protobuf(data): if data.dtype != "float32": data = data.astype("float32") return make_tensor_proto(data) ``` **Links** - Bash script to create custom tf-serving-protobuf and compile: https://github.com/alexeygrigorev/tensorflow-protobuf/blob/main/tf-serving-proto.sh ## Notes Add notes from the video (PRs are welcome) * turn jupyter notebook into flask app * the notebook communicates with the model deployed with tensorflow * the notebook fetches an image, pre-processes it, turns it into protobuf, sends it to tensorflow-serving, does post-processing and finally gives a human-readable answer * convert notebook into python script and call the script gateway * prepare request, send request, prepare response * you can reuse the flask app code from session 5 * two components: docker container with tensorflow serving and flask application with the gateway * be aware of the library sizes: tensorflow 1.7 GB, tensorflow CPU ~400 MB, tensorflow serving * turn numpy array into protobuf format * tensorflow protobuf
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 10: Kubernetes and TensorFlow Serving](./) * Previous: [TensorFlow Serving](02-tensorflow-serving.md) * Next: [Running everything locally with Docker-compose](04-docker-compose.md) ================================================ FILE: 10-kubernetes/04-docker-compose.md ================================================ ## 10.4 Running everything locally with Docker-compose [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-10-kubernetes) Docker Compose is a tool that helps us to define and share multi-container applications. With Compose, we can create a YAML file to define the services (in our case it is `gateway` service and `clothing-model` model) and with a single command, we can spin everything up or tear it all down. Docker compose is very useful to test the application locally. Instead of mapping the volumn, port, and then running the docker in the terminal for our tf-serving model (clothing-model), we want to create a docker image and put everything in there. For this we want to create docker image by the name `image-model.dockerfile`: ```dockerfile FROM tensorflow/serving:2.7.0 # Copy model in the image COPY clothing-model /models/clothing-model/1 # Specify environmental variable ENV MODEL_NAME="clothing-model" ``` To build the image we also need to specify the dockerfile name along with the tag, for example, `docker build -t clothing-model:xception-v4-001 -f image-model.dockerfile .` Since we have created the dockerfile to the image, we can simply run the image with `docker run -it --rm -p 8500:8500 clothing-model:xception-v4-001` Similarly we can do the same thing for our gateway service. The file name is `image-gateway.dockerfile`: ```dockerfile FROM python:3.8.12-slim RUN pip install pipenv # Create working directory in docker image WORKDIR /app # Copy Pipfile and Pipfile.lock files in working dir COPY ["Pipfile", "Pipfile.lock", "./"] # Install required packages using pipenv RUN pipenv install --system --deploy # Copy gateway and protobuf scripts in the working dir COPY ["gateway.py", "protobuf.py", "./"] EXPOSE 9696 ENTRYPOINT ["gunicorn", "--bind=0.0.0.0:9696", "gateway:app"] ``` Build image: `docker build -t clothing-model-gateway:001 -f image-gateway.dockerfile .` Run image: `docker run -it --rm -p 9696:9696 clothing-gateway:001` Upon running these two containers and testing for prediction, we should expect connection error. This is because the gateway service is unable to communicate with tf-serving. In order to connect the two containers and work simultaneously we need docker compose. Docker compose require yaml file which will be executed when running the commands from docker compose, usually the file is named as `docker-compose.yaml`: ```yaml version: "3.9" services: clothing-model: # tf-serving model image: zoomcamp-10-model:xception-v4-001 gateway: # flask gateway service image: zoomcamp-10-gateway:002 # new version environment: - TF_SERVING_HOST=clothing-model:8500 # look for clothing model and port 8500 ports: # map host machine with gateway - "9696:9696" ``` Now we also need to make slight changes in the `gateway.py` to make the environment variable configurable and assign it to the host. This can be done using `host = os.getenv('TF_SERVING_HOST', 'localhost:8500')` Running the command `docker-compose up` will establish this connection between both images, and as everything is configured properly we should have the request predictions. **Useful commands** - `docker-compose up`: run docker compose - `docker-compose up -d`: run docker compose in detached mode - `docker ps`: to see the running containers - `docker-compose down`: stop the docker compose ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 10: Kubernetes and TensorFlow Serving](./) * Previous: [Creating a pre-processing service](03-preprocessing.md) * Next: [Introduction to Kubernetes](05-kubernetes-intro.md) ================================================ FILE: 10-kubernetes/05-kubernetes-intro.md ================================================ ## 10.5 Introduction to Kubernetes [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-10-kubernetes) Kubernetes, also known as **K8s**, is an open-source system for automating the deployment, scaling, and management of containerized applications. ### 🧩 Anatomy of a Kubernetes Cluster Imagine we have a Kubernetes cluster. Within this cluster, there are **nodes** (servers or computers running the processes). On these nodes, we find 🐳 **pods:** containers that run specific images, with allocated resources like **RAM/CPU**. Pods are typically grouped into **deployments** 📦. All pods in a deployment share the same Docker image and configuration. Think of a deployment as a set of identical workers, ready to process requests. For example, our **gateway service** can be structured as a deployment. - Larger pods require more resources 💪. - In addition to pods, Kubernetes uses **services** 🛎️, such as: - 🌐 `gateway service`: An entry point for external requests. - 🤖 `tf-model service`: Manages communication with model-serving pods. ### 🔄 How it Works 1. When a user uploads an image 🖼️ to the website, the request first reaches the **gateway service**. 2. The gateway routes the request to one of the available pods, distributing traffic evenly (load balancing ⚖️). 3. After pre-processing, the gateway deployment forwards the request to the **model service**. 4. The model service routes the request to a pod in the `tf-serving` deployment. 5. Predictions are made 🔮 and sent back to the user, following the same path. ### 📍 Service Types Kubernetes services act as entry points to route requests to the correct pods: - **External Services** (`Load Balancer` 🌐): Accessible from outside the cluster. Example: `gateway service`. - **Internal Services** (`Cluster IP` 🔒): Accessible **only** within the cluster. Example: `model service`. At the front of the cluster, there’s an **entry point** called `INGRESS` 🚪. This directs user traffic to the appropriate external services. ### ⚙️ Scaling with Kubernetes To handle multiple users simultaneously, Kubernetes can launch additional pods 🚀. - As traffic increases, Kubernetes **automatically scales** the deployment up 🆙. - When traffic decreases, it scales down 🛑 to save resources. - This dynamic scaling is managed by the **Horizontal Pod Autoscaler (HPA)** 📊. - If existing nodes are overwhelmed, Kubernetes can even request the creation of new nodes to handle the extra load. Kubernetes ensures that your application stays responsive, efficient, and ready to scale at any moment! ## Notes Add notes from the video (PRs are welcome) * kubernetes is open source system for automating deployment scaling and management of containerized applications * to scale up = add more instances of our application * add more instances when load increases and remove instances when load decreases * kubernetes cluster consists of nodes (running machines, servers) * each node can have multiple container * one container = one pod * grouping pods according to type of docker image * routing the request to the pods * external (visible, i.e. entry point) service/client vs internal service/client * HPA horizontal pod autoscaler = allocating resources depending on demand * Ingress * kubernetes configuration
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 10: Kubernetes and TensorFlow Serving](./) * Previous: [Running everything locally with Docker-compose](04-docker-compose.md) * Next: [Deploying a simple service to Kubernetes](06-kubernetes-simple-service.md) ================================================ FILE: 10-kubernetes/06-kubernetes-simple-service.md ================================================ ## 10.6 Deploying a simple service to Kubernetes [Slides](https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-10-kubernetes) ## Creating a cluster with Kind If you use WSL2 and get the following errors when creating a cluster with `kind create cluster` ``` ✗ Starting control-plane :joystick: ERROR: failed to create cluster: failed to init node with kubeadm: command "docker exec --privileged kind-control-plane kubeadm init --skip-phases=preflight --config=/kind/kubeadm.conf --skip-token-print --v=6" failed with error: exit status 1 the solution is to change the command: ``` Specify the node image: ``` kind create cluster --image kindest/node:v1.23.0 ``` In this section, we'll deploy a simple web application to a kubernetes cluster. For that, we'll implement the following steps: 1. Create a simple ping application in Flask - For this, we'll create a directory `ping` and for `pipenv` environment, we'll also create a separate `Pipfile` to avoid conflicts. Then we need to install `flask` and `gunicorn`. - We'll use the app that we built in session 5 by copying `ping.py` and `Dockerfile` with slight changes and then build the image. ```python # ping.py from flask import Flask app = Flask('ping-app') @app.route('/ping', methods=['GET']) def ping(): return 'PONG' if __name__=="__main__": app.run(debug=True, host='0.0.0.0', port=9696) ``` ```dockerfile # Dockerfile FROM python:3.9-slim RUN pip install pipenv WORKDIR /app COPY ["Pipfile", "Pipfile.lock", "./"] RUN pipenv install --system --deploy COPY "ping.py" . EXPOSE 9696 ENTRYPOINT ["gunicorn", "--bind=0.0.0.0:9696", "ping:app"] ``` - To build the image, we need to specify the app name along with the tag, otherwise the local kubernetes setup `kind` will cause problems, `docker build -t ping:v001 .`. Now we can run on docker container and on separate terminal, use the command `curl localhost:9696/ping` to test the application. 2. Install `kubectl` and `kind` to build and test cluster locally - We'll install kubectl from AWS because later we deploy our application on AWS: `curl -o kubectl https://s3.us-west-2.amazonaws.com/amazon-eks/1.24.7/2022-10-31/bin/linux/amd64/kubectl`. - To install `kind` to setup local kubernetes setup (executable binaries): `wget https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64 -O kind` > `chmod +x ./kind`. Once the utility is installed we need to place this into our `$PATH` at our preferred binary installation directory. 3. Setup kubernetes cluster and test it - First thing we need to do is to create a cluster: `kind create cluster` (default cluster name is kind) - Configure kubectl to interact with kind: `kubectl cluster-info --context kind-kind` - Check the running services to make sure it works: `kubectl get service` 4. Create a deployment - Kubernetes requires a lot of configuration and for that VS Code has a [handy extension](https://code.visualstudio.com/docs/azure/kubernetes) that can take a lot of hustle away. - Create `deployment.yaml` ```yaml apiVersion: apps/v1 kind: Deployment metadata: # name of the deployment name: ping-deployment spec: replicas: 1 # number of pods to create selector: matchLabels: # all pods that have the label app name 'ping' are belonged to 'ping-deployment' app: ping template: # template of pods (all pods have same configuration) metadata: labels: # each app gets the same label (i.e., ping in our case) app: ping spec: containers: # name of the container - name: ping-pod image: ping:v001 # docker image with tag resources: limits: memory: "128Mi" cpu: "500m" ports: - containerPort: 9696 # port to expose ``` - We can now apply the `deployment.yaml` to our kubernetes cluster: `kubectl apply -f deployment.yaml` - Next we need to load the docker image into our cluster: `kind load docker-image ping:v001` - Executing the command `kubectl get pod` should give the pod status running. - Test the pod by specifying the ports: `kubectl port-forward pod-name 9696:9696` and execute `curl localhost:9696/ping` to get the response. 5. Create service for deployment - Create `service.yaml` ```yaml apiVersion: v1 kind: Service metadata: # name of the service ('ping') name: ping spec: type: LoadBalancer # type of the service (external in this case) selector: # which pods qualify for forwarding requests app: ping ports: - port: 80 # port of the service targetPort: 9696 # port of the pod ``` - Apply `service.yaml`: `kubectl apply -f service.yaml` - Running `kubectl get service` will give us the list of external and internal services along with their *service type* and other information. - Test the service by port forwarding and specifying the ports: `kubectl port-forward service/ping 8080:80` (using 8080 instead to avoid permission requirement) and executing `curl localhost:8080/ping` should give us the output PONG. 6. Setup and use `MetalLB` as external load-balancer - Apply MetalLB manifest ``` kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.7/config/manifests/metallb-native.yaml ``` - Wait until the MetalLB pods (controller and speakers) are ready ``` kubectl wait --namespace metallb-system \ --for=condition=ready pod \ --selector=app=metallb \ --timeout=90s ``` - Setup address pool used by loadbalancers: - Get range of IP addresses on docker kind network ``` docker network inspect -f '{{.IPAM.Config}}' kind ``` - Create Ip address pool using `metallb-config.yaml` ```yaml apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: example namespace: metallb-system spec: addresses: - 172.20.255.200-172.20.255.250 --- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: empty namespace: metallb-system ``` - Apply deployment and service for updates ``` kubectl apply -f deployment.yaml kubectl apply -f service.yaml ``` - Get external LB_IP ``` kubectl get service ``` - Test using load-balancer ip address ``` curl :80/ping ``` ## Notes Add notes from the video (PRs are welcome) * kind = local kubernetes cluster https://github.com/kubernetes-sigs/kind * kubectl = tool for interacting with kubernetes cluster https://kubernetes.io/docs/reference/kubectl/ * yaml kubernetes configuration: allocating resources (RAM, CPU), templates, port labels * kubernetes ports/pods: requests, responses, forwarding, connection refusal
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 10: Kubernetes and TensorFlow Serving](./) * Previous: [Introduction to Kubernetes](05-kubernetes-intro.md) * Next: [Deploying TensorFlow models to Kubernetes](07-kubernetes-tf-serving.md) ================================================ FILE: 10-kubernetes/07-kubernetes-tf-serving.md ================================================ ## 10.7 Deploying TensorFlow models to Kubernetes In this section we'll deploy the tf-serving model to kubernetes. In order to do that we'll create a separate folder `kube-config` and implement the following steps: - Create deployment for the tf-serving model `model-deployment.yaml`: - ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: tf-serving-clothing-model spec: replicas: 1 selector: matchLabels: app: tf-serving-clothing-model template: metadata: labels: app: tf-serving-clothing-model spec: containers: - name: tf-serving-clothing-model image: zoomcamp-10-model:xception-v4-001 resources: limits: memory: "512Mi" cpu: "0.5" ports: - containerPort: 8500 ``` - Load the model image to kind: `kind load docker-image clothing-model:xception-v4-001` - Create model deployment: `kubectl apply -f model-deployment.yaml` - Get the running pod id for the model: `kubectl get pod` - Test the model deployment using the pod id: `kubectl port-forword tf-serving-clothing-model-85cd6dsb6-rfvg410m 8500:8500` and run `gateway.py` script to get the predictions. - Create service of tf-serving model `model-service.yaml`: - ```yaml apiVersion: v1 kind: Service metadata: name: tf-serving-clothing-model spec: type: ClusterIP # default service type is always ClusterIP (i.e., internal service) selector: app: tf-serving-clothing-model ports: - port: 8500 targetPort: 8500 ``` - Create model service: `kubectl apply -f model-service.yaml` - Check the model service: `kubectl get service`. - Test the model service: `kubectl port-forward service/tf-serving-clothing-model 8500:8500` and run `gateway.py` for predictions. - Create deployment for the gateway `gateway-deployment.yaml`: - ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: gateway spec: selector: matchLabels: app: gateway template: metadata: labels: app: gateway spec: containers: - name: gateway image: zoomcamp-10-gateway:002 resources: limits: memory: "128Mi" cpu: "100m" ports: - containerPort: 9696 env: # set the environment variable for model - name: TF_SERVING_HOST value: tf-serving-clothing-model.default.svc.cluster.local:8500 # kubernetes naming convention ``` - Load the gateway image to kind: `kind load docker-image clothing-model-gateway:002` - Create gateway deployment `kubectl apply -f gateway-deployment.yaml` and get the running pod id `kubectl get pod` - Test the gateway pod: `kubectl port-forward gateway-6b945f541-9gptfd 9696:9696` and execute `test.py` for getting predictions. - Create service of tf-serving model `gateway-service.yaml`: - ```yaml apiVersion: v1 kind: Service metadata: name: gateway spec: type: LoadBalancer # External service to communicate with client (i.e., LoadBalancer) selector: app: gateway ports: - port: 80 # port of the service targetPort: 9696 # port of load balancer ``` - Create gateway service: `kubectl apply -f gateway-service.yaml` - Get service id: `kubectl get service` - Test the gateway service: `kubectl port-forward service/gateway 8080:80` and replace the url on `test.py` to 8080 to get predictions. **Links** - Article to come over load balancing problem in production: https://kubernetes.io/blog/2018/11/07/grpc-load-balancing-on-kubernetes-without-tears/ ## Notes Add notes from the video (PRs are welcome) * tensorflow serving in C++, gateway service as flask app * gateway service: image preprocessing (i.e. resizing), prepare matrix, numpy arr, convert to protobuf, gRPC to communicate with tensorflow serving; postprocessing * using telnet to check kubernetes pod
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 10: Kubernetes and TensorFlow Serving](./) * Previous: [Deploying a simple service to Kubernetes](06-kubernetes-simple-service.md) * Next: [Deploying to EKS](08-eks.md) ================================================ FILE: 10-kubernetes/08-eks.md ================================================ ## 10.8 Deploying to EKS In this section, we'll create Elastic Kubernetes Service (EKS) cluster on Amazon using cli, publish images to ECR and configure kubectl. To create cluster and manage on EKS we'll use a cli tool `eksctl` which can be downloaded from [here](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html). And next we'll follow these steps: - In the `kube-config` folder create eks config file `eks-config.yaml`: - ```yaml apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: mlzoomcamp-eks region: ap-south-1 nodeGroups: # for our case, we need only one node group (CPU) - name: ng-m5-xlarge instanceType: m5.xlarge desiredCapacity: 1 ``` - Create eks cluster: `eksctl create cluster -f eks-config.yaml` - Publish local docker images to ECR: - Create aws ecr repository for eks cluster: `aws ecr create-repository --repository-name mlzoomcamp-images` - Bash commands to run in the terminal to push docker images to ecr repository: - ```bash # Registry URI ACCOUNT_ID=22782589 REGION=ap-south-123 REGISTRY_NAME=mlzoomcamp-images PREFIX=${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${REGISTRY_NAME} # Tag local docker images to remote tag GATEWAY_LOCAL=zoomcamp-10-gateway:002 # gateway service GATEWAY_REMOTE=${PREFIX}:clothing-model-gateway-002 # notice the ':' is replaced with '-' before 002 docker tag ${GATEWAY_LOCAL} ${GATEWAY_REMOTE} MODEL_LOCAL=zoomcamp-10-model:xception-v4-001 # tf-serving model MODEL_REMOTE=${PREFIX}:clothing-model-xception-v4-001 # same thing ':' is replaced with '-' before xception docker tag ${MODEL_LOCAL} ${MODEL_REMOTE} # Push tagged docker images docker push ${MODEL_REMOTE} docker push ${GATEWAY_REMOTE} ``` - Login to ecr and push images: `$(aws ecr get-login --no-include-email)`, first push the model and then gateway remote image. - Get the uri of these images `echo ${MODEL_REMOTE}` and `echo ${GATEWAY_REMOTE}` and add them to `model-deployment.yaml` and `gate-deployment.yaml` respectively. - Apply all the yaml config files to remote node coming from eks (`kubectl get nodes`): - `kubectl apply -f model-deployment.yaml` - `kubectl apply -f model-service.yaml` - `kubectl apply -f gateway-deployment.yaml` - `kubectl apply -f gateway-service.yaml` - Testing the deployment pods and services should give us predictions. - Executing `kubectl get service` should give us the *external port* address which need to add in the `test.py` as access url for predictions (e.g., `url = 'http://a3399e***-5180***.ap-south-123.elb.amazonaws.com/predict'`). - To delete the remote cluster: `eksctl delete cluster --name mlzoomcamp-eks` **NB:** EKS is not part of the Amazon Web Services Free Tier. ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 10: Kubernetes and TensorFlow Serving](./) * Previous: [Deploying TensorFlow models to Kubernetes](07-kubernetes-tf-serving.md) * Next: [Summary](09-summary.md) ================================================ FILE: 10-kubernetes/09-summary.md ================================================ ## 10.9 Summary In the session 10 we covered the following concepts: - TF-Serving is a system for deploying TensorFlow models - When using TF-Serving, we need a component for pre-processing - Kubernetes is a container orchestration platform - To deploy something on Kubernetes, we need to specify a deployment and a service - You can use Docker compose and Kind for local experiments ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 10: Kubernetes and TensorFlow Serving](./) * Previous: [Deploying to EKS](08-eks.md) * Next: [Explore more](10-explore-more.md) ================================================ FILE: 10-kubernetes/10-explore-more.md ================================================ ## 10.10 Explore more - Other local Kubernetes: minikube, k3d, k3s, microk8s, EKS Anywhere - [Rancher desktop](https://rancherdesktop.io/) - [Docker desktop](https://www.docker.com/products/docker-desktop/) - [Lens](https://k8slens.dev/) - Many cloud providers have Kubernetes: GCP, Azure, Digital ocean and others. Look for "Managed Kubernetes" in your favourite search engine - Deploy the model from previous modules and from your project with Kubernetes - Learn about Kubernetes namespaces. Here we used the default namespace ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 10: Kubernetes and TensorFlow Serving](./) * Previous: [Summary](09-summary.md) * Next: [Homework](homework.md) ================================================ FILE: 10-kubernetes/README.md ================================================ ## 10. Kubernetes and TensorFlow Serving Note: these materials are partly outdated, which is why we recorded a workshop that updates this module. You will find the materials in the [workshop/](workshop/) folder You don't need to watch any of the module videos. But lessons 10.5 and 10.8 may still be useful. - 10.1 [Overview](01-overview.md) - 10.2 [TensorFlow Serving](02-tensorflow-serving.md) - 10.3 [Creating a pre-processing service](03-preprocessing.md) - 10.4 [Running everything locally with Docker-compose](04-docker-compose.md) - 10.5 [Introduction to Kubernetes](05-kubernetes-intro.md) - 10.6 [Deploying a simple service to Kubernetes](06-kubernetes-simple-service.md) - 10.7 [Deploying TensorFlow models to Kubernetes](07-kubernetes-tf-serving.md) - 10.8 [Deploying to EKS](08-eks.md) - 10.9 [Summary](09-summary.md) - 10.10 [Explore more](10-explore-more.md) - 10.11 [Homework](homework.md) ## Community notes Did you take notes? You can share them here (or in each unit separately) * [Alvaro Navas' Notes](https://github.com/ziritrion/ml-zoomcamp/blob/main/notes/10_kubernetes.md) * [Notes from Oscar Garcia](https://github.com/ozkary/machine-learning-engineering/tree/main/10-kubernetes) * [Notes from Maximilien Eyengue](https://github.com/maxim-eyengue/Python-Codes/blob/main/ML_Zoomcamp_2024/10_kubernetes/Summary_Session_10.md) * [Notes from Revathy Ramalingam](https://github.com/RevathyRamalingam/machineLearning/tree/main/10-kubernetes/README.md) * Add your notes here ================================================ FILE: 10-kubernetes/code/Pipfile ================================================ [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] grpcio = "==1.42.0" flask = "*" gunicorn = "*" keras-image-helper = "*" tensorflow-protobuf = "==2.7.0" [dev-packages] [requires] python_version = "3.8" ================================================ FILE: 10-kubernetes/code/README.md ================================================ ``` saved_model_cli docker run -it --rm \ -p 8500:8500 \ -v $(pwd)/clothing-model:/models/clothing-model/1 \ -e MODEL_NAME="clothing-model" \ tensorflow/serving:2.7.0 docker build -t zoomcamp-10-model:xception-v4-001 \ -f image-model.dockerfile . docker run -it --rm \ -p 8500:8500 \ zoomcamp-10-model:xception-v4-001 docker build -t zoomcamp-10-gateway:002 \ -f image-gateway.dockerfile . docker run -it --rm \ -p 9696:9696 \ zoomcamp-10-gateway:001 docker-compose up docker-compose up -d docker-compose down docker build -t ping:v001 . docker run -it --rm -p 9696:9696 ping:v001 kind create cluster kubectl get service kubectl get pod kubectl get deployment kubectl apply -f deployment.yaml kind load docker-image ping:v001 kubectl port-forward ping-deployment-7df687f8cd-tfkgd 9696:9696 kubectl apply -f service.yaml kubectl port-forward service/ping 8080:80 kind load docker-image zoomcamp-10-model:xception-v4-001 kubectl port-forward tf-serving-clothing-model-85cd4b7fc9-rntfw 8500:8500 kubectl port-forward service/tf-serving-clothing-model 8500:8500 kind load docker-image zoomcamp-10-gateway:002 kubectl exec -it ping-deployment-577d56ccf5-p2bdq -- bash apt update apt install curl telnet telnet tf-serving-clothing-model.default.svc.cluster.local 8500 kubectl port-forward service/gateway 8080:80 ACCOUNT_ID=387546586013 REGION=eu-west-1 REGISTRY_NAME=mlzoomcamp-images PREFIX=${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/${REGISTRY_NAME} GATEWAY_LOCAL=zoomcamp-10-gateway:002 GATEWAY_REMOTE=${PREFIX}:zoomcamp-10-gateway-002 docker tag ${GATEWAY_LOCAL} ${GATEWAY_REMOTE} MODEL_LOCAL=zoomcamp-10-model:xception-v4-001 MODEL_REMOTE=${PREFIX}:zoomcamp-10-model-xception-v4-001 docker tag ${MODEL_LOCAL} ${MODEL_REMOTE} docker push ${MODEL_REMOTE} docker push ${GATEWAY_REMOTE} eksctl create cluster -f eks-config.yaml eksctl delete cluster --name mlzoomcamp-eks ``` ================================================ FILE: 10-kubernetes/code/docker-compose.yaml ================================================ version: "3.9" services: clothing-model: image: zoomcamp-10-model:xception-v4-001 gateway: image: zoomcamp-10-gateway:002 environment: - TF_SERVING_HOST=clothing-model:8500 ports: - "9696:9696" ================================================ FILE: 10-kubernetes/code/gateway.py ================================================ #!/usr/bin/env python # coding: utf-8 import os import grpc import tensorflow as tf from tensorflow_serving.apis import predict_pb2 from tensorflow_serving.apis import prediction_service_pb2_grpc from keras_image_helper import create_preprocessor from flask import Flask from flask import request from flask import jsonify from proto import np_to_protobuf host = os.getenv('TF_SERVING_HOST', 'localhost:8500') channel = grpc.insecure_channel(host) stub = prediction_service_pb2_grpc.PredictionServiceStub(channel) preprocessor = create_preprocessor('xception', target_size=(299, 299)) def prepare_request(X): pb_request = predict_pb2.PredictRequest() pb_request.model_spec.name = 'clothing-model' pb_request.model_spec.signature_name = 'serving_default' pb_request.inputs['input_8'].CopyFrom(np_to_protobuf(X)) return pb_request classes = [ 'dress', 'hat', 'longsleeve', 'outwear', 'pants', 'shirt', 'shoes', 'shorts', 'skirt', 't-shirt' ] def prepare_response(pb_response): preds = pb_response.outputs['dense_7'].float_val return dict(zip(classes, preds)) def predict(url): X = preprocessor.from_url(url) pb_request = prepare_request(X) pb_response = stub.Predict(pb_request, timeout=20.0) response = prepare_response(pb_response) return response app = Flask('gateway') @app.route('/predict', methods=['POST']) def predict_endpoint(): data = request.get_json() url = data['url'] result = predict(url) return jsonify(result) if __name__ == '__main__': # url = 'http://bit.ly/mlbookcamp-pants' # response = predict(url) # print(response) app.run(debug=True, host='0.0.0.0', port=9696) ================================================ FILE: 10-kubernetes/code/image-gateway.dockerfile ================================================ FROM python:3.8.12-slim RUN pip install pipenv WORKDIR /app COPY ["Pipfile", "Pipfile.lock", "./"] RUN pipenv install --system --deploy COPY ["gateway.py", "proto.py", "./"] EXPOSE 9696 ENTRYPOINT ["gunicorn", "--bind=0.0.0.0:9696", "gateway:app"] ================================================ FILE: 10-kubernetes/code/image-model.dockerfile ================================================ FROM tensorflow/serving:2.7.0 COPY clothing-model /models/clothing-model/1 ENV MODEL_NAME="clothing-model" ================================================ FILE: 10-kubernetes/code/kube-config/eks-config.yaml ================================================ apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: mlzoomcamp-eks region: eu-west-1 nodeGroups: - name: ng-m5-xlarge instanceType: m5.xlarge desiredCapacity: 1 ================================================ FILE: 10-kubernetes/code/kube-config/gateway-deployment.yaml ================================================ apiVersion: apps/v1 kind: Deployment metadata: name: gateway spec: selector: matchLabels: app: gateway template: metadata: labels: app: gateway spec: containers: - name: gateway image: 387546586013.dkr.ecr.eu-west-1.amazonaws.com/mlzoomcamp-images:zoomcamp-10-gateway-002 resources: limits: memory: "128Mi" cpu: "100m" ports: - containerPort: 9696 env: - name: TF_SERVING_HOST value: tf-serving-clothing-model.default.svc.cluster.local:8500 ================================================ FILE: 10-kubernetes/code/kube-config/gateway-service.yaml ================================================ apiVersion: v1 kind: Service metadata: name: gateway spec: type: LoadBalancer selector: app: gateway ports: - port: 80 targetPort: 9696 ================================================ FILE: 10-kubernetes/code/kube-config/model-deployment.yaml ================================================ apiVersion: apps/v1 kind: Deployment metadata: name: tf-serving-clothing-model spec: replicas: 1 selector: matchLabels: app: tf-serving-clothing-model template: metadata: labels: app: tf-serving-clothing-model spec: containers: - name: tf-serving-clothing-model image: 387546586013.dkr.ecr.eu-west-1.amazonaws.com/mlzoomcamp-images:zoomcamp-10-model-xception-v4-001 resources: limits: memory: "512Mi" cpu: "0.5" ports: - containerPort: 8500 ================================================ FILE: 10-kubernetes/code/kube-config/model-service.yaml ================================================ apiVersion: v1 kind: Service metadata: name: tf-serving-clothing-model spec: selector: app: tf-serving-clothing-model ports: - port: 8500 targetPort: 8500 ================================================ FILE: 10-kubernetes/code/ping/Dockerfile ================================================ FROM python:3.8.12-slim RUN pip install pipenv WORKDIR /app COPY ["Pipfile", "Pipfile.lock", "./"] RUN pipenv install --system --deploy COPY "ping.py" . EXPOSE 9696 ENTRYPOINT ["gunicorn", "--bind=0.0.0.0:9696", "ping:app"] ================================================ FILE: 10-kubernetes/code/ping/Pipfile ================================================ [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] flask = "*" gunicorn = "*" [dev-packages] [requires] python_version = "3.8" ================================================ FILE: 10-kubernetes/code/ping/deployment.yaml ================================================ apiVersion: apps/v1 kind: Deployment metadata: name: ping-deployment spec: replicas: 1 selector: matchLabels: app: ping template: metadata: labels: app: ping spec: containers: - name: ping-pod image: ping:v001 resources: limits: memory: "128Mi" cpu: "200m" ports: - containerPort: 9696 ================================================ FILE: 10-kubernetes/code/ping/metallb-config.yaml ================================================ apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: example namespace: metallb-system spec: addresses: - 172.20.255.200-172.20.255.250 --- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: empty namespace: metallb-system ================================================ FILE: 10-kubernetes/code/ping/ping.py ================================================ from flask import Flask app = Flask('ping') @app.route('/ping', methods=['GET']) def ping(): return "PONG" if __name__ == "__main__": app.run(debug=True, host='0.0.0.0', port=9696) ================================================ FILE: 10-kubernetes/code/ping/service.yaml ================================================ apiVersion: v1 kind: Service metadata: name: ping spec: type: LoadBalancer selector: app: ping ports: - port: 80 targetPort: 9696 ================================================ FILE: 10-kubernetes/code/plan.md ================================================ # 10. Kubernetes and TensorFlow Serving We'll deploy the clothes classification model we trained previously using Kubernetes and TensorFlow Serving ## 10.1 Overview * What we'll cover this week * Two-tier architecture ## 10.2 TensorFlow Serving * The saved_model format * Running TF-Serving locally with Docker * Invoking the model from Jupyter ## 10.3 Creating a pre-processing service * Converting the notebook to a Python script * Wrapping the script into a Flask app * Creating the virtual env with Pipenv * Getting rid of the tensorflow dependency ## 10.4 Running everything locally with Docker-compose * Preparing the images * Installing docker-compose * Running the service * Testing the service ## 10.5 Introduction to Kubernetes * The anatomy of a Kubernetes cluster ## 10.6 Deploying a simple service to Kubernetes * Create a simple ping application in Flask * Installing kubectl * Setting up a local Kubernetes cluster with Kind * Creating a deployment * Creating a service ## 10.7 Deploying TensorFlow models to Kubernetes * Deploying the TF-Serving model * Deploying the Gateway * Testing the service ## 10.8 Deploying to EKS * Creating a EKS cluster on AWS * Publishing the image to ECR ## 10.9 Summary * TF-Serving is a system for deploying TensorFlow models * When using TF-Serving, we need a component for pre-processing * Kubernetes is a container orchestration platform * To deploy something on Kubernetes, we need to specify a deployment and a service * You can use Docker compose and Kind for local experiments ## 10.10 Explore more * Other local Kuberneteses: minikube, k3d, k3s, microk8s, EKS Anywhere * [Rancher desktop](https://rancherdesktop.io/) * Docker desktop * [Lens](https://k8slens.dev/) * Many cloud providers have Kubernetes: GCP, Azure, Digital ocean and others. Look for "Managed Kubernetes" in your favourite search engine * Deploy the model from previous modules and from your project with Kubernetes * Learn about Kubernetes namespaces. Here we used the default namespace ================================================ FILE: 10-kubernetes/code/proto.py ================================================ from tensorflow.core.framework import tensor_pb2, tensor_shape_pb2, types_pb2 def dtypes_as_dtype(dtype): if dtype == "float32": return types_pb2.DT_FLOAT raise Exception("dtype %s is not supported" % dtype) def make_tensor_proto(data): shape = data.shape dims = [tensor_shape_pb2.TensorShapeProto.Dim(size=i) for i in shape] proto_shape = tensor_shape_pb2.TensorShapeProto(dim=dims) proto_dtype = dtypes_as_dtype(data.dtype) tensor_proto = tensor_pb2.TensorProto(dtype=proto_dtype, tensor_shape=proto_shape) tensor_proto.tensor_content = data.tostring() return tensor_proto def np_to_protobuf(data): if data.dtype != "float32": data = data.astype("float32") return make_tensor_proto(data) ================================================ FILE: 10-kubernetes/code/test.py ================================================ import requests url = 'http://localhost:9696/predict' data = {'url': 'http://bit.ly/mlbookcamp-pants'} result = requests.post(url, json=data).json() print(result) ================================================ FILE: 10-kubernetes/code/tf-serving-connect.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "id": "7a5e8837", "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "IPython.notebook.set_autosave_interval(0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Autosave disabled\n" ] } ], "source": [ "%autosave 0" ] }, { "cell_type": "code", "execution_count": null, "id": "1588cca2", "metadata": {}, "outputs": [], "source": [ "!pip install grpcio==1.42.0 tensorflow-serving-api==2.7.0" ] }, { "cell_type": "code", "execution_count": null, "id": "6e4788a2", "metadata": {}, "outputs": [], "source": [ "!pip install keras-image-helper" ] }, { "cell_type": "code", "execution_count": 5, "id": "78a456a7", "metadata": {}, "outputs": [], "source": [ "import grpc\n", "\n", "import tensorflow as tf\n", "\n", "from tensorflow_serving.apis import predict_pb2\n", "from tensorflow_serving.apis import prediction_service_pb2_grpc" ] }, { "cell_type": "code", "execution_count": 6, "id": "e09c215c", "metadata": {}, "outputs": [], "source": [ "host = 'localhost:8500'\n", "\n", "channel = grpc.insecure_channel(host)\n", "\n", "stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)" ] }, { "cell_type": "code", "execution_count": 8, "id": "4fdffcc1", "metadata": {}, "outputs": [], "source": [ "from keras_image_helper import create_preprocessor" ] }, { "cell_type": "code", "execution_count": 9, "id": "c77766e1", "metadata": {}, "outputs": [], "source": [ "preprocessor = create_preprocessor('xception', target_size=(299, 299))" ] }, { "cell_type": "code", "execution_count": 11, "id": "aa686a62", "metadata": {}, "outputs": [], "source": [ "url = 'http://bit.ly/mlbookcamp-pants'\n", "X = preprocessor.from_url(url)" ] }, { "cell_type": "code", "execution_count": 14, "id": "6e9810d1", "metadata": {}, "outputs": [], "source": [ "def np_to_protobuf(data):\n", " return tf.make_tensor_proto(data, shape=data.shape)" ] }, { "cell_type": "code", "execution_count": 16, "id": "3659a577", "metadata": {}, "outputs": [], "source": [ "pb_request = predict_pb2.PredictRequest()\n", "\n", "pb_request.model_spec.name = 'clothing-model'\n", "pb_request.model_spec.signature_name = 'serving_default'\n", "\n", "pb_request.inputs['input_8'].CopyFrom(np_to_protobuf(X))" ] }, { "cell_type": "code", "execution_count": 18, "id": "6823df3d", "metadata": {}, "outputs": [], "source": [ "pb_response = stub.Predict(pb_request, timeout=20.0)" ] }, { "cell_type": "code", "execution_count": 22, "id": "f0dece29", "metadata": {}, "outputs": [], "source": [ "preds = pb_response.outputs['dense_7'].float_val" ] }, { "cell_type": "code", "execution_count": 23, "id": "f5b392f3", "metadata": {}, "outputs": [], "source": [ "classes = [\n", " 'dress',\n", " 'hat',\n", " 'longsleeve',\n", " 'outwear',\n", " 'pants',\n", " 'shirt',\n", " 'shoes',\n", " 'shorts',\n", " 'skirt',\n", " 't-shirt'\n", "]" ] }, { "cell_type": "code", "execution_count": 24, "id": "a77fb533", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'dress': -1.8682901859283447,\n", " 'hat': -4.761244773864746,\n", " 'longsleeve': -2.316983461380005,\n", " 'outwear': -1.062570333480835,\n", " 'pants': 9.88715934753418,\n", " 'shirt': -2.8124334812164307,\n", " 'shoes': -3.666282892227173,\n", " 'shorts': 3.200361490249634,\n", " 'skirt': -2.6023383140563965,\n", " 't-shirt': -4.835045337677002}" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dict(zip(classes, preds))" ] }, { "cell_type": "code", "execution_count": null, "id": "588ccdc9", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 10-kubernetes/homework.md ================================================ ## Homework * For 2025 cohort homework, check [the 2025 cohort folder](../cohorts/2025/10-kubernetes/homework.md) * For 2024 cohort homework, check [the 2024 cohort folder](../cohorts/2024/) * For 2023 cohort homework, check [the 2023 cohort folder](../cohorts/2023/) * For 2022 cohort homework, check [the 2022 cohort folder](../cohorts/2022/) * For 2021 cohort homework and solution, check [the 2021 cohort folder](../cohorts/2021/10-kubernetes/) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 10: Kubernetes and TensorFlow Serving](./) * Previous: [Explore more](10-explore-more.md) ================================================ FILE: 10-kubernetes/meta.csv ================================================ lesson,name,page_name,video,slides,notebook 1,Overview,01-overview.md,https://www.youtube.com/watch?v=mvPER7YfTkw,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-10-kubernetes, 2,TensorFlow Serving,02-tensorflow-serving.md,https://www.youtube.com/watch?v=deXR2fThYDw,, 3,Creating a pre-processing service,03-preprocessing.md,https://www.youtube.com/watch?v=OIlrS14Zi0o,,code/tf-serving-connect.ipynb 4,Running everything locally with Docker-compose,04-docker-compose.md,https://www.youtube.com/watch?v=ZhQQfpWfkKY,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-10-kubernetes, 5,Introduction to Kubernetes,05-kubernetes-intro.md,https://www.youtube.com/watch?v=UjVkpszDzgk,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-10-kubernetes, 6,Deploying a simple service to Kubernetes,06-kubernetes-simple-service.md,https://www.youtube.com/watch?v=PPUCVRIV9t8,https://www.slideshare.net/AlexeyGrigorev/ml-zoomcamp-10-kubernetes, 7,Deploying TensorFlow models to Kubernetes,07-kubernetes-tf-serving.md,https://www.youtube.com/watch?v=6vHLMdnjO2w,, 8,Deploying to EKS,08-eks.md,https://www.youtube.com/watch?v=89jxeddZtC0,, 9,Summary,09-summary.md,https://www.youtube.com/watch?v=J5LMRTIu4jY,, 10,Explore more,10-explore-more.md,,, 11,Homework,homework.md,,, ================================================ FILE: 10-kubernetes/meta.json ================================================ { "data": "meta.csv", "session": 10, "name": "Kubernetes and TensorFlow Serving" } ================================================ FILE: 10-kubernetes/workshop/README.md ================================================ # Model Deployment with Kubernetes and ONNX * Video: https://www.youtube.com/live/c_CzCsCnWoU?si=fgQ56JwunM3NoiWm In this workshop, we will explore deploying ML models using Kubernetes, building upon concepts from: - [Module 5 - FastAPI deployment](../../05-deployment/) - [Module 9 - Serverless and ONNX](../../09-serverless/) Instead of deploying to AWS Lambda, we'll deploy to a local Kubernetes cluster using Kind (Kubernetes in Docker), making it accessible and cost-free for learners. We will not cover theory in detail. For that, refer to the old content of [ML Zoomcamp module 10](../). ## Plan The plan for the workshop: - Setting up local Kubernetes with Kind - Building a FastAPI service for ONNX model inference - Containerizing the service with Docker - Deploying to Kubernetes - Scaling with Horizontal Pod Autoscaler - Health checks and resource management ## Prerequisites - Docker - Basic understanding of Python and ML models - Familiarity with FastAPI ## Environment Setup First, let's install the required tools. ### Install kubectl kubectl is the Kubernetes command-line tool. **Windows (with Chocolatey):** ```bash choco install kubernetes-cli ``` **macOS:** ```bash brew install kubectl ``` **Linux:** ```bash cd mkdir bin && cd bin curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl cd export PATH="${PATH}:${HOME}/bin" # add it to .bashrc which kubectl ``` Verify installation: ```bash kubectl version --client ``` ### Install Kind Kind (Kubernetes in Docker) allows you to run Kubernetes clusters locally using Docker containers. **Windows (with Chocolatey):** ```bash choco install kind ``` **macOS:** ```bash brew install kind ``` **Linux:** ```bash curl -Lo ${HOME}/bin/kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64 chmod +x ${HOME}/bin/kind ``` Verify installation: ```bash kind version ``` ### Install uv ```bash pip install uv ``` ### Create a Kind Cluster Let's create a local Kubernetes cluster: ```bash kind create cluster --name mlzoomcamp ``` This will: - Create a single-node Kubernetes cluster - Configure kubectl to use this cluster - Take a few minutes on first run (downloads images) Verify the cluster is running: ```bash kubectl cluster-info kubectl get nodes ``` You should see one node in "Ready" status. ## Model Preparation We will use a pre-trained PyTorch model that classifies clothing items. The model has already been converted to ONNX format. Download the ONNX model: ```bash mkdir service cd service wget https://github.com/DataTalksClub/machine-learning-zoomcamp/releases/download/dl-models/clothing_classifier_mobilenet_v2_latest.onnx -O clothing-model.onnx ``` **Note:** If you want to learn how to convert PyTorch models to ONNX, check the [mlzoomcamp-serverless workshop](../mlzoomcamp-serverless/README.md#aws-lambda-pytorch-models). The model predicts one of 10 clothing categories from an image URL. ## Building the FastAPI Service We will create a FastAPI application that serves the ONNX model for inference. The service structure is similar to what we built in the [FastAPI workshop](../mlzoomcamp-fastapi-uv/), but adapted for ONNX models. First, initialize the project: ```bash # cd service uv init rm main.py ``` Add dependencies: ```bash uv add fastapi uvicorn onnxruntime keras-image-helper numpy ``` Now create the FastAPI application. See [`service/app.py`](service/app.py). **Key points:** - Uses ONNX Runtime for inference - Custom PyTorch-style preprocessing function (the PyTorch model requires specific normalization) - `keras-image-helper` for image preprocessing - Pydantic models for input/output validation - Health endpoint for Kubernetes health checks ### Testing Locally Run the service: ```bash uv run uvicorn app:app --host 0.0.0.0 --port 8080 --reload ``` Open http://localhost:8080/docs to see the API documentation. Create a test script [`service/test.py`](service/test.py): ```python import requests url = 'http://localhost:8080/predict' request = { "url": "http://bit.ly/mlbookcamp-pants" } response = requests.post(url, json=request) result = response.json() print(f"Top prediction: {result['top_class']} ({result['top_probability']:.2%})") print(f"\nAll predictions:") for cls, prob in result['predictions'].items(): print(f" {cls:12s}: {prob:.2%}") ``` Run the test: ```bash uv run python test.py ``` You should see predictions for the clothing item. **Alternative: Test with curl** ```bash curl -X POST http://localhost:8080/predict \ -H "Content-Type: application/json" \ -d '{"url": "http://bit.ly/mlbookcamp-pants"}' ``` **Windows (PowerShell):** ```powershell curl.exe -X POST http://localhost:8080/predict ` -H "Content-Type: application/json" ` -d '{\"url\": \"http://bit.ly/mlbookcamp-pants\"}' ``` Or check the health endpoint: ```bash curl http://localhost:8080/health ``` ## Docker Containerization Now let's containerize our application. Create [`service/Dockerfile`](service/Dockerfile). Build the image: ```bash docker build -t clothing-classifier:v1 . ``` Test the container locally: ```bash docker run -it --rm -p 8080:8080 clothing-classifier:v1 ``` In another terminal, run the test script: ```bash uv run python test.py ``` Or test with curl: ```bash curl -X POST http://localhost:8080/predict \ -H "Content-Type: application/json" \ -d '{"url": "http://bit.ly/mlbookcamp-pants"}' ``` ## Loading Image to Kind Kind clusters run in Docker, so they can't access images from your local Docker daemon by default. We need to load the image into Kind. ```bash kind load docker-image clothing-classifier:v1 --name mlzoomcamp ``` ## Kubernetes Deployment Now let's deploy our service to Kubernetes. ### Understanding Kubernetes Resources - **Pod**: The smallest deployable unit in Kubernetes (one or more containers) - **Deployment**: Manages a set of identical Pods, handles updates and scaling - **Service**: Exposes Pods to network traffic - **HPA (Horizontal Pod Autoscaler)**: Automatically scales Pods based on metrics ### Create Deployment Manifest Let's create a folder for all the config files: ```bash mkdir k8s cd k8s ``` Create [`k8s/deployment.yaml`](k8s/deployment.yaml) **Key configuration:** - `replicas: 2` - Run 2 copies of our service - `imagePullPolicy: Never` - Use local image (don't pull from registry) - `resources` - Memory and CPU limits/requests - `livenessProbe` - Restart container if unhealthy - `readinessProbe` - Only send traffic when ready Deploy it: ```bash kubectl apply -f deployment.yaml ``` Check the deployment: ```bash kubectl get deployments kubectl get pods kubectl describe deployment clothing-classifier ``` View logs: ```bash kubectl logs -l app=clothing-classifier --tail=20 ``` ### Create Service Manifest Create [`k8s/service.yaml`](k8s/service.yaml). **Key configuration:** - `type: NodePort` - Expose on a static port on each node - `nodePort: 30080` - Accessible on port 30080 from host - `selector` - Routes traffic to Pods with matching labels Deploy it: ```bash kubectl apply -f k8s/service.yaml ``` Check the service: ```bash kubectl get services kubectl describe service clothing-classifier ``` ### Testing the Deployed Service With NodePort, the service is accessible on `localhost:30080`: Check the health endpoint: ```bash curl http://localhost:30080/health ``` Our kind cluster is not configured for `NodePort`, so it won't work. We don't really need this for testing things locally, so let's just use a quick fix: Use `kubectl port-forward`. ```bash kubectl port-forward service/clothing-classifier 30080:8080 ``` Now it's accessible on port 30080 ```bash curl http://localhost:30080/health ``` When we deploy to EKS or some other Kubernetes in the cloud, it won't be a problem - there Elastic Load Balancer will solve this problem. ## Horizontal Pod Autoscaling Kubernetes can automatically scale your application based on CPU or memory usage. TODO describe what HPA is and give a simple example First, we need metrics-server for HPA to work. Install it in kubectl: ```bash kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml ``` TODO describe what metrics-server is For Kind, we need to patch metrics-server to work without TLS: ```bash kubectl patch -n kube-system deployment metrics-server --type=json -p '[{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"--kubelet-insecure-tls"}]' ``` TODO describe why Wait for metrics-server to be ready: ```bash kubectl get deployment metrics-server -n kube-system ``` We should see something like that: ``` NAME READY UP-TO-DATE AVAILABLE AGE metrics-server 1/1 1 1 72s ``` Now create [`k8s/hpa.yaml`](k8s/hpa.yaml). **Configuration:** - Scale between 2 and 10 replicas - Target 50% CPU utilization - Automatically adds/removes Pods based on load Deploy HPA: ```bash kubectl apply -f hpa.yaml ``` Check HPA status: ```bash kubectl get hpa kubectl describe hpa clothing-classifier-hpa ``` ### Testing Autoscaling Generate load to trigger autoscaling. You can use a simple load test (see [`load_test.py`](load_test.py)) First, check that you can access the endpoint: ```bash curl http://localhost:30080/health ``` Run the test: ```bash uv run python load_test.py ``` While running the load test, watch the HPA in another terminal: ```bash kubectl get hpa -w ``` You should see the number of replicas increase as CPU usage rises. Check Pods: ```bash kubectl get pods -w ``` ## Managing the Deployment ### Updating the Application If you make changes to your code: 1. Rebuild the image with a new tag: ```bash docker build -t clothing-classifier:v2 . ``` 2. Load to Kind: ```bash kind load docker-image clothing-classifier:v2 --name mlzoomcamp ``` 3. Update deployment: ```bash kubectl set image deployment/clothing-classifier clothing-classifier=clothing-classifier:v2 ``` Or update the YAML file and apply: ```bash kubectl apply -f k8s/deployment.yaml ``` Watch the rollout: ```bash kubectl rollout status deployment/clothing-classifier ``` ### Scaling Manually Scale to 5 replicas: ```bash kubectl scale deployment clothing-classifier --replicas=5 ``` ### Viewing Logs All Pods: ```bash kubectl logs -l app=clothing-classifier --tail=50 ``` Specific Pod: ```bash kubectl logs ``` Follow logs: ```bash kubectl logs -f -l app=clothing-classifier ``` ### Debugging Describe resources: ```bash kubectl describe deployment clothing-classifier kubectl describe pod kubectl describe service clothing-classifier ``` Get events: ```bash kubectl get events --sort-by='.lastTimestamp' ``` Execute commands in a Pod: ```bash kubectl exec -it -- /bin/bash ``` ## Cleanup Delete the deployment and service: ```bash kubectl delete -f k8s/deployment.yaml kubectl delete -f k8s/service.yaml kubectl delete -f k8s/hpa.yaml ``` Or delete everything at once: ```bash kubectl delete all -l app=clothing-classifier kubectl delete hpa clothing-classifier-hpa ``` Delete the Kind cluster: ```bash kind delete cluster --name mlzoomcamp ``` ## Summary We covered: 1. **Local Kubernetes Setup** - Installing kubectl and Kind - Creating a local Kubernetes cluster - Basic kubectl commands 2. **ONNX Model Deployment** - Using pre-converted ONNX model for inference - Building FastAPI service with ONNX Runtime - Containerizing the application with Docker 3. **Kubernetes Deployment** - Creating Deployment manifests - Exposing services with NodePort - Health checks (liveness and readiness probes) - Resource limits and requests 4. **Scaling and Management** - Horizontal Pod Autoscaling based on CPU - Manual scaling - Rolling updates - Debugging and logging **Next Steps:** - Deploy to cloud Kubernetes (EKS, GKE, AKS) - Use Ingress for advanced routing - Implement monitoring with Prometheus and Grafana - Explore MLOps tools like Kubeflow or Seldon Core - Learn about service mesh (Istio, Linkerd) - Implement CI/CD pipelines for automated deployments **Differences from AWS Lambda:** Kubernetes gives you more control and flexibility, but requires more management. It's ideal for production workloads that need consistent performance and complex orchestration. ================================================ FILE: 10-kubernetes/workshop/k8s/deployment.yaml ================================================ apiVersion: apps/v1 kind: Deployment metadata: name: clothing-classifier labels: app: clothing-classifier spec: replicas: 2 selector: matchLabels: app: clothing-classifier template: metadata: labels: app: clothing-classifier spec: containers: - name: clothing-classifier image: clothing-classifier:v1 imagePullPolicy: Never ports: - containerPort: 8080 resources: requests: memory: "256Mi" cpu: "250m" limits: memory: "512Mi" cpu: "500m" livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 10 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 5 ================================================ FILE: 10-kubernetes/workshop/k8s/hpa.yaml ================================================ apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: clothing-classifier-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: clothing-classifier minReplicas: 2 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 ================================================ FILE: 10-kubernetes/workshop/k8s/service.yaml ================================================ apiVersion: v1 kind: Service metadata: name: clothing-classifier spec: type: NodePort selector: app: clothing-classifier ports: - protocol: TCP port: 8080 targetPort: 8080 nodePort: 30080 ================================================ FILE: 10-kubernetes/workshop/load_test.py ================================================ import time import requests from concurrent.futures import ThreadPoolExecutor, as_completed url = 'http://localhost:30080/predict' request_data = { "url": "http://bit.ly/mlbookcamp-pants" } def send_request(_): try: response = requests.post(url, json=request_data, timeout=5) return response.status_code except Exception as e: return f"Error: {e}" print("Starting load test...") print("Watch HPA with: kubectl get hpa -w") print("Watch pods with: kubectl get pods -w") num_requests = 1000 concurrent_workers = 50 print(f"Sending {num_requests} requests with {concurrent_workers} concurrent workers") print() start_time = time.time() with ThreadPoolExecutor(max_workers=concurrent_workers) as executor: futures = [executor.submit(send_request, i) for i in range(num_requests)] results = [future.result() for future in as_completed(futures)] end_time = time.time() duration = end_time - start_time success_count = sum(1 for r in results if r == 200) error_count = len(results) - success_count print("Load test complete!") print(f"Duration: {duration:.2f} seconds") print(f"Requests per second: {len(results)/duration:.2f}") print(f"Successful requests: {success_count}") print(f"Failed requests: {error_count}") print() ================================================ FILE: 10-kubernetes/workshop/service/.gitignore ================================================ .venv/ __pycache__/ *.pyc *.pyo *.pyd .Python *.so *.egg *.egg-info/ dist/ build/ .DS_Store .idea/ .vscode/ *.swp *.swo *~ .ipynb_checkpoints/ clothing-model.onnx ================================================ FILE: 10-kubernetes/workshop/service/.python-version ================================================ 3.13 ================================================ FILE: 10-kubernetes/workshop/service/Dockerfile ================================================ FROM python:3.13.5-slim-bookworm COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ WORKDIR /app ENV PATH="/app/.venv/bin:$PATH" COPY pyproject.toml uv.lock .python-version ./ RUN uv sync --locked COPY app.py clothing-model.onnx ./ EXPOSE 8080 ENTRYPOINT ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8080"] ================================================ FILE: 10-kubernetes/workshop/service/README.md ================================================ # Kubernetes Workshop for ML Model Deployment FastAPI service for clothing classification using ONNX Runtime. ## Setup Download the ONNX model: ```bash wget https://github.com/DataTalksClub/machine-learning-zoomcamp/releases/download/dl-models/clothing_classifier_mobilenet_v2_latest.onnx -O clothing-model.onnx ``` Initialize the project: ```bash uv sync ``` ## Run Locally ```bash uv run uvicorn app:app --host 0.0.0.0 --port 8080 --reload ``` ## Test ```bash uv run python test.py ``` ## Docker Build: ```bash docker build -t clothing-classifier:v1 . ``` Run: ```bash docker run -it --rm -p 8080:8080 clothing-classifier:v1 ``` ================================================ FILE: 10-kubernetes/workshop/service/app.py ================================================ import numpy as np import onnxruntime as ort from keras_image_helper import create_preprocessor from fastapi import FastAPI from pydantic import BaseModel, HttpUrl import uvicorn app = FastAPI(title="clothing-classifier") def preprocess_pytorch_style(X): X = X / 255.0 mean = np.array([0.485, 0.456, 0.406]).reshape(1, 3, 1, 1) std = np.array([0.229, 0.224, 0.225]).reshape(1, 3, 1, 1) X = X.transpose(0, 3, 1, 2) X = (X - mean) / std return X.astype(np.float32) preprocessor = create_preprocessor( preprocess_pytorch_style, target_size=(224, 224) ) session = ort.InferenceSession( "clothing-model.onnx", providers=["CPUExecutionProvider"] ) input_name = session.get_inputs()[0].name output_name = session.get_outputs()[0].name classes = [ "dress", "hat", "longsleeve", "outwear", "pants", "shirt", "shoes", "shorts", "skirt", "t-shirt", ] class PredictRequest(BaseModel): url: HttpUrl class PredictResponse(BaseModel): predictions: dict[str, float] top_class: str top_probability: float def predict(url: str): X = preprocessor.from_url(url) result = session.run([output_name], {input_name: X}) float_predictions = result[0][0].tolist() predictions_dict = dict(zip(classes, float_predictions)) top_class = max(predictions_dict, key=predictions_dict.get) top_probability = predictions_dict[top_class] return predictions_dict, top_class, top_probability @app.get("/") def root(): return {"message": "Clothing Classification Service"} @app.get("/health") def health(): return {"status": "healthy"} @app.post("/predict", response_model=PredictResponse) def predict_endpoint(request: PredictRequest): predictions, top_class, top_prob = predict(str(request.url)) return PredictResponse( predictions=predictions, top_class=top_class, top_probability=top_prob ) if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8080) ================================================ FILE: 10-kubernetes/workshop/service/pyproject.toml ================================================ [project] name = "clothing-classifier" version = "0.1.0" description = "Clothing classification service with ONNX" readme = "README.md" requires-python = ">=3.13" dependencies = [ "fastapi>=0.115.6", "keras-image-helper>=0.0.1", "numpy>=2.2.1", "onnxruntime>=1.20.1", "uvicorn>=0.34.0", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.uv] dev-dependencies = [ "requests>=2.32.3", ] ================================================ FILE: 10-kubernetes/workshop/service/test.py ================================================ import requests url = 'http://localhost:8080/predict' request = { "url": "http://bit.ly/mlbookcamp-pants" } response = requests.post(url, json=request) result = response.json() print(f"Top prediction: {result['top_class']} ({result['top_probability']:.2%})") print(f"\nAll predictions:") for cls, prob in result['predictions'].items(): print(f" {cls:12s}: {prob:.2%}") ================================================ FILE: 11-kserve/01-overview.md ================================================ ## 11.1 Overview ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 11: KServe](./) * Next: [Running KServe locally](02-kserve-local.md) ================================================ FILE: 11-kserve/02-kserve-local.md ================================================ ## 11.2 Running KServe locally ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
### Updated Instructions (09 July, 2022) In the `iris-example.yaml` file, instead of `"gs://kfserving-samples/models/sklearn/iris"`, use `"gs://kfserving-examples/models/sklearn/1.0/model"` as the URL in storageUri. Also make sure to use the following versions - kind: 0.11.1 (via https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64) - kubectl: 1.21.1 (via https://dl.k8s.io/release/v1.21.1/bin/linux/amd64/kubectl) - kindest/node image: 1.21.1 (via `kind create cluster --image kindest/node:v1.21.1`) - kserve=0.8 (via https://raw.githubusercontent.com/kserve/kserve/release-0.8/hack/quick_install.sh) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 11: KServe](./) * Previous: [Overview](01-overview.md) * Next: [Deploying a Scikit-Learn model with KServe](03-kserve-sklearn.md) ================================================ FILE: 11-kserve/03-kserve-sklearn.md ================================================ ## 11.3 Deploying a Scikit-Learn model with KServe ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 11: KServe](./) * Previous: [Running KServe locally](02-kserve-local.md) * Next: [Deploying custom Scikit-Learn images with KServe](04-kserve-custom-image.md) ================================================ FILE: 11-kserve/04-kserve-custom-image.md ================================================ ## 11.4 Deploying custom Scikit-Learn images with KServe ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 11: KServe](./) * Previous: [Deploying a Scikit-Learn model with KServe](03-kserve-sklearn.md) * Next: [Serving TensorFlow models with KServe](05-tensorflow-kserve.md) ================================================ FILE: 11-kserve/05-tensorflow-kserve.md ================================================ ## 11.5 Serving TensorFlow models with KServe ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
* For PyTorch users, [see this repo](https://github.com/mmg10/torchserve_kserve) on how to serve a PyTorch model using KServe. ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 11: KServe](./) * Previous: [Deploying custom Scikit-Learn images with KServe](04-kserve-custom-image.md) * Next: [KServe transformers](06-kserve-transformers.md) ================================================ FILE: 11-kserve/06-kserve-transformers.md ================================================ ## 11.6 KServe transformers ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 11: KServe](./) * Previous: [Serving TensorFlow models with KServe](05-tensorflow-kserve.md) * Next: [Deploying with KServe and EKS](07-kserve-eks.md) ================================================ FILE: 11-kserve/07-kserve-eks-upd.md ================================================ ## Deploying with KServe and EKS - Update (13 July, 2022) (These instructions assume that the user does not own a custom domain.) - Download v1.21 of AWS' kubectl tool via `https://s3.us-west-2.amazonaws.com/amazon-eks/1.21.2/2021-07-05/bin/linux/amd64/kubectl` - Create a cluster (via `eksctl create cluster -f cluster.yaml`) using the following yaml file; note that we specify version 1.21 of k8s ``` apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: mlzoomcamp-eks region: us-east-2 version: "1.21" nodeGroups: - name: ng desiredCapacity: 2 instanceType: m5.xlarge ``` - After downloading kserve==0.8 (via `wget https://raw.githubusercontent.com/kserve/kserve/release-0.8/hack/quick_install.sh`), set the version of Istio to 1.6.2 in line 33 - Then run `bash quick_install.sh` - Get the external IP from the ELB via `kubectl get services -n istio-system` - Configure the secret key `kubectl apply -f kserve-s3-secret.yaml` - Create the Inference service `kubectl apply -f clothes-service.yaml` - Create the file `test_transformer.py` with the following contents. Replace `actual_domain` with the external IP obtained from the ELB ```python import requests service_name = 'clothes' host = f'{service_name}.default.example.com' actual_domain = 'http://{something here}.us-east-2.elb.amazonaws.com' service_url = f'{actual_domain}/v1/models/{service_name}:predict' headers = {'Host': host} request = { "instances": [ {'url': 'http://bit.ly/mlbookcamp-pants'}, {'url': 'http://bit.ly/mlbookcamp-pants'} ] } response = requests.post(service_url, json=request, headers=headers) print(response) print(response.content) print(response.json()) ``` - Run `python test-transformer3.py` - Delete cluster via `eksctl delete cluster --name mlzoomcamp-eks` ================================================ FILE: 11-kserve/07-kserve-eks.md ================================================ ## 11.7 Deploying with KServe and EKS ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
### Updated Instructions (13 July, 2022) See [the instructions here](07-kserve-eks-upd.md) ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 11: KServe](./) * Previous: [KServe transformers](06-kserve-transformers.md) * Next: [Summary](08-summary.md) ================================================ FILE: 11-kserve/08-summary.md ================================================ ## 11.8 Summary Coming soon (or not so soon) ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 11: KServe](./) * Previous: [Deploying with KServe and EKS](07-kserve-eks.md) * Next: [Explore more](09-explore-more.md) ================================================ FILE: 11-kserve/09-explore-more.md ================================================ ## 11.9 Explore more ## Notes Add notes from the video (PRs are welcome)
⚠️ The notes are written by the community.
If you see an error here, please create a PR with a fix.
## Navigation * [Machine Learning Zoomcamp course](../) * [Session 11: KServe](./) * Previous: [Summary](08-summary.md) ================================================ FILE: 11-kserve/README.md ================================================ ## 11. KServe The materials in this module are optional and might be outdated. If you decide to go through it and update the versions, please send a PR. - 11.1 [Overview](01-overview.md) - 11.2 [Running KServe locally](02-kserve-local.md) - 11.3 [Deploying a Scikit-Learn model with KServe](03-kserve-sklearn.md) - 11.4 [Deploying custom Scikit-Learn images with KServe](04-kserve-custom-image.md) - 11.5 [Serving TensorFlow models with KServe](05-tensorflow-kserve.md) - 11.6 [KServe transformers](06-kserve-transformers.md) - 11.7 [Deploying with KServe and EKS](07-kserve-eks.dm) - 11.8 [Summary](08-summary.md) - 11.9 [Explore more](09-explore-more.md) ================================================ FILE: 11-kserve/code/.gitignore ================================================ kserve ================================================ FILE: 11-kserve/code/README.md ================================================ ```bash kubectl port-forward -n istio-system service/istio-ingressgateway 8080:80 SERVICE_NAME="sklearn-iris" HOST="${SERVICE_NAME}.default.example.com" ACTUAL_HOST="http://localhost:8080" URL="${ACTUAL_HOST}/v1/models/${SERVICE_NAME}:predict" curl -H "Host: ${HOST}" \ ${URL} \ -d @iris-request.json docker build -t kserve-sklearnserver:predict_proba-3.8-1.0 -f sklearn.Dockerfile . docker run -it --rm \ -v "$(pwd)/model.joblib:/mnt/models/model.joblib" \ -p 8081:8080 \ kserve-sklearnserver:predict_proba-3.8-1.0 \ --model_dir=/mnt/models \ --model_name=churn ``` ================================================ FILE: 11-kserve/code/churn/Pipfile ================================================ [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] scikit-learn = "==1.0" joblib = "*" pandas = "*" [dev-packages] [requires] python_version = "3.8" ================================================ FILE: 11-kserve/code/churn/churn-service.yaml ================================================ apiVersion: "serving.kserve.io/v1beta1" kind: "InferenceService" metadata: name: "churn" spec: predictor: sklearn: #image: kserve-sklearnserver:predict_proba-3.8-1.0 image: agrigorev/sklearnserver:3.8-1.0-predict-proba storageUri: "http://172.31.13.90:8000/churn/model.joblib" resources: requests: cpu: 300m memory: 256Mi limits: cpu: 500m memory: 512Mi ================================================ FILE: 11-kserve/code/churn/churn-test.py ================================================ import requests service_name = 'churn' host = f'{service_name}.default.example.com' actual_domain = 'http://localhost:8080' url = f'{actual_domain}/v1/models/{service_name}:predict' headers = {'Host': host} request = { "instances": [ {'contract': 'one_year', 'tenure': 34, 'monthlycharges': 56.95}, {'contract': 'month-to-month', 'tenure': 13, 'monthlycharges': 49.95} ] } response = requests.post(url, json=request, headers=headers) print(response.json()) ================================================ FILE: 11-kserve/code/churn/churn-train.py ================================================ import joblib import pandas as pd import numpy as np from sklearn.pipeline import Pipeline from sklearn.feature_extraction import DictVectorizer from sklearn.linear_model import LogisticRegression url = 'https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/chapter-03-churn-prediction/WA_Fn-UseC_-Telco-Customer-Churn.csv?raw=true' df = pd.read_csv(url) df.columns = df.columns.str.lower().str.replace(' ', '_') categorical_columns = list(df.dtypes[df.dtypes == 'object'].index) for c in categorical_columns: df[c] = df[c].str.lower().str.replace(' ', '_') df.totalcharges = pd.to_numeric(df.totalcharges, errors='coerce') df.totalcharges = df.totalcharges.fillna(0) df.churn = (df.churn == 'yes').astype(int) numerical = ['tenure', 'monthlycharges'] categorical = ['contract'] dicts = df[categorical + numerical].to_dict(orient='records') pipeline = Pipeline([ ('vectorizer', DictVectorizer(sparse=False)), ('model', LogisticRegression(C=1.0, solver='liblinear')) ]) pipeline.fit(dicts, df.churn.values) joblib.dump(pipeline, 'model.joblib') ================================================ FILE: 11-kserve/code/clothes/clothes-service.yaml ================================================ apiVersion: "serving.kserve.io/v1beta1" kind: "InferenceService" metadata: name: "clothes" spec: transformer: containers: - image: "agrigorev/kfserving-keras-transformer:0.0.1" name: user-container env: - name: MODEL_INPUT_SIZE value: "299,299" - name: KERAS_MODEL_NAME value: "xception" - name: MODEL_LABELS value: "dress,hat,longsleeve,outwear,pants,shirt,shoes,shorts,skirt,t-shirt" resources: requests: cpu: 300m memory: 256Mi limits: cpu: 500m memory: 512Mi predictor: tensorflow: storageUri: "http://172.31.13.90:8000/clothes/clothing-model/clothing-model.zip" resources: requests: cpu: 500m memory: 512Mi limits: cpu: 1000m memory: 512Mi ================================================ FILE: 11-kserve/code/clothes/convert.py ================================================ import tensorflow as tf from tensorflow import keras model = keras.models.load_model('xception_v4_large_08_0.894.h5') tf.saved_model.save(model, 'clothing-model') ================================================ FILE: 11-kserve/code/clothes/test-transformer.py ================================================ #!/usr/bin/env python # coding: utf-8 import requests service_name = 'clothes' host = f'{service_name}.default.example.com' actual_domain = 'http://localhost:8080' service_url = f'{actual_domain}/v1/models/{service_name}:predict' headers = {'Host': host} request = { "instances": [ {'url': 'http://bit.ly/mlbookcamp-pants'}, {'url': 'http://bit.ly/mlbookcamp-pants'} ] } response = requests.post(service_url, json=request, headers=headers) print(response) print(response.content) print(response.json()) ================================================ FILE: 11-kserve/code/clothes/test.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "id": "fe7b23ea", "metadata": {}, "outputs": [], "source": [ "import requests" ] }, { "cell_type": "code", "execution_count": 2, "id": "75d21654", "metadata": {}, "outputs": [], "source": [ "from keras_image_helper import create_preprocessor\n", "preprocessor = create_preprocessor('xception', target_size=(299, 299))" ] }, { "cell_type": "code", "execution_count": 3, "id": "221d4971", "metadata": {}, "outputs": [], "source": [ "url = 'http://bit.ly/mlbookcamp-pants'\n", "X = preprocessor.from_url(url)" ] }, { "cell_type": "code", "execution_count": 5, "id": "c0a58c30", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1, 299, 299, 3)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.shape" ] }, { "cell_type": "code", "execution_count": 6, "id": "d9353db3", "metadata": {}, "outputs": [], "source": [ "request = {\n", " \"instances\": X.tolist()\n", "}" ] }, { "cell_type": "code", "execution_count": 7, "id": "54618725", "metadata": {}, "outputs": [], "source": [ "import requests \n", "\n", "service_name = 'clothes'\n", "host = f'{service_name}.default.example.com'\n", "\n", "actual_domain = 'http://localhost:8080'\n", "url = f'{actual_domain}/v1/models/{service_name}:predict'\n", "\n", "headers = {'Host': host}" ] }, { "cell_type": "code", "execution_count": 10, "id": "748a0fe6", "metadata": {}, "outputs": [], "source": [ "response = requests.post(url, json=request, headers=headers).json()\n" ] }, { "cell_type": "code", "execution_count": 11, "id": "f5ef691c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'predictions': [[-1.86829197,\n", " -4.76124668,\n", " -2.3169837,\n", " -1.06257,\n", " 9.88716221,\n", " -2.81243372,\n", " -3.66628361,\n", " 3.20036411,\n", " -2.60233974,\n", " -4.83504725]]}" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response" ] }, { "cell_type": "code", "execution_count": 12, "id": "0e9f84db", "metadata": {}, "outputs": [], "source": [ "predictions = response['predictions']" ] }, { "cell_type": "code", "execution_count": 9, "id": "943431c1", "metadata": {}, "outputs": [], "source": [ "classes = [\n", " 'dress',\n", " 'hat',\n", " 'longsleeve',\n", " 'outwear',\n", " 'pants',\n", " 'shirt',\n", " 'shoes',\n", " 'shorts',\n", " 'skirt',\n", " 't-shirt'\n", "]" ] }, { "cell_type": "code", "execution_count": 13, "id": "1d1ef3fd", "metadata": {}, "outputs": [], "source": [ "pred = predictions[0]" ] }, { "cell_type": "code", "execution_count": 15, "id": "41693388", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'dress': -1.86829197,\n", " 'hat': -4.76124668,\n", " 'longsleeve': -2.3169837,\n", " 'outwear': -1.06257,\n", " 'pants': 9.88716221,\n", " 'shirt': -2.81243372,\n", " 'shoes': -3.66628361,\n", " 'shorts': 3.20036411,\n", " 'skirt': -2.60233974,\n", " 't-shirt': -4.83504725}" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dict(zip(classes, pred)) " ] }, { "cell_type": "code", "execution_count": null, "id": "8633bc89", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: 11-kserve/code/clothes/test.py ================================================ #!/usr/bin/env python # coding: utf-8 import requests from keras_image_helper import create_preprocessor preprocessor = create_preprocessor('xception', target_size=(299, 299)) service_name = 'clothes' host = f'{service_name}.default.example.com' actual_domain = 'http://localhost:8080' service_url = f'{actual_domain}/v1/models/{service_name}:predict' headers = {'Host': host} url = 'http://bit.ly/mlbookcamp-pants' X = preprocessor.from_url(url) request = { "instances": X.tolist() } response = requests.post(service_url, json=request, headers=headers).json() predictions = response['predictions'] classes = [ 'dress', 'hat', 'longsleeve', 'outwear', 'pants', 'shirt', 'shoes', 'shorts', 'skirt', 't-shirt' ] pred = predictions[0] print(dict(zip(classes, pred))) ================================================ FILE: 11-kserve/code/eks/clothes-service.yaml ================================================ apiVersion: "serving.kserve.io/v1beta1" kind: "InferenceService" metadata: name: "clothes" spec: transformer: containers: - image: "agrigorev/kfserving-keras-transformer:0.0.1" name: user-container env: - name: MODEL_INPUT_SIZE value: "299,299" - name: KERAS_MODEL_NAME value: "xception" - name: MODEL_LABELS value: "dress,hat,longsleeve,outwear,pants,shirt,shoes,shorts,skirt,t-shirt" resources: requests: cpu: 300m memory: 256Mi limits: cpu: 500m memory: 512Mi predictor: serviceAccountName: sa tensorflow: storageUri: "s3://alexey-mlzookcamp-models/clothing-model" resources: requests: cpu: 500m memory: 512Mi limits: cpu: 1000m memory: 512Mi ================================================ FILE: 11-kserve/code/eks/cluster.yaml ================================================ apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: mlzoomcamp-eks region: eu-west-1 version: "1.21" nodeGroups: - name: ng desiredCapacity: 2 instanceType: m5.xlarge ================================================ FILE: 11-kserve/code/eks/test-transformer.py ================================================ #!/usr/bin/env python # coding: utf-8 import requests service_name = 'clothes' actual_domain = 'https://clothes.default.kubeflow.mlbookcamp.com' service_url = f'{actual_domain}/v1/models/{service_name}:predict' request = { "instances": [ {'url': 'http://bit.ly/mlbookcamp-pants'}, {'url': 'http://bit.ly/mlbookcamp-pants'} ] } response = requests.post(service_url, json=request) print(response) print(response.content) print(response.json()) ================================================ FILE: 11-kserve/code/image_transfomer/Dockerfile ================================================ FROM python:3.8.12-slim RUN pip install pipenv WORKDIR /app COPY ["Pipfile", "Pipfile.lock", "./"] RUN pipenv install --system --deploy COPY "image_tranformer.py" . ENTRYPOINT ["python", "image_tranformer.py"] ================================================ FILE: 11-kserve/code/image_transfomer/Pipfile ================================================ [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] kserve = "==0.7.0" keras-image-helper = "*" [dev-packages] [requires] python_version = "3.8" ================================================ FILE: 11-kserve/code/image_transfomer/image_transformer.py ================================================ import kserve from typing import List, Dict from keras_image_helper import create_preprocessor class ImageTransformer(kserve.KFModel): def __init__(self, name: str, predictor_host: str): super().__init__(name) self.predictor_host = predictor_host self.preprocessor = create_preprocessor('xception', target_size=(299, 299)) self.classes = [ 'dress', 'hat', 'longsleeve', 'outwear', 'pants', 'shirt', 'shoes', 'shorts', 'skirt', 't-shirt' ] def prepare_input(self, url: str) -> List: X = self.preprocessor.from_url(url) return X[0].tolist() def preprocess(self, request: Dict) -> Dict: result = [] for url in request['instances']: row = self.prepare_input(url) result.append(row) return {'instances': result} def postprocess(self, response: Dict) -> Dict: result = [] for prediction in response['predictions']: output = dict(zip(self.classes, prediction)) result.append(output) return {'predictions': result} if __name__ == '__main__': import argparse parser = argparse.ArgumentParser(parents=[kserve.kfserver.parser]) parser.add_argument("--predictor_host", help="The URL for the model predict function", required=True) parser.add_argument("--model_name", help="The name of the model", required=True) args, _ = parser.parse_known_args() model_name = args.model_name host = args.predictor_host tranformer = ImageTransformer(model_name, predictor_host=host) server = kserve.KFServer() server.start(models=[tranformer]) ================================================ FILE: 11-kserve/code/iris/iris-example.yaml ================================================ apiVersion: "serving.kserve.io/v1beta1" kind: "InferenceService" metadata: name: "sklearn-iris" spec: predictor: sklearn: storageUri: "gs://kfserving-samples/models/sklearn/iris" ================================================ FILE: 11-kserve/code/iris/iris-request.json ================================================ { "instances": [ [6.8, 2.8, 4.8, 1.4], [6.0, 3.4, 4.5, 1.6] ] } ================================================ FILE: 11-kserve/code/iris/iris-test.py ================================================ import requests service_name = 'sklearn-iris' host = f'{service_name}.default.example.com' actual_domain = 'http://localhost:8080' url = f'{actual_domain}/v1/models/{service_name}:predict' headers = { 'Host': host } request = { "instances": [ [6.8, 2.8, 4.8, 1.4], [6.0, 3.4, 4.5, 1.6] ] } response = requests.post(url, json=request, headers=headers) print(response.json()) ================================================ FILE: 11-kserve/code/plan.md ================================================ # 11. Deploying models with KServe (formerly Kubeflow Serving) This week we'll learn how to use KServe for deploying ML models. We'll deploy two models: * Churn prediction model (Scikit-Learn) * Clothing classification model (TensorFlow) ## 11.1 Overview * Kubeflow and KServe * What we'll cover this week * Two-tier architecture ## 11.2 Running KServe locally * Installing KServe locally with kind * Deploying an example model from documentation ## 11.3 Deploying a Scikit-Learn model with KServe * Training the churn model with specific Scikit-Learn version * Deploying the churn prediction model with KServe ## 11.4 Deploying custom Scikit-Learn images with KServe * Customizing the Scikit-Learn image * Running KServe service locally ## 11.5 Serving TensorFlow models with KServe * Converting the Keras model to saved_model format * Deploying the model * Preparing the input ## 11.6 KServe transformers * Why do we need transformers * Creating a service for pre- and post-processing * Using existing transformers ## 11.7 Deploying with KServe and EKS * Creating an EKS cluster * Installing KServe on EKS * Configuring the domain * Setting up S3 access * Deploying the clothing model [Guide used during the video](https://github.com/alexeygrigorev/kubeflow-deep-learning/blob/main/guide.md) ## 11.8 Summary * Less yaml, faster deployment * Less stability * The need for Ops is not gone ## 11.9 Explore more * Helm charts * Kubeflow, Kubeflow pipelines * Sagemaker * A lot of vendors that take care of Ops ================================================ FILE: 11-kserve/meta.csv ================================================ lesson,name,page_name,video,slides,notebook 1,Overview,01-overview.md,https://www.youtube.com/watch?v=CFWK05dQoGM,, 2,Running KServe locally,02-kserve-local.md,https://www.youtube.com/watch?v=A3tFt14iTEI,, 3,Deploying a Scikit-Learn model with KServe,03-kserve-sklearn.md,https://www.youtube.com/watch?v=8kBIDggLwgE,, 4,Deploying custom Scikit-Learn images with KServe,04-kserve-custom-image.md,https://www.youtube.com/watch?v=REGNWrHZiCw,, 5,Serving TensorFlow models with KServe,05-tensorflow-kserve.md,https://www.youtube.com/watch?v=iXwQb2LRKGI,, 6,KServe transformers,06-kserve-transformers.md,https://www.youtube.com/watch?v=haowRqeAqJU,, 7,Deploying with KServe and EKS,07-kserve-eks.md,https://www.youtube.com/watch?v=MpuTzBSYBBI,, 8,Summary,08-summary.md,,, 9,Explore more,09-explore-more.md,,, ================================================ FILE: 11-kserve/meta.json ================================================ { "data": "meta.csv", "session": 11, "name": "KServe" } ================================================ FILE: README.md ================================================

Machine Learning Zoomcamp: A Free 4-Month Course on ML Engineering

Machine Learning Zoomcamp

Course platform with deadlines and submission forms for homework assignments and projects Course Channel on Slack (#course-ml-zoomcamp) Telegram AnnouncementsCourse PlaylistFAQTweet about the Course

Learn machine learning engineering end-to-end, from core models to deploying real applications.

Build regression and classification models in Python, work with key algorithms like linear/logistic regression, decision trees, and deep learning, and then take them to production using Docker, FastAPI, Kubernetes, and AWS Lambda.

## Table of Contents - [What This Course Is About](#about-ml-zoomcamp) - [Prerequisites](#prerequisites) - [How to Join](#how-to-join) - [Syllabus](#syllabus) - [Community & Getting Help](#community--getting-help) - [Certificates](#certificates) - [Sponsors](#sponsors) - [About DataTalks.Club](#about-datatalksclub) ## About ML Zoomcamp Machine Learning Zoomcamp teaches you the complete machine learning engineering, covering the entire pipeline: from building models with Python to deploying them in production environments.

ML Zoomcamp course overview showing progression from ML algorithms (Python, NumPy, Pandas, Scikit-learn) to deployment (Docker, FastAPI, Kubernetes)

You’ll master the key ML algorithms like linear regression, logistic regression, decision trees, and deep learning with TensorFlow and PyTorch, then learn to containerize with Docker, build APIs with FastAPI, and scale with Kubernetes and AWS Lambda. ## Prerequisites **You'll need:** - Prior programming experience (at least 1+ year) - Comfort with command line basics You don't need any prior experience with machine learning. We'll start from the basics. **Technical setup**: For machine learning modules, you only need a laptop with an internet connection. For deep learning sections, we'll use cloud resources for more intensive computations. ## How to Join You can join ML Zoomcamp either by **following a live cohort** or **learning at your own pace**. All materials are freely available in this repository. Each module has its own folder (e.g., `01-intro`, `03-classification`), and cohort-specific homework and deadlines are in the `cohorts` directory. Lectures are pre-recorded and available in this [YouTube playlist](https://www.youtube.com/playlist?list=PL3MmuxUbc_hIhxl5Ji8t4O6lPAOpHaCLR). ```mermaid flowchart TD A["Want to learn Machine Learning Zoomcamp"] --> B{"Do you want
deadlines & a certificate?"} B -->|Yes| C["Join Live Cohort"] B -->|No / Not sure| D["Self-Paced Learning"] C --> C1["Fixed schedule (Sept–Dec)"] C --> C2["Scored homework + leaderboard"] C --> C3["2 projects + peer review"] C --> C4["Eligible for certificate"] D --> D1["Start anytime, go at your own pace"] D --> D2["Unscored homework & optional projects"] D --> D3["No certificate"] ``` ### Option 1: Self-Paced Learning Start anytime. You get full access to materials and community support on Slack. Complete homework assignments: homework and solutions are available on the [course platform](https://courses.datatalks.club). Build a project for your portfolio. > Under self-paced learning, homework isn't scored, your project isn't peer-reviewed, and you can't earn a certificate. ### Option 2: Live Cohort > **2025 Cohort:** Starts September 15. Register here: [Fill in this form](https://airtable.com/shryxwLd0COOEaqXo) Runs once per year (September–December). Includes: - Updated homework - Automatic homework scoring and a leaderboard - Project peer review - Eligibility for a certificate after meeting all requirements Even if you join after the official start date, you can still follow along — but note that some homework forms may already be closed. All active deadlines are listed on the [course platform](https://courses.datatalks.club). > To earn a [certificate](#certificate), you'll need enough time to complete two [projects](#projects) and the required peer reviews. Details are in the Projects and Certificate sections. ### Comparison We summarized the key differences between the two joining options in this table: | Feature | Self-Paced | Live Cohort | |---------|------------|-------------| | **Timing** | Learn at your own pace, start anytime | Fixed 4-month schedule (September–December each year) | | **Course Materials** | Full access to GitHub repository and YouTube lectures | Full access to GitHub repository and YouTube lectures | | **Community** | Access to Slack community (`#course-ml-zoomcamp`) | Access to Slack community (`#course-ml-zoomcamp`) | | **Homework** | Available but not scored | Scored automatically, appears on leaderboard | | **Projects** | Build on your own, no evaluation | Submit 2 projects (midterm + capstone OR two capstones) with peer review | | **Certificate** | Not available | Available after completing projects and peer reviews | | **Structure** | Flexible, no deadlines | Weekly rhythm with deadlines and peer accountability |

Ready to start? Join the 2025 cohort or start with Module 1

## Syllabus | Module | Description | Topics | |--------|-------------|--------| | **[Module 1: Introduction to Machine Learning](01-intro/)** | Learn the fundamentals: what ML is, when to use it, and how to approach ML problems using the CRISP-DM framework. | • ML vs rule-based systems
• Supervised learning basics
• CRISP-DM methodology
• Model selection concepts
• Environment setup | | **[Module 2: Machine Learning for Regression](02-regression/)** | Build a car price prediction model while learning linear regression, feature engineering, and regularization. | • Linear regression (from scratch and with scikit-learn)
• Exploratory data analysis
• Feature engineering
• Regularization techniques
• Model validation | | **[Module 3: Machine Learning for Classification](03-classification/)** | Create a customer churn prediction system using logistic regression and learn about feature selection. | • Logistic regression
• Feature importance and selection
• Categorical variable encoding
• Model interpretation | | **[Module 4: Evaluation Metrics for Classification](04-evaluation/)** | Learn how to properly evaluate classification models and handle imbalanced datasets. | • Accuracy, precision, recall, F1-score
• ROC curves and AUC
• Cross-validation
• Confusion matrices
• Class imbalance handling | | **[Module 5: Deploying Machine Learning Models](05-deployment/)** | Turn your models into web services and deploy them with Docker and cloud platforms. | • Model serialization with Pickle
• FastAPI web services
• Docker containerization
• Cloud deployment | | **[Module 6: Decision Trees & Ensemble Learning](06-trees/)** | Learn tree-based models and ensemble methods for better predictions. | • Decision trees
• Random Forest
• Gradient boosting (XGBoost)
• Hyperparameter tuning
• Feature importance | | **[Midterm Project](projects/)** | | | | **[Module 8: Neural Networks & Deep Learning](08-deep-learning/)** | Introduction to neural networks using TensorFlow and Keras, including CNNs and transfer learning. | • Neural network fundamentals
• PyTorch
• TensorFlow & Keras
• Convolutional Neural Networks
• Transfer learning
• Model optimization | | **[Module 9: Serverless Deep Learning](09-serverless/)** | Deploy deep learning models using serverless technologies like AWS Lambda. | • Serverless concepts
• Deploying Scikit-Learn models with AWS Lambda
• Deploying TensorFlow and PyTorch models with AWS Lambda
• API Gateway | | **[Module 10: Kubernetes & TensorFlow Serving](10-kubernetes/)** | Learn to serve ML models at scale using Kubernetes and TensorFlow Serving. | • Kubernetes basics
• TensorFlow Serving
• Model deployment and scaling
• Load balancing | | **[Capstone project 1](projects/)** | | | | **[Capstone project 2](projects/)** | | | ### Projects Choose a problem that interests you, find a suitable dataset, develop your model, and deploy it as a web service. There will be 3 projects: 1. [Midterm Project](projects/) after [Module 6: Decision Trees & Ensemble Learning](06-trees/) 2. [Capstone project 1](projects/) at the end of the course, after [Module 10: Kubernetes & TensorFlow Serving](10-kubernetes/) 3. [Capstone project 2](projects/) at the end of the course, after [Module 10: Kubernetes & TensorFlow Serving](10-kubernetes/) These projects allow you to apply everything you've learned and make a great addition to your GitHub profile and portfolio. #### Project Examples from Past Cohorts

Machine Learning Zoomcamp certificate of completion awarded after successfully completing projects and peer reviews

A local deployment architecture using Kubernetes with Kind from one of the students' projects

Some of the course projects from past cohorts: - [Blood cell classifier for cancer prediction](https://datatalks.club/blog/how-to-build-blood-cell-classifier-for-cancer-prediction-case-study-from-ml-zoomcamp.html): an end-to-end tool that segments and classifies blood cells from microscope images to assist in detecting signs of acute lymphoblastic leukemia (ALL) - [Waste classifier](https://datatalks.club/blog/how-to-build-waste-classifier-case-study-from-ml-zoomcamp.html): an Xception-based image classifier on ~15,000 waste images, reaching 93.3% test accuracy, and serving predictions via a Flask API packaged in Docker ## Certificate

Machine Learning Zoomcamp certificate of completion awarded after successfully completing projects and peer reviews

Machine Learning Zoomcamp certificate awarded upon successful completion

To receive a certificate, you'll need to complete and submit two projects: 1. **Complete two projects**: Submit either a midterm project and a capstone project, OR two capstone projects 2. **Submit on time**: Meet the project submission deadlines to qualify for certification 3. **Peer review**: Evaluate and provide feedback on 3 fellow students' projects during the peer review process ## Testimonials > Machine Learning Zoomcamp was exhaustive, with very comprehensive content that covered concepts in depth. You can learn everything from the simplest concepts to preparing and deploying an ML model for production. Additionally, the entire community behind this course is highly participative and collaborative. I would like to thank Alexey Grigorev for all the knowledge he shared with us and his team for providing the support we needed to solve each problem we faced. > > - [Alexander Daniel Rios](https://www.linkedin.com/in/alexander-daniel-rios) ([Source](https://www.linkedin.com/posts/alexander-daniel-rios_mlzoomcamp-activity-7295527609239584768-TWHh)) > Machine Learning Zoomcamp has been an incredible journey, thanks to the expert guidance of Alexey Grigorev. Hugely grateful to Alexey, Timur, and the entire DataTalksClub team for this course, and to my cohort batchmates for the invaluable support that enriched my learning experience. I’m thankful for this programme, which provided challenging coursework that is taught in a very structured and lucid way. The timely assignments & hands-on projects instill the sense of timely delivery, besides equipping us with practical acumen to solve real-life problems. > > - [Siddhartha Gogoi](https://www.linkedin.com/in/siddhartha-gogoi) ([Source](https://www.linkedin.com/posts/activity-7299906113997524994-R-oD?utm_source=share&utm_medium=member_desktop&rcm=ACoAADJu9vMBW6iyIYswCQnN6t8UJLkXH2tQPi4)) > Balancing the intensive Machine Learning Zoomcamp with my other engagements was no easy task, but the experience deepened my expertise in machine learning engineering, reinforced my passion for ML deployment and cloud technologies, and strengthened my resilience in handling real-world ML challenges. Thank you, Alexey Grigorev, for this course! > > - [Patrick Edosoma](https://www.linkedin.com/in/patrickedosoma) ([Source](https://www.linkedin.com/posts/patrickedosoma_machinelearning-mlzoomcamp-datascience-activity-7299090071201193985-JyuC)) > Highly recommend the ML Zoomcamp for anyone wanting a structured path to production-ready machine learning. A big thank you - Alexey Grigorev and to the team at DataTalksClub for providing such a well-structured and engaging course. > > - [Abdiaziz Mohamed](https://www.linkedin.com/in/abdiaziz-mohamed) ([Source 1](https://www.linkedin.com/posts/abdiaziz-mohamed_machinelearning-deployment-docker-activity-7257086439333523456-CyK4), [Source 2](https://www.linkedin.com/posts/abdiaziz-mohamed_machinelearningzoomcamp-machinelearning-kubernetes-activity-7277039208072904704-OAiY?utm_source=share&utm_medium=member_desktop&rcm=ACoAADJu9vMBW6iyIYswCQnN6t8UJLkXH2tQPi4)) > A huge thank you to Alexey Grigoriev for creating such an amazing course—and making it free! It’s truly inspiring. > > - [Guilherme Pereira](https://www.linkedin.com/in/guilherme-torres-pereira) ([Source](https://www.linkedin.com/posts/guilherme-torres-pereira_alexeygrigoriev-mlzoomcamp-machinelearning-activity-7396336012018356224-sK27)) > Huge thanks to Alexey Grigorev and the DataTalksClub community for the incredible support and clarity throughout. The open-source spirit and collaborative notes made the learning experience even richer. > > - [Rajendra Rawale](https://www.linkedin.com/in/rajendra1x) ([Source](https://www.linkedin.com/posts/rajendra1x_machinelearning-mlzoomcamp-datatalksclub-activity-7378450260999852032-V5Z1))

Ready to start? Join the 2025 cohort or start with Module 1

## Community & Getting Help ### Where to Get Help - **Slack**: [`#course-ml-zoomcamp`](https://app.slack.com/client/T01ATQK62F8/C0288NJ5XSA) channel - **FAQ**: [Common questions and answers](https://datatalks.club/faq/machine-learning-zoomcamp.html) - **Study Groups**: Connect with other learners ### Community Guidelines - Check the [FAQ](https://datatalks.club/faq/machine-learning-zoomcamp.html) first - Follow our [question guidelines](asking-questions.md) - Be helpful and respectful - Share your learning journey ### Learning in Public We encourage sharing your progress! Write blog posts, create videos, post on social media with #mlzoomcamp. It helps you learn better and builds your professional network. **Bonus**: You can earn extra points for sharing your learning experience publicly. Learn more: [Learning in Public](learning-in-public.md) ## Sponsors Interested in sponsoring? Contact [alexey@datatalks.club](mailto:alexey@datatalks.club). ## About DataTalks.Club

DataTalks.Club

DataTalks.Club is a global online community of data enthusiasts. It's a place to discuss data, learn, share knowledge, ask and answer questions, and support each other.

WebsiteJoin Slack CommunityNewsletterUpcoming EventsYouTubeGitHubLinkedInTwitter

All the activity at DataTalks.Club mainly happens on [Slack](https://datatalks.club/slack.html). We post updates there and discuss different aspects of data, career questions, and more. ================================================ FILE: after-sign-up.md ================================================ ## Thank you! Thanks for signing up for the course. The process of adding you to the mailing list is not automated yet, but you will hear from us closer to the course start. To make sure you don't miss any announcements - Register in [DataTalks.Club's Slack](https://datatalks.club/slack.html) and join the [`#course-ml-zoomcamp`](https://app.slack.com/client/T01ATQK62F8/C0288NJ5XSA) channel - Join the [course Telegram channel with announcements](https://t.me/mlzoomcamp) - [Tweet about the course!](https://clicktotweet.com/XZ6b9) - Subscribe to [DataTalks.Club's YouTube channel](https://www.youtube.com/c/DataTalksClub) and check [the course playlist](https://www.youtube.com/playlist?list=PL3MmuxUbc_hIhxl5Ji8t4O6lPAOpHaCLR) - Check our [Technical FAQ](https://datatalks.club/faq/machine-learning-zoomcamp.html) if you have questions See you in September! ================================================ FILE: article/README.md ================================================ ## Article (optional) The best way to learn about something - to teach it. In this part of the course, we'll explore some topics that weren't covered in the course. You'll need to learn about this topic and then write about what you learned in an article. (Of course if you already know something and just want to share your knowledge with us - it's also fine and more than welcome.) ## Topics You can write about pretty much anything that wasn't covered in the course, but related to machine learning and/or engineering. Here are some ideas: * Areas of Machine Learning: * Time series modelling * Machine learning for textual data * Recommender systems * Clustering * Dimensionality reduction * GANs * Tools similar to what we covered: * Using poetry instead of pipenv * LightGBM and catboost instead of xgboost * Using PyTorch instead of Tensorflow * PyCaret * FastAI * TorchServe instead of TF Serving * Some other interesting tools: * Kedro * Pandera * Evaluation metrics: * Precision/Recall curves * Pretty much everything from "explore more" sections * And more! It can be as broad as you'd like - for example, about time series in general or about some specific methods there (exponential smoothing). If you're not sure if your topic is suitable or not, feel free to ask about it in Slack. ## Requirements For the topic, the only requirement is that it wasn't covered in the course, or not covered with the same amount of details that you want to have. When learning the topic, please take a note of all the resources that you used and include them at the end in the "sources" section. ## Where can I publish it? * Medium * Github * Github pages * Wordpress * Your own blog The top voted articles can be re-publised on the DataTalks.Club website if you'd like. ## Plagiarism * Copying from others fully or in part is not allowed. * If you want to quote something from another article, mark it as a quote explicitly and point to the source immediately after the quote. ## Re-using your own work ### Allowed Re-using your own work is okay if it's something that you did as a part of this course. Examples: * You wanted to deploy something to Heroku, you learned about it and wrote a tutorial * You wanted to learn about PyTorch and used it for your project * You did a project about time series and want to share what you learned ### Not allowed It's not allowed to re-use articles that you wrote before the course started. Examples: * You were taking part in another course and wrote an article for it. Now you want to re-use the same article here > Note: you're more than welcome to share this article with the > community (e.g. in the `#shameless-content` channel in DataTalks.Club), > but this article can't be submitted as an article for ML Zoomcamp. The publication date for the article must be after the start of the course. ## Submitting the results * Submit your article to [`#course-ml-zoomcamp-articles`](https://app.slack.com/client/T01ATQK62F8/C02QXBFS1PU) - just share the link to your article there ## Evaluating We'll use voting for scoring your articles. * Check the articles in the [`#course-ml-zoomcamp-articles`](https://app.slack.com/client/T01ATQK62F8/C02QXBFS1PU) channel and put a :+1: reaction to articles that you liked * The top voted articles will get 20 points ## Past articles ### ML Zoomcamp 2023 See [here](../cohorts/2023/article.md) ### ML Zoomcamp 2022 See [here](../cohorts/2022/article.md) ### ML Zoomcamp 2021 See [here](../cohorts/2021/13-article#articles) ================================================ FILE: asking-questions.md ================================================ ## Asking questions If you have any questions, ask them in the [`#course-ml-zoomcamp`](https://app.slack.com/client/T01ATQK62F8/C0288NJ5XSA) channel in [DataTalks.Club](https://datatalks.club) slack. To keep our discussion in Slack more organized, we ask you to follow these suggestions: * Before asking a question, check [FAQ](https://datatalks.club/faq/machine-learning-zoomcamp.html). * Use threads. When you have a problem, first describe the problem shortly and then put the actual error in the thread - so it doesn't take the entire screen. * Instead of screenshots, it's better to copy-paste the error you're getting in text. Use ` ``` ` for formatting your code. It's very difficult to read text from screenshots. * Please don't take pictures of your code with a phone. It's even harder to read. Follow the previous suggestion, and in rare cases when you need to show what happens on your screen, take a screenshot. * You don't need to tag the instructors when you have a problem. We will see it eventually. * If somebody helped you with your problem and it's not in [FAQ](https://datatalks.club/faq/machine-learning-zoomcamp.html), please add it there. It'll help other students. ================================================ FILE: bento.md ================================================ ## 7. [Production-Ready Machine Learning (Bento ML)](07-bentoml-production/) - 7.1 [Intro/Session Overview](07-bentoml-production/01-intro.md) - 7.2 [Building Your Prediction Service with BentoML](07-bentoml-production/02-build-bento-service.md) - 7.3 [Deploying Your Prediction Service](07-bentoml-production/03-deploy-bento-service.md) - 7.4 [Sending, Receiving and Validating Data](07-bentoml-production/04-validation.md) - 7.5 [High-Performance Serving](07-bentoml-production/05-high-performance.md) - 7.6 [Bento Production Deployment](07-bentoml-production/06-production-deployment.md) - 7.7 [(Optional) Advanced Example: Deploying Stable Diffusion Model](07-bentoml-production/07-stable-diffusion.md) - 7.8 [Summary](07-bentoml-production/08-summary.md) - 7.9 [Homework](07-bentoml-production/homework.md) ## Supporters and partners Thanks to the course sponsors for making it possible to run this course

================================================ FILE: certificates.md ================================================ ## Getting your certificate Congratulations on finishing the course! Here's how you can get your certificate. First, get your certificate id using the `compute_certificate_id` function: ```python from hashlib import sha1 def compute_hash(email): return sha1(email.encode('utf-8')).hexdigest() def compute_certificate_id(email): email_clean = email.lower().strip() return compute_hash(email_clean + '_') ``` > **Note** that this is not the same hash as you have on the leaderboard > There's an extra "_" added to your email, so the hash is different. Then use this hash to get the URL ```python cohort = 2023 course = 'ml-zoomcamp' your_id = compute_certificate_id('never.give.up@gmail.com') url = f"https://certificate.datatalks.club/{course}/{cohort}/{your_id}.pdf" print(url) ``` Example: https://certificate.datatalks.club/ml-zoomcamp/2023/fe629854d45c559e9c10b3b8458ea392fdeb68a9.pdf ## Adding to LinkedIn You can add your certificate to LinkedIn: * Log in to your LinkedIn account, then go to your profile. * On the right, in the "Add profile" section dropdown, choose "Background" and then select the drop-down triangle next to "Licenses & Certifications". * In "Name", enter "Machine Learning Zoomcamp". * In "Issuing Organization", enter "DataTalksClub". * (Optional) In "Issue Date", enter the time when the certificate was created. * (Optional) Select the checkbox This certification does not expire. * Put your certificate ID. * In "Certification URL", enter the URL for your certificate. [Adapted from here](https://support.edx.org/hc/en-us/articles/206501938-How-can-I-add-my-certificate-to-my-LinkedIn-profile-) ================================================ FILE: cohorts/2021/01-intro/homework-1.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "df85efb9", "metadata": {}, "source": [ "## Homework #1\n", "\n", "Watch the video with explanation [here](https://www.youtube.com/watch?v=DIbkxeVXBmU).\n", "\n", "### Set up the environment\n", "\n", "You need to install Python, NumPy, Pandas, Matplotlib and Seaborn. For that, you can the instructions from [06-environment.md](06-environment.md)." ] }, { "cell_type": "code", "execution_count": 2, "id": "72e89307", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "markdown", "id": "6943ef47", "metadata": {}, "source": [ "\n", "### Question 1\n", "\n", "What's the version of NumPy that you installed? \n", "\n", "You can get the version information using the `__version__` field:\n", "\n", "```python\n", "np.__version__\n", "```" ] }, { "cell_type": "code", "execution_count": 3, "id": "bb796686", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'1.21.1'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.__version__" ] }, { "cell_type": "markdown", "id": "1ff307dc", "metadata": {}, "source": [ "### Question 2\n", "\n", "What's the version of Pandas? " ] }, { "cell_type": "code", "execution_count": 4, "id": "e7cb4558", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'1.3.0'" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.__version__" ] }, { "cell_type": "markdown", "id": "0e779bf2", "metadata": {}, "source": [ "### Getting the data \n", "\n", "For this homework, we'll use the same dataset as for the next session - the car price dataset.\n", "\n", "Download it from [here](https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv).\n", "\n", "You can do it with wget:\n", "\n", "```bash\n", "wget https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv\n", "```\n", "\n", "Or just open it with your browser and click \"Save as...\".\n" ] }, { "cell_type": "code", "execution_count": 6, "id": "f1eb6e7f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2021-09-14 07:34:45-- https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv\n", "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n", "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 1475504 (1.4M) [text/plain]\n", "Saving to: ‘hw-1.csv’\n", "\n", "hw-1.csv 100%[===================>] 1.41M 1.89MB/s in 0.7s \n", "\n", "2021-09-14 07:34:45 (1.89 MB/s) - ‘hw-1.csv’ saved [1475504/1475504]\n", "\n" ] } ], "source": [ "!wget https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv -O hw-1.csv" ] }, { "cell_type": "markdown", "id": "357e59b2", "metadata": {}, "source": [ "> **Note**: I have wget installed separately, so if you're on Windows without WSL, you will need to download it\n", "\n", "Now read it with Pandas. " ] }, { "cell_type": "code", "execution_count": 7, "id": "bdd199ad", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('hw-1.csv')" ] }, { "cell_type": "markdown", "id": "7c82c40c", "metadata": {}, "source": [ "### Question 3\n", "\n", "What's the average price of BMW cars in the dataset?" ] }, { "cell_type": "code", "execution_count": 8, "id": "cd7bbfdf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "61546.76347305389" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df.Make == 'BMW'].MSRP.mean()" ] }, { "cell_type": "markdown", "id": "ce263e6e", "metadata": {}, "source": [ "### Question 4\n", "\n", "Select a subset of cars after year 2015 (inclusive, i.e. 2015 and after). How many of them have missing values for Engine HP?" ] }, { "cell_type": "code", "execution_count": 9, "id": "7e159409", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "51" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df.Year >= 2015]['Engine HP'].isnull().sum()" ] }, { "cell_type": "markdown", "id": "a170bded", "metadata": {}, "source": [ "### Question 5\n", "\n", "* Calculate the average \"Engine HP\" in the dataset. \n", "* Use the `fillna` method and to fill the missing values in \"Engine HP\" with the mean value from the previous step. \n", "* Now, calcualte the average of \"Engine HP\" again.\n", "* Has it changed? \n", "\n", "Round both means before answering this questions." ] }, { "cell_type": "code", "execution_count": 10, "id": "cf1bb41f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "249.38607007176023" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_hp = df['Engine HP'].mean()\n", "mean_hp" ] }, { "cell_type": "code", "execution_count": 11, "id": "e76393b7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "249.38607007176023" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Engine HP'].fillna(mean_hp).mean()" ] }, { "cell_type": "markdown", "id": "790cd820", "metadata": {}, "source": [ "Filling NAs with 0 changes the mean of \"Engine HP\":" ] }, { "cell_type": "code", "execution_count": 12, "id": "3c397387", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "247.94174920261878" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Engine HP'].fillna(0).mean()" ] }, { "cell_type": "markdown", "id": "ccdddd56", "metadata": {}, "source": [ "### Question 6\n", "\n", "* Select all the \"Rolls-Royce\" cars from the dataset.\n", "* Select only columns \"Engine HP\", \"Engine Cylinders\", \"highway MPG\".\n", "* Now drop all duplicated rows using `drop_duplicates` method (you should get a dataframe with 7 rows).\n", "* Get the underlying NumPy array. Let's call it `X`.\n", "* Compute matrix-matrix multiplication between the transpose of `X` and `X`. To get the transpose, use `X.T`. Let's call the result `XTX`.\n", "* Invert `XTX`.\n", "* What's the sum of all the elements of the result?" ] }, { "cell_type": "code", "execution_count": 13, "id": "d8be8437", "metadata": {}, "outputs": [], "source": [ "df_rr = df[df.Make == \"Rolls-Royce\"]\n", "df_rr = df_rr[[\"Engine HP\", \"Engine Cylinders\", \"highway MPG\"]]\n", "df_rr = df_rr.drop_duplicates()" ] }, { "cell_type": "code", "execution_count": 14, "id": "0c45d112", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.03221232067748618" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X = df_rr.values\n", "XTX = X.T.dot(X)\n", "\n", "XTX_inv = np.linalg.inv(XTX)\n", "XTX_inv.sum()" ] }, { "cell_type": "markdown", "id": "9a39fcb5", "metadata": {}, "source": [ "### Questions 7 \n", "\n", "* Create an array `y` with values `[1000, 1100, 900, 1200, 1000, 850, 1300]`.\n", "* Multiply the inverse of `XTX` with the transpose of `X`, and then multiply the result by `y`. Call the result `w`.\n", "* What's the value of the first element of `w`?." ] }, { "cell_type": "code", "execution_count": 15, "id": "4b292550", "metadata": {}, "outputs": [], "source": [ "y = [1000, 1100, 900, 1200, 1000, 850, 1300]" ] }, { "cell_type": "code", "execution_count": 16, "id": "176ea4b0", "metadata": {}, "outputs": [], "source": [ "w = XTX_inv.dot(X.T).dot(y)" ] }, { "cell_type": "code", "execution_count": 17, "id": "a8ce14a4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.19989598183192342" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w[0]" ] }, { "cell_type": "markdown", "id": "bef903ef", "metadata": {}, "source": [ "> **Note**: we just implemented normal equation\n", "\n", "$$w = (X^T X)^{-1} X^T y$$\n", "\n", "We'll talk about it more in the next week (Machine Learning for Regression)" ] }, { "cell_type": "markdown", "id": "b12924ea", "metadata": {}, "source": [ "### Bonus\n", "\n", "Floating point arithmetics is not exact" ] }, { "cell_type": "code", "execution_count": 18, "id": "7d7bf049", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.30000000000000004" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "0.1 + 0.2" ] }, { "cell_type": "markdown", "id": "508e24bd", "metadata": {}, "source": [ "Adding the mean value doesn't change the resulting mean:" ] }, { "cell_type": "code", "execution_count": 20, "id": "f2469c70", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.5" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.array([1, 2, 3, 4, 5, 6]).mean()" ] }, { "cell_type": "code", "execution_count": 21, "id": "99a0ede1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.5" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.array([1, 2, 3, 4, 5, 6, 3.5, 3.5, 3.5]).mean()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.11" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: cohorts/2021/01-intro/homework.md ================================================ ## Session #1 Homework > **Solution**: [homework-1.ipynb](homework-1.ipynb). ### Set up the environment You need to install Python, NumPy, Pandas, Matplotlib and Seaborn. For that, you can the instructions from [06-environment.md](06-environment.md). ### Question 1 What's the version of NumPy that you installed? You can get the version information using the `__version__` field: ```python np.__version__ ``` ### Question 2 What's the version of Pandas? ### Getting the data For this homework, we'll use the same dataset as for the next session - the car price dataset. Download it from [here](https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv). You can do it with wget: ```bash wget https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv ``` Or just open it with your browser and click "Save as...". Now read it with Pandas. ### Question 3 What's the average price of BMW cars in the dataset? ### Question 4 Select a subset of cars after year 2015 (inclusive, i.e. 2015 and after). How many of them have missing values for Engine HP? ### Question 5 * Calculate the average "Engine HP" in the dataset. * Use the `fillna` method and to fill the missing values in "Engine HP" with the mean value from the previous step. * Now, calcualte the average of "Engine HP" again. * Has it changed? Round both means before answering this questions. You can use the `round` function for that: ```python print(round(mean_hp_before)) print(round(mean_hp_after)) ``` ### Question 6 * Select all the "Rolls-Royce" cars from the dataset. * Select only columns "Engine HP", "Engine Cylinders", "highway MPG". * Now drop all duplicated rows using `drop_duplicates` method (you should get a dataframe with 7 rows). * Get the underlying NumPy array. Let's call it `X`. * Compute matrix-matrix multiplication between the transpose of `X` and `X`. To get the transpose, use `X.T`. Let's call the result `XTX`. * Invert `XTX`. * What's the sum of all the elements of the result? Hint: if the result is negative, re-read the task one more time ### Questions 7 * Create an array `y` with values `[1000, 1100, 900, 1200, 1000, 850, 1300]`. * Multiply the inverse of `XTX` with the transpose of `X`, and then multiply the result by `y`. Call the result `w`. * What's the value of the first element of `w`?. > **Note**: You just implemented linear regression. We'll talk about it in the next lesson. ## Submit the results Submit your results here: https://forms.gle/aiunQqRtqcay8Wwo9. If your answer doesn't match options exactly, select the closest one. ## Deadline The deadline for submitting is 13 September 2021, 17:00 CET. After that, the form will be closed. ## Navigation * [Machine Learning Zoomcamp course](../) * [Lesson 1: Introduction to Machine Learning](./) * Previous: [Summary](10-summary.md) ================================================ FILE: cohorts/2021/02-regression/homework.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import pandas as pd\n", "import numpy as np\n", "\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Data Import" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "usecols = ['latitude','longitude','price','minimum_nights','number_of_reviews','reviews_per_month','calculated_host_listings_count','availability_365']\n", "\n", "data = pd.read_csv('/data-science-ml-master/DS_KnowHow/EDA_Preprocessing/data/AB_NYC_2019.csv', usecols=usecols)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(48895, 8)\n" ] } ], "source": [ "print(data.shape)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
latitudelongitudepriceminimum_nightsnumber_of_reviewsreviews_per_monthcalculated_host_listings_countavailability_365
040.64749-73.97237149190.216365
140.75362-73.983772251450.382355
240.80902-73.9419015030NaN1365
340.68514-73.959768912704.641194
440.79851-73.94399801090.1010
540.74767-73.975002003740.591129
640.68688-73.955966045490.4010
740.76489-73.984937924303.471220
840.80178-73.967237921180.9910
940.71344-73.9903715011601.334188
\n", "
" ], "text/plain": [ " latitude longitude price minimum_nights number_of_reviews \\\n", "0 40.64749 -73.97237 149 1 9 \n", "1 40.75362 -73.98377 225 1 45 \n", "2 40.80902 -73.94190 150 3 0 \n", "3 40.68514 -73.95976 89 1 270 \n", "4 40.79851 -73.94399 80 10 9 \n", "5 40.74767 -73.97500 200 3 74 \n", "6 40.68688 -73.95596 60 45 49 \n", "7 40.76489 -73.98493 79 2 430 \n", "8 40.80178 -73.96723 79 2 118 \n", "9 40.71344 -73.99037 150 1 160 \n", "\n", " reviews_per_month calculated_host_listings_count availability_365 \n", "0 0.21 6 365 \n", "1 0.38 2 355 \n", "2 NaN 1 365 \n", "3 4.64 1 194 \n", "4 0.10 1 0 \n", "5 0.59 1 129 \n", "6 0.40 1 0 \n", "7 3.47 1 220 \n", "8 0.99 1 0 \n", "9 1.33 4 188 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head(10)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 48895 entries, 0 to 48894\n", "Data columns (total 8 columns):\n", "latitude 48895 non-null float64\n", "longitude 48895 non-null float64\n", "price 48895 non-null int64\n", "minimum_nights 48895 non-null int64\n", "number_of_reviews 48895 non-null int64\n", "reviews_per_month 38843 non-null float64\n", "calculated_host_listings_count 48895 non-null int64\n", "availability_365 48895 non-null int64\n", "dtypes: float64(3), int64(5)\n", "memory usage: 3.0 MB\n" ] } ], "source": [ "data.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №1: 'reviews_per_month', 10052" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Null Value Checker " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "reviews_per_month 20.558339\n", "dtype: float64\n" ] } ], "source": [ "incomplete = data.isna().mean()*100\n", "print(incomplete[incomplete > 0])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "latitude False\n", "longitude False\n", "price False\n", "minimum_nights False\n", "number_of_reviews False\n", "reviews_per_month True\n", "calculated_host_listings_count False\n", "availability_365 False\n", "dtype: bool" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.isna().any()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Duplicates" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False 48895\n", "dtype: int64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.duplicated().value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Descriptive Statistics" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanstdmin0%10%25%50%75%90%95%99%max
latitude48895.040.7289490.05453040.4997940.4997940.6679940.6901040.7230740.76311540.8048940.82564340.86466140.91306
longitude48895.0-73.9521700.046157-74.24442-74.24442-73.99669-73.98307-73.95568-73.936275-73.90781-73.865771-73.776920-73.71299
price48895.0152.720687240.1541700.000000.0000049.0000069.00000106.00000175.000000269.00000355.000000799.00000010000.00000
minimum_nights48895.07.02996220.5105501.000001.000001.000001.000003.000005.00000028.0000030.00000045.0000001250.00000
number_of_reviews48895.023.27446644.5505820.000000.000000.000001.000005.0000024.00000070.00000114.000000214.000000629.00000
reviews_per_month38843.01.3732211.6804420.010000.010000.060000.190000.720002.0200003.630004.6400007.19580058.50000
calculated_host_listings_count48895.07.14398232.9525191.000001.000001.000001.000001.000002.0000005.0000015.000000232.000000327.00000
availability_36548895.0112.781327131.6222890.000000.000000.000000.0000045.00000227.000000337.00000359.000000365.000000365.00000
\n", "
" ], "text/plain": [ " count mean std min \\\n", "latitude 48895.0 40.728949 0.054530 40.49979 \n", "longitude 48895.0 -73.952170 0.046157 -74.24442 \n", "price 48895.0 152.720687 240.154170 0.00000 \n", "minimum_nights 48895.0 7.029962 20.510550 1.00000 \n", "number_of_reviews 48895.0 23.274466 44.550582 0.00000 \n", "reviews_per_month 38843.0 1.373221 1.680442 0.01000 \n", "calculated_host_listings_count 48895.0 7.143982 32.952519 1.00000 \n", "availability_365 48895.0 112.781327 131.622289 0.00000 \n", "\n", " 0% 10% 25% 50% \\\n", "latitude 40.49979 40.66799 40.69010 40.72307 \n", "longitude -74.24442 -73.99669 -73.98307 -73.95568 \n", "price 0.00000 49.00000 69.00000 106.00000 \n", "minimum_nights 1.00000 1.00000 1.00000 3.00000 \n", "number_of_reviews 0.00000 0.00000 1.00000 5.00000 \n", "reviews_per_month 0.01000 0.06000 0.19000 0.72000 \n", "calculated_host_listings_count 1.00000 1.00000 1.00000 1.00000 \n", "availability_365 0.00000 0.00000 0.00000 45.00000 \n", "\n", " 75% 90% 95% 99% \\\n", "latitude 40.763115 40.80489 40.825643 40.864661 \n", "longitude -73.936275 -73.90781 -73.865771 -73.776920 \n", "price 175.000000 269.00000 355.000000 799.000000 \n", "minimum_nights 5.000000 28.00000 30.000000 45.000000 \n", "number_of_reviews 24.000000 70.00000 114.000000 214.000000 \n", "reviews_per_month 2.020000 3.63000 4.640000 7.195800 \n", "calculated_host_listings_count 2.000000 5.00000 15.000000 232.000000 \n", "availability_365 227.000000 337.00000 359.000000 365.000000 \n", "\n", " max \n", "latitude 40.91306 \n", "longitude -73.71299 \n", "price 10000.00000 \n", "minimum_nights 1250.00000 \n", "number_of_reviews 629.00000 \n", "reviews_per_month 58.50000 \n", "calculated_host_listings_count 327.00000 \n", "availability_365 365.00000 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.describe(percentiles=[.0, .25, .5, .75, .9, .95, .99, .1]).T" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.0" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.median(data['minimum_nights'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №2: 3" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABDAAAAHnCAYAAABOl60mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XuYZVV95//3RxAkKgFEOwgkkNga\nUSYoPcCMv2R6JEKLmtZEI4RIq2Q6GpjohMkIjs9gRGYwEzRCCA5KB0jQlngJRNsgXmoME7kqikAI\nDXakgYByk9YEbfL9/bFXwaE41V332tX1fj3Peeqctdfe57t3Va2zz3evtXaqCkmSJEmSpD570nwH\nIEmSJEmStDUmMCRJkiRJUu+ZwJAkSZIkSb1nAkOSJEmSJPWeCQxJkiRJktR7JjAkSZIkSVLvmcDQ\ngpLkc0lWtedvTHL5BNd7d5K/2MLyG5IsH1s3yU8n2ZRkuxkIX9Iil2RDkl+e5jYm3PZNV5J9klSS\n7bdSbyTJb81FTFt7/yRHJ/n8FLfz6GeBJM2XyZx/bgvnqi3+n51g3UrynNmOSf1lAkMLSlW9vKrO\nn4XtvqCqRoaUf6eqnlZVj8DMnaQn+YskdyX5fpJ/GLvNJD+R5E+TfC/Jg0m+MrDs3Ul+3Br7TZNp\n9CUtLltL3vbZVGOvqgur6rAJbP+8JO8ds+7Qz4Jt1Uwk1CTNvLHnnzNVt69a/LdNdztzmeDX/Nni\nFRVJs+Z/AcdW1cNJfh4YSfL1qrq2LT+H7v/z+cB9wAFj1v94Vf3m3IUrSZIkSfPLHhiaNUlOTHJr\nkoeS3JjkNUl2TPJAkhcO1Htmkn9O8qwkuyb5TJLvJrm/Pd9roO64PSCSfDDJ7a1Xw7VJfnFMlack\n+XiL52tJfmFg3aFXoQa7Tyc5FfhF4E9ar4c/SXJWktPHrPPXSd6+pWNTVTdU1cOjL9vj59r6zwN+\nBVhdVd+tqkcGEhuSeiLJ3kk+1dqre1ub8HNJvtRefy/JhUl2GWf97ZK8c6CdvLZt8wnDNqbS9iVZ\nAbwTeH1rs77Ryn8yybmtF9gdSd472vW4xfRHLfbbgFdM4pD8TJL/1/bl80l2H4jxV9rwjAfavjx/\nYNk7WhwPJbk5yaHjxT4Rg1fg0vlAkntab7ZvJnlhktXA0cB/a9v/61b/0c+C1gPkoiQXtNhuSLJs\n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\nfGu9pybzvifsv5k3ztK+LUTz2Sb7/yxJj9fn82RJmku9SGAk2Q44C3gZsBG4OsklVXXj/EY2c7b2\nhWqqy2cyaTFbXxrmYrvDyreUNOqTmUwIDEuOvXECx3+qSbOpxDWZ38ts/d1P9/9xW7cY2mRJWihs\nkyXpMb1IYAAHAeur6jaAJGuBlYAN8yzb0hfEsV9+xzMTX0gnY6JxTfW9JvOleWv7PtVjM1vJl6n0\nTJiJbY1db6K/Q82b3rTJ9saQNJ5F1D70pk2WpPnWlwTGnsDtA683AgfPUyyapMV8tXpw+MGwf6eZ\nTqJIc6SXbfJs/V8M++Iz+F6TGV40k1+otjbn0kSSnlOZJ2kb/yLYK4voC7impzdt8mR6bNqmSJoN\nqar5joEkrwMOr6rfaq/fABxUVf95TL3VwOr28nnAzVN4u92B700j3NnQx5jAuCajjzGBcU3GXMT0\nM1X1zFl+j2mbwza5j38HwxjnzDLOmbdQYu1bnLbJj9e338/WGO/sMt7ZZbxPNKE2uS89MDYCew+8\n3gu4c2ylqjoHOGc6b5TkmqpaNp1tzLQ+xgTGNRl9jAmMazL6GNM8mpM2eaEcc+OcWcY58xZKrAsl\nzh6yTR7CeGeX8c4u4526J813AM3VwNIk+ybZATgSuGSeY5Kkxco2WZL6wzZZkppe9MCoqs1Jjgcu\npbs91JqqumGew5KkRck2WZL6wzZZkh7TiwQGQFWtA9bNwVtNawjKLOljTGBck9HHmMC4JqOPMc2b\nOWqTF8oxN86ZZZwzb6HEulDi7B3b5KGMd3YZ7+wy3inqxSSekiRJkiRJW9KXOTAkSZIkSZLGtWgS\nGElWJLk5yfokJ85zLBuSXJ/kuiTXtLLdklyW5Jb2c9c5iGNNknuSfGugbGgc6ZzRjt83k7x4DmN6\nd5I72vG6LskRA8tOajHdnOTw2Yipvc/eSb6c5KYkNyR5Wyuft+O1hZjm9XgleUqSq5J8o8X1B618\n3yRXtmP18TYRGUl2bK/Xt+X7zHFc5yX59sDxOqCVz8nf/GLUp/Z4rL60z+PE1rs2exJxzns7PiTO\n3rXrk4yzV8e0r22/JqaP7fJC+R8dE/N2Sb6e5DPtda///pPskuQTSf6+Hed/1/Pj+1/a38K3knys\ntTu9OcaZoc/pJKta/VuSrJrjeP93+3v4ZpJPJ9llYNnQz5Y5bz+qapt/0E14dCvws8AOwDeA/eYx\n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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(15,10))\n", "ax = plt.gca()\n", "data.hist(bins=100, ax=ax, layout=(3, 3), column=['price', 'minimum_nights','number_of_reviews','reviews_per_month','calculated_host_listings_count','availability_365'])\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEKCAYAAAA4t9PUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3X+QXWWd5/H3p293Oj8kAUJUTGAS\nl6gTLBU2oqyWtSMq4Lhm3IUyOK6My8jUCFM6bq0LzhY1Qw21izOrjjP4gxJmGPwRGPwxLYUyKjou\no4Y0gkqASJuotIA0BhOIdKfvvd/94zy3c3P73r7npvt03/T9vKq6cu5znnPuc/pgf/0+z3Oeo4jA\nzMzsSPUtdAPMzOzo5kBiZmaz4kBiZmaz4kBiZmaz4kBiZmaz4kBiZmaz4kBiZmaz4kBiZmaz4kBi\nZmaz0r/QDZgPJ5xwQqxfv36hm2FmdtS4++67n4iINXnq9kQgWb9+PcPDwwvdDDOzo4akn+Wt664t\nMzObFQcSMzObFQcSMzOblUIDiaRzJO2SNCLpsib7ByXdlPZvl7S+bt/lqXyXpLPryo+VdIukByU9\nIOnMIq/BzMxmVlggkVQCrgHOBTYBF0ja1FDtIuDJiDgF+DBwdTp2E7AVOBU4B/hYOh/A3wBfjYgX\nAS8FHijqGszMrL0iM5IzgJGI2B0RB4FtwJaGOluAG9L2LcBZkpTKt0XERETsAUaAMyStBF4DXAcQ\nEQcj4tcFXoOZmbVRZCBZCzxc93k0lTWtExFlYB+weoZjnw+MAX8v6R5Jn5K0otmXS7pY0rCk4bGx\nsbm4HjMza6LIQKImZY3v9W1Vp1V5P3A68PGIOA04AEwbewGIiGsjYnNEbF6zJtczNWZmdgSKDCSj\nwEl1n9cBj7SqI6kfWAXsneHYUWA0Iran8lvIAsu8uPtneznzf3+D/eOT8/WVZmZdr8hAsgPYKGmD\npCVkg+dDDXWGgAvT9nnAHRERqXxrmtW1AdgI3BURjwEPS3phOuYs4P4Cr+EwPxk7wKP7xnl8/8R8\nfaWZWdcrbImUiChLuhS4HSgB10fETklXAsMRMUQ2aH6jpBGyTGRrOnanpJvJgkQZuCQiKunUfwJ8\nJgWn3cA7i7qGRtVq1jM3Ua60qWlm1jsKXWsrIm4Dbmsou6Juexw4v8WxVwFXNSm/F9g8ty3NpxJZ\n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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.distplot(data.price)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.distplot(np.log1p(data.price))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def train_linear_regression(X, y):\n", " ones = np.ones(X.shape[0])\n", " X = np.column_stack([ones, X])\n", "\n", " XTX = X.T.dot(X)\n", " XTX_inv = np.linalg.inv(XTX)\n", " w = XTX_inv.dot(X.T).dot(y)\n", " \n", " return w[0], w[1:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dataset Preparation" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "n = len(data)\n", "\n", "n_val = int(0.2 * n)\n", "n_test = int(0.2 * n)\n", "n_train = n - (n_val + n_test)\n", "\n", "idx = np.arange(n)\n", "np.random.seed(42)\n", "np.random.shuffle(idx)\n", "\n", "df_shuffled = data.iloc[idx]" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df_train = df_shuffled.iloc[:n_train].copy()\n", "df_val = df_shuffled.iloc[n_train:n_train+n_val].copy()\n", "df_test = df_shuffled.iloc[n_train+n_val:].copy()\n", "\n", "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "y_train_orig = df_train.price.values\n", "y_val_orig = df_val.price.values\n", "y_test_orig = df_test.price.values\n", "\n", "y_train = np.log1p(y_train_orig)\n", "y_val = np.log1p(y_val_orig)\n", "y_test = np.log1p(y_test_orig)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "del df_train['price']\n", "del df_val['price']\n", "del df_test['price']" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true }, "outputs": [], "source": [ "check = ['latitude','longitude','minimum_nights','number_of_reviews','reviews_per_month','calculated_host_listings_count','availability_365']\n", "\n", "def prepare_X(df, fillna_value):\n", " df_num = df[check]\n", " df_num = df_num.fillna(fillna_value)\n", " X = df_num.values\n", " return X" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def rmse(y, y_pred):\n", " error = y_pred - y\n", " mse = (error ** 2).mean()\n", " return np.sqrt(mse)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": true }, "outputs": [], "source": [ "mean = df_train.reviews_per_month.mean()\n", "\n", "X_mean_train = prepare_X(df_train, fillna_value=mean)\n", "w_0_mean, w_mean = train_linear_regression(X_mean_train, y_train)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ "X_mean_val = prepare_X(df_val, fillna_value=mean)\n", "y_mean_pred_val = w_0_mean + X_mean_val.dot(w_mean)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.64" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.round(rmse(y_val, y_mean_pred_val),2)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": true }, "outputs": [], "source": [ "X_null_train = prepare_X(df_train, fillna_value=0)\n", "w_0_null, w_null = train_linear_regression(X_null_train, y_train)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": true }, "outputs": [], "source": [ "X_null_val = prepare_X(df_val, fillna_value=0)\n", "y_null_pred_val = w_0_null + X_null_val.dot(w_null)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.64" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.round(rmse(y_val, y_null_pred_val),2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №3: Both are equally good" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Regularization" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def train_linear_regression_reg(X, y, r=0.0):\n", " ones = np.ones(X.shape[0])\n", " X = np.column_stack([ones, X])\n", "\n", " XTX = X.T.dot(X)\n", " reg = r * np.eye(XTX.shape[0])\n", " XTX = XTX + reg\n", "\n", " XTX_inv = np.linalg.inv(XTX)\n", " w = XTX_inv.dot(X.T).dot(y)\n", " \n", " return w[0], w[1:]" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 -419.9126580519807 0.64\n", "1e-06 -419.86271535082346 0.64\n", "0.0001 -414.9764923424945 0.64\n", "0.001 -375.2736524433478 0.64\n", "0.01 -191.78384048827496 0.66\n", "0.1 -32.56256055386593 0.68\n", "1 -3.4992168346711368 0.68\n", "5 -0.7033623168161591 0.68\n", "10 -0.3512767593603925 0.68\n" ] } ], "source": [ "for r in [0, 0.000001, 0.0001, 0.001, 0.01, 0.1, 1, 5, 10]:\n", " w_0, w = train_linear_regression_reg(X_null_train, y_train, r=r)\n", " y_null_reg_val = w_0 + X_null_val.dot(w)\n", " rmse_val = np.round(rmse(y_val, y_null_reg_val),2)\n", " print(r, w_0, rmse_val)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №4: 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Seed Checking" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 -427.6284466670309 0.65\n", "1 -414.7055496010243 0.65\n", "2 -423.2541339553298 0.65\n", "3 -421.893315004707 0.64\n", "4 -422.06099022404106 0.64\n", "5 -429.17875238444327 0.63\n", "6 -427.4918956967628 0.63\n", "7 -428.18847016910405 0.65\n", "8 -427.6929103965057 0.65\n", "9 -426.98269037520964 0.64\n" ] } ], "source": [ "rmse_list = []\n", "\n", "for r in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:\n", "\n", " idx = np.arange(n)\n", " np.random.seed(r)\n", " np.random.shuffle(idx)\n", "\n", " df_shuffled = data.iloc[idx]\n", " \n", " df_train = df_shuffled.iloc[:n_train].copy()\n", " df_val = df_shuffled.iloc[n_train:n_train+n_val].copy()\n", " df_test = df_shuffled.iloc[n_train+n_val:].copy()\n", "\n", " df_train = df_train.reset_index(drop=True)\n", " df_val = df_val.reset_index(drop=True)\n", " df_test = df_test.reset_index(drop=True)\n", " \n", " y_train_orig = df_train.price.values\n", " y_val_orig = df_val.price.values\n", " y_test_orig = df_test.price.values\n", "\n", " y_train = np.log1p(y_train_orig)\n", " y_val = np.log1p(y_val_orig)\n", " y_test = np.log1p(y_test_orig)\n", " \n", " del df_train['price']\n", " del df_val['price']\n", " del df_test['price']\n", " \n", " X_null_train = prepare_X(df_train, fillna_value=0)\n", " w_0, w = train_linear_regression(X_null_train, y_train)\n", " \n", " X_null_val = prepare_X(df_val, fillna_value=0)\n", " y_null_reg_val = w_0 + X_null_val.dot(w)\n", " rmse_val = np.round(rmse(y_val, y_null_reg_val),2)\n", " \n", " rmse_list.append(rmse_val)\n", " \n", " print(r, w_0, rmse_val)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0.65, 0.65, 0.65, 0.64, 0.64, 0.63, 0.63, 0.65, 0.65, 0.64]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rmse_list" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.008" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.round(np.std(rmse_list),3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №5: 0.008" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Seed and Regularization" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": true }, "outputs": [], "source": [ "r = 9\n", "\n", "idx = np.arange(n)\n", "np.random.seed(r)\n", "np.random.shuffle(idx)\n", "\n", "df_shuffled = data.iloc[idx]\n", " \n", "df_train = df_shuffled.iloc[:n_train].copy()\n", "df_val = df_shuffled.iloc[n_train:n_train+n_val].copy()\n", "df_test = df_shuffled.iloc[n_train+n_val:].copy()\n", "\n", "frames = [df_train, df_val]\n", "df_train_val = pd.concat(frames)\n", "\n", "df_train_val = df_train_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)\n", "\n", "y_train_val_orig = df_train_val.price.values\n", "y_test_orig = df_test.price.values\n", "\n", "y_train_val = np.log1p(y_train_val_orig)\n", "y_test = np.log1p(y_test_orig)\n", "\n", "del df_train_val['price']\n", "del df_test['price']" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.65" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_null_train_val = prepare_X(df_train_val, fillna_value=0)\n", "w_0_train_val, w_train_val = train_linear_regression_reg(X_null_train_val, y_train_val, r=0.001)\n", "\n", "X_null_test = prepare_X(df_test, fillna_value=0)\n", "y_null_pred_test = w_0_train_val + X_null_test.dot(w_train_val)\n", "\n", "np.round(rmse(y_test, y_null_pred_test),2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №6: 0.65" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: cohorts/2021/02-regression/homework.md ================================================ ## 2.18 Homework Solution: [homework.ipynb](homework.ipynb) ### Dataset In this homework, we will use the New York City Airbnb Open Data. You can take it from [Kaggle](https://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data?select=AB_NYC_2019.csv) or download from [here](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/AB_NYC_2019.csv) if you don't want to sign up to Kaggle. The goal of this homework is to create a regression model for prediction apartment prices (column `'price'`). ### EDA * Load the data. * Look at the `price` variable. Does it have a long tail? ### Features For the rest of the homework, you'll need to use only these columns: * `'latitude'`, * `'longitude'`, * `'price'`, * `'minimum_nights'`, * `'number_of_reviews'`, * `'reviews_per_month'`, * `'calculated_host_listings_count'`, * `'availability_365'` Select only them. ### Question 1 Find a feature with missing values. How many missing values does it have? ### Question 2 What's the median (50% percentile) for variable 'minimum_nights'? ### Split the data * Shuffle the initial dataset, use seed `42`. * Split your data in train/val/test sets, with 60%/20%/20% distribution. * Make sure that the target value ('price') is not in your dataframe. * Apply the log transformation to the price variable using the `np.log1p()` function. ### Question 3 * We need to deal with missing values for the column from Q1. * We have two options: fill it with 0 or with the mean of this variable. * Try both options. For each, train a linear regression model without regularization using the code from the lessons. * For computing the mean, use the training only! * Use the validation dataset to evaluate the models and compare the RMSE of each option. * Round the RMSE scores to 2 decimal digits using `round(score, 2)` * Which option gives better RMSE? ### Question 4 * Now let's train a regularized linear regression. * For this question, fill the NAs with 0. * Try different values of `r` from this list: `[0, 0.000001, 0.0001, 0.001, 0.01, 0.1, 1, 5, 10]`. * Use RMSE to evaluate the model on the validation dataset. * Round the RMSE scores to 2 decimal digits. * Which `r` gives the best RMSE? If there are multiple options, select the smallest `r`. ### Question 5 * We used seed 42 for splitting the data. Let's find out how selecting the seed influences our score. * Try different seed values: `[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]`. * For each seed, do the train/validation/test split with 60%/20%/20% distribution. * Fill the missing values with 0 and train a model without regularization. * For each seed, evaluate the model on the validation dataset and collect the RMSE scores. * What's the standard deviation of all the scores? To compute the standard deviation, use `np.std`. * Round the result to 3 decimal digits (`round(std, 3)`) > Note: Standard deviation shows how different the values are. > If it's low, then all values are approximately the same. > If it's high, the values are different. > If standard deviation of scores is low, then our model is *stable*. ### Question 6 * Split the dataset like previously, use seed 9. * Combine train and validation datasets. * Fill the missing values with 0 and train a model with `r=0.001`. * What's the RMSE on the test dataset? ## Submit the results Submit your results here: https://forms.gle/2N9GkTr1AgNeZ8hD7. If your answer doesn't match options exactly, select the closest one. ## Deadline The deadline for submitting is 20 September 2021, 17:00 CET. After that, the form will be closed. ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 2: Machine Learning for Regression](./) * Previous: [Explore more](17-explore-more.md) ================================================ FILE: cohorts/2021/03-classification/homework.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Data Import" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "usecols = [\n", " 'room_type', 'neighbourhood_group',\n", " 'latitude','longitude','price','minimum_nights','number_of_reviews','reviews_per_month','calculated_host_listings_count','availability_365']\n", "\n", "data = pd.read_csv('/Users/muzalevskiy/Downloads/data-science-ml-master/DS_KnowHow/EDA_Preprocessing/data/AB_NYC_2019.csv', usecols=usecols)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(48895, 10)\n" ] } ], "source": [ "print(data.shape)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
neighbourhood_grouplatitudelongituderoom_typepriceminimum_nightsnumber_of_reviewsreviews_per_monthcalculated_host_listings_countavailability_365
0Brooklyn40.64749-73.97237Private room149190.216365
1Manhattan40.75362-73.98377Entire home/apt2251450.382355
2Manhattan40.80902-73.94190Private room15030NaN1365
3Brooklyn40.68514-73.95976Entire home/apt8912704.641194
4Manhattan40.79851-73.94399Entire home/apt801090.1010
5Manhattan40.74767-73.97500Entire home/apt2003740.591129
6Brooklyn40.68688-73.95596Private room6045490.4010
7Manhattan40.76489-73.98493Private room7924303.471220
8Manhattan40.80178-73.96723Private room7921180.9910
9Manhattan40.71344-73.99037Entire home/apt15011601.334188
\n", "
" ], "text/plain": [ " neighbourhood_group latitude longitude room_type price \\\n", "0 Brooklyn 40.64749 -73.97237 Private room 149 \n", "1 Manhattan 40.75362 -73.98377 Entire home/apt 225 \n", "2 Manhattan 40.80902 -73.94190 Private room 150 \n", "3 Brooklyn 40.68514 -73.95976 Entire home/apt 89 \n", "4 Manhattan 40.79851 -73.94399 Entire home/apt 80 \n", "5 Manhattan 40.74767 -73.97500 Entire home/apt 200 \n", "6 Brooklyn 40.68688 -73.95596 Private room 60 \n", "7 Manhattan 40.76489 -73.98493 Private room 79 \n", "8 Manhattan 40.80178 -73.96723 Private room 79 \n", "9 Manhattan 40.71344 -73.99037 Entire home/apt 150 \n", "\n", " minimum_nights number_of_reviews reviews_per_month \\\n", "0 1 9 0.21 \n", "1 1 45 0.38 \n", "2 3 0 NaN \n", "3 1 270 4.64 \n", "4 10 9 0.10 \n", "5 3 74 0.59 \n", "6 45 49 0.40 \n", "7 2 430 3.47 \n", "8 2 118 0.99 \n", "9 1 160 1.33 \n", "\n", " calculated_host_listings_count availability_365 \n", "0 6 365 \n", "1 2 355 \n", "2 1 365 \n", "3 1 194 \n", "4 1 0 \n", "5 1 129 \n", "6 1 0 \n", "7 1 220 \n", "8 1 0 \n", "9 4 188 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head(10)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "data['reviews_per_month']=data.reviews_per_month.fillna(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Frequent Values" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
neighbourhood_grouproom_type
count4889548895
unique53
topManhattanEntire home/apt
freq2166125409
\n", "
" ], "text/plain": [ " neighbourhood_group room_type\n", "count 48895 48895\n", "unique 5 3\n", "top Manhattan Entire home/apt\n", "freq 21661 25409" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.describe(include=[\"O\"])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 Manhattan\n", "dtype: object" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['neighbourhood_group'].mode()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №1: 'Manhattan'" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
latitudelongitudeminimum_nightsnumber_of_reviewsreviews_per_monthcalculated_host_listings_countavailability_365
count48895.00000048895.00000048895.00000048895.00000048895.00000048895.00000048895.000000
mean40.728949-73.9521707.02996223.2744661.0909107.143982112.781327
std0.0545300.04615720.51055044.5505821.59728332.952519131.622289
min40.499790-74.2444201.0000000.0000000.0000001.0000000.000000
25%40.690100-73.9830701.0000001.0000000.0400001.0000000.000000
50%40.723070-73.9556803.0000005.0000000.3700001.00000045.000000
75%40.763115-73.9362755.00000024.0000001.5800002.000000227.000000
max40.913060-73.7129901250.000000629.00000058.500000327.000000365.000000
\n", "
" ], "text/plain": [ " latitude longitude minimum_nights number_of_reviews \\\n", "count 48895.000000 48895.000000 48895.000000 48895.000000 \n", "mean 40.728949 -73.952170 7.029962 23.274466 \n", "std 0.054530 0.046157 20.510550 44.550582 \n", "min 40.499790 -74.244420 1.000000 0.000000 \n", "25% 40.690100 -73.983070 1.000000 1.000000 \n", "50% 40.723070 -73.955680 3.000000 5.000000 \n", "75% 40.763115 -73.936275 5.000000 24.000000 \n", "max 40.913060 -73.712990 1250.000000 629.000000 \n", "\n", " reviews_per_month calculated_host_listings_count availability_365 \n", "count 48895.000000 48895.000000 48895.000000 \n", "mean 1.090910 7.143982 112.781327 \n", "std 1.597283 32.952519 131.622289 \n", "min 0.000000 1.000000 0.000000 \n", "25% 0.040000 1.000000 0.000000 \n", "50% 0.370000 1.000000 45.000000 \n", "75% 1.580000 2.000000 227.000000 \n", "max 58.500000 327.000000 365.000000 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_numeric = data.copy()\n", "data_numeric = data.drop([\"neighbourhood_group\",\"room_type\", \"price\"], axis=1)\n", "data_numeric.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correlation Calculation" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
latitudelongitudeminimum_nightsnumber_of_reviewsreviews_per_monthcalculated_host_listings_countavailability_365
latitude1.0000000.0847880.024869-0.015389-0.0187580.019517-0.010983
longitude0.0847881.000000-0.0627470.0590940.138516-0.1147130.082731
minimum_nights0.024869-0.0627471.000000-0.080116-0.1249050.1279600.144303
number_of_reviews-0.0153890.059094-0.0801161.0000000.589407-0.0723760.172028
reviews_per_month-0.0187580.138516-0.1249050.5894071.000000-0.0473120.163732
calculated_host_listings_count0.019517-0.1147130.127960-0.072376-0.0473121.0000000.225701
availability_365-0.0109830.0827310.1443030.1720280.1637320.2257011.000000
\n", "
" ], "text/plain": [ " latitude longitude minimum_nights \\\n", "latitude 1.000000 0.084788 0.024869 \n", "longitude 0.084788 1.000000 -0.062747 \n", "minimum_nights 0.024869 -0.062747 1.000000 \n", "number_of_reviews -0.015389 0.059094 -0.080116 \n", "reviews_per_month -0.018758 0.138516 -0.124905 \n", "calculated_host_listings_count 0.019517 -0.114713 0.127960 \n", "availability_365 -0.010983 0.082731 0.144303 \n", "\n", " number_of_reviews reviews_per_month \\\n", "latitude -0.015389 -0.018758 \n", "longitude 0.059094 0.138516 \n", "minimum_nights -0.080116 -0.124905 \n", "number_of_reviews 1.000000 0.589407 \n", "reviews_per_month 0.589407 1.000000 \n", "calculated_host_listings_count -0.072376 -0.047312 \n", "availability_365 0.172028 0.163732 \n", "\n", " calculated_host_listings_count \\\n", "latitude 0.019517 \n", "longitude -0.114713 \n", "minimum_nights 0.127960 \n", "number_of_reviews -0.072376 \n", "reviews_per_month -0.047312 \n", "calculated_host_listings_count 1.000000 \n", "availability_365 0.225701 \n", "\n", " availability_365 \n", "latitude -0.010983 \n", "longitude 0.082731 \n", "minimum_nights 0.144303 \n", "number_of_reviews 0.172028 \n", "reviews_per_month 0.163732 \n", "calculated_host_listings_count 0.225701 \n", "availability_365 1.000000 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_numeric.corr()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nTkVERERERCTPnHM3H2W5A+4/1nzVOBUREREREQl3ViCe2/SPhE9sWERERERERIosRU5FRERERETC\nXRiNOc0vhb+GIiIiIiIiEvYUORUREREREQl3GnMqIiIiIiIikv8UORUREREREQl3GnMqIiIiIiIi\nkv8UORUREREREQl3GnMqIiIiIiIikv8UORUREREREQl3GnMqIiIiIiIikv/UOBUREREREZGQU7de\nERERERGRcKcHIomIiIiIiIjkP0VORUREREREwp0eiCQiIiIiIiKS/xQ5FRERERERCXcacyoiIiIi\nIiKS/xQ5FRERERERCXcacyoiIiIiIiKS/xQ5FRERERERCXcacyoiIiIiIiKS/xQ5FRERERERCXca\ncyoiIiIiIiKS/xQ5FRERERERCXeKnIqIiIiIiIjkP0VORUREREREwl0xPa1XREREREREJN8pclpE\nmNke51x0LsvLA7c45171p6sCrzjnrjOzxkBV59znx/iZPYE9zrkX/kHRC5QRPTpwecsGJG3fTZPr\n+4e6OIXCLz/M5Y1hL5CenkabK67m2pvvyLQ8JTmZVwZ254+VyylTthyPPvsccZWrkpqawvAX+vDH\nqhWkpaXR+uJ/ce0tdwJw7y1XElWqFMWKRRAREcGg4eNCUbUC4af5cxg5ZBDp6elceuU13HDrnZmW\npyQn80Lfbqz6zdv+T/UeSHyVaiz4cR5jhr9CSmoKxSOLc+f9j9D47KYAPNH5LrZv28oJJ5wAQN/B\nIyhfoWLQ61YQOOcY+tJzfD93FiVLlqTrs32pU7feEelWLl/KwD7dOHjwIOc2a0HnR5/EzJg+7Uve\nGj2c9Wv/4NU33+O00+sDsGXzJjre1J4aNWsBUK9BQx55snswqxb28mvbp6Sk8NKAXqxcsRSzYnR+\n9Ekan31OsKtXoPw0fw7DXx5Ieno6l111DTfeelem5cnJybzQ5xl+/205ZcuV46neg6hcpRoLfpjH\nGyOGkJqSQmTx4tx9/yM0PvvcENWiYHHOMeyl5/h+3ixOOCGX43/FUgYdOv7Pb8H9/vE/Y9qXvPWa\nd/wPe+Pw8b9z5w56PfUovy1fwqX/as+Djz8T7KpJmFPkVA4pD9x3aMI5t9k5d50/2Ri4IiSlKmDG\nTp5P+/uHhboYhUZaWhqjX3mOZwa8wstvTGT2t1+yYe0fmdJM++IToqPLMmzsp1z57w6MHf0KAPNm\n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\nQvcDTfUKJeDIXvthKerigUFruO3/+omQbBM1TiVcFcjGaWEQbo3ToibcGqdFTbg1TouScGucFjXh\n3DgtCsKtcVqUqHGavVA1TjXmVEREREREJNxpzKmIiIiIiIhI/lPkVEREREREJNyF8P+PBosipyIi\nIiIiIhJyipyKiIiIiIiEO405FREREREREcl/ipyKiIiIiIiEO405FREREREREcl/apyKiIiIiIhI\nyKlbr4iIiIiISLjTA5FERERERERE8p8ipyIiIiIiIuFOD0QSERERERERyX+KnIqIiIiIiIQ7jTkV\nERERERERyX+KnIqIiIiIiIQ7RU5FRERERERE8p8ipyIiIiIiIuFOT+sVERERERERyX+KnIqIiIiI\niIQ7jTkVERERERERyX+KnIqIiIiIiIQ7jTkVERERERERyX+KnIqIiIiIiIQ7jTkVERERERERyX9q\nnIqIiIiIiEjIqVuviIiIiIhIuNMDkURERERERETynyKnIiIiIiIiYc4UORURERERERHJf4qcioiI\niIiIhDlFTkVERERERESCQJFTERERERGRcFf4A6eKnIqIiIiIiEjomXMu1GUQyY4OTBEREREJhgIR\nk4y+YUzQ7o/3TOgYkm2ibr0StpZs3BPqIhRJDapHAxB1ZucQl6Ro2v/LULbtTQ11MYqsSqUjWfHn\nvlAXo0iqW6UUAD/+sTPEJSmazjm5HPtS9LtwqJQqbrrvCZFD9z0SHtQ4FRERERERCXN6Wq+IiIiI\niIhIEChyKiIiIiIiEuYUORUREREREREJAkVORUREREREwpwipyIiIiIiIiJBoMapiIiIiIiIhJy6\n9YqIiIiIiIS7wt+rV5FTERERERERCT1FTkVERERERMKcHogkIiIiIiIiEgSKnIqIiIiIiIQ5RU5F\nREREREREgkCRUxERERERkTCnyKmIiIiIiIhIFmZ2mZn9ZmarzOzJbJbXNLPvzOwXM1tkZlccLU9F\nTkVERERERMJcOEVOzSwCGAZcDGwEfjSzSc65ZQHJugETnHPDzawe8DlQK7d8FTkVERERERGRY9EU\nWOWc+8M5lwy8D7TPksYBZf335YDNR8tUkVMREREREZFwFz6BU4BqwIaA6Y3AuVnS9AS+MrMHgNJA\n26NlqsipiIiIiIiIZDCzTmb2U8CrU9Yk2azmskzfDIxxzlUHrgDGmlmu7U9FTkVERERERMJcMMec\n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\na669jnvvf4Clixfz6MOd2bVrFzOnf8eIYUP58NMpoapO2MuP+561q39n6KAepKWl4ZyjWau2NDm/\nZYhrWvAUhcip5fZUPyn8zCzaObfHf3rvMOB359zgUJcLcEs27gl1GYqkBtW9BylHnalf90Nh/y9D\n2bY3NdTFKLIqlY5kxZ964nMo1K3iPcnzxz92hrgkRdM5J5djX4ruCUOlVHFD9z2h4d/3FIhWX/X7\nPgnaSbrx1atDsk3UrVf+6z8gaSlQDu/pvSIiIiIiIkGlbr1FnB8lDYdIqYiIiIiI5KAodOtV5FRE\nRERERERCTpFTERERERGRcFf4A6eKnIqIiIiIiEjoKXIqIiIiIiIS5jTmVERERERERCQIFDkVERER\nEREJc4qcioiIiIiIiASBIqciIiIiIiJhTpFTERERERERkSBQ5FRERERERCTMKXIqIiIiIiIiEgSK\nnIqIiIiIiIS7wh84VeRUREREREREQk+RUxERERERkTCnMaciIiIiIiIiQaDGqYiIiIiIiIScuvWK\niIiIiIiEOXXrFREREREREQkCRU5FRERERETCXBEInCpyKiIiIiIiIqGnyKmIiIiIiEiY05hTERER\nERERkSBQ5FRERERERCTMFYHAqSKnIiIiIiIiEnqKnIqIiIiIiIQ5jTkVERERERERCQJFTkVERERE\nRMJcEQicKnIqIiIiIiIioafIqYiIiIiISJgrVqzwh04VORUREREREZGQU+RUREREREQkzGnMqYiI\niIiIiEgQmHMu1GUQyY4OTBEREREJhgIRk6z/zFdBuz9e2u+SkGwTdeuVsLU6aX+oi1Ak1Y6NAmDb\n3tQQl6RoqlQ6kqgzO4e6GEXW/l+GsmN/WqiLUSSVj4oA4IAuPSFRMhJ+WrMr1MUospqcVJbvV+8M\ndTGKpHNrlwt1EfLMikC/XnXrFRERERERkZBT5FRERERERCTMFYHAqSKnIiIiIiIiEnqKnIqIiIiI\niIQ5jTkVERERERERCQJFTkVERERERMKcIqciIiIiIiIiQaDIqYiIiIiISJgrAoFTRU5FREREREQk\n9BQ5FRERERERCXMacyoiIiIiIiISBIqcioiIiIiIhLkiEDhV5FRERERERERCT5FTERERERGRMKcx\npyIiIiIiIiJBoMapiIiIiIiIhJy69YqIiIiIiIS5ItCrV5FTERERERERCT1FTkVERERERMKcHogk\nIiIiIiIiEgSKnIqIiIiIiIS5IhA4VeRUREREREREQk+RUxERERERkTCnMaciIiIiIiIiQaDIqYiI\niIiISJgrAoFTRU5FREREREQk9BQ5FRERERERCXMacyoiIiIiIiISBIqcioiIiIiIhLkiEDhV5FRE\nRERERERCT5FTERERERGRMKcxpyIiIiIiIiJBoMipSB78NH8OI4cMIj09nUuvvIYbbr0z0/KU5GRe\n6NuNVb8tp0zZcjzVeyDxVaqx4Md5jBn+CimpKRSPLM6d9z9C47ObAvBE57vYvm0rJ5xwAgB9B4+g\nfIWKQa9buHPOMfj5AcybPZOSJaPo1qsfp51e74h0K5YtpW/PZzh44ADnN2/JI12eyviF8YP33+HD\n8e8SERFBs+Ytuf/hx1m2ZBED+/bM+Iy77rmfVhe1DWLNCpcRPTpwecsGJG3fTZPr+4e6OIWSc46X\nBvVnrn8uPNu7P3WzOReWL1tKn+5Pc/DgAZo1b8mjXZ/GzFi5YjnP9etF8sGDRERG0vWpZ6l/RsMQ\n1KTgcc4xcEA/Zs+cQcmokvTp9xyn16t/RLr/DRnM5EmfsGvnLub/9EvG/LfHvMnHH35ARGQEFSpU\npFff/lStWi2YVSjQFv40l7HDXyQ9PZ3Wl7Wn3Y0dMy1fvngB40a8xPo1q+j8VD/ObdEGgKSEP3m5\nT1fS09NIS03lkvY30vZf/w5BDQq2RT/NY9xIb/u3urQ9V91we6blKxYv4J1Rg9mwZhX3PdmXps3b\nZFq+f98enrznRs4+vzW33dclmEWXfGZmlwFDgAjgNefcc9mkuQHoCThgoXPultzyVOQ0n5hZOzN7\n8ihpqprZxGCV6ViZWRMze+UoaWqZ2ZIclnU0s6r5U7rgSUtL49WXBtD7hWGMGPcRM76Zyvo1qzOl\n+XLKx0SXKcvr4ydzzY3/4Y3hQwAoV64CPQYNYfjbE3m0Wx9e7PNMpvW69OjP0DETGDpmghqmOZg3\nZxYb169jwqdf8ES3njw/oHe26Z4f0JsnnunJhE+/YOP6dcyfOxuAn3/8nlnTv+Xt8R/zzsRJ3Hzb\nHQCcXPtUXh83gbfe/4iXho5iYL9epKamBq1ehc3YyfNpf/+wUBejUJs7eyYb1q9j4qSpPPlsLwb1\n65VtukH9evPUs72YOGkqG9avY96cWQD87+UXufue+xg34WM6/V9nhr78YjCLX6DNnjWT9evWMvmL\nr+jesw99e/fMNl2r1hfyzvsfHDG/7umn8+6ED5n48WQuvuRSBr/4fD6XuPBIT0tjzLBBdO07hEGj\nJjBv+ldsXPdHpjQxsZW557EeNLvw0kzzK1SMoedLrzPg1XfpPWQMk8e/xV/bkoJZ/AIvPS2Nt18d\nxOO9h/DciPHMn/Elm9Zn3v6V4irz30e7c37rS7LN48O3R3JagzODUdxCzyx4r6OXxSKAYcDlQD3g\nZjOrlyXNqcBTwAXOufrAw0fLV43TfOKcm5TdrwdZ0mx2zl0XrDIdK+fcT865B/9BFh2BAt84Xbl8\nCVWr16BKteoUL16clm0vZd7s6ZnSzJ89nbaXXwVA89ZtWfjzDzjnqF2nLpVi4gA48aTaJCcnk5Kc\nHOwqFGizpn/LZVe2w8xo0LARe3bvZmtS5puLrUlJ7N27lzMaNcbMuOzKdsz8bhoAH08cz6133E2J\nEiUAqFixEgAlo6KIjPQ6jyQnHywS4zjy05wFq9m+c1+oi1GozZz+LZdf2R4z44yGjdid47mwJ+Nc\nuPzK9szwzwUzY+/evQDs2bOHmNi4oNehoPru22lc1e5qzIyGjRqze/cukpISj0jXsFFjYrPZrk3P\nPY+oqCgAzmjUmMQtW/K9zIXF6t+WEl+lBnFVqhNZvDjntbqYn+fNyJQmtnJVap586hHX8cjixSnu\nX/tTUpJxLj1o5S4sVq9cSlzV6sRVqeZt/5aXsGDezExpYuOrUvOkU7FiRzYr1vy+nJ07tnPGWecF\nq8gSPE2BVc65P5xzycD7QPssaf4LDHPO/QXgnDvywpmFGqd/gx8tXGFmr5nZEjN7x8zamtkcM/vd\nzJr6UcOhfvoxZvaKmc01sz/M7LqAfJb47zua2SdmNtnM1phZZzN71Mx+MbP5ZlbRTzfdzJr472PM\nbO2xrJ9Dfaab2UAz+8HMVppZC39+azOb4r+PNbOvzWyBmY00s3VmFuNnEWFmo81sqZl9ZWZRfh2b\nAO+Y2a/+vOfMbJmZLTKzF/Jj3+SHbUmJxMRVzpiOiY1nW5abkm1JicT6aSIiIylVOppdO3dkSjNn\n+jfUPrVuxhclwOD+Pejc8QbeHTMK51w+1qLgSkpMJD7+8PaPjYsnKSkhc5qkBOLi4jOm4+Iqk5To\n7aMN69aycMHP3H3bTdx39+0sW7o4I93SxYvocF07br3haro+3T2jsSoSjpISE4mvfPhciIuPJykx\n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\nIuLn9DunIiIiIiIiIplAnVMRERERERHxOQ3rFRERERER8XOWA35LRplTERERERER8TllTkVERERE\nRPxcDkicKnMqIiIiIiIivqfMqYiIiIiIiJ8LyAGpU2VORURERERExOeUORUREREREfFzOSBxqsyp\niIiIiIiI+J4553wdg0ha9MYUERERkcyQJXKS7T/6KdO+H0/91w0+2SfKnIqIiIiIiIjPac6p+K29\nh8/4OoQcqUSh3AD88ucJH0eSM1UqnpfDJ+N9HUaOVShPIHlqdfF1GDnSyZ/fAaDZiOU+jiRnWti1\nAYdO6NjjK4XzBrJk2yFfh5EjNa5Y2NchZJjmnIqIiIiIiIhkAmVORURERERE/Jx+51REREREREQk\nEyhzKiIiIiIi4ueyf95UmVMRERERERHxA+qcioiIiIiIiM9pWK+IiIiIiIifM90QSUREREREROTK\nU+ZURERERETEzwVk/8SpMqciIiIiIiLie8qcioiIiIiI+DnNORURERERERHJBMqcioiIiIiI+Lkc\nkDhV5lRERERERER8T5lTERERERERP6c5pyIiIiIiIiKZQJlTERERERERP6ffORURERERERHJBMqc\nioiIiIiI+DnNORURERERERHJBMqcioiIiIiI+LnsnzdV5lRERERERET8gDqnIiIiIiIi4nMa1isi\nIiIiIuLnAnRDJBEREREREZErT5lTERERERERP5cDEqfKnIqIiIiIiIjvKXMqIiIiIiLi5ywHpE6V\nORURERERERGfU+ZURERERETEz+WAxKkypyIiIiIiIuJ7ypyKiIiIiIj4uZzwO6fqnF4BZrYQeN45\ntyaTXu91oBUwyzn3whWovw1Q2Tn32uWuO6twzvHOm6+xavkSgoOD6d77VSpWqpyq3LYtmxgyoBen\nT5+mboPGdOn2EmbGwnlz+HjM++z6YwfvffQp111fBYD9+/bS6YG2lLqmDACVq1bnuZf6ZGbT/N5P\nq5Yx5p3XSYhPoMWdd9P+oUeTrT975gzDB/dm+9Yt5C9YkBf6DCGi+NVE/rmPLv+8lxKlSgNQsXI1\nnvpvLwCWzJ/D5xP+R0JCPLXrNabTE10zvV1ZkXOON4cOYvnSxQQH56F3/0FUuj7152DL5k0M6PMy\np0+fokGjJnTr/jJmxrZftvDawH6cOX2awKAguvfoTZVq1X3Qkuxn1CsPcUeTqkQfjKX2fYN8HU62\n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\nUxEREREREZFMoMypiIiIiIiIn8sBU06VORURERERERHfU+ZURERERETEzwXkgNSpMqciIiIiIiLi\nc8qcioiIiIiI+DndrVdEREREREQkEyhzKiIiIiIi4udywJRTZU5FRERERETE95Q5FRERERER8XMB\nZP/UqTKnIiIiIiIi4nPqnIqIiIiIiIjPaViviIiIiIiIn9MNkUREREREREQygTKnIiIiIiIifi5A\nmVMRERERERGRK0+ZUxERERERET8XkAMmnSpzKiIiIiIiIj6nzKmIiIiIiIifywGJU2VORURERERE\nxPeUORUREREREfFzmnMqIiIiIiIikgmUORUREREREfFzOSBxqsypiIiIiIiI+J4ypyIiIiIiIn4u\nJ2QVc0IbRURERERExM8pcyoiIiIiIuLnLAdMOlXmVERERERERHxOnVMRERERERHxOXVO/wYzm2Vm\nhXwdh78xs0Jm9lSS583MbKYvY/q7nHO8/cZgHm7Xisceupdtv2xOs9y2LZv4d8d7eLhdK95+YzDO\nOQAWzpvDvx64m1vqVWfrlk2J5c+ePcuQ/r34d8d7eOyhdqz9cXWmtCerWrdmBc8/1p5uj97LjCkf\np1r/y4af6NnlHzxyZ31+WDIv1foTx4/x9MN38vF7r2dGuNmOc47XBr1K65YtaH/PXWzZvCnNcm+P\nHM5ttzSlXu1ayZZ/Mu4j7rmrFe3vuYv/e/Sf7Nu3NzPCzjbqlC7EJ4/UYmKnWnSsXSLV+paVw/iq\n8018+FANPnyoBndWCU9c17lRaT56uCYfPVyTmysWzcywc4RRrzzEznmDWfP5y74OJdtwzjHi9UF0\nuLsl/3zgHrZe4Lz7y5ZNPNLhbjrc3ZIRrw9KPO+eM2n8RzSqXYXDhw95nn8ylk4d76VTx3v5x/1t\naVKnGkePHL7i7cnKNvy4gh6P389L/9eebz7/JNX6rRt/pu+zj/BYm4asWTo/2boDUft5o/cz9Hyi\nAz2ffICYyH2ZFXa2ZJn4z1fUOfUyj0vaH865Vs45vz+imVlgJr9kIeCpi5bKQlYtX8Le3TsZP/Ub\nur30CiOGvppmueFDX6Vbj1cYP/Ub9u7eyQ8rlgJQtlwF+g0ZTvVaNyYr/81XUwH436RpvP72aN4f\n+ToJCQlXtjFZVEJ8PB+/O5TuA0Yy9IPJrFw4h707dyQrUzS8GI//tw8Nbr4tzTqmjv+AStVqpblO\n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\nDZFERERERERErjx1TkVERERERPycWeb9y1g81tLMtprZb2b2Uhrru5nZZjNbb2bzzKz0xepU51RE\nREREREQyzMwCgXeBO4DKwINmVjlFsZ+B2s656sBUYOjF6lXnVERERERExM/5Wea0DvCbc26Hc+4M\n8BnQNmkB59wC59wJ79OVQMmLVarOqYiIiIiIiFyKEsDuJM/3eJddyL+Bby9Wqe7WKyIiIiIi4ucs\nE+/Wa2adgc5JFo12zo1OFk5q7gJ1PQzUBppe9HWdS7MOEV/TG1NEREREMkOW+I2WuVtiMu37cYvr\nQ9PdJ2ZWH+jrnLvd+7wHgHNucIpytwJvA02dc1EXe11lTsVv/R5zytch5EhlQ4MBOHFW1wd8IW8u\nY83vR30dRo5Vu2wBDp2I93UYOVLhvIEARMfG+TiSnCksfxB5anXxdRg51smf32Hmxkhfh5Ejta4a\n4esQMizAv7rQq4EKZlYW2As8AHRMWsDMagEfAC0z0jEFzTkVERERERGRS+CciwO6AHOALcAU59wm\nM+tvZm28xV4HQoDPzWytmc24WL3KnIqIiIiIiPi5zJxzmhHOuVnArBTL+iR5fOul1qnMqYiIiIiI\niPicMqciIiIiIiJ+LoO/P5qlKXMqIiIiIiIiPqfOqYiIiIiIiPichvWKiIiIiIj4OX+7IdKVoMyp\niIiIiIiI+JwypyIiIiIiIn4uIPsnTpU5FREREREREd9T5lRERERERMTPac6piIiIiIiISCZQ5lRE\nRERERMTPWfZPnCpzKiIiIiIiIr6nzKmIiIiIiIifywGJU2VORURERERExPeUORUREREREfFzATlg\n0qkypyIiIiIiIuJzypyKiIiIiIj4ueyfN1XmVERERERERPyAMqciIiIiIiL+LgekTpU5FRERERER\nEZ9T51RERERERER8TsN6RURERERE/JzlgHG9ypyKiIiIiIiIzylzKiIiIiIi4ucs+ydOlTkVERER\nERER31PmVERERERExM/lgMSpMqciIiIiIiLie8qcioiIiIiI+LsckDpV5lRERERERER8TplTERER\nERERP5cTfudUnVORS7Rm5TLeHzGEhIQEWt51Dx3+8e9k68+cOcOwAT35desWChQsSI/+QylWvAQ/\n/bCCsaNGEnf2LEG5cvHYf56j5o11fdSKrMk5x9DBA1m2ZDHBwcH0GziY6ytXSVXunZHDmTljOkeP\n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\nMzMzM7PGrgClU1dOzczMzMzMLDlXTs3MzMzMzBo573NqZmZmZmZmVgbunJqZmZmZmVlyHtZrZmZm\nZmbWyKnpj+p15dTMzMzMzMzSc+XUzMzMzMyskStA4dSVUzMzMzMzM0vPlVMzMzMzM7PGrgClU1dO\nzczMzMzG2w3qAAAgAElEQVTMLDlXTs3MzMzMzBo5FaB06sqpmZmZmZmZJefKqZmZmZmZWSPnfU7N\nzMzMzMzMysCVUzMzMzMzs0auAIVTV07NzMzMzMwsPVdOzczMzMzMGrsClE5dOTUzMzMzM7PkXDk1\nMzMzMzNr5LzPqZmZmZmZmVkZKCJSZzCrjX8xzczMzKwcKqIk+dbHX5ft9XHvFVonaRMP6zUzMzMz\nM2vkVBFd6Lpx59QarUlTv0kdoZBW6bgMAOMnfZk4STH1XaUtz7wzLXWMwhrYqwOPvzk1dYxC2mKt\njgA88ZbbP4XNe3fk3vEfp45RWLv0XYHW/X6dOkYhfT32L6kjWAl3Ts3MzMzMzBq5AhROvSCSmZmZ\nmZmZpefKqZmZmZmZWWNXgNKpK6dmZmZmZmaWnCunZmZmZmZmjZwKUDp15dTMzMzMzMySc+XUzMzM\nzMyskSvCPqeunJqZmZmZmVlyrpyamZmZmZk1cgUonLpyamZmZmZmZum5cmpmZmZmZtbYFaB06sqp\nmZmZmZmZfSeSdpT0hqS3JZ1Yy/llJd2cn39GUo/FfU13Ts3MzMzMzBo5lfG/xWaRmgOXAN8H+gD7\nSuqzwGWHAlMjYk3gfODsxX1dd07NzMzMzMzsu9gUeDsiJkTEN8A/gN0XuGZ34Jr849uA7aRFb4jj\nzqmZmZmZmZl9FysDH5Q8npQfq/WaiJgDTAM6L+qLekEkMzMzMzOzRm7RNcf6/rd0GHBYyaERETGi\n9JJaPi0W/DJLcM183Dk1MzMzMzOzufKO6IhFXDIJWLXk8SrA/xZyzSRJLYAOwGeL+nc9rNfMzMzM\nzKyRUxnflsBzQG9JPSUtA/wIuHuBa+4GDsw//iHwn4hw5dTMzMzMzMzqR0TMkfRr4EGgOfD3iHhF\n0unA8xFxN/A34DpJb5NVTH+0uK/rzqmZmZmZmVkjV845p0siIu4H7l/g2G9LPp4J7P1dvqaH9ZqZ\nmZmZmVlyrpyamZmZmZk1eo2sdNoAXDk1MzMzMzOz5Fw5NTMzMzMza+Qa25zThuDKqZmZmZmZmSXn\nyqmZmZmZmVkjV4DCqSunZmZmZmZmlp4rp2ZmZmZmZo2c55yamZmZmZmZlYErp2ZmZmZmZo2cCjDr\n1JVTMzMzMzMzS86dUzMzMzMzM0vOw3obEUn3A/tFxOeSvoyItou4tgdwb0T0reXclcCfI+JVSe8C\n/SNiiqQnI2Jw/rmDI+LGpci4OzAcqAbmAEdFxOj83GrAlcCqQAA7RcS7kq4GtgKm5V/moIh48bv+\n2ylFBJf8+Syeeepxll22FcefegZrrdPnW9e9+fornDP8FGbNmsXAQVvwq2NORBKPjXyQa668lPff\nncAlf7+JtdddD4Bp0z7n9ycdwxuvjed7O+/OsGN/U+5vrdEb++yT/P2Sc6murmK7nfZgz30Pnu/8\n7G++4aKzf8uEN1+jXfsOHHPqWXTrvhJz5szm0nOHM+Ht16mqqmLr7Xdmz/0O4ZtvZnHqUT9j9uxv\nqKqqYtCW2/Gjg36R6LurLC8//xTXX34e1dXVbPW93dl1nwPnO//6uBe4YcT5fDDxbQ4/8Qw2HbLd\nfOe/nvElJ/58KJsM2poDDj+unNGbhPFjnuKmK86nurqaLbbfjZ32PmC+82+OH8s/rjifSe++w2HH\nD6f/5tsC8PrLY7j5ygvmXvfhpPf4+XHD6Tdoq7Lmr2TjxjzFjSPOJ6qr2WKH3dh5gbZ/Y/xYbrri\nfCZNfIdfHD+c/kO2nXvu008+4uqL/8Bnkz8GiaNP+zNdVlip3N9CRXt97DPc9feLqK6uZuB2O7Pd\nnj+Z7/xjd9/MMyPvpVmz5izXYXmGHn4inbp157NPPuKaP51CdXU1VXPmMGSnvRj8vd0TfRdN02W/\n+zHf37Ivkz+bTv+9/5A6TtPX9Ef1unPamETETvX0dX66kOOD8w97APsB37lzCowE7o6IkLQBcAuw\nTn7uWuDMiHhYUluyDmyN4yLitqX49xqFZ596nEkfvMe1t97Ha6+8zIXnnMElf/92811wzhkcfeLv\n6NN3Q046+pc8+9RoBg7egh5r9Ob3Z53P+WedPt/1yyyzDAcf9mvenfA2Eye8Va5vp2JUVVVxxUVn\n8dtz/krnritwwuH7M2DQVqzaY42514z81120bdueS677J6P/8yDXXXER/+/Us3jqsX8ze/Zszr/y\nFmbN/JojD9mbIdvuSNcVVuS08y6jdes2zJkzm1OOPJSNN92ctfqsn/A7bfyqq6q49q/ncPyZf6FT\n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\nr5b8nTVv3oKf/OJY/vzbrO2HbJ+1/Z152/fL2/4vZ2Zt/+Kzo7nrxis446830ax5c4YeegTn/ubX\nRECPNddmK29l8p00b96CPX96FCOGH0tUV7PptjvRfbWePHDT31hlzbXpO2AI9157KbNmfs215/0O\ngOW7dOPQk87i40nvcc/Vl2RjFCPYercfseLq/vtan67540FssUlvuizflrcfGM7wy+7nmrueSh3L\nKphqm69lxSNpJeBRYJ1oHMvZxaSp36TOUEirdMyGQ42f9OVirrSG0HeVtjzzzrTFX2gNYmCvDjz+\n5tTUMQppi7WyitcTb7n9U9i8d0fuHf/x4i+0BrFL3xVo3c8jSlL4euxfoELW7Z/85Zyyddy6tm2R\npE08rNeQdADwDPCbRtIxNTMzMzOzgvGwXiMirgWuLT0m6WDgyAUufSIiflW2YGZmZmZmBlRIebeO\n3Dm1WkXEVSx+/qmZmZmZmVm9cOfUzMzMzMyskUu5/2i5eM6pmZmZmZmZJefKqZmZmZmZWSOXcv/R\ncnHl1MzMzMzMzJJz59TMzMzMzMyS87BeMzMzMzOzRs4LIpmZmZmZmZmVgTunZmZmZmZmlpw7p2Zm\nZmZmZpac55yamZmZmZk1cp5zamZmZmZmZlYGrpyamZmZmZk1cqLpl05dOTUzMzMzM7PkXDk1MzMz\nMzNr5Dzn1MzMzMzMzKwMXDk1MzMzMzNr5ApQOHXl1MzMzMzMzNJz5dTMzMzMzKyxK0Dp1JVTMzMz\nMzMzS86VUzMzMzMzs0bO+5yamZmZmZmZlYE7p2ZmZmZmZpach/WamZmZmZk1cmr6o3pdOTUzMzMz\nM7P0XDk1MzMzMzNr5ApQOHXl1MzMzMzMzNJz5dTMzMzMzKyxK0Dp1JVTMzMzMzMzS86VUzMzMzMz\ns0ZOBSidunJqZmZmZmZmyblyamZmZmZm1sgVYZ9TRUTqDGa18S+mmZmZmZVDRXT7Zs4p3+vjVi3S\ntIk7p2YNQNJhETEidY6icvun47ZPy+2flts/Hbd9Wm5/qy+ec2rWMA5LHaDg3P7puO3Tcvun5fZP\nx22fltvf6oU7p2ZmZmZmZpacO6dmZmZmZmaWnDunZg3D8y7Scvun47ZPy+2flts/Hbd9Wm5/qxde\nEMnMzMzMzMySc+XUzMzMzMzMknPn1MzMzMzMzJJz59TMzMzMzMySc+fUrJ5IWkvSSEnj88cbSDol\n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\nAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(15,10)) \n", "sns.heatmap(data_numeric.corr(),annot=True,linewidths=.5, cmap=\"Blues\")\n", "plt.title('Heatmap showing correlations between numerical data')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "availability_365 availability_365 1.000000\n", "calculated_host_listings_count calculated_host_listings_count 1.000000\n", "longitude longitude 1.000000\n", "minimum_nights minimum_nights 1.000000\n", "reviews_per_month reviews_per_month 1.000000\n", "number_of_reviews number_of_reviews 1.000000\n", "latitude latitude 1.000000\n", "number_of_reviews reviews_per_month 0.589407\n", "reviews_per_month number_of_reviews 0.589407\n", "calculated_host_listings_count availability_365 0.225701\n", "availability_365 calculated_host_listings_count 0.225701\n", " number_of_reviews 0.172028\n", "number_of_reviews availability_365 0.172028\n", "reviews_per_month availability_365 0.163732\n", "availability_365 reviews_per_month 0.163732\n", "minimum_nights availability_365 0.144303\n", "availability_365 minimum_nights 0.144303\n", "longitude reviews_per_month 0.138516\n", "reviews_per_month longitude 0.138516\n", "calculated_host_listings_count minimum_nights 0.127960\n", "minimum_nights calculated_host_listings_count 0.127960\n", "longitude latitude 0.084788\n", "latitude longitude 0.084788\n", "availability_365 longitude 0.082731\n", "longitude availability_365 0.082731\n", " number_of_reviews 0.059094\n", "number_of_reviews longitude 0.059094\n", "latitude minimum_nights 0.024869\n", "minimum_nights latitude 0.024869\n", "calculated_host_listings_count latitude 0.019517\n", "latitude calculated_host_listings_count 0.019517\n", " availability_365 -0.010983\n", "availability_365 latitude -0.010983\n", "latitude number_of_reviews -0.015389\n", "number_of_reviews latitude -0.015389\n", "reviews_per_month latitude -0.018758\n", "latitude reviews_per_month -0.018758\n", "reviews_per_month calculated_host_listings_count -0.047312\n", "calculated_host_listings_count reviews_per_month -0.047312\n", "minimum_nights longitude -0.062747\n", "longitude minimum_nights -0.062747\n", "number_of_reviews calculated_host_listings_count -0.072376\n", "calculated_host_listings_count number_of_reviews -0.072376\n", "minimum_nights number_of_reviews -0.080116\n", "number_of_reviews minimum_nights -0.080116\n", "longitude calculated_host_listings_count -0.114713\n", "calculated_host_listings_count longitude -0.114713\n", "minimum_nights reviews_per_month -0.124905\n", "reviews_per_month minimum_nights -0.124905\n", "dtype: float64" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_numeric.corr().unstack().sort_values(ascending = False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №2: 'number_of_reviews' and 'reviews_per_month'" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "data_class = data.copy()\n", "mean = data_class['price'].mean()\n", "\n", "data_class['above_average'] = np.where(data_class['price']>=mean,1,0)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "data_class = data_class.drop('price', axis=1)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df_train_full, df_test = train_test_split(data_class, test_size=0.2, random_state=42)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df_train, df_val = train_test_split(df_train_full, test_size=0.25, random_state=42)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "y_train = df_train.above_average.values\n", "y_val = df_val.above_average.values\n", "y_test = df_test.above_average.values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Mutual information" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn.metrics import mutual_info_score" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "cat = ['neighbourhood_group', 'room_type']" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def calculate_mi(series):\n", " return mutual_info_score(series, df_train.above_average)\n", "\n", "df_mi = df_train[cat].apply(calculate_mi)\n", "df_mi = df_mi.sort_values(ascending=False).to_frame(name='MI')" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MI
room_type0.143035
neighbourhood_group0.046513
\n", "
" ], "text/plain": [ " MI\n", "room_type 0.143035\n", "neighbourhood_group 0.046513" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_mi" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №3: 'room_type'" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df_train = df_train.drop('above_average', axis=1)\n", "df_val = df_val.drop('above_average', axis=1)\n", "df_test = df_test.drop('above_average', axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Classification and accuracy of a model" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import accuracy_score" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": true }, "outputs": [], "source": [ "num = ['latitude','longitude','minimum_nights','number_of_reviews','reviews_per_month','calculated_host_listings_count','availability_365']" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": true }, "outputs": [], "source": [ "train_dict = df_train[cat + num].to_dict(orient='records')\n", "\n", "dv = DictVectorizer(sparse=False)\n", "dv.fit(train_dict)\n", "\n", "X_train = dv.transform(train_dict)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.79\n" ] } ], "source": [ "model = LogisticRegression(solver='lbfgs', C=1.0, random_state=42)\n", "model.fit(X_train, y_train)\n", "\n", "val_dict = df_val[cat + num].to_dict(orient='records')\n", "X_val = dv.transform(val_dict)\n", "\n", "y_pred = model.predict(X_val)\n", "\n", "accuracy = np.round(accuracy_score(y_val, y_pred),2)\n", "print(accuracy)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №4: 0.79" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['neighbourhood_group',\n", " 'room_type',\n", " 'latitude',\n", " 'longitude',\n", " 'minimum_nights',\n", " 'number_of_reviews',\n", " 'reviews_per_month',\n", " 'calculated_host_listings_count',\n", " 'availability_365']" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features = cat + num\n", "features" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Feature elimination " ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "neighbourhood_group 0.03992330504141528 0.7500766949585848\n", "room_type 0.07571428571428573 0.7142857142857143\n", "latitude 0.003927804478985664 0.7860721955210144\n", "longitude 0.0040300644237653005 0.7859699355762347\n", "minimum_nights 0.005257183761120832 0.7847428162388792\n", "number_of_reviews 0.0033142448103078426 0.7866857551896922\n", "reviews_per_month 0.006586563043256 0.783413436956744\n", "calculated_host_listings_count 0.0034165047550874794 0.7865834952449126\n", "availability_365 0.008734021883628262 0.7812659781163718\n" ] } ], "source": [ "orig_score = accuracy\n", "\n", "\n", "for c in features:\n", " subset = features.copy()\n", " subset.remove(c)\n", " \n", " train_dict = df_train[subset].to_dict(orient='records')\n", "\n", " dv = DictVectorizer(sparse=False)\n", " dv.fit(train_dict)\n", "\n", " X_train = dv.transform(train_dict)\n", "\n", " model = LogisticRegression(solver='lbfgs', C=1.0, random_state=42)\n", " model.fit(X_train, y_train)\n", "\n", " val_dict = df_val[subset].to_dict(orient='records')\n", " X_val = dv.transform(val_dict)\n", "\n", " y_pred = model.predict(X_val)\n", "\n", " score = accuracy_score(y_val, y_pred)\n", " print(c, orig_score - score, score)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №5: smallest difference - 'number_of_reviews'" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": true }, "outputs": [], "source": [ "data['price']=np.log1p(data['price'])" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df_train_full, df_test = train_test_split(data, test_size=0.2, random_state=42)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df_train, df_val = train_test_split(df_train_full, test_size=0.25, random_state=42)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": true }, "outputs": [], "source": [ "y_train = df_train.price.values\n", "y_val = df_val.price.values\n", "y_test = df_test.price.values" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": true }, "outputs": [], "source": [ "del df_train['price']\n", "del df_val['price']\n", "del df_test['price']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ridge Regression" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": true }, "outputs": [], "source": [ "train_dict = df_train[cat + num].to_dict(orient='records')" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": true }, "outputs": [], "source": [ "dv = DictVectorizer(sparse=False)\n", "dv.fit(train_dict)\n", "\n", "X_train = dv.transform(train_dict)\n", "\n", "val_dict = df_val[cat + num].to_dict(orient='records')\n", "X_val = dv.transform(val_dict)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn.linear_model import Ridge\n", "from sklearn.metrics import mean_squared_error" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 0.497\n", "0.01 0.497\n", "0.1 0.497\n", "1 0.497\n", "10 0.498\n" ] } ], "source": [ "for a in [0, 0.01, 0.1, 1, 10]:\n", " model = Ridge(alpha=a,random_state=42)\n", " model.fit(X_train, y_train)\n", " \n", " y_pred = model.predict(X_val)\n", " \n", " score = np.sqrt(mean_squared_error(y_val, y_pred))\n", " \n", " print(a, round(score, 3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №6: 0" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: cohorts/2021/03-classification/homework.md ================================================ ## 3.15 Homework ### Dataset In this homework, we will continue the New York City Airbnb Open Data. You can take it from [Kaggle](https://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data?select=AB_NYC_2019.csv) or download from [here](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/AB_NYC_2019.csv) if you don't want to sign up to Kaggle. We'll keep working with the `'price'` variable, and we'll transform it to a classification task. ### Features For the rest of the homework, you'll need to use the features from the previous homework with additional two `'neighbourhood_group'` and `'room_type'`. So the whole feature set will be set as follows: * `'neighbourhood_group'`, * `'room_type'`, * `'latitude'`, * `'longitude'`, * `'price'`, * `'minimum_nights'`, * `'number_of_reviews'`, * `'reviews_per_month'`, * `'calculated_host_listings_count'`, * `'availability_365'` Select only them and fill in the missing values with 0. ### Question 1 What is the most frequent observation (mode) for the column `'neighbourhood_group'`? ### Split the data * Split your data in train/val/test sets, with 60%/20%/20% distribution. * Use Scikit-Learn for that (the `train_test_split` function) and set the seed to 42. * Make sure that the target value ('price') is not in your dataframe. ### Question 2 * Create the [correlation matrix](https://www.google.com/search?q=correlation+matrix) for the numerical features of your train dataset. * In a correlation matrix, you compute the correlation coefficient between every pair of features in the dataset. * What are the two features that have the biggest correlation in this dataset? ### Make price binary * We need to turn the price variable from numeric into binary. * Let's create a variable `above_average` which is `1` if the price is above (or equal to) `152`. ### Question 3 * Calculate the mutual information score between `above_average` and the two other categorical variables in our dataset. Use the training set only. * Round the scores to 2 decimals using `round(score, 2)` * Which of these two variables has a bigger mutual information score? ### Question 4 * Now let's train a logistic regression * Remember that we have two categorical variables in the data. Include them using one-hot encoding. * Fit the model on the training dataset. * To make sure the results are reproducible across different versions of Scikit-Learn, fit the model with these parameters: * `model = LogisticRegression(solver='lbfgs', C=1.0, random_state=42)` * Calculate the accuracy on the validation dataset and round it to 2 decimal digits. ### Question 5 * We have 9 features: 7 numerical features and 2 categorical. * Let's find the least useful one using the *feature elimination* technique. * Train a model with all these features (using the same parameters as in Q4). * Now exclude each feature from this set and train a model without it. Record the accuracy for each model. * For each feature, calculate the difference between the original accuracy and the accuracy without the feature. * Which of following feature has the smallest difference? * `neighbourhood_group` * `room_type` * `number_of_reviews` * `reviews_per_month` > **note**: the difference doesn't have to be positive ### Question 6 * For this question, we'll see how to use a linear regression model from Scikit-Learn * We'll need to use the original column `'price'`. Apply the logarithmic transformation to this column. * Fit the Ridge regression model on the training data. * This model has a parameter `alpha`. Let's try the following values: `[0, 0.01, 0.1, 1, 10]` * Which of these alphas leads to the best RMSE on the validation set? Round your RMSE scores to 3 decimal digits. If there are multiple options, select the smallest `alpha`. ## Submit the results Submit your results here: https://forms.gle/xGpZhoq9Efm9E4RA9 It's possible that your answers won't match exactly. If it's the case, select the closest one. If it's exactly in between two options, select the higher value. ## Deadline The deadline for submitting is 27 September 2021, 17:00 CET. After that, the form will be closed. ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 3: Machine Learning for Classification](./) * Previous: [Explore more](14-explore-more.md) ================================================ FILE: cohorts/2021/04-evaluation/homework-4-solution.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Homework 4\n", "\n", "Use this notebook as a starter" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Data:\n", "\n", "- https://github.com/gastonstat/CreditScoring\n", "- Also available [here](https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-06-trees/CreditScoring.csv)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2021-10-05 21:39:13-- https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-06-trees/CreditScoring.csv\n", "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n", "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 182489 (178K) [text/plain]\n", "Saving to: ‘CreditScoring.csv’\n", "\n", "CreditScoring.csv 100%[===================>] 178.21K --.-KB/s in 0.06s \n", "\n", "2021-10-05 21:39:13 (2.89 MB/s) - ‘CreditScoring.csv’ saved [182489/182489]\n", "\n" ] } ], "source": [ "!wget https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-06-trees/CreditScoring.csv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preparation \n", "\n", "We'll talk about this dataset in more details in week 6. But for now, use the following code to get started" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('CreditScoring.csv')\n", "df.columns = df.columns.str.lower()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some of the features are encoded as numbers. Use the following code to de-code them:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "status_values = {\n", " 1: 'ok',\n", " 2: 'default',\n", " 0: 'unk'\n", "}\n", "\n", "df.status = df.status.map(status_values)\n", "\n", "\n", "home_values = {\n", " 1: 'rent',\n", " 2: 'owner',\n", " 3: 'private',\n", " 4: 'ignore',\n", " 5: 'parents',\n", " 6: 'other',\n", " 0: 'unk'\n", "}\n", "\n", "df.home = df.home.map(home_values)\n", "\n", "marital_values = {\n", " 1: 'single',\n", " 2: 'married',\n", " 3: 'widow',\n", " 4: 'separated',\n", " 5: 'divorced',\n", " 0: 'unk'\n", "}\n", "\n", "df.marital = df.marital.map(marital_values)\n", "\n", "records_values = {\n", " 1: 'no',\n", " 2: 'yes',\n", " 0: 'unk'\n", "}\n", "\n", "df.records = df.records.map(records_values)\n", "\n", "job_values = {\n", " 1: 'fixed',\n", " 2: 'partime',\n", " 3: 'freelance',\n", " 4: 'others',\n", " 0: 'unk'\n", "}\n", "\n", "df.job = df.job.map(job_values)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Prepare the numerical variables:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "for c in ['income', 'assets', 'debt']:\n", " df[c] = df[c].replace(to_replace=99999999, value=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remove clients with unknown default status" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "df = df[df.status != 'unk'].reset_index(drop=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create the target variable" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "df['default'] = (df.status == 'default').astype(int)\n", "del df['status']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Your code" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What are the categorical variables? What are the numerical?" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "numerical = ['seniority', 'time', 'age', 'expenses', 'income',\n", " 'assets', 'debt', 'price']\n", "categorical = ['home', 'marital', 'records', 'job']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Split the data into 3 parts: train/validation/test with 60%/20%/20% distribution. Use `train_test_split` funciton for that with `random_state=1`" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "df_full_train, df_test = train_test_split(df, test_size=0.2, random_state=1)\n", "df_train, df_val = \\\n", " train_test_split(df_full_train, test_size=0.25, random_state=1)\n", "\n", "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)\n", "\n", "y_train = df_train.default.values\n", "y_val = df_val.default.values\n", "y_test = df_test.default.values\n", "\n", "del df_train['default']\n", "del df_val['default']\n", "del df_test['default']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 1\n", "\n", "ROC AUC could also be used to evaluate feature importance of numerical variables. \n", "\n", "Let's do that\n", "\n", "* For each numerical variable, use it as score and compute AUC with the \"default\" variable\n", "* Use the training dataset for that\n", "\n", "\n", "If your AUC is < 0.5, invert this variable by putting \"-\" in front\n", "\n", "(e.g. `-df_train['expenses']`)\n", "\n", "AUC can go below 0.5 if the variable is negatively correlated with the target varialble. You can change the direction of the correlation by negating this variable - then negative correlation becomes positive." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import roc_auc_score\n", "from sklearn.metrics import roc_curve" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "seniority, 0.709\n", " time, 0.561\n", " age, 0.573\n", " expenses, 0.501\n", " income, 0.682\n", " assets, 0.649\n", " debt, 0.505\n", " price, 0.504\n" ] } ], "source": [ "for c in numerical:\n", " auc = roc_auc_score(y_train, df_train[c])\n", " if auc < 0.5:\n", " auc = roc_auc_score(y_train, -df_train[c])\n", " print('%9s, %.3f' % (c, auc))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which numerical variable (among the following 4) has the highest AUC?\n", "\n", "Answer: **seniority**\n", "\n", "We can also plot the ROC curve for seniority" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(5, 5))\n", "\n", "fpr, tpr, _ = roc_curve(y_train, df_train.seniority)\n", "plt.plot(fpr, tpr, label='+seniority')\n", "\n", "fpr, tpr, _ = roc_curve(y_train, -df_train.seniority)\n", "plt.plot(fpr, tpr, label='-seniority')\n", "\n", "plt.plot([0, 1], [0, 1], color='grey', linestyle='--')\n", "\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that there's separation in distribution of seniority\n", "between positive and negative classes (this is what AUC tells us about)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.histplot(df_train.seniority[y_train == 1],\n", " stat='density', bins=50,\n", " color='orange', alpha=0.5,\n", " label='positive')\n", "sns.histplot(df_train.seniority[y_train == 0],\n", " stat='density', bins=50,\n", " color='blue', alpha=0.5,\n", " label='negative')\n", "\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For negative examples (blue) the values of seniority tend to be higher. That's why AUC is below 0.5 - the correlation is negative. \n", "\n", "If we revese the order by negating the values seniority, the positive examples\n", "will tend to have higher values than negative.\n", "That's why AUC of \"-seniority\" is above 0.5" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.histplot(-df_train.seniority[y_train == 1],\n", " stat='density', bins=50,\n", " color='orange', alpha=0.5,\n", " label='positive')\n", "sns.histplot(-df_train.seniority[y_train == 0],\n", " stat='density', bins=50,\n", " color='blue', alpha=0.5,\n", " label='negative')\n", "\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Training the model\n", "\n", "From now on, use these columns only:\n", "\n", "```\n", "['seniority', 'income', 'assets', 'records', 'job', 'home']\n", "```\n", "\n", "Apply one-hot-encoding using `DictVectorizer` and train the logistic regression with these parameters:\n", "\n", "```\n", "LogisticRegression(solver='liblinear', C=1.0, max_iter=1000)\n", "```" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.linear_model import LogisticRegression" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "columns = ['seniority', 'income', 'assets', 'records', 'job', 'home']\n", "\n", "train_dicts = df_train[columns].to_dict(orient='records')\n", "dv = DictVectorizer(sparse=False)\n", "X_train = dv.fit_transform(train_dicts)\n", "\n", "model = LogisticRegression(solver='liblinear', C=1.0, max_iter=1000)\n", "model.fit(X_train, y_train)\n", "\n", "val_dicts = df_val[columns].to_dict(orient='records')\n", "X_val = dv.transform(val_dicts)\n", "\n", "y_pred = model.predict_proba(X_val)[:, 1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 2\n", "\n", "What's the AUC of this model on the validation dataset? (round to 3 digits)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8120879813449298" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "roc_auc_score(y_val, y_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Answer: **0.812**\n", "\n", "Let's compare it with the output of `predict`:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6820949139723955" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred_bin = model.predict(X_val)\n", "roc_auc_score(y_val, y_pred_bin)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is incorrect. Let's look at the ROC curves:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(5, 5))\n", "\n", "fpr, tpr, _ = roc_curve(y_val, y_pred)\n", "plt.plot(fpr, tpr, label='probability')\n", "\n", "fpr, tpr, _ = roc_curve(y_val, y_pred_bin)\n", "plt.plot(fpr, tpr, label='hard prediction')\n", "\n", "plt.plot([0, 1], [0, 1], color='grey', linestyle='--')\n", "\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 3\n", "\n", "Now let's compute precision and recall for our model.\n", "\n", "* Evaluate the model on all thresholds from 0.0 to 1.0 with step 0.01\n", "* For each threshold, compute precision and recall\n", "* Plot them" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "def confusion_matrix_dataframe(y_val, y_pred):\n", " scores = []\n", "\n", " thresholds = np.linspace(0, 1, 101)\n", "\n", " for t in thresholds:\n", " actual_positive = (y_val == 1)\n", " actual_negative = (y_val == 0)\n", "\n", " predict_positive = (y_pred >= t)\n", " predict_negative = (y_pred < t)\n", "\n", " tp = (predict_positive & actual_positive).sum()\n", " tn = (predict_negative & actual_negative).sum()\n", "\n", " fp = (predict_positive & actual_negative).sum()\n", " fn = (predict_negative & actual_positive).sum()\n", "\n", " scores.append((t, tp, fp, fn, tn))\n", "\n", " columns = ['threshold', 'tp', 'fp', 'fn', 'tn']\n", " df_scores = pd.DataFrame(scores, columns=columns)\n", " \n", " return df_scores" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "df_scores = confusion_matrix_dataframe(y_val, y_pred)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
thresholdtpfpfntn
00.024664500
100.123544511200
200.221526731378
300.318716259483
400.4140100106545
500.511464132581
600.67838168607
700.73716209629
800.8215225640
900.962240643
1001.000246645
\n", "
" ], "text/plain": [ " threshold tp fp fn tn\n", "0 0.0 246 645 0 0\n", "10 0.1 235 445 11 200\n", "20 0.2 215 267 31 378\n", "30 0.3 187 162 59 483\n", "40 0.4 140 100 106 545\n", "50 0.5 114 64 132 581\n", "60 0.6 78 38 168 607\n", "70 0.7 37 16 209 629\n", "80 0.8 21 5 225 640\n", "90 0.9 6 2 240 643\n", "100 1.0 0 0 246 645" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_scores[::10]" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "df_scores['p'] = df_scores.tp / (df_scores.tp + df_scores.fp)\n", "df_scores['r'] = df_scores.tp / (df_scores.tp + df_scores.fn)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(df_scores.threshold, df_scores.p, label='precision')\n", "plt.plot(df_scores.threshold, df_scores.r, label='recall')\n", "\n", "plt.vlines(0.4, 0, 1, color='grey', linestyle='--', alpha=0.5)\n", "\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At which threshold precision and recall curves intersect?\n", "\n", "Answer: **0.4**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 4\n", "\n", "Precision and recall are conflicting - when one grows, the other goes down. That's why they are often combined into the F1 score - a metrics that takes into account both\n", "\n", "This is the formula for computing F1:\n", "\n", "$$F_1 = 2 \\cdot \\cfrac{P \\cdot R}{P + R}$$\n", "\n", "Where $P$ is precision and $R$ is recall.\n", "\n", "Let's compute F1 for all thresholds from 0.0 to 1.0 with increment 0.01" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "df_scores['f1'] = 2 * df_scores.p * df_scores.r / (df_scores.p + df_scores.r)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10, 5))\n", "\n", "plt.plot(df_scores.threshold, df_scores.f1)\n", "plt.vlines(0.3, 0, 0.7, color='grey', linestyle='--', alpha=0.5)\n", "\n", "plt.xticks(np.linspace(0, 1, 11))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At which threshold F1 is maximal?\n", "\n", "Answer: **0.3**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 5\n", "\n", "\n", "Use the `KFold` class from Scikit-Learn to evaluate our model on 5 different folds:\n", "\n", "```\n", "KFold(n_splits=5, shuffle=True, random_state=1)\n", "```\n", "\n", "* Iterate over different folds of `df_full_train`\n", "* Split the data into train and validation\n", "* Train the model on train with these parameters: `LogisticRegression(solver='liblinear', C=1.0, max_iter=1000)`\n", "* Use AUC to evaluate the model on validation\n" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import KFold" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "def train(df_train, y_train, C=1.0):\n", " dicts = df_train[columns].to_dict(orient='records')\n", "\n", " dv = DictVectorizer(sparse=False)\n", " X_train = dv.fit_transform(dicts)\n", "\n", " model = LogisticRegression(solver='liblinear', C=C)\n", " model.fit(X_train, y_train)\n", "\n", " return dv, model\n", "\n", "def predict(df, dv, model):\n", " dicts = df[columns].to_dict(orient='records')\n", "\n", " X = dv.transform(dicts)\n", " y_pred = model.predict_proba(X)[:, 1]\n", "\n", " return y_pred" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.814 +- 0.015\n" ] } ], "source": [ "scores = []\n", "\n", "kfold = KFold(n_splits=5, shuffle=True, random_state=1)\n", "\n", "for train_idx, val_idx in kfold.split(df_full_train):\n", " df_train = df_full_train.iloc[train_idx]\n", " df_val = df_full_train.iloc[val_idx]\n", "\n", " y_train = df_train.default.values\n", " y_val = df_val.default.values\n", "\n", " dv, model = train(df_train, y_train, C=1.0)\n", " y_pred = predict(df_val, dv, model)\n", "\n", " auc = roc_auc_score(y_val, y_pred)\n", " scores.append(auc)\n", "\n", "print('%.3f +- %.3f' % (np.mean(scores), np.std(scores)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "How large is standard devidation of the scores across different folds?\n", "\n", "Answer: **0.014**\n", "\n", "(I'm getting 0.015 because of a newer version of Scikit-Learn. But it's the closest option to 0.014)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 6\n", "\n", "Now let's use 5-Fold cross-validation to find the best parameter C\n", "\n", "* Iterate over the following C values: `[0.01, 0.1, 1, 10]`\n", "* Initialize `KFold` with the same parameters as previously\n", "* Use these parametes for the model: `LogisticRegression(solver='liblinear', C=C, max_iter=1000)`\n", "* Compute the mean score as well as the std (round the mean and std to 3 decimal digits)" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C=0.01, 0.808 +- 0.012\n", "C= 0.1, 0.812 +- 0.014\n", "C= 1, 0.814 +- 0.015\n", "C= 10, 0.814 +- 0.014\n" ] } ], "source": [ "kfold = KFold(n_splits=5, shuffle=True, random_state=1)\n", "\n", "for C in [0.01, 0.1, 1, 10]:\n", " scores = []\n", "\n", " for train_idx, val_idx in kfold.split(df_full_train):\n", " df_train = df_full_train.iloc[train_idx]\n", " df_val = df_full_train.iloc[val_idx]\n", "\n", " y_train = df_train.default.values\n", " y_val = df_val.default.values\n", "\n", " dv, model = train(df_train, y_train, C=C)\n", " y_pred = predict(df_val, dv, model)\n", "\n", " auc = roc_auc_score(y_val, y_pred)\n", " scores.append(auc)\n", "\n", " print('C=%4s, %.3f +- %.3f' % (C, np.mean(scores), np.std(scores)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which C leads to the best mean score?\n", "\n", "Answer: **1**. Also, **10**, because on older versions of Scikit-Learn it gives a better result than C=1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bonus: Precision-Recall Curves\n", "\n", "Precision-recall curves show how precision depend on recall and vice-versa.\n", "For that, plot recall on the X axis and precision on the Y axis" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(df_scores.r, df_scores.p)\n", "\n", "plt.xlabel('Recall')\n", "plt.ylabel('Precision')\n", "\n", "plt.ylim(0, 1.05)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Area under the PR curve is also a useful metric:" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import auc" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5985464381525292" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_scores = df_scores.dropna()\n", "auc(df_scores.r, df_scores.p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The closer it is to 1 the better. The ideal spot on the PR curve is (1, 1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.11" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: cohorts/2021/04-evaluation/homework-4-starter.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Homework 4\n", "\n", "Use this notebook as a starter" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Data:\n", "\n", "- https://github.com/gastonstat/CreditScoring\n", "- Also available [here](https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-06-trees/CreditScoring.csv)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2021-09-27 12:30:24-- https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-06-trees/CreditScoring.csv\n", "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.111.133, 185.199.110.133, ...\n", "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 182489 (178K) [text/plain]\n", "Saving to: ‘CreditScoring.csv’\n", "\n", "CreditScoring.csv 100%[===================>] 178,21K --.-KB/s in 0,07s \n", "\n", "2021-09-27 12:30:25 (2,47 MB/s) - ‘CreditScoring.csv’ saved [182489/182489]\n", "\n" ] } ], "source": [ "!wget https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-06-trees/CreditScoring.csv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preparation \n", "\n", "We'll talk about this dataset in more details in week 6. But for now, use the following code to get started" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('CreditScoring.csv')\n", "df.columns = df.columns.str.lower()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some of the features are encoded as numbers. Use the following code to de-code them:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "status_values = {\n", " 1: 'ok',\n", " 2: 'default',\n", " 0: 'unk'\n", "}\n", "\n", "df.status = df.status.map(status_values)\n", "\n", "\n", "home_values = {\n", " 1: 'rent',\n", " 2: 'owner',\n", " 3: 'private',\n", " 4: 'ignore',\n", " 5: 'parents',\n", " 6: 'other',\n", " 0: 'unk'\n", "}\n", "\n", "df.home = df.home.map(home_values)\n", "\n", "marital_values = {\n", " 1: 'single',\n", " 2: 'married',\n", " 3: 'widow',\n", " 4: 'separated',\n", " 5: 'divorced',\n", " 0: 'unk'\n", "}\n", "\n", "df.marital = df.marital.map(marital_values)\n", "\n", "records_values = {\n", " 1: 'no',\n", " 2: 'yes',\n", " 0: 'unk'\n", "}\n", "\n", "df.records = df.records.map(records_values)\n", "\n", "job_values = {\n", " 1: 'fixed',\n", " 2: 'partime',\n", " 3: 'freelance',\n", " 4: 'others',\n", " 0: 'unk'\n", "}\n", "\n", "df.job = df.job.map(job_values)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Prepare the numerical variables:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "for c in ['income', 'assets', 'debt']:\n", " df[c] = df[c].replace(to_replace=99999999, value=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remove clients with unknown default status" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "df = df[df.status != 'unk'].reset_index(drop=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create the target variable" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "df['default'] = (df.status == 'default').astype(int)\n", "del df['status']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Your code" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What are the categorical variables? What are the numerical?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Split the data into 3 parts: train/validation/test with 60%/20%/20% distribution. Use `train_test_split` funciton for that with `random_state=1`" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 1\n", "\n", "ROC AUC could also be used to evaluate feature importance of numerical variables. \n", "\n", "Let's do that\n", "\n", "* For each numerical variable, use it as score and compute AUC with the \"default\" variable\n", "* Use the training dataset for that\n", "\n", "\n", "If your AUC is < 0.5, invert this variable by putting \"-\" in front\n", "\n", "(e.g. `-df_train['expenses']`)\n", "\n", "AUC can go below 0.5 if the variable is negatively correlated with the target varialble. You can change the direction of the correlation by negating this variable - then negative correlation becomes positive." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which numerical variable (among the following 4) has the highest AUC?\n", "\n", "- seniority\n", "- time\n", "- income\n", "- debt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Training the model\n", "\n", "From now on, use these columns only:\n", "\n", "```\n", "['seniority', 'income', 'assets', 'records', 'job', 'home']\n", "```\n", "\n", "Apply one-hot-encoding using `DictVectorizer` and train the logistic regression with these parameters:\n", "\n", "```\n", "LogisticRegression(solver='liblinear', C=1.0, max_iter=1000)\n", "```" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 2\n", "\n", "What's the AUC of this model on the validation dataset? (round to 3 digits)\n", "\n", "- 0.512\n", "- 0.612\n", "- 0.712\n", "- 0.812" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 3\n", "\n", "Now let's compute precision and recall for our model.\n", "\n", "* Evaluate the model on all thresholds from 0.0 to 1.0 with step 0.01\n", "* For each threshold, compute precision and recall\n", "* Plot them" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At which threshold precision and recall curves intersect?\n", "\n", "* 0.2\n", "* 0.4\n", "* 0.6\n", "* 0.8" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 4\n", "\n", "Precision and recall are conflicting - when one grows, the other goes down. That's why they are often combined into the F1 score - a metrics that takes into account both\n", "\n", "This is the formula for computing F1:\n", "\n", "$$F_1 = 2 \\cdot \\cfrac{P \\cdot R}{P + R}$$\n", "\n", "Where $P$ is precision and $R$ is recall.\n", "\n", "Let's compute F1 for all thresholds from 0.0 to 1.0 with increment 0.01" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At which threshold F1 is maximal?\n", "\n", "- 0.1\n", "- 0.3\n", "- 0.5\n", "- 0.7" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 5\n", "\n", "\n", "Use the `KFold` class from Scikit-Learn to evaluate our model on 5 different folds:\n", "\n", "```\n", "KFold(n_splits=5, shuffle=True, random_state=1)\n", "```\n", "\n", "* Iterate over different folds of `df_full_train`\n", "* Split the data into train and validation\n", "* Train the model on train with these parameters: `LogisticRegression(solver='liblinear', C=1.0, max_iter=1000)`\n", "* Use AUC to evaluate the model on validation\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "How large is standard devidation of the scores across different folds?\n", "\n", "- 0.001\n", "- 0.014\n", "- 0.09\n", "- 0.14" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 6\n", "\n", "Now let's use 5-Fold cross-validation to find the best parameter C\n", "\n", "* Iterate over the following C values: `[0.01, 0.1, 1, 10]`\n", "* Initialize `KFold` with the same parameters as previously\n", "* Use these parametes for the model: `LogisticRegression(solver='liblinear', C=C, max_iter=1000)`\n", "* Compute the mean score as well as the std (round the mean and std to 3 decimal digits)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which C leads to the best mean score?\n", "\n", "- 0.01\n", "- 0.1\n", "- 1\n", "- 10\n", "\n", "If you have ties, select the score with the lowest std. If you still have ties, select the smallest C" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Submit the results\n", "\n", "Submit your results here: https://forms.gle/e497sR5iB36mM9Cs5\n", "\n", "It's possible that your answers won't match exactly. If it's the case, select the closest one.\n", "\n", "## Deadline\n", "\n", "The deadline for submitting is 04 October 2021, 17:00 CET. After that, the form will be closed." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.9" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: cohorts/2021/04-evaluation/homework.md ================================================ ## 4.10 Homework Use [this notebook](homework-4-starter.ipynb) as a starter We'll use the credit scoring dataset: - https://github.com/gastonstat/CreditScoring - Also available [here](https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-06-trees/CreditScoring.csv) ## Preparation * Execute the preparation code from the starter notebook * Split the dataset into 3 parts: train/validation/test with 60%/20%/20% distribution. Use `train_test_split` funciton for that with `random_state=1` ## Question 1 ROC AUC could also be used to evaluate feature importance of numerical variables. Let's do that * For each numerical variable, use it as score and compute AUC with the "default" variable * Use the training dataset for that If your AUC is < 0.5, invert this variable by putting "-" in front (e.g. `-df_train['expenses']`) AUC can go below 0.5 if the variable is negatively correlated with the target varialble. You can change the direction of the correlation by negating this variable - then negative correlation becomes positive. Which numerical variable (among the following 4) has the highest AUC? - seniority - time - income - debt ## Training the model From now on, use these columns only: ``` ['seniority', 'income', 'assets', 'records', 'job', 'home'] ``` Apply one-hot-encoding using `DictVectorizer` and train the logistic regression with these parameters: ``` LogisticRegression(solver='liblinear', C=1.0, max_iter=1000) ``` ## Question 2 What's the AUC of this model on the validation dataset? (round to 3 digits) - 0.512 - 0.612 - 0.712 - 0.812 ## Question 3 Now let's compute precision and recall for our model. * Evaluate the model on all thresholds from 0.0 to 1.0 with step 0.01 * For each threshold, compute precision and recall * Plot them At which threshold precision and recall curves intersect? * 0.2 * 0.4 * 0.6 * 0.8 ## Question 4 Precision and recall are conflicting - when one grows, the other goes down. That's why they are often combined into the F1 score - a metrics that takes into account both This is the formula for computing F1: F1 = 2 * P * R / (P + R) Where P is precision and R is recall. Let's compute F1 for all thresholds from 0.0 to 1.0 with increment 0.01 At which threshold F1 is maximal? - 0.1 - 0.3 - 0.5 - 0.7 ## Question 5 Use the `KFold` class from Scikit-Learn to evaluate our model on 5 different folds: ``` KFold(n_splits=5, shuffle=True, random_state=1) ``` * Iterate over different folds of `df_full_train` * Split the data into train and validation * Train the model on train with these parameters: `LogisticRegression(solver='liblinear', C=1.0, max_iter=1000)` * Use AUC to evaluate the model on validation How large is standard devidation of the AUC scores across different folds? - 0.001 - 0.014 - 0.09 - 0.14 ## Question 6 Now let's use 5-Fold cross-validation to find the best parameter C * Iterate over the following C values: `[0.01, 0.1, 1, 10]` * Initialize `KFold` with the same parameters as previously * Use these parametes for the model: `LogisticRegression(solver='liblinear', C=C, max_iter=1000)` * Compute the mean score as well as the std (round the mean and std to 3 decimal digits) Which C leads to the best mean score? - 0.01 - 0.1 - 1 - 10 If you have ties, select the score with the lowest std. If you still have ties, select the smallest C ## Submit the results Submit your results here: https://forms.gle/e497sR5iB36mM9Cs5 It's possible that your answers won't match exactly. If it's the case, select the closest one. If it's exactly in between two options, select the higher value. ## Deadline The deadline for submitting is 04 October 2021, 17:00 CET. After that, the form will be closed. ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 4: Evaluation Metrics for Classification](./) * Previous: [Explore more](09-explore-more.md) ================================================ FILE: cohorts/2021/05-deployment/homework/Dockerfile ================================================ FROM agrigorev/zoomcamp-model:3.8.12-slim RUN pip install pipenv COPY ["Pipfile", "Pipfile.lock", "./"] RUN pipenv install --system --deploy COPY ["q6_predict.py", "./"] EXPOSE 9696 ENTRYPOINT ["gunicorn", "--bind=0.0.0.0:9696", "q6_predict:app"] ================================================ FILE: cohorts/2021/05-deployment/homework/Pipfile ================================================ [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] scikit-learn = "==1.0" flask = "*" gunicorn = "*" [dev-packages] [requires] python_version = "3.8" ================================================ FILE: cohorts/2021/05-deployment/homework/homework.md ================================================ ../homework.md ================================================ FILE: cohorts/2021/05-deployment/homework/q3_test.py ================================================ import pickle def load(filename): with open(filename, 'rb') as f_in: return pickle.load(f_in) dv = load('dv.bin') model = load('model1.bin') customer = {"contract": "two_year", "tenure": 12, "monthlycharges": 19.7} X = dv.transform([customer]) y_pred = model.predict_proba(X)[0, 1] print(y_pred) ================================================ FILE: cohorts/2021/05-deployment/homework/q4_predict.py ================================================ from flask import Flask from flask import request from flask import jsonify import pickle def load(filename): with open(filename, 'rb') as f_in: return pickle.load(f_in) dv = load('dv.bin') model = load('model1.bin') app = Flask('churn') @app.route('/predict', methods=['POST']) def predict(): customer = request.get_json() X = dv.transform([customer]) y_pred = model.predict_proba(X)[0, 1] churn = y_pred >= 0.5 result = { 'churn_probability': float(y_pred), 'churn': bool(churn) } return jsonify(result) if __name__ == "__main__": app.run(debug=True, host='0.0.0.0', port=9696) ================================================ FILE: cohorts/2021/05-deployment/homework/q4_test.py ================================================ import requests url = "http://localhost:9696/predict" customer = {"contract": "two_year", "tenure": 1, "monthlycharges": 10} respose = requests.post(url, json=customer).json() print(respose) ================================================ FILE: cohorts/2021/05-deployment/homework/q6_predict.py ================================================ from flask import Flask from flask import request from flask import jsonify import pickle def load(filename): with open(filename, 'rb') as f_in: return pickle.load(f_in) dv = load('dv.bin') model = load('model2.bin') app = Flask('churn') @app.route('/predict', methods=['POST']) def predict(): customer = request.get_json() X = dv.transform([customer]) y_pred = model.predict_proba(X)[0, 1] churn = y_pred >= 0.5 result = { 'churn_probability': float(y_pred), 'churn': bool(churn) } return jsonify(result) if __name__ == "__main__": app.run(debug=True, host='0.0.0.0', port=9696) ================================================ FILE: cohorts/2021/05-deployment/homework/q6_test.py ================================================ import requests url = "http://localhost:9696/predict" customer = {"contract": "two_year", "tenure": 12, "monthlycharges": 10} respose = requests.post(url, json=customer).json() print(respose) ================================================ FILE: cohorts/2021/05-deployment/homework.md ================================================ ## 5.10 Homework In this homework, we'll use the churn prediction model trained on a smaller set of features. Solution: [homework/](homework/) ## Question 1 * Install Pipenv * What's the version of pipenv you installed? * Use `--version` to find out ## Question 2 * Use Pipenv to install Scikit-Learn version 1.0 * What's the first hash for scikit-learn you get in Pipfile.lock? ## Models We've prepared a dictionary vectorizer and a model. They were trained (roughly) using this code: ``` features = ['tenure', 'monthlycharges', 'contract'] dicts = df[features].to_dict(orient='records') dv = DictVectorizer(sparse=False) X = dv.fit_transform(dicts) model = LogisticRegression().fit(X, y) ``` > **Note**: You don't need to train the model. This code is just for your reference. And then saved with Pickle. Download them: * [DictVectorizer](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/05-deployment/homework/dv.bin?raw=true) * [LogisticRegression](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/05-deployment/homework/model1.bin?raw=true) With wget: ```bash PREFIX=https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/course-zoomcamp/05-deployment/homework wget $PREFIX/model1.bin wget $PREFIX/dv.bin ``` ## Question 3 Let's use these models! * Write a script for loading these models with pickle * Score this customer: ```json {"contract": "two_year", "tenure": 12, "monthlycharges": 19.7} ``` What's the probability that this customer is churning? If you're getting errors when unpickling the files, check their checksum: ```bash $ md5sum model1.bin dv.bin 5868e129bfbb309ba60bf750263afab1 model1.bin c49b69f8a5a3c560882ff5daa3c0ff4d dv.bin ``` ## Question 4 Now let's serve this model as a web service * Install Flask and Gunicorn (or waitress, if you're on Windows) * Write Flask code for serving the model * Now score this customer using `requests`: ```python url = "YOUR_URL" customer = {"contract": "two_year", "tenure": 1, "monthlycharges": 10} requests.post(url, json=customer).json() ``` What's the probability that this customer is churning? ## Docker Install [Docker](06-docker.md). We will use it for the next two questions. For these questions, I prepared a base image: `agrigorev/zoomcamp-model:3.8.12-slim`. You'll need to use it (see Question 5 for an example). This image is based on `python:3.8.12-slim` and has a logistic regression model (a different one) as well a dictionary vectorizer inside. This is how the Dockerfile for this image looks like: ```docker FROM python:3.8.12-slim WORKDIR /app COPY ["model2.bin", "dv.bin", "./"] ``` I already built it and then pushed it to [`agrigorev/zoomcamp-model:3.8.12-slim`](https://hub.docker.com/r/agrigorev/zoomcamp-model). > **Note**: You don't need to build this docker image, it's just for your reference. ## Question 5 Now create your own Dockerfile based on the image I prepared. It should start like that: ```docker FROM agrigorev/zoomcamp-model:3.8.12-slim # add your stuff here ``` Now complete it: * Install all the dependencies form the Pipenv file * Copy your Flask script * Run it with gunicorn When you build your image, what's the image id for `agrigorev/zoomcamp-model:3.8.12-slim`? Look at the first step of your build log. It should look something like that: ``` $ docker some-command-for-building Sending build context to Docker daemon 2.048kB Step 1/N : FROM agrigorev/zoomcamp-model:3.8.12-slim ---> XXXXXXXXXXXX Step 2/N : .... ``` You need this `XXXXXXXXXXXX`. Alternatively, you can get this information when running `docker images` - it'll be in the "IMAGE ID" column. Submitting DIGEST (long string starting with "sha256") is also fine. ## Question 6 Let's run your docker container! After running it, score this customer: ```python url = "YOUR_URL" customer = {"contract": "two_year", "tenure": 12, "monthlycharges": 10} requests.post(url, json=customer).json() ``` What's the probability that this customer is churning? ## Submit the results Submit your results here: https://forms.gle/R5v85JBbQ4qgbisv7 It's possible that your answers won't match exactly. If it's the case, select the closest one. If it's exactly in between two options, select the higher value. ## Deadline The deadline for submitting is 11 October 2021, 17:00 CET. After that, the form will be closed. ## Publishing to Docker hub This is just for reference, this is how I published an image to Docker hub: ```bash docker build -t zoomcamp-test . docker tag zoomcamp-test:latest agrigorev/zoomcamp-model:3.8.12-slim docker push agrigorev/zoomcamp-model:3.8.12-slim ``` ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 5: Deploying Machine Learning Models](./) * Previous: [Explore more](09-explore-more.md) ================================================ FILE: cohorts/2021/06-trees/homework-6-solution.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 6.10 Homework\n", "\n", "The goal of this homework is to create a tree-based regression model for prediction apartment prices (column `'price'`).\n", "\n", "In this homework we'll again use the New York City Airbnb Open Data dataset - the same one we used in homework 2 and 3.\n", "\n", "You can take it from [Kaggle](https://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data?select=AB_NYC_2019.csv)\n", "or download from [here](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/AB_NYC_2019.csv)\n", "if you don't want to sign up to Kaggle.\n", "\n", "Let's load the data:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "columns = [\n", " 'neighbourhood_group', 'room_type', 'latitude', 'longitude',\n", " 'minimum_nights', 'number_of_reviews','reviews_per_month',\n", " 'calculated_host_listings_count', 'availability_365',\n", " 'price'\n", "]\n", "\n", "df = pd.read_csv('AB_NYC_2019.csv', usecols=columns)\n", "df.reviews_per_month = df.reviews_per_month.fillna(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Apply the log tranform to `price`\n", "* Do train/validation/test split with 60%/20%/20% distribution. \n", "* Use the `train_test_split` function and set the `random_state` parameter to 1" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "\n", "df_full_train, df_test = train_test_split(df, test_size=0.2, random_state=1)\n", "df_train, df_val = train_test_split(df_full_train, test_size=0.25, random_state=1)\n", "\n", "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)\n", "\n", "y_train = np.log1p(df_train.price.values)\n", "y_val = np.log1p(df_val.price.values)\n", "y_test = np.log1p(df_test.price.values)\n", "\n", "del df_train['price']\n", "del df_val['price']\n", "del df_test['price']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, use `DictVectorizer` to turn train and validation into matrices:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "features = [\n", " 'neighbourhood_group', 'room_type', 'latitude', 'longitude',\n", " 'minimum_nights', 'number_of_reviews','reviews_per_month',\n", " 'calculated_host_listings_count', 'availability_365',\n", "]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "train_dicts = df_train[features].to_dict(orient='records')\n", "val_dicts = df_val[features].to_dict(orient='records')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "from sklearn.feature_extraction import DictVectorizer" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "dv = DictVectorizer(sparse=False)\n", "\n", "X_train = dv.fit_transform(train_dicts)\n", "X_val = dv.transform(val_dicts)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 1\n", "\n", "Let's train a decision tree regressor to predict the price variable. \n", "\n", "* Train a model with `max_depth=1`" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "from sklearn.tree import DecisionTreeRegressor\n", "from sklearn.tree import export_text" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DecisionTreeRegressor(max_depth=1)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt = DecisionTreeRegressor(max_depth=1)\n", "dt.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "|--- room_type=Entire home/apt <= 0.50\n", "| |--- value: [4.29]\n", "|--- room_type=Entire home/apt > 0.50\n", "| |--- value: [5.15]\n", "\n" ] } ], "source": [ "print(export_text(dt, feature_names=dv.get_feature_names()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which feature is used for splitting the data?\n", "\n", "* Answer: `room_type`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 2\n", "\n", "Train a random forest model with these parameters:\n", "\n", "* `n_estimators=10`\n", "* `random_state=1`\n", "* `n_jobs=-1` (optional - to make training faster)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "from sklearn.ensemble import RandomForestRegressor" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RandomForestRegressor(n_estimators=10, n_jobs=-1, random_state=1)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rf = RandomForestRegressor(n_estimators=10, random_state=1, n_jobs=-1)\n", "rf.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import mean_squared_error" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.4616706763704416" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred = rf.predict(X_val)\n", "np.sqrt(mean_squared_error(y_val, y_pred))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What's the RMSE of this model on validation?\n", "\n", "* Answer: **0.459**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 3\n", "\n", "Now let's experiment with the `n_estimators` parameter\n", "\n", "* Try different values of this parameter from 10 to 200 with step 10\n", "* Set `random_state` to `1`\n", "* Evaluate the model on the validation dataset" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "from tqdm.auto import tqdm" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5ebff78744ee4201b3342951087908ab", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/20 [00:00]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(df_scores.n_estimators, df_scores.rmse.round(3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After which value of `n_estimators` does RMSE stop improving?\n", "\n", "- Answer: **120**" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "016ce2e39fda4cfba75a3cc6804eedc6", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/20 [00:00]" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(df_scores.n_estimators, df_scores.rmse.round(3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 4\n", "\n", "Let's select the best `max_depth`:\n", "\n", "* Try different values of `max_depth`: `[10, 15, 20, 25]`\n", "* For each of these values, try different values of `n_estimators` from 10 till 200 (with step 10)\n", "* Fix the random seed: `random_state=1`" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "121a67b2f35445af98a1a9671e353f25", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/4 [00:00" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for d in [10, 15, 20, 25]:\n", " df_subset = df_scores[df_scores.max_depth == d]\n", " plt.plot(df_subset.n_estimators, df_subset.rmse, label=d)\n", "\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What's the best `max_depth`:\n", "\n", "* Answer: **15**\n", "\n", "Bonus question (not graded):\n", "\n", "Will the answer be different if we change the seed for the model?\n", "\n", "Answer: **No**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 5\n", "\n", "We can extract feature importance information from tree-based models. \n", "\n", "At each step of the decision tree learning algorith, it finds the best split. \n", "When doint it, we can calculate \"gain\" - the reduction in impurity before and after the split. \n", "This gain is quite useful in understanding what are the imporatant features \n", "for tree-based models.\n", "\n", "In Scikit-Learn, tree-based models contain this information in the `feature_importances_` field. \n", "\n", "For this homework question, we'll find the most important feature:\n", "\n", "* Train the model with these parametes:\n", " * `n_estimators=10`,\n", " * `max_depth=20`,\n", " * `random_state=1`,\n", " * `n_jobs=-1` (optional)\n", "* Get the feature importance information from this model" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RandomForestRegressor(max_depth=20, n_estimators=10, n_jobs=-1, random_state=1)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rf = RandomForestRegressor(n_estimators=10, max_depth=20, \n", " random_state=1, n_jobs=-1)\n", "rf.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([7.65026938e-02, 3.06571913e-02, 1.52958657e-01, 1.52742709e-01,\n", " 5.34625345e-02, 3.61129502e-04, 1.28237894e-03, 3.40003228e-02,\n", " 9.73088196e-04, 6.72180238e-05, 4.38404814e-02, 5.22072801e-02,\n", " 3.91899220e-01, 4.24368405e-03, 4.80141184e-03])" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rf.feature_importances_" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
featureimportance
0availability_3650.076503
1calculated_host_listings_count0.030657
2latitude0.152959
3longitude0.152743
4minimum_nights0.053463
5neighbourhood_group=Bronx0.000361
6neighbourhood_group=Brooklyn0.001282
7neighbourhood_group=Manhattan0.034000
8neighbourhood_group=Queens0.000973
9neighbourhood_group=Staten Island0.000067
10number_of_reviews0.043840
11reviews_per_month0.052207
12room_type=Entire home/apt0.391899
13room_type=Private room0.004244
14room_type=Shared room0.004801
\n", "
" ], "text/plain": [ " feature importance\n", "0 availability_365 0.076503\n", "1 calculated_host_listings_count 0.030657\n", "2 latitude 0.152959\n", "3 longitude 0.152743\n", "4 minimum_nights 0.053463\n", "5 neighbourhood_group=Bronx 0.000361\n", "6 neighbourhood_group=Brooklyn 0.001282\n", "7 neighbourhood_group=Manhattan 0.034000\n", "8 neighbourhood_group=Queens 0.000973\n", "9 neighbourhood_group=Staten Island 0.000067\n", "10 number_of_reviews 0.043840\n", "11 reviews_per_month 0.052207\n", "12 room_type=Entire home/apt 0.391899\n", "13 room_type=Private room 0.004244\n", "14 room_type=Shared room 0.004801" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_importances = pd.DataFrame()\n", "df_importances['feature'] = dv.get_feature_names()\n", "df_importances['importance'] = rf.feature_importances_\n", "df_importances" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
featureimportance
12room_type=Entire home/apt0.391899
2latitude0.152959
3longitude0.152743
0availability_3650.076503
4minimum_nights0.053463
\n", "
" ], "text/plain": [ " feature importance\n", "12 room_type=Entire home/apt 0.391899\n", "2 latitude 0.152959\n", "3 longitude 0.152743\n", "0 availability_365 0.076503\n", "4 minimum_nights 0.053463" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_importances.sort_values(by='importance', ascending=False).head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What's the most important feature? \n", "\n", "* Answer: `room_type=Entire home/apt`\t" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's train an XGBoost model! For this question, we'll tune the `eta` parameter\n", "\n", "* Install XGBoost\n", "* Create DMatrix for train and validation\n", "* Create a watchlist\n", "* Train a model with these parameters for 100 rounds:\n", "\n", "```\n", "xgb_params = {\n", " 'eta': 0.3, \n", " 'max_depth': 6,\n", " 'min_child_weight': 1,\n", " \n", " 'objective': 'reg:squarederror',\n", " 'nthread': 8,\n", " \n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "```" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [], "source": [ "import xgboost as xgb" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "features = dv.get_feature_names()\n", "dtrain = xgb.DMatrix(X_train, label=y_train, feature_names=features)\n", "dval = xgb.DMatrix(X_val, label=y_val, feature_names=features)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "watchlist = [(dtrain, 'train'), (dval, 'val')]" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [], "source": [ "def parse_xgb_output(output):\n", " results = []\n", "\n", " for line in output.stdout.strip().split('\\n'):\n", " it_line, train_line, val_line = line.split('\\t')\n", "\n", " it = int(it_line.strip('[]'))\n", " train = float(train_line.split(':')[1])\n", " val = float(val_line.split(':')[1])\n", "\n", " results.append((it, train, val))\n", " \n", " columns = ['num_iter', 'train_auc', 'val_auc']\n", " df_results = pd.DataFrame(results, columns=columns)\n", " return df_results" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "scores = {}" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "%%capture output\n", "\n", "xgb_params = {\n", " 'eta': 0.3, \n", " 'max_depth': 6,\n", " 'min_child_weight': 1,\n", "\n", " 'objective': 'reg:squarederror',\n", " 'nthread': 8,\n", "\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "\n", "model = xgb.train(xgb_params, dtrain, num_boost_round=100,\n", " verbose_eval=5, evals=watchlist)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [], "source": [ "scores['eta=0.3'] = parse_xgb_output(output)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now change `eta` first to `0.1` and then to `0.01`" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [], "source": [ "%%capture output\n", "\n", "xgb_params = {\n", " 'eta': 0.1, \n", " 'max_depth': 6,\n", " 'min_child_weight': 1,\n", "\n", " 'objective': 'reg:squarederror',\n", " 'nthread': 8,\n", "\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "\n", "model = xgb.train(xgb_params, dtrain, num_boost_round=100,\n", " verbose_eval=5, evals=watchlist)" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "scores['eta=0.1'] = parse_xgb_output(output)" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(50.0, 100.0)" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(scores['eta=0.1'].num_iter, scores['eta=0.1'].val_auc,\n", " label='0.1')\n", "plt.plot(scores['eta=0.3'].num_iter, scores['eta=0.3'].val_auc,\n", " label='0.3')\n", "plt.legend()\n", "\n", "plt.ylim([0.43, 0.45])\n", "plt.xlim([50, 100])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which eta leads to the best RMSE score on the validation dataset?\n", "\n", "* Answer: **0.1**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Submit the results\n", "\n", "\n", "Submit your results here: https://forms.gle/wQgFkYE6CtdDed4w8\n", "\n", "It's possible that your answers won't match exactly. If it's the case, select the closest one.\n", "\n", "\n", "## Deadline\n", "\n", "\n", "The deadline for submitting is 20 October 2021, 17:00 CET (Wednesday). After that, the form will be closed.\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.11" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: cohorts/2021/06-trees/homework-6-starter.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "source": [ "## 6.10 Homework\n", "\n", "The goal of this homework is to create a tree-based regression model for prediction apartment prices (column `'price'`).\n", "\n", "In this homework we'll again use the New York City Airbnb Open Data dataset - the same one we used in homework 2 and 3.\n", "\n", "You can take it from [Kaggle](https://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data?select=AB_NYC_2019.csv)\n", "or download from [here](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/AB_NYC_2019.csv)\n", "if you don't want to sign up to Kaggle.\n", "\n", "Let's load the data:" ], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "%matplotlib inline" ], "outputs": [], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [ "columns = [\n", " 'neighbourhood_group', 'room_type', 'latitude', 'longitude',\n", " 'minimum_nights', 'number_of_reviews','reviews_per_month',\n", " 'calculated_host_listings_count', 'availability_365',\n", " 'price'\n", "]\n", "\n", "df = pd.read_csv('AB_NYC_2019.csv', usecols=columns)\n", "df.reviews_per_month = df.reviews_per_month.fillna(0)" ], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "* Apply the log tranform to `price`\n", "* Do train/validation/test split with 60%/20%/20% distribution. \n", "* Use the `train_test_split` function and set the `random_state` parameter to 1" ], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "Now, use `DictVectorizer` to turn train and validation into matrices:" ], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "## Question 1\n", "\n", "Let's train a decision tree regressor to predict the price variable. \n", "\n", "* Train a model with `max_depth=1`" ], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "Which feature is used for splitting the data?\n", "\n", "* `room_type`\n", "* `neighbourhood_group`\n", "* `number_of_reviews`\n", "* `reviews_per_month`" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "## Question 2\n", "\n", "Train a random forest model with these parameters:\n", "\n", "* `n_estimators=10`\n", "* `random_state=1`\n", "* `n_jobs=-1` (optional - to make training faster)" ], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "What's the RMSE of this model on validation?\n", "\n", "* 0.059\n", "* 0.259\n", "* 0.459\n", "* 0.659" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "## Question 3\n", "\n", "Now let's experiment with the `n_estimators` parameter\n", "\n", "* Try different values of this parameter from 10 to 200 with step 10\n", "* Set `random_state` to `1`\n", "* Evaluate the model on the validation dataset" ], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "After which value of `n_estimators` does RMSE stop improving?\n", "\n", "- 10\n", "- 50\n", "- 70\n", "- 120" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "## Question 4\n", "\n", "Let's select the best `max_depth`:\n", "\n", "* Try different values of `max_depth`: `[10, 15, 20, 25]`\n", "* For each of these values, try different values of `n_estimators` from 10 till 200 (with step 10)\n", "* Fix the random seed: `random_state=1`" ], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "What's the best `max_depth`:\n", "\n", "* 10\n", "* 15\n", "* 20\n", "* 25\n", "\n", "Bonus question (not graded):\n", "\n", "Will the answer be different if we change the seed for the model?" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "## Question 5\n", "\n", "We can extract feature importance information from tree-based models. \n", "\n", "At each step of the decision tree learning algorith, it finds the best split. \n", "When doint it, we can calculate \"gain\" - the reduction in impurity before and after the split. \n", "This gain is quite useful in understanding what are the imporatant features \n", "for tree-based models.\n", "\n", "In Scikit-Learn, tree-based models contain this information in the `feature_importances_` field. \n", "\n", "For this homework question, we'll find the most important feature:\n", "\n", "* Train the model with these parametes:\n", " * `n_estimators=10`,\n", " * `max_depth=20`,\n", " * `random_state=1`,\n", " * `n_jobs=-1` (optional)\n", "* Get the feature importance information from this model" ], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "What's the most important feature? \n", "\n", "* `neighbourhood_group=Manhattan`\n", "* `room_type=Entire home/apt`\t\n", "* `longitude`\n", "* `latitude`" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "## Question 6" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "Now let's train an XGBoost model! For this question, we'll tune the `eta` parameter\n", "\n", "* Install XGBoost\n", "* Create DMatrix for train and validation\n", "* Create a watchlist\n", "* Train a model with these parameters for 100 rounds:\n", "\n", "```\n", "xgb_params = {\n", " 'eta': 0.3, \n", " 'max_depth': 6,\n", " 'min_child_weight': 1,\n", " \n", " 'objective': 'reg:squarederror',\n", " 'nthread': 8,\n", " \n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "```" ], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "Now change `eta` first to `0.1` and then to `0.01`" ], "metadata": {} }, { "cell_type": "code", "execution_count": null, "source": [], "outputs": [], "metadata": {} }, { "cell_type": "markdown", "source": [ "Which eta leads to the best RMSE score on the validation dataset?\n", "\n", "* 0.3\n", "* 0.1\n", "* 0.01" ], "metadata": {} }, { "cell_type": "markdown", "source": [ "## Submit the results\n", "\n", "\n", "Submit your results here: https://forms.gle/wQgFkYE6CtdDed4w8\n", "\n", "It's possible that your answers won't match exactly. If it's the case, select the closest one.\n", "\n", "\n", "## Deadline\n", "\n", "\n", "The deadline for submitting is 20 October 2021, 17:00 CET (Wednesday). After that, the form will be closed.\n", "\n" ], "metadata": {} } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: cohorts/2021/06-trees/homework.md ================================================ ## 6.10 Homework The goal of this homework is to create a tree-based regression model for prediction apartment prices (column `'price'`). In this homework we'll again use the New York City Airbnb Open Data dataset - the same one we used in homework 2 and 3. You can take it from [Kaggle](https://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data?select=AB_NYC_2019.csv) or download from [here](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/AB_NYC_2019.csv) if you don't want to sign up to Kaggle. For this homework, we prepared a [starter notebook](homework-6-starter.ipynb). ## Solution [Notebook with solution](homework-6-solution.ipynb) ## Loading the data * Use only the following columns: * `'neighbourhood_group',` * `'room_type',` * `'latitude',` * `'longitude',` * `'minimum_nights',` * `'number_of_reviews','reviews_per_month',` * `'calculated_host_listings_count',` * `'availability_365',` * `'price'` * Fill NAs with 0 * Apply the log tranform to `price` * Do train/validation/test split with 60%/20%/20% distribution. * Use the `train_test_split` function and set the `random_state` parameter to 1 * Use `DictVectorizer` to turn the dataframe into matrices ## Question 1 Let's train a decision tree regressor to predict the price variable. * Train a model with `max_depth=1` Which feature is used for splitting the data? * `room_type` * `neighbourhood_group` * `number_of_reviews` * `reviews_per_month` ## Question 2 Train a random forest model with these parameters: * `n_estimators=10` * `random_state=1` * `n_jobs=-1` (optional - to make training faster) What's the RMSE of this model on validation? * 0.059 * 0.259 * 0.459 * 0.659 ## Question 3 Now let's experiment with the `n_estimators` parameter * Try different values of this parameter from 10 to 200 with step 10 * Set `random_state` to `1` * Evaluate the model on the validation dataset After which value of `n_estimators` does RMSE stop improving? - 10 - 50 - 70 - 120 ## Question 4 Let's select the best `max_depth`: * Try different values of `max_depth`: `[10, 15, 20, 25]` * For each of these values, try different values of `n_estimators` from 10 till 200 (with step 10) * Fix the random seed: `random_state=1` What's the best `max_depth`: * 10 * 15 * 20 * 25 **Bonus question (not graded):** Will the answer be different if we change the seed for the model? ## Question 5 We can extract feature importance information from tree-based models. At each step of the decision tree learning algorith, it finds the best split. When doint it, we can calculate "gain" - the reduction in impurity before and after the split. This gain is quite useful in understanding what are the imporatant features for tree-based models. In Scikit-Learn, tree-based models contain this information in the [`feature_importances_`](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html#sklearn.ensemble.RandomForestRegressor.feature_importances_) field. For this homework question, we'll find the most important feature: * Train the model with these parametes: * `n_estimators=10`, * `max_depth=20`, * `random_state=1`, * `n_jobs=-1` (optional) * Get the feature importance information from this model What's the most important feature? * `neighbourhood_group=Manhattan` * `room_type=Entire home/apt` * `longitude` * `latitude` ## Question 6 Now let's train an XGBoost model! For this question, we'll tune the `eta` parameter * Install XGBoost * Create DMatrix for train and validation * Create a watchlist * Train a model with these parameters for 100 rounds: ``` xgb_params = { 'eta': 0.3, 'max_depth': 6, 'min_child_weight': 1, 'objective': 'reg:squarederror', 'nthread': 8, 'seed': 1, 'verbosity': 1, } ``` Now change `eta` first to `0.1` and then to `0.01` Which eta leads to the best RMSE score on the validation dataset? * 0.3 * 0.1 * 0.01 ## Submit the results Submit your results here: https://forms.gle/wQgFkYE6CtdDed4w8 It's possible that your answers won't match exactly. If it's the case, select the closest one. If it's exactly in between two options, select the higher value. ## Deadline The deadline for submitting is 20 October 2021, 17:00 CET (Wednesday). After that, the form will be closed. ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 6: Decision Trees and Ensemble Learning](./) * Previous: [Explore more](11-explore-more.md) ================================================ FILE: cohorts/2021/07-midterm-project/README.md ================================================ ## 7. Midterm Project The idea is that you now apply everything we learned so far yourself. That will include: * Thinking of a problem that's interesting for you and finding a dataset for that * Describing this problem and explaining how a model could be used * Preparing the data and doing EDA, analyzing important features * Training multiple models, tuning their performance and selecting the best model * Exporting the notebook into a script * Putting your model into a web service and deploying it locally with docker * Bonus points for deploying the service to the cloud ### Datasets * https://www.kaggle.com/datasets and https://www.kaggle.com/competitions * https://archive.ics.uci.edu/ml/index.php * https://data.europa.eu/en * https://www.openml.org/search?type=data * Add more data here! ### Deliverables For this project, you repository/folder should contain the following: * `README.md` with * Description of the problem * Instructions on how to run the project * Notebook (suggested name - `notebook.ipynb`) with * Data preparation and data clearning * EDA, feature importance analysis * Model selection process and parameter tuning * Script `train.py` (suggested name) * Training the final model * Saving it to a file (e.g. pickle) * Script `predict.py` (suggested name) * Loading the model * Serving it via a web serice (e.g. with Flask) * `Pipenv` and `Pipenv.lock` * or equivalents: conda environment file, requirements.txt or pyproject.toml * `Dockerfile` for running the service ### Submit the results Submit your results here: https://forms.gle/5JLFUwwXaUDssVKt7 ### Deadline The deadline for submitting is 3 November 2021 (Wednesday), 12:00 (noon) CET. After that, the form will be closed. ### FAQ **Q**: Can I use poetry / virtual env for managing dependencies; catboost for boosting and FastAPI for creating a web service? > Yes, you can use any library you want. But please make sure to document everything and clearly explain what you use. > Think of your peers who will review it - they don't necessarily know what these libraries are. > Please give them enough context to understand your project. **Q**: Can multiple people use the same dataset? > Yes, there's no way to control it or enforce. So it's totally okay if you and somebody else use the same dataset. ## Peer reviewing To evaluate the projects, we'll use peer reviewing. This is a great opportunity for your to learn from each other. * To get points for your project, your need to evaluate 3 projects of your peers * You get 3 extra point for each evaluation To find the projects you need to review, use [this table](https://docs.google.com/spreadsheets/d/e/2PACX-1vRo05lqGFkl7Jtt4o9Dqqk8JEA-U956-sxJVT-klWrKp8nTvboOkyyYVH-Z4sccFdpvfZhd40eGhU2J/pubhtml) * Hash your email * Find your email in the `reviewer_hash` column * You'll have three other projects there - that's what you'll need to evaluate Function for computing the hash of your email: ```python from hashlib import sha1 def compute_hash(email): return sha1(email.lower().encode('utf-8')).hexdigest() ``` Tip: you can use https://nbviewer.org/ to render notebooks if GitHub doesn't work ### Evaluation Criteria The project will be evaluated using these criteria: * Problem description * EDA * Model training * Exporting notebook to script * Model deployment * Dependency and environment management * Containerization * Cloud deployment [Detailed criteria](https://docs.google.com/spreadsheets/d/e/2PACX-1vQo-cOOGMA-ddbp6FgxusNBjS_HOmWaOYtvO7z-wk_TcCnPOBAza9s8Uj_eqfKGadoU0741cCGd95qI/pubhtml) ### Submitting evaluations * To submit the evaluations, use this form: https://forms.gle/AMFvMNnfwEeTQxaj8 * You will need to submit this form three times - one for each evaluated project * Deadline: 10 November (Wednesday), 12:00 (noon) CET. After that, the form will be closed. ### FAQ **Q**: Do I have to run the code and make sure it works? > It's recommended that you do that, but you don't _have_ to do it. **Q**: What if I see an error? What if I run something and it doesn't work? > But if you spot an error somewhere and you see that the code clearly doesn't work, then you > give 0 points to the respective criterium. E.g. if you see an error in Dockerfile, > then you give 0 points to the "containerization" dimension. **Q**: Somebody submitted a project they did as a part of some other course. What to do? > That's not good, but we didn't explicitly say it's not allowed. We'll change that for the next project, > but for the midterm project, you can evaluate it as if it was specifically made for this course. **Q**: Somebody just copied a Kaggle Kernel (or some other publicly available project) and submitted this as their project. > That's definitely not good. For the next project, we'll have an explicit policy that forbids > doing it. For this project, you should evaluate the copied parts as 0. For example, > if the model trianing part was copied, but the deployment wasn't, the model training part gets 0 > points, but the model deployment part gets the points. ## Office Hours 2021 We discussed the project in detail in three office hours sessions ### Office Hours Week #7 * [Video](https://www.youtube.com/watch?v=wWBm6MHu5u8) ### Office Hours Week #8 * [Video](https://www.youtube.com/watch?v=3bo7I9LaN7o) * [Notebook](week8-office-hours.ipynb) ### Office Hours Week #9 * [Video](https://www.youtube.com/watch?v=yZ15WyKb5o4) * [Notebook](week9-office-hours.ipynb) ### Office Hours Week #10 * [Video](https://www.youtube.com/watch?v=jT0JTlPsAQ0) * [Notebook](week10-office-hours.ipynb) ## Community notes Did you take notes? You can share them here (or in each unit separately) * [Alvaro Navas' Notes](https://github.com/ziritrion/ml-zoomcamp/blob/main/notes/07_misc.md) * Add your notes here ================================================ FILE: cohorts/2021/07-midterm-project/week10-office-hours.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "d3fb0207", "metadata": {}, "source": [ "- KNN\n", "- Scikit-learn pipelines" ] }, { "cell_type": "code", "execution_count": 1, "id": "c540d91d", "metadata": {}, "outputs": [], "source": [ "import pandas as pd \n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 3, "id": "1a2b1b5a", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('AB_NYC_2019.csv', nrows=4000)" ] }, { "cell_type": "code", "execution_count": 4, "id": "7527ae35", "metadata": {}, "outputs": [], "source": [ "from sklearn.neighbors import KNeighborsRegressor" ] }, { "cell_type": "code", "execution_count": 5, "id": "afc0a7cd", "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": 6, "id": "ae4951cc", "metadata": {}, "outputs": [], "source": [ "df_train, df_val = train_test_split(df)" ] }, { "cell_type": "code", "execution_count": 7, "id": "bf750d64", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3000" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(df_train)" ] }, { "cell_type": "code", "execution_count": 10, "id": "b19e5449", "metadata": {}, "outputs": [], "source": [ "X_train = df_train[['latitude', 'longitude']].fillna(0).values\n", "y_train = df_train.price.values" ] }, { "cell_type": "code", "execution_count": 11, "id": "6f47164b", "metadata": {}, "outputs": [], "source": [ "X_val = df_val[['latitude', 'longitude']].fillna(0).values\n", "y_val = df_val.price.values" ] }, { "cell_type": "code", "execution_count": 12, "id": "66a898c3", "metadata": {}, "outputs": [], "source": [ "knn = KNeighborsRegressor(n_neighbors=5)" ] }, { "cell_type": "code", "execution_count": null, "id": "9efc2b5e", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 13, "id": "3660cd30", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "KNeighborsRegressor()" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "knn.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 15, "id": "48dcfd9c", "metadata": {}, "outputs": [], "source": [ "y_pred = knn.predict(X_val)" ] }, { "cell_type": "code", "execution_count": null, "id": "500ec7c5", "metadata": {}, "outputs": [], "source": [ "for i in range(1, 50):\n", " knn = KNeighborsRegressor(n_neighbors=i)\n", " knn.fit(X_train, y_train)\n", " \n", " y_pred = knn.predict(X_val)\n", " # rmse" ] }, { "cell_type": "markdown", "id": "33e96506", "metadata": {}, "source": [ "## Pipelines" ] }, { "cell_type": "code", "execution_count": 16, "id": "8ae907c3", "metadata": {}, "outputs": [], "source": [ "from sklearn.compose import ColumnTransformer\n", "from sklearn.feature_extraction.text import CountVectorizer\n", "from sklearn.preprocessing import OneHotEncoder" ] }, { "cell_type": "code", "execution_count": 61, "id": "e4a80087", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('AB_NYC_2019.csv', nrows=4000)" ] }, { "cell_type": "code", "execution_count": 62, "id": "802b904b", "metadata": {}, "outputs": [], "source": [ "df['number_of_reviews'] = df['number_of_reviews'].fillna(0)" ] }, { "cell_type": "code", "execution_count": 63, "id": "b43e2a7d", "metadata": {}, "outputs": [], "source": [ "df.name = df.name.fillna('')\n", "df.neighbourhood_group = df.neighbourhood_group.str.lower().str.replace(' ', '_').fillna('NA')\n", "df.neighbourhood = df.neighbourhood.str.lower().str.replace(' ', '_').fillna('NA')\n", "df.room_type = df.room_type.str.lower().str.replace(' ', '_').fillna('NA')" ] }, { "cell_type": "code", "execution_count": 64, "id": "a14c0a72", "metadata": {}, "outputs": [], "source": [ "numerical = ['latitude',\n", " 'longitude',\n", " 'minimum_nights',\n", " 'number_of_reviews',\n", " 'reviews_per_month',\n", " 'calculated_host_listings_count',\n", " 'availability_365']" ] }, { "cell_type": "code", "execution_count": 74, "id": "be5622da", "metadata": {}, "outputs": [], "source": [ "df[numerical] = df[numerical].fillna(0)" ] }, { "cell_type": "code", "execution_count": 75, "id": "cdc930ca", "metadata": {}, "outputs": [], "source": [ "transformations = [\n", " ('numerical', 'passthrough', numerical),\n", " ('categories', OneHotEncoder(dtype='int32'),\n", " ['neighbourhood_group', 'neighbourhood', 'room_type']),\n", " ('name', CountVectorizer(min_df=100, dtype='int32'), 'name')\n", "]\n", "\n", "tranformer = ColumnTransformer(transformations, remainder='drop')\n" ] }, { "cell_type": "code", "execution_count": 76, "id": "fad529b2", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 77, "id": "2d53e04d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ColumnTransformer(transformers=[('numerical', 'passthrough',\n", " ['latitude', 'longitude', 'minimum_nights',\n", " 'number_of_reviews', 'reviews_per_month',\n", " 'calculated_host_listings_count',\n", " 'availability_365']),\n", " ('categories', OneHotEncoder(dtype='int32'),\n", " ['neighbourhood_group', 'neighbourhood',\n", " 'room_type']),\n", " ('name',\n", " CountVectorizer(dtype='int32', min_df=100),\n", " 'name')])" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tranformer.fit(df)" ] }, { "cell_type": "code", "execution_count": 79, "id": "4d79b93b", "metadata": {}, "outputs": [], "source": [ "X = tranformer.transform(df)" ] }, { "cell_type": "code", "execution_count": 80, "id": "55e8021e", "metadata": {}, "outputs": [], "source": [ "y = df.price.values" ] }, { "cell_type": "code", "execution_count": 81, "id": "7b9666f2", "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import LinearRegression" ] }, { "cell_type": "code", "execution_count": 82, "id": "b4248462", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearRegression()" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lr = LinearRegression()\n", "lr.fit(X, y)" ] }, { "cell_type": "code", "execution_count": 83, "id": "36638860", "metadata": {}, "outputs": [], "source": [ "from sklearn.pipeline import Pipeline" ] }, { "cell_type": "code", "execution_count": 89, "id": "9c098d9e", "metadata": {}, "outputs": [], "source": [ "transformations = [\n", " ('numerical', 'passthrough', numerical),\n", " ('neighbourhood', CountVectorizer(token_pattern='.*', min_df=100, dtype='int32'), 'neighbourhood'),\n", " ('ng', CountVectorizer(token_pattern='.*', min_df=50, dtype='int32'), 'neighbourhood_group'),\n", " ('room_type', CountVectorizer(token_pattern='.*', min_df=100, dtype='int32'), 'room_type'),\n", " ('name', CountVectorizer(min_df=100, dtype='int32'), 'name')\n", "]\n", "\n", "tranformer = ColumnTransformer(transformations, remainder='drop')" ] }, { "cell_type": "code", "execution_count": 90, "id": "499242d8", "metadata": {}, "outputs": [], "source": [ "pipeline = Pipeline([\n", " ('transormer', tranformer),\n", " ('lr', LinearRegression())\n", "])" ] }, { "cell_type": "code", "execution_count": 106, "id": "d835d0a5", "metadata": {}, "outputs": [], "source": [ "pipeline.fit(df, df.price.values);" ] }, { "cell_type": "code", "execution_count": 92, "id": "a5906d9a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 80.28976523, 340.61684387, 45.10203035, ..., 162.8269308 ,\n", " 82.08441501, 111.36359434])" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipeline.predict(df)" ] }, { "cell_type": "code", "execution_count": 94, "id": "94c95b39", "metadata": {}, "outputs": [], "source": [ "from sklearn.base import TransformerMixin" ] }, { "cell_type": "code", "execution_count": 95, "id": "d23e15f3", "metadata": {}, "outputs": [], "source": [ "class ConcatenatingTranformer(TransformerMixin):\n", " \n", " def fit(self, X, y=None):\n", " return self\n", "\n", " def transform(self, X):\n", " columns = list(X.columns)\n", " \n", " res = ''\n", " \n", " for c in columns:\n", " res = res + ' ' + c + '=' + X[c]\n", "\n", " return res.str.strip()" ] }, { "cell_type": "code", "execution_count": 96, "id": "6dcde520", "metadata": {}, "outputs": [], "source": [ "ct = ConcatenatingTranformer()" ] }, { "cell_type": "code", "execution_count": 98, "id": "61ac82a9", "metadata": {}, "outputs": [], "source": [ "p2 = Pipeline([\n", " ('concatenate', ConcatenatingTranformer()),\n", " ('vectorize', CountVectorizer(token_pattern='\\S+', min_df=100))\n", "])" ] }, { "cell_type": "code", "execution_count": null, "id": "321d6b31", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 100, "id": "a543f214", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<4000x17 sparse matrix of type ''\n", "\twith 10165 stored elements in Compressed Sparse Row format>" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p2.fit_transform(df[['neighbourhood_group', 'neighbourhood', 'room_type']])" ] }, { "cell_type": "code", "execution_count": null, "id": "8805e7fd", "metadata": {}, "outputs": [], "source": [ "' neighbourhood_group=' + df.neighbourhood_group + ' ' + \\\n", " 'neighbourhood=' + df.neighbourhood+ ' ' + \\\n", " 'room_type=' + df.room_type" ] }, { "cell_type": "code", "execution_count": 102, "id": "02ad632c", "metadata": {}, "outputs": [], "source": [ "transformations = [\n", " ('numerical', 'passthrough', numerical),\n", " ('categories', Pipeline([\n", " ('concatenate', ConcatenatingTranformer()),\n", " ('vectorize', CountVectorizer(token_pattern='\\S+', min_df=100))\n", " ]), ['neighbourhood', 'neighbourhood_group', 'room_type']),\n", " ('name', CountVectorizer(min_df=100, dtype='int32'), 'name')\n", "]\n", "\n", "tranformer = ColumnTransformer(transformations, remainder='drop')\n", "\n", "pipeline = Pipeline([\n", " ('transormer', tranformer),\n", " ('lr', LinearRegression())\n", "])" ] }, { "cell_type": "code", "execution_count": 103, "id": "04b3aba4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 80.28977269, 340.61684897, 45.10203641, ..., 162.82693488,\n", " 82.08441669, 111.36359873])" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pipeline.fit(df, df.price.values)\n", "pipeline.predict(df)" ] }, { "cell_type": "code", "execution_count": 104, "id": "0299276d", "metadata": {}, "outputs": [], "source": [ "import pickle" ] }, { "cell_type": "code", "execution_count": 105, "id": "154f5b3c", "metadata": {}, "outputs": [], "source": [ "with open('pipeline.bin', 'wb') as f_out:\n", " pickle.dump(pipeline, f_out)" ] }, { "cell_type": "code", "execution_count": null, "id": "7c2c6636", "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.9.5" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: cohorts/2021/07-midterm-project/week8-office-hours.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "cc2b3825", "metadata": {}, "source": [ "# ML Zoomcamp Office Hours -- Week 8\n", "\n", "Plan: \n", "\n", "* Multiclass classification\n", "* Feature importance for continious target (regression)\n", "* Working with texts\n", "* Evaluating your model when there's time information" ] }, { "cell_type": "code", "execution_count": 4, "id": "6615e96f", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np" ] }, { "cell_type": "markdown", "id": "a10dbdfe", "metadata": {}, "source": [ "## Multiclass classification\n", "\n", "Let's use the NYC Airbnb dataset to predict the neighborhood from geo coordinates" ] }, { "cell_type": "code", "execution_count": 6, "id": "03b9fbbe", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('AB_NYC_2019.csv', nrows=3000)" ] }, { "cell_type": "code", "execution_count": 9, "id": "4ec608b8", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Manhattan 1373\n", "Brooklyn 1370\n", "Queens 199\n", "Bronx 33\n", "Staten Island 25\n", "Name: neighbourhood_group, dtype: int64" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.neighbourhood_group.value_counts()" ] }, { "cell_type": "code", "execution_count": 13, "id": "af389ce9", "metadata": {}, "outputs": [], "source": [ "groups = ['Manhattan', 'Brooklyn', 'Queens']\n", "df = df[df.neighbourhood_group.isin(groups)].reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 14, "id": "f8c0dcdd", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Manhattan 1373\n", "Brooklyn 1370\n", "Queens 199\n", "Name: neighbourhood_group, dtype: int64" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.neighbourhood_group.value_counts()" ] }, { "cell_type": "code", "execution_count": 15, "id": "b7bbf7a7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idnamehost_idhost_nameneighbourhood_groupneighbourhoodlatitudelongituderoom_typepriceminimum_nightsnumber_of_reviewslast_reviewreviews_per_monthcalculated_host_listings_countavailability_365
02539Clean & quiet apt home by the park2787JohnBrooklynKensington40.64749-73.97237Private room149192018-10-190.216365
12595Skylit Midtown Castle2845JenniferManhattanMidtown40.75362-73.98377Entire home/apt2251452019-05-210.382355
23647THE VILLAGE OF HARLEM....NEW YORK !4632ElisabethManhattanHarlem40.80902-73.94190Private room15030NaNNaN1365
33831Cozy Entire Floor of Brownstone4869LisaRoxanneBrooklynClinton Hill40.68514-73.95976Entire home/apt8912702019-07-054.641194
45022Entire Apt: Spacious Studio/Loft by central park7192LauraManhattanEast Harlem40.79851-73.94399Entire home/apt801092018-11-190.1010
\n", "
" ], "text/plain": [ " id name host_id \\\n", "0 2539 Clean & quiet apt home by the park 2787 \n", "1 2595 Skylit Midtown Castle 2845 \n", "2 3647 THE VILLAGE OF HARLEM....NEW YORK ! 4632 \n", "3 3831 Cozy Entire Floor of Brownstone 4869 \n", "4 5022 Entire Apt: Spacious Studio/Loft by central park 7192 \n", "\n", " host_name neighbourhood_group neighbourhood latitude longitude \\\n", "0 John Brooklyn Kensington 40.64749 -73.97237 \n", "1 Jennifer Manhattan Midtown 40.75362 -73.98377 \n", "2 Elisabeth Manhattan Harlem 40.80902 -73.94190 \n", "3 LisaRoxanne Brooklyn Clinton Hill 40.68514 -73.95976 \n", "4 Laura Manhattan East Harlem 40.79851 -73.94399 \n", "\n", " room_type price minimum_nights number_of_reviews last_review \\\n", "0 Private room 149 1 9 2018-10-19 \n", "1 Entire home/apt 225 1 45 2019-05-21 \n", "2 Private room 150 3 0 NaN \n", "3 Entire home/apt 89 1 270 2019-07-05 \n", "4 Entire home/apt 80 10 9 2018-11-19 \n", "\n", " reviews_per_month calculated_host_listings_count availability_365 \n", "0 0.21 6 365 \n", "1 0.38 2 355 \n", "2 NaN 1 365 \n", "3 4.64 1 194 \n", "4 0.10 1 0 " ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 17, "id": "f8fa812e", "metadata": {}, "outputs": [], "source": [ "X = df[['latitude', 'longitude']].values" ] }, { "cell_type": "code", "execution_count": 18, "id": "d11a5239", "metadata": {}, "outputs": [], "source": [ "y = df.neighbourhood_group.values" ] }, { "cell_type": "code", "execution_count": 24, "id": "017406db", "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import LogisticRegression" ] }, { "cell_type": "code", "execution_count": 25, "id": "975c4245", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LogisticRegression()" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lr = LogisticRegression()\n", "lr.fit(X, y)" ] }, { "cell_type": "code", "execution_count": 31, "id": "1e4536fe", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.28193733, -0.40945164, 0.12751432])" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lr.intercept_" ] }, { "cell_type": "code", "execution_count": 35, "id": "b457a981", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6801495581237254" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(lr.predict(X) == y).mean()" ] }, { "cell_type": "code", "execution_count": 44, "id": "bf60da24", "metadata": {}, "outputs": [], "source": [ "from sklearn.tree import DecisionTreeClassifier\n", "from sklearn.tree import export_text" ] }, { "cell_type": "code", "execution_count": 42, "id": "4e1315ea", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DecisionTreeClassifier(max_depth=4)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt = DecisionTreeClassifier(max_depth=4)\n", "dt.fit(X, y)" ] }, { "cell_type": "code", "execution_count": 43, "id": "d15a8678", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9826648538409245" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(dt.predict(X) == y).mean()" ] }, { "cell_type": "code", "execution_count": 47, "id": "556b7223", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "|--- lat <= 40.72\n", "| |--- long <= -73.86\n", "| | |--- long <= -73.99\n", "| | | |--- lat <= 40.70\n", "| | | | |--- class: Brooklyn\n", "| | | |--- lat > 40.70\n", "| | | | |--- class: Manhattan\n", "| | |--- long > -73.99\n", "| | | |--- long <= -73.92\n", "| | | | |--- class: Brooklyn\n", "| | | |--- long > -73.92\n", "| | | | |--- class: Brooklyn\n", "| |--- long > -73.86\n", "| | |--- class: Queens\n", "|--- lat > 40.72\n", "| |--- long <= -73.93\n", "| | |--- long <= -73.96\n", "| | | |--- lat <= 40.72\n", "| | | | |--- class: Manhattan\n", "| | | |--- lat > 40.72\n", "| | | | |--- class: Manhattan\n", "| | |--- long > -73.96\n", "| | | |--- lat <= 40.76\n", "| | | | |--- class: Brooklyn\n", "| | | |--- lat > 40.76\n", "| | | | |--- class: Manhattan\n", "| |--- long > -73.93\n", "| | |--- lat <= 40.82\n", "| | | |--- class: Queens\n", "| | |--- lat > 40.82\n", "| | | |--- class: Manhattan\n", "\n" ] } ], "source": [ "print(export_text(dt, feature_names=['lat', 'long']))" ] }, { "cell_type": "markdown", "id": "8caf2bc9", "metadata": {}, "source": [ "## Feature importance for continious target\n", "\n", "When feature is continious and target is continious, use correlation" ] }, { "cell_type": "code", "execution_count": 52, "id": "792e72c9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['id', 'host_id', 'latitude', 'longitude', 'price', 'minimum_nights',\n", " 'number_of_reviews', 'reviews_per_month',\n", " 'calculated_host_listings_count', 'availability_365'],\n", " dtype='object')" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.dtypes[df.dtypes != 'object'].index" ] }, { "cell_type": "code", "execution_count": 53, "id": "7dd9454f", "metadata": {}, "outputs": [], "source": [ "numeric = ['latitude', 'longitude', 'minimum_nights',\n", " 'number_of_reviews', 'reviews_per_month',\n", " 'calculated_host_listings_count', 'availability_365']" ] }, { "cell_type": "code", "execution_count": 57, "id": "c5a8b0c1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "latitude 0.018935\n", "longitude 0.364144\n", "minimum_nights 0.012581\n", "number_of_reviews 0.095637\n", "reviews_per_month 0.098535\n", "calculated_host_listings_count 0.000751\n", "availability_365 0.002821\n", "dtype: float64" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[numeric].corrwith(np.log1p(df.price)).abs()" ] }, { "cell_type": "markdown", "id": "a05e078e", "metadata": {}, "source": [ "When feature is categorical and target is numerical, turn target into categorical and use mutual information" ] }, { "cell_type": "code", "execution_count": 60, "id": "53208784", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(4.234, 4.846] 1124\n", "(4.846, 5.458] 991\n", "(3.622, 4.234] 374\n", "(5.458, 6.07] 339\n", "(6.07, 6.682] 62\n", "(3.01, 3.622] 24\n", "(6.682, 7.293] 19\n", "(7.293, 7.905] 5\n", "(7.905, 8.517] 3\n", "(2.392, 3.01] 1\n", "Name: price, dtype: int64" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.cut(np.log1p(df.price), bins=10).value_counts()" ] }, { "cell_type": "code", "execution_count": 64, "id": "c37d496b", "metadata": {}, "outputs": [], "source": [ "qprice = pd.qcut(df.price, q=10)" ] }, { "cell_type": "code", "execution_count": 66, "id": "b91a609d", "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import mutual_info_score" ] }, { "cell_type": "code", "execution_count": 68, "id": "7809c1e4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.037870631683242" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mutual_info_score(df.neighbourhood_group, qprice)" ] }, { "cell_type": "code", "execution_count": 69, "id": "0f90933c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.2796110818606619" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mutual_info_score(df.neighbourhood, qprice)" ] }, { "cell_type": "code", "execution_count": 70, "id": "6c3f06bd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.2464904922022662" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mutual_info_score(df.room_type, qprice)" ] }, { "cell_type": "code", "execution_count": 67, "id": "8172f652", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idnamehost_idhost_nameneighbourhood_groupneighbourhoodlatitudelongituderoom_typepriceminimum_nightsnumber_of_reviewslast_reviewreviews_per_monthcalculated_host_listings_countavailability_365
02539Clean & quiet apt home by the park2787JohnBrooklynKensington40.64749-73.97237Private room149192018-10-190.216365
12595Skylit Midtown Castle2845JenniferManhattanMidtown40.75362-73.98377Entire home/apt2251452019-05-210.382355
23647THE VILLAGE OF HARLEM....NEW YORK !4632ElisabethManhattanHarlem40.80902-73.94190Private room15030NaNNaN1365
33831Cozy Entire Floor of Brownstone4869LisaRoxanneBrooklynClinton Hill40.68514-73.95976Entire home/apt8912702019-07-054.641194
45022Entire Apt: Spacious Studio/Loft by central park7192LauraManhattanEast Harlem40.79851-73.94399Entire home/apt801092018-11-190.1010
\n", "
" ], "text/plain": [ " id name host_id \\\n", "0 2539 Clean & quiet apt home by the park 2787 \n", "1 2595 Skylit Midtown Castle 2845 \n", "2 3647 THE VILLAGE OF HARLEM....NEW YORK ! 4632 \n", "3 3831 Cozy Entire Floor of Brownstone 4869 \n", "4 5022 Entire Apt: Spacious Studio/Loft by central park 7192 \n", "\n", " host_name neighbourhood_group neighbourhood latitude longitude \\\n", "0 John Brooklyn Kensington 40.64749 -73.97237 \n", "1 Jennifer Manhattan Midtown 40.75362 -73.98377 \n", "2 Elisabeth Manhattan Harlem 40.80902 -73.94190 \n", "3 LisaRoxanne Brooklyn Clinton Hill 40.68514 -73.95976 \n", "4 Laura Manhattan East Harlem 40.79851 -73.94399 \n", "\n", " room_type price minimum_nights number_of_reviews last_review \\\n", "0 Private room 149 1 9 2018-10-19 \n", "1 Entire home/apt 225 1 45 2019-05-21 \n", "2 Private room 150 3 0 NaN \n", "3 Entire home/apt 89 1 270 2019-07-05 \n", "4 Entire home/apt 80 10 9 2018-11-19 \n", "\n", " reviews_per_month calculated_host_listings_count availability_365 \n", "0 0.21 6 365 \n", "1 0.38 2 355 \n", "2 NaN 1 365 \n", "3 4.64 1 194 \n", "4 0.10 1 0 " ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 65, "id": "0b509c51", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 (147.6, 175.0]\n", "1 (200.0, 269.0]\n", "2 (147.6, 175.0]\n", "3 (75.0, 90.0]\n", "4 (75.0, 90.0]\n", " ... \n", "2937 (104.0, 125.0]\n", "2938 (147.6, 175.0]\n", "2939 (200.0, 269.0]\n", "2940 (269.0, 5000.0]\n", "2941 (75.0, 90.0]\n", "Name: price, Length: 2942, dtype: category\n", "Categories (10, interval[float64, right]): [(9.999, 60.0] < (60.0, 75.0] < (75.0, 90.0] < (90.0, 104.0] ... (147.6, 175.0] < (175.0, 200.0] < (200.0, 269.0] < (269.0, 5000.0]]" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qprice" ] }, { "cell_type": "markdown", "id": "dad7fa9f", "metadata": {}, "source": [ "## Working with texts\n", "\n", "Encoding for text is very similar to one-hot encoding" ] }, { "cell_type": "code", "execution_count": 73, "id": "550d42cd", "metadata": {}, "outputs": [], "source": [ "names = df.name.iloc[:3]" ] }, { "cell_type": "code", "execution_count": 74, "id": "2ed8d306", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 Clean & quiet apt home by the park\n", "1 Skylit Midtown Castle\n", "2 THE VILLAGE OF HARLEM....NEW YORK !\n", "Name: name, dtype: object" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "names" ] }, { "cell_type": "code", "execution_count": 86, "id": "0198a5ab", "metadata": {}, "outputs": [], "source": [ "from sklearn.feature_extraction.text import CountVectorizer\n", "from sklearn.feature_extraction.text import TfidfVectorizer" ] }, { "cell_type": "code", "execution_count": 93, "id": "e60da82b", "metadata": {}, "outputs": [], "source": [ "cv = CountVectorizer()\n", "cv.fit(names)\n", "X = cv.transform(names)" ] }, { "cell_type": "code", "execution_count": 94, "id": "a1a18184", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['apt', 'by', 'castle', 'clean', 'harlem', 'home', 'midtown', 'new', 'of', 'park', 'quiet', 'skylit', 'the', 'village', 'york']\n" ] } ], "source": [ "print(cv.get_feature_names())" ] }, { "cell_type": "code", "execution_count": 95, "id": "1caccebe", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
aptbycastlecleanharlemhomemidtownnewofparkquietskylitthevillageyork
0110101000110100
1001000100001000
2000010011000111
\n", "
" ], "text/plain": [ " apt by castle clean harlem home midtown new of park quiet \\\n", "0 1 1 0 1 0 1 0 0 0 1 1 \n", "1 0 0 1 0 0 0 1 0 0 0 0 \n", "2 0 0 0 0 1 0 0 1 1 0 0 \n", "\n", " skylit the village york \n", "0 0 1 0 0 \n", "1 1 0 0 0 \n", "2 0 1 1 1 " ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame(X.toarray(), columns=cv.get_feature_names()).round(2)" ] }, { "cell_type": "code", "execution_count": 96, "id": "4f2191db", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 Clean & quiet apt home by the park\n", "1 Skylit Midtown Castle\n", "2 THE VILLAGE OF HARLEM....NEW YORK !\n", "Name: name, dtype: object" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "names" ] }, { "cell_type": "code", "execution_count": null, "id": "2bc7f01e", "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.9.5" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: cohorts/2021/07-midterm-project/week9-office-hours.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('AB_NYC_2019.csv', nrows=10000)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "h = df.neighbourhood.value_counts().values\n", "x = np.arange(len(h))" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "whitestone 1\n", "new_springville 1\n", "east_morrisania 1\n", "castleton_corners 1\n", "morris_park 1\n", "Name: neighbourhood, dtype: int64" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.neighbourhood.value_counts().tail()" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "171" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(h)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(12, 8))\n", "plt.bar(x, h)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "from sklearn.feature_extraction.text import CountVectorizer" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "df.neighbourhood_group = df.neighbourhood_group.str.lower().str.replace(' ', '_').fillna('NA')\n", "df.neighbourhood = df.neighbourhood.str.lower().str.replace(' ', '_').fillna('NA')\n", "df.room_type = df.room_type.str.lower().str.replace(' ', '_').fillna('NA')" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "cats = 'neighbourhood_group=' + df.neighbourhood_group + ' ' + \\\n", " 'neighbourhood=' + df.neighbourhood+ ' ' + \\\n", " 'room_type=' + df.room_type" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'neighbourhood_group=brooklyn neighbourhood=kensington room_type=private_room'" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cats.iloc[0]" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "CountVectorizer(min_df=100, token_pattern='\\\\S+')" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cv_categories = CountVectorizer(token_pattern='\\S+', min_df=100)\n", "cv_categories.fit(cats)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "34" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(cv_categories.get_feature_names_out())" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['neighbourhood=astoria', 'neighbourhood=bedford-stuyvesant',\n", " 'neighbourhood=bushwick', 'neighbourhood=chelsea',\n", " 'neighbourhood=clinton_hill', 'neighbourhood=crown_heights',\n", " 'neighbourhood=east_harlem', 'neighbourhood=east_village',\n", " 'neighbourhood=flatbush', 'neighbourhood=fort_greene',\n", " 'neighbourhood=greenpoint', 'neighbourhood=greenwich_village',\n", " 'neighbourhood=harlem', \"neighbourhood=hell's_kitchen\",\n", " 'neighbourhood=kips_bay', 'neighbourhood=long_island_city',\n", " 'neighbourhood=lower_east_side', 'neighbourhood=midtown',\n", " 'neighbourhood=park_slope',\n", " 'neighbourhood=prospect-lefferts_gardens',\n", " 'neighbourhood=prospect_heights', 'neighbourhood=south_slope',\n", " 'neighbourhood=upper_east_side', 'neighbourhood=upper_west_side',\n", " 'neighbourhood=washington_heights', 'neighbourhood=west_village',\n", " 'neighbourhood=williamsburg', 'neighbourhood_group=bronx',\n", " 'neighbourhood_group=brooklyn', 'neighbourhood_group=manhattan',\n", " 'neighbourhood_group=queens', 'room_type=entire_home/apt',\n", " 'room_type=private_room', 'room_type=shared_room'], dtype=object)" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cv_categories.get_feature_names_out()" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "text = 'neighbourhood_group=brooklyn neighbourhood=morris_park room_type=private_room'" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [], "source": [ "X = cv_categories.transform([text])" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'neighbourhood=astoria': 0,\n", " 'neighbourhood=bedford-stuyvesant': 0,\n", " 'neighbourhood=bushwick': 0,\n", " 'neighbourhood=chelsea': 0,\n", " 'neighbourhood=clinton_hill': 0,\n", " 'neighbourhood=crown_heights': 0,\n", " 'neighbourhood=east_harlem': 0,\n", " 'neighbourhood=east_village': 0,\n", " 'neighbourhood=flatbush': 0,\n", " 'neighbourhood=fort_greene': 0,\n", " 'neighbourhood=greenpoint': 0,\n", " 'neighbourhood=greenwich_village': 0,\n", " 'neighbourhood=harlem': 0,\n", " \"neighbourhood=hell's_kitchen\": 0,\n", " 'neighbourhood=kips_bay': 0,\n", " 'neighbourhood=long_island_city': 0,\n", " 'neighbourhood=lower_east_side': 0,\n", " 'neighbourhood=midtown': 0,\n", " 'neighbourhood=park_slope': 0,\n", " 'neighbourhood=prospect-lefferts_gardens': 0,\n", " 'neighbourhood=prospect_heights': 0,\n", " 'neighbourhood=south_slope': 0,\n", " 'neighbourhood=upper_east_side': 0,\n", " 'neighbourhood=upper_west_side': 0,\n", " 'neighbourhood=washington_heights': 0,\n", " 'neighbourhood=west_village': 0,\n", " 'neighbourhood=williamsburg': 0,\n", " 'neighbourhood_group=bronx': 0,\n", " 'neighbourhood_group=brooklyn': 1,\n", " 'neighbourhood_group=manhattan': 0,\n", " 'neighbourhood_group=queens': 0,\n", " 'room_type=entire_home/apt': 0,\n", " 'room_type=private_room': 1,\n", " 'room_type=shared_room': 0}" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dict(zip(cv_categories.get_feature_names_out(), X.toarray()[0]))" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "CountVectorizer(min_df=100)" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cv = CountVectorizer(min_df=100)\n", "cv.fit(df.name.fillna(''))" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [], "source": [ "X_cat = cv_categories.transform(cats)" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [], "source": [ "X_text = cv.transform(df.name.fillna(''))" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<10000x34 sparse matrix of type ''\n", "\twith 27848 stored elements in Compressed Sparse Row format>" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_cat" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<10000x98 sparse matrix of type ''\n", "\twith 36103 stored elements in Compressed Sparse Row format>" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_text" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [], "source": [ "import scipy " ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<10000x132 sparse matrix of type ''\n", "\twith 63951 stored elements in COOrdinate format>" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scipy.sparse.hstack([X_cat, X_text])" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [], "source": [ "df['is_expensive'] = (df.price >= 1000)" ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0081" ] }, "execution_count": 107, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.is_expensive.mean()" ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": 128, "metadata": {}, "outputs": [], "source": [ "df_train, df_test = train_test_split(df, random_state=1, stratify=df.is_expensive)" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.008133333333333333" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train.is_expensive.mean()" ] }, { "cell_type": "code", "execution_count": 130, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.008" ] }, "execution_count": 130, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_test.is_expensive.mean()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: cohorts/2021/08-deep-learning/CNN_solution.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "import shutil\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from tensorflow import keras\n", "\n", "from tensorflow.keras import layers\n", "from tensorflow.keras import models\n", "from tensorflow.keras import optimizers\n", "\n", "from tensorflow.keras.preprocessing.image import ImageDataGenerator" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'2.6.2'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import tensorflow\n", "tensorflow.__version__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Data Preparation" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "train_dir = '/Users/muzalevskiy/Downloads/train'\n", "valid_dir = '/Users/muzalevskiy/Downloads/val'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# fnames = ['cat.{}.jpg'.format(i) for i in range(10000)]\n", "# for fname in fnames:\n", "# src = os.path.join(dataset_dir, fname)\n", "# dst = os.path.join(train_dir_cat, fname)\n", "# shutil.copyfile(src, dst)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Model Creation" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "model = models.Sequential()\n", "\n", "model.add(layers.Conv2D(32, (3, 3), activation='relu',\n", " input_shape=(150, 150, 3)))\n", "model.add(layers.MaxPooling2D((2, 2)))\n", "model.add(layers.Flatten())\n", "model.add(layers.Dense(64, activation='relu'))\n", "model.add(layers.Dense(1, activation='sigmoid'))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "model.compile(loss='binary_crossentropy',\\\n", " optimizer=optimizers.SGD(learning_rate=0.002, momentum=0.8),\\\n", " metrics=['acc'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №1: binary crossentropy" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "conv2d (Conv2D) (None, 148, 148, 32) 896 \n", "_________________________________________________________________\n", "max_pooling2d (MaxPooling2D) (None, 74, 74, 32) 0 \n", "_________________________________________________________________\n", "flatten (Flatten) (None, 175232) 0 \n", "_________________________________________________________________\n", "dense (Dense) (None, 64) 11214912 \n", "_________________________________________________________________\n", "dense_1 (Dense) (None, 1) 65 \n", "=================================================================\n", "Total params: 11,215,873\n", "Trainable params: 11,215,873\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №2: 11 215 873" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Data Generators" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "train_datagen = ImageDataGenerator(rescale=1./255)\n", "val_datagen = ImageDataGenerator(rescale=1./255)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 20000 images belonging to 2 classes.\n" ] } ], "source": [ "train_generator = train_datagen.flow_from_directory(train_dir,\n", " target_size=(150, 150),\n", " batch_size=20,\n", " class_mode='binary')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 5000 images belonging to 2 classes.\n" ] } ], "source": [ "validation_generator = val_datagen.flow_from_directory(valid_dir,\n", " target_size=(150, 150),\n", " batch_size=20,\n", " class_mode='binary')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "data batch shape: (20, 150, 150, 3)\n", "labels batch shape: (20,)\n" ] } ], "source": [ "for data_batch, labels_batch in train_generator:\n", " print('data batch shape:', data_batch.shape)\n", " print('labels batch shape:', labels_batch.shape)\n", " break" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Model fitting and Accuracy/Loss Evaluation" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/10\n", "100/100 [==============================] - 27s 268ms/step - loss: 0.6947 - acc: 0.5145 - val_loss: 0.6916 - val_acc: 0.5460\n", "Epoch 2/10\n", "100/100 [==============================] - 25s 249ms/step - loss: 0.6910 - acc: 0.5195 - val_loss: 0.6825 - val_acc: 0.5660\n", "Epoch 3/10\n", "100/100 [==============================] - 25s 248ms/step - loss: 0.6854 - acc: 0.5565 - val_loss: 0.6804 - val_acc: 0.5650\n", "Epoch 4/10\n", "100/100 [==============================] - 24s 240ms/step - loss: 0.6848 - acc: 0.5550 - val_loss: 0.6766 - val_acc: 0.5810\n", "Epoch 5/10\n", "100/100 [==============================] - 24s 239ms/step - loss: 0.6770 - acc: 0.5760 - val_loss: 0.6777 - val_acc: 0.5620\n", "Epoch 6/10\n", "100/100 [==============================] - 24s 242ms/step - loss: 0.6753 - acc: 0.5755 - val_loss: 0.6691 - val_acc: 0.5940\n", "Epoch 7/10\n", "100/100 [==============================] - 24s 242ms/step - loss: 0.6697 - acc: 0.5795 - val_loss: 0.6612 - val_acc: 0.6380\n", "Epoch 8/10\n", "100/100 [==============================] - 25s 246ms/step - loss: 0.6595 - acc: 0.6065 - val_loss: 0.6551 - val_acc: 0.6230\n", "Epoch 9/10\n", "100/100 [==============================] - 25s 247ms/step - loss: 0.6573 - acc: 0.6090 - val_loss: 0.6604 - val_acc: 0.6160\n", "Epoch 10/10\n", "100/100 [==============================] - 25s 247ms/step - loss: 0.6504 - acc: 0.6180 - val_loss: 0.6690 - val_acc: 0.5740\n" ] } ], "source": [ "history = model.fit(\n", " train_generator,\n", " steps_per_epoch=100,\n", " epochs=10,\n", " validation_data=validation_generator,\n", " validation_steps=50)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nVV2wYIGqql566aX6yiuvHPSatmzZsj/W559/Xm+++WZVVb3tttt0cMCbsmXLFv3111+1efPmumrV\nqnyxFmQ9cv21ebNq7dqqvXv7G0dGhmqbNq4n8I03qnqdyE0FIsgeuVbSD1JgFU9g1Y6qMnz4cJKS\nkjj77LNZv379/hJzYT777DP+9a9/AZCUlERSUtL+bZMnTyYlJYX27duzZMmSQgdTC/TFF19w0UUX\nUbt2berUqUPPnj35/PPPAWjZsiXt2rUDih6+OTMzk3POOYe2bdvy4IMPsmTJEgBmzpyZbxavBg0a\n8M0333DaaafRsmVLwIZfDlePPw6//+6GT/ZTUhLMnQs33uhiOvFE+P57f2MyTsT1yPVqMCrdhRde\nyM0338z8+fPZtWsXKSkpgBvALCsri3nz5lG9enUSEhIKHU45UGHDGK9evZqHHnqIuXPn0qBBA/r0\n6VPicbSYu2V5wzKDG5q5sOqdG264gZtvvpkePXowZ84c7r333v3HLRhjYetMeNm+3SXYiy5y0yH6\nrVYteOwx6N7ddeY68UT4v/9zQzoUMauoqQT21gepTp06dO3alX79+uW7gbtt2zaaNGlC9erV+eST\nT1i7dm2xxznttNP2T36+ePFiFi1aBLhhmWvXrk29evXYtGkT06ZN2/+cQw89lB07dhR6rHfeeYec\nnBx+//13pkyZwqmnnhr0a9q2bRvNmjUDYOLEifvXd+vWjSeffHL/8m+//Ubnzp359NNPWb16NWDD\nL4ejZ56BrVvdRCjh5Nxz3U3ebt3gppvc8saNfkcVuyzpl0KvXr3IyMjYP3MVQO/evUlPTyc1NZW0\ntDROOOGEYo9x7bXXsnPnTpKSkhgzZgwdO3YE3CxY7du3p02bNvTr1y/fsMwDBw7k3HPP3X8jN09K\nSgp9+vShY8eOdOrUif79+9O+ffugX8+9997LpZdeyqmnnkqjRo32r7/zzjv57bffSExMJDk5mU8+\n+YTGjRszbtw4evbsSXJyMpdddlnQ5zEVb9cudwO3WzfXfj7cNGkC777rLkyff+5u8hbS5sFUAimu\nisAPqampWrDd+rJly2jVqpVPEZnSsL+VP554wtWff/opnHaa39EU74cf4J//hAUL4N//hsGDITHR\nBm8rLxGZp6olXvKtpG9MhNu92/WI7dIl/BM+wAknwDffwK23wosvupu+rVrBXXdBRoZ17KpolvSN\n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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "acc = history.history['acc']\n", "val_acc = history.history['val_acc']\n", "loss = history.history['loss']\n", "val_loss = history.history['val_loss']\n", "\n", "epochs = range(1, len(acc) + 1)\n", "\n", "plt.plot(epochs, acc, 'bo', label='Training acc')\n", "plt.plot(epochs, val_acc, 'b', label='Validation acc')\n", "plt.title('Training and Validation Accuracy')\n", "plt.legend()\n", "\n", "plt.figure()\n", "\n", "plt.plot(epochs, loss, 'bo', label='Training loss')\n", "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n", "plt.title('Training and Validation Loss')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5757499933242798" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "acc_median = np.median(acc)\n", "acc_median" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №3: 0.56" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.014268752242510813" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "loss_std = np.std(loss)\n", "loss_std" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №4: 0.01" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Data Augmentation" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "datagen = ImageDataGenerator(\n", " rotation_range=40,\n", " width_shift_range=0.2,\n", " height_shift_range=0.2,\n", " shear_range=0.2,\n", " zoom_range=0.2,\n", " horizontal_flip=True,\n", " fill_mode='nearest')" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from tensorflow.keras.preprocessing import image" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nYk4NLLOubaDZUElMYWlLdKcFanQEQmmtUJ0ZzHyOkbwitnM/xnguFgW0wwsc2RuF6wpqxkBnBOsv\nVGu8N1TStlknCcquItqt9ppEJsDaNb7t4LM+CrkobaKkt7WOREEqaLd+u7z4PZPSk1x77j1WbrBN\nU56JToFyDScaEAyEay8k5lWSk4xCHj++rcgHoS8+P3yMPTsgmYQWYdW0HbgOj2e0FV52W/VpK4Ef\np1mE0jZNy8NHj9kRtaeqqjgXBmZTlVEEdHd3D5PIbqyTaDO2Kh1pkSECUUwmj9naDC3JPDPs7YXj\nzxYLpiImMxhukmWDePyqtiQ6LLh5T5GkHQnIs5Y5W3tNJbms8i2pLBBpPvhIdGCMIZOajPcXylnW\nOqbTEIH1TUaaShu6LZktnpHKgrloDfO+3HOdRyeu1JuoZ1DblkaW9a1Bn0/tjEhlI7lfLjgWyLGu\nC7qdqLIGm0jUZA0rAjEOoGgd3YqvWkNfFpzdvkELivB4taQehMXKpUGjcS5R7DtNxQfH0mJv4amo\nYs2SjEoYUYlVEfVZGhgoFXU3muWCrHM3TxytLARpnmNlU1vg0OJR5dXHXxQuawqX43Jcjo+M5yJS\n0N5zR3K/zeGAp0IDPW8dK1kBW+WZyQ70zaVj1KkT6Ypl2UT5cOUbWmmv6bzASldBA4m0oKz1McTU\nJkV5h5KVflAkfPZqCP9Ppg0zIb34dclMzrfxYKV7YWuLaR2SXuK9iTtdX6cUW+KFM9zEbYSvF5vX\nODl8wvqxtPFOH1CKqlJqdJDaApLekKTbNZUm7TQFs5zFYsnBQeg+aEVsY+ZZxqfEeDZLDEo+yzmF\nkesfjXfo9wesRG269XBX3KeuXrlC0pNdM2mx0vGZLEqM7nYbQ9t4Uvm+pwecibKz1s2F9uN6HV2w\nrPPkEsH1ezlFr08qUWCSJJH4BMS/11rHqO04z5gciFnwekWymNKXdMzrKa0oL62THo3qNDASNrzU\nh9wKI7v0WbXEJBk3JOXZVEN+04e7O3Mlug5RS7JOKSWEW2lFoxWFpEaFdRjpmNTWsdkPUduLVzfp\niUzbcDrjiZj5VMkWGQot0drMO6aSjpXWspC5bOwKI+lvrjVOd/RsicKk3T1KCvqiKjW1JQtJOXyV\nYiVqq1IXjWESOsbaDx6f1GD2rwL/KaEs8AZBzfka8CvANvBt4D8WS7l/7dBK8XI/hFn7LuGGXOx3\n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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fnames = [os.path.join(train_dir+\"/cats\", fname) for\n", " fname in os.listdir(train_dir+\"/cats\")]\n", "\n", "img_path = fnames[0]\n", "\n", "img = image.load_img(img_path, target_size=(150, 150))\n", "\n", "x = image.img_to_array(img)\n", "\n", "x = x.reshape((1,) + x.shape)\n", "\n", "i=0\n", "for batch in datagen.flow(x, batch_size=1):\n", " plt.figure(i)\n", " imgplot = plt.imshow(image.array_to_img(batch[0]))\n", " i += 1\n", " if i % 4 == 0:\n", " break\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "train_datagen = ImageDataGenerator(\n", " rescale=1./255,\n", " rotation_range=40,\n", " width_shift_range=0.2,\n", " height_shift_range=0.2,\n", " shear_range=0.2,\n", " zoom_range=0.2,\n", " horizontal_flip=True,)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": true }, "outputs": [], "source": [ "test_datagen = ImageDataGenerator(rescale=1./255)\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 20000 images belonging to 2 classes.\n" ] } ], "source": [ "train_generator = train_datagen.flow_from_directory(train_dir,\n", " target_size=(150, 150), \n", " batch_size=32, \n", " class_mode='binary')" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 5000 images belonging to 2 classes.\n" ] } ], "source": [ "validation_generator = test_datagen.flow_from_directory(\n", " valid_dir,\n", " target_size=(150, 150),\n", " batch_size=32,\n", " class_mode='binary')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Model fitting (augmented) and Accuracy/Loss Evaluation" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/10\n", "100/100 [==============================] - 57s 574ms/step - loss: 0.6704 - acc: 0.5834 - val_loss: 0.6430 - val_acc: 0.6306\n", "Epoch 2/10\n", "100/100 [==============================] - 56s 562ms/step - loss: 0.6659 - acc: 0.5872 - val_loss: 0.6434 - val_acc: 0.6194\n", "Epoch 3/10\n", "100/100 [==============================] - 58s 580ms/step - loss: 0.6631 - acc: 0.5994 - val_loss: 0.6432 - val_acc: 0.6125\n", "Epoch 4/10\n", "100/100 [==============================] - 61s 609ms/step - loss: 0.6638 - acc: 0.5878 - val_loss: 0.6418 - val_acc: 0.6212\n", "Epoch 5/10\n", "100/100 [==============================] - 64s 638ms/step - loss: 0.6592 - acc: 0.6006 - val_loss: 0.6370 - val_acc: 0.6219\n", "Epoch 6/10\n", "100/100 [==============================] - 66s 660ms/step - loss: 0.6559 - acc: 0.6069 - val_loss: 0.6332 - val_acc: 0.6344\n", "Epoch 7/10\n", "100/100 [==============================] - 64s 636ms/step - loss: 0.6531 - acc: 0.6094 - val_loss: 0.6378 - val_acc: 0.6187\n", "Epoch 8/10\n", "100/100 [==============================] - 64s 645ms/step - loss: 0.6584 - acc: 0.6103 - val_loss: 0.6283 - val_acc: 0.6525\n", "Epoch 9/10\n", "100/100 [==============================] - 63s 633ms/step - loss: 0.6553 - acc: 0.6097 - val_loss: 0.6476 - val_acc: 0.6031\n", "Epoch 10/10\n", "100/100 [==============================] - 65s 646ms/step - loss: 0.6527 - acc: 0.5978 - val_loss: 0.6379 - val_acc: 0.6156\n" ] } ], "source": [ "history = model.fit(\n", " train_generator,\n", " steps_per_epoch=100,\n", " epochs=10,\n", " validation_data=validation_generator,\n", " validation_steps=50)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nU3R//Vg99hiMHg1DhsAjj9gnhnSUpmE7l15Soauk26lHD2jSJPYSzzPPWO+co46CiRPDm/UqETzp\nO1cDUqWrpDP169tsWrG09KdOheHD4dBDbcrDhg2TH18yedJ3rgZ4V8nUk5dnM8x9+23527z9tt1t\n27kzvPiifTpId570nasBYd6F6sqWn28X1d99t+z1RUU269W++9odt81jHlgmtXnSd66GZHpXyVTT\nu7eVecqq68+fbyNmtmxpY+LXpiHBPOk75zJSo0aQm7trXf/TT21M/AYNbNardu3CiS9ZPOk75zJW\nXp6VcTZvtufFxdZDZ8sWa+Hvv3+48SWDJ33nXMbKz4etW+GDD2y2q6OPhnXrrMdO585hR5ccnvSd\ncxmrb1+7sD55MhxzjN0p/eKL0LNn2JElT72wA3DOubA0b27z2P7jH3ZRd8qUnXfr1lbe0nfOZbSj\njrIhFSZOtNZ+bedJ3zmX0W66CRYuhJNPDjuSmuFJ3zmX0Ro3hk6dwo6i5njSd865DOJJ3znnMogn\nfVfrpcqMVc6lgpiSvogMEpFFIrJURMaUs83pIrJAROaLSGHU8rNFZEnwdXaiAncuFj5jlXMlVTox\nuojUBRYDRwPFwExguKouiNqmIzAJOFJV14tIG1VdIyJ7AkVALqDALKCnqq4v73w+MbpLpKwsS/Sl\n7buvDXrmXG2RyInRewFLVfUzVd0CTASGlNpmJDAuksxVdU2w/BjgNVX9Jlj3GjAo1h/CVY2XM3by\nGaucKymWpN8W+DzqeXGwLFonoJOIvCsiM0RkUBz7ugTyckZJPmOVcyXFkvTLmu+9dE2oHtAR6A8M\nBx4SkeYx7ouIjBKRIhEpWrt2bQwhufL4BNwl+YxVzpUUS9IvBvaJet4OWFXGNs+r6lZVXQYswt4E\nYtkXVR2vqrmqmtu6Ns1WEAIvZ5TkM1Y5V1IsSX8m0FFEOohIA2AYMLnUNs8BRwCISCus3PMZMBUY\nKCItRKQFMDBY5pLEyxm78hmrnNup0qSvqtuA0ViyXghMUtX5InKjiAwONpsKrBORBcA04GpVXaeq\n3wA3YW8cM4Ebg2UuSbyc4Vz6qcnOF5V22axp3mWz+goKrIa/cqW18MeO9datc6kq0vki+lpc48bx\nlyFj7bLpSd8550KUqHtJEtlP3znnXJLUdOcLT/rOOReimu584UnfOedCVNOdLzzpO+dciGr6XhKf\n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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "acc_aug = history.history['acc']\n", "val_acc_aug = history.history['val_acc']\n", "loss_aug = history.history['loss']\n", "val_loss_aug = history.history['val_loss']\n", "\n", "epochs_aug = range(1, len(acc) + 1)\n", "\n", "plt.plot(epochs_aug, acc_aug, 'bo', label='Training acc')\n", "plt.plot(epochs_aug, val_acc_aug, 'b', label='Validation acc')\n", "plt.title('Training and Validation Accuracy')\n", "plt.legend()\n", "\n", "plt.figure()\n", "\n", "plt.plot(epochs_aug, loss_aug, 'bo', label='Training loss')\n", "plt.plot(epochs_aug, val_loss_aug, 'b', label='Validation loss')\n", "plt.title('Training and Validation Loss')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6393137753009797" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "loss_mean_aug = np.mean(val_loss_aug)\n", "loss_mean_aug" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №5: 0.67" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0.6343749761581421,\n", " 0.6187499761581421,\n", " 0.6524999737739563,\n", " 0.6031249761581421,\n", " 0.6156250238418579]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val_acc_aug[5:10]" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6248749852180481" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "acc_mean_aug = np.mean(val_acc_aug[5:10])\n", "acc_mean_aug" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Answer for Question №6: 0.65" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.3" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: cohorts/2021/08-deep-learning/homework.md ================================================ ## Homework ### Dataset In this homework, we'll build a model for predicting if we have an image of a dog or a cat. For this, we will use the "Dogs & Cats" dataset that can be downloaded from [Kaggle](https://www.kaggle.com/c/dogs-vs-cats/data). You need to download the `train.zip` file. If you have troubles downloading from Kaggle, use [this link](https://github.com/alexeygrigorev/large-datasets/releases/download/dogs-cats/train.zip) instead: ```bash wget https://github.com/alexeygrigorev/large-datasets/releases/download/dogs-cats/train.zip ``` In the lectures we saw how to use a pre-trained neural network. In the homework, we'll train a much smaller model from scratch. **Note:** You don't need a computer with a GPU for this homework. A laptop or any personal computer should be sufficient. ### Data Preparation The dataset contains 12,500 images of cats and 12,500 images of dogs. Now we need to split this data into train and validation * Create a `train` and `validation` folders * In each folder, create `cats` and `dogs` folders * Move the first 10,000 images to the train folder (from 0 to 9999) for boths cats and dogs - and put them in respective folders * Move the remaining 2,500 images to the validation folder (from 10000 to 12499) You can do this manually or with Python (check `os` and `shutil` packages). ### Model For this homework we will use Convolutional Neural Network (CNN. Like in the lectures, we'll use Keras. You need to develop the model with following structure: * The shape for input should be `(150, 150, 3)` * Next, create a covolutional layer ([`Conv2D`](https://keras.io/api/layers/convolution_layers/convolution2d/)): * Use 32 filters * Kernel size should be `(3, 3)` (that's the size of the filter) * Use `'relu'` as activation * Reduce the size of the feature map with max pooling ([`MaxPooling2D`](https://keras.io/api/layers/pooling_layers/max_pooling2d/)) * Set the pooling size to `(2, 2)` * Turn the multi-dimensional result into vectors using a [`Flatten`](https://keras.io/api/layers/reshaping_layers/flatten/) layer * Next, add a `Dense` layer with 64 neurons and `'relu'` activation * Finally, create the `Dense` layer with 1 neuron - this will be the output * The output layer should have an activation - use the appropriate activation for the binary classification case As optimizer use [`SGD`](https://keras.io/api/optimizers/sgd/) with the following parameters: * `SGD(lr=0.002, momentum=0.8)` For clarification about kernel size and max pooling, check [Week #11 Office Hours](https://www.youtube.com/watch?v=1WRgdBTUaAc). ### Question 1 Since we have a binary classification problem, what is the best loss function for us? Note: since we specify an activation for the output layer, we don't need to set `from_logits=True` ### Question 2 What's the total number of parameters of the model? You can use the `summary` method for that. ### Generators and Training For the next two questions, use the following data generator for both train and validation: ```python ImageDataGenerator(rescale=1./255) ``` * We don't need to do any additional pre-processing for the images. * When reading the data from train/val directories, check the `class_mode` parameter. Which value should it be for a binary classification problem? * Use `batch_size=20` * Use `shuffle=True` for both training and validaition For training use `.fit()` with the following params: ```python model.fit( train_generator, steps_per_epoch=100, epochs=10, validation_data=validation_generator, validation_steps=50 ) ``` Note `validation_steps=50` - this parameter says "run only 50 steps on the validation data for evaluating the results". This way we iterate a bit faster, but don't use the entire validation dataset. That's why it's important to shuffle the validation dataset as well. ### Question 3 What is the median of training accuracy for this model? ### Question 4 What is the standard deviation of training loss for this model? ### Data Augmentation For the next two questions, we'll generate more data using data augmentations. Add the following augmentations to your training data generator: * `rotation_range=40,` * `width_shift_range=0.2,` * `height_shift_range=0.2,` * `shear_range=0.2,` * `zoom_range=0.2,` * `horizontal_flip=True,` * `fill_mode='nearest'` ### Question 5 Let's train our model for 10 more epochs using the same code as previously. Make sure you don't re-create the model - we want to continue training the model we already started training. What is the mean of validation loss for the model trained with augmentations? ### Question 6 What's the average of validation accuracy for the last 5 epochs (from 6 to 10) for the model trained with augmentations? ## Submit the results Submit your results here: https://forms.gle/AE9v22MFnXxB9gyZ8 If your answer doesn't match options exactly, select the closest one. ## Deadline The deadline for submitting is 22 November, 17:00 CET. After that, the form will be closed. ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 8: Neural Networks and Deep Learning](./) * Previous: [Explore more](14-explore-more.md) ================================================ FILE: cohorts/2021/08-deep-learning/week-11-office-hours.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "id": "5d50518c", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd \n", "\n", "from tensorflow import keras\n", "\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 37, "id": "9dac1d00", "metadata": {}, "outputs": [], "source": [ "from tqdm.keras import TqdmCallback" ] }, { "cell_type": "code", "execution_count": 2, "id": "851915f5", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('AB_NYC_2019.csv', nrows=20000)" ] }, { "cell_type": "code", "execution_count": 3, "id": "698b0eaf", "metadata": {}, "outputs": [], "source": [ "numerical = [\n", " 'latitude',\n", " 'longitude',\n", " 'minimum_nights',\n", " 'number_of_reviews',\n", " 'reviews_per_month',\n", " 'calculated_host_listings_count',\n", " 'availability_365'\n", "]" ] }, { "cell_type": "code", "execution_count": 4, "id": "8dcc4f22", "metadata": {}, "outputs": [], "source": [ "df[numerical] = df[numerical].fillna(0)\n", "\n", "df.name = df.name.fillna('')\n", "df.neighbourhood_group = df.neighbourhood_group.str.lower().str.replace(' ', '_').fillna('NA')\n", "df.neighbourhood = df.neighbourhood.str.lower().str.replace(' ', '_').fillna('NA')\n", "df.room_type = df.room_type.str.lower().str.replace(' ', '_').fillna('NA')" ] }, { "cell_type": "code", "execution_count": 5, "id": "5de273e5", "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": 6, "id": "777d4ff8", "metadata": {}, "outputs": [], "source": [ "df_train, df_val = train_test_split(df)" ] }, { "cell_type": "code", "execution_count": 10, "id": "b79aa002", "metadata": {}, "outputs": [], "source": [ "from sklearn.compose import ColumnTransformer\n", "from sklearn.pipeline import Pipeline\n", "\n", "from sklearn.feature_extraction.text import CountVectorizer\n", "from sklearn.base import TransformerMixin" ] }, { "cell_type": "code", "execution_count": 15, "id": "ccc48fbb", "metadata": {}, "outputs": [], "source": [ "from sklearn.preprocessing import StandardScaler" ] }, { "cell_type": "code", "execution_count": 8, "id": "f47c472c", "metadata": {}, "outputs": [], "source": [ "class ConcatenatingTranformer(TransformerMixin):\n", " \n", " def fit(self, X, y=None):\n", " return self\n", "\n", " def transform(self, X):\n", " columns = list(X.columns)\n", " \n", " res = ''\n", " \n", " for c in columns:\n", " res = res + ' ' + c + '=' + X[c]\n", "\n", " return res.str.strip()" ] }, { "cell_type": "code", "execution_count": 16, "id": "6bd73459", "metadata": {}, "outputs": [], "source": [ "transformations = [\n", " ('numerical', StandardScaler(), numerical),\n", " ('categories', Pipeline([\n", " ('concatenate', ConcatenatingTranformer()),\n", " ('vectorize', CountVectorizer(token_pattern='\\S+', min_df=100))\n", " ]), ['neighbourhood', 'neighbourhood_group', 'room_type']),\n", " ('name', CountVectorizer(min_df=100, dtype='int32'), 'name')\n", "]\n", "\n", "tranformer = ColumnTransformer(transformations, remainder='drop')" ] }, { "cell_type": "code", "execution_count": 17, "id": "4a6938b5", "metadata": {}, "outputs": [], "source": [ "X_train = tranformer.fit_transform(df_train)\n", "X_val = tranformer.transform(df_val)" ] }, { "cell_type": "code", "execution_count": 19, "id": "04ecb34a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<15000x183 sparse matrix of type ''\n", "\twith 207901 stored elements in Compressed Sparse Row format>" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train" ] }, { "cell_type": "code", "execution_count": 14, "id": "84fbe473", "metadata": {}, "outputs": [], "source": [ "y_train = np.log1p(df_train.price.values)\n", "y_val = np.log1p(df_val.price.values)" ] }, { "cell_type": "markdown", "id": "956dd8b2", "metadata": {}, "source": [ "Linear regression with keras" ] }, { "cell_type": "code", "execution_count": 40, "id": "8a31404d", "metadata": {}, "outputs": [], "source": [ "inputs = keras.layers.Input(shape=(183,))\n", "\n", "outputs = keras.layers.Dense(1)(inputs)\n", "\n", "model = keras.Model(inputs, outputs)\n", "\n", "learning_rate = 0.01\n", "optimizer = keras.optimizers.Adam(learning_rate=learning_rate)\n", "\n", "loss = keras.losses.MeanSquaredError()\n", "rmse = keras.metrics.RootMeanSquaredError()\n", "\n", "model.compile(optimizer=optimizer, loss=loss, metrics=[rmse])" ] }, { "cell_type": "code", "execution_count": null, "id": "7b7c37fa", "metadata": {}, "outputs": [], "source": [ "history = model.fit(\n", " X_train, y_train,\n", " batch_size=1024,\n", " epochs=100, \n", " verbose=0,\n", " validation_data=(X_val, y_val),\n", " callbacks=[TqdmCallback()]\n", ")" ] }, { "cell_type": "code", "execution_count": 41, "id": "2f20be61", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "9eb59a99", "metadata": {}, "source": [ "Add more layers" ] }, { "cell_type": "code", "execution_count": 48, "id": "77b9ce7a", "metadata": {}, "outputs": [], "source": [ "inputs = keras.layers.Input(shape=(183,))\n", "\n", "## added this:\n", "inner = keras.layers.Dense(30, activation='relu')(inputs)\n", "drop = keras.layers.Dropout(0.2)(inner)\n", "\n", "outputs = keras.layers.Dense(1)(drop)\n", "\n", "model = keras.Model(inputs, outputs)\n", "\n", "\n", "\n", "learning_rate = 0.001\n", "optimizer = keras.optimizers.Adam(learning_rate=learning_rate)\n", "\n", "loss = keras.losses.MeanSquaredError()\n", "rmse = keras.metrics.RootMeanSquaredError()\n", "\n", "model.compile(optimizer=optimizer, loss=loss, metrics=[rmse])" ] }, { "cell_type": "code", "execution_count": 49, "id": "564deb1f", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0epoch [00:00, ?epoch/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0batch [00:00, ?batch/s]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "history = model.fit(\n", " X_train, y_train,\n", " batch_size=1024,\n", " epochs=30, \n", " verbose=0,\n", " validation_data=(X_val, y_val),\n", " callbacks=[TqdmCallback()]\n", ")" ] }, { "cell_type": "code", "execution_count": 47, "id": "9223ad53", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(history.history['val_root_mean_squared_error'])" ] }, { "cell_type": "markdown", "id": "9de11746", "metadata": {}, "source": [ "Sequential" ] }, { "cell_type": "code", "execution_count": 61, "id": "5015cd47", "metadata": {}, "outputs": [], "source": [ "model = keras.models.Sequential()\n", "\n", "model.add(keras.layers.Dense(30, activation='relu'))\n", "model.add(keras.layers.Dropout(0.2))\n", "model.add(keras.layers.Dense(1))" ] }, { "cell_type": "code", "execution_count": 62, "id": "3440dd74", "metadata": {}, "outputs": [], "source": [ "learning_rate = 0.01\n", "optimizer = keras.optimizers.Adam(learning_rate=learning_rate)\n", "\n", "loss = keras.losses.MeanSquaredError()\n", "rmse = keras.metrics.RootMeanSquaredError()\n", "\n", "model.compile(optimizer=optimizer, loss=loss, metrics=[rmse])" ] }, { "cell_type": "code", "execution_count": 63, "id": "17b5c78b", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "500cc5b615d94e5cb2056708ec7e7b01", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0epoch [00:00, ?epoch/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "0batch [00:00, ?batch/s]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "history = model.fit(\n", " X_train, y_train,\n", " batch_size=1024,\n", " epochs=30, \n", " verbose=0,\n", " validation_data=(X_val, y_val),\n", " callbacks=[TqdmCallback()]\n", ")" ] }, { "cell_type": "code", "execution_count": 64, "id": "a380f824", "metadata": {}, "outputs": [], "source": [ "pred = model.predict(X_train[:10])" ] }, { "cell_type": "code", "execution_count": 65, "id": "17c29480", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[4.975269 ],\n", " [5.188339 ],\n", " [4.079772 ],\n", " [4.6929116],\n", " [4.1848497],\n", " [4.9689226],\n", " [4.9001856],\n", " [4.0081806],\n", " [4.8581057],\n", " [3.9850411]], dtype=float32)" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred" ] }, { "cell_type": "code", "execution_count": null, "id": "8ba31787", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3.9.5 64-bit", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.5" }, "vscode": { "interpreter": { "hash": "c347c8f9a7ef94e4c9e03b4513be7835ed18f45b99a2a817fb579f408b867b16" } } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: cohorts/2021/09-serverless/homework/Dockerfile ================================================ FROM agrigorev/zoomcamp-cats-dogs-lambda:v2 RUN pip install keras-image-helper RUN pip install https://github.com/alexeygrigorev/tflite-aws-lambda/raw/main/tflite/tflite_runtime-2.7.0-cp38-cp38-linux_x86_64.whl COPY homework.py . ENV MODEL_NAME=cats-dogs-v2.tflite CMD [ "homework.lambda_handler" ] ================================================ FILE: cohorts/2021/09-serverless/homework/homework.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "id": "86252c80", "metadata": {}, "outputs": [], "source": [ "import tensorflow as tf\n", "from tensorflow import keras" ] }, { "cell_type": "code", "execution_count": null, "id": "52acc85f", "metadata": {}, "outputs": [], "source": [ "model = keras.models.load_model('dogs-vs-cats.h5')" ] }, { "cell_type": "code", "execution_count": null, "id": "270af343", "metadata": {}, "outputs": [], "source": [ "converter = tf.lite.TFLiteConverter.from_keras_model(model)\n", "tflite_model = converter.convert()\n", "\n", "with open('clothing-model.tflite', 'wb') as f_out:\n", " f_out.write(tflite_model)" ] }, { "cell_type": "code", "execution_count": 5, "id": "29c8e4ec", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-rw-r--r-- 1 alexey 197121 43M Dec 1 22:27 clothing-model.tflite\n" ] } ], "source": [ "!ls -lh clothing-model.tflite" ] }, { "cell_type": "code", "execution_count": 2, "id": "49b7d4f3", "metadata": {}, "outputs": [], "source": [ "import tensorflow.lite as tflite" ] }, { "cell_type": "code", "execution_count": 3, "id": "8dcbdcc7", "metadata": {}, "outputs": [], "source": [ "interpreter = tflite.Interpreter(model_path='clothing-model.tflite')\n", "interpreter.allocate_tensors()\n", "\n", "input_index = interpreter.get_input_details()[0]['index']\n", "output_index = interpreter.get_output_details()[0]['index']" ] }, { "cell_type": "code", "execution_count": 4, "id": "79b551cd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "13" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "output_index" ] }, { "cell_type": "code", "execution_count": 6, "id": "b838c6f2", "metadata": {}, "outputs": [], "source": [ "from io import BytesIO\n", "from urllib import request\n", "\n", "from PIL import Image\n", "\n", "def download_image(url):\n", " with request.urlopen(url) as resp:\n", " buffer = resp.read()\n", " stream = BytesIO(buffer)\n", " img = Image.open(stream)\n", " return img\n", "\n", "\n", "def prepare_image(img, target_size):\n", " if img.mode != 'RGB':\n", " img = img.convert('RGB')\n", " img = img.resize(target_size, Image.NEAREST)\n", " return img" ] }, { "cell_type": "code", "execution_count": 9, "id": "23960ec7", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "img = download_image('https://upload.wikimedia.org/wikipedia/commons/9/9a/Pug_600.jpg')\n", "img = prepare_image(img, target_size=(150, 150))\n", "img" ] }, { "cell_type": "code", "execution_count": 10, "id": "204920e3", "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 13, "id": "2fa74634", "metadata": {}, "outputs": [], "source": [ "def prepare_input(x):\n", " return x / 255.0" ] }, { "cell_type": "code", "execution_count": 19, "id": "0e0940c9", "metadata": {}, "outputs": [], "source": [ "x = np.array(img, dtype='float32')\n", "X = np.array([x])\n", "X = prepare_input(X)" ] }, { "cell_type": "code", "execution_count": 20, "id": "a22ebee7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7058824" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X[0, 0, 0, 0]" ] }, { "cell_type": "code", "execution_count": 21, "id": "b1ff985d", "metadata": {}, "outputs": [], "source": [ "interpreter.set_tensor(input_index, X)\n", "interpreter.invoke()\n", "\n", "preds = interpreter.get_tensor(output_index)" ] }, { "cell_type": "code", "execution_count": 22, "id": "6814145a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0.7704913]], dtype=float32)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "preds" ] }, { "cell_type": "code", "execution_count": null, "id": "3a3f6aa3", "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.9.7" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: cohorts/2021/09-serverless/homework/homework.py ================================================ #!/usr/bin/env python # coding: utf-8 # import tensorflow.lite as tflite import tflite_runtime.interpreter as tflite import os import numpy as np from io import BytesIO from urllib import request from PIL import Image MODEL_NAME = os.getenv('MODEL_NAME', 'dogs-vs-cats.tflite') def download_image(url): with request.urlopen(url) as resp: buffer = resp.read() stream = BytesIO(buffer) img = Image.open(stream) return img def prepare_image(img, target_size): if img.mode != 'RGB': img = img.convert('RGB') img = img.resize(target_size, Image.NEAREST) return img def prepare_input(x): return x / 255.0 interpreter = tflite.Interpreter(model_path=MODEL_NAME) interpreter.allocate_tensors() input_index = interpreter.get_input_details()[0]['index'] output_index = interpreter.get_output_details()[0]['index'] # 'https://upload.wikimedia.org/wikipedia/commons/9/9a/Pug_600.jpg' def predict(url): img = download_image(url) img = prepare_image(img, target_size=(150, 150)) x = np.array(img, dtype='float32') X = np.array([x]) X = prepare_input(X) interpreter.set_tensor(input_index, X) interpreter.invoke() preds = interpreter.get_tensor(output_index) return float(preds[0, 0]) def lambda_handler(event, context): url = event['url'] pred = predict(url) result = { 'prediction': pred } return result ================================================ FILE: cohorts/2021/09-serverless/homework/test.py ================================================ import requests url = 'http://localhost:8080/2015-03-31/functions/function/invocations' data = {'url': 'https://upload.wikimedia.org/wikipedia/commons/1/18/Vombatus_ursinus_-Maria_Island_National_Park.jpg'} result = requests.post(url, json=data).json() print(result) ================================================ FILE: cohorts/2021/09-serverless/homework.md ================================================ ## 9.10 Homework In this homework, we'll deploy the dogs vs cats model we trained in the previous homework. Download the model from here: https://github.com/alexeygrigorev/large-datasets/releases/download/dogs-cats-model/dogs_cats_10_0.687.h5 ## Question 1 Now convert this model from Keras to TF-Lite format. What's the size of the converted model? ## Question 2 To be able to use this model, we need to know the index of the input and the index of the output. What's the output index for this model? ## Preparing the image You'll need some code for downloading and resizing images. You can use this code: ```python from io import BytesIO from urllib import request from PIL import Image def download_image(url): with request.urlopen(url) as resp: buffer = resp.read() stream = BytesIO(buffer) img = Image.open(stream) return img def prepare_image(img, target_size): if img.mode != 'RGB': img = img.convert('RGB') img = img.resize(target_size, Image.NEAREST) return img ``` For that, you'll need to have pillow installed: ```bash pip install pillow ``` Let's download and resize this image: https://upload.wikimedia.org/wikipedia/commons/9/9a/Pug_600.jpg Based on [the solution of the previous homework](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/08-deep-learning/CNN_solution.ipynb), what should be the target size for the image? ## Question 3 Now we need to turn the image into an numpy array and pre-process it. > Tip: Check the previous homework. What was the pre-processing > we did there? After the pre-processing, what's the value in the first pixel, the R channel? ## Question 4 Now let's apply this model to this image. What's the output of the model? ## Prepepare the lambda code Now you need to copy all the code into a separate python file. You will need to use this file for the next two questions. Tip: you can test this file locally with `ipython` or Jupyter Notebook by importing the file and invoking the function from this file. ## Docker For the next two questions, we'll use a Docker image that I already prepared. This is the Dockerfile that I used for creating the image: ```docker FROM public.ecr.aws/lambda/python:3.8 COPY cats-dogs-v2.tflite . ``` And pushed it to [`agrigorev/zoomcamp-cats-dogs-lambda:v2`](https://hub.docker.com/r/agrigorev/zoomcamp-cats-dogs-lambda/tags). > Note: The image already contains a model and it's not the same model > as the one we used for questions 1-4. ## Question 5 Now let's extend this docker image, install all the required libraries and add the code for lambda. You don't need to include the model in the image. It's already included. The name of the file with the model is `cats-dogs-v2.tflite` and it's in the current workdir in the image (see the Dockerfile above for the reference). What's the image id of the base image? In the build logs (on Linux), you'll see a log like that: ``` $ docker some-command-for-building Sending build context to Docker daemon 2.048kB Step 1/N : FROM agrigorev/zoomcamp-cats-dogs-lambda:v2 ---> XXXXXXXXXXXX Step 2/N : .... ``` You need to get this `XXXXXXXXXXXX`. On MacOS and Windows, the logs for `docker build` are different. To get the image id there, you can use `docker image ls -a`. ## Question 6 Now run the container locally. Score this image: https://upload.wikimedia.org/wikipedia/commons/1/18/Vombatus_ursinus_-Maria_Island_National_Park.jpg What's the output from the model? ## Submit the results Submit your results here: https://forms.gle/QD67KCNKakVUz6pq7 It's possible that your answers won't match exactly. If it's the case, select the closest one. If it's exactly in between two options, select the higher value. ## Deadline The deadline for submitting is 2 December 2021, 12:00 CET. After that, the form will be closed. ## Publishing it to AWS Now you can deploy your model to AWS! * Publish your image to ECR * Create a lambda function in AWS, use the ECR image * Give it more RAM and increase the timeout * Test it * Expose the lambda function using API Gateway This is optional and not graded ## Publishing to Docker hub This is just for reference, this is how I published an image to Docker hub: ```bash docker build -t cats-dogs-lambda . docker tag cats-dogs-lambda:latest agrigorev/zoomcamp-cats-dogs-lambda:v2 docker push agrigorev/zoomcamp-cats-dogs-lambda:v2 ``` ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 9: Serverless Deep Learning](./) * Previous: [Explore more](09-explore-more.md) ================================================ FILE: cohorts/2021/10-kubernetes/homework/deployment.yaml ================================================ apiVersion: apps/v1 kind: Deployment metadata: name: churn spec: selector: matchLabels: app: churn template: metadata: labels: app: churn spec: containers: - name: churn image: churn-model:v001 resources: limits: memory: "128Mi" cpu: "500m" ports: - containerPort: 9696 ================================================ FILE: cohorts/2021/10-kubernetes/homework/service.yaml ================================================ apiVersion: v1 kind: Service metadata: name: churn spec: type: LoadBalancer selector: app: churn ports: - port: 80 targetPort: 9696 ================================================ FILE: cohorts/2021/10-kubernetes/homework.md ================================================ ## 10.11 Homework In this homework, we'll deploy the churn preduction model from session 5. We already have a docker image for this model - we'll use it for deploying the model to Kubernetes. ## Bulding the image Clone the course repo if you haven't: ``` git clone https://github.com/alexeygrigorev/mlbookcamp-code.git ``` Go to the `course-zoomcamp/05-deployment/code` folder and execute the following: ```bash docker build -t churn-model:v001 . ``` > **Note:** If you have troubles building the image, you can > use the image I built and published to docker hub: > `agrigorev/zoomcamp-model:churn-v001` Run it to test that it's working locally: ```bash docker run -it --rm -p 9696:9696 churn-model:v001 ``` And in another terminal, execute `predict-test.py` file: ```bash python predict-test.py ``` You should see this: ``` {'churn': False, 'churn_probability': 0.3257561103397851} not sending promo email to xyz-123 ``` Now you can stop the container running in Docker. ## Installing `kubectl` and `kind` You need to install: * `kubectl` - https://kubernetes.io/docs/tasks/tools/ (you might already have it - check before installing) * `kind` - https://kind.sigs.k8s.io/docs/user/quick-start/ ## Quesion 1: Version of kind What's the version of `kind` that you have? Use `kind --version` to find out. ## Creating a cluster Now let's create a cluster with `kind`: ```bash kind create cluster ``` ## Question 2: Verifying that everything works Now let's test if everything works. Use `kubectl` to get the list of running services. What's `CLUSTER-IP` of the service that is already running there? ## Question 3: Uploading the image to kind To be able to use the docker image we previously created (`churn-model:v001`), we need to register it with kind. What's the command we need to run for that? ## Question 4: Creating a deployment Now let's create a deployment (e.g. `deployment.yaml`): ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: churn spec: selector: matchLabels: app: churn template: metadata: labels: app: churn spec: containers: - name: churn image: resources: limits: memory: "128Mi" cpu: "500m" ports: - containerPort: ``` Replace `` and `` with the correct values. What is the value for ``? ## Question 5: Pod name Apply this deployment: ```yaml kubectl apply -f deployment.yaml ``` Now get a list of running pods. What's the name of the pod that just started? ## Question 6: Creating a service Let's create a service for this deployment (`service.yaml`): ```yaml apiVersion: v1 kind: Service metadata: name: spec: type: LoadBalancer selector: app: ports: - port: 80 targetPort: ``` Fill it in. What do we need to write instead of ``? Apply this config file. ## Testing the service locally We can do it by forwarding the 9696 port on our computer to the port 80 on the service: ```bash kubectl port-forward service/churn 9696:80 ``` Run `predict-test.py` from session 5 to verify that everything is working. ## Submit the results Submit your results here: https://forms.gle/bUdkQGgR2nLVFEhK8 ## Deadline The deadline for submitting is 10 January 2022, 17:00 CET. After that, the form will be closed. ## Navigation * [Machine Learning Zoomcamp course](../) * [Session 10: Kubernetes and TensorFlow Serving](./) * Previous: [Explore more](10-explore-more.md) ================================================ FILE: cohorts/2021/12-capstone/README.md ================================================ ## 12. Capstone Project Now apply everything we learned so far yourself. That will include: * Thinking of a problem that's interesting for you and finding a dataset for that * Describing this problem and explaining how a model could be used * Preparing the data and doing EDA, analyzing important features * Training multiple models, tuning their performance and selecting the best model * Exporting the notebook into a script * Putting your model into a web service and deploying it locally with docker * Bonus points for deploying the service to the cloud ### Datasets * https://www.kaggle.com/datasets and https://www.kaggle.com/competitions * https://archive.ics.uci.edu/ml/index.php * https://data.europa.eu/en * https://www.openml.org/search?type=data * Add more data here! ### Deliverables For this project, you repository/folder should contain the following: * `README.md` with * Description of the problem * Instructions on how to run the project * Data * You should either commit the dataset you used or have clear instructions how to download the dataset * Notebook (suggested name - `notebook.ipynb`) with * Data preparation and data clearning * EDA, feature importance analysis * Model selection process and parameter tuning * Script `train.py` (suggested name) * Training the final model * Saving it to a file (e.g. pickle) * Script `predict.py` (suggested name) * Loading the model * Serving it via a web serice (e.g. with Flask) * `Pipenv` and `Pipenv.lock` * or equivalents: conda environment file, requirements.txt or pyproject.toml * `Dockerfile` for running the service * Deployment * URL to the service your deployed or * Video or image of how you interact with the deployed service ### Cheating and plagiarism Plagiarism in any form is not allowed: * Taking somebody's else notebooks and projects (in full or partly) and using it for the capstone project * Re-using your own projects (in full or partly) from other courses and bootcamps * Re-using your midterm project from ML Zoomcamp Violating any of this will result in 0 points for this project. ### Submit the results Submit your results here: https://forms.gle/eLpDSidx8phJxPfH8 ### Deadline The deadline for submitting is 14 December 2021 (Tuesday), 18:00 CET. After that, the form will be closed. ### FAQ Check the FAQ from the midterm project: * https://github.com/alexeygrigorev/mlbookcamp-code/tree/master/course-zoomcamp/07-midterm-project#faq ## Peer reviewing To evaluate the projects, we'll use peer reviewing. This is a great opportunity for your to learn from each other. * To get points for your project, your need to evaluate 3 projects of your peers * You get 3 extra point for each evaluation * Find the projects to review [here](https://docs.google.com/spreadsheets/d/e/2PACX-1vRsuXlTS_2rR-SxYo_cpnRTZneZ12CPd-L3jva02Lo50JrXjaOzeEF6hdME4y_y3sEjIhKzP43sC1Ci/pubhtml#) Function for computing the hash of your email: ```python from hashlib import sha1 def compute_hash(email): return sha1(email.lower().encode('utf-8')).hexdigest() ``` Tip: you can use https://nbviewer.org/ to render notebooks if GitHub doesn't work ### Evaluation Criteria The project will be evaluated using these criteria: * Problem description * EDA * Model training * Exporting notebook to script * Model deployment * Reproducibility * Dependency and environment management * Containerization * Cloud deployment [Criteria](https://docs.google.com/spreadsheets/d/e/2PACX-1vQCwqAtkjl07MTW-SxWUK9GUvMQ3Pv_fF8UadcuIYLgHa0PlNu9BRWtfLgivI8xSCncQs82HDwGXSm3/pubhtml) ### Submitting evaluations * To submit the evaluations, use this form: https://forms.gle/tHksJjmshDnMM8N57 * You will need to submit this form three times - one for each evaluated project * Deadline: 20 December (Monday), 17:00 CET. After that, the form will be closed. ## Community notes * Add your notes here ================================================ FILE: cohorts/2021/13-article/README.md ================================================ ## 13. Article The best way to learn about something - to teach it. In this part of the course, we'll explore some topics that weren't covered in the course. You'll need to learn about this topic and then write about what you learned in an article. (Of course if you already know something and just want to share your knowledge with us - it's also fine and more than welcome.) ## Topics You can write about pretty much anything that wasn't covered in the course, but related to machine learning and/or engineering. Here are some ideas: * Areas of Machine Learning: * Time series modelling * Machine learning for textual data * Recommender systems * Clustering * Dimensionality reduction * GANs * Tools similar to what we covered: * Using poetry instead of pipenv * LightGBM and catboost instead of xgboost * Using PyTorch instead of Tensorflow * PyCaret * Fastai * TorchServe instead of TF Serving * Some other interesting tools: * Kedro * Pandera * Evaluation metrics: * Precision/Recall curves * Pretty much everything from "explore more" sections * And more! It can be as broad as you'd like - for example, about time series in general or about some specific methods there (exponential smoothing). If you're not sure if your topic is suitable or not, feel free to ask about it in Slack. ## Requirements For the topic, the only requirement is that it wasn't covered in the course, or not covered with the same amount of details that you want to have. When learning the topic, please take a note of all the resources that you used and include them at the end in the "sources" section. ## Where can I publish it? * Medium * Github * Github pages * Wordpress * Your own blog The top voted articles can be re-publised on the DataTalks.Club website if you'd like. ## Plagiarism * Copying from others fully or in part is not allowed. * If you want to quote something from another article, mark it as a quote explicitly and point to the source immediately after the quote. ## Re-using your own work ### Allowed Re-using your own work is okay if it's something that you did as a part of this course. Examples: * You wanted to deploy something to Heroku, you learned about it and wrote a tutorial * You wanted to learn about PyTorch and used it for your project * You did a project about time series and want to share what you learned ### Not allowed It's not allowed to re-use articles that you wrote before the course started. Examples: * You were taking part in another course and wrote an article for it. Now you want to re-use the same article here > Note: you're more than welcome to share this article with the > community (e.g. in the `#shameless-content` channel in DataTalks.Club), > but this article can't be submitted as an article for ML Zoomcamp. The publication date for the article must be after the start of the course - September 13th. ## Submitting the results * Submit your article to [`#course-ml-zoomcamp-articles`](https://app.slack.com/client/T01ATQK62F8/C02QXBFS1PU) - just share the link to your article there * Submit the same link to [this form](https://forms.gle/aJ4D5QRtP3iqDqjp6) so I could link it to your message from the channel ## Evaluating We'll use voting for scoring your articles. * Check the articles in the [`#course-ml-zoomcamp-articles`](https://app.slack.com/client/T01ATQK62F8/C02QXBFS1PU) channel and put a :+1: reaction to articles that you liked * The top voted articles will get 20 points ## Deadline The deadline for finishing the article is 2nd of February 22:00 CET. ## Articles The articles from the 2021 cohort students: * [Hyperparameters for Deep Neural Networks: Getting to Know and How to Tune them Like a Champ!](https://hamedonline.com/how-to-tune-hyperparameters-for-deep-neural-networks) by [Hamed Homaei Rad](https://linkedin.com/in/hamed-homaei-rad-574942b2/) * [Maintaining multiple versions of Python using Anaconda](https://medium.com/@aniketsharma00411/maintaining-multiple-versions-of-python-using-anaconda-10b2618d7352) by [Aniket Sharma](https://www.linkedin.com/in/aniketsharma00411/) * [Introduction to Reinforcement Learning](https://github.com/ziritrion/ml-zoomcamp/tree/main/article) by [Alvaro Navas](https://www.linkedin.com/in/alvaronavas/) * [Time Series Modelling & Stock Forecasting in Python](https://github.com/sukritishuk/ML_ZoomCamp_Article) by [Sukriti Shukla](https://www.linkedin.com/in/sukriti-shukla-3989a819/) * [Building Machine Learning Zoomcamp course statistics with Plotly library](https://github.com/SVizor42/ML_Zoomcamp/blob/master/ml-zoomcamp-stats/article.md) by [Timur Kamaliev](https://www.linkedin.com/in/timurkamaliev/) * [Deploying a Scalable SQL Database Cluster to a DigitalOcean Managed Kubernetes Cluster](https://github.com/ashok-arora/k8s-mysql-cluster) by [Ashok Arora](https://www.linkedin.com/in/ashok-arora/) * Add links here * Template: [Article name](Link-to-article) by [Student name](Linkedin/Twitter/Homepage/etc) ================================================ FILE: cohorts/2021/14-project/README.md ================================================ ## 14. Third project The requirements are the same as for the [capstone project](../12-capstone/) * Submit your project [here](https://forms.gle/2V2qyDKeUhGwnfn4A) * Deadline: January 26, 23:00 CET * Evaluate your peers * Project evaluation assingment: [here](https://docs.google.com/spreadsheets/d/e/2PACX-1vSXSWfDcoeefJZbt4anSRZQVuDGzkij8eiSdWoCRD3GbKSAYj-6BSA5X9M0w5CstxtMXU2jjuTtWr_v/pubhtml) * Submit the results [here](https://forms.gle/WYAcXaawfcpGtZGD7) * Deadline: February 2, 22:00 CET ================================================ FILE: cohorts/2021/leaderboard.md ================================================ ## Leaderboard This is the top [100 leaderboard](https://docs.google.com/spreadsheets/d/e/2PACX-1vQHj_Y138-aWhkPvwZFPIDl8aoJmtNjaUQ7ZaL-3BFhiuqQZgUpHY3yjbsvF_nsyF0WftTorji4ovCb/pubhtml#) of participants of ML Zoomcamp 2021 edition! ### Cem Keskin * [LinkedIn](https://www.linkedin.com/in/cem-keskin-79765775/) * [GitHub](https://github.com/CemKeskin84) Coursework: * [Course project1](https://github.com/CemKeskin84/ML-Zoomcamp/tree/main/midterm_project) * [Course project2](https://github.com/CemKeskin84/ML-Zoomcamp/tree/main/capstone_project) Links * [dev.to blog page](https://dev.to/cemkeskin84) * [Twitter profile](https://twitter.com/CemKesk46821104) > Thanks for everything ### Ninad Date * [LinkedIn](https://www.linkedin.com/in/ninad-date/) * [GitHub](https://github.com/nindate) Coursework: * [Course project1](https://github.com/nindate/mlzoomcamp-midterm-project) * [Course project2](https://github.com/nindate/mlzoomcamp-capstone-project) ### Aniket Sharma * [LinkedIn](https://www.linkedin.com/in/aniketsharma00411/) * [GitHub](https://github.com/aniketsharma00411/) Coursework: * [Course project1](https://github.com/aniketsharma00411/mba_placement_prediction) * [Course project2](https://github.com/aniketsharma00411/employee_future_prediction) Links * [Website](https://www.aniketsharma.net/) * [Kaggle](https://www.kaggle.com/aniketsharma00411) ### Sebastián Ayala Ruano * [LinkedIn](https://www.linkedin.com/in/sayalaruano/) * [GitHub](https://github.com/sayalaruano) Coursework: * [Course project1](https://github.com/sayalaruano/MidtermProject-MLZoomCamp) * [Course project2](https://github.com/sayalaruano/CapstoneProject-MLZoomCamp) Links * [Personal website](https://sayalaruano.github.io/) * [Twitter account](https://twitter.com/sayalaruano) * [ORCID](https://orcid.org/0000-0001-9756-6745) ### Nikhil Shrestha * [LinkedIn](https://www.linkedin.com/in/nikhilshreshta) * [GitHub](https://github.com/snikhil17) Coursework: * [Course project1](https://github.com/snikhil17/Cricket_India_win_prediction) * [Course project2](https://github.com/snikhil17/Customer_Shopping_Intention) ### Alvaro Navas Peire * [LinkedIn](https://www.linkedin.com/in/alvaronavas/) * [GitHub](https://github.com/ziritrion) Coursework: * [Course project1](https://github.com/ziritrion/ml-zoomcamp/tree/main/07_midterm_project) * [Course project2](https://github.com/ziritrion/ml-zoomcamp/tree/main/12_project) > I really enjoyed the Machine Learning Zoomcamp! It was a great opportunity to learn and test my skills! ### Emmanuel Letremble * [LinkedIn](https://www.linkedin.com/in/letremble) * [GitHub](https://github.com/Valkea) Coursework: * [Course project1](https://github.com/Valkea/ML_Wine) * [Course project2](https://github.com/Valkea/ML_Facial_Expression_Recognition/) > Thanks to the DataTalks.Club for completing my Full Stack skill set with some ML knowledge. I can't wait to use all these superpowers on real projects. ### Jessica Greene (She/ Her) Software Engineer at Ecosia.org * [GitHub](https://github.com/sleepypioneer) Coursework: * [Course project1](https://github.com/sleepypioneer/coffee-quality) * [Course project2](https://github.com/sleepypioneer/coffee-leaf-rust-predictor) Links [Twitter](https://twitter.com/sleepypioneer) ### Abdul-Rashid Zakaria * [LinkedIn](https://www.linkedin.com/in/abdul-rashid-zakaria-eit-001/) * [GitHub](https://github.com/ZachJon1) Coursework: * [Course project1](https://github.com/ZachJon1/Mid-Term-Project) * [Course project2](https://github.com/ZachJon1/capstone_project) Links [twitter account](https://twitter.com/AbdulRashidZak2) > All the materials on ML Zoomcamp have been helpful for my current Ph.D. research work, and I feel more confident in my abilities when working on machine learning projects. ### Deepa Chidambaran * [LinkedIn](https://www.linkedin.com/in/deepa-chidambaran-2b19332b/) ### Hamed Homaei Rad * [LinkedIn](https://linkedin.com/in/hamed-homaei-rad-574942b2/) * [GitHub](https://github.com/hamedonline) Coursework: * [Course project1](https://github.com/hamedonline/ml-workflow) * [Course project2](https://github.com/hamedonline/news-topicker) Links * [Midterm Project Presentation](https://youtu.be/TzEKcxJk17o?t=1247) * [Course Assignments & Solutions](https://github.com/hamedonline/ml-zoomcamp-homeworks) * [Article: Hyperparameters for Deep Neural Networks](https://hamedonline.com/how-to-tune-hyperparameters-for-deep-neural-networks) > I can't thank Alexey Grigorev enough for all the effort he has put in this course and the great information and tips he has provided during it. Wishing you all the best dear Alexey. ### Tony Gunawan * [LinkedIn](https://www.linkedin.com/in/tony-gunawan-b4542932/) * [GitHub](https://github.com/roberttflash) Coursework: * [Course project1](https://github.com/roberttflash/ml-zoomcamp/tree/main/MIDTERM_PROJECT_20211023) * [Course project2](https://github.com/roberttflash/ml-zoomcamp/tree/main/CAPSTONE_PROJECT_20211211) Links [twitter profile](https://twitter.com/roberttflash) > Thank you so much for Alexey and team for the hardwork you've been done on this zoomcamp. I really learned a lot from it. Awesome! ### Ahmed Yahia Kallel * [LinkedIn](https://www.linkedin.com/in/kallelay/) * [GitHub](https://github.com/kallelay) Coursework: * [Course project1](https://github.com/kallelay/ML-Zoomcamp/tree/main/Midterm%20Project) * [Course project2](https://github.com/kallelay/MLZoomCampCapstoneProject) * [Course project3](https://github.com/kallelay/MLZoomCampThirdProject) ### Damini Jain * [GitHub](https://github.com/jaindamini1111) Links * [Article link](https://dev.to/jaindamini1111/sampling-bias-and-how-to-fix-it-1k5n) ### Aleksei Sinitsyn * [LinkedIn](https://www.linkedin.com/in/aleksei-sinitsyn/) Coursework: * [Course project1](https://github.com/aljeks/air-quality-and-asthma) * [Course project2](https://github.com/aljeks/restaurant-booking-decision) ### Timur Kamaliev * [LinkedIn](https://www.linkedin.com/in/timurkamaliev/) * [GitHub](https://github.com/SVizor42) Coursework: * [Course project1](https://github.com/SVizor42/ML_Zoomcamp/tree/master/Projects/Movie_reviews_sentiment_analysis) * [Course project2](https://github.com/SVizor42/ML_Zoomcamp/tree/master/Projects/Car_parking_slots_detection) ### Javier Villarrubia * [LinkedIn](https://www.linkedin.com/in/villarrubiaderqui/) ### Ashok Arora * [LinkedIn](https://www.linkedin.com/in/ashok-arora/) * [GitHub](https://github.com/ashok-arora) Coursework: * [Course project1](https://github.com/ashok-arora/ML-Zoomcamp/tree/main/mid_term_project) * [Course project3](https://github.com/ashok-arora/heart-attack-predictor) ### Sukriti Shukla * [LinkedIn](https://www.linkedin.com/in/sukriti-shukla-3989a819/) Coursework: * [Course project1](https://github.com/sukritishuk/ML_ZoomCamp_Midterm_Project) * [Course project2](https://github.com/sukritishuk/ML_ZoomCamp_Capstone_Project) Links [ML_ZoomCamp_Article](https://github.com/sukritishuk/ML_ZoomCamp_Article) ### Kristiaan De Jongh * [LinkedIn](https://www.linkedin.com/in/kristiaan-de-jongh/) * [GitHub](https://github.com/kristiaan67/ml-zoomcamp) Coursework: * [Course project1](https://github.com/kristiaan67/ml-zoomcamp/tree/master/midterm-project) * [Course project2](https://github.com/kristiaan67/ml-zoomcamp/tree/master/capstone-project) > Hard work but had a lot of fun. Many thanks to Alexey and his team! ### Mark Woodward * [LinkedIn](https://www.linkedin.com/in/mark-woodward-60462b63/) * [GitHub](https://github.com/woodwardmw) Coursework: * [Course project1](https://github.com/woodwardmw/MLZoomCamp-Midterm) * [Course project2](https://github.com/woodwardmw/Ratings-predictor) Links [Twitter](https://twitter.com/DataScienceMW) ### Subramanian Hariharan * [LinkedIn](https://www.linkedin.com/in/subramanian-hariharan-3b755237/) * [GitHub](https://github.com/HSubbu) Coursework: * [Course project1](https://github.com/HSubbu/ML_Zoomcamp_project1_1.git) * [Course project2](https://github.com/HSubbu/flower_classification_project.git) Links * [My_Artcles](https://www.analyticsvidhya.com/blog/author/subramanian8/) > A Marine Engineer & an avid Data Enthusiast ### Cristian Dugacicu * [LinkedIn](https://www.linkedin.com/in/razorcd) * [GitHub](https://github.com/razorcd) Coursework: * [Course project1](https://github.com/razorcd/ml-training/tree/main/project1) * [Course project2](https://github.com/razorcd/ml-training/tree/main/capstone-project) Links [Tech blog](https://www.razorcodes.com) ### Germano Cortese * [LinkedIn](https://it.linkedin.com/in/germano-cortese) ### Tim Becker * [LinkedIn](https://www.linkedin.com/in/tim-becker-aachen/) * [GitHub](https://github.com/TimBeckerAachen) Coursework: * [Course project1](https://github.com/TimBeckerAachen/zoomcamp/tree/main/midterm_project) * [Course project2](https://github.com/TimBeckerAachen/zoomcamp/tree/main/capstone_project) ### Ricky McMaster * [LinkedIn](https://www.linkedin.com/in/rickymcmaster/) Coursework: * [Course project1](https://github.com/RickyMcMaster/pub_portfolio/tree/main/mlz/07-midterm-project) * [Course project3](https://github.com/RickyMcMaster/pub_portfolio/tree/main/mlz/11-final-project) ### Ousmane CISSE * [LinkedIn](https://www.linkedin.com/in/ousmane-ciss%C3%A9/) * [GitHub](https://github.com/oussou-dev) Coursework: * [Course project1](https://github.com/oussou-dev/ML_Engineer_ZoomCamp/tree/main/07_midterm-project) * [Course project2](https://github.com/oussou-dev/ML_Engineer_ZoomCamp/tree/main/12_capstone-project) Links [Serious SQL](https://github.com/oussou-dev/Serious_SQL) > Thanks a lot!!! ### Kwang Yang * [LinkedIn](https://www.linkedin.com/in/kwang-yang-chia) * [GitHub](https://github.com/kwangyy) Coursework: * [Course project1](https://github.com/kwangyy/midterm-project) * [Course project2](https://github.com/kwangyy/capstone-project) Links [Kaggle](https://www.kaggle.com/kwangyangchia) ### Leila Ranjbar * [LinkedIn](https://www.linkedin.com/in/leila-ranjbar-0ab77793/) * [GitHub](https://github.com/LeilaRanjbar82) Coursework: * [Course project1](https://github.com/LeilaRanjbar82/ML-zoomcamp-course-homework/tree/main/MidtermProject) * [Course project2](https://github.com/LeilaRanjbar82/ML-zoomcamp-course-homework/tree/main/CapstoneProject) Links * [twitter](https://twitter.com/LeilaRanjbar7) ### Sekar Panneerselvam * [GitHub](https://github.com/sekar-p) Coursework: * [Course project1](https://github.com/sekar-p/ml_course/tree/main/Midterm_project) * [Course project2](https://github.com/sekar-p/ml_course/tree/main/Capstone_Project) Links * [Portfolio](https://sekarpanneerselvam.w3spaces.com/) > Learning is a continuous process. Keep learning!!! ### Arvind Singharpuria * [LinkedIn](https://www.linkedin.com/in/arvind-singharpuria-a88686202/) * [GitHub](https://github.com/Arvind644) Coursework: * [Course project1](https://github.com/Arvind644/water-quality-prediction-project) * [Course project2](https://github.com/Arvind644/Capstone-project) ### Akos Barabas * [LinkedIn](https://www.linkedin.com/in/akosbarabas/) * [GitHub](https://github.com/dataminding) ### Shrish Adhikari * [LinkedIn](https://www.linkedin.com/in/shrish-adhikari-364001159/) * [GitHub](https://github.com/BountyHunter1999) Coursework: * [Course project1](https://github.com/BountyHunter1999/Machine-Learning-Zoom-Camp/tree/main/Homeworks/Capstone%20Project) * [Course project2](https://github.com/BountyHunter1999/Machine-Learning-Zoom-Camp/tree/main/Homeworks/Capstone%20Project%202) ### Ayoub Berdeddouch * [LinkedIn](https://www.linkedin.com/in/ayoub-berdeddouch) * [GitHub](https://www.github.com//ayoub-berdeddouch) Coursework: * [Course project1](https://github.com/ayoub-berdeddouch/midterm-project-mlzoomcamp) * [Course project2](https://github.com/ayoub-berdeddouch/capstone-mlzoomcamp) Links * [Cat Dog Classificaiton using Transfer learning/ FLask App](https://github.com/ayoub-berdeddouch/cat-dog) * [ Covid-19 Django App](https://github.com/ayoub-berdeddouch/covid19_django) * [ECG Classification MI/NORMAL -- Flask webApp](https://github.com/ayoub-berdeddouch/imginference) * [Load Prediction Application - Flask](https://github.com/ayoub-berdeddouch/LoanApplication_Prediction) * [Leaf Plant Disease Classification/Inference -- Streamlit](https://github.com/ayoub-berdeddouch/crop-disease_inference) ### Arpit Chittora * [LinkedIn](https://linkedin.com/in/arpit-chittora) * [GitHub](https://github.com/arpitchittora) Coursework: * [Course project1](https://github.com/arpitchittora/arpit-ml-zzomcamp-v2/tree/master/mid-term-project) * [Course project2](https://github.com/arpitchittora/arpit-ml-zzomcamp-v2/tree/master/capstone-project) Links [Twitter](https://twitter.com/CHITTORAARPIT) ### Michał Woźniak * [LinkedIn](https://www.linkedin.com/in/micha%C5%82-wo%C5%BAniak-43a6a9176) Coursework: * [Course project1](https://github.com/mikeonak/bank_deposits) * [Course project3](https://github.com/mikeonak/bankruptcy) ### Dmitry Zorikhin * [LinkedIn](https://www.linkedin.com/in/dmitry-zorikhin/) * [GitHub](https://github.com/DZorikhin) Coursework: * [Course project1](https://github.com/DZorikhin/heart-desease-pred) * [Course project2](https://github.com/DZorikhin/co2_emissions) Links * [Portfolio](https://dzorikhin.github.io/portfolio/) ### Francesco Falanga * [LinkedIn](https://www.linkedin.com/in/francescofalanga/) * [GitHub](https://github.com/ceccode) ### Valerii Chetvertakov * [LinkedIn](https://www.linkedin.com/in/valera-chetvertakoff-440405b9/) Coursework: * [Course project1](https://github.com/valeriich/midterm-project) * [Course project2](https://github.com/valeriich/capstone-project) ### Diego Cortínez Villalobos * [GitHub](https://github.com/dcortinez93) Coursework: * [Course project1](https://github.com/dcortinez93/ML-zoomcamp/tree/main/ML%20Zoomcamp%20-%20Midterm%20Project) * [Course project2](https://github.com/dcortinez93/ML-zoomcamp/tree/main/ML%20Zoomcamp%20-%20Capstone%20Project) ### Mohammad Aditya Rafi Pratama * [LinkedIn](https://www.linkedin.com/in/mohammad-aditya-rafi-pratama/) * [GitHub](https://github.com/madityarafip) Coursework: * [Course project1](https://github.com/madityarafip/My-Machine-Learning/tree/main/ML-Zoomcamp/Midterm-Project-Week-7) * [Course project2](https://github.com/madityarafip/My-Machine-Learning/tree/main/ML-Zoomcamp/Capstone-Project-Week-12) Links [My Portfolio Webpages](https://madityarafip.github.io/) ### Lisa Kirch * [LinkedIn](https://www.linkedin.com/in/lkirch/) Coursework: * [Course project1](https://github.com/lkirch/ml-zoomcamp/tree/main/midterm) * [Course project2](https://github.com/lkirch/ml-zoomcamp/tree/main/ml-zoomcamp-final) ### Alexander Chashnikov * [LinkedIn](https://www.linkedin.com/in/alexandr-chashnikov/) * [GitHub](https://github.com/ne1r0n) Coursework: * [Course project1](https://github.com/ne1r0n/ml-zoomcamp-midterm-project) * [Course project2](https://github.com/ne1r0n/ml-zoomcamp-capstone-project) ### Rajit Sanghvi * [LinkedIn](linkedin.com/in/rajit-sanghvi-9a7634b6) * [GitHub](https://github.com/sanghvirajit) Coursework: * [Course project1](https://github.com/sanghvirajit/ML-Zoomcamp/tree/main/07_mid_term_project) * [Course project2](https://github.com/sanghvirajit/ML-Zoomcamp/tree/main/10_CapstoneProject) > https://github.com/sanghvirajit/ML-Zoomcamp ### Niel kemp * [LinkedIn](https://www.linkedin.com/in/nielkemp/) * [GitHub](https://github.com/NielKemp) Coursework: * [Course project1](https://github.com/NielKemp/mlzoomcamp/tree/main/MidTerms) * [Course project2](https://github.com/NielKemp/mlzoomcamp/tree/main/capstone) ### Rohan Dhanraj Yadav * [LinkedIn](https://www.linkedin.com/in/rohan-dhanraj-yadav) * [GitHub](https://github.com/rohan-dhanraj) Coursework: * [Course project1](https://github.com/rohan-dhanraj/Admission_Prediction) * [Course project2](https://github.com/rohan-dhanraj/MiceProteinExpression) ### Chan Jiong Jiet * [LinkedIn](https://www.linkedin.com/in/chan-jiong-jiet/) * [GitHub](https://github.com/cjj1120) Coursework: * [Course project2](https://github.com/cjj1120/Weather_Image_Classification-Capstone_Project) ### Maria Moreno de Castro * [LinkedIn](https://www.linkedin.com/in/maria-moreno-de-castro/) * [GitHub](https://github.com/MMdeCastro) Coursework: * [Course project1](https://github.com/MMdeCastro/ml-zoomcamp/tree/main/S7_Midterm_project) * [Course project3](https://github.com/MMdeCastro/ml-zoomcamp/tree/main/S14_Third_Project) ### Andres Noboa * [LinkedIn](https://www.linkedin.com/in/andr%C3%A9s-esteban-noboa-villac%C3%ADs-47a51a126/) * [GitHub](https://github.com/aenoboa1) Coursework: * [Course project1](https://github.com/aenoboa1/Project_MlZoomcamp) * [Course project2](https://github.com/aenoboa1/ML_Zoomcamp-Capstone-Project) ### Denis Kholstinin *Intentionally left blank* ### Dmitry Mokretsov * [LinkedIn](https://linkedin.com/in/dmokretsov) * [GitHub](https://github.com/MokretsovD) ### Oluwafunbi Adeneye * [LinkedIn](https://www.linkedin.com/in/oluwafunbi-adeneye-811301184) * [GitHub](https://github.com/Phunbie) Coursework: * [Course project1](https://github.com/Phunbie/midterm_prog1) * [Course project2](https://github.com/Phunbie/Caps) Links * [My portfolio](https://phunbie.github.io/Portfolio/) * [Medium link](https://medium.com/@lekefbi) > I am currently looking for a job or internship position in the field Machine Learning engineering/AI/Data science. If you have any opportunity for me you can contact me through my LinkedIn. ### Kursad E. * [LinkedIn](https://www.linkedin.com/in/ckerol/) * [GitHub](https://github.com/KursadE) Coursework: * [Course project1](https://github.com/KursadE/zoomcamp-HW7) * [Course project2](https://github.com/KursadE/zoomcamp-HW10) ### Carlos Peralta * [LinkedIn](https://www.linkedin.com/in/carlos9917/) * [GitHub](https://github.com/carlos9917) Coursework: * [Course project1](https://github.com/carlos9917/ml_project1) * [Course project3](https://github.com/carlos9917/ml_project2) ### Gehad Alkady * [LinkedIn](https://www.linkedin.com/in/gehad-alkady-2baa0539/) * [GitHub](https://github.com/gialkady) Coursework: * [Course project1](https://github.com/gialkady/ml_zoomcamp/tree/Homeworks/Midterm%20Project) * [Course project2](https://github.com/gialkady/Capstone-Project) ### Adarsh * [LinkedIn](https://www.linkedin.com/in/adanai) * [GitHub](https://github.com/ada-nai) Coursework: * [Course project1](https://github.com/ada-nai/ag-mlcamp/wiki/Store-Sales-Prediction) * [Course project2](https://github.com/ada-nai/ag-mlcamp/wiki/Loan-Default-Prediction) > Thanks Alexey and DTC for the experience! ### Shaolang Ai * [LinkedIn](https://www.linkedin.com/in/shaolang/) * [GitHub](https://github.com/shaolang) Coursework: * [Course project1](https://github.com/shaolang/ml-zoomcamp/tree/main/mid-term-project) * [Course project2](https://github.com/shaolang/ml-zoomcamp/tree/main/capstone-project) ### Purity Nyagweth * [GitHub](https://github.com/Purity-E) Coursework: * [Course project1](https://github.com/Purity-E/ML_zoomcamp/tree/main/Midterm_Project) * [Course project2](https://github.com/Purity-E/ML_zoomcamp/tree/main/Capstone_Project) Links [Twitter profile](https://twitter.com/p_nyagweth) [Article on K-means clustering](https://dev.to/puritye/k-means-clustering-429i) [Article on boxplot](https://www.linkedin.com/pulse/boxplots-brief-purity-nyagweth/) ### Yonathan * [LinkedIn](https://www.linkedin.com/in/yonathan-manurung-230583170) * [GitHub](https://github.com/nobitayon) Coursework: * [Course project1](https://github.com/nobitayon/project-zoomcamp) * [Course project2](https://github.com/nobitayon/project-capstone-zoomcamp) ### Jose Luis Verdugo * [LinkedIn](https://www.linkedin.com/in/jose-verdugo-aros/) * [GitHub](https://github.com/razekmaiden) Links * [Twitter](https://twitter.com/RazekmaideN) > Research & Development Engineer at INNERVYCS ### Ali Amini *Intentionally left blank* ### Imam Hambali *Intentionally left blank* ### Hamed Kharazmi * [LinkedIn](https://www.linkedin.com/in/hamed-kharazmi) * [GitHub](https://github.com/hamedkharazmi) Coursework: * [Course project1](https://github.com/hamedkharazmi/MLProject-Heart-Disease-Predictions-Service) * [Course project2](https://github.com/hamedkharazmi/MLProject-Bank-Marketing-System) Links * [Twitter](https://twitter.com/Hamed_Kharazmi) ### Mahmoud Kamal * [LinkedIn](https://www.linkedin.com/in/mahmoud-kamal-120176169/) * [GitHub](https://github.com/Twixii99) Coursework: * [Course project1](https://github.com/Twixii99/Weather-prediction) * [Course project2](https://github.com/Twixii99/Movie-Review-Dataset) > Meanwhile, I fall in love with ML. It was really good training with a lot of hand working in home works and projects. great job 💙 ### Alessandro Sarzina * [LinkedIn](https://www.linkedin.com/in/alessandrosarzina/) Coursework: * [Course project1](https://github.com/asarzina/mlbookcamp-homework/tree/main/income-prediction) * [Course project2](https://github.com/asarzina/mlzoomcamp-capstone-project) ### Kim Somfleth * [LinkedIn](https://www.linkedin.com/in/kim-somfleth-7998a8b4/) * [GitHub](https://github.com/ksomf) Coursework: * [Course project1](https://github.com/ksomf/workbook/tree/main/alexeygrigorev_zoomcamp/week07_project) * [Course project2](https://github.com/ksomf/workbook/tree/main/alexeygrigorev_zoomcamp/capstone_project) ### Jasmine Wilson * [LinkedIn](www.linkedin.com/in/jjwilson2) * [GitHub](https://github.com/jazwilson) Coursework: * [Course project1](https://github.com/jazwilson/workbook/tree/main/mlzoomcamp/wk07_midterm_project) * [Course project2](https://github.com/jazwilson/workbook/tree/main/mlzoomcamp/capstone_project) Links [Twitter](https://twitter.com/wilson_jaz) ### Geoffrey Eisenbarth * [LinkedIn](https://www.linkedin.com/in/geoffrey-eisenbarth-ph-d-725b3526/) ### Ken Wu * [LinkedIn](https://github.com/KenWuqianghao) * [GitHub](https://github.com/KenWuqianghao) Coursework: * [Course project1](https://github.com/KenWuqianghao/ML-Zoomcamp-Midterm-Project) * [Course project2](https://github.com/KenWuqianghao/ML-Zoomcamp-Capstone-Project) ### Gbadegesin Muhammed * [LinkedIn](https://www.linkedin.com/mwlite/in/gmuhammed) ### Rajagopal Parthasarathi * [LinkedIn](https://www.linkedin.com/in/rajagopalparthasarathi/) * [GitHub](https://github.com/rparthas) Coursework: * [Course project1](https://github.com/rparthas/data/tree/master/zoomcamp/midterm) * [Course project2](https://github.com/rparthas/data/tree/master/zoomcamp/finalterm) ### Abdassalam Ahmad * [LinkedIn](https://www.linkedin.com/in/abdassalam-ahmad) * [GitHub](https://github.com/AbdassalamAhmad) Coursework: * [Course project1](https://github.com/AbdassalamAhmad/customer_subscription_prediction) Links * [Predicting Clothing Types project](https://github.com/AbdassalamAhmad/Predicting-Clothing-Types) ### Ruslan * [LinkedIn](https://www.linkedin.com/in/ruslan-palchuk-1164b4168/) * [GitHub](https://github.com/LeoRuslan/my_mlbookcamp) Coursework: * [Course project1](https://github.com/LeoRuslan/my_mlbookcamp/tree/main/homework_7) ### Carlotta Hicks * [LinkedIn](https://www.linkedin.com/in/carlotta-hicks/) ### Rakibul Islam * [LinkedIn](https://linkedin.com/in/mdrkb) * [GitHub](https://github.com/mdrkb) ### Kristian Rother * [LinkedIn](https://www.linkedin.com/in/kristian-rother/) * [GitHub](https://github.com/krother/) Coursework: * [Course project1](https://github.com/krother/bookcamp_homework) * [Course project2](https://github.com/krother/running) ### Jenarthanan KS * [GitHub](https://github.com/ksjena/course-ml-zoomcamp) Coursework: * [Course project1](https://github.com/ksjena/course-ml-zoomcamp/tree/main/midterm_project/placement) > Big Thanks to Alexey Grigorev to introduce ML by practicing end-to-end!! ### Turan Saray * [LinkedIn](https://www.linkedin.com/in/turansaray/) * [GitHub](https://github.com/turansaray) Coursework: * [Course project1](https://github.com/turansaray/Spain-Electricity-Price-Prediction) ### Mohsen Sadri Aghdam * [LinkedIn](https://www.linkedin.com/in/msadriaghdam/) * [GitHub](https://github.com/MSadriAghdam) Coursework: * [Course project1](https://github.com/MSadriAghdam/ML-Zommcamp/tree/main/chapter_05) * [Course project2](https://github.com/MSadriAghdam/ML-Zommcamp/tree/main/homework%2007) * [Course project3](https://github.com/MSadriAghdam/Uber_Fare_Pricing) ### Rob Moore * [LinkedIn](https://www.linkedin.com/in/roborative/) * [GitHub](https://github.com/robmoore) Coursework: * [Course project2](https://github.com/robmoore/zoomcamp-capstone-project) * [Course project3](https://github.com/robmoore/zoomcamp-ts-project) ### Nikhil * [LinkedIn](https://www.linkedin.com/in/nikhil-kumar-272758136/) * [GitHub](https://github.com/Nikhil14091997) Coursework: * [Course project1](https://github.com/Nikhil14091997/ML-ZoomCamp/tree/main/Week%20-%207/Bank%20Marketing) ### Amruta Ranade * [LinkedIn](https://www.linkedin.com/in/amrutaranade23) * [GitHub](https://github.com/amruta95) Coursework: * [Course project1](https://github.com/amruta95/MLZoomCamp_MidTermProject) * [Course project2](https://github.com/amruta95/MLZoomCamp_Capstone_Project) ### Yadwinder Kaur * [LinkedIn](https://www.linkedin.com/in/yadwinderkaur/) * [GitHub](https://github.com/yadwink) Coursework: * [Course project1](https://github.com/yadwink/ML-zoomcamp-homework/blob/Mid-Term-Project/WK6/Credit%20scoring%20project.ipynb) ### Subramaniyan G V * [GitHub](https://github.com/subramanivasu) ### Yulia Svetashova *Intentionally left blank* ================================================ FILE: cohorts/2021/office-hours.md ================================================ ## Office Hours ================================================ FILE: cohorts/2022/01-intro/homework.md ================================================ ## Session #1 Homework > **Solution**: > * [Notebook](homework_1.ipynb) > * [Video](https://www.youtube.com/watch?v=J0Ht4V9mIRI&list=PL3MmuxUbc_hL5QBBEyKUXKuTNx-3cTpKs) ### Set up the environment You need to install Python, NumPy, Pandas, Matplotlib and Seaborn. For that, you can the instructions from [06-environment.md](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/01-intro/06-environment.md). ### Question 1 What's the version of NumPy that you installed? You can get the version information using the `__version__` field: ```python np.__version__ ``` ### Getting the data For this homework, we'll use the Car price dataset. Download it from [here](https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv). You can do it with wget: ```bash wget https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv ``` Or just open it with your browser and click "Save as...". Now read it with Pandas. ### Question 2 How many records are in the dataset? Here you need to specify the number of rows. - 16 - 6572 - 11914 - 18990 ### Question 3 Who are the most frequent car manufacturers (top-3) according to the dataset? - Chevrolet, Volkswagen, Toyota - Chevrolet, Ford, Toyota - Ford, Volkswagen, Toyota - Chevrolet, Ford, Volkswagen > **Note**: You should rely on "Make" column in this question. ### Question 4 What's the number of unique Audi car models in the dataset? - 3 - 16 - 26 - 34 ### Question 5 How many columns in the dataset have missing values? - 5 - 6 - 7 - 8 ### Question 6 1. Find the median value of "Engine Cylinders" column in the dataset. 2. Next, calculate the most frequent value of the same "Engine Cylinders". 3. Use the `fillna` method to fill the missing values in "Engine Cylinders" with the most frequent value from the previous step. 4. Now, calculate the median value of "Engine Cylinders" once again. Has it changed? > Hint: refer to existing `mode` and `median` functions to complete the task. - Yes - No ### Question 7 1. Select all the "Lotus" cars from the dataset. 2. Select only columns "Engine HP", "Engine Cylinders". 3. Now drop all duplicated rows using `drop_duplicates` method (you should get a dataframe with 9 rows). 4. Get the underlying NumPy array. Let's call it `X`. 5. Compute matrix-matrix multiplication between the transpose of `X` and `X`. To get the transpose, use `X.T`. Let's call the result `XTX`. 6. Compute the inverse of `XTX`. 7. Create an array `y` with values `[1100, 800, 750, 850, 1300, 1000, 1000, 1300, 800]`. 8. Multiply the inverse of `XTX` with the transpose of `X`, and then multiply the result by `y`. Call the result `w`. 9. What's the value of the first element of `w`? > **Note**: You just implemented linear regression. We'll talk about it in the next lesson. - -0.0723 - 4.5949 - 31.6537 - 63.5643 ## Submit the results * Submit your results here: https://forms.gle/vLp3mvtnrjJxCZx66 * You can submit your solution multiple times. In this case, only the last submission will be used * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ## Deadline The deadline for submitting is 12 September 2022 (Monday), 23:00 CEST (Berlin time). After that, the form will be closed. ================================================ FILE: cohorts/2022/01-intro/homework_1.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "51c5cef6", "metadata": { "id": "51c5cef6" }, "source": [ "## Homework #1 " ] }, { "cell_type": "markdown", "id": "9e18ef36", "metadata": { "id": "9e18ef36" }, "source": [ "### Set up the environment" ] }, { "cell_type": "markdown", "id": "0a94d00b", "metadata": { "id": "0a94d00b" }, "source": [ "You need to install Python, NumPy, Pandas, Matplotlib and Seaborn. For that, you can the instructions from 06-environment.md." ] }, { "cell_type": "code", "execution_count": null, "id": "41eae4aa", "metadata": { "id": "41eae4aa" }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "markdown", "id": "04514a64", "metadata": { "id": "04514a64" }, "source": [ "### Question 1" ] }, { "cell_type": "markdown", "id": "39ca9b76", "metadata": { "id": "39ca9b76" }, "source": [ "What's the version of NumPy that you installed?\n", "\n", "You can get the version information using the `__version__` field:" ] }, { "cell_type": "code", "execution_count": null, "id": "be3ac3dd", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 36 }, "id": "be3ac3dd", "outputId": "b08ceaff-8060-4640-be48-435656007e7c" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "'1.21.6'" ], "application/vnd.google.colaboratory.intrinsic+json": { "type": "string" } }, "metadata": {}, "execution_count": 2 } ], "source": [ "np.__version__" ] }, { "cell_type": "markdown", "id": "adce9d0b", "metadata": { "id": "adce9d0b" }, "source": [ "### Getting the data" ] }, { "cell_type": "markdown", "id": "563f5833", "metadata": { "id": "563f5833" }, "source": [ "For this homework, we'll use the Car price dataset. Download it from here. \n", "\n", "You can do it with wget:\n", "```bash\n", "wget https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv\n", "```\n", "Or just open it with your browser and click \"Save as...\".\n", "\n", "Now read it with Pandas." ] }, { "cell_type": "code", "execution_count": null, "id": "4e9364c6", "metadata": { "id": "4e9364c6" }, "outputs": [], "source": [ "data = pd.read_csv(\"https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv\")" ] }, { "cell_type": "markdown", "id": "3787858f", "metadata": { "id": "3787858f" }, "source": [ "### Question 2" ] }, { "cell_type": "markdown", "id": "abf0a8ef", "metadata": { "id": "abf0a8ef" }, "source": [ "How many records are in the dataset?\n", "\n", "Here you need to specify the number of rows." ] }, { "cell_type": "code", "execution_count": null, "id": "53c3bb22", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "53c3bb22", "outputId": "f312d0d8-911f-413d-896e-fcc89a59c9ca" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "11914" ] }, "metadata": {}, "execution_count": 4 } ], "source": [ "data.shape[0] # alternative is len(data.index)" ] }, { "cell_type": "markdown", "id": "c5c5a015", "metadata": { "id": "c5c5a015" }, "source": [ "### Question 3" ] }, { "cell_type": "markdown", "id": "215bb0f0", "metadata": { "id": "215bb0f0" }, "source": [ "Who are the most frequent car manufacturers (top-3) according to the dataset?" ] }, { "cell_type": "code", "source": [ "data['Make'].value_counts().head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "u3aaRkGy7QiD", "outputId": "bacee4d9-ae98-4470-a18b-d15814720125" }, "id": "u3aaRkGy7QiD", "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Chevrolet 1123\n", "Ford 881\n", "Volkswagen 809\n", "Toyota 746\n", "Dodge 626\n", "Name: Make, dtype: int64" ] }, "metadata": {}, "execution_count": 5 } ] }, { "cell_type": "markdown", "source": [ "### Question 4" ], "metadata": { "id": "Gs-F0NGmT1rY" }, "id": "Gs-F0NGmT1rY" }, { "cell_type": "markdown", "source": [ "What's the number of unique Audi car models in the dataset?" ], "metadata": { "id": "YEL7kG-qT40Z" }, "id": "YEL7kG-qT40Z" }, { "cell_type": "code", "source": [ "data[data['Make'] == 'Audi']['Model'].nunique()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "PqW9C9MK2oL_", "outputId": "3db57d44-b861-4ce5-85b3-3fbb2412f727" }, "id": "PqW9C9MK2oL_", "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "34" ] }, "metadata": {}, "execution_count": 6 } ] }, { "cell_type": "markdown", "id": "1ede2dba", "metadata": { "id": "1ede2dba" }, "source": [ "### Question 5" ] }, { "cell_type": "markdown", "source": [ "How many columns in the dataset have missing values?" ], "metadata": { "id": "lmCmA9GIUPU0" }, "id": "lmCmA9GIUPU0" }, { "cell_type": "code", "source": [ "data.isnull().sum()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "IQ8dlAmw4ynp", "outputId": "48b92886-fe77-48c9-d451-9d6838011894" }, "id": "IQ8dlAmw4ynp", "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Make 0\n", "Model 0\n", "Year 0\n", "Engine Fuel Type 3\n", "Engine HP 69\n", "Engine Cylinders 30\n", "Transmission Type 0\n", "Driven_Wheels 0\n", "Number of Doors 6\n", "Market Category 3742\n", "Vehicle Size 0\n", "Vehicle Style 0\n", "highway MPG 0\n", "city mpg 0\n", "Popularity 0\n", "MSRP 0\n", "dtype: int64" ] }, "metadata": {}, "execution_count": 7 } ] }, { "cell_type": "markdown", "source": [ "We can see that 5 columns have missing values.\n", "\n", "We can also calculate it in one line:" ], "metadata": { "id": "fBGCGXluUdU7" }, "id": "fBGCGXluUdU7" }, { "cell_type": "code", "source": [ "(data.isnull().sum() != 0).sum()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XXS-4Eav5fX2", "outputId": "0b61328e-9e9e-457a-c223-a31975cc75c5" }, "id": "XXS-4Eav5fX2", "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "5" ] }, "metadata": {}, "execution_count": 8 } ] }, { "cell_type": "markdown", "id": "b8d3c661", "metadata": { "id": "b8d3c661" }, "source": [ "### Question 6" ] }, { "cell_type": "markdown", "id": "46ecb87b", "metadata": { "id": "46ecb87b" }, "source": [ "\n", "\n", "1. Find the median value of \"Engine Cylinders\" column in the dataset.\n", "2. Next, calculate the most frequent value of the same \"Engine Cylinders\". \n", "3. Use the `fillna` method to fill the missing values in \"Engine Cylinders\" with the most frequent value from the previous step.\n", "4. Now, calculate the median value of \"Engine Cylinders\" once again.\n", "\n", "Has it changed?" ] }, { "cell_type": "code", "source": [ "data['Engine Cylinders'].value_counts()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "82besVeW3IKa", "outputId": "17d636da-d9d4-4fe5-ce7a-3db52e739486" }, "id": "82besVeW3IKa", "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "4.0 4752\n", "6.0 4489\n", "8.0 2031\n", "12.0 230\n", "5.0 225\n", "10.0 68\n", "0.0 56\n", "3.0 30\n", "16.0 3\n", "Name: Engine Cylinders, dtype: int64" ] }, "metadata": {}, "execution_count": 9 } ] }, { "cell_type": "code", "source": [ "median_engine_cyl = data['Engine Cylinders'].median()\n", "median_engine_cyl" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "QG0ooQpm31z2", "outputId": "ee0ab339-7d81-47ab-bdc0-d61a01639779" }, "id": "QG0ooQpm31z2", "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "6.0" ] }, "metadata": {}, "execution_count": 10 } ] }, { "cell_type": "code", "execution_count": null, "id": "81644140", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "81644140", "outputId": "3d4fa383-2ca3-420d-ae61-1b4221601674" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "4.0" ] }, "metadata": {}, "execution_count": 11 } ], "source": [ "mode_engine_cyl = data['Engine Cylinders'].mode()[0]\n", "mode_engine_cyl" ] }, { "cell_type": "code", "execution_count": null, "id": "2302ad09", "metadata": { "id": "2302ad09", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "ea6b0f88-eb44-4d56-f234-4d4eb99d834b" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "6.0" ] }, "metadata": {}, "execution_count": 12 } ], "source": [ "data['Engine Cylinders'].fillna(mode_engine_cyl).median()" ] }, { "cell_type": "markdown", "source": [ "No, it's left the same." ], "metadata": { "id": "duf3vnEYm4yJ" }, "id": "duf3vnEYm4yJ" }, { "cell_type": "markdown", "id": "1214682d", "metadata": { "id": "1214682d" }, "source": [ "### Question 7" ] }, { "cell_type": "markdown", "id": "9a000f4e", "metadata": { "id": "9a000f4e" }, "source": [ "1. Select all the \"Lotus\" cars from the dataset.\n", "2. Select only columns \"Engine HP\", \"Engine Cylinders\".\n", "3. Now drop all duplicated rows using `drop_duplicates` method (you should get a dataframe with 9 rows).\n", "4. Get the underlying NumPy array. Let's call it `X`.\n", "5. Compute matrix-matrix multiplication between the transpose of `X` and `X`. To get the transpose, use `X.T`. Let's call the result `XTX`.\n", "6. Invert `XTX`.\n", "7. Create an array `y` with values `[1100, 800, 750, 850, 1300, 1000, 1000, 1300, 800]`.\n", "8. Multiply the inverse of `XTX` with the transpose of `X`, and then multiply the result by `y`. Call the result `w`.\n", "9. What's the value of the first element of `w`?" ] }, { "cell_type": "code", "execution_count": null, "id": "3002ec54", "metadata": { "id": "3002ec54", "outputId": "104561a8-256e-490c-c7f2-56ecd074dae5", "colab": { "base_uri": "https://localhost:8080/", "height": 332 } }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Engine HP Engine Cylinders\n", "3912 189.0 4.0\n", "3913 218.0 4.0\n", "3918 217.0 4.0\n", "4216 350.0 8.0\n", "4257 400.0 6.0\n", "4259 276.0 6.0\n", "4262 345.0 6.0\n", "4292 257.0 4.0\n", "4293 240.0 4.0" ], "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Engine HPEngine Cylinders
3912189.04.0
3913218.04.0
3918217.04.0
4216350.08.0
4257400.06.0
4259276.06.0
4262345.06.0
4292257.04.0
4293240.04.0
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 13 } ], "source": [ "lotus_df = data[data['Make'] == 'Lotus']\n", "lotus_df = lotus_df[['Engine HP', 'Engine Cylinders']]\n", "lotus_df = lotus_df.drop_duplicates()\n", "lotus_df" ] }, { "cell_type": "code", "source": [ "X = lotus_df.to_numpy()\n", "XTX = X.T @ X\n", "XTX_inv = np.linalg.inv(XTX)\n", "XTX_inv" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "gOKb01VxqqL0", "outputId": "3ea94af3-2927-42ba-fd73-ead0daaed7d7" }, "id": "gOKb01VxqqL0", "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array([[ 5.53084235e-05, -2.94319825e-03],\n", " [-2.94319825e-03, 1.60588447e-01]])" ] }, "metadata": {}, "execution_count": 14 } ] }, { "cell_type": "code", "execution_count": null, "id": "e0a2e43c", "metadata": { "id": "e0a2e43c" }, "outputs": [], "source": [ "y = np.array([1100, 800, 750, 850, 1300, 1000, 1000, 1300, 800])" ] }, { "cell_type": "code", "execution_count": null, "id": "2449151d", "metadata": { "id": "2449151d" }, "outputs": [], "source": [ "w = (XTX_inv @ X.T) @ y" ] }, { "cell_type": "code", "execution_count": null, "id": "c5e7fc75", "metadata": { "id": "c5e7fc75", "outputId": "ccb80238-ae8c-4210-d3f4-cba73ba65af8", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "4.594944810094551" ] }, "metadata": {}, "execution_count": 17 } ], "source": [ "w[0]" ] }, { "cell_type": "markdown", "source": [ "> **Note**: we just implemented normal equation\n", "\n", "\n", "$$w = (X^T X)^{-1} X^T y$$\n", "\n", "\n", "We'll talk about it more in the next week (Machine Learning for Regression)" ], "metadata": { "id": "wKnwSNmjn2gT" }, "id": "wKnwSNmjn2gT" } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" }, "colab": { "provenance": [], "collapsed_sections": [] } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: cohorts/2022/02-regression/homework.md ================================================ ## Homework > **Solution**: > * [Notebook](homework_2.ipynb) > * [Video](https://www.youtube.com/watch?v=mWJwXyibqW8&list=PL3MmuxUbc_hL5QBBEyKUXKuTNx-3cTpKs) > Note: sometimes your answer doesn't match one of the options exactly. That's fine. Select the option that's closest to your solution. If it's exactly in between two options, select the higher value. ### Dataset In this homework, we will use the California Housing Prices from [Kaggle](https://www.kaggle.com/datasets/camnugent/california-housing-prices). Here's a wget-able [link](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv): ```bash wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv ``` The goal of this homework is to create a regression model for predicting housing prices (column `'median_house_value'`). ### EDA * Load the data. * Look at the `median_house_value` variable. Does it have a long tail? ### Features For the rest of the homework, you'll need to use only these columns: * `'latitude'`, * `'longitude'`, * `'housing_median_age'`, * `'total_rooms'`, * `'total_bedrooms'`, * `'population'`, * `'households'`, * `'median_income'`, * `'median_house_value'` Select only them. ### Question 1 Find a feature with missing values. How many missing values does it have? - 207 - 307 - 408 - 508 ### Question 2 What's the median (50% percentile) for variable 'population'? - 1133 - 1122 - 1166 - 1188 ### Split the data * Shuffle the initial dataset, use seed `42`. * Split your data in train/val/test sets, with 60%/20%/20% distribution. * Make sure that the target value ('median_house_value') is not in your dataframe. * Apply the log transformation to the median_house_value variable using the `np.log1p()` function. ### Question 3 * We need to deal with missing values for the column from Q1. * We have two options: fill it with 0 or with the mean of this variable. * Try both options. For each, train a linear regression model without regularization using the code from the lessons. * For computing the mean, use the training only! * Use the validation dataset to evaluate the models and compare the RMSE of each option. * Round the RMSE scores to 2 decimal digits using `round(score, 2)` * Which option gives better RMSE? Options: - With 0 - With mean - Both are equally good ### Question 4 * Now let's train a regularized linear regression. * For this question, fill the NAs with 0. * Try different values of `r` from this list: `[0, 0.000001, 0.0001, 0.001, 0.01, 0.1, 1, 5, 10]`. * Use RMSE to evaluate the model on the validation dataset. * Round the RMSE scores to 2 decimal digits. * Which `r` gives the best RMSE? If there are multiple options, select the smallest `r`. Options: - 0 - 0.000001 - 0.001 - 0.0001 ### Question 5 * We used seed 42 for splitting the data. Let's find out how selecting the seed influences our score. * Try different seed values: `[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]`. * For each seed, do the train/validation/test split with 60%/20%/20% distribution. * Fill the missing values with 0 and train a model without regularization. * For each seed, evaluate the model on the validation dataset and collect the RMSE scores. * What's the standard deviation of all the scores? To compute the standard deviation, use `np.std`. * Round the result to 3 decimal digits (`round(std, 3)`) > Note: Standard deviation shows how different the values are. > If it's low, then all values are approximately the same. > If it's high, the values are different. > If standard deviation of scores is low, then our model is *stable*. Options: - 0.16 - 0.00005 - 0.005 - 0.15555 ### Question 6 * Split the dataset like previously, use seed 9. * Combine train and validation datasets. * Fill the missing values with 0 and train a model with `r=0.001`. * What's the RMSE on the test dataset? Options: - 0.35 - 0.135 - 0.450 - 0.245 ## Submit the results - Submit your results here: https://forms.gle/WCVb4KMNsgbkuJtr6 - If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. - You can submit your solution multiple times. In this case, only the last submission will be used ## Deadline The deadline for submitting is, 19 September 2022, 23:00 CET. After that, the form will be closed. ================================================ FILE: cohorts/2022/02-regression/homework_2.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": { "id": "1RP5ocnmvaNJ" }, "source": [ "**INITIALIZATION:**" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "9UkFwRCfs0oo" }, "outputs": [], "source": [ "#@ IMPORTING LIBRARIES AND DEPENDENCIES:\n", "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from sklearn.linear_model import LinearRegression" ] }, { "cell_type": "markdown", "metadata": { "id": "XAWt3FaGvi2V" }, "source": [ "**IMPORTING DATASET:**" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "id": "qZ3ySstmvWhk" }, "outputs": [], "source": [ "#@ IMPORTING DATASET:\n", "PATH = \"./housing.csv\"\n", "select_cols = [\"longitude\", \"latitude\", \"housing_median_age\", \"total_rooms\", \"total_bedrooms\", \"population\", \"households\", \n", " \"median_income\", \"median_house_value\"]\n", "data = pd.read_csv(PATH, usecols=select_cols)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "jQ_W08Z5xcdr", "outputId": "6111a570-a2c9-491c-afbc-db1396070970" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(20640, 9)\n" ] } ], "source": [ "#@ INSPECTING DATAFRAME:\n", "print(data.shape)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 427 }, "id": "CCXyC6J-xixG", "outputId": "0856f585-0283-439d-ec79-7f734ba0b03f" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_value
0-122.2337.8841.0880.0129.0322.0126.08.3252452600.0
1-122.2237.8621.07099.01106.02401.01138.08.3014358500.0
2-122.2437.8552.01467.0190.0496.0177.07.2574352100.0
3-122.2537.8552.01274.0235.0558.0219.05.6431341300.0
4-122.2537.8552.01627.0280.0565.0259.03.8462342200.0
5-122.2537.8552.0919.0213.0413.0193.04.0368269700.0
6-122.2537.8452.02535.0489.01094.0514.03.6591299200.0
7-122.2537.8452.03104.0687.01157.0647.03.1200241400.0
8-122.2637.8442.02555.0665.01206.0595.02.0804226700.0
9-122.2537.8452.03549.0707.01551.0714.03.6912261100.0
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n", "0 -122.23 37.88 41.0 880.0 129.0 \n", "1 -122.22 37.86 21.0 7099.0 1106.0 \n", "2 -122.24 37.85 52.0 1467.0 190.0 \n", "3 -122.25 37.85 52.0 1274.0 235.0 \n", "4 -122.25 37.85 52.0 1627.0 280.0 \n", "5 -122.25 37.85 52.0 919.0 213.0 \n", "6 -122.25 37.84 52.0 2535.0 489.0 \n", "7 -122.25 37.84 52.0 3104.0 687.0 \n", "8 -122.26 37.84 42.0 2555.0 665.0 \n", "9 -122.25 37.84 52.0 3549.0 707.0 \n", "\n", " population households median_income median_house_value \n", "0 322.0 126.0 8.3252 452600.0 \n", "1 2401.0 1138.0 8.3014 358500.0 \n", "2 496.0 177.0 7.2574 352100.0 \n", "3 558.0 219.0 5.6431 341300.0 \n", "4 565.0 259.0 3.8462 342200.0 \n", "5 413.0 193.0 4.0368 269700.0 \n", "6 1094.0 514.0 3.6591 299200.0 \n", "7 1157.0 647.0 3.1200 241400.0 \n", "8 1206.0 595.0 2.0804 226700.0 \n", "9 1551.0 714.0 3.6912 261100.0 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING DATAFRAME:\n", "data.head(10)" ] }, { "cell_type": "markdown", "metadata": { "id": "g3Xwa_AJx-AF" }, "source": [ "**EXPLORATORY DATA ANALYSIS:**" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "KVJGwsquxpw1", "outputId": "5ea93126-5e5a-4ef3-a921-467b5a246b38" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 20640 entries, 0 to 20639\n", "Data columns (total 9 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 longitude 20640 non-null float64\n", " 1 latitude 20640 non-null float64\n", " 2 housing_median_age 20640 non-null float64\n", " 3 total_rooms 20640 non-null float64\n", " 4 total_bedrooms 20433 non-null float64\n", " 5 population 20640 non-null float64\n", " 6 households 20640 non-null float64\n", " 7 median_income 20640 non-null float64\n", " 8 median_house_value 20640 non-null float64\n", "dtypes: float64(9)\n", "memory usage: 1.4 MB\n" ] } ], "source": [ "#@ DATAFRAME INFORMATION:\n", "data.info()" ] }, { "cell_type": "markdown", "metadata": { "id": "RFHfkRM9zxJ-" }, "source": [ "- Answer for Questions 1: \"total_bedrooms\" = 207" ] }, { "cell_type": "markdown", "metadata": { "id": "VQKQa5XZ0wAO" }, "source": [ "**NULL VALUES CHECKER:**" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "fSX3EYwHyW_V", "outputId": "594b146e-7a6e-4ec7-a2e1-f80391b13b26" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "total_bedrooms 1.002907\n", "dtype: float64\n" ] } ], "source": [ "#@ INSPECTING NULL VALUES:\n", "incomplete = data.isna().mean()*100\n", "print(incomplete[incomplete > 0])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "egrG0MAr0W8S", "outputId": "e46e20de-4ff3-443e-9057-63edc08eb65d" }, "outputs": [ { "data": { "text/plain": [ "longitude False\n", "latitude False\n", "housing_median_age False\n", "total_rooms False\n", "total_bedrooms True\n", "population False\n", "households False\n", "median_income False\n", "median_house_value False\n", "dtype: bool" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING NULL VALUES:\n", "data.isna().any()" ] }, { "cell_type": "markdown", "metadata": { "id": "QAieBTSC06zL" }, "source": [ "**DUPLICATES:**" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "GrWi3uy40gLg", "outputId": "700c43e6-16e1-4f04-dded-8ac4962cc121" }, "outputs": [ { "data": { "text/plain": [ "False 20640\n", "dtype: int64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING DUPLICATES:\n", "data.duplicated().value_counts()" ] }, { "cell_type": "markdown", "metadata": { "id": "MxFu2alh1R4Y" }, "source": [ "**DESCRIPTIVE ANALYSIS:**" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 396 }, "id": "VjZYolWL1PCq", "outputId": "b17bccb8-4212-4513-dcd2-60ddcf706d2b" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanstdmin0%10%25%50%75%90%95%99%max
longitude20640.0-119.5697042.003532-124.3500-124.3500-122.2900-121.8000-118.4900-118.01000-117.25000-117.080000-116.29000-114.3100
latitude20640.035.6318612.13595232.540032.540033.630033.930034.260037.7100038.4800038.96000040.6261041.9500
housing_median_age20640.028.63948612.5855581.00001.000013.000018.000029.000037.0000046.0000052.00000052.0000052.0000
total_rooms20640.02635.7630812181.6152522.00002.0000941.00001447.75002127.00003148.000004651.500006213.20000011212.1100039320.0000
total_bedrooms20433.0537.870553421.3850701.00001.0000198.0000296.0000435.0000647.00000965.000001275.4000002221.360006445.0000
population20640.01425.4767441132.4621223.00003.0000510.0000787.00001166.00001725.000002566.000003288.0000005805.8300035682.0000
households20640.0499.539680382.3297531.00001.0000184.0000280.0000409.0000605.00000890.000001162.0000001982.660006082.0000
median_income20640.03.8706711.8998220.49990.49991.90382.56343.53484.743256.159217.30030510.5965415.0001
median_house_value20640.0206855.816909115395.61587414999.000014999.000082300.0000119600.0000179700.0000264725.00000376600.00000489810.000000500001.00000500001.0000
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " count mean std min \\\n", "longitude 20640.0 -119.569704 2.003532 -124.3500 \n", "latitude 20640.0 35.631861 2.135952 32.5400 \n", "housing_median_age 20640.0 28.639486 12.585558 1.0000 \n", "total_rooms 20640.0 2635.763081 2181.615252 2.0000 \n", "total_bedrooms 20433.0 537.870553 421.385070 1.0000 \n", "population 20640.0 1425.476744 1132.462122 3.0000 \n", "households 20640.0 499.539680 382.329753 1.0000 \n", "median_income 20640.0 3.870671 1.899822 0.4999 \n", "median_house_value 20640.0 206855.816909 115395.615874 14999.0000 \n", "\n", " 0% 10% 25% 50% \\\n", "longitude -124.3500 -122.2900 -121.8000 -118.4900 \n", "latitude 32.5400 33.6300 33.9300 34.2600 \n", "housing_median_age 1.0000 13.0000 18.0000 29.0000 \n", "total_rooms 2.0000 941.0000 1447.7500 2127.0000 \n", "total_bedrooms 1.0000 198.0000 296.0000 435.0000 \n", "population 3.0000 510.0000 787.0000 1166.0000 \n", "households 1.0000 184.0000 280.0000 409.0000 \n", "median_income 0.4999 1.9038 2.5634 3.5348 \n", "median_house_value 14999.0000 82300.0000 119600.0000 179700.0000 \n", "\n", " 75% 90% 95% 99% \\\n", "longitude -118.01000 -117.25000 -117.080000 -116.29000 \n", "latitude 37.71000 38.48000 38.960000 40.62610 \n", "housing_median_age 37.00000 46.00000 52.000000 52.00000 \n", "total_rooms 3148.00000 4651.50000 6213.200000 11212.11000 \n", "total_bedrooms 647.00000 965.00000 1275.400000 2221.36000 \n", "population 1725.00000 2566.00000 3288.000000 5805.83000 \n", "households 605.00000 890.00000 1162.000000 1982.66000 \n", "median_income 4.74325 6.15921 7.300305 10.59654 \n", "median_house_value 264725.00000 376600.00000 489810.000000 500001.00000 \n", "\n", " max \n", "longitude -114.3100 \n", "latitude 41.9500 \n", "housing_median_age 52.0000 \n", "total_rooms 39320.0000 \n", "total_bedrooms 6445.0000 \n", "population 35682.0000 \n", "households 6082.0000 \n", "median_income 15.0001 \n", "median_house_value 500001.0000 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INITIALIZING DESCRIPTIVE ANALYSIS:\n", "data.describe(percentiles=[.0, .25, .5, .75, .9, .95, .99, .1]).T" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "he_Rn01H1b8-", "outputId": "64924146-11b0-41b9-ad73-eb3ef887eca5" }, "outputs": [ { "data": { "text/plain": [ "1166.0" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING MEDIAN:\n", "np.median(data['population'])" ] }, { "cell_type": "markdown", "metadata": { "id": "B9ixoCCY1sqP" }, "source": [ "- Answer for Question 2: \"population\" = 1166.0" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 575 }, "id": "ZnG-XO6_1o7P", "outputId": "092b100e-95b3-4bf1-e827-5e179d22ccc0" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABC0AAALICAYAAABb1QoAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdedzldV338dc7UMQNVHBi00HFCh2lmtSWu3uMNFyxuyKIFBSl7jStpnQwS3OLSnJJ0xsV0TKWMpOEUlyutAVU0GQxc0SUGVlUFhkwdPBz//H7Xnjm4tqvc53tej0fj/OYc76/3/md7+f6nfme3/mc75KqQpIkSZIkadR837ArIEmSJEmSNBuTFpIkSZIkaSSZtJAkSZIkSSPJpIUkSZIkSRpJJi0kSZIkSdJIMmkhSZIkSZJGkkkLjZQkVyb52VV+jR1JHtTH41WSh/TreJI0ypbbTif5X0k+38d6bEqyrV/Hk6TZDOLadMbr9fU6ddB6r4uTvCXJHwy7Thp/uw+7AtKgVdU9p+8nOR3YVlUvGV6NJGnyJCngkKraClBVHwd+oGf7lcCzq+pDw6mhJI2e3uvUcVdVvz7sOmgy2NNCkiRJkiSNJJMWGklJ9kjyuiRfbbfXJdmjbduUZFuSzUmuS3J1kmf2PPd+Sf4xyTeTfDLJK5P8a8/2SvKQJCcCxwIvbF3x/rF3e8/+pyd5Zc/j32uv+dUkz5ql3q9J8pUk17ZucXuu3l9KkoYjyaOS/EeSG1ub+MYkd23bPtZ2+8/Wvv5y73COJH8FPAD4x7b9hbMN9+jtlp1kz9Ye35DkcuDHZuy7f5L3JPlaki8lef5q/w0krRmHJflskpuSnJXkbgBJnpNka5Lrk5yTZP9Wvr5dT97Rqz3JVJJnt/sPSfIv7XhfT3JWz369wytOT/KmJOcmuTnJhUke3LPv45N8vh3nL9sxnz1fIEmOT/JvSV7b2u8rkvxEK7+qXVsf17P/vNe2C1wX33ENneQ+Sd7f2ugb2v0DZ/x9XtHqdnOSDybZZ6ETk+Rvk1zT/gYfS/Kwnm0LfSf4wSTnt/P3+SRHLfR6Gg6TFhpVvw88BjgMeCTwKKB3CMf3A3sBBwAnAG9Kcp+27U3ALW2f49rtTqrqVODdwJ9W1T2r6ikLVSrJEcDvAo8DDgFmjnE8GXhoq/dDWv3+cKHjStIYuh34bWAf4MeBw4HfAKiqn277PLK1r2f1PrGqng58BXhK2/6ni3i9lwIPbrefo6dtT/J9wD8C/0nX7h4O/FaSn1t+eJJ0h6OAI4CDgUcAxyf5GeCP27b9gC8DZy7yeK8APgjcBzgQ+It59j0a+KO271bgVQDtC/3fAScB9wM+D/zEIl//0cBn2/P+ptX7x+iuXX8VeGOS6WEqc17bLuK6uNf3Ae8AHkiXtP4W8MYZ+/wK8Ezg/sBd27EX8k/tte8PXEx3bT9tzu8ESe4BnN/ivz/d3/kvkxy6iNfUgJm00Kg6Fnh5VV1XVV+ja6yf3rP9O237d6rqPGAH8ANJdgN+AXhpVd1aVZcD7+xjvY4C3lFVl1bVLcDLpjckCXAi8NtVdX1V3Qy8mq4RlKSJUlUXVdUFVbWzqq4E/h/wv1fxJY8CXtXa16uAN/Rs+zFg36p6eVV9u6quAN6K7a+k/nhDVX21qq6nS5AeRnetelpVXVxVt9ElD348yfpFHO87dF/e96+q/6mqf51n3/dW1SeqaifdF/LDWvkTgcuq6u/btjcA1ywyni9V1Tuq6nbgLOAguuvq26rqg8C3gYcs4tp2zuvimarqG1X1nnZ9fjNd8mXmZ8Y7quq/q+pbwNk9sc6pqk6rqpvbOXgZ8Mgkey3iO8GTgSvb32FnVX0aeA/wSwu9pgbPiTg1qvany1hP+3Irm/aN1kBPuxW4J7Av3fv6qp5tvff7Ua+LZtRr2r7A3YGLujYegAC79fH1JWkkJHko8OfARrq2b3d2bR/7bX92bc97298HAvsnubGnbDfg46tYH0lrR28y4Fa69uh+dL/sA1BVO5J8g64nwvYFjvdCut4Wn0hyA3BKVZ22yNee7gGxS5tYVTVziN08ru25/632/Jll09fV813bznddvIskdwdeS9djZbp39L2S7NaSJzB3rHMdcze65Mcvtbp+t23aB9iT+b8TPBB49IzPjd2Bv5rvNTUc9rTQqPoqXWMy7QGtbCFfA3bSdbWbdtA8+9csZbfSNdDTvr/n/tUzjveAnvtfp2vkH1ZVe7fbXpM0C7Qk9Xgz8F90K4TcG3gx3cXsYs1sf2+hp+1tF6P79myfr/29iu6Xw717bveqqicuoT6StBS7XKu24Qb3o0tY3NKKZ72erKprquo5VbU/8Gt0wxIewtJcTc/1busVceDcuy/LQte287XLM22mW0Hq0e0zY3oY4VI+N2b6FeBIumEpewHre4650HeCq4B/mfG5cc+q+r8rqI9WiUkLjaozgJck2beN2ftD4K8XelLL1P498LIkd0/yg8Az5nnKtcDMtbA/A/xKkt3aWL3ermtn041jPLRljF/a89rfpeuO/Nok9wdIcoBjqiVNqHsB3wR2tLZ25oXebO3rfNv/G7hbkicluQvdPEZ79Gw/GzipTeZ2IPCbPds+Adyc5EXpJuzcLcnDk+wyWack9dEZwDOTHJZusvhXAxdW1ZVtaPN24Fdbe/Qsuvl4AEjySz2TUN5Al8T9LktzLrAhydPSTfj5XHb9oW3FFnFtO+d18SzuRZcAuTHJfRfYd7HuBdwGfIMuQfTqnrov9J3g/cBDkzw9yV3a7ceS/FAf6qU+M2mhUfVK4FN0kwRdQtf97pXzPuN7nkeXbb2GrovXGXQN2mzeDhzaZk/+h1b2AuApwI104xWny6mqfwJeB3yEbjKkj8w43ota+QVJvgl8iC6rLEmT5nfpfuW6me6i9qwZ218GvLO1r7PNyP7HdMnpG5P8blXdRDeR59v43i+VvV2d/4iu6/GX6Cawu6MLb7s4fTLd+Ocv0f06+Da6zwJJ6ruq+hDwB3TzIFxNl5TonUfnOcDv0X2hfhjw7z3bfgy4MMkO4BzgBW0unqW8/tfphkX8aXuNQ+munee65l2uOa9tF3Fd3Ot1dEM2vg5cAPxzH+r2LrrPhe3A5e24veb8TtDm1Xg83Tn7atvnT9g1Wa4RkarZesdLkyPJnwDfX1WzriIiSZIkjbO2itI24Niq+uiw6zOK/E4wvuxpoYnT1lx+RDqPolsS9b3DrpckSZLUL0l+LsnebXjK9LxCM3sbrFl+J5gcJi00ie5FN4btFrruyqcA7xtqjSRJkqT++nHgi3RDLp4CPK2qvpXkLUl2zHJ7y3Cru3RJjp0jlssW8XS/E0yIBYeHJDmNbpzodVX18BnbNgOvoVsb/ett1trX060bfCtwfFVd3PY9jm5SLYBXVlXvOrmSJEmSJEm7WExPi9Pp1tPdRZKD6CYv+UpP8ROAQ9rtRLrl0OiZIfbRwKOAlya5D5IkSZIkSXPYfaEdqupjSdbPsum1wAvZtYvNkcC7quu+cUEbY7UfsAk4v6quB0hyPl0i5Iz5Xnufffap9etne+n+uOWWW7jHPe6xascfJmMbT8Y2nuaK7aKLLvp6Ve07hCqtitVuk0fBJL9PZzLWybNW4oSlxzpp7TEsrk2e1PeEcY0X4xo/qx3bUtvkBZMWs0lyJLC9qv6zGxFyhwOAq3oeb2tlc5XPduwT6XppsG7dOl7zmtcsp4qLsmPHDu55z3uu2vGHydjGk7GNp7lie+xjH/vlIVRn1axfv55PfepTw67GqpqammLTpk3DrsZAGOvkWStxwtJjTTJR7TEsrk2e1PeEcY0X4xo/qx3bUtvkJSctktydbnbaxy/1uYtRVacCpwJs3LixVvOP5RttPBnbeDI2SZIkSUu1nNVDHgwcDPxnkiuBA4GLk3w/sB04qGffA1vZXOWSJEmSJEmzWnLSoqouqar7V9X6qlpPN9TjR6rqGuAc4BltLdzHADdV1dXAB4DHJ7lPm4Dz8a1MkiRJkiRpVgsmLZKcAfwH8ANJtiU5YZ7dzwOuALYCbwV+A6BNwPkK4JPt9vLpSTklSZIkSZJms5jVQ45ZYPv6nvsFPHeO/U4DTlti/SRJkiRJ0hq1nDktJEmSJEmSVp1JC0mSJEmSNJJMWkiSJEmSpJG04JwWkvpj/ZZz77h/5clPGmJNJM3H/6uSJElzm75WGtR1kj0tJEmSJEnSSDJpIUmSJEmSRpJJC0mSJEmSNJJMWkjSGElyWpLrklzaU3ZWks+025VJPtPK1yf5Vs+2t/Q850eTXJJka5I3JMkw4pEkSZLm40SckjReTgfeCLxruqCqfnn6fpJTgJt69v9iVR02y3HeDDwHuBA4DzgC+KdVqK8kSZK0bPa0kKQxUlUfA66fbVvrLXEUcMZ8x0iyH3DvqrqgqoouAfK0ftdVkiRJWil7WkjS5PhfwLVV9YWesoOTfBr4JvCSqvo4cACwrWefba3sTpKcCJwIsG7dOqamplaj3iNjx44dbN5w+x2PJzneHTt2THR8vdZKrGslThidWJOcBjwZuK6qHt7K/gx4CvBt4IvAM6vqxrbtJOAE4Hbg+VX1gVZ+BPB6YDfgbVV18qBjkaRRZdJCkibHMezay+Jq4AFV9Y0kPwr8Q5KHLeWAVXUqcCrAxo0ba9OmTf2q60iamprilH+95Y7HVx67aXiVWWVTU1NM+vmctlZiXStxwkjFejozhuwB5wMnVdXOJH8CnAS8KMmhwNHAw4D9gQ8leWh7zpuAx9ElkT+Z5JyqunxAMUjSSHN4iCRNgCS7A/8HOGu6rKpuq6pvtPsX0f3i91BgO3Bgz9MPbGWSpCWYbcheVX2wqna2hxfwvfb2SODM1jZ/CdgKPKrdtlbVFVX1beDMtq8kCXtaSNKk+Fngv6rqjmEfSfYFrq+q25M8CDgEuKKqrk/yzSSPoZuI8xnAXwyl1pI02Z7F95LJB9AlMab1Ds27akb5o2c72FKH7I3KMJp+M67xYlzjZ6HYNm/o8rKDit+khSSNkSRnAJuAfZJsA15aVW+n63I8cwLOnwZenuQ7wHeBX6+q6V8Ef4OuW/OedKuGuHKIJPVRkt8HdgLv7tcxlzpkb4SG0fSVcY0X4xo/C8V2/JZzgcENozVpIUljpKqOmaP8+FnK3gO8Z479PwU8vK+VkyQBkOR4ugk6D2+rNEE3DO+gnt16h+bNVS5Ja55zWkiSJEl90lYCeSHw1Kq6tWfTOcDRSfZIcjDdkL1PAJ8EDklycJK70vWcO2fQ9ZakUWVPC0mSJGkZZhuyR7dayB7A+UkALqiqX6+qy5KcDVxON2zkuVV1ezvO84AP0C15elpVXTbwYCRpRC2YtHD9aUmSJOnO5hiy9/Z59n8V8KpZys8Dzutj1SRpYixmeMjpwBEzys4HHl5VjwD+my6jzIz1p48A/jLJbkl2o1t/+gnAocAxbV9JkiRJkqRZLZi0cP1pSZIkSZI0DP2Y02Ko60+vxFpeW3ecjWts0+sZw9xrGo9rbIthbJIkSZKWakVJi1FYf3ol1vLauuNsXGObXs8Y5l7TeFxjWwxjkyRJkrRUy05auP60JEmSJElaTYuZiPNOXH9akiRJkiSttsUseer601Kfre8dKnLyk4ZYE0mSJEkaXQsmLVx/WpIkSZIkDcOyhodIkjRp1m85l0u23zTsakiSJKmHSQtJkiRJkjSSTFpIkiRJkqSRZNJCkiRJkiSNJJMWkiRJkiRpJC24eoik5etd2lTqhySnAU8Grquqh7eylwHPAb7WdntxW7GJJCcBJwC3A8+vqg+08iOA19MtQ/22qjp5kHFIkiRJi2FPC0kaL6cDR8xS/tqqOqzdphMWhwJHAw9rz/nLJLsl2Q14E/AE4FDgmLavJEmSNFLsaSFJY6SqPpZk/SJ3PxI4s6puA76UZCvwqLZta1VdAZDkzLbv5X2uriRJkrQiJi0kaTI8L8kzgE8Bm6vqBuAA4IKefba1MoCrZpQ/eraDJjkROBFg3bp1TE1N9bnaw3XJ9pvuuL95A6zbEzZv2HlH2aTF22vHjh0THV+vtRLrWokT1laskrTWmbSQpPH3ZuAVQLV/TwGe1Y8DV9WpwKkAGzdurE2bNvXjsCPj+BnzzmzesJNTLvneR+OVx24acI0GZ2pqikk7n3NZK7GulThhbcUqSWudSQtJGnNVde30/SRvBd7fHm4HDurZ9cBWxjzlkiRJ0shwIk5JGnNJ9ut5+PPApe3+OcDRSfZIcjBwCPAJ4JPAIUkOTnJXusk6zxlknSVJkqTFMGkhSWMkyRnAfwA/kGRbkhOAP01ySZLPAo8Ffhugqi4DzqabYPOfgedW1e1VtRN4HvAB4HPA2W1fSdISJDktyXVJLu0pu2+S85N8of17n1aeJG9IsjXJZ5P8SM9zjmv7fyHJccOIRZJGlcNDJGmMVNUxsxS/fZ79XwW8apby84Dz+lg1SVqLTgfeCLyrp2wL8OGqOjnJlvb4RXTLTB/Sbo+mm4/o0UnuC7wU2Eg3N9FFSc5pEypL0ppnTwtJkiRpGarqY8D1M4qPBN7Z7r8TeFpP+buqcwGwdxve93PA+VV1fUtUnA8csfq1l6TxYE8LSZIkqX/WVdXV7f41wLp2/wDuvNz0AfOU38lSl6Ge1KVhjWu8GNf4WSi26eXhBxW/SQtJkiRpFVRVJak+Hm9Jy1BP6tKwxjVejGv8LBTb9JLxg1oa3uEhkiRJUv9cO72qU/v3ulY+1zLU8y1PLUlrnkkLSZIkqX/OAaZXADkOeF9P+TPaKiKPAW5qw0g+ADw+yX3aSiOPb2WSJBaRtHApJ0mSJOnO5liG+mTgcUm+APxsewzdik1XAFuBtwK/AVBV1wOvAD7Zbi9vZZIkFjenxem4lJMkSZK0izmWoQY4fJZ9C3juHMc5DTitj1WTpImxYE8Ll3KSJEmSJEnDsNzVQ0ZmKaeVWMvL1IyzcYptejmg+fTGMk6xLZWxSZIkSVqqFS95OuylnFZiLS9TM87GKbbp5YDm07tU0DjFtlTGJkmSJGmplrt6iEs5SZIkSZKkVbXcpIVLOUmSJEmSpFW14PCQtpTTJmCfJNvoVgE5GTi7Lev0ZeCotvt5wBPplnK6FXgmdEs5JZleyglcykmSJEmSJC1gwaSFSzlJkiRJkqRhWO7wEEmSJEmSpFVl0kKSJEmSJI0kkxaSNEaSnJbkuiSX9pT9WZL/SvLZJO9NsncrX5/kW0k+025v6XnOjya5JMnWJG9IkmHEI0mSJM3HpIUkjZfTgSNmlJ0PPLyqHgH8N3BSz7YvVtVh7fbrPeVvBp4DHNJuM48pSZIkDZ1JC0kaI1X1MeD6GWUfrKqd7eEFwIHzHSPJfsC9q+qCNoHyu4CnrUZ9JUmSpJVYcPUQSdJYeRZwVs/jg5N8Gvgm8JKq+jhwALCtZ59trUwzrN9y7h33rzz5SUOsiSRJ0tpk0kKSJkSS3wd2Au9uRVcDD6iqbyT5UeAfkjxsicc8ETgRYN26dUxNTfWxxsO3ecPOXR6v2/POZdMmLfYdO3ZMXExzWSuxrpU4YW3FKklrnUkLSZoASY4Hngwc3oZ8UFW3Abe1+xcl+SLwUGA7uw4hObCV3UlVnQqcCrBx48batGnTKkUwHMf39KSALmFxyiWzfzReeeymAdRocKamppi08zmXtRLrWokT1laskpbPHpOTwTktJGnMJTkCeCHw1Kq6tad83yS7tfsPoptw84qquhr4ZpLHtFVDngG8bwhVlyRJkuZlTwtJGiNJzgA2Afsk2Qa8lG61kD2A89vKpRe0lUJ+Gnh5ku8A3wV+vaqmJ/H8DbqVSPYE/qndJEmSpJFi0kKSxkhVHTNL8dvn2Pc9wHvm2PYp4OF9rJokSZLUdw4PkSRJkiRJI8meFtKQTU8Q5ORAkiRJ0tI54eZks6eFJEmS1GdJfjvJZUkuTXJGkrslOTjJhUm2JjkryV3bvnu0x1vb9vXDrb0kjQ6TFtKIWL/lXC7ZftMumWJJkjR+khwAPB/YWFUPB3YDjgb+BHhtVT0EuAE4oT3lBOCGVv7atp8kCZMWkiRJ0mrYHdgzye7A3YGrgZ8B/q5tfyfwtHb/yPaYtv3wtiS1JK15zmkhSZIk9VFVbU/yGuArwLeADwIXATdW1c622zbggHb/AOCq9tydSW4C7gd8vfe4SU4ETgRYt24dU1NT89Zjx44dC+4zjoxrvAwirs0bdt5xv/e15irvh0k9X7BwbNN/10HFb9JCkiRJ6qMk96HrPXEwcCPwt8ARKz1uVZ0KnAqwcePG2rRp07z7T01NsdA+48i4xssg4jq+dyLOYzctWN4Pk3q+YOHYpv+u/f6bzmVFw0OcYEiSJEm6k58FvlRVX6uq7wB/D/wksHcbLgJwILC93d8OHATQtu8FfGOwVZak0bTspIUTDEmSJEmz+grwmCR3b3NTHA5cDnwU+MW2z3HA+9r9c9pj2vaPVFUNsL6SNLJWOhGnEwxJkiRJParqQrrr3YuBS+iuuU8FXgT8TpKtdHNWvL095e3A/Vr57wBbBl5pLcr6LefecZM0GMue02JUJhhaibU8eco4G6fYeif/WYx1e3bPGZf4lmKczttSTXJsk8gLTUmDUFUvBV46o/gK4FGz7Ps/wC8Nol6SNG6WnbQYlQmGVmItT54yzsYptuOX+OVo84adnHLJ7gOb1GaQxum8LdUkxyZJkiQN00qGhzjBkCRJkiRJWjUrSVo4wZAkSZIkSVo1y05aOMGQJEmSJElaTcue0wKcYEiSJEmSJK2elS55KkkaoCSnJbkuyaU9ZfdNcn6SL7R/79PKk+QNSbYm+WySH+l5znFt/y8kOW6215IkSZKGzaSFJI2X07nzSk1bgA9X1SHAh/ne8LsnAIe024nAm6FLctD1kns0Xc+4l04nOiRJkqRRsqLhIZKkwaqqjyVZP6P4SGBTu/9OYIpufqEjgXe1SY8vSLJ3kv3avudX1fUASc6nS4ScscrVl/pufc/S0lee/KQh1kSSJK0Ge1pI0vhbV1VXt/vXAOva/QOAq3r229bK5iqXJEnLsH7LubskUSX1jz0tJGmCVFUl6dty0klOpBtawrp165iamurXoYdm84adc25bt+fc2ych9l47duyYiJh6z9dc8UxKrAtZK3HC2opVktY6kxaSNP6uTbJfVV3dhn9c18q3Awf17HdgK9vO94aTTJdPzXbgqjqVbjlrNm7cWJs2bZptt7Fy/Dy/hG3esJNTLpn9o/HKYzetUo2GY2pqikk7n3Odo0mJdSFrJU5YW7FK2pXDAtceh4eMoYW6n63fci6XbL/JLmrS2nEOML0CyHHA+3rKn9FWEXkMcFMbRvIB4PFJ7tMm4Hx8K5MkSZJGij0tJGmMJDmDrpfEPkm20a0CcjJwdpITgC8DR7XdzwOeCGwFbgWeCVBV1yd5BfDJtt/LpyfllCRJkkaJSQtJGiNVdcwcmw6fZd8CnjvHcU4DTutj1SRJkqS+M2khjSDH6kmSJEmSc1pIkiRJkqQRZdJCkiRJkiSNJJMWkiRJkiRpJJm0kCRJkiRJI8mJOKU1xAk+JUkajCR7A28DHg4U8Czg88BZwHrgSuCoqrohSYDX0y1TfStwfFVdPIRqS9LIMWkhSZIk9d/rgX+uql9Mclfg7sCLgQ9X1clJtgBbgBcBTwAOabdHA29u/0oDM2o/bo1afTQ8Dg+RJEmS+ijJXsBPA28HqKpvV9WNwJHAO9tu7wSe1u4fCbyrOhcAeyfZb8DVlqSRZNJCkiRJ6q+Dga8B70jy6SRvS3IPYF1VXd32uQZY1+4fAFzV8/xtrUyS1rwVDQ9xrJ40u97ubJIkac3ZHfgR4Der6sIkr6cbCnKHqqoktZSDJjkROBFg3bp1TE1Nzbv/jh07FtxnHA0zrs0bdt5xv7cO0+Urqdewz9dcsa3UcuNa6G/dW76Ufftl2OdrNS0UWz/e70ux0jktHKsnSZIk7WobsK2qLmyP/47umvjaJPtV1dVt+Md1bft24KCe5x/YynZRVacCpwJs3LixNm3aNG8lpqamWGifcTTMuI7vnWfh2E13Ku8tW6phn6+5Ylup5ca10N+6t3wp+/bLsM/Xalootn6835di2cNDHKsnSZIk3VlVXQNcleQHWtHhwOXAOcBxrew44H3t/jnAM9J5DHBTzzASSVrTVtLTones3iOBi4AXsPSxejbIkiRJmjS/Cby79Ua+Angm3Q+GZyc5AfgycFTb9zy6IdRb6YZRP3Pw1ZWk0bSSpMVIjNVbiXEdhzTbGKJLtt/Usx3W7dntN47xLWQczlvv+LmlmD5vvfoZ62qO61vIOJy35Zrk2CRJy1NVnwE2zrLp8Fn2LeC5q14pDdQoL9k5ynWTZlpJ0mIkxuqtxLiOQ5ptDNHxMyZ+3LxhJ6dcsvvAxhkN0jict5nnY7Gmz1uvfp7D1RzXt5BxOG/LNcmxSZIkrTaTKJrPsue0cKyeJEmSJElaTStdPcSxekPkspqSJEmSpEm2oqSFY/VG33Riw25W0mRrvd7O6il6EPCHwN7Ac+gmTgZ4cVWd155zEnACcDvw/Kr6wOBqLEmSJC1spT0tNCD2qtBSOTZwbamqzwOHASTZjW7OoPfS9Wp7bVW9pnf/JIcCRwMPA/YHPpTkoVV1+0ArLkmSNEBeI4+fZc9pIUkaWYcDX6yqL8+zz5HAmVV1W1V9iW7o3qMGUjtJkiRpkexpIUmT52jgjJ7Hz0vyDOBTwOaqugE4ALigZ59trWwXg1yGelDmW5J4tmWHp01C7L0mZanexSzlPCmxLmStxAlrK1ZJWutMWkjSBGkTIz8VOKkVvRl4BVDt31OAZy32eINchnpQ5luSeLZlh6dN2hLSk7JU72KWcp6UWBeyVuKEtRWrhse54aTR4PAQSZosTwAurqprAarq2qq6vaq+C7yV7w0B2Q4c1PO8A1uZJEmSNDLsaSGtAU7kuqYcQ8/QkCT7VdXV7eHPA5e2++cAf5Pkz+km4jwE+MQgKypJ0lpkDw5paUxaSNKESHIP4HHAr/UU/2mSw+iGh1w5va2qLktyNnA5sBN4riuHSL1fxVgAACAASURBVJIkadSYtJCkCVFVtwD3m1H29Hn2fxXwqtWulyRJGi8uC6pRYtJCkiRJkibQMJMP06+9ecNONg30lTVpTFpIkiae87pIkrRyzsehYXD1EEmSJEkaovVbzuWS7TeZZJdmYU8LSZIkSdKyLGUIinNlaDlMWkiShsIuppIk9Y8JAU0qkxaSJEmSNIJMREgmLUbaKIxps6GUJEmSJA2LE3FKkiRJkqSRZNJCkiRJWgVJdkvy6STvb48PTnJhkq1Jzkpy11a+R3u8tW1fP8x6S9IoMWkhSZIkrY4XAJ/refwnwGur6iHADcAJrfwE4IZW/tq2nyQJkxaSJGkCrd9y7kjMDaW1K8mBwJOAt7XHAX4G+Lu2yzuBp7X7R7bHtO2Ht/01ANPthW2GNJpWPBFnkt2ATwHbq+rJSQ4GzgTuB1wEPL2qvp1kD+BdwI8C3wB+uaquXOnrS5IkSSPodcALgXu1x/cDbqyqne3xNuCAdv8A4CqAqtqZ5Ka2/9d7D5jkROBEgHXr1jE1NTVvBXbs2LHgPuOo33Ft3rDzjvu9x50un61sNfZdt2f372KOsdg4FqrDXPv2Wmmc6/ZceX0Gse9STer/L1g4ttneB6upH6uHTHd7u3d7PN3t7cwkb6Hr7vZmerq9JTm67ffLfXh9SZIkaWQkeTJwXVVdlGRTv45bVacCpwJs3LixNm2a/9BTU1MstM846ndcx/eulnfspjuVz1a2Gvtu3rCTUy7ZfcFjzLW632z7LlSHufbttdI4N2/YyVGbVlafQey71FUTJ/X/Fywc22zvg9W0oqRFT7e3VwG/09Pt7VfaLu8EXkaXtDiy3Yeu29sbk6SqaiV10OK4dKkkaVLYhVtj4CeBpyZ5InA3uh/3Xg/snWT31tviQGB72387cBCwLcnuwF50PZMlac1baU+LoXd7W4lR79IzVxetxZjuXjabpcTcr+5T/TTq5w2Wf+5mO2/LjXWhOgz6bzgO5225Jjk2SdLSVdVJwEkArafF71bVsUn+FvhFuqHUxwHva085pz3+j7b9I/6wJ0mdZSctRqXb20qMepeeubpoLcZ097LZLKUbz1zdp4Zp1M8bLP/czXbeltttbaE6DPp8jsN5W65Jjk2S1FcvAs5M8krg08DbW/nbgb9KshW4Hjh6SPWTpJGzkp4WdnuTpBGS5ErgZuB2YGdVbUxyX+AsYD1wJXBUVd3QhvO9HngicCtwfFVdPIx6S9Ikq6opYKrdvwJ41Cz7/A/wSwOtmKRFmf7RcLlD7B2mv3LLXvK0qk6qqgOraj1dNvgjVXUs8FG6bm0we7c3sNubJK2Wx1bVYVW1sT3eAny4qg4BPtweAzwBOKTdTqSbe0gaCS4/KEmSpvVj9ZCZ7PYmSaPjSGBTu/9Oul/7XtTK39WSxxck2TvJflV19VBqKUmStIbM1oPDXhmz60vSwm5vkjQSCvhgkgL+X5sjaF1PIuIaYF27f8fkyM30xMm7JC1Wc3LkQa7xvdjJcfs1ifE4GOUJZBeaBHox56j3/TXKsfbTWokT1laskrTWrUZPC0nScPxUVW1Pcn/g/CT/1buxqqolNBZtNSdHHuQa34udHLdfkxiPg1GeQHahSaDnOp+9+/a+v0Y51n5aK3HC2opVktY6kxaSNCGqanv797ok76Xr9Xbt9LCPJPsB17XdpydHntY7cbI0cM5fIUmSZmPSQhpxXshrMZLcA/i+qrq53X888HK+Nwnyydx5cuTnJTkTeDRwk/NZaNzZXkqSNHlMWuhOvOiTxtI64L3dSqbsDvxNVf1zkk8CZyc5AfgycFTb/zy65U630i15+szBV1mSJEman0kLSZoAbRLkR85S/g3g8FnKC3juAKo2MZzRW5IkafC+b9gVkCRJkqRBWL/lXHsVa8XWbzmXS7bf5HtpQExaSJIkSZK0QibFVofDQ3QH/4NJkiRJ0miZ/p62Voen2tNCkiRJkiSNJJMWmgh2xZIkSZKkyWPSQpIkSZIkjSTntJAmiL1NJEnSpJq+ztm8YSebhlsVSQNk0kKSJI0FE7OSZuptF9bqJIXSpDNpIa1RfshLkiRJGnUmLSRJkiQtmT+ASMOzlv7/mbSQJEmSNFHW0hc6adK5eogkSZIkSRpJJi0kSRNr/ZZznbxxjVu/5Vwu2X6T7wMNVJKDknw0yeVJLkvyglZ+3yTnJ/lC+/c+rTxJ3pBka5LPJvmR4UYgSaNj2cNDkhwEvAtYBxRwalW9Psl9gbOA9cCVwFFVdUOSAK8HngjcChxfVRevrPoaBdMXgqPQ9c6ugJKkfpgryeFnixZpJ7C5qi5Oci/goiTnA8cDH66qk5NsAbYALwKeABzSbo8G3tz+laQ1byVzWtgYS5IkSTNU1dXA1e3+zUk+BxwAHAlsaru9E5iiu04+EnhXVRVwQZK9k+zXjjPRZvvByR+hJPVadtLCxljalV2PJUnSTEnWAz8MXAis67n2vYauxzJ019BX9TxtWyvb5To5yYnAiQDr1q1jampq3tfesWPHgvusxOYNO++4v9zXme0Ycx13unzdnovfd67yUdx33Z7dvwsdYykxL3ffXiuNc7nnaxT27S1fyvka5vvrku033XF/wwF7sRwLtR2z1Wc19WX1kH42xtIoMdOvcTHPkL2XAc8BvtZ2fXFVndeecxJwAnA78Pyq+sDAKy6NGT8XtBRJ7gm8B/itqvpmN1q6U1WVpJZyvKo6FTgVYOPGjbVp06Z595+ammKhfRZrtvf+8b1lxy7vdWY7xlzHnS7fvGEnR21a3L5zlY/ivps37OSUS3Zf8BhLiXm5+/ZaaZzLPV+jsG9v+VLO1yi8v2aWL8VCbcds9VlNK05a9LsxXmoGeSVWO/u8UnNlOxdjOvM3m7kycZs3zH/Muf5Wg860zXbeZou1H/VZyi8IKzlf0+Y7bzPNVp/l1mEQ527U/7+txIjENteQPYDXVtVrendOcihwNPAwYH/gQ0keWlW3r2Yl7ZGkpfI9o3GV5C5018jvrqq/b8XXTvc0TrIfcF0r3w4c1PP0A1uZJK15K0parEZjvNQM8kr0M/u8GubKdi7GdOZvNnNl4hYyVyZt0Jm22c7bbHEspj4LTSK6lEzlSs7XtPnO20yz1We5dRjEuRv1/28rMQqxzTNkby5HAmdW1W3Al5JsBR4F/MeqV1aSJlybgP7twOeq6s97Np0DHAec3P59X0/585KcSTfn200OoZbUL+PeS3Alq4fYGEvSCJoxZO8n6dreZwCfouuNcQNdQuOCnqdND9mbeay+9n5brV5RS3m9+Sy2t9MI9KxZsRHpIXSHfvRWm8ts4477UZ9R+vvB6J3T1TQGsf4k8HTgkiSfaWUvprs+PjvJCcCXgaPatvPoVtjbSrfK3jMHW93VN+5fmiQNz0p6WtgY99EoLRs6Fz9spNE3y5C9NwOvoJvn4hXAKcCzFnu8fvd+W26vqH6+3nwW29tpUD3LVtNq9hBazmdaP3qrzWW2ccf9qM+ovQ9GodfXoIx6rFX1r0Dm2Hz4LPsX8NxVrZQkjamVrB5iY6yJ5PhpjavZhuxV1bU9298KvL89dPy0JGlV+EOXpH7qy+ohkqThmmvI3oylpX8euLTdPwf4myR/TjcR5yHAJwZYZU0YE76SJGk1mLSQxtQ4DCnSQM01ZO+YJIfRDQ+5Evg1gKq6LMnZwOV0K488d7VXDpEkSZKWyqSFhsJug1J/zTNk77x5nvMq4FWrVilJkiSNlfVbzmXzhp0cv+XckfmeZtJixAyie20/XmO2Y4xzIsJuzZK0dvkZIElai8bl+5tJC0mSlmlcPuwlSZLGlUkLacz5C6HGnV/8JUmSNBeTFlp1fiGRNGlMFnb8O0iSpNVm0kJDZ1JD0kJcLUeSJGltMmkhSdIIm6s3w7glcEYhQW3PEEmSxo9JCw3UOF8wTvIvvaPwZUKSJtkkf4ZIkrSaTFpo5M31hXqhBIhfxKXRsJRkZT/+345zcnTU+EVbkiQNm0kLrQq/NEhaqXFuR0yadsb5HEqSpNFg0kJrjhfR0vgyGTB5bJMlSdJ8TFoMmBdnK7N+y7ls3rCT45f4d1ytv7vnc3X4xVQaXbZ787P90rjzPSxp1KyppIWN8Ogbh3PkBbukSTaINm7S2tG54ulnnIP4fByHz2D1l/PWSBoHE5+0mLQLo7XEcydpsUahvRj0hKOSJEmDMsxrrYlPWkjqL79sScszComVXpdsv+mOoXb+X16e5ZzTcWxD/TVekjRMJi36zA92TSKXl5UGY1j/l0YtobJWzPV3tx2VJOl7TFpI2sVSEm9+0dEwrfX332zxD2KuA00Wz60kadQNPGmR5Ajg9cBuwNuq6uRB12Euq/ULlxcEWkvsdTFeRrlNnhTL/Qzws2PtWih5vJR2tp9tsu376rI9lqTZDTRpkWQ34E3A44BtwCeTnFNVlw+yHv2w0Ae3F5sad/1+Dy93/Pxq/5q8li/CJ6lNHmertcJEr9739vQ+mzf07WW1Shbz3ujd5/Qj7jHv85Y7WexC29da27kabI8laW6D7mnxKGBrVV0BkORM4Eigrw3yYj/kN2/YeceXqOUcYzn7SmtJ7/+N3i9Io/B/ZhTqMAIG0iZr+Hy/rw29yeFB6sf7azrxsZhjTWiSZGDtse2BpHGTqhrciyW/CBxRVc9uj58OPLqqntezz4nAie3hDwCfX8Uq7QN8fRWPP0zGNp6MbTzNFdsDq2rfQVdmsUawTR4Fk/w+nclYJ89aiROWHuvYt8etfKlt8qS+J4xrvBjX+Fnt2JbUJo/cRJxVdSpw6iBeK8mnqmrjIF5r0IxtPBnbeJrk2AbZJo+CST6XMxnr5FkrccLairXXUtvkSf07Gdd4Ma7xM2qxfd+AX287cFDP4wNbmSRp8GyTJWk02B5L0hwGnbT4JHBIkoOT3BU4GjhnwHWQJHVskyVpNNgeS9IcBjo8pKp2Jnke8AG65ZxOq6rLBlmHGSa5y7OxjSdjG09jGdsItsmjYCzP5TIZ6+RZK3HChMW6iu3xRP2dehjXeDGu8TNSsQ10Ik5JkiRJkqTFGvTwEEmSJEmSpEUxaSFJkiRJkkbSmkhaJPmlJJcl+W6SjT3lj0tyUZJL2r8/M8tzz0ly6WBrvHhLjS3J3ZOcm+S/2vNOHl7t57ec85bkR1v51iRvSJLh1H5h88R3vyQfTbIjyRtnPOeYFt9nk/xzkn0GX/OFLTO2uyY5Ncl/t/fnLwy+5gtbTmw9+4x0e7KWJLlbkk8k+c92Pv9oxvY3JNkxrPr101yxpvOq9n/uc0meP+y6rtQ8sR6e5OIkn0nyr0keMuy69kOS3ZJ8Osn72+ODk1zYPgPPahM6ToRZYn13ks8nuTTJaUnuMuw6jpIkR7S/z9YkW4Zdn5Vo5/e63s/PJPdNcn6SL7R/7zPMOi5VkoPaNcPlra16QSsf67hg3nZ4ItqnSWx3k1zZvl98JsmnWtlIvRfXRNICuBT4P8DHZpR/HXhKVW0AjgP+qndjkv8DjPpF63Jie01V/SDww8BPJnnCQGq6dMuJ7c3Ac4BD2u2IAdRzueaK73+APwB+t7cwye7A64HHVtUjgM8CzxtAPZdjSbE1vw9cV1UPBQ4F/mVVa7h8y4ltXNqTteQ24Geq6pHAYcARSR4D0JJRY3ehOI+5Yj2ebonFH6yqHwLOHF4V+2auWN8MHFtVhwF/A7xkiHXspxcAn+t5/CfAa6vqIcANwAlDqdXqmBnru4EfBDYAewLPHkalRlGS3YA3AU+g+zw9Jsmhw63VipzOna/ntgAfrqpDgA+3x+NkJ7C5qg4FHgM8t52jcY8L5m6HJ6V9mtR297FVdVhVTf8gN1LvxTWRtKiqz1XV52cp/3RVfbU9vAzYM8keAEnuCfwO8MrB1XTplhpbVd1aVR9t+3wbuJhuLfCRs9TYkuwH3LuqLqhuhtl3AU8bYJWXZJ74bqmqf6X7Etwr7XaPJAHuDXx15vNHwTJiA3gW8Mdtv+9W1ddXuZrLspzYxqU9WUuqM51Euku7VbvY/zPghUOrXJ/NFSvwf4GXV9V3237XDamKfTNPrEXXZgLsxYi2nUuR5EDgScDb2uMAPwP8XdvlnYzwZ+BSzIwVoKrOa+e7gE8wotcyQ/IoYGtVXdGu9c4EjhxynZatqj4GXD+j+Ei69ziM4Xu9qq6uqovb/ZvpvgQfwJjHBfO2w2PfPq2ldpcRey+uiaTFIv0CcHFV3dYevwI4Bbh1eFXqm5mxAZBkb+ApdNmzcdUb2wHAtp5t21rZRKiq79B9ybiE7oL7UODtQ61Un7T3IsArWhfuv02ybqiV6q9Jak8mRuvi+RngOuD8qrqQrvfSOVV19XBr119zxPpg4JeTfCrJPyU5ZLi17I85Yn02cF6SbcDTgZEdGrkEr6NLrn23Pb4fcGNV7WyPJ+kzcGasd2jDQp4O/POgKzXCDgCu6nk8Se+Faet62ulrgLG9Zkiynq7384VMSFwz22Hgi0xG+zSp7W4BH0w37P7EVjZS78WJSVok+VAb1zjztmBmOcnD6Lr2/Fp7fBjw4Kp67ypXe1H6GVtP+e7AGcAbquqK1an5wlYjtlGykvhmOdZd6JIWPwzsTzc85KQ+V3kp9elbbMDudL+S/XtV/QjwH8Br+lrhJejzeRup9kTfU1W3t+ECBwKPSvLTwC8BfzHcmvXfLLE+HNgD+J/WFfStwGnDrGO/zBHrbwNPrKoDgXcAfz7MOq5UkifTDae7aNh1WW2LiPUvgY9V1ccHWC2NkNbbpoZdj+VoPTHfA/xWVX2zd9s4xzWzHaYbyjXWJrzd/al2/f0EuqFKP927cRTei7sP88X7qap+djnPa9183gs8o6q+2Ip/HNiY5Eq6v9H9k0xV1aZ+1HWp+hzbtFOBL1TV61Zav5Xoc2zb2bV76IGtbGiWG98cDmvH/CJAkrMZ4viyPsf2DbpeCH/fHv8tQxwT2OfYRqo90Z1V1Y1JPgo8FngIsLXr8cndk2xt41QnQk+sR9D9IjT9f+69dF/mJ0ZPrE8AHtl6XACcxfj/Kv+TwFOTPBG4G93Ql9cDeyfZvf3qN/TPwD65U6xJ/rqqfjXJS4F9GeEfL4ZkO918NdMm5b3Q69ok+1XV1W148NgNb2s/Rr0HeHdVTbfFYx9Xr552+McZ//ZpYtvdqtre/r0uyXvpEk0j9V6cmJ4Wy9G6pJ8LbKmqf5sur6o3V9X+VbUe+Cngv8ftC8ZcsbVtr6Qb0/tbw6jbSs1z3q4GvpnkMW2M2TOA9w2pmqthO3Bokn3b48ex60RAY6tlcP8R2NSKDgcuH1qF+mgS2pNJlGTf6WFJSfak+/90UVV9f1Wtb+fr1klIWMwR638B/0CXqAH438B/D6eG/TNHrJ8D9kry0Lbb2LedVXVSVR3Y3qdHAx+pqmOBjwK/2HY7jgn4DJwj1l9N8mzg54Bjpudl0R0+CRySblWDu9L93c4Zcp367Ry69ziM4Xu9Xae+HfhcVfX2/BrruGDednis26dJbXeT3CPJvabvA4+nm3R+tN6LVTXxN+Dn6X5Rug24FvhAK38JcAvwmZ7b/Wc8dz1w6bBj6FdsdBnAoms8psufPew4+nXegI10/9G+CLwRyLDjWGp8bduVdJNO7Wj7HNrKf72du8/Sfcm/37Dj6GNsD6RbkeOzdPOsPGDYcfQrtp7tI92erKUb8Ajg0+39dinwh7Pss2PY9VzNWIHpBPAldEOyHjnsuq5irD/f4vxPYAp40LDr2seYNwHvb/cfRDcp5Va6Hmt7DLt+qxjrzvZZP30dcKf/w2v5BjyRLhH5ReD3h12fFcZyBnA18J322XoC3VwCHwa+AHwIuO+w67nEmH6K7nr8sz3v4SeOe1wttrna4Ylpnyap3W31/892u2y6vRi192JapSRJkiRJkkbKmh4eIkmSJEmSRpdJC0mSJEmSNJJMWkiSJEmSpJFk0kKSJEmSJI0kkxaSJEmSJGkkmbSQJEmSJEkjyaSFJEmSJEkaSSYtJEmSJEnSSDJpIUmSJEmSRpJJC0mSJEmSNJJMWkiSJEmSpJFk0kKSJEmSJI0kkxaSJEmSJJJMJXn2Mp/7gCQ7kuzW73ppbTNpoYmS5PQkrxx2PSRpUi2mnU2yKcm2Pr5mJXlIv44nSVq5JFcm+dnpx1X1laq6Z1XdPsx6afKYtNDAzWzg+rWvJKljOytJkiaFSQuteUl2H3YdJEnLYzdkSZOqJZVPSnJ5khuSvCPJ3dq25yTZmuT6JOck2b/neZXk+UmuSPL1JH+W5Pvatpcl+euefde3/e90PZzkwUk+kuQb7TjvTrJ32/ZXwAOAf2xDQl4481hJ9m91u77V9Tk9x35ZkrOTvCvJzUkuS7Jxtf6WGm8mLTRQczRwT20N1Y1tHN0PzbVvK//bJNckuSnJx5I8bIl12JRkW5IXJbkGeEeSPZK8LslX2+11Sfboec5CHwy/keQLrdF9RWvk/z3JN1uDfNe27z5J3t9ivT7Jx6c/RCSpH0ahne2py4vbhe6VSY7tKd8jyWuSfCXJtUnekmTPnu2/l+Tq1h4/a8YxT0/y5iTnJbkFeGySH2px3djifGrP/nu1i+KvJflykpf0XLwfn+Tfkry2PfeKJD/Ryq9Kcl2S43qO9cR0Xx5uTrI9ye8u5+8iSUtwLPBzwIOBhwIvSfIzwB8DRwH7AV8GzpzxvJ8HNgI/AhwJPIulS3ud/YEfAg4CXgZQVU8HvgI8pQ0J+dNZnn8msK09/xeBV7e6T3tq22dv4Bzgjcuoo9YAvyxpoGY2cMA/AGcAvwXsC5xHd/F813kaw38CDgHuD1wMvHsZVfl+4L7AA4ETgd8HHgMcBjwSeBTwEoBFfjD8HPCj7RgvBE4FfpWucX84cEzbbzNd470vsA54MVDLqL8kzWrE2tl9gAOA44BTk/xA23Yy3cX3YcBD2j5/CJDkCOB3gce1Osw2dOVXgFcB9wIuBP4R+GCr728C7+55rb8A9gIeBPxv4BnAM3uO9Wjgs8D9gL+ha99/rNXrV4E3Jrln2/ftwK9V1b3o2vaPLP3PIklL8saquqqqrqdr946hS2ScVlUXV9VtwEnAjydZ3/O8P6mq66vqK8Dr+N616KJV1daqOr+qbquqrwF/TteOLijJQcBPAi+qqv+pqs8Ab6Nrg6f9a1Wd1+bA+Cu6a3DpTkxaaNh+GTi3NYjfAV4D7An8xFxPqKrTqurm1ki/DHhkkr2W+LrfBV7aGuFv0TX+L6+q61qj/EfA09u+i/lg+NOq+mZVXQZcCnywqq6oqpvoLv5/uO33HbrExwOr6jtV9fGqMmkhaTUNq50F+IPWzv4LcC5wVJLQJYt/u11Q3wy8Gji6Peco4B1VdWlV3dJef6b3VdW/VdV36RIf9wROrqpvV9VHgPcDx6QbOnI0cFKL50rgFL7XvgN8qare0S6az6JLNr+81fuDwLfpEhjQteGHJrl3Vd1QVRcv428iSUtxVc/9L9P1Wti/3QegqnYA36BLAM/3vCVJsi7Jma1n2TeBv6ZLRi/G/sB0G99bj946XtNz/1bgbnHYtmZh0kLDNrPR/S5dI3vAbDsn2S3JyUm+2BrPK9umxTag075WVf8zVz3YtXFfzAfDtT33vzXL4+lf6f4M2Ap8sHVD3rLEekvSUg2rnb2hJR2mTber+wJ3By5qQzJuBP65lU/Xd+bF9ky92/cHrmpx9T7ngFbnu3Dn9n2+9puqmqsN/wXgicCXk/xLkh+fpW6S1E8H9dx/APDVdnvgdGGSe9D1Ftu+wPMAbqFrg6d9/zyv/Wq6HsEbquredL3P0rN9vh/evgrcN8m9ZtRj+xz7S3MyaaFh6G3gZja6oWtkt8+yL3Rdgo+k6y68F7B++qkrqMOd6sGujftiPhgW96LdL32bq+pBdOP4fifJ4Us9jiQtYBTa2fu09nLadLv6dbpEwMOqau9226sNZQG4mjtfbM80M76DZswPNH1h/HW63hEz2/dlXTRX1Ser6ki6YSj/AJy9nONI0hI8N8mBSe5LN5z5LLohf89Mcli6OdheDVzYepNN+70k92nDNF7QngfwGeCnkzyg9aA7aZ7XvhewA7gpyQHA783Yfi3d0Ls7qaqrgH8H/jjJ3ZI8AjiBrreGtCQmLTQMvQ3c2cCTkhye5C50cz7cRtfIzdwXusbzNrqeDnena6T74Qy6iY32TbIP3djqv+7ZttAHw6IkeXKSh7QvDTcBt9MNVZGkfhqVdvaPktw1yf9n797DJavrO9+/PwKiUSMgpgeBpEkkycE4g9oRM2ZyOjpyNcE8xxgM0UaZIZnBE02Yia0zORDRGcyJmjgxOBg7QqIi8XJkBENaw47jk4CIIXKLQwfbgU4LUS7aGtHG7/lj/XZTbGpfanfVrrV3v1/PU8+u+tW6fGrt3T8W3/qt3/pXwAuBP20jIt4FvC3J9wEkOTzJCQN5z0hyTJLvAc5dZB/X0g0r/o0kByTZCPwMcGm75OMy4E1JnpDkB4BfZxknze1znJ7kie0ym69h/y1p8t5HN2fP7cDfA2+sqk8Avwl8iK7Q+0M8dIndrI8C19MVKa6gm5OHqtpKV8D4fHv/Ywvs+7foJvK8v23jw3Pe/69058/3zTMx8UvpCt//AHyE7tLsTyz6iaU5LFpoGvZ0cHQnlr9EN1HaV9rrn6mqb89dtnWGl9AN7d0B3AJcM6ZMbwQ+S9eB30g38dwbAZb4H4alOhr4BF3V+q+BP6iqq/cquSQ9Uh/62S8D99KdrL4X+JWq+rv23mvpLpW7pl2C8gngRwCq6uN0k8b9RVtmwcku2+f4GeCk9vn+AHj5wL7+b7rh0LcDn6b7H4Aty/xMLwO2t8y/QjfnkSRN0nVVdUwblbapqr4JUFXvrKofqqpDquqFVXXnnPWurKofrKontVG+D86+UVVnt+09tareVVWpuCccdQAAIABJREFUqt3tvY1V9Yft+c1V9aw2UfOxVfWWqjpiYDsfrarvb9v6naraPmdbd7Zsh7Ss7xxY97yq+qWB1w9bVxoU5wCUJEmSpH5Jsh34N6OOTkhSwNFVtW0iwaQV5kgLSZIkSZLUSxYttCYleX2SXUMeH592NklaC+xnJWmyqmr9cuaAaJdZOMpCa4aXh0iSJEmSpF7af9oBFnLooYfW+vXrR17vG9/4Bo973OMWX3AF9CkL9CuPWYYzy3B9ygJLy3P99dd/paqevEKRJm4t9MmLMetkmHUyVkvWPuRca/0xrM0+ua/Z+poLzLZcfc3W11ww3mwj98lV1dvHs571rFqOq6++elnrTUKfslT1K49ZhjPLcH3KUrW0PMBnqwd96bgea6FPXoxZJ8Osk7FasvYh51rrj2uN9sl9zdbXXFVmW66+ZutrrqrxZhu1T3ZOC0mSJEmS1EsWLSRpFUlyZJKrk9yS5OYkr27t5yXZkeSG9jh5YJ3XJdmW5AtJThhoP7G1bUuyeRqfR5IkSVqIRQtJWl12A+dU1THAc4CzkxzT3ntbVR3bHlcCtPdOA54GnAj8QZL9kuwHvAM4CTgGeOnAdiRJS5Rke5IbW8H4s63tkCRbk9zWfh7c2pPk7a1Y/PkkzxzYzqa2/G1JNk3r80hS31i0kKRVpKp2VtXn2vOvA7cChy+wyqnApVX1QFV9EdgGPLs9tlXV7VX1beDStqwkaXQ/3QrGG9rrzcAnq+po4JPtNXSF4qPb4yzgQuiKHMC5wHF0/fO5s4UOSdrX9fruIZKk+SVZDzwDuBZ4LvCqJC8HPks3GuNeuoLGNQOr3clDRY475rQfN2QfZ9GdWLNu3TpmZmZGzrlr165lrTcNZp0Ms07Gasm6WnKO2anAxvb8YmAGeG1rv6RNRHdNkoOSHNaW3VpV9wAk2Uo3Ou79Kxtbkvpn0aJFkscAnwIObMt/sKrOTXIU3TdzTwKuB15WVd9OciBwCfAs4KvAL1TV9rat1wFnAg8Cv1pVV43/I0nS2pfk8cCHgNdU1deSXAicD1T7+RbglXu7n6q6CLgIYMOGDbVx48aRtzEzM8Ny1psGs06GWSdjtWRdLTn3QgF/nqSA/976zXVVtbO9/2VgXXt+OI8sGB++QPvDrPVCcl+z9TUXmG25+pqtr7lgutmWMtLiAeB5VbUryQHAp5N8HPh1uuunL03yTrpixIXt571V9dQkpwFvBn5hznXVTwE+keSHq+rBCXwuSVqzWl/8IeC9VfVhgKq6a+D9dwEfay93AEcOrH5Ea2OBdknS0v1kVe1I8n3A1iR/N/hmVVUraOy1tV5I7mu2vuYCsy1XX7P1NRdMN9uiRYs2fG1Xe3lAexTwPOAXW/vFwHl0RYtT23OADwK/nyQMXFcNfDHJ7HXVfz2OD7Jc6zdfsef59gtOmWISSVpc60/fDdxaVW8daD9s4Fu9nwNuas8vB96X5K10BeOjgc8AAY5uo+Z20BWVZ/v0qbFPlrTaVNWO9vPuJB+hO7+9a7Zfbpd/3N0Wn6+QvIOHLieZbZ+ZcPQ97Hsl9dmS5rRos8xfDzyVbrb5vwfuq6rdbZHBIWx7hrdV1e4k99NdQrLQddWD+1rRYW/nPH33nueTGO7StyE+fcpjluHMMlyfssBU8zwXeBlwY5IbWtvr6e7+cSxdUXk78MsAVXVzksuAW+juPHL27Ai3JK8CrgL2A7ZU1c0r+UEkabVL8jjgUVX19fb8eOANdAXjTcAF7edH2yqX080/dCndPEL3t8LGVcB/GZh883jgdSv4USSpt5ZUtGgnuMcmOQj4CPCjkwq00sPezhisLJ8++r7GmWUl9CmPWYYzy3B9ygLTy1NVn6YbJTHXlQus8ybgTUPar1xoPUnSotYBH+kGwbE/8L6q+rMk1wGXJTkT+BLwkrb8lcDJdHdy+ibwCoCquifJ+cB1bbk3zE7KKUn7upHuHlJV9yW5GvgJ4KAk+7fRFoPXQs8Oe7szyf7AE+km5FzoumpJkiRpVamq24F/MaT9q8Dzh7QXcPY829oCbBl3Rkla7R612AJJntxGWJDkscALgFuBq4EXt8XmDnvb1J6/GPiL1kFfDpyW5MB2DfXsddWSJEmSJEmPsJSRFocBF7d5LR4FXFZVH0tyC3BpkjcCf0M3MRzt5x+3iTbvoZvcbcHrqiVJkiRJkuZayt1DPg88Y0j77XSzI89t/xbw8/Nsa+h11ZIkSZIkSXMtenmIJEmSJEnSNIw0EackSStl/eDdnS44ZYpJJEmSNC2OtJAkSZIkSb1k0UKSJEmSJPWSRQtJkiRJktRL++ycFoPXSkuSJEmSpP5xpIUkSZIkSeolixaSJEmSJKmXLFpIkiRJkqResmghSZIkSZJ6yaKFJKn31m++wgmUJUmS9kEWLSRJkiRJUi9ZtJAkSZIkSb1k0UKSJEmSJPWSRQtJkiRJktRLFi0kSZIkSVIv7T/tAH0yODP99gtOmWISSZIkSZLkSAtJkiRJktRLFi0kSZIkSVIvWbSQJEmSJEm9ZNFCkiRJkiT10qJFiyRHJrk6yS1Jbk7y6tZ+XpIdSW5oj5MH1nldkm1JvpDkhIH2E1vbtiSbJ/ORJEmSJEnSWrCUu4fsBs6pqs8leQJwfZKt7b23VdXvDC6c5BjgNOBpwFOATyT54fb2O4AXAHcC1yW5vKpuGccHkSRJkiRJa8uiRYuq2gnsbM+/nuRW4PAFVjkVuLSqHgC+mGQb8Oz23raquh0gyaVtWYsWkiRJkiTpEZYy0mKPJOuBZwDXAs8FXpXk5cBn6UZj3EtX0LhmYLU7eajIccec9uOG7OMs4CyAdevWMTMzM0pEAHbt2rXoeuc8ffeC7y9nv8vNspL6lMcsw5lluD5lgenlSXIkcAmwDijgoqr6vSSHAB8A1gPbgZdU1b1JAvwecDLwTeCMqvpc29Ym4D+3Tb+xqi5eyc8iSZIkLWbJRYskjwc+BLymqr6W5ELgfLqT5vOBtwCv3NtAVXURcBHAhg0bauPGjSNvY2ZmhsXWO2PzFQu+v/300fe73CwrqU95zDKcWYbrUxaYap75Ltk7A/hkVV3Q5gzaDLwWOAk4uj2OAy4EjmtFjnOBDXT9+PXtkr17V/wTSdIql2Q/ui/xdlTVC5McBVwKPAm4HnhZVX07yYF0hednAV8FfqGqtrdtvA44E3gQ+NWqumrlP4kk9c+S7h6S5AC6gsV7q+rDAFV1V1U9WFXfBd7FQ5eA7ACOHFj9iNY2X7skaYmqaufsSImq+jowe8neqcDsSImLgRe156cCl1TnGuCgJIcBJwBbq+qeVqjYCpy4gh9FktaSV9P1x7PeTDf321OBe+mKEbSf97b2t7Xl5s4JdyLwB60QIkn7vEVHWrShxe8Gbq2qtw60H9bmuwD4OeCm9vxy4H1J3ko3EefRwGeAAEe3yvMOuo75F8f1QSRpXzPnkr11A33yl+kuH4GuoDH30rzDF2ifu48VuWRv1kpdujefvl2GtBCzToZZx2+15FyuJEcApwBvAn69nTs/j4fOcy8GzqMb6XZqew7wQeD32/LzzQn31yv0MfZYPzAaefsFp6z07iXpEZZyechzgZcBNya5obW9HnhpkmPphhVvB34ZoKpuTnIZ3QSbu4Gzq+pBgCSvAq4C9gO2VNXNY/wskrTPGHLJ3p73qqqS1Dj2s1KX7M1aqUv35tO3y5AWYtbJMOv4rZace+F3gd8AntBePwm4r6pmq7CDReE9BeOq2p3k/rb8QnPC7TGpQvJ8BeOVLjb1tcDV11xgtuXqa7a+5oLpZlvK3UM+TTdKYq4rF1jnTXTV5rntVy60niRpccMu2QPumh0B1y7/uLu1L3TJ3sY57TOTzC1Ja02SFwJ3V9X1STZOen+TKiTPVzCedKF4rr4WuPqaC8y2XH3N1tdcMN1sS5rTQpLUD/Ndskd3ad6m9nwT8NGB9pen8xzg/nYZyVXA8UkOTnIwcHxrkyQt3XOBn02ynW7izefR3bHpoCSzXw4OzuO2p5Dc3n8i3YSczv0mSfOwaCFJq8vsJXvPS3JDe5wMXAC8IMltwL9ur6Eb3XY7sI1u0uR/D1BV99Dd+em69nhDa5MkLVFVva6qjqiq9XTztf1FVZ0OXA28uC02t5A8W2B+cVu+WvtpSQ5s87/NzgknSfu8Jd/yVJI0fQtcsgfw/CHLF3D2PNvaAmwZXzpJUvNa4NIkbwT+hm6EHO3nH7eJNu+hK3QsOCecJO3rLFpIkiRJe6mqZmhzA1XV7XR3/5i7zLeAn59n/aFzwknSvs7LQyRJkiRJUi9ZtJAkSZIkSb3k5SGSpFVj/cBt+bZfcMoUk0iSJGklONJCkiRJkiT1kkULSZIkSZLUSxYtJEmSJElSL1m0kCRJkiRJvWTRQpIkSZIk9ZJFC0mSJEmS1EsWLSRJkiRJUi9ZtJAkSZIkSb1k0UKSJEmSJPWSRQtJkiRJktRL+087gCRp37Z+8xXTjiBJkqSecqSFJEmSJEnqJUdazGPwm7/tF5wyxSSSJEmSJO2bHGkhSZIkSZJ6yaKFJEmSJEnqpUWLFkmOTHJ1kluS3Jzk1a39kCRbk9zWfh7c2pPk7Um2Jfl8kmcObGtTW/62JJsm97EkSZIkSdJqt5SRFruBc6rqGOA5wNlJjgE2A5+sqqOBT7bXACcBR7fHWcCF0BU5gHOB44BnA+fOFjokSZIkSZLmWrRoUVU7q+pz7fnXgVuBw4FTgYvbYhcDL2rPTwUuqc41wEFJDgNOALZW1T1VdS+wFThxrJ9GkiRJkiStGSPdPSTJeuAZwLXAuqra2d76MrCuPT8cuGNgtTtb23ztc/dxFt0IDdatW8fMzMwoEQHYtWvXouud8/TdS97ecjKMkmUl9SmPWYYzy3B9ygL9yyNJkiStRUsuWiR5PPAh4DVV9bUke96rqkpS4whUVRcBFwFs2LChNm7cOPI2ZmZmWGy9MwZuabqY7aePnmGULCupT3nMMpxZhutTFuhfHkmSJGktWtLdQ5IcQFeweG9Vfbg139Uu+6D9vLu17wCOHFj9iNY2X7skSZIkSdIjLOXuIQHeDdxaVW8deOtyYPYOIJuAjw60v7zdReQ5wP3tMpKrgOOTHNwm4Dy+tUmSJEmSJD3CUi4PeS7wMuDGJDe0ttcDFwCXJTkT+BLwkvbelcDJwDbgm8ArAKrqniTnA9e15d5QVfeM5VNIkiRJkqQ1Z9GiRVV9Gsg8bz9/yPIFnD3PtrYAW0YJKEmSJEmS9k1LmtNCktQPSbYkuTvJTQNt5yXZkeSG9jh54L3XJdmW5AtJThhoP7G1bUuyeaU/hyRp+tZvvoL1I0xOL0nTYNFCklaX9wAnDml/W1Ud2x5XAiQ5BjgNeFpb5w+S7JdkP+AdwEnAMcBL27KSpBEkeUySzyT52yQ3J/mt1n5UkmtbYfgDSR7d2g9sr7e199cPbGtokVmS9nUWLSRpFamqTwFLnQ/oVODSqnqgqr5IN9fQs9tjW1XdXlXfBi5ty0qSRvMA8Lyq+hfAscCJbSL6N9MVk58K3Auc2ZY/E7i3tb+tLTdvkXlFP4kk9dRSJuJcMxz+JmkNe1WSlwOfBc6pqnuBw4FrBpa5s7UB3DGn/bgVSSlJa0iby21Xe3lAexTwPOAXW/vFwHnAhXQF4vNa+weB32936ttTZAa+mGS2yPzXk/8UktRv+1TRQpLWqAuB8+lOlM8H3gK8chwbTnIWcBbAunXrmJmZGXkbu3btWnC9c56+e1nZlpNlMYtl7ROzToZZx2+15FyuNiLieuCpdJfe/T1wX1XNdm6DBePDaUXjqtqd5H7gSSxcZB7c11j75MX635X+vfX1b6WvucBsy9XXbH3NBdPNZtFCkla5qrpr9nmSdwEfay93AEcOLHpEa2OB9rnbvgi4CGDDhg21cePGkfPNzMyw0HpnLHMU3PbTR8+ymMWy9olZJ8Os47daci5XVT0IHJvkIOAjwI9OcF9j7ZMX638n0c8upK9/K33NBWZbrr5m62sumG42ixaStMolOayqdraXPwfM3lnkcuB9Sd4KPAU4GvgM3W2sj05yFF2x4jQeGsa8agxe8rf9glOmmESSoKruS3I18BPAQUn2b6MtBgvDs8XkO5PsDzwR+CoLF5klaZ/mRJyStIokeT/dNc4/kuTOJGcCv53kxiSfB34a+DWAqroZuAy4Bfgz4OyqerCdRL8KuAq4FbisLStJGkGSJ7cRFiR5LPACun71auDFbbFNwEfb88vba9r7f9HmxbgcOK3dXeQoHioyS9I+z5EWkrSKVNVLhzS/e4Hl3wS8aUj7lcCVY4wmSfuiw4CL27wWj6IrAn8syS3ApUneCPwND/XT7wb+uE20eQ/dSDeq6uYks0Xm3bQi8wp/FknqJYsWkiRJ0jJU1eeBZwxpv53u7h9z278F/Pw82xpaZJakfZ2Xh0iSJEmSpF6yaCFJkiRJknrJooUkSZIkSeolixaSJEmSJKmXLFpIkiRJkqResmghSZIkSZJ6yVueSpIkSXqE9Zuv2PN8+wWnTDGJpH2ZIy0kSZIkSVIvWbSQJEmSJEm9ZNFCkiRJkiT1kkWLJVi/+YqHXdMnSZIkSZImb9GiRZItSe5OctNA23lJdiS5oT1OHnjvdUm2JflCkhMG2k9sbduSbB7/R5EkSZIkSWvJUkZavAc4cUj726rq2Pa4EiDJMcBpwNPaOn+QZL8k+wHvAE4CjgFe2paVJEmSJEkaatFbnlbVp5KsX+L2TgUuraoHgC8m2QY8u723rapuB0hyaVv2lpETS5IkSZKkfcKiRYsFvCrJy4HPAudU1b3A4cA1A8vc2doA7pjTftywjSY5CzgLYN26dczMzIwcbNeuXUPXO+fpu0fe1qBxZpmWPuUxy3BmGa5PWaB/eSRJkqS1aLlFiwuB84FqP98CvHIcgarqIuAigA0bNtTGjRtH3sbMzAzD1jtjLyfT3H76+LJMS5/ymGU4swzXpyzQvzySJEnSWrSsokVV3TX7PMm7gI+1lzuAIwcWPaK1sUC7JEl7ZfAOT9svOGWKSSRJkjROy7rlaZLDBl7+HDB7Z5HLgdOSHJjkKOBo4DPAdcDRSY5K8mi6yTovX35sSZIkSZK01i060iLJ+4GNwKFJ7gTOBTYmOZbu8pDtwC8DVNXNSS6jm2BzN3B2VT3YtvMq4CpgP2BLVd089k8jSZIkSZLWjKXcPeSlQ5rfvcDybwLeNKT9SuDKkdJJkiRJkqR91rIuD5EkSZIkSZo0ixaSJEmSJKmXLFpIkiRJkqResmghSZIkSZJ6yaKFJEmSJEnqJYsWkiRJkiSplyxaSJIkSZKkXrJoIUmSJEmSesmihSStIkm2JLk7yU0DbYck2Zrktvbz4NaeJG9Psi3J55M8c2CdTW3525JsmsZnWb/5CtZvvmIau5aksUhyZJKrk9yS5OYkr27tq7JflqQ+smghSavLe4AT57RtBj5ZVUcDn2yvAU4Cjm6Ps4ALoTuZBs4FjgOeDZw7e0ItSRrJbuCcqjoGeA5wdpJjsF+WpLGxaCFJq0hVfQq4Z07zqcDF7fnFwIsG2i+pzjXAQUkOA04AtlbVPVV1L7CVRxZCJEmLqKqdVfW59vzrwK3A4dgvS9LY7D/tAJKkvbauqna2518G1rXnhwN3DCx3Z2ubr/0RkpxF920g69atY2ZmZuRwu3btGrreOU/fPfK2lmI5GWfNl7WPzDoZZh2/1ZJzbyVZDzwDuJYJ9cvj7pNH6YdX4nfY17+VvuYCsy1XX7P1NRdMN5tFC0laQ6qqktQYt3cRcBHAhg0bauPGjSNvY2ZmhmHrnTGh+Sy2n/7IfS3VfFn7yKyTYdbxWy0590aSxwMfAl5TVV9Lsue9cfbL4+6TR+mH96ZvXaq+/q30NReYbbn6mq2vuWC62bw8RJJWv7va8GLaz7tb+w7gyIHljmht87VLkkaU5AC6gsV7q+rDrdl+WZLGxKLFCGZnune2e0k9czkwO9P8JuCjA+0vb7PVPwe4vw1Xvgo4PsnBbaK341ubJGkE6YZUvBu4tareOvCW/bIkjYmXh0jSKpLk/cBG4NAkd9LNNn8BcFmSM4EvAS9pi18JnAxsA74JvAKgqu5Jcj5wXVvuDVU1d3JPSdLingu8DLgxyQ2t7fXYL0vS2Fi0kKRVpKpeOs9bzx+ybAFnz7OdLcCWMUaTpH1OVX0ayDxv2y9L0hh4eYgkSZIkSeolR1pIktaUwXmHtl9wyhSTSJIkaW850kKSJEmSJPWSRQtJkiRJktRLixYtkmxJcneSmwbaDkmyNclt7efBrT1J3p5kW5LPJ3nmwDqb2vK3Jdk0bF+SJEmSJEmzljLS4j3AiXPaNgOfrKqjgU+21wAnAUe3x1nAhdAVOehuy3cc8Gzg3NlChyRJkiRJ0jCLFi2q6lPA3PtEnwpc3J5fDLxooP2S6lwDHJTkMOAEYGtV3VNV9wJbeWQhRJIkSZIkaY/l3j1kXVXtbM+/DKxrzw8H7hhY7s7WNl+7JEmSpJ7zzkySpmWvb3laVZWkxhEGIMlZdJeWsG7dOmZmZkbexq5du4aud87Td+9luocsNdd8WaalT3nMMpxZhutTFuhfHkmSJGktWm7R4q4kh1XVznb5x92tfQdw5MByR7S2HcDGOe0zwzZcVRcBFwFs2LChNm7cOGyxBc3MzDBsvTMGKsR7a/vpj9z+KFmmpU95zDKcWYbrUxboXx4NN/vNoN8KSpIkrU7LveXp5cDsHUA2AR8daH95u4vIc4D722UkVwHHJzm4TcB5fGuTJEmSJEkaatGRFkneTzdK4tAkd9LdBeQC4LIkZwJfAl7SFr8SOBnYBnwTeAVAVd2T5HzgurbcG6pq7uSekiRJkiRJeyxatKiql87z1vOHLFvA2fNsZwuwZaR0Y7B+jJeESJIkSZKklbPcy0MkSZIkSZImyqKFJEmSJEnqJYsWkiRJkiSpl5Z7y9N93uBcGd5KT5IkSZKk8XOkhSRJkiRJ6iWLFpIkSZIkqZcsWkiSJEmSpF6yaCFJkiRJknrJooUkSZIkSeolixaSJEmSJKmXvOWpJGnN8zbVkiRJq5MjLSRJkiRJUi9ZtJAkSZIkSb1k0UKSJEmSJPWSRQtJkiRJktRLTsQpSWtEku3A14EHgd1VtSHJIcAHgPXAduAlVXVvkgC/B5wMfBM4o6o+N+mMgxNiStJql2QL8ELg7qr6sdY2cr+bZBPwn9tm31hVF08q84077ucM+2JJq4gjLcZg/eYr9jwkacp+uqqOraoN7fVm4JNVdTTwyfYa4CTg6PY4C7hwxZNK0ur3HuDEOW0j9butyHEucBzwbODcJAdPPLkkrRIWLSRpbTsVmP3G7mLgRQPtl1TnGuCgJIdNI6AkrVZV9SngnjnNo/a7JwBbq+qeqroX2MojCyGStM/y8hBJWjsK+PMkBfz3qroIWFdVO9v7XwbWteeHA3cMrHtna9s50EaSs+i+EWTdunXMzMyMHGrXrl171jvn6btHXn/cFvoMg1n7zqyTYdbxWy05x2jUfne+9kcYR5+87rF73xdP6vfZ17+VvuYCsy1XX7P1NRdMN5tFC0laO36yqnYk+T5ga5K/G3yzqqoVNJasFT4uAtiwYUNt3Lhx5FAzMzPMrteH66i3n75x3vcGs/adWSfDrOO3WnJOwnL63UW2t9d98n9770d5y417978AC/Wje6Ovfyt9zQVmW66+ZutrLphuNi8PkaQ1oqp2tJ93Ax+huzb6rtnLPtrPu9viO4AjB1Y/orVJkvbOqP2u/bEkLWBNFi1u3HG/E2NK2qckeVySJ8w+B44HbgIuBza1xTYBH23PLwdens5zgPsHhjNLkpZv1H73KuD4JAe3CTiPb2295Xm2pJW0V2PDVsPt9SRpH7EO+EjX1bI/8L6q+rMk1wGXJTkT+BLwkrb8lXT98Ta6PvkVKx95OgZPtLdfcMoUk0ha7ZK8H9gIHJrkTrq7gFzACP1uVd2T5HzgurbcG6pq7uSekrTPGsecFj9dVV8ZeD17m6cLkmxur1/Lw2/zdBzdbZ6OG8P+JWmfV1W3A/9iSPtXgecPaS/g7BWIJklrVlW9dJ63Rup3q2oLsGWM0SRpzZjE5SHeXk+SJEmSJO21vR1p0cvb643jVk7LNTdv325b06c8ZhnOLMP1KQv0L48kSZK0Fu1t0aKXt9cbx62clmvuLaD6dtuaPuUxy3BmGa5PWaB/eSRJkqS1aK/+z37w9npJHnZ7varauS/eXm92gjcnd5Okzo077ucMZ5mXJEnSMix7TgtvrydJkiRJkiZpb0ZaeHs9SZIkSZI0McsuWnh7PUnSard+4LIVL+uTJEnqn+nMVilJkiRpVbPwK2klLHtOC0mSJEmSpEmyaCFJkiRJknrJooUkSXTDnG/ccf+0Y0iSJGmAc1pMyOw1fuc8fTcbpxtFkiRJkqRVyZEWkiRJkiSplxxpIUnSAGfDlyRJ6g9HWkiSJEmSpF5ypMUK8Fs7SZIkrWWe70qaFEdaSJIkSZKkXrJoIUmSJEmSesnLQ1aYQ+ckafUY7LMH2X9LkiStDEdaSJIkSZKkXnKkxRQ56kKSVqfZ/tu+W5IkabIsWkiSJEkaG7+YkzROXh7SE+s3XzHvtdOSJEmSJO2LHGkhSdIyOVGnJEnSZFm06BmH00mSJGmtcA4gSXvLy0MkSZogL/+TJElaPkda9JijLiRpdRpWpLBPlyRJGp1Fi1XCk11JWjvs0yXta+z3JC3XihctkpwI/B6wH/CHVXXBSmdY7YZ9g2fnL2k57JOnz8k8JcG+1R/P1++958THrXASSavBihYtkuwHvAN4AXAncF2Sy6vqlpXMsRYt9Xrpc56+m42TjSJplbBP7rfF+nVP7qW1w/5Ykua30iMtng1sq6rbAZJcCpwK2CGvoMVOhAdiKxqfAAAgAElEQVS/3XMon7Sm2SevYjfuuJ8zljHB52xfPsrkoPb/0sTZHzNavzasX/K8VVqbVrpocThwx8DrO4HjBhdIchZwVnu5K8kXlrGfQ4GvLCvhmP1qj7LA0vLkzaO174U+HRuzDGeW+S0lzw+sRJC9sM/1yYvpW5+9kOVmXU5fPob+f9UcV8w6CX3Iuer7Y1j7ffIo/dpi/dKYz1t7e8ww23L1NVtfc8F4s43UJ/duIs6qugi4aG+2keSzVbVhTJH2Sp+yQL/ymGU4swzXpyzQvzyTstb65MWYdTLMOhmrJetqybkarPU+ua/Z+poLzLZcfc3W11ww3WyPWuH97QCOHHh9RGuTJK08+2RJ6gf7Y0max0oXLa4Djk5yVJJHA6cBl69wBklSxz5ZkvrB/liS5rGil4dU1e4krwKuorud05aqunkCu9qrYXNj1qcs0K88ZhnOLMP1KQv0L8/I9tE+eTFmnQyzTsZqybpack7NCvbH0O/fR1+z9TUXmG25+pqtr7lgitlSVdPatyRJkiRJ0rxW+vIQSZIkSZKkJbFoIUmSJEmSemnNFS2SnJjkC0m2Jdk8wf1sT3JjkhuSfLa1HZJka5Lb2s+DW3uSvL1l+nySZw5sZ1Nb/rYkm5a47y1J7k5y00Db2Pad5Fnts21r62bELOcl2dGOzQ1JTh5473Vtu19IcsJA+9DfW5uQ6trW/oE2OdV8WY5McnWSW5LcnOTV0zo2C2RZ8WOT5DFJPpPkb1uW31po/SQHttfb2vvrl5txhCzvSfLFgeNy7KR/RwPL75fkb5J8bFrHZS3rwzHIhPvMMeaceB82xqwT71cmkHli/9bHnHNq5xfLyHpQkg8m+bsktyb5ib5m1fT64z79TadH59BLzDaVc+o5uXpzfj1Ctqket/To3HuEbFM7F1+SqlozD7qJi/4e+EHg0cDfAsdMaF/bgUPntP02sLk93wy8uT0/Gfg4EOA5wLWt/RDg9vbz4Pb84CXs+6eAZwI3TWLfwGfasmnrnjRilvOA/zBk2WPa7+RA4Kj2u9pvod8bcBlwWnv+TuDfLZDlMOCZ7fkTgP/V9rnix2aBLCt+bFrWx7fnBwDXts8wdH3g3wPvbM9PAz6w3IwjZHkP8OIhy0/077ct/+vA+4CPLXRcJ3lc1uqjL8eACfeZY8w58T5sjFkn2q9M6O9gIv/WJ5BzO1M6v1hG1ouBf9OePxo4qK9Z9/UHU+yP+/Q3TY/OoZeY7TymcE49Z1+9Ob8eIdtUjxs9OvceIdt7mNK5+FIea22kxbOBbVV1e1V9G7gUOHUF938q3X/AaT9fNNB+SXWuAQ5KchhwArC1qu6pqnuBrcCJi+2kqj4F3DOJfbf3vreqrqnur+6SgW0tNct8TgUuraoHquqLwDa639nQ31uryj0P+OCQzzUsy86q+lx7/nXgVuDwaRybBbKs+LFpn29Xe3lAe9QC6w8erw8Cz2/7GynjiFkWOi4T+/tNcgRwCvCH7fVCx3Vix2UN68UxmGSfOeacE+3Dxpx10v3KWE343/pK6N3fQJIn0v1P1rsBqurbVXVfH7MK6El/PGAqfyd9OodeYrb5TPScek6u3pxfj5BtPity3Pp07j1Ctvms6L+D+ay1osXhwB0Dr+9k4T/cvVHAnye5PslZrW1dVe1sz78MrFsk1zjzjmvfh7fne5vpVW0I0Za04WLLyPIk4L6q2j1qljas6hl01cOpHps5WWAKxybdsOgbgLvpOpW/X2D9Pfts79/f9jeWv+O5Wapq9ri8qR2XtyU5cG6WJe5z1N/R7wK/AXy3vV7ouE70uKxRfT4G0+yvFzWhPmzcGSfZr4zbJP+tj1vfzi/mcxTwj8Afpbvs5g+TPK6nWTXd49z3v+m+nUPPNdVz6kF9Or9eJBtM//9FenPuvVi2KZ+LL8laK1qspJ+sqmcCJwFnJ/mpwTdbZWmhqtXETHPfzYXADwHHAjuBt6zkzpM8HvgQ8Jqq+trgeyt9bIZkmcqxqaoHq+pY4Ai66uyPrsR+l5IlyY8Br2uZfpxumNlrJ50jyQuBu6vq+knvS/3Wgz7zYfrUhy2kT/3KQlbhv/Xenl/MsT/dUPYLq+oZwDfohojv0aOsmq7V8jfdqyzNVM+pB/X5v019Od8e1Of/RvblXHwUa61osQM4cuD1Ea1t7KpqR/t5N/ARuj/Gu9qQGNrPuxfJNc6849r3jvZ82Zmq6q72j+G7wLt4aPjsqFm+SjcEaf+lZklyAF2n9d6q+nBrnsqxGZZlmsem7f8+4GrgJxZYf88+2/tPbPsb69/xQJYT2/C+qqoHgD9i+cdllN/Rc4GfTbKdbljd84DfY8rHZY3p8zGYZn89rwn3YRMxoX5lnCb9b32senh+MZ87gTsHvqH7IF0Ro49ZNcXjvAr+pntzDj3XtM8bZ/Xp/Hop2fpy3FqW3px7L5BtWufiI4VdMw+6qv/tdEMWZycledoE9vM44AkDz/+K7rq6/5eHT0jz2+35KTx8ApPP1EMTmHyRbvKSg9vzQ5aYYT0Pn6hnbPvmkZOnnDxilsMGnv8a3bVYAE/j4ZPJ3E43kcy8vzfgT3n4hDX/foEcobtu6nfntK/4sVkgy4ofG+DJwEHt+WOB/wm8cL71gbN5+GRAly034whZDhs4br8LXLBSf79tnY08NDnfih+Xtfro0zFggn3mGDNOvA8bY9aJ9isT/DsY+7/1Meeb+vnFiHn/J/Aj7fl5LWcvs+7rD6bUH/fxb5oenUMvIdtUzqnnZOrN+fUI2aZ63OjRufcI2aZ6Lr5o7r3dQN8edDOc/i+664b+04T28YPtj+NvgZtn90N37dEngduATwz84gK8o2W6EdgwsK1X0k2qsg14xRL3/366oU7fofum48xx7hvYANzU1vl9ICNm+eO2r88Dl/PwjuM/te1+gYGZZOf7vbVj/ZmW8U+BAxfI8pN0Q9M+D9zQHidP49gskGXFjw3wz4G/afu8Cfh/FlofeEx7va29/4PLzThClr9ox+Um4E94aFbjif79DqyzkYf+R2bFj8tafvThGDDhPnOMOSfeh40x68T7lQn9LUzk3/oY8031/GIZeY8FPtv+Dv4/uhPXXmb1MZ3+uG9/0/ToHHqJ2aZyTj0nV2/Or0fINtXjRo/OvUfINtVz8cUeaRuWJEmSJEnqlbU2p4UkSZIkSVojLFpIkiRJkqResmghSZIkSZJ6yaKFJEmSJEnqJYsWkiRJkiSplyxaSJIkSZKkXrJoIUmSJEmSesmihSRJkiRJ6iWLFpIkSZIkqZcsWkiSJEmSpF6yaCFJkiRJknrJooUkSZIkSeolixaaiiTbk/zraecASPKeJG9c5rozSf7NPO+tT1JJ9t+7hJIkSZK0b7JoIUmSFpXkvCR/0p5/f5JdSfab4P7emeQ3J7V9SZqmKfSpy/6SbrVY6MtErW5+AyxJkkZSVf8bePyE9/Erk9y+JPXFSvSp0mrmSAtN07FJPp/k/iQfSPIYgCT/Nsm2JPckuTzJU1r7Iy63GKyoJnlqkr9s2/tKkg8MLPejSba2bX4hyUvmZDk4yRVJvp7k2iQ/NLDuv0xyXdvudUn+5bAPk2S/JL/T9n07cMqc989IcnvbxxeTnL63B1CSJEmS1jKLFpqmlwAnAkcB/xw4I8nzgP/a3jsM+BJw6RK3dz7w58DBwBHAfwNI8jhgK/A+4PuA04A/SHLMwLqnAb/V1t0GvKmtewhwBfB24EnAW4ErkjxpyP7/LfBC4BnABuDFs2+0DG8HTqqqJwD/ErhhiZ9LkpaszRn0H1tR+BtJ3p1kXZKPt6LpJ5Ic3JZ9TpK/SnJfkr9NsnFgO0e1QvDXk2wFDh1472FF5CSvSHJrW/b2JL88sOzGJHcmOSfJ3Ul2JnnFEj7HnqHMi20jyWOTvCXJl1qB+dNJHtve+9kkN7fPOJPk/1jOsVrseElam9ZKn9os60u6zJmLLg+/tOUxSf4kyVfb574uybr23hPb8dqZZEeSN2aBS2CSHNi28WMDbU9O8k9Jvi/JwUk+luQfk9zbnh8xz7b2ZJznGI+UTdNl0ULT9Paq+oequgf4H8CxwOnAlqr6XFU9ALwO+Ikk65ewve8APwA8paq+VVWfbu0vBLZX1R9V1e6q+hvgQ8DPD6z7kar6TFXtBt7bskA3WuK2qvrjtu77gb8DfmbI/l8C/G5V3dE+03+d8/53gR9L8tiq2llVNy/hM0nScvxfwAuAH6brrz4OvB54Mt1/+381yeF0Rdk3AocA/wH4UJInt228D7ie7sT6fGDTAvu7m66v/V7gFcDbkjxz4P1/BjwROBw4E3jHYDFgiRbaxu8Az6IrCB8C/Abw3SQ/DLwfeE377FcC/yPJowe2u+ixAljC8ZK0dq2VPnUcX9LNtallObKt+yvAP7X33gPsBp5K96Xe8cC8c060c/8PAy8daH4J8JdVdTfdsf4juvP972/7+f0lZBxmpGyaLosWmqYvDzz/Jt21fE+hG10BQFXtAr5K1ykv5jeAAJ9p36q9srX/AHBcq9zel+Q+uuLIP1skC3PzNF+aJ89TgDvmLDf7Ob4B/AJdR76zVbl/dAmfSZKW479V1V1VtQP4n8C1VfU3VfUt4CN0J2i/BFxZVVdW1XeraivwWeDkJN8P/Djwm1X1QFV9iq64PFRVXVFVf1+dv6Qb9favBhb5DvCGqvpOVV0J7AJ+ZMTPNHQbSR4FvBJ4dVXtqKoHq+qv2snvLwBXVNXWqvoOXXHjsXTFjVGOFQsdrxE/h6TVZ630qeP4km6u79AVK57a+t/rq+prbbTFycBrquobrejwNrrCyULeN2eZX2xtVNVXq+pDVfXNqvo6XdHl/1xCxofZi2yaEifiVN/8A12RAdhzWcWTgB3AN1rz9wBfa8/3FB6q6st0l2iQ5CeBTyT5FF0h4S+r6gV7m6f5fuDPhiy7k67KPLjcHlV1FXBVuiHLbwTexcP/AyRJ43LXwPN/GvL68XR9288nGTwpPQC4mq4Ie28ruM76Eg/v4/ZIchJwLt23kI+i66dvHFjkq+0kedZgcXip5tvGocBjgL8fss7cQvh3k9zBwwvPSzlWsPDxkrS2rZU+dRxf0s31x3Sf49IkBwF/AvwnuuNxAN2XdbPLPoqHf8E3zNXA9yQ5ju44H0tXGCLJ99AVF06kGy0C8IQk+1XVg0vIOmu52TQljrRQ37wfeEWSY5McCPwXumr29qr6R7rixS+lm/TylcDgtXg/P3Bd271A0V2S8THgh5O8LMkB7fHjGbiueQFXtnV/Mcn+SX4BOKZtc67L6IYHHtGG6G0eyLYuyamtCPMAXUX8uyMdGUkarzuAP66qgwYej6uqC+iKsAe3PmvW9w/bSOurP0Q3imFdVR1E13dm2PIT8BXgWwz892DA3EJ46E6udyxjPwsdL0lazX3qfF/SzfaV36ArnMwa/NLwO1X1W1V1DN0othcCL6c7Hg8Ahw4cj++tqqctFKQVHy6ju0TkpcDH2qgKgHPoRpQcV1XfC/xUax92bObNvNxsmh6LFuqVqvoE8Jt0nfVOupPQwaFa/xb4j3SXjDwN+KuB934cuDbJLuByuqHCt7eO7vi2nX+gqzK/GThwCXm+Stf5ntP2+RvAC6vqK0MWfxdwFfC3wOforsmb9Sjg19v+76EbyvbvFtu/JE3QnwA/k+SEVgh+TLoJ3o6oqi/RDWv+rSSPbqPX5hsm/Gi6/vQfgd3tG8LjV+QT0I2eALYAb03ylPZZfqKd+F8GnJLk+UkOoOvLH+Dh/+1YqnmP19g+jKTVbDX3qYt9SXcDcFr74m/uZPM/neTpbRLLr9FdLvLdqtpJd1nLW5J8b5JHJfmhJEu5nON9dJf3nd6ez3oC3ciW+9o8HOcusI0bgJ9K8v1Jnkg3Tx4Ae5lNU+DlIZqKqlo/5/V5A8/fCbxznvU+Tne3kWHv/QZdUWHYe19gzi1IB947Y87rGbq7j8y+/jTdBG/D1t048Hw38GvtMesd7edOlnHNnSRNSlXdkeRU4LfpRrk9CHyGhwqqvwhcTFdo/WvgEuCgIdv5epJfpSsQHEh3nfblE/8AD/cf6CY/vo5uuPPfAidU1ReS/BLd3aQOpzuJ/Zmq+vaoO1jC8ZK0D1vNfWpVfTXJC4HfAy6km6Rz8Eu636T7TPcCf0lXSDikvffP6M7bj6AbSfwBuktGoBtxcQFwC13B4Xa6Lw4Xy3Ntkm/QXbby8YG3frft+yt0XwS+BXjRPNvYmuQDwOfb8m8GfnZgkWVl03SkqqadQZIkSZIk6RG8PESSJEmSJPWSRQtJkjQV7fbUu4Y8Tp92NklabVZLn5rknfPkHHp5uOTlIZIkSZIkqZd6PRHnoYceWuvXrx95vW984xs87nGPW3zBnlmNuVdjZliduVdjZliduceV+frrr/9KVT15DJF6YVif3Nffr7lGY67RmGt008621vpjWF198jj5GdcGP+PasNzPOHKfXFW9fTzrWc+q5bj66quXtd60rcbcqzFz1erMvRozV63O3OPKDHy2etCXjusxrE/u6+/XXKMx12jMNbppZ1tr/XGtsj55nPyMa4OfcW1Y7mcctU9edE6LJEcmuTrJLe06qVe39vOS7EhyQ3ucPLDO65JsS/KFJCcMtJ/Y2rYl2TxKNUaSJEmSJO1blnJ5yG7gnKr6XJInANcn2dree1tV/c7gwkmOAU4DnkZ3b91PJPnh9vY7gBcAdwLXJbm8qm4ZxweRJEmSJElry6JFi6raCexsz7+e5Fbg8AVWORW4tKoeAL6YZBvw7Pbetqq6HSDJpW1ZixaSJEmSJOkRRpqIM8l64BnAtcBzgVcleTnwWbrRGPfSFTSuGVjtTh4qctwxp/24Ifs4CzgLYN26dczMzIwSEYBdu3Yta71pW425V2NmWJ25V2NmWJ25V2NmSZIkaS1actEiyeOBDwGvqaqvJbkQOB+o9vMtwCv3NlBVXQRcBLBhw4bauHHjyNuYmZlhOetN22rMvRozw+rMvRozw+rMvRozS5IkSWvRkooWSQ6gK1i8t6o+DFBVdw28/y7gY+3lDuDIgdWPaG0s0C5JkiRJkvQwS7l7SIB3A7dW1VsH2g8bWOzngJva88uB05IcmOQo4GjgM8B1wNFJjkryaLrJOi8fz8eQJEmSVlaSLUnuTnLTQNshSbYmua39PLi1J8nb2130Pp/kmQPrbGrL35Zk0zQ+iyT11VJGWjwXeBlwY5IbWtvrgZcmOZbu8pDtwC8DVNXNSS6jm2BzN3B2VT0IkORVwFXAfsCWqrp5jJ9lr63ffMWe59svOGWKSSRJfeN/IyQN8R7g94FLBto2A5+sqguSbG6vXwucRPdl3tF087pdCByX5BDgXGAD3Xn19e0Oe/eu2KeQpBHMnhO958THrcj+lnL3kE8DGfLWlQus8ybgTUPar1xoPUmSJGm1qKpPtYnqB50KbGzPLwZm6IoWpwKXVFUB1yQ5qI1c3ghsrap7AJJsBU4E3j/h+JK0Kox09xBJkiRJC1pXVTvb8y8D69rzw3nknfQOX6D9ERa7y96+cPcrP+Pa4Gdc3c55+m5g5T7jPl+0GBzuK0mSJI1LVVWSGuP2FrzL3r5w9ys/49rgZ1zdzhi4PGQlPuOiE3FKkiRJWrK7Ziesbz/vbu3z3WFvoTvvSdI+z6KFJEmSND6XA7N3ANkEfHSg/eXtLiLPAe5vl5FcBRyf5OB2p5HjW5skCS8PkSRJkpYlyfvpJtI8NMmddHcBuQC4LMmZwJeAl7TFrwROBrYB3wReAVBV9yQ5H7iuLfeG2Uk5JUkWLSRJkqRlqaqXzvPW84csW8DZ82xnC7BljNEkac3w8hBJkiRJktRLFi0kSZIkSVIveXmIJGmfNXjb6+0XnDLFJJIkSRrGkRaSJEmSJKmXHGkxD799kyRJkiRpuhxpIUmSJEmSesmihSRJkiRJ6iUvD5EkaR6DlwpKkiRp5TnSQpIkSZIk9ZJFC0mSJEmS1EteHiJJ0hh41ylJkqTxc6SFJEmSJEnqJYsWkrRGJPm1JDcnuSnJ+5M8JslRSa5Nsi3JB5I8ui17YHu9rb2/frrpJUmSpEeyaCFJa0CSw4FfBTZU1Y8B+wGnAW8G3lZVTwXuBc5sq5wJ3Nva39aWkyRJknrFooUkrR37A49Nsj/wPcBO4HnAB9v7FwMvas9Pba9p7z8/SVYwqyRJkrQoJ+KUpDWgqnYk+R3gfwP/BPw5cD1wX1XtbovdCRzenh8O3NHW3Z3kfuBJwFcGt5vkLOAsgHXr1jEzM/Ow/e7atesRbX2w1FznPH33nufDlh98f9Biy86379V+vFaauUbT11zQ72ySpH6zaCFJa0CSg+lGTxwF3Af8KXDi3m63qi4CLgLYsGFDbdy48WHvz8zMMLetD5aa64zBO36c/sjlB98ftNiyw94fJddKM9dozDW6PmeTJPWbl4dI0trwr4EvVtU/VtV3gA8DzwUOapeLABwB7GjPdwBHArT3nwh8dWUjS5IkSQuzaCFJa8P/Bp6T5Hva3BTPB24BrgZe3JbZBHy0Pb+8vaa9/xdVVSuYV5IkSVqURQtJWgOq6lq6CTU/B9xI179fBLwW+PUk2+jmrHh3W+XdwJNa+68Dm1c8tCRJkrQI57SQpDWiqs4Fzp3TfDvw7CHLfgv4+ZXIJUmSJC2XIy0kSZIkSdL/3979B1lWlgce/z4yioguA5j0EqC2cTNrynXWSKYQ15Q1K5Hww3JMFSG4rMzgZGdrg8bEScXBbMX83MJNjCHG0kyEAFlWRGKWKYeNErQrlaqICKKjIGGCo8zUwPgDxhA3a8Y8+8d573Cn6dt9b/f98Z7b30/VrT73Pefe+7zd557z9nPe9z1VMmkhSZIkSZKqtGTSIiLOjIhPR8QDEfHliHhbKT8lIu6MiIfLz5NLeUTEH0TE3oj4YkSc3fVem8v2D0fE5l6fKUmSJEmS1E9PiyPA9sx8CXAucFVEvIRm0ra7MnMdcBdPT+J2IbCuPLYBH4AmyUEz1voVNOOr39VJdEiSJEmSJM23ZNIiMw9m5n1l+e+BB4HTgU3AjWWzG4E3lOVNwE3Z+AywNiJOA34SuDMzv52ZTwB3AhcMtTaSJHWZ3bGb2R27Jx2GJEmSlmmgu4dExCzwcuBuYCYzD5ZVjwEzZfl04NGul+0vZb3K53/GNpoeGszMzDA3NzdIiAA89dRTfb9u+/ojS26znBiWY5C4a9HGmKGdcbcxZmhn3G2MWZIkSZpGfSctIuL5wJ8Bv5CZ34mIo+syMyMihxFQZu4EdgJs2LAhN27cOPB7zM3N0e/rtvRxBW7f5YPHsByDxF2LNsYM7Yy7jTFDO+NuY8ySpLpExC8CPwsksAe4EjgNuAU4FbgXeFNmfi8ijgduAn4M+BbwM5m5bxJxS1Jt+rp7SEQ8myZhcXNmfqwUP16GfVB+HirlB4Azu15+RinrVS5JkiRNjYg4Hfh5YENmvhQ4DrgMeDfw3sz8YeAJYGt5yVbgiVL+3rKdJIn+7h4SwHXAg5n5e12rdgGdO4BsBm7vKr+i3EXkXOBwGUbyCeD8iDi5TMB5fimTJEmSps0a4ISIWAM8DzgIvAa4rayfPydcZ66424DzortbsyStYv0MD3kV8CZgT0TcX8reCVwD3BoRW4GvAZeWdXcAFwF7ge/SdIUjM78dEb8J3FO2+43M/PZQaiFJ0gp1Juzcd83FE45EUttl5oGI+F3g68D/BT5JMxzkyczsTKjWPb/b0bnfMvNIRBymGULyzbEGLkkVWjJpkZl/DfTK9J63wPYJXNXjva4Hrh8kQEmSJKlNSq/iTcBZwJPARxnCXfOWmrB+NUwkbR2ng3Vst87NLMZVx4HuHiJJkiRpST8BfDUzvwEQER+j6b28NiLWlN4W3fO7deZ+21+Gk5xEMyHnMZaasH41TCRtHaeDdWy3zs0sbrjgxLHUsa+JOFe72R27j3YbliRpOWZ37GbPgcOeT6TV4evAuRHxvDI3xXnAA8CngUvKNvPnhOvMFXcJ8KnSe1mSVj2TFpIkSdIQZebdNBNq3kdzu9Nn0fSQeAfw9ojYSzNnxXXlJdcBp5bytwM7xh60JFXK4SGSJA3ISTslLSUz3wW8a17xI8A5C2z7j8BPjyMuSWobkxaSpKnXPSTDRIMkSVJ7ODxEkiRJkiRVyZ4WkiQt03In1bTnhyRJUn9MWkiS1MW7e0iSJNXD4SGSJEmSJKlK9rSQJGnIHP4hSZI0HPa0kCRJkiRJVbKnhSRpVXHOCkmSpPawp4UkSZIkSarSqu1p4ZU2SZIkSZLqZk8LSZIkSZJUJZMWkiRJkiSpSiYtJEmSJElSlUxaSJIkSZKkKpm0kCRJkiRJVTJpIUmSJEmSqmTSQpKmRESsjYjbIuIrEfFgRLwyIk6JiDsj4uHy8+SybUTEH0TE3oj4YkScPen4JUmSpPlMWkjS9LgW+IvM/BHgZcCDwA7grsxcB9xVngNcCKwrj23AB8YfriRJkrQ4kxaSNAUi4iTg1cB1AJn5vcx8EtgE3Fg2uxF4Q1neBNyUjc8AayPitDGHLUmSJC1qzaQDkCQNxVnAN4A/iYiXAfcCbwNmMvNg2eYxYKYsnw482vX6/aXsYFcZEbGNpicGMzMzzM3NHfOhTz311DPKatCJa/v6I5MO5ejvZ/v6I8ycwDNiquH3V/vfsTbGNbiaY5Mk1c2khSRNhzXA2cBbM/PuiLiWp4eCAJCZGRE5yJtm5k5gJ8CGDRty48aNx6yfm5tjflkNOnFt2bF70qGw7/KNAGzZsZvt64/wnj1rFlw/SbX/HWtjXIOrOTZJUt0cHiJJ02E/sD8z7y7Pb6NJYjzeGfZRfh4q6w8AZ3a9/oxSJkmSJFXDpIUkTYHMfAx4NCJeXIrOAx4AdgGbS9lm4PayvAu4otxF5FzgcNcwklu03E8AABrvSURBVFab3bGbPQcOM1tBLwto4qklFkmSpLZxeIgkTY+3AjdHxHOAR4AraZLTt0bEVuBrwKVl2zuAi4C9wHfLtpIkSVJVlkxaRMT1wOuAQ5n50lL2a8B/ppn0DeCdmXlHWXc1sBX4PvDzmfmJUn4Bze34jgM+lJnXDLcqkrS6Zeb9wIYFVp23wLYJXDXyoCRJkqQV6KenxQ3AHwI3zSt/b2b+bndBRLwEuAz4t8APAX8ZEf+mrH4/8Fqacdf3RMSuzHxgBbGPXXf33n3XXDzBSCRJkiRJmn5LJi0y868iYrbP99sE3JKZ/w/4akTsBc4p6/Zm5iMAEXFL2bZVSQtJkiRJkjQ+K5nT4i0RcQXwOWB7Zj4BnA58pmub/aUM4NF55a9Y6E0jYhuwDWBmZmZZ9/Tu517g29cfGfh9u43iXuNtvId5G2OGdsbdxpihnXG3MWZJkiRpGi03afEB4DeBLD/fA7x5GAFl5k5gJ8CGDRtyOff07ude4FtWOJP7vssXf//laOM9zNsYM7Qz7jbGDO2Mu40xS5LqEhFrgQ8BL6VpM78ZeAj4CDAL7AMuzcwnIiJo5n67iGZy5C2Zed8Ewpak6izrlqeZ+Xhmfj8z/xn4Y54eAnIAOLNr0zNKWa9ySZIkaRpdC/xFZv4I8DLgQWAHcFdmrgPuKs8BLgTWlcc2mguEkiSWmbSIiNO6nv4U8KWyvAu4LCKOj4izaA68nwXuAdZFxFnlVnyXlW0lSZKkqRIRJwGvBq4DyMzvZeaTNHO63Vg2uxF4Q1neBNyUjc8Aa+e1tyVp1ernlqcfBjYCL4yI/cC7gI0R8aM0Xd32Af8FIDO/HBG30kyweQS4KjO/X97nLcAnaG55en1mfnnotZEkSZIm7yzgG8CfRMTLgHuBtwEzmXmwbPMYMFOWT+eZ87+dDhzsKlty7rfVMCeTdZwO1rHdOvNDjquO/dw95I0LFF+3yPa/Dfz2AuV3AHcMFJ0kSZLUPmuAs4G3ZubdEXEtTw8FASAzMyJykDddau631TAnk3WcDtax3TrzQ95wwYljqeOyhodIkiRJ6mk/sD8z7y7Pb6NJYjzeGfZRfh4q653/TZJ6MGkhSZIkDVFmPgY8GhEvLkXn0Qyf3gVsLmWbgdvL8i7gimicCxzuGkYiSavacm95KkmSJKm3twI3l0noHwGupLlgeGtEbAW+Blxatr2D5nane2lueXrl+MOVpDqZtJAkaYJmy7hQgH3XXDzBSCQNU2beD2xYYNV5C2ybwFUjD0qSWsikhSSplfxnX5IkafqZtJAkSZKkAZk8l8bDiTglSarQ7I7dxzSIJUmSViN7WkiSWs9/7iVJkqaTPS0kSZIkSVKVTFpIkiRJkqQqmbSQJEmSJElVMmkhSZIkSZKq5ESckiRVwglFJUmSjmXSQpKkFupOcOy75uIJRiJJkjQ6Dg+RJEmSJElVMmkhSZIkSZKq5PCQZbJbriRJkrS6OPeQNH72tJAkSZIkSVUyaSFJkiRJkqrk8BBJkiRJVRrHkGyHfUt1M2khSVLFbExLkqTVzOEhkiRJkiSpSiYtJEmSJElSlUxaSNIUiYjjIuLzEfHx8vysiLg7IvZGxEci4jml/PjyfG9ZPzvJuCVJkqSFmLSQpOnyNuDBrufvBt6bmT8MPAFsLeVbgSdK+XvLdpIkSVJVTFpI0pSIiDOAi4EPlecBvAa4rWxyI/CGsrypPKesP69sL0lSK83u2H30IWl6mLSQpOnx+8AvA/9cnp8KPJmZR8rz/cDpZfl04FGAsv5w2V6SJEmqhrc8laQpEBGvAw5l5r0RsXGI77sN2AYwMzPD3NzcMeufeuqpZ5SNy/b1R3qumzlh8fWTstK4un/X3e+z0r/BJP+OizGuwdQaF9QdmzRM3qZaGr5VlbSwq5ikKfYq4PURcRHwXOBfANcCayNiTelNcQZwoGx/ADgT2B8Ra4CTgG/Nf9PM3AnsBNiwYUNu3LjxmPVzc3PMLxuXLYsc07evP8J79tR3iltpXPsu33h0+Zj67/mHZv0yG8iT/DsuxrgGU2tcUHdskqS6Ldlyiojrgc4VvJeWslOAjwCzwD7g0sx8ooyHvha4CPgusCUz7yuv2Qz8t/K2v5WZNyJJGorMvBq4GqD0tPilzLw8Ij4KXALcAmwGbi8v2VWe/01Z/6nMzHHHPSiTz5KkUbKnhFSffua0uAG4YF7ZDuCuzFwH3FWeA1wIrCuPbcAH4GiS413AK4BzgHdFxMkrDV6StKR3AG+PiL00c1ZcV8qvA04t5W/n6eO4JEmSVI0le1pk5l9FxOy84k3AxrJ8IzBH0zDeBNxUrtZ9JiLWRsRpZds7M/PbABFxJ00i5MMrroEk6RiZOUdzXCYzH6FJFs/f5h+Bnx5rYJK0ykTEccDngAOZ+bqIOIum59upwL3AmzLzexFxPHAT8GM0Q/V+JjP3TShszWMvP2myljuwdiYzD5blx4CZsnx0NvqiM1N9r/JnWGrSt370muxpVJOyDWtiqTZOUtXGmKGdcbcxZmhn3G2MWZJUpbcBD9LMMwTwbuC9mXlLRHwQ2ErTM3kr8ERm/nBEXFa2+5lJBKzR6yRBHH4i9WfFs5RlZkbE0MZBLzXpWz96Tfa02KRtK1ImQIOVHXzaOElVG2OGdsbdxpihnXG3MWZJUl0i4gzgYuC3aYbpBfAa4D+WTW4Efo0mabGpLAPcBvxhREQb5hoapmn+Z97eGtLyLTdp8XhEnJaZB8vwj0OlvDMbfUdnpvoDPD2cpFM+t8zPliRJkmr3+8AvAy8oz08Fnix3c4Jjex4f7ZWcmUci4nDZ/pvdb1jzbaiHodMrutftnd938+3MnND8XH/6ST1fP/89+v3c+Trv0U9v7YW27VWPjvfdfPvR5e76tP3v2A/r2G6d/XlcdVxu0qIz6/w1PHM2+rdExC00k24eLomNTwD/vWvyzfMps9xLkiRJ0yQiOnfeu7fc0Wkoar4N9TAc7RXd1Yt5/r8rnVtHd98C+hmvhwXXL/m583Teo6/e2kdjfjrenrepXuSzoP1/x35Yx3br7M83XHDiWOrYzy1PP0zTS+KFEbGf5i4g1wC3RsRW4GvApWXzO2hud7qX5panVwJk5rcj4jeBe8p2v9GZlFOSJEmaMq8CXh8RFwHPpZnT4lpgbUSsKb0tOj2S4eneyvsjYg1wEs2EnJK06vVz95A39lh13gLbJnBVj/e5Hrh+oOgkSZKklsnMqym9iktPi1/KzMsj4qPAJTR3EJnfW3kz8Ddl/adW23wWNXIeCqkOK56IU5IkjYcNaKn13gHcEhG/BXweuK6UXwf8aUTsBb4NXDah+CSpOiYtJEmSpBHJzDnKBPSZ+QhwzgLb/CPw02MNTJJawqSFJEmSpFayB5o0/UxaSJIkSZpa3YmNfddcPMFIJC2HSQtJkqaEDXNJavTqgdEpn8ZjpOcATSuTFpIkSZJGqrZ/qB1WIrWHSQtJkiRJGjITI9JwPGvSAUiSJEmSJC3EnhaSJE2h2rpiS9Iw2YtBWj3saSFJkiRJkqpkTwtJkiRJI2GPCEkrZdJCklQ9G72SJDUc/qfVxuEhkiRJkiSpSva0GLJO5tOspySpFl6Vk6TVxf9JNE1MWkiStMrtOXCYLTZwJWliupPLN1xw4pLbLFYmTRuHh0iSJEmSpCqZtJAkSZIkSVVyeIgkSZKkiXB4g6Sl2NNCkiRJkiRVyZ4WkiRJklbEuxTVz7+R2sqkhSRJkiRNIYffaBqYtJAkSZI0NP6jLGmYTFpIkiRJGhuTGpIGYdJCkiRJkiqx58BhtpjYkY4yaTEiTnQjSZIkSdLKmLSQpCkQEWcCNwEzQAI7M/PaiDgF+AgwC+wDLs3MJyIigGuBi4DvAlsy875JxK7x6iTVTahLkpbLC7Qap6lPWjhmTtIqcQTYnpn3RcQLgHsj4k5gC3BXZl4TETuAHcA7gAuBdeXxCuAD5ackSZpygyQdTFBo0qY+aSFJq0FmHgQOluW/j4gHgdOBTcDGstmNwBxN0mITcFNmJvCZiFgbEaeV99EqZuNUkiTVZEVJi4jYB/w98H3gSGZusCuyJE1WRMwCLwfuBma6EhGP0QwfgSah8WjXy/aXMpMWkiStIoMMG7QXuyZhGD0t/kNmfrPr+Q7siixJExERzwf+DPiFzPxOky9uZGZGRA74ftuAbQAzMzPMzc0ds/6pp556RtkobF9/ZKDtZ04Y/DXjUFNc3X+3XnGN42+7mHHtX4MyrsHVHNsoOM+QJA3PKIaH2BVZkiYgIp5Nk7C4OTM/Voof7xxrI+I04FApPwCc2fXyM0rZMTJzJ7ATYMOGDblx48Zj1s/NzTG/bFiOvZoz2Olq+/ojvGdPfSMga4pr3+Ubjy6/7+bbF4yre5tJGOX+tRLGNbiaYxsR5xmSpCFZacspgU+WK3d/VBq3K+qKvNRVvX50Z/NruKLVbx3aeBWijTFDO+NuY8zQzrjbGHO5Sncd8GBm/l7Xql3AZuCa8vP2rvK3RMQtNA3jwyaRJWk4nGdIbeScRqrVSpMWP56ZByLiB4E7I+Ir3SuX0xV5qat6/ejO5m+pYNxVv1eq2ngVoo0xQzvjbmPM0M642xgz8CrgTcCeiLi/lL2TJllxa0RsBb4GXFrW3UHTDXkvTVfkK8cbriatu3G6ff0EA5GmnPMMSdLKrChpkZkHys9DEfHnwDmssCuyJGlwmfnXQPRYfd4C2ydw1UiDkqRVblrnGVrIuHo31zQ30KjUUMf33Xz70eWlEtsr7Rk/raa5jp39c1x1XHbSIiJOBJ5VurydCJwP/AZ2RX4Gu1pJkiStLtM2z9BSxtW7uaa5gUalbXVczvxHLe3VOpBprmPn+37DBSeOpY7PWsFrZ4C/jogvAJ8FdmfmX9AkK14bEQ8DP1GeQ9MV+RGarsh/DPzcCj5bkiRJqlIf8wzBMy/uXRGNc1lFF/ckaSnLTuFl5iPAyxYo/xYT7oq858DhKuaykCSpzTo9Be0lKA3MeYakynhOa6/29DuSJEmSWsB5hrSaOBReo2bSQpJUjVl7yUmSJKmLSQtJkrQor6JJWoiJZi3Gc4eGxaSFJEnqm41QSVIvJrI0Ciu5e4gkSZIkSYua3bHbhIaWzZ4WkiRpWex1IUmSRs2eFpIkSZIkqUr2tJAkSZIktU6nx193bz97AU4fkxZj5pdIkiRJkqT+mLSQJEmSJFXB3hOaz6TFBPnlkyRJkqSV8c4k082khSRJkiRp5DrJhe3rj7BxsqGoRUxaSJImyqsjkiSpX4O0G2xjTAeTFpWY3bHbjKMkqbUc8ihJGsRS541xJBw8d7WDSQtJkjQSNgYlSf2wR4QWY9JCkiSNlckMqd38B1Nt1mv/9dxUr2dNOgBJkiRJkqSF2NOiMmb4JEltt5yrsJ7/JEk16pyfPDdNjkkLSZI0MXYzlyRJizFpUTGvOkmaZv6zql46+4Z31ZIktYm9MkbDpIUkSRq55SapTOBLksZtoXNWr/NYr9u1bl9/hC07dnvuGgKTFpIkSaqayStJ6m3aj5EmLVpioczeNO6QkiT14rlQklSbQXoSLpRcmPaEwzCYtJAkSZK0KOchkpan13dnOcmO1ZrUMGkhSZJayytUkqRpMcg5bTUlEk1atJgNNUmSJme1X/mSJI3OIJOBTjuTFlOiVwLDBpUkabVwzgtJ0mq30nNhjRfGTVpMoaWycrXsfJJWh9V6VUCrxyC3wZMkaZLaeM4yaSFJkqbWMBpnw0j82/NRkjQp/VxAWmqbSV6EGnvSIiIuAK4FjgM+lJnXjDuG1W6QHc7GlTTdPCZrtVrqXNjr/De7Yzfb1x9hyzIbgG28wqXxqPF4bE85aXWr5Rgw1qRFRBwHvB94LbAfuCcidmXmA+OMQ/2zcSVNL4/JUm/jbqgNMgZ5ubPLe+6uV03H41r+SZGkjnH3tDgH2JuZjwBExC3AJsAGcst0Tmj9Xm2atKUafsNoGEot5DFZqtig3XmXOieP45/Rzrmyn/On59hjjO14bFJCUttEZo7vwyIuAS7IzJ8tz98EvCIz39K1zTZgW3n6YuChZXzUC4FvrjDcSWhj3G2MGdoZdxtjhnbGPayY/1Vm/sAQ3mckhnRMrvXva1yDMa7BGNfgJh1b64/Hpbytx+Rhso7TwTpOh+XWcaBjcnUTcWbmTmDnSt4jIj6XmRuGFNLYtDHuNsYM7Yy7jTFDO+NuY8yjstQxudbflXENxrgGY1yDqzm2NmnrMXmYrON0sI7TYVx1fNaoP2CeA8CZXc/PKGWSpPHzmCxJdfB4LEk9jDtpcQ+wLiLOiojnAJcBu8YcgySp4TFZkurg8ViSehjr8JDMPBIRbwE+QXM7p+sz88sj+KgVDS+ZoDbG3caYoZ1xtzFmaGfcbYx5YEM6Jtf6uzKuwRjXYIxrcDXHNnFDbCOvht+zdZwO1nE6jKWOY52IU5IkSZIkqV/jHh4iSZIkSZLUF5MWkiRJkiSpSlOXtIiICyLioYjYGxE7JhzL9RFxKCK+1FV2SkTcGREPl58nl/KIiD8ocX8xIs7ues3msv3DEbF5xDGfGRGfjogHIuLLEfG2lsT93Ij4bER8ocT966X8rIi4u8T3kTK5FRFxfHm+t6yf7Xqvq0v5QxHxk6OMu3zecRHx+Yj4eIti3hcReyLi/oj4XCmrfR9ZGxG3RcRXIuLBiHhl7THXrKZjbUev41ct5n/Xa7HQd2PSMQFExC+Wv+OXIuLDEfHcCcXR97m8grh+p/wdvxgRfx4Ra2uIq2vd9ojIiHjhuONaDWo8Ls83yPdpOefiiPix0j7ZW14bi33GCOo38nZ0BXUceZu7177c6zNGJUbYRq+hjjHi9vxQ99XMnJoHzcRFfwe8CHgO8AXgJROM59XA2cCXusr+B7CjLO8A3l2WLwL+DxDAucDdpfwU4JHy8+SyfPIIYz4NOLssvwD4W+AlLYg7gOeX5WcDd5d4bgUuK+UfBP5rWf454INl+TLgI2X5JWW/OR44q+xPx414P3k78L+Aj5fnbYh5H/DCeWW17yM3Aj9blp8DrK095lofVHas7YprwePXpOPqiu+Y73otj4W+GxXEdDrwVeCE8vxWYMuEYun7XF5BXOcDa8ryu2uJq5SfSTPJ5Nfmnz98DOX3XuVxuZ/9Y5jnYuCzZdsor71wsc8YQf1G3o6uoI4jbXMvti/3+owR7q8jaaPXUkdG3J4f5r468YPXkH/xrwQ+0fX8auDqCcc0y7EH5oeA08ryacBDZfmPgDfO3w54I/BHXeXHbDeG+G8HXtumuIHnAfcBrwC+ydMNuKP7B03D6ZVleU3ZLubvM93bjSjWM4C7gNcAHy8xVB1z+YyFDnLV7iPASTT/AEVbYq75QYXH2h5x3g68dtJxlFiO+a5POp6uuBb8bkz6QZO0eJSmEbSmHB/Pn2A8s/RxLp90XPPW/RRwcy1xAbcBL1vo/OFjKL/zVhyXF9o/hnUuLuu+0lV+dLtJfWcZcju6tjoygjZ3r32ZRdrII6rbyNroFdVxHyNqzw97X5224SGdRk7H/lJWk5nMPFiWHwNmynKv2CdWp9K16eU0GdTq4y5duO4HDgF30mQwn8zMIwvEcDS+sv4wcOoE4v594JeBfy7PT21BzAAJfDIi7o2IbaWs5n3kLOAbwJ+Ubn4fiogTK4+5ZtX/HuYdv2ow/7tei17fjYnKzAPA7wJfBw4ChzPzk5ON6hi9jh01eTPNla2Ji4hNwIHM/MKkY5li1R+XFzGsc/HpZXl++WKfMTIjakdXUccRt7l7lS/WRh6FUbbRa6njKNvzQ91Xpy1p0SrZpJdy0nEsJCKeD/wZ8AuZ+Z3udbXGnZnfz8wfpcmMngP8yIRDWlREvA44lJn3TjqWZfjxzDwbuBC4KiJe3b2ywn1kDU131A9k5suBf6DpjnZUhTFrmRY7fk0onpq/60t+NyahjG/dRJNU+SHgxIj4T5ONamE1Hjsi4leAI8DNFcTyPOCdwK9OOhbVbxzfp3F8xqTb0aP+jLa1uQdV+Xl7mCbenu/3M6YtaXGAZsxkxxmlrCaPR8RpAOXnoVLeK/ax1ykink1zoL05Mz/Wlrg7MvNJ4NM0XarWRsSaBWI4Gl9ZfxLwLcYb96uA10fEPuAWmu5n11YeM3D0KiiZeQj4c5oTVs37yH5gf2Z2rrrfRvOPWs0x16za30OP49ekPeO7HhH/c7IhHdXruzFpPwF8NTO/kZn/BHwM+PcTjqlbr2PHxEXEFuB1wOWlMThp/5om+fSF8h04A7gvIv7lRKOaPtUel/swrHPxgbI8v3yxzxi6Ebejq6hjx4ja3L3Kv7XIZwzbqNvoNdRx1O35oe6r05a0uAdYV2ZdfQ7NRCi7JhzTfLuAzWV5M81Yt075FWVm1nNpusIepBn7dH5EnFyuPJ1fykaizOp6HfBgZv5ei+L+gSizpEfECTTjBx+kOZBe0iPuTn0uAT5VGne7gMuimQX4LGAdzSQyQ5eZV2fmGZk5S7OvfiozL685ZoCIODEiXtBZpvnbfomK95HMfAx4NCJeXIrOAx6oOebKVXmsXeT4NVE9vutV9BpY5LsxaV8Hzo2I55W/63k0x/Ra9Dp2TFREXEDTnfn1mfndSccDkJl7MvMHM3O2fAf200xU+NiEQ5s2VR6X+zSUc3FZ952IOLccN65g4TbUyL6zo25HV1LHUbe5F9yXy2t6fcZQjaGNPvE6jro9P/R9dbEJL9r4oJnZ9G9pxlb9yoRj+TDNWNx/ojlJb6UZq3QX8DDwl8ApZdsA3l/i3gNs6HqfNwN7y+PKEcf84zRddL4I3F8eF7Ug7n8HfL7E/SXgV0v5i2gODnuBjwLHl/Lnlud7y/oXdb3Xr5T6PESZ5XYM+8pGnp6ZuOqYS3xfKI8vd75nLdhHfhT4XNlH/jfNDMdVx1zzg4qOtV0xLXj8mnRc82I8+l2v5bHQd2PSMZW4fh34Sjmm/2nnWDiBOPo+l1cQ116ascWd/f+DNcQ1b/0+nIhzVL/76o7L/ewfwzwXAxvKMePvgD+kTDI8ru9sr/PQlNVx5G3uXvtyr88Y8T67kRG00SddR8bQnh/mvtp5oSRJkiRJUlWmbXiIJEmSJEmaEiYtJEmSJElSlUxaSJIkSZKkKpm0kCRJkiRJVTJpIUmSJEmSqmTSQpIkSZIkVcmkhSRJkiRJqtL/ByQkRnIYbk3dAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ INSPECTING HISTOGRAM:\n", "fig = plt.figure(figsize=(15,10))\n", "ax = plt.gca()\n", "data.hist(bins=100, ax=ax, layout=(3, 3), column=[\"longitude\", \"latitude\", \"housing_median_age\", \"total_rooms\", \"total_bedrooms\", \n", " \"population\", \"households\", \"median_income\", \"median_house_value\"])\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 308 }, "id": "zGjZbXO22t8y", "outputId": "2b39d4f4-1d73-4c6a-f28d-2e8e749009b4" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAESCAYAAAD38s6aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dd3xc1ZXA8d+ZUe/VkmzJkovcca9gUwzYphmSkIQQWkJCsiEhIckS2PRN2GwaWdI2lJDAUkMnmF5tAthYrrLlgpusLlnV6tLc/WOeQBhJluV586ac7+czH4/ezHv3PDEc3TnvvnvFGINSSqnQ43I6AKWUUvbQBK+UUiFKE7xSSoUoTfBKKRWiNMErpVSI0gSvlFIhKuASvIjcIyI1IlLso+ONFZGXRKRERHaKSIEvjquUUoEu4BI88HdglQ+Pdx/wa2PMVGAhUOPDYyulVMAKuARvjFkL1PffJiITROQFESkSkXUiMmU4xxKRaUCEMeZl69hHjTFtvo9aKaUCT8Al+EHcCXzDGDMP+C7w52HuNwloFJEnRGSziPxaRNy2RamUUgEkwukAjkdEEoBTgUdFpG9ztPXaJ4H/HGC3cmPMSrzntwyYA5QCjwDXAH+1N2qllHJewCd4vN8yGo0xs499wRjzBPDEEPuWAVuMMfsBROQpYDGa4JVSYSDgSzTGmGbggIh8GkC8Zg1z9/eAFBHJtH5eDuy0IUyllAo4AZfgReQh4B1gsoiUici1wOeBa0VkK7ADuHg4xzLG9OKt2b8qItsBAe6yJ3KllAosotMFK6VUaAq4HrxSSinfCKiLrBkZGaagoMDpMJRSKmgUFRXVGWMyB3otoBJ8QUEBGzdudDoMpZQKGiJyaLDXtESjlFIhShO8UkqFKE3wSikVojTBK6VUiNIEr5RSIUoTvFJKhShN8EopFaI0wSulVIjSBK+UUiEqoO5kVcHtwfWlH9t2+aKxDkSilALtwSulVMiytQcvIgeBFqAX6DHGzLezPaWUUh/yR4nmLGNMnR/aUUop1Y+WaJRSKkTZneAN8JKIFInIdTa3pZRSqh+7SzRLjTHlIjIKeFlEdhlj1vZ/g5X4rwMYO1ZHXCillK/Y2oM3xpRb/9YATwILB3jPncaY+caY+ZmZAy5KopRSagRsS/AiEi8iiX3PgRVAsV3tKaWU+ig7SzRZwJMi0tfOg8aYF2xsTymlVD+2JXhjzH5gll3HV0opNTQdJqmUUiFKE7xSSoUoTfBKKRWiNMErpVSI0gSvlFIhSueDV0opS6itaaA9eKWUClGa4JVSKkRpgldKqRClCV4ppUKUJnillApRmuCVUipEaYJXSqkQpQleKaVClCZ4pZQKUZrglVIqRGmCV0qpEKVz0YSAgebPgOCeQ0MpdfK0B6+UUiFKE7xSSoUoLdEon+nu9bC7qoWKpnbcIozPTMAYg4g4HZpSYUkTvPKJNdsq+eULu2jr6kUAA7y6q4Z39tfxh8/NZVxGvNMhKhV2NMGrk+LxGH76zx3c+84hclNj+ez8LMZnJtDrMWwra+T13TVc/Me3uPvqBSwcl+Z0uEqFFa3BqxHzeAw3P7GNe985xLVLx/GV0ydQmJWI2yVERbiYX5DGM19fSkZiNF++byP7a486HbJSYUUTvBqxX724m39sLOOGswv5wQVTcbs+XmvPS4vj3i8sxO0SvnTvRlo7exyIVKnwpAlejchjRWX85c19fH7RWG48p3DIC6l5aXH86fK57K9r5Tcv7fZjlEqFN03w6oTtqmrm+09u57SJ6fxk9fRhjZJZMiGdKxfn8/e3D7KptMEPUSql9CKrGtKxd8l29vTyf+8eIik2kv/57Bwi3cPvI9y0ajKvlFTz02d28NT1p+nwSaVspj14NWzGGJ7ZUsHBulZuv2w2mYnRJ7R/Ykwk3z53ElvLmni+uMqmKJVSfbQHr4ZtU2kDmw838q1zCjl1QsaIjvHJubnctW4/v35xN+dOy/rINwCdU0cp39IevBqWyqZ2nt5SwfjMeL6xvHDEx3G7hO+smMyBulae3VbhwwiVUsfSHnwYGqinPFQvuaO7lwfXlxIb5eaz8/MGHA55Is6dmsWkrAT+9419XDxrDK6TPJ5SamC2J3gRcQMbgXJjzIV2t6d8yxjD45vKaGjr4ktLx5MYEzloKWUgg733386cwI2PbOX13TWcPTXLV+EqpfrxR4nmm0CJH9pRNnjr/Tp2VDSzcno2BT6cT+bCmaMZkxLLnWv3++yYSqmPsjXBi0gucAFwt53tKHs8v72SF4qrmD46iaUTR3ZRdTCRbhdXLM5n/YF69la3+PTYSikvu3vw/wPcBHgGe4OIXCciG0VkY21trc3hqOFau6eWbz6yhby0OD49L8+WMeufmZ9LlNvFAydQ8lFKDZ9tCV5ELgRqjDFFQ73PGHOnMWa+MWZ+ZmamXeGoE7BmWyVfuncj4zPiuWpxPlER9nxM0hOiOf+UbB4vKtM5apSygZ09+NOA1SJyEHgYWC4i99vYnjpJbV09/OSZHVz/4CZOyU3mka8sIS7a3uvwVy7Jp6Wzh6e36JBJpXzNtv97jTG3ALcAiMiZwHeNMVfY1Z4aGWMM9a1d/PmN97nnrQPUHe3i2qXjuGnVZKIj3La12ze6xhhDdlIMf3htL18/a6JOX6CUD+k4+BBmjGFXVQsv7ahmT00LtS2d9HoM1c0deIyh12Noau+mo9t7ieTUCencceUk5uX7b2EOEWHR+DSe3lLB4fo2xqbryk9K+YpfErwx5g3gDX+0pbyqmzu47M53WX+gHpd4p+zNSoohNtJNXJQblwguEQrS4xmVFMNNKyeTlxbnSKyz81J4obiK9QfqNcEr5UPagw9B28ub+Md7h0mMjeCHF07jktmjSU/4cGKwgW4+ciq5A0RHuJmVl8KmQw1cNGs0MZH2lYaUCic6F02I2VTawMMbSslNi+W175zJtUvHfSS5B6r5+an0eAxbyxqdDkWpkKEJPoQcrm/jyc3ljM+M5wunjiMtPsrpkIZtTEos2UkxFB3SxUCU8hVN8CGivauXhzaUkhgTwecWjrVt7LpdRIR5+amUNbRT1dThdDhKhYTgygJqUC+XVNHU3s3lC8cSFxWcl1Zm56XgFqHoUL3ToSgVEjTBh4CKxnbW769n0fh0clOdu1h6suKjI5iak8jmw430eAad3UIpNUya4EPAc9sriYtyc24ITLs7Lz+Ntq5edlXqBGRKnSxN8EFuw4F69te1cubkUcRGBf/wwsKsBJJiIvRiq1I+oAk+yP3htb3ER0ewoMB/d5/aySXC3PxU9lS30NTe7XQ4SgU1TfBBbFtZI+v21rFsYkbQjZoZyryxqRhgc6n24pU6GaGTFcLQvW8fIj7KzcJxodF775OeEM24jHg2HmrAGON0OEoFreAcTxfG+qYZaOvs4ekt5czLTw3JW/vn56fyaFEZB4+0OR2KUkFLe/BBqqi0gR6PYdG4dKdDscX00clER7jYeFDHxCs1Uprgg5AxhvcO1pOfHkd2cozT4dgiKsLFzNwUiiuaaOnQi61KjYSWaIJQWUM7dUe7OL1w6CUOB5o10hfv9Zf5+am8d7CeZ7dV8rmFY50OR6mgoz34ILSptIEIlzBjTLLTodgqNzWWUYnRPPzeYadDUSooaYIPMj0eD9vKmpg2OikkL672JyIsHJfG1sONbD2s0wgrdaI0wQeZvdVHae/uZU5eitOh+MXcsanER7m59+2DToeiVNDRBB9kisubiI10M3FUotOh+EVMpJtPz8/jn9sqqG3pdDocpYKKXmQNIl09HkqqmpmWk4zbJU6H4zdXLcnn3ncOct87B/nOislDvnegi8WXL9ILtCo8aQ8+iPxrXx0d3R5mjElyOhS/Gp+ZwIppWdz79kEdMqnUCdAEH0Se315JdISLiZkJTofid187cyLNHT0BOZxTqUClCT5I9HoMr5TUMDk7kQh3+P1nm5WXwtKJGdy1bj+tnT1Oh6NUUAi/TBGkthxupL61i6k54VWe6e/bKyZRd7SLu9btdzoUpYKCJvgg8dquatwuYVKYjJ4ZyNyxqZx/SjZ3rt1PTYsuzK3U8WiCDxKvltQwPz81JFZtOhk3rZxCd6+HW9eUOB2KUgFPE3wQKG9sZ1dVC2dPHeV0KI4ryIjn+rMm8vSWCl4tqXY6HKUCmib4IPD6rhoAlk/RBA/eETVTshO55YntevOTUkPQBB8E1u2tZUxKLBPCcHjkQKIiXNz2mdk0d3Rz/QOb6OrxOB2SUgFJE3yA6+n18Pa+IyydmIFI+Ny9ejzTRifxy0/NZMPBem5+fBu9Hl3aT6ljDWuqAhF5Avgr8LwxRrtLfrStvImWjh6WTcpwOpSAc/HsMRyub+M3L+3B7RJ+8clTnA5JqYAy3Llo/gx8Afi9iDwK/M0Ys3uoHUQkBlgLRFvtPGaM+fHJBBuO1u2pQwROm6AJfiBfX15Id6/h9lf3UtHUzlmTRhEXrVMsKQXDLNEYY14xxnwemAscBF4RkbdF5AsiEjnIbp3AcmPMLGA2sEpEFvsi6HDy1vu1nDImmdT4KKdDCVg3njuJX106k/cONPDnN/dR3axj5JWCE6jBi0g6cA3wJWAzcDvehP/yQO83XketHyOthxZKh+nB9aX8/V8HKTrUQGpcFA+uL9V5WIbwmfl5PHTdYrp7PPzvm/soqWx2OiSlHDesBC8iTwLrgDjgImPMamPMI8aYbwCDDu0QEbeIbAFqgJeNMesHeM91IrJRRDbW1taO7CxC1KEjrXgMjM+IdzqUoDAvP5WvnTWRzIRo7n/3EGv31GKM9ilU+BpuD/4uY8w0Y8wvjDGVACISDWCMmT/YTsaYXmPMbCAXWCgiMwZ4z53GmPnGmPmZmUMvIh1u9te14hIYmx7ndChBIzk2ki8vG8+MMcm8sKOKx4rK6O7VcQEqPA03wf98gG3vDLcRY0wj8Dqwarj7KDhQ10puahzREeE9PcGJiopwcdmCPM6eOorNhxv55sOb6dEkr8LQkMMNRCQbGAPEisgcoG8gdhLecs1Q+2YC3caYRhGJBc4FfnnyIYeegWrrnT29lDW0saxQv9WMhIhw9pQsoiPcPLe9kpjIbfz207P0XgIVVo43nmwl3gurucBt/ba3AP9xnH1zgHtFxI33m8I/jDHPjjDOsFN6pE3r7z6wdGIGnd29PLGpnNaOHs6Y/OF0D7qUnwp1QyZ4Y8y9eJP0p4wxj5/IgY0x24A5JxNcODtwROvvvrJ8yihqj3by0s5qRqfEUpgVvlMuq/ByvBLNFcaY+4ECEfn2sa8bY24bYDflA4eOtJGTHKv1dx8QET45J5eqpg4eKyrjG2cXkqA3Q6kwcLyLrH31gQQgcYCHskGvx1DW0Ka9dx+KinDx2QV5tHf38tTmcqfDUcovjleiucP696f+CUcBVDS2091rKEjX+jsMfBF6JPXznORYzpmaxQs7qvRGKBUWhjvZ2K/wDpVsB14AZgI3WuUb5WOH6tsAyE/THvxgRnpX72kTM9hU2sA/t1Vwy/lTiIvSUo0KXcMdB7/CGNMMXIh3LpqJwL/bFVS4O3SkldS4SJJiB5vmR42U2yVcMnsMjW3d/P7V950ORylbDTfB93VzLgAeNcY02RRP2DPGUFrfRr6WZ2xTkBHPvLGp3L1uP3uqW5wORynbDDfBPysiu4B5wKvWTUw6ZZ8Nmtq7aenoIS811ulQQtqqGdkkxETwg6eKdb4aFbKGO13wzcCpwHxjTDfQClxsZ2DhqqyhHYDcVK2/2yk+OoLvrpjMhgP1vLijyulwlLLFiSzZNwX4rIhcBVwKrLAnpPBW3tiOW4Ts5BinQwl5ly3IY1JWAv/13C46e3qdDkcpnxvudMH/B/wGWAossB6DziKpRu5wQxvZyTFEunW5XLtFuF384IJplNa3ce/bB50ORymfG+4YsfnANKPFSlt5jKG8oZ1ZeSlOhxIW+oZaTspK4Lcv7QGE604f72xQSvnQcLuJxUC2nYEoOHK0i84eD7kpeoHVn86fkUN3r4dXS6qdDkUpnxpuDz4D2CkiG/CutQqAMWa1LVGFqbIG7w1OeoHVv0YlxbBwXBrr99ezp7qFSToZmQoRw03wP7EzCOVV1thOpFvITIx2OpSwc/aULLYcbuTWNSXc+8WFToejlE8Md5jkm3jvYI20nr8HbLIxrrBU3tDOmJRY3C5dlMLf4qMjWD55FG/uqeWN3TVOh6OUTwx3FM2XgceAO6xNY4Cn7AoqHPV6DBWN7VqecdDiCekUpMdx65oSXeJPhYThXmS9HjgNaAYwxuwFRg25hzoh1c0d9HgMY/QOVsdEuFzccv5U9tYc5aENI5vMTKlAMtwE32mM6er7QUQiAB0y6UMf3MGqI2gctWJaFovHp/Hbl/dw5Gjn8XdQKoANN8G/KSL/gXfx7XOBR4F/2hdW+ClraCM20k1afJTToYQ1EeE/L55Ba2cPt64pcTocpU7KcBP8zUAtsB34CvAc8AO7ggpH5Y3t5KbGIqIXWJ02KSuRr5w+gSc2l/PW3jqnw1FqxIY7isaD96Lq14wxlxpj7tK7Wn2nu9dDdXOH1t8DyNeXT6QgPY7vP7Wdjm6dp0YFpyETvHj9RETqgN3AbhGpFZEf+Se88FDd3IHHwOhkTfCBIibSzX994hQOHWnj96/udTocpUbkeD34G/GOnllgjEkzxqQBi4DTRORG26MLE1VN3qn1dQbJwHLqxAwunZfLHWv3s+Vwo9PhKHXCjpfgrwQ+Z4w50LfBGLMfuAK4ys7AwkllcwdRbpdeYA1AP7xgGlmJ0dz4yBbaunqcDkepE3K8BB9pjPnYVSZjTC2gC4b6SFVTB1lJ0bj0AmvASY6L5DefmcXBI606qkYFneMl+K4RvqaGyRhDZVM7OVp/D1inTsjgy8vG88D6Up1xUgWV4002NktEmgfYLoAWjH2gsqmDjm6P1t8DXG5KLNlJMdzw8Ba+eXYhCdGD/69z+aKxfoxMqcEN2YM3xriNMUkDPBKNMVqi8YGSSu/fzxxN8AEtwu3iMwvy6Ozu5clNZbpQtwoKw50uWNmkL8FnJ2mCDwR9qzwNJDsphpXTs1mzvZKNBxtYMC7Nj5EpdeJ04U+HlVS2kBYfRXSk2+lQ1DAsmZDOhMx41myvpL5VL0OpwKYJ3mElVc3aew8iLhE+NTcXlwseLTqMR0s1KoDZluBFJE9EXheRnSKyQ0S+aVdbwaq9q5eDda16gTXIpMRFcdHM0Rw60qZz1aiAZmcPvgf4jjFmGrAYuF5EptnYXtDZXd2Cx+gF1mA0Oy+FaTlJvFxS/cGdyEoFGtsSvDGm0hizyXreApTgXQlKWT4cQaNj4IONiHDJnDHERLp5YnOZlmpUQPJLDV5ECoA5wPoBXrtORDaKyMba2lp/hBMwdlU2Ex/lJiVOR5wGo4ToCC44JYeyhnY2HKh3OhylPsb2BC8iCcDjwLeMMR+7acoYc6cxZr4xZn5mZqbd4QSUksoWpuQk6RQFQWxWbjITMuN5aWcVLR3dToej1EfYmuBFJBJvcn/AGPOEnW0FG2MMJVXNTM1JdDoUdRJEhNWzxtDda3i+uMrpcJT6CDtH0QjwV6DEGHObXe0Eq7KGdlo6epiak+R0KOokZSZGc8akTLYcbuT9mqNOh6PUB+zswZ+Gd7rh5SKyxXqcb2N7QWVXVQsAU7I1wYeCMyZlkhYfxbPbKujp9TgdjlKAvaNo3jLGiDFmpjFmtvV4zq72gk1JZTMiMCVbSzShINLt4rwZ2dS0dPJoUZnT4SgF6Fw0ftV/npMXd1SRFhfF01sqHIxI+dK0nCTy0+L47Ut7WD1rNPFDzDiplD/oVAUOqWrq0DtYQ4yIcP4pOdQd7eTOtfudDkcpTfBO6Ozppb61SxN8CMpLi+PCmTncuXY/1c16h6tyliZ4B1Q3d2KAnCS9gzUUfW/VFHo9htte2uN0KCrMaYJ3QGVTO6Bz0ISqvLQ4rlySz6NFh3m/psXpcFQY0wTvgKqmDmIiXTpFQQi7/qyJxEVF8OsXdzsdigpjmuAdUNXUQXZSDKJTFISstPgorjt9PC/uqGZzaYPT4agwpQnezzzGUNWsI2hC2YPrS3lwfSmJMRHER0fw7X9s5YF3DzkdlgpDmuD9rLGtm84ej15gDQPREW6WT87kQF0re3UKA+UATfB+1neBVXvw4WHBuDRS4yJ5cUcVHo/OGa/8SxO8n1U2dSBAlq7DGhYiXC7OnZZFZVMHz26vdDocFWY0wftZVVMH6QlRREXorz5czMxNITspht++tJuuHp2ITPmPZhk/815g1fp7OHGJsHJ6FoeOtHG/XmxVfqQJ3o86ur1TFOgNTuFnUlYip0/K5Hcv76G2pdPpcFSY0ATvR31zk+Ro/T3siAg/vmgaHT29/OqFXU6Ho8KEJng/qmzyJngdQROeJmQm8MWl43i0qIxNevOT8gNN8H7UN0VBcqxOURCuvrG8kKykaH789A56ddikspkmeD+qbGonJzlWpygIYwnREfzH+VPZXt6kF1yV7XTJGT/xeAzVzZ3MK0h1OhTlsNWzRvPEpnJ+8XwJSwszmJCZ4PM2+q8e1t/li8b6vC0VuLQH7yel9W109Xr0AqtCRPjVpTOJiXRz4yNb6OjudTokFaI0wftJSWUzoBdYlVdWUgy//NRMtpU18aOnizFG6/GBxmNM0P/x1RKNn5RUNusUBWFuoLLJDcsn8vvX3mdcRgL/duYEB6JSA2lo6+LB9aWUN7bzyHuH+dklM1g4Ls3psE6Y9uD9ZGdlCxmJ0US69VeuPvStcyZx0azR/PKFXdy9ThfqDgRN7d38+fX3qTvayemFmbR39/LV+4s+mCgwmGgP3k+Ky5sYk6JTFKiPcrmE331mFr0eDz9fU8KBulZ+fNH0E5qraLALqmpkXiiupLPHw/VnTSQrKYaF49K4+I9v8fUHN/PYV5cE1Sg47U76QW1LJ1XNHYzWBK8GEOF28YfPzeWrZ0zggfWlrLp9La/srNbphR1wsK6VrWVNLCvM/KCcOnFUAj+4cBpFhxp46/06hyM8MdqD94PiiiYA7cGrQbldws3nTWHR+DT+8587+dJ9GxmTEsuZkzOZmpNEWnwU3b0emtq7aWrrpqalk8qmdioaO6hobKe710Ok20VCTARZiTFMHJXA5OxEYiLdTp9aUHm5pJqkmAjOmJT5ke2fnDuG3760h7vXHWBZYeYgewceTfB+UFzmTfA6yZg6nrMmj+K0CRm8sKOKJzaV8cyWCh4YoAQTG+kmOTaS5NhIxmfGE+F20d3joamjm52VzRSVNhDldrGgIJUzJo8iIVr/Vz+evdUtHKhrZeX07I+VyKIj3Fy9JJ/fvryHPdUtTMpKdCjKE6P/1f1ge3kT4zPitTelhiUqwsXqWaNZPWu09wa5lg4a27p5cUcVsZFuYqPcRLgGr656jOFwfRvrD9Tzzv4jbCpt5LwZ2czL15vshvLA+lLcLhn09/T5xfn84fX3eXB9KT9ZPd3P0Y2M1uD9oLi8iRljkp0OQwUhl0vISY5lak4SoxJjSIyJHDK5g3f++fz0eD4zP48blheSlRTDE5vLebSojLauHj9FHlzaunp4vKiMU8YkD/ptJy0+ijMmZfJ8cWXQXB/RHrzNjhztpKKpgxljkpwORQURX42MGZUUw5eWjeON3TW8WlLD5Xet555rFpAWH+WT44eKV0pqaOnsYf5xphK54JQcXt5ZzabSBuYXBP64eE3wNiuu8N7BOmNMMgfr2hyORgUafwxxdImwfEoW2UkxPFpUxqf/8jYPX7eEzMRo29sOFs9tq2RUYjQF6fFDvu/sqaOIinCxZntlUCR420o0InKPiNSISLFdbQSD4nLvBVYt0SinTRudzH1fXEhFYwdX3bOBprZup0MKCK2dPby+u4bzZmTjOs4Y98SYSE4vzOT57VVBUaaxswb/d2CVjccPCsXlTRSkx5EUo3PAK+ctGp/OnVfNY1/NUa7+2waOdmpN/rVdNXT2eDj/lJxhvX/l9CyqmjvYVdVic2Qnz7YEb4xZC9Tbdfxgsb28ienae1cB4sH1pRyub+cz8/PYVtbIRX94K+gn1DpZz22vJCMhetgll9OtMfLr9tbaGZZP6CgaGzW0dlHW0M4pmuBVgJk2OolL5+VxoK6V7zy6NSjKDXZo6/qwPON2DW8KgqykGCZnJbJub+Df1ep4gheR60Rko4hsrK0N/L+IJ2KHdYFVE7wKRLPzUjhvRjZrtlXyi+dLnA7HEa/vqqWje/jlmT7LCjPYcLCe9q7A/vbjeII3xtxpjJlvjJmfmRk8twAPx3brAuv00TpEUgWmpRMzuObUAu5ad4B73jrgdDh+11eeOdGpgJdNyqSrx8OGg4FdhXY8wYey4vIm8tJiSYnTMccqMIkIP7xwGiunZ/GzNTt5fnul0yH5TXtXL6/tqmHVjKxhl2f6LCxIIyrCxbo9gV11sHOY5EPAO8BkESkTkWvtaitQbS5tYFZuitNhKDUkt0u4/bI5zMlL4ZuPbGFjgPdKfeX13TW0d/eecHkGIDbKzcKCtICvw9s5iuZzxpgcY0ykMSbXGPNXu9oKRBWN7VQ0dej8HyooxES6ufvqBeSmxPKl+zbyfs1Rp0Oy3ZrtlaTHR7FoXPqI9l9WmMHu6haqmzt8HJnvaInGJptKGwA0waugkRYfxd+/sJAIl3DN3zYE5QpGw9Xe1ctrJTWsPIHRM8fqmzY4kHvxmuBtUnSogZhIF1Nz9AKrCh5j0+O455oFNLV1c9md71LRGJpJ/g2rPHPBCMozfaZkJ5KREB3Q4+E1wdtk0yFv/V3XYFXBZmZuCvddu5D6o11cdue7lIdgkl+zvZK0+CgWncRC2i6XsKwwg7f21gXsfQSafWzQ3tXLjopmLc+ooPDg+tKPPUoqW7jv2oU0tHZx2Z3vcKCu1ekwfaa1s4dXS7w3N0WcZAdsWWEGR1q72FnZ7KPofEsTvA22ljXS4zHMHasJXgWvOWNT+b8vLeJoRw+X/OlfvB1k65EO5qWdVbR393LJnDEnfaylEzOAwK3Da4K3wTv7juASWHASX/+UcqqHRZUAABFRSURBVNqD60vZWdHMtUvHEx3h4oq/ruf/3j3kdFgn7cnNFeSmxjLPBx2wUUkxTMlODNg6vCZ4G7yz7wjTRyeTHKszSKrglxYfxVfPmEDhqER++FQx1z+wiSNHO50Oa0RqWzp5a28tF88ejWuEo2eOdfqkTDYebAjI1bI0wftYe1cvmw83cOqEkY2tVSoQxUS6uXJJPv++cjIv76xmxe/W8kJx8N31+sSmMjwGPuGD8kyfZYUZdPV6WH8g8G4Q0wTvYxsP1dPda1isCV6FGJcI1581kX9+Yyk5KTF89f5NXH3PBkoC9ALjsTwew/3rD7FoXBoTRyX67LgLCtKIjnCxbk/g1eE1wfvYO/uOEOESFgTBcl5KjcTk7ESe/Npp/OCCqWw53Mj5v1/Hd/6xlYMBPtLmzb21HK5v58ol+T49bkykm0Xj0wOyDq9rsvrYv/YdYWbu4CuzKxXM+q8hGxcVwQ3LC3ljTw3/3FbBk5vLWDUjm+tOn8DsvMCbg+m+tw+SmRjNimnZPj/26YUZ/HxNCRWN7YxOifX58UdKe/A+VNvSybayRs6cPMrpUJTyi9goN+fNyOHb505iWWEmr+2q4ZI//Yulv3yNhzaUBsySgNvKGnl9dy1XLc4nKsL3aa9v2oK3Amy4pCZ4H3pjdw3GwPIpmuBVeEmKiWTl9Gy+t3IKF5ySQ1ePh1ue2M7CW1/he49to+hQvaN3e9728h5S4iK55rQCW44/KSuBUYnRrA2wMo3WEXzotV01ZCVF6wIfKmxFR7o5bWIGp05IZ+roJB7eUMozWyt4ZONhspNiWDUjm1UzsllQkDbiSb5O1IYD9byxu5bvrZpCYow9Q5dFhGWFmby6q5pej/HbuR2PJngf6erxsHZPLatnj0EkMP7jKuUUEWFXZQuz81KZkp1ESWUzxRXN3P/uIf7+9kEyEqI4Y9IolkxI59QJ6bbVrdu6erjpsa2MSYnl6lN9e3H1WKdPyuDxTWVsLWsMmLvYNcH7yLv7j9Da1avlGaWOERPpZs7YVOaMTaWzp5fdVS3sqGjm+eJKHt9UBnhvploxLYt5+anMzU9lfEa8TzpKt64p4eCRNh768mLiouxNd2dOHkWES3hxR5Um+FDzzNYKEqIjWFaY4XQoSgWs6Ag3M3NTmJmbgscYqps72F/byr7ao6zZXsnD7x0GIDk2kjljU5g7NpW5Y1OZlZf8kfJK/9E8fS5fNPYjP9/+yl4eWF/Kl5eNY4kf7ktJjo1kyYR0Xiyu4uZVUwLim7wmeB/o6O7lheIqVs3IJibS7XQ4SgUFlwg5ybHkJMdy2sQMPMZQ29LJ4fo2Suvb2FnRzJt7ajEGRGDSqETm5qcwJy+VmuYOMhKjcQ2QRBvburh1TQmPFpVx6bxcbjlvqt/OadWMbL7/ZDF7qo8yOdt3N1ONlCZ4H3h9Vw1HO3u4ZLbvbn9WKty4RMhKiiErKYb51o2C7V29lDV4E/7hhjae3FzOQxu8vfyYSBd5qXGMToklLspN3dFOdle38MauGjp6PHztzAl8Z8Vkn805MxznTsviB08V80JxlSb4UPHUlnIyE6M/8jVwoK+QSqkTExvlpjArkcIsb7L0GENdSyeHraRfWt/Gvr1H8Rh4vriKrKRoVs8ew1VL8h1ZTW1UYgwL8tN4Zms5N5w90fEyjSb4k1TZ1M4rJTV88bSCgBkapVSocokwKimGUUkxzMv39vI9xtDV4+EKm25iOlGfmjeG7z2+nS2HG5nj8MVW538bQe7+dw9hjOGqJQVOh6JUWHKJEBPpDojkDnD+KTnERLp4rKjM6VA0wZ+Mju5eHlxfyjlTs8hLi3M6HKVUAEiMieS8GTk8s7WCju5eR2PRBH8SHisqo6Gt27bbn5VSwenT83Np6ejh6S3ljsahNfgRauvq4fZX97KgIJUl43Xud6UC1XDGzPvakvHpTB+dxB1r9/PpeXl+HcnTnyb4EfrrugPUtnTylyvmOn6lXCkVWCPXRISvnDGBGx7azMsl1ayc7vspiodDE/wIHDrSyv++uY+V07M+uJKvlAoe/vhjcP6MbH6dFsvtr+zlnKlZjoyy0xr8Cer1GL79j624XcJPVk93OhylVICKcLu4aeUUdlY289AGZ75daII/Qb96YRdFhxr42cUzyEkOnJVblFKB58KZOZw6IZ1fv7ibuqOdfm9fE/wJuHvdfu5Yu58rFo/l4tmjnQ5HKRXgRISfrp5OR3cv1z+wie5ej1/b1wQ/DL0ewy+eK+Hna0o4b0Y2P109Qy+sKqWGpTArkf/+1CmsP1DPj54u9uvKVnqR9Th2VjTzg6e2s6m0kSsX5/Oji6bplARKqRPyiTm57K0+yp/f2EdzRw+/uXQWsVH2zzxra4IXkVXA7YAbuNsY8992tucr7V29rN1byyPvHea1XTWkx0fxu8/O4hNzcj/23kAamqWUClz/vnIyKXGR/Ndzu9hS2sgt509h5fRsIt32FVJsS/Ai4gb+BJwLlAHvicgzxpiddrU5XB3dvbR09NDS0U1LRw81LZ0cOtJKaX0bJZXNbC1roqvHQ3p8FN86p5BrTi0gJS5Kk7lSasREhOtOn8Cs3BR++HQxX39wM6MSo1k+xbt04YUzR/u8OmBnD34h8L4xZj+AiDwMXAz4PMGv/N1aWrt6MMZbL+81BmMMvR6Dx4DH2uaxtnX3DlwDS4yJYEJmAlcuzuesyaNYND7N1r+uSqnws2h8Os/dsIw3dtfyaNFh1myv5I3dtaye5fuBG3Ym+DHA4X4/lwGLjn2TiFwHXGf9eFREdtsY0/FkFEPd0w4G4GMZQJ3TQfhYqJ1TqJ0PhNg5fd5P5+P6/oh3HXQ1cccvshpj7gTudDoOABHZaIyZ73QcvhJq5wOhd06hdj4QeucUzOdjZ/2hHMjr93OutU0ppZQf2Jng3wMKRWSciEQBlwHP2NieUkqpfmwr0RhjekTk68CLeIdJ3mOM2WFXez4SEKUiHwq184HQO6dQOx8IvXMK2vMRY/x3V5VSSin/0TGASikVojTBK6VUiNIEj3dKBRHZLSLvi8jNTscDICL3iEiNiBT325YmIi+LyF7r31Rru4jI7634t4nI3H77XG29f6+IXN1v+zwR2W7t83uxZk8brA0fnE+eiLwuIjtFZIeIfDOYz0lEYkRkg4hstc7np9b2cSKy3orhEWuAASISbf38vvV6Qb9j3WJt3y0iK/ttH/BzOVgbviAibhHZLCLPhsj5HLQ+E1tEZKO1LSg/cyNirLs+w/WB9wLwPmA8EAVsBaYFQFynA3OB4n7bfgXcbD2/Gfil9fx84HlAgMXAemt7GrDf+jfVep5qvbbBeq9Y+543VBs+OJ8cYK71PBHYA0wL1nOy2kiwnkcC6622/wFcZm3/C/Bv1vOvAX+xnl8GPGI9n2Z95qKBcdZn0T3U53KwNnz03+nbwIPAs0O1FUTncxDIOGZbUH7mRnT+TjQaSA9gCfBiv59vAW5xOi4rlgI+muB3AznW8xxgt/X8DuBzx74P+BxwR7/td1jbcoBd/bZ/8L7B2rDh3J7GO09R0J8TEAdswnundh0QcexnC+9osiXW8wjrfXLs563vfYN9Lq19BmzDB+eRC7wKLAeeHaqtYDgf63gH+XiCD/rP3HAfWqIZeEqFMQ7FcjxZxphK63kVkGU9H+wchtpeNsD2odrwGevr/By8vd6gPSernLEFqAFexttDbTTG9AwQwwdxW683AenHOZ+BtqcP0cbJ+h/gJqBvVYqh2gqG8wEwwEsiUiTeaVEgiD9zJ8rxqQrUyBhjjIjYOsbVjjZEJAF4HPiWMaZZ+i2cEmznZIzpBWaLSArwJDDFF8d1gohcCNQYY4pE5Eyn4/GhpcaYchEZBbwsIrv6vxhsn7kTpT344JpSoVpEcgCsf2us7YOdw1DbcwfYPlQbJ01EIvEm9weMMU+EwjkBGGMagdfxlhdSRKSv49Q/hg/itl5PBo4c53wG2n5kiDZOxmnAahE5CDyMt0xzexCfDwDGmHLr3xq8f4QXEgKfueHSBB9cUyo8A/Rdwb8abx27b/tV1iiAxUCT9fXwRWCFiKRaV/FX4K1vVgLNIrLYuup/1THHGqiNk2K181egxBhzW7Cfk4hkWj13RCQW7/WEEryJ/tJBzqcvhkuB14y3QPsMcJk1KmUcUIj3wt2An0trn8HaGDFjzC3GmFxjTIHV1mvGmM8H6/kAiEi8iCT2Pcf7WSkmSD9zI+JE4T/QHnivnu/BW0P9vtPxWDE9BFQC3Xhre9firVe+CuwFXgHSrPcK3sVV9gHbgfn9jvNF4H3r8YV+2+fj/bDvA/7Ih3c1D9iGD85nKd566DZgi/U4P1jPCZgJbLbOpxj4kbV9PN6E9j7wKBBtbY+xfn7fen18v2N934p5N9YojKE+l4O14cPP3pl8OIomaM/HOu5W67Gjr81g/cyN5KFTFSilVIjSEo1SSoUoTfBKKRWiNMErpVSI0gSvlFIhShO8UkqFKE3wSikVojTBq4AnIm+IyHzr+XN9Nxj56Nh/F5FLj//OwCMi14jIH52OQwUunYtGBRVjzPlOx6BUsNAevLKFiBSIyC6rh7xHRB4QkXNE5F/WIggLrVvJ7xHvwhmbReRia99YEXlYREpE5Ekgtt9xD4pIhvX8KWuWwB39ZgpERI6KyK3iXYzjXRE53kx+p4vI2yKyv683b92u/msRKRbvgg6ftbafKdZiGNbPfxSRa6zn/y3eBU22ichvrG2ZIvK4iLxnPU4b5Pflss4tpd+2vSKSJSIXiXdBjM0i8spA53PsNxEROdrv+b9bbW8Ta2ESFR40wSs7TQR+i3eWxSnA5XinLPgu8B94b2l/zRizEDgL+LU1Z8i/AW3GmKnAj4F5gxz/i8aYeXhvF79BRNKt7fHAu8aYWcBa4MvHiTPHiutC4L+tbZ8EZgOzgHOs2HIGO4DV9ieA6caYmcDPrZduB35njFkAfAq4e6D9jTEevPOVfMI63iLgkDGmGngLWGyMmYN3IrCbjnM+/eNagXc+mIXW+cwTkdOHu78KblqiUXY6YIzZDiAiO4BXjTFGRLbjXcwkF+8Mht+13h8DjMW7mtXvAYwx20Rk2yDHv0FEPmE9z8ObyI4AXXgXrAAowjsR2FCeshLszn6946XAQ8Y7JXC1iLwJLACaBzlGE9AB/NXq4fe1fw4wTT6cFjlJRBKMMUcHOMYjwI+Av2GtkmRtzwUesf7ARAEHjnM+/a2wHputnxPw/p7WnsAxVJDSBK/s1Nnvuaffzx68n71e4FPGmN39d+qXDAcl3jnLz8G7qlCbiLyB9w8EQLf5cJKlXo7/Oe8f5/Ea7+Gj33xjwLvohYgsBM7GOzPi1/FOuevC2/vuOM5xAd4BJopIJnAJH34L+ANwmzHmGeu8fzJUXCLiwvuHoO98fmGMuWMY7asQoyUa5aQXgW9YU60iInOs7WvxlnMQkRl4Z248VjLQYCX3KXjXxfSldcBnxbtqUybebxUbgEN4e+TRVr38bCvOBCDZGPMccCPe0g7AS8A3+g4qIrMHa9D6o/QkcBveaZWPWC8l8+E841cPtC/epen6Slmr8a4TC97f8Ret+BCRMeJd/EKFAe3BKyf9DO8ycdusXucBvHXw/wX+JiIleOdYLxpg3xeAr1rv2Q286+PYnsS7gMdWvNMc32SMqQIQkX/gnSL2AB+WPhKBp0UkBm+v+dvW9huAP1llpgi8f7y+OkS7j+CdO/2aftt+AjwqIg3Aa3gXsz7WXVb7W/H+bloBjDEvichU4B3r7+hR4AocWoBC+ZdOF6yUUiFKSzRKKRWitESjwoKIfB/49DGbHzXG3OpALF8AvnnM5n8ZY673dywqtGmJRimlQpSWaJRSKkRpgldKqRClCV4ppUKUJnillApR/w811VHpewsfcQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ INSPECTING HOUSE VALUES:\n", "sns.distplot(data.median_house_value)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 297 }, "id": "7yfsHu0iFG0_", "outputId": "dceb831e-dc54-4920-9584-7b11a309c074" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ INSPECTING HOUSE VALUES:\n", "sns.distplot(np.log1p(data.median_house_value))" ] }, { "cell_type": "markdown", "metadata": { "id": "MNUZvPreFXRc" }, "source": [ "**SIMPLE LINEAR REGRESSION:**" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "id": "HBDdrHPNFUtm" }, "outputs": [], "source": [ "#@ FUNCTION FOR LINEAR REGRESSION:\n", "def train_linear_regression(X, y):\n", " ones = np.ones(X.shape[0])\n", " X = np.column_stack([ones, X])\n", "\n", " XTX = X.T.dot(X)\n", " XTX_inv = np.linalg.inv(XTX)\n", " w = XTX_inv.dot(X.T).dot(y)\n", " \n", " return w[0], w[1:]" ] }, { "cell_type": "markdown", "metadata": { "id": "J14sroxlFpl5" }, "source": [ "**DATASET PREPARATION:**" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "id": "CW5IYdDnFnGM" }, "outputs": [], "source": [ "#@ SPLITTING THE DATASET:\n", "n = len(data)\n", "n_val = int(0.2 * n)\n", "n_test = int(0.2 * n)\n", "n_train = n - (n_val + n_test)\n", "\n", "#@ SHUFFLING DATASET:\n", "idx = np.arange(n)\n", "np.random.seed(42)\n", "np.random.shuffle(idx)\n", "df_shuffled = data.iloc[idx]" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "id": "va8Am7MiF-f1" }, "outputs": [], "source": [ "#@ PREPARING THE DATASET:\n", "df_train = df_shuffled.iloc[:n_train].copy()\n", "df_val = df_shuffled.iloc[n_train:n_train+n_val].copy()\n", "df_test = df_shuffled.iloc[n_train+n_val:].copy()\n", "\n", "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "id": "hdH9RtDRGFy2" }, "outputs": [], "source": [ "#@ PREPARING THE LABELS:\n", "y_train_orig = df_train.median_house_value.values\n", "y_val_orig = df_val.median_house_value.values\n", "y_test_orig = df_test.median_house_value.values\n", "\n", "y_train = np.log1p(y_train_orig)\n", "y_val = np.log1p(y_val_orig)\n", "y_test = np.log1p(y_test_orig)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "id": "z925mwhUGVc0" }, "outputs": [], "source": [ "#@ DELETING DATASET:\n", "del df_train['median_house_value']\n", "del df_val['median_house_value']\n", "del df_test['median_house_value']" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "id": "cVkklBf7Gf_J" }, "outputs": [], "source": [ "#@ PREPARING THE DATASET:\n", "check=[\"longitude\", \"latitude\", \"housing_median_age\", \"total_rooms\", \"total_bedrooms\", \n", " \"population\", \"households\", \"median_income\"]\n", "\n", "#@ DEFINING FUNCTION:\n", "def prepare_X(df, fillna_value):\n", " df_num = df[check]\n", " df_num = df_num.fillna(fillna_value)\n", " X = df_num.values\n", " return X" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "id": "ghS0GSquHB9g" }, "outputs": [], "source": [ "#@ FUNCTION FOR RMSE VALUES:\n", "def rmse(y, y_pred):\n", " error = y_pred - y\n", " mse = (error ** 2).mean()\n", " return np.sqrt(mse)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "id": "4viqmybcHLzV" }, "outputs": [], "source": [ "#@ FILLING MISSING VALUES:\n", "mean = df_train.total_bedrooms.mean()\n", "\n", "X_mean_train = prepare_X(df_train, fillna_value=mean)\n", "w_0_mean, w_mean = train_linear_regression(X_mean_train, y_train)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "id": "s_4PaznAHhv8" }, "outputs": [], "source": [ "#@ FILLING MISSING VALUES:\n", "X_mean_val = prepare_X(df_val, fillna_value=mean)\n", "y_mean_pred_val = w_0_mean + X_mean_val.dot(w_mean)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "N_r9PQRGHxcp", "outputId": "476081b0-c324-453e-dde5-5383a4a9c379" }, "outputs": [ { "data": { "text/plain": [ "0.33" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ GETTING RMSE SCORE:\n", "np.round(rmse(y_val, y_mean_pred_val),2)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "id": "mXh34MibH3c-" }, "outputs": [], "source": [ "#@ PREPARIN DATASET:\n", "X_null_train = prepare_X(df_train, fillna_value=0)\n", "w_0_null, w_null = train_linear_regression(X_null_train, y_train)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "id": "H1o8ZcPpH-MY" }, "outputs": [], "source": [ "#@ PREPARING DATASET:\n", "X_null_val = prepare_X(df_val, fillna_value=0)\n", "y_null_pred_val = w_0_null + X_null_val.dot(w_null)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "z4X81LrYIJJY", "outputId": "c61d1c8b-b013-4e8c-f6fc-9bc9184b31bc" }, "outputs": [ { "data": { "text/plain": [ "0.33" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ GETTING RMSE SCORE:\n", "np.round(rmse(y_val, y_null_pred_val),2)" ] }, { "cell_type": "markdown", "metadata": { "id": "yjx1upBOIaXQ" }, "source": [ "- Answer for Question 3: Both are equally good. " ] }, { "cell_type": "markdown", "metadata": { "id": "iGS-whO0IgtR" }, "source": [ "**REGULARIZATION:**" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "id": "y_SPeyMyIWv9" }, "outputs": [], "source": [ "#@ FUNCTION FOR TRAINING LINEAR REGRESSION:\n", "def train_linear_regression_reg(X, y, r=0.0):\n", " ones = np.ones(X.shape[0])\n", " X = np.column_stack([ones, X])\n", "\n", " XTX = X.T.dot(X)\n", " reg = r * np.eye(XTX.shape[0])\n", " XTX = XTX + reg\n", "\n", " XTX_inv = np.linalg.inv(XTX)\n", " w = XTX_inv.dot(X.T).dot(y)\n", " \n", " return w[0], w[1:]" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "zaIpundGItWc", "outputId": "1f37a174-d171-4852-c6a8-70549959c546" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 -11.686975242036546 0.33\n", "1e-06 -11.686959175728921 0.33\n", "0.0001 -11.685368865034667 0.33\n", "0.001 -11.670931317799797 0.33\n", "0.01 -11.528493585632091 0.33\n", "0.1 -10.274500282195673 0.33\n", "1 -4.920480897742212 0.33\n", "5 -1.482095745621172 0.34\n", "10 -0.7899311831779245 0.34\n" ] } ], "source": [ "#@ INSPECTING THE RESULTS:\n", "for r in [0, 0.000001, 0.0001, 0.001, 0.01, 0.1, 1, 5, 10]:\n", " w_0, w = train_linear_regression_reg(X_null_train, y_train, r=r)\n", " y_null_reg_val = w_0 + X_null_val.dot(w)\n", " rmse_val = np.round(rmse(y_val, y_null_reg_val),2)\n", " print(r, w_0, rmse_val)" ] }, { "cell_type": "markdown", "metadata": { "id": "8ENR1JlBJAd0" }, "source": [ "- Answer for Question 4 is 0." ] }, { "cell_type": "markdown", "metadata": { "id": "KqorBbOsJGeD" }, "source": [ "**SEED CHECKING:**" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "wuHhwt5gI0Xw", "outputId": "3e5a0d87-b178-4129-e2b7-8a5af7b4bb98" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 -11.900382138125133 0.34\n", "1 -11.732757372921618 0.34\n", "2 -11.806729361193014 0.33\n", "3 -11.587900347753235 0.34\n", "4 -11.38947058831824 0.34\n", "5 -11.447114275587968 0.34\n", "6 -11.370516351548385 0.35\n", "7 -12.47344891889502 0.34\n", "8 -11.800287429792748 0.35\n", "9 -11.459046830736924 0.34\n" ] } ], "source": [ "#@ CHECKING THE RMSE SCORES:\n", "rmse_list = []\n", "\n", "for r in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:\n", "\n", " idx = np.arange(n)\n", " np.random.seed(r)\n", " np.random.shuffle(idx)\n", "\n", " df_shuffled = data.iloc[idx]\n", " \n", " df_train = df_shuffled.iloc[:n_train].copy()\n", " df_val = df_shuffled.iloc[n_train:n_train+n_val].copy()\n", " df_test = df_shuffled.iloc[n_train+n_val:].copy()\n", "\n", " df_train = df_train.reset_index(drop=True)\n", " df_val = df_val.reset_index(drop=True)\n", " df_test = df_test.reset_index(drop=True)\n", " \n", " y_train_orig = df_train.median_house_value.values\n", " y_val_orig = df_val.median_house_value.values\n", " y_test_orig = df_test.median_house_value.values\n", "\n", " y_train = np.log1p(y_train_orig)\n", " y_val = np.log1p(y_val_orig)\n", " y_test = np.log1p(y_test_orig)\n", " \n", " del df_train['median_house_value']\n", " del df_val['median_house_value']\n", " del df_test['median_house_value']\n", " \n", " X_null_train = prepare_X(df_train, fillna_value=0)\n", " w_0, w = train_linear_regression(X_null_train, y_train)\n", " \n", " X_null_val = prepare_X(df_val, fillna_value=0)\n", " y_null_reg_val = w_0 + X_null_val.dot(w)\n", " rmse_val = np.round(rmse(y_val, y_null_reg_val),2)\n", " \n", " rmse_list.append(rmse_val)\n", " \n", " print(r, w_0, rmse_val)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "GumoEItZJuL5", "outputId": "a1e0c55c-1f4b-41a5-8963-86091788d570" }, "outputs": [ { "data": { "text/plain": [ "[0.34, 0.34, 0.33, 0.34, 0.34, 0.34, 0.35, 0.34, 0.35, 0.34]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING THE RMSE LIST:\n", "rmse_list" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "tOnf52uTJ0SA", "outputId": "651f32da-a721-40ec-df76-634ef0b7e287" }, "outputs": [ { "data": { "text/plain": [ "0.005" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING THE RMSE:\n", "np.round(np.std(rmse_list),3)" ] }, { "cell_type": "markdown", "metadata": { "id": "zfPe-g-MM7M-" }, "source": [ "- Answer for Question 5 is 0.005." ] }, { "cell_type": "markdown", "metadata": { "id": "cNo8umsEJ9kz" }, "source": [ "**SEED AND REGULARIZATION:**" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "id": "0jLYwSnHJ7dB" }, "outputs": [], "source": [ "#@ INITIALIZING SEED AND REGULARIZATION:\n", "r = 9\n", "\n", "idx = np.arange(n)\n", "np.random.seed(r)\n", "np.random.shuffle(idx)\n", "\n", "df_shuffled = data.iloc[idx]\n", " \n", "df_train = df_shuffled.iloc[:n_train].copy()\n", "df_val = df_shuffled.iloc[n_train:n_train+n_val].copy()\n", "df_test = df_shuffled.iloc[n_train+n_val:].copy()\n", "\n", "frames = [df_train, df_val]\n", "df_train_val = pd.concat(frames)\n", "\n", "df_train_val = df_train_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)\n", "\n", "y_train_val_orig = df_train_val.median_house_value.values\n", "y_test_orig = df_test.median_house_value.values\n", "\n", "y_train_val = np.log1p(y_train_val_orig)\n", "y_test = np.log1p(y_test_orig)\n", "\n", "del df_train_val['median_house_value']\n", "del df_test['median_house_value']" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Z9JWRUMIKVXw", "outputId": "4204609f-18f4-4d9e-c160-f4b1d5278e54" }, "outputs": [ { "data": { "text/plain": [ "0.35" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING RMSE:\n", "X_null_train_val = prepare_X(df_train_val, fillna_value=0)\n", "w_0_train_val, w_train_val = train_linear_regression_reg(X_null_train_val, y_train_val, r=0.001)\n", "\n", "X_null_test = prepare_X(df_test, fillna_value=0)\n", "y_null_pred_test = w_0_train_val + X_null_test.dot(w_train_val)\n", "\n", "np.round(rmse(y_test, y_null_pred_test),2)" ] }, { "cell_type": "markdown", "metadata": { "id": "7V9Bi9vZKeEU" }, "source": [ "- Answer for Question 6 is 0.35." ] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3.8.13 ('chatbot')", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.8.13" }, "vscode": { "interpreter": { "hash": "4cbf2951cde2f569b578b1df868513fa15c696ba1c73b34f313a3fcf610bb9ca" } } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: cohorts/2022/03-classification/homework.md ================================================ ## Homework > **Solution**: > * [Notebook](homework_3.ipynb) > * [Video](https://youtu.be/o--DqcyRLEM) > Note: sometimes your answer doesn't match one of the options exactly. That's fine. Select the option that's closest to your solution. If it's exactly in between two options, select the higher value. ### Dataset In this homework, we will use the California Housing Prices data from [Kaggle](https://www.kaggle.com/datasets/camnugent/california-housing-prices). Here's a wget-able [link](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv): ```bash wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv ``` We'll keep working with the `'median_house_value'` variable, and we'll transform it to a classification task. ### Features For the rest of the homework, you'll need to use only these columns: * `'latitude'`, * `'longitude'`, * `'housing_median_age'`, * `'total_rooms'`, * `'total_bedrooms'`, * `'population'`, * `'households'`, * `'median_income'`, * `'median_house_value'`, * `'ocean_proximity'`, ### Data preparation * Select only the features from above and fill in the missing values with median. * Create a new column `rooms_per_household` by dividing the column `total_rooms` by the column `households` from dataframe. * Create a new column `bedrooms_per_room` by dividing the column `total_bedrooms` by the column `total_rooms` from dataframe. * Create a new column `population_per_household` by dividing the column `population` by the column `households` from dataframe. ### Question 1 What is the most frequent observation (mode) for the column `ocean_proximity`? Options: * `NEAR BAY` * `<1H OCEAN` * `INLAND` * `NEAR OCEAN` ### Question 2 * Create the [correlation matrix](https://www.google.com/search?q=correlation+matrix) for the numerical features of your train dataset. - In a correlation matrix, you compute the correlation coefficient between every pair of features in the dataset. * What are the two features that have the biggest correlation in this dataset? Options: * `total_bedrooms` and `households` * `total_bedrooms` and `total_rooms` * `population` and `households` * `population_per_household` and `total_rooms` ### Make `median_house_value` binary * We need to turn the `median_house_value` variable from numeric into binary. * Let's create a variable `above_average` which is `1` if the `median_house_value` is above its mean value and `0` otherwise. ### Split the data * Split your data in train/val/test sets, with 60%/20%/20% distribution. * Use Scikit-Learn for that (the `train_test_split` function) and set the seed to 42. * Make sure that the target value (`median_house_value`) is not in your dataframe. ### Question 3 * Calculate the *mutual information score* between `above_average` and `ocean_proximity` . Use the training set only. * Round it to 2 decimals using `round(score, 2)` * What is their *mutual information score*? Options: - 0.26 - 0 - 0.10 - 0.16 ### Question 4 * Now let's train a logistic regression * Remember that we have one categorical variable `ocean_proximity` in the data. Include it using one-hot encoding. * Fit the model on the training dataset. - To make sure the results are reproducible across different versions of Scikit-Learn, fit the model with these parameters: - `model = LogisticRegression(solver="liblinear", C=1.0, max_iter=1000, random_state=42)` * Calculate the accuracy on the validation dataset and round it to 2 decimal digits. Options: - 0.60 - 0.72 - 0.84 - 0.95 ### Question 5 * Let's find the least useful feature using the *feature elimination* technique. * Train a model with all these features (using the same parameters as in Q4). * Now exclude each feature from this set and train a model without it. Record the accuracy for each model. * For each feature, calculate the difference between the original accuracy and the accuracy without the feature. * Which of following feature has the smallest difference? * `total_rooms` * `total_bedrooms` * `population` * `households` > **Note**: the difference doesn't have to be positive ### Question 6 * For this question, we'll see how to use a linear regression model from Scikit-Learn * We'll need to use the original column `'median_house_value'`. Apply the logarithmic transformation to this column. * Fit the Ridge regression model (`model = Ridge(alpha=a, solver="sag", random_state=42)`) on the training data. * This model has a parameter `alpha`. Let's try the following values: `[0, 0.01, 0.1, 1, 10]` * Which of these alphas leads to the best RMSE on the validation set? Round your RMSE scores to 3 decimal digits. If there are multiple options, select the smallest `alpha`. Options: - 0 - 0.01 - 0.1 - 1 - 10 ## Submit the results * Submit your results here: https://forms.gle/vQXAnQDeqA81HSu86 * You can submit your solution multiple times. In this case, only the last submission will be used * If your answer doesn't match options exactly, select the closest one ## Deadline The deadline for submitting is 26 September (Monday), 23:00 CEST. After that, the form will be closed. ================================================ FILE: cohorts/2022/03-classification/homework_3.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": { "id": "1RP5ocnmvaNJ" }, "source": [ "**INITIALIZATION:**" ] }, { "cell_type": "code", "execution_count": 104, "metadata": { "id": "9UkFwRCfs0oo" }, "outputs": [], "source": [ "#@ IMPORTING LIBRARIES AND DEPENDENCIES:\n", "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from sklearn.linear_model import Ridge\n", "from sklearn.metrics import mean_squared_error\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import accuracy_score\n", "from sklearn.metrics import mutual_info_score\n", "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "markdown", "metadata": { "id": "XAWt3FaGvi2V" }, "source": [ "**IMPORTING DATASET:**" ] }, { "cell_type": "code", "execution_count": 74, "metadata": { "id": "qZ3ySstmvWhk" }, "outputs": [], "source": [ "#@ IMPORTING DATASET:\n", "PATH = \"./housing.csv\"\n", "select_cols = [\"longitude\", \"latitude\", \"housing_median_age\", \"total_rooms\", \"total_bedrooms\", \"population\", \"households\", \n", " \"median_income\", \"median_house_value\", \"ocean_proximity\"]\n", "data = pd.read_csv(PATH, usecols=select_cols)" ] }, { "cell_type": "code", "execution_count": 75, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "jQ_W08Z5xcdr", "outputId": "b9e0a6a2-5d4a-4d5a-e964-76b4037d74ae" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(20640, 10)\n" ] } ], "source": [ "#@ INSPECTING DATAFRAME:\n", "print(data.shape)" ] }, { "cell_type": "code", "execution_count": 76, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 363 }, "id": "CCXyC6J-xixG", "outputId": "57c73237-4bf8-4bc4-b3fc-de15667f6694" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_valueocean_proximity
0-122.2337.8841.0880.0129.0322.0126.08.3252452600.0NEAR BAY
1-122.2237.8621.07099.01106.02401.01138.08.3014358500.0NEAR BAY
2-122.2437.8552.01467.0190.0496.0177.07.2574352100.0NEAR BAY
3-122.2537.8552.01274.0235.0558.0219.05.6431341300.0NEAR BAY
4-122.2537.8552.01627.0280.0565.0259.03.8462342200.0NEAR BAY
5-122.2537.8552.0919.0213.0413.0193.04.0368269700.0NEAR BAY
6-122.2537.8452.02535.0489.01094.0514.03.6591299200.0NEAR BAY
7-122.2537.8452.03104.0687.01157.0647.03.1200241400.0NEAR BAY
8-122.2637.8442.02555.0665.01206.0595.02.0804226700.0NEAR BAY
9-122.2537.8452.03549.0707.01551.0714.03.6912261100.0NEAR BAY
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n", "0 -122.23 37.88 41.0 880.0 129.0 \n", "1 -122.22 37.86 21.0 7099.0 1106.0 \n", "2 -122.24 37.85 52.0 1467.0 190.0 \n", "3 -122.25 37.85 52.0 1274.0 235.0 \n", "4 -122.25 37.85 52.0 1627.0 280.0 \n", "5 -122.25 37.85 52.0 919.0 213.0 \n", "6 -122.25 37.84 52.0 2535.0 489.0 \n", "7 -122.25 37.84 52.0 3104.0 687.0 \n", "8 -122.26 37.84 42.0 2555.0 665.0 \n", "9 -122.25 37.84 52.0 3549.0 707.0 \n", "\n", " population households median_income median_house_value ocean_proximity \n", "0 322.0 126.0 8.3252 452600.0 NEAR BAY \n", "1 2401.0 1138.0 8.3014 358500.0 NEAR BAY \n", "2 496.0 177.0 7.2574 352100.0 NEAR BAY \n", "3 558.0 219.0 5.6431 341300.0 NEAR BAY \n", "4 565.0 259.0 3.8462 342200.0 NEAR BAY \n", "5 413.0 193.0 4.0368 269700.0 NEAR BAY \n", "6 1094.0 514.0 3.6591 299200.0 NEAR BAY \n", "7 1157.0 647.0 3.1200 241400.0 NEAR BAY \n", "8 1206.0 595.0 2.0804 226700.0 NEAR BAY \n", "9 1551.0 714.0 3.6912 261100.0 NEAR BAY " ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING DATAFRAME:\n", "data.head(10)" ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "id": "69tSECi6HzlS" }, "outputs": [], "source": [ "#@ HANDLING MISSING VALUES:\n", "median = data[\"total_bedrooms\"].median() # Calculating the median.\n", "data[\"total_bedrooms\"].fillna(median, inplace=True) # Imputing the median value." ] }, { "cell_type": "markdown", "metadata": { "id": "g3Xwa_AJx-AF" }, "source": [ "**EXPLORATORY DATA ANALYSIS:**" ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 175 }, "id": "KVJGwsquxpw1", "outputId": "8bd5d2a6-1011-4296-ed26-56c2ae02d84c" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ocean_proximity
count20640
unique5
top<1H OCEAN
freq9136
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " ocean_proximity\n", "count 20640\n", "unique 5\n", "top <1H OCEAN\n", "freq 9136" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ DATAFRAME INFORMATION:\n", "data.describe(include=[\"O\"])" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "85IK6VLXJADT", "outputId": "0fe17171-1cb8-4a8e-f9d3-6178eca529e5" }, "outputs": [ { "data": { "text/plain": [ "0 <1H OCEAN\n", "dtype: object" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ CALCULATING MODEL:\n", "data['ocean_proximity'].mode()" ] }, { "cell_type": "markdown", "metadata": { "id": "y00Un2noJoKo" }, "source": [ "- Answer for Question1: '<1H OCEAN'" ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 250 }, "id": "1LNjviIoLSQL", "outputId": "656a8395-2a42-49a8-f0fb-3672516a0424" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_valueocean_proximityrooms_per_householdbedrooms_per_roompopulation_per_household
0-122.2337.8841.0880.0129.0322.0126.08.3252452600.0NEAR BAY6.9841270.1465912.555556
1-122.2237.8621.07099.01106.02401.01138.08.3014358500.0NEAR BAY6.2381370.1557972.109842
2-122.2437.8552.01467.0190.0496.0177.07.2574352100.0NEAR BAY8.2881360.1295162.802260
3-122.2537.8552.01274.0235.0558.0219.05.6431341300.0NEAR BAY5.8173520.1844582.547945
4-122.2537.8552.01627.0280.0565.0259.03.8462342200.0NEAR BAY6.2818530.1720962.181467
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n", "0 -122.23 37.88 41.0 880.0 129.0 \n", "1 -122.22 37.86 21.0 7099.0 1106.0 \n", "2 -122.24 37.85 52.0 1467.0 190.0 \n", "3 -122.25 37.85 52.0 1274.0 235.0 \n", "4 -122.25 37.85 52.0 1627.0 280.0 \n", "\n", " population households median_income median_house_value ocean_proximity \\\n", "0 322.0 126.0 8.3252 452600.0 NEAR BAY \n", "1 2401.0 1138.0 8.3014 358500.0 NEAR BAY \n", "2 496.0 177.0 7.2574 352100.0 NEAR BAY \n", "3 558.0 219.0 5.6431 341300.0 NEAR BAY \n", "4 565.0 259.0 3.8462 342200.0 NEAR BAY \n", "\n", " rooms_per_household bedrooms_per_room population_per_household \n", "0 6.984127 0.146591 2.555556 \n", "1 6.238137 0.155797 2.109842 \n", "2 8.288136 0.129516 2.802260 \n", "3 5.817352 0.184458 2.547945 \n", "4 6.281853 0.172096 2.181467 " ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ PREPARING DATAFRAME:\n", "data[\"rooms_per_household\"] = data[\"total_rooms\"]/data[\"households\"] # Rooms per Household.\n", "data[\"bedrooms_per_room\"] = data[\"total_bedrooms\"]/data[\"total_rooms\"] # Bedrooms per Room.\n", "data[\"population_per_household\"] = data[\"population\"]/data[\"households\"] # Populations per Household.\n", "data.head()" ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 300 }, "id": "fSX3EYwHyW_V", "outputId": "d0268b72-88ab-4ce7-9f69-eb8a8b8b2df3" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomerooms_per_householdbedrooms_per_roompopulation_per_household
count20640.00000020640.00000020640.00000020640.00000020640.00000020640.00000020640.00000020640.00000020640.00000020640.00000020640.000000
mean-119.56970435.63186128.6394862635.763081536.8388571425.476744499.5396803.8706715.4290000.2137943.070655
std2.0035322.13595212.5855582181.615252419.3918781132.462122382.3297531.8998222.4741730.06524810.386050
min-124.35000032.5400001.0000002.0000001.0000003.0000001.0000000.4999000.8461540.0371510.692308
25%-121.80000033.93000018.0000001447.750000297.000000787.000000280.0000002.5634004.4407160.1752252.429741
50%-118.49000034.26000029.0000002127.000000435.0000001166.000000409.0000003.5348005.2291290.2031592.818116
75%-118.01000037.71000037.0000003148.000000643.2500001725.000000605.0000004.7432506.0523810.2401263.282261
max-114.31000041.95000052.00000039320.0000006445.00000035682.0000006082.00000015.000100141.9090912.8246751243.333333
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " longitude latitude housing_median_age total_rooms \\\n", "count 20640.000000 20640.000000 20640.000000 20640.000000 \n", "mean -119.569704 35.631861 28.639486 2635.763081 \n", "std 2.003532 2.135952 12.585558 2181.615252 \n", "min -124.350000 32.540000 1.000000 2.000000 \n", "25% -121.800000 33.930000 18.000000 1447.750000 \n", "50% -118.490000 34.260000 29.000000 2127.000000 \n", "75% -118.010000 37.710000 37.000000 3148.000000 \n", "max -114.310000 41.950000 52.000000 39320.000000 \n", "\n", " total_bedrooms population households median_income \\\n", "count 20640.000000 20640.000000 20640.000000 20640.000000 \n", "mean 536.838857 1425.476744 499.539680 3.870671 \n", "std 419.391878 1132.462122 382.329753 1.899822 \n", "min 1.000000 3.000000 1.000000 0.499900 \n", "25% 297.000000 787.000000 280.000000 2.563400 \n", "50% 435.000000 1166.000000 409.000000 3.534800 \n", "75% 643.250000 1725.000000 605.000000 4.743250 \n", "max 6445.000000 35682.000000 6082.000000 15.000100 \n", "\n", " rooms_per_household bedrooms_per_room population_per_household \n", "count 20640.000000 20640.000000 20640.000000 \n", "mean 5.429000 0.213794 3.070655 \n", "std 2.474173 0.065248 10.386050 \n", "min 0.846154 0.037151 0.692308 \n", "25% 4.440716 0.175225 2.429741 \n", "50% 5.229129 0.203159 2.818116 \n", "75% 6.052381 0.240126 3.282261 \n", "max 141.909091 2.824675 1243.333333 " ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING DATASET:\n", "data_numeric = data.copy()\n", "data_numeric = data.drop([\"ocean_proximity\", \"median_house_value\"], axis=1)\n", "data_numeric.describe()" ] }, { "cell_type": "markdown", "metadata": { "id": "ffYEFIjxvGHm" }, "source": [ "**COORELATION CALCULATION:**" ] }, { "cell_type": "code", "execution_count": 82, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 394 }, "id": "ciTJmhFavFtq", "outputId": "2c264f6d-5ecc-46af-e226-5b9810e3e967" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomerooms_per_householdbedrooms_per_roompopulation_per_household
longitude1.000000-0.924664-0.1081970.0445680.0691200.0997730.055310-0.015176-0.0275400.0812050.002476
latitude-0.9246641.0000000.011173-0.036100-0.066484-0.108785-0.071035-0.0798090.106389-0.0986190.002366
housing_median_age-0.1081970.0111731.000000-0.361262-0.319026-0.296244-0.302916-0.119034-0.1532770.1356220.013191
total_rooms0.044568-0.036100-0.3612621.0000000.9270580.8571260.9184840.1980500.133798-0.187381-0.024581
total_bedrooms0.069120-0.066484-0.3190260.9270581.0000000.8735350.974366-0.0076170.0017650.071649-0.028325
population0.099773-0.108785-0.2962440.8571260.8735351.0000000.9072220.004834-0.0722130.0100350.069863
households0.055310-0.071035-0.3029160.9184840.9743660.9072221.0000000.013033-0.0805980.034498-0.027309
median_income-0.015176-0.079809-0.1190340.198050-0.0076170.0048340.0130331.0000000.326895-0.5452980.018766
rooms_per_household-0.0275400.106389-0.1532770.1337980.001765-0.072213-0.0805980.3268951.000000-0.370308-0.004852
bedrooms_per_room0.081205-0.0986190.135622-0.1873810.0716490.0100350.034498-0.545298-0.3703081.0000000.002601
population_per_household0.0024760.0023660.013191-0.024581-0.0283250.069863-0.0273090.018766-0.0048520.0026011.000000
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " longitude latitude housing_median_age \\\n", "longitude 1.000000 -0.924664 -0.108197 \n", "latitude -0.924664 1.000000 0.011173 \n", "housing_median_age -0.108197 0.011173 1.000000 \n", "total_rooms 0.044568 -0.036100 -0.361262 \n", "total_bedrooms 0.069120 -0.066484 -0.319026 \n", "population 0.099773 -0.108785 -0.296244 \n", "households 0.055310 -0.071035 -0.302916 \n", "median_income -0.015176 -0.079809 -0.119034 \n", "rooms_per_household -0.027540 0.106389 -0.153277 \n", "bedrooms_per_room 0.081205 -0.098619 0.135622 \n", "population_per_household 0.002476 0.002366 0.013191 \n", "\n", " total_rooms total_bedrooms population households \\\n", "longitude 0.044568 0.069120 0.099773 0.055310 \n", "latitude -0.036100 -0.066484 -0.108785 -0.071035 \n", "housing_median_age -0.361262 -0.319026 -0.296244 -0.302916 \n", "total_rooms 1.000000 0.927058 0.857126 0.918484 \n", "total_bedrooms 0.927058 1.000000 0.873535 0.974366 \n", "population 0.857126 0.873535 1.000000 0.907222 \n", "households 0.918484 0.974366 0.907222 1.000000 \n", "median_income 0.198050 -0.007617 0.004834 0.013033 \n", "rooms_per_household 0.133798 0.001765 -0.072213 -0.080598 \n", "bedrooms_per_room -0.187381 0.071649 0.010035 0.034498 \n", "population_per_household -0.024581 -0.028325 0.069863 -0.027309 \n", "\n", " median_income rooms_per_household \\\n", "longitude -0.015176 -0.027540 \n", "latitude -0.079809 0.106389 \n", "housing_median_age -0.119034 -0.153277 \n", "total_rooms 0.198050 0.133798 \n", "total_bedrooms -0.007617 0.001765 \n", "population 0.004834 -0.072213 \n", "households 0.013033 -0.080598 \n", "median_income 1.000000 0.326895 \n", "rooms_per_household 0.326895 1.000000 \n", "bedrooms_per_room -0.545298 -0.370308 \n", "population_per_household 0.018766 -0.004852 \n", "\n", " bedrooms_per_room population_per_household \n", "longitude 0.081205 0.002476 \n", "latitude -0.098619 0.002366 \n", "housing_median_age 0.135622 0.013191 \n", "total_rooms -0.187381 -0.024581 \n", "total_bedrooms 0.071649 -0.028325 \n", "population 0.010035 0.069863 \n", "households 0.034498 -0.027309 \n", "median_income -0.545298 0.018766 \n", "rooms_per_household -0.370308 -0.004852 \n", "bedrooms_per_room 1.000000 0.002601 \n", "population_per_household 0.002601 1.000000 " ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING CORRELATION:\n", "data_numeric.corr()" ] }, { "cell_type": "code", "execution_count": 83, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 729 }, "id": "4d_aB6MlvqT6", "outputId": "ef081b67-47f1-47a4-e54d-db8e642d811d" }, "outputs": [ { "data": { "image/png": "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svjD+J61PzGUtWs3ZwzuQHpeKcuyCpm3MY/Lx3blrpMPobi8iidTMwD4fH1u7TEP8EVafu2kPL8Z15V+7eOIbxXBfaf15+1V20N6fFc7eGvldq4Y1xUz+CqjgOyick7s35bM/DJWZRezYHMBF4/oxF8m9aKkvIoXlmwFILuonKVbC7lxYs/a7Ti8CZxGd0sga9du/jjeGz5e83Mrpw1qT5c20Tggr6SC15f/yIffyl6ZOxjGMAkAZhbvnCvyZ8V9DPjWOfdgqOsFuJgRV4e6DkFV+vWj1Bup8qNWM7fA/bM2hrYiQXTDxN4AXDVjdYhrEjyPnT0QgCteXxXimgTPk+d5E7388tUVIa5J8Pz7wkP53Zvf6aeiD3qP/2wQN73Xor5H/cHde0o/bv6JxXz3Kf34zfSVoa5G0Dx1/hAArp+5NsQ1CZ5/nN4f4KBI+cWMnxK0TlbpnCkHxT6poSG4B5ff+JMSrQIS8GbFFREREREROShoCO5BxM92toSMp4iIiIiINEWz4DZJe0ZERERERESCQhlQERERERGR5hR2UF2WGVTKgIqIiIiIiEhQKAMqIiIiIiLSnHQNaJO0Z0RERERERCQo1AEVERERERGRoNAQXBERERERkeZkmoSoKcqAioiIiIiISFAoAyoiIiIiItKcNAlRk7RnREREREREJCiUARUREREREWlOuga0ScqAioiIiIiISFAoAyoiIiIiItKcdA1ok7RnREREREREJCiUARUREREREWlOuga0ScqAioiIiIiISFAoAyoiIiIiItKcdA1ok7RnREREREREJCjMORfqOsjBTweRiIiIiATDQXFxZczJDwbt83Hp+9cdFPukhobgSrMoqwx1DYIrOgJiRlwd6moETenXjwLwx7fXhLgmwfPAGQMAuOX9dSGuSfDcdXI/AO74eH2IaxI8tx/fF4D7Z20McU2C54aJvZn6yU+njQFuO64vd33604r5lmP7MvmV5aGuRlA9d9FQ7vt8Q6irETQ3HtMHgOtnrg1xTYLnH6f3D3UVpBmoAyoiIiIiItKcdA1ok7RnREREREREJCjUARUREREREZGg0BBcERERERGR5mQH1bxAQaUMqIiIiIiIiASFMqAiIiIiIiLNSZMQNUl7RkRERERERIJCGVAREREREZHmpAxok7RnREREREREJCiUARUREREREWlOmgW3ScqAioiIiIiISFAoAyoiIiIiItKcdA1ok7RnREREREREJCiUARUREREREWlOuga0ScqAioiIiIiISFAoAyoiIiIiItKcdA1ok7RnREREREREfsTM7CQzW2tm683spkbWP2hmS/2/dWaWH7CuKmDd2wdaF2VARUREREREmlMLugbUzMKBx4DjgUxgoZm97Zz7pqaMc+66gPK/B0YEbKLUOTe8ueqjDmgLZGZFzrn4vaxPBC52zv3Lv98ZeMQ5d66ZDQc6O+fe+47POQUocs79/QCq3mycc/y/e+5i3pzZRMdEM/Wuexk4aHCDch+8/x5PP/k4VVXVjJ8wkeuuvwGA/zz3b2a8+TrhEeEkJSXztzvvpnPnLsEOo1k98ddLOHn8EHbkFjL6vLtDXZ3vbUD7OM46tANhZqSm5/PZ+tw668PDjItHdKJbYjTF5VX8Z1EWeaUVxEaGMXlMF7olxrAwo4C3VmTXPubkAe0Y3S2B2Mhw/vLeumCHtE/OOZa99SRbVy8mIrIVoy++lqRufRuUy8tYz8KXH6KqopxOA0cx7JwrMDNWvvciW1csADNatU5gzMV/ICahLQDbv13BshlP4aoriYprw8Tf3xvs8BrlnGPxG9PYsmoREVGtOPzn15HcSMw5m79l/gsPUlVRTpfBoxl17m8x/0177ay3WTf3XczC6DxkDCPP+hUAeVs28dUrj1JRVgJmnHzjQ4RHRgU1vn1xzjH/tSfIXLmQ8KhWTJh8Pe26N4x/4X+fY33qp+wuKWLyIzNql29dt4LU6dPI3bKJSb++iV6jjg5m9febc45Fr9dt57aNxFnTzpXlXjuPPs9r57nP3Muu7EwAykuLiYqJ49SbH2V30S7mPH03Oenf0nvccRx2we+CHdp+cc6x0I8/PLIVR17WdPxf/GfPcT7Gjz83YwOprzxGVWU5YWHhjL3wStr17B+CSPbPoZ3iuXhkF8IM5mzI5d3VO+qs79c+jotHdqZbYjSPf7mZRRkFteuun9iLPm1jWbejmIfmpAW55t+Nc47U6dPIWLmQiKhWjP/FHxs9f3emf8uc5x+gsqKcbkPGMO58r11zMjfyxUuPUrm7lPi2KUz81Y1ExcRSVVnBFy/9k53p32IWxrjzf0un/kNDEKGnf/tYzhqSQpjBgs0Fjb8fD+9IV//9+IXFWeSVVgIwqW8yY7snUO3gvyuzWbujhMToCC4a0Yn4VuEApKbnM3dTfp1tTuidxBmDO3D7h+spLq8KTqACcBiw3jm3EcDMXgXOBL5povxFwF9/qMpoCO7BKRG4suaOcy7LOXeuf3c4cEpIatWM5s2dw+b0NGa+/xG3T5nKnXdMaVAmPz+PB/9+H08+8zwz3n6XnJ07WZA6H4ABAwfy8vQ3eWPGTI4/4UQe/Mf9QY6g+b0wM5Uzr3os1NU4IAacMzSFJ1Mz+X+fbWRklzakxNftOIztnkBpRRV3f7qR2RtyOW1QewAqqx3vr9nJ26u2N9juN9lFLfoDzbbViynckcVJt0xj5AVXseT1xxstt+T1fzHqgqs56ZZpFO7IYtvqxQD0n3QOx//5nxx/4yN0GjSG1R++CkB5SRFfv/E4R/7mVk646V+Mm9xgRE3IZH2ziF07sjjjr08x9qLf89WrjR+7C1/7F+MuvoYz/voUu3ZkkfWNF/O2dcvIXJHKKTc9ymm3Ps6gY88BoLqqii+f/zuHXXgVp936OMdfey8WHh60uPZX5sqF7NqexXlTn+HoS6/hi5cebbRcj6FjOfMvDzdYHp/cgfGTr6fPYcf80FU9IFmrFlG4I4szpzzF2IubbuevXv0XYy++hjOnPEVhQDsffflNnHrzo5x686N0H34k3YYfAUB4ZBTDTvs5I8+5PGixfB9bVi1i1/YszpryFIdf8nsWNBF/6iv/4vBLruGsKU+xa/ue+BfP+DfDTr2Y029+lGGnXcriGf8OZvW/EzP4+aguPDBrEze/t46xPRLp3KZVnTK5JeU8vSCD1PT8Bo9/b/UOnpy/OVjVPSCZKxexa/sWzrvjaY665Bq+fLnx8/eLlx/jqEuv5bw7nmbX9i1krloEwLwXHmbM2b/knNsfp+fwI1jx8RsArJ33AQDn3P44J117FwvefBpXXR2coOox4JxDU3hqQSb3fb6JEZ1bN3w/7pZASUU193y2iTkb8zhtoPd+nBIfxYjOrblvVhpPpWZyzqEpGFDlHG9/s537Z6XxyNx0juyZVGebidER9G8fR25JRRAjFV8XICPgfqa/rAEz6wH0Aj4LWBxtZovMLNXMzjrQyqgD2oKZWbyZfWpmS8xshZmd6a+6F+jjj8O+38x6mtlKM4sC7gAu8NddYGZTzOxPAdtcaWY9/du3+GO85wH9A8r0MbMPzGyxmc01swFBC9r3+WefcvoZZ2FmDB02nMLCXezYUbfjkZmRQfcePUhOTgZg7OGH88lHHwJw2NhxxMTEAHDosOFs37YtuAH8AL5YsoHcgpJQV+OAdE+KZmdxObklFVQ5+HrLLoZ0rJvsH9IxnoX+t+bLtxZySLtYAMqrHJtyS6msdg22m55XRuHulvtNataKVHqMmYSZ0bbnACpKiyktqPtNc2lBLpVlJbTtOQAzo8eYSWStSAUgMjq2tlxV+W68jw6QsWQ2XYYeTmxSBwCiWycGJ6D9kLk8ld6HeTG36zWA8iZirigroV0vL+beh00ic7n3JdK3c99j0PHnER4ZCeyJbeuaJSR26UlS194AtIpvQ1hYy+uApi9L5ZBxx2JmdOg9kPLSIkrqxQ/QofdAYhOSGyxv3S6Ftl171WaDW6qM5an0Guu1c3u/nevHWeK3c3u/nXuNnUTGsvl1yjjnSF8yl56jJwAQ0SqaDn0HEx4RGbRYvo+M5an0CYy/ZN/x9xk7ic018ZtRXuq9rleUFhPTyLHQUvROjiW7qJwdxeVUVTsWbM5nRNc2dcrsLK4gM78M5xq+Tq/OLqKsMjSdre8qfXkqfWvP370f1x16e+3ad9yxpC/zXrMLsrfQ8ZAhAHQeOIK0JV8AkL91M536DwMgpk0iUTFx7Ez/NoiR7dE9KZqc4oo978dZhQxu5P14UWbA+3F7771ocMd4vs4qpKrakVtaQU5xBd2ToincXcWWgt0A7K5yZBftJiF6z2DLMwZ3YGa9rPmPmZkF8+8Kv4NY83fFAVT9QuAN51zgB6sezrnRwMXAQ2bW50D2jYbgtmxlwNnOuV1m1g5I9S/8vQkYUjMWu6ZD6ZwrN7PbgdHOuav9dVMa27CZjcI7wIbjHQdLgMX+6ieB/3POfWtmY4F/AZN+kAibsH17NikdO9beT0npyPbsbNq371C7rHv3HqSlbWLLlkxSUjry+aefUlHR8Fu1GW++wZFHjw9KvWXvEqIjyfeH7wDkl1XSIymmyTLVDsoqq4mLCj+oh+qUFuQQm9Su9n5MYltKC3LqfNgsLcghJjGwTDtKC3Jq76989z+kL/ycyOhYJlztDcEu3J6Fq65k1j//QuXuUg4ZfwY9DgvqqdqkkvwcYpPa196PTWxHSX7dmEvyc4hNbNugDEDh9i3s2LCKZTP/Q3hkFCPPvpy2PfpRuH0LYHz26G2UFRXQY9R4Bh9/Li1NcX4Occl72jMusR3FeTsb7WwezEoLcohL3NPOcYntKM3PqRNnab12jqt3bANsX7+K6DaJtOlwcF0q0eA4T/KO4di9HedJe47zMef+hk8evZ3Fbz2Dc46T/9QiroJpVFJsZJ3MVV5JBb3bxu7lEQevkvydxNV7/SrOr3v+FufvJC6p7jlekr8TgKTOPUhfNp+ew49g05K5FOd5y5O79mbz8gX0GTOR4rwd5GxeT1HeDtr3Cv6w64ToCPJL97RnQVkl3ROj65RpEx1R5/24tMJ7P06IjiA9r6y2XH5ZRZ2OJkBSTARdEqJJz/fKDU6Jp6Cskq27dv9QIf2kOeeexPv83pQtQLeA+139ZY25ELiq3va3+P83mtksvOtDN3zf+qoD2rIZcLeZjQeq8VLlKc207aOBGc65EoCaGa3MLB44Ang94Jv3Vo1uIcTaJCRwy21TuPH66wgLC2PY8BFkZtQd3vPOzP/xzaqVPPv8iyGqpUjzGHLqZQw59TLWfPw66+e+w+CTL8FVV5GXsYHxV95JVcVuPn/oBpJ79qf1QfYhvjHV1dXsLi7kxD89QE76OuY+ey9nTnmG6qoqdmz8hpNueJCIqFZ8+sgttO3el479m21uBAmBtEWz6TlqQqirEXTr5r7HmHN/Q48RR5K2eC5fvvgQJ1x78F7jL56jL/sD8197gqXvvUr3oWMJi/A+bvc74gTyt2bwv3uuJT65Ax16D8TCfnyDEaPCjV+M7sL/Vm5nd2U1keHGsYck82RqZqirFlQtbATLQuAQM+uF1/G8EC+bWYc/6jEJmB+wLAkocc7t9hNiRwL3HUhl1AFt2S4B2gOjnHMVZpYGRO/9IQ1UUneo9b4eHwbk72umKz+1fwXAtGnTuOxXB5Lp97z68ku89cZ0AAYPOZTsgGGz2dnb6JDSsO898ZhJTDzGy/i8Mf01wgNeyFPnf8nTTz7BM8+9SFRUy5qg5KeqoKyCxJg9LzuJ0REUlFY0WqagrJIwg+iIsIMy+7l+7rtsmu8NCU/ufggl/jfg4GWEaiYRqhGT0JbS/MAyOxuUAeg+egLzpv2NwSdfQkxiW6LiWhPRKpqIVtG06zOEgqxNIeuArp39Dhu+9K5xSu7Rj5K8PUOtSvJ31skCAcQmtq3NBNUvE5vYlm7Dj/CG8Pbsj5mxu2gXsYnt6NBnCNHxCQB0Hjya3IwNLaID+s3nM1njX+PVvmc/inP3tGf9bMnBbO3sd1j/hRdn2x79KM7f087F+TuJqdfOMfXaubjesV1dVUXGsi85+c8Nr4VtidbMfodvA+Kvc5zn7cdxHlBmQ+qnjDnvtwD0GHkU819qufsgr6SC5Ng9Q6KTYiPJK/3xXMv3zayZrJ3nvWa363EIxfVev+IS656/NaMaahTn7yTWL5PYsRsnX3sXAAXZmWSsWAhAWHg4487f83lp5n3Xk9Ch6w8T0D4UlFWSGLOnPROivffdQLvKKuu8H8dEeu/HBf7yGonRkbWPDTOYPLoLS7bsYsW2IgDaxkaSHBvJ9RN61j7XdeN78PDc9BZ9+cyPiXOu0syuBj4EwoFnnXOrzOwOYJFzruanVS4EXnV1x9EPBKaZWTVeP+HewNlzvw91QFu2BGC73/k8BujhLy8EWjfxmPrr0oDTAMxsJN5FxQBzgOfM7B684+B0YJo/3HeTmZ3nnHvdvK9vhjrnlgU+Sb1Uv6v3mvW9XHjxJVx48SVe5WbP4tWXX+SkU05lxfJlxMe3rjP8tkZOTg5t27ZlV0EB0199mfseeAiA1au/Yerfbudf056mbduGH+IlNDLyy2gfF0VybCQFpRWM6NKGF5Zk1SmzalsRY7olkJ5XxtBOrVm/8+C87rXv0afS9+hTAdi6aiHr575Dt5HjyU1fS2RMbINrvWISkomIjiUnbQ3JPfqTvvAz+o4/HYDCHVm0bt8ZgKwVC2id4n1g6TxkHF+/+QTVVVVUV1WQm76WQyaeSaj0n3Aa/SecBsCWlV+xds479Bg1gZy0tUTFxDUac2R0LDs3raFtz/5s/Ooz+k/wYu469HCy1y2nY79h7MreQnVlJa3i29Bp0Ei++eRNKsvLCAuPZPv6FQw45oDnQ2gWg445nUHHePXfvOIrvvl8Jr3HTGDHpjVExcT9aIbfBrZz5sqvWDf7HXqOmsBOv53rxxnrt/OOTWto17M/mxbsaWeAbWu+pk1K14Omgz5gwmkMqIl/xVesmf0OPUd78UfuR/wbFnzGgImn167L/nYFHfsNZdvaZbXneUu0KbeElNZRtIuLJK+0krHdE3niy4NjUqH9MWji6QyauOf8XT1rJr1HT2DHprVERjfdrts3rqF9r/6sT/2UQRPPAKB0Vz4xbRJx1dUsfe9VBo735oasLC/DOYhsFc2Wb5ZgYWEkde4e3EB9GflltIuLJDkmkoKyCkZ0bs2LS7bWKbMqu4jRXfe8H3/rvx+v2lbEpSM7MXtjHgmtImgXF8lmf0juBcM6kl20mzkb82q3s62wnCkf7RmtecuxvXlobvpB+eXyd9KiEqDg/0LGe/WW3V7v/pRGHvclcGhz1kUd0JbtJWCmma0AFgFrAJxzOWb2hZmtBN7H+12fGp8DN5nZUuAe4E3gMjNbBSwA1vnbWGJmrwHLgO14qfkalwCPm9mtQCTwql8uaI4eP4F5c2Zz2snHEx0dwx137hmSdP45ZzL9rf8BcN89d7Fu7RoArvjdVfTs6fWvH/z7fZSUlHDDddcC0LFTJx557IlghtDsnr9nMkePOoR2ifGs/2AqU594j+f/O3/fD2xBqh28tSKbK8Z1I8zgq80FZBeWc1L/dmTkl7Equ4gFmwu4eGQnbj62NyXlVfxn8Z4O6q3H9SE6IozwMGNIx3imzc8gu6ic0wa1Z2SXNkSGG7cf34cFmwv4cO3OvdQkuDoOGs221Yv44M4rCI9qxeiLrq1d9/F913D8jY8AMOLc37HI/xmWjgNH0XHgKABWznyOwu1bMAsjNrk9I8/zLs1o07EbHQeO4uP7fu9N7jLuBBI69WhYgRDoPHgMW1Yt4u2//ZrwyFYcfmntz4vx3j1Xc8pfvFklx5x/JfNffJCqit10HjSazoNGA9Dn8ONJfekh3rnrSsLCIzj853/EzGgV25qBk87ig/uuAzM6Dx5NlyGHhSTGvek2ZAwZKxYy/dZfEREVzfhf7In/ralXcc5t3sv2gjefYcNXn1NZvpuX/3wp/Y86iVGnX8qOtLV8/PhUykuK2Lx8AYtnvsi5U6aFKpwmdRk8hqxVi/jflF97P8MS0M7v3n01p97stfNhF1zJly8EtPPg0bXl0hbPqZ18KNCM235JRVkJ1ZWVZC6fz6Sr7ySxU2g+rDelyxDvOJ/xVy/+I36+J/6Zd1/N6X78Yy+8ki//8yCVFbvpMng0Xfz4x11yDQtfn4arriY8MpLDL/l9SOLYH9UOXlyUxZ8m9ibMYO7GPLJ27ebsQ1PYlFvK0i276JUcw++P7kFcVATDu7Th7ENTuMX/aay/HNuHTm1aER0RxgNnDuDZBZms9DNkLU23IWPIXLmQ12+7nIioVhwdcP7OuPNqzr7Va9cjLr6SOc8/SFX5broOHk3XIV67blg4i9Wz3wGg54gjOeSI4wEo3VXAh/+8FSyMuMS2TPjlnwiVagdvrdzOFeO6YgZfZRSQXVTOif3bkplfxqrsYu/9eEQn/jKpFyXlVbzgd1Czi8pZurWQGyf2rN2OA3olxzC6WwJZu3bzx/He9cHvrdnJmu3FIYtTWiZrbKYyke+oWTKgB5PoCIgZcXWoqxE0pV97b7Z/fHtNiGsSPA+c4U3+fMv7Le93RX8od53cD4A7Pl4f4poEz+3He7/td/+sjSGuSfDcMLE3Uz/56bQxwG3H9eWuT39aMd9ybF8mv7I81NUIqucuGsp9n3/veVEOOjce401Eev3MtSGuSfD84/T+0OJyi42LP/+5oHWyiqZPPij2SY0f35XPIiIiIiIi0iJpCK6IiIiIiEgzamGz4LYoyoCKiIiIiIhIUCgDKiIiIiIi0oyUAW2aMqAiIiIiIiISFMqAioiIiIiINCNlQJumDKiIiIiIiIgEhTKgIiIiIiIizUkJ0CYpAyoiIiIiIiJBoQ6oiIiIiIiIBIWG4IqIiIiIiDQjTULUNGVARUREREREJCiUARUREREREWlGyoA2TRlQERERERERCQplQEVERERERJqRMqBNUwZUREREREREgkIZUBERERERkWakDGjTlAEVERERERGRoFAGVEREREREpDkpAdokZUBFREREREQkKMw5F+o6yMFPB5GIiIiIBMNBkVtsN/nVoH0+3vnchQfFPqmhDKiIiIiIiIgEha4BlWZx/6yNoa5CUN0wsTd/fHtNqKsRNA+cMQCAmBFXh7gmwVP69aMAfLR6R4hrEjwnDGwPwMwV2SGuSfCcfmgKADOWbwtxTYLn7KEd+e9PKF6As4Z25B+zf1rvU9dP6M1jX6SFuhpBddWRPbnkhaWhrkbQvPTz4QA/yc8jBwPNgts0ZUBFREREREQkKJQBFRERERERaUbKgDZNGVAREREREREJCmVARUREREREmpMSoE1SBlRERERERESCQh1QERERERERCQoNwRUREREREWlGmoSoacqAioiIiIiISFAoAyoiIiIiItKMlAFtmjKgIiIiIiIiEhTKgIqIiIiIiDQjZUCbpgyoiIiIiIiIBIUyoCIiIiIiIs1IGdCmKQMqIiIiIiIiQaEMqIiIiIiISHNSArRJyoCKiIiIiIhIUCgDKiIiIiIi0ox0DWjTlAEVERERERGRoGgxGVAz6wm845wb8gNt/0vn3BE/xLYPVGDsZjYauMw5d01oaxVazjnmv/YEmSsXEh7VigmTr6dd974Nyi3873OsT/2U3SVFTH5kRu3yretWkDp9GrlbNjHp1zfRa9TRwaz+/2fvvsOjqrYGDv/WTHqvEAi9h2BoARGlKKAoil28isJVP7xXsBcQr4piu4i9ISqC7VoQVBBUlCI9NCEEQm8JgTTS+2R/f8yQQoi0MElgvc+Th8w5+8ysNWfI2fusfc6ctA6h3lx3QQMsIqzal8HCnemV1lstwm1dG9E0wIPcIhufrT3IkfxivFwtjOwRTtMAT9YcyGRW7OGyba7sEEJ0U3+8XK08OW+7s1OqUVOevZ0r+3YiJT2b6Jtfqu1waoQxhu8/fou4dStxc/dg+APjadq6fZV27z/3CJlH0ii12Wjd88OL1AAAIABJREFUsTO3jHoEi9UKwJK5M/lz/iwsFguR3Xtz3cj7nJ3GKTHG8OO0t9m6YRVubu4MG/MkTVpVzfmjFx4jy5Fzy4gobrjnYSxWK3M+e58ta1fg4uJCcFg4w0aPw9PbtxYyOT3GGOZ8+jbb1q/G1d2dm0c/SXirdlXaTXvhcbIyyvO/9u6HyvZ5fWOM4acKOd9STc6fvPA42Rlp2Bw5X1fPcjbGsOKbKRyIXYOLmzv9Rz5KSPOqx6qY2dPZ4ThW3fVO+bFq04JZxC/7BYvFioevP/1GPIxvcENnpnBKjDH8+dUH7I2NwcXNg0F3P0qD5m2rtFvx/afEr/idwrwc/v3Bj2XLtyz7jWXffoxPYDAAUQOG0qnvlU6L/3RENfbljuhwLCIs3pnGnLjkSus7NPBmeHQ4zQI9eXfpXmL2Z1Za7+lqYdI1HVh7IJMZaxKdGfopORv9kVG9muDn7oJFhN3peXy/6TDG2YnVIq2AVu+8qYDW1cHnsYwxa8/3wSdAwuY1ZCUf5OaJn9Bn+AMs//Ld47ZrHnUh1z75VpXlPkEN6DvyUVr3vPRsh3raBLghqiFTVyXw34W76RbuR0Mft0ptLmzmT36xjZf+2M2SXelc3TEUgJJSw/z4VH465kAIsOVwDm/+udcJGZx9n89ZxbWj36vtMGrUlnWrSE46wDMffM2t9z3ON1MmH7fdPx+fyJNvzmD825+Tk5nBhhWLANgeu55NMUsZ9+Z0nnrnCwZc9w9nhn9a4jesIiUpgXHvfMVN/3qc76e+ftx2dzzyHI++9imPvTGD3KwMNq5cDEC7qGgee2M6j74+nZBGTfhj1hdOjP7MbduwmtSkBB5750tuuPcxfvjo+Pnf9sgEHpo8jYdfn05OVgaxqxY7N9AadDTnxx05z64m59sdOT/y+nRyszLYVM9yPrB5DVmHDzLshU/oc8cDLK3uWNX5Qq4/zrEqpGlrbhj/Njc9+wGtul3C6u+nne2Qz8i+2DVkHE7kzpc/5bIRD7Los3eO265ll14Me/rt465r17Mvtz33Abc990GdH3yKwMieTZi0cDdPzInnohaBhPu7V2qTmlvMhyv2s2LPkeM+x02dGxGfnOuMcE/b2eqPzFh7kMlL9jJp8R583Fzo3Lj+nDhUZ1ddG4BaReQjEYkTkd9ExFNEuojIKhHZJCKzRSQQQEQWO6qFiEiIiOx1/B4pIjEi8pdjm7aO5TmOf/s7tp0pIvEi8qU4TlGIyFWOZetE5G0RmVtdoCIyQURmiMhSEdknIjeIyCQRiRWRX0TE1dGuu4gscTznryLSqMLyjSKyERhd4Xn7H31dEekpIitFZIOIrBCR9o7lI0VkluN1dojIpL97U0XkAxFZ63hfn6uw/Lj5ioi3iExzvI8bROTaU9uNZ27fxlW07TUAEaFBqwiK8nPIy0yv0q5Bqwi8/IOqLPcNaUhwk5Z1+uxTs0APUnOLSM8rxmZgQ2IWncJ8KrXpFObDmgP2s6mbkrJpG+IFQJHNsCc9n5LSqucS9x0pILvQdvYTcILl63eRnplX22HUqNiYpfTsPxgRoWX7TuTn5pCZnlqlnaeXNwClNhu2kmJ7TwhYNn82g24cjqurvXPgGxDovOBPU9yaZUT3vwIRoXm7SArycsg6UjVnjwo5l5SUHE2Z9l16YrXaJ+w0bxdJZlqK02KvCVvWLKNbP3v+zdpFkp+bQ9aRtCrtPI7d5/X4Fopxa5bRvV/5Pj/ZnKWe5bz3r1W0vch+rGp49FiVUfVY1bBVBF4BVY9VjTt0xsXdA4AGrTqQe5z/F3XJ7g0r6dB7ICJCo9YRFOblkptRdb82ah2Bd0BwLURYs1oHe3E4u5CUnCJspYZV+47Qval/pTapuUUcyCg4bmWvRZAn/p4uxB7Mdk7Ap+ls9UcKS0oBsIi9gnq+ERGn/dQ3dW0A2hZ4zxgTCWQANwKfAWONMVFALPDsCZ7jX8BbxpguQDSQcJw2XYGHgI5AK+BiEfEAPgSuNMZ0B0JPIt7WwGXAUOALYJEx5gIgHxjiGIS+A9zkeM5pwIuObT8F7jfGdP6b548H+hhjugLPABXnIHYBhgEXAMNEpOnfPM9TxphoIAroJyJRJ8j3KWChMaYncCnwqoh4n+jNqEm5GWl4B4WUPfYOCKnzB+ZT5e/hSkZ+SdnjjIIS/D1dq21TaqCgpBRvt/ozPU1VlZGeSmBIg7LHAcENjjsABXhvwiM8OeJq3D296HpRfwCSDx5g15ZNTH78/3jrqTHs27HVGWGfkcy0VAKCy3P2DwolM+34OU+d+CgT7h6Kh6cXUb36V1kfs3AeHbr1OluhnhVZ6cfkHxxKVvrxB9GfvPAYE++5FncPLy7o1c9ZIda4rPRU/E8y54/rcc55GWn4BFY4VgWGkJtxeseq+GW/0bRTdE2FdlbkHEnFN6i8u+ATFELOcU4s/J2d65bz5TP/4uf3JpKdXrVqVpcEebmSlltc9jg9t5jAY47T1RHg9u7hfLXu4FmKruaczf7IqF5NeP6KthSW2NhYxwfiynnq2gB0jzHmL8fv67AP8AKMMUscy2YAfU/wHCuB8SIyFmhujMk/TpsYY0yCMaYU+AtoAXQAdhtj9jja/O8k4p1vjCnGPjC2Ar84lsc6nrM90AlYICJ/Af8BmohIgCOvPx3tP6/m+f2B70RkM/AGEFlh3R/GmExjTAGwBWj+N3HeIiLrgQ2O5+h4gnwvB8Y5Yl4MeADNKj6hiIxyVFXXTp069W9eWil1ukZPeJ0XP/2RkuJitseuB6C01EZedhaPTprKtSPuY9qrz2DMuXNVzainX+OZj2ZTUlzEzs3rK637/fvPsFqtdOszqJaiO/vu/s9knpo6i5KSYnYdk/+56p4KOR+7z88XO1YtJHXfdjpffmNth3JWtezSi5GTZnD781NoFtmNBR8f/xKEc8HA9iFsTMwiPa/4xI3PYVNXJTDht524WCy0DfWq7XBUHVFnbkLkUFjhdxsQ8DdtSygfQHscXWiM+UpEVgNDgHkicq8xZuEJXud034dCx2uWikixKe8FljqeU4A4Y8xFFTdyDEBPxkTsVdXrxX6josXHvrZDtTmISEvgMaCHMeaIiEynwvtVDQFuNMZsq66BMWYqcHTkaV5dvPsET3liWxbNIX6ZfQwf2qIduRWqQrkZqXhXOMt8LsgsKCbAs3y3BXi4kJlffNw2mQUlWAQ8XCzkFp0b02vPJ3/O+54Vv80BoFnbCI6klp/1z0hLxj+o+s+2q5s7F1x4CZtiltKhSw8CgkPpfFE/RIQW7TpiESEnKwNf/7o1FXf5/Fms/sN+FUPT1h3ISCvPOTM9Bf/gv885ssclbF6zjHadewCwZtF8tq5byb3PvlEvphut/GU2Mb/b82/Spn3l/NNS8AuqfpKNq5s7HXtczJY1y2nryL8+WHFMzpmnmXO7Op5z3KI5xC8tP1blVJidk3skFe+AUztWJWzZwIZ5X3PNY5OwurqdeAMn2/jHT8T9OR+Ahi3bkV2hkp2Tnlp2Q6GT4enjV/Z7ZN/BLP/u45oL9CxIzysm2Lu8Ehjk7cqR/JMbULYN9aJ9Ax8Gtg/Bw8WCi0UoKCnlmw1JZyvc03a2+yMlpYbNh7LpFObL9pRz67Kav1X3D1W1pq4NQI+VCRwRkT7GmKXAHcDRauheoDsQA9x0dAMRaYW9sve2iDTDPu302AHo8WwDWolIC2PMXuzTW8/UNiBURC4yxqx0TMltZ4yJE5EMEbnEGLMMuL2a7f2Bo7dMG3maMfgBuUCmiDQErsQ+kP27fH8F7heR+40xRkS6GmM2nObrn7SOl15Dx0uvAWB/bAxbFs2hVY9+pOyJx83T+7jXetZnBzIKCPV2I8jLlcz8YrqG+/H5+spTdeIO5dCjqT/7jhQQ1ciXnann0R/uc0jfq26k71X2ysbmtSv4c973dO8zkL3b4/Dw9qkyAC3Mz6MgPw//oBBsthLi1q6kdUf7bP2oC/uyI3Y97S7oRnLifkpKSvDxO9lzWs5z8ZU3cPGVNwCwZd1Kls+fRZeLB7B/xxY8vLzxC6yac2FBHn6B9py3rl9Jy4goAOI3rGbRj19x33Pv4OZ+ovNndcNFg6/nosHXAxC/biUrfplF54sHcKAs/8qddnv++fgFBmOzlbBt3SpaOPKvL3oPvp7ejpy3Vsh5/0nmHL9uVdk+r8siL72GyKPHqk0xxC2aQ+se/Ug+eqw6zrWe1Undv5OlX7zNVQ++gGcd/H8M0HnAUDoPGArAno2r2fTHT7S7sD+Hdsfj7uV1Std65maklbXfs2EVgY2anWCL2rU7LY8wX3dCfdxIzyumV/NA3lu276S2fX/Z/rLf+7YKomWwZ50cfMLZ6Y+4WQV3FwvZhTYsAhENfdiTpn0YZVfXB6AAI4ApIuIF7Ab+6Vg+GfhWREYBP1dofwtwh4gUA4eofN1ktYwx+SJyH/CLiOQCa840cGNMkYjcBLwtIv7Y3+83gThHHtNExAC/VfMUk4AZIvIfKud4KjFsFJEN2K8nPQAsdyz/u3wnOuLcJCIWYA9w9em8/ulq2qkHB2LX8O1/7sLFzYO+Ix4uWzdr4mhueNp+Z9TV33/CrphFlBQV8tXY4bS/ZDDdrxlOyt5tLPhgIkV5OezftJp1c77gpgkfOjOFEyo1MCv2MKN6NcUiELM/k8PZRQxuH8KBjALiDuewen8mt3VrxPgBrcgrsvFZhWtJ/jOwNR4uFqwWoVOYDx+uPMDhnCKu7hhKt3A/XK3CM4Nas3p/Jr9uq5/Xz854eSR9urclJMCHnb9MZOKUecz4YWVth3VGIrtfxJZ1K3n+X8NwdXwNy1GvPDSScW9Op7CwgKkvjaOkuBhjSmnbqRuXDLbfC6zXgCF8+e7LvPTAHVhdXBn+4FN1viIY0a0X8etX8sqYf+Dq7s6w+54sW/f6Y3fxyORpFBUWMO2V8diKiyg1hjadunLR5facZ3/yJiXFRUyd+AgAzdp25KZ7H6uVXE5H+269iN+wilfvvw1XN3duHj2ubN1bj93Ng5M/oaiwgM/++6RjnxtaRXbhwsuH1mLUZ6ZDt15s27CKSfffhtsxOb/52N085Mh5RoWcW9fDnJte0IP9m9fw9VP2Y1X/keXHqu+fH82Nz9iPVatmlh+rvnzCfqyKHjqc1TM/oaSwgN8/tHdVvINCGTxmQm2kclJaRPVk76Y1zBj3T1zd3Bl416Nl67569t/c9twHACz79mO2rV5EcVEhnzx6O5F9BtPrujv46/cf2fPXSiwWK+4+vgy6+9HqXqpOKDUwPSaBsQNaYRFhyc50EjMLuLFzGHvS8lifkEWrYE8e7tcSL3crXZv4cWPnMMbOqXYCWZ10NvojucU27u7ZBBerIAg7U/NYsS+jFrN0vrp+bK5Nci5dO3SmRMTHGJMj9k/Me8AOY8wbtR3X2VKD+dbIFNz65PH+rXjkp/jaDsNpXh/aAQDPrmNqORLnyd9g/zqF37bWrzuunonLI+xTJOdU+B63c901F9i/c3H2pkO1HInzXB8Vxg/nUb4A10WF8dqS8+s49Wi/Vry3fG9th+FUoy9uwe2f/3XihueIL+/oAnA+9kfqxciu2f0/OW2Qtf+dofXiPTmqrt2EqLb9n+PGO3HYp7/WrZJZzTvf8lVKKaWUUuqs069hqV59mILrNI7qX6UKoIj8E3jwmKbLjTGjqWMcN19yP2bxHcaY2OO1P16+SimllFJKKXW26AD0BIwxn2L/zs46zxhzYW3HoJRSSiml1PmuPlYmnUWn4CqllFJKKaWUcgqtgCqllFJKKaVUDdIKaPW0AqqUUkoppZRSyim0AqqUUkoppZRSNUkLoNXSCqhSSimllFJKKafQCqhSSimllFJK1SC9BrR6WgFVSimllFJKqXOYiAwWkW0islNExh1n/UgRSRGRvxw/91RYN0JEdjh+RpxpLFoBVUoppZRSSqkaVJcqoCJiBd4DBgEJwBoR+ckYs+WYpt8YY8Ycs20Q8CwQDRhgnWPbI6cbj1ZAlVJKKaWUUurc1RPYaYzZbYwpAr4Grj3Jba8AFhhj0h2DzgXA4DMJRgegSimllFJKKXXuCgcOVHic4Fh2rBtFZJOIzBSRpqe47UnTAahSSimllFJK1SARZ/7IKBFZW+Fn1GmEPAdoYYyJwl7lnFGz70g5vQZUKaWUUkoppeopY8xUYOrfNEkEmlZ43MSxrOJzpFV4+DEwqcK2/Y/ZdvFphgpoBVQppZRSSimlapSIOO3nJKwB2opISxFxA24Ffjom3kYVHg4Ftjp+/xW4XEQCRSQQuNyx7LRpBVQppZRSSimlzlHGmBIRGYN94GgFphlj4kTkeWCtMeYn4AERGQqUAOnASMe26SIyEfsgFuB5Y0z6mcSjA1CllFJKKaWUqkF16FtYADDGzAPmHbPsmQq/Pwk8Wc2204BpNRWLTsFVSimllFJKKeUUYoyp7RhU/acfIqWUUkop5Qx1rLZ4fO3H/uq0/vG2/15RL96To7QCqpRSSimllFLKKfQaUFUjRs/eeuJG55D3ro/gqfnbazsMp3nxynYA/LY1pZYjcZ7LI0IB8Ow6ppYjcZ78De8C4Nl7fC1H4jz5K14CwHPQf2s5EufJXzAWz4ufqu0wnCp/+Ytc9/Ha2g7DqX64J5rhX2ys7TCc6ovhnflo9b7aDsNp/u/C5gCMn3f+9EdeuqpdbYdw0uraNaB1iVZAlVJKKaWUUko5hVZAlVJKKaWUUqoGWSxaAq2OVkCVUkoppZRSSjmFVkCVUkoppZRSqgbpNaDV0wqoUkoppZRSSimn0AqoUkoppZRSStUg0RJotbQCqpRSSimllFLKKXQAqpRSSimllFLKKXQKrlJKKaWUUkrVIJ2BWz2tgCqllFJKKaWUcgqtgCqllFJKKaVUDdKbEFVPK6BKKaWUUkoppZxCK6BKKaWUUkopVYO0Alo9rYAqpZRSSimllHIKrYAqpZRSSimlVA3SAmj1tAKqlFJKKaWUUsoptAKqlFJKKaWUUjVIrwGtnlZAlVJKKaWUUko5hVZAVZ3RsYE3N0U1xCLC8n0ZLNieVmm9i0W4s3tjmgV4kFtk45M1iaTnFZetD/R04emBrfl5awp/7EwH4PnLW1NQUooxYDOGSYv3OjOlEzLGsHHWVJK2rsPF1Z3o2x4ksGmbKu2OHNjJmq/exFZcRKOI7nS+YRQiwuZ5X5AUuxpEcPf1p8dtD+HpHwxA8o5YNs7+CFNagpu3H/3vf8XZ6Z2QMYbvP36LuHUrcXP3YPgD42naun2Vdu8/9wiZR9Iotdlo3bEzt4x6BIvVCsCSuTP5c/4sLBYLkd17c93I+5ydRo2Z8uztXNm3Eynp2UTf/FJth1NjBl3YlskPXY3VamH6nDVM/vzPSuubhQUwZfyNhAR4cSQrn7ue+5bElCyahQXw9cu3YxHB1cXKBzNX8vEPMbWUxakZFN2SyfcNwGqxMH3+RiZ/s7rS+qahvnz0xBD8fTywWoSnP1nCrzG7AejUMpR3H7oCXy93So3hktEzKCy21UYap8S+n4fYc56zlslfHLOfGwYwZfwNhAR4cyQrj7ue/47ElCyi2jbi7ceG4uvtjs1mmPTZYmb+EVtLWZy+rk38uKdXMywCC7alMmvToUrrh3ZqyKD2IdiMISu/hHeW7iUlp6iWoj09UY18uaNHYywiLN6Zzpy45Err2zfw5o7oxjQN8OTdZftYsz8TgGBvVx7u1wJBsFqE37alsnBH2vFeos4xxrDwi/fZs3ENLu7uXPl/j9GwRdsq7ZZ+9ylbli+gIDeHBz/6qWx5Zuphfv34NfKyM/Hw9mXIv8biGxTqzBROijGGjbOncmjrOqyu7kT/o/r+yNr/2fsjYRHd6Xy9vT+y6adpJMXFYLG64hMSRvd/PIibpw+56Yf57ZX78A0NByCoeXu63TLa2enVCi2AVk8HoGdIRAKA24wx7/9NmxZAb2PMVyd4rhbAXGNMpxoMsV4Q4JbOYbyzfD8Z+cU8cWlLYpOyOZRdfnC+qHkAecU2JizYRfdwP66LbMC0NYll62+8oCFxh3OqPPdby/aTW1Q3O2+Htq4jO+Ugg5/6kPR921j/3QcMeOS1Ku3Wf/c+3YeNIah5e5Z9OIFDW9fRqGM07S+7gU5XDQdgx5Kf2Prr13S7ZTRFeTlsmPkBff41Aa/ABhRkZzg7tZOyZd0qkpMO8MwHX7N3exzfTJnMY69+VKXdPx+fiKeXN8YYPvnvf9iwYhHd+wxke+x6NsUsZdyb03F1dSM740gtZFFzPp+ziinfLOHjiXfWdig1xmIR3nxsKEMenEZichbLPrmPuUvjid9b3nF9ecyVfDl/PV/O30C/7q14/t9XcPfz35GUmk3/UVMoKrbh7enGui8e5OdlW0lKza7FjE7MYhHevH8QQ8Z+Q2JqNsveHcHclTuJ31/e4R57e2++XxLPR3P/okOzYH548WY63DEFq0WYNu5q7v7vXGJ3pxDk60GxrbQWszk5Fovw5qPXMOShT+37+eN/M3fZVuL3ppS1eXnMYL78ZYN9P3drxfP/upy7J84kr6CIuyfOZFdCGo1CfFn+yWgWrN5BZk5BLWZ0aiwC9/ZuxrPzt5OWW8yr10YQsz+DhIzyHHan5fHoD1spspUyOCKUET2bMHnh7lqM+tSIwIie4bzyx27S84p5/sq2rEvI5GBmYVmbtNwiPlxxgKs6Vh5gZeSXMOGXnZSUGtxdLLxydXvWJ2SSkV/i7DRO2Z5NazhyOJG7X/2UpF3xLJj+NsMnvFOlXeuuveg6aCifPP7PSsuX/G8qHS8eSKc+l7N/ywaWfjuNq/411lnhn7RDW9eRk3KQK8bb+yMbZn7AZQ9X7Y9smPk+3W6x90eWT53A4fh1hEVE07BdFzoNGYHFaiV2znS2/T6TC64ZCYBPcBgDH3/byRmpukyn4J65AOBEJZcWwG01+aIick6dPGgR5ElKbhFpecXYDKxLyCKqkW+lNlGNfFjtOJu64WAW7UO9Kq1LyysmKauQ+uRg7Cqa97gMESG4RQeK83PJz0yv1CY/M52SgjyCW3RARGje4zIOxq4CwNWj/D2wFRViH8rDgfVLCI+6CK/ABgB4+AY4J6FTFBuzlJ79ByMitGzfifzcHDLTU6u08/TyBqDUZsNWUlx2WnHZ/NkMunE4rq5uAPgGBDov+LNg+fpdpGfm1XYYNapHxybsSkhj78EjFJfY+O73TVzdJ6JSmw4tGrBknb0jvmTd7rL1xSU2ihyVP3dXK5Z6cjq5R/tG7DqYwd5DmRSXlPLd4q1c3btyxcQY8PN2B8Df252kNPvJs4HRLdm8O4XY3faBW3p2AaWlxrkJnIYeEU3YlZBevp//OM5+bllhP68v3887D6SxK8E+OE9KzSblSA4hAd7OTeAMtQ31JimrkMPZRZSUGpbtTufC5pX/7m5OyqbIcTJhW3IOwd5utRHqaWsd7MXh7CJScoqwlRpW7c2gexP/Sm1Sc4s5kFGAOeYjays1lDg+x64WqVeVoZ3rVxB58SBEhMZtIijMyyUno2r1tnGbCHwCgqssTzu4n2YduwDQNKILO9evPOsxn46kzSfXHymupj/SsEO3splJQc3bk59R9Vh+vhERp/3UNzoAPXOvAK1F5C8RedXxs1lEYkVkWIU2fRxtHhaRFiKyVETWO356n8wLichIEflJRBYCf4hIkIj8ICKbRGSViEQ52lW3fIKIzHC89j4RuUFEJjli/UVEXB3tXhGRLY7tJ9f8W1ZVgIcLRyqcCc3ILybAo/IYO8DThSOOKbelBvKLS/F2s+JuFQa1C2be1hSOZYAxFzdjbP8WXNyi7g3C8jPT8AoMKXvsGRBMfmZalTaeARXbhFRqs/nnz/h5wj/Zv24xkVfdDkB28kGK83NY/M6T/D75IfbFLDzLmZyejPRUAkMalD0OCG5w3AEowHsTHuHJEVfj7ulF14v6A5B88AC7tmxi8uP/x1tPjWHfjq3OCFudgsah/iQczix7nJiSSXioX6U2sTsPcW3/SACu7ReJn7cHQX6eADRp4E/MZ/ez44exvPbFn3W++gnQOMSXhJSssseJqdmEh/hUavPi58u4dUAkO7+6j9kv3swj7y0AoG14EAbDTy/fwor3R/DILT2dGvvpahzqR0Jyhf2cnEV4aOXBSeyOQ1zbryMA1/brWGk/HxUd0QQ3Vyu7Eyt3fOu6IC83UnPLZ+yk5RYR5FX9AHNgu1DWH8isdn1dFOjlSnpeeY7pecUEerme9PZBXq68NKQdb93QkblxyfWi+gmQk55Wacqsb1AIOeknP304tGkrdqxdDsCOtcspKsgjPzvrBFs5X9W+RjAFx/RHCjLT8PSv0MY/pEqfBWDv6gWERXQve5ybfpjfJz/IknfHkbor7ixEr+obHYCeuXHALmNMF2AV0AXoDAwEXhWRRo42S40xXYwxbwDJwCBjTDdgGHAq8xK6ATcZY/oBzwEbjDFRwHjgM0eb6pYDtAYuA4YCXwCLjDEXAPnAEBEJBq4HIh3bv3Bqb4fzXRURyqKd6RTaqlYJXv9zH/9dtIf3Vhygb6tA2gR7HucZ6rdOQ+5kyIRPada9PzuXzgXAlNo4cmAXl4x6lj7/eo6tv31NdnLiCZ6pbhs94XVe/PRHSoqL2R67HoDSUht52Vk8Omkq1464j2mvPoM59tS7qvOefHcefbq0ZOX0MfTp2pLE5ExsjmpJQnImPe98h063vMbwq7rSINDnBM9WP9xyaUe++C2WNre9z/VPfccnY69GBFysFnpHNuGfL89hwMNfMvTidvTv2ry2w60RT743nz5dW7Ly09H06VJ5PwOEBfvyyTM3ce9Ls87p/8f92gTRJtSL2cdcI3quS88rZvzP23n0x630aRWEn8c5NZGrWv3/MYqE+E189p9/k7BtEz51h93GAAAgAElEQVSBIYjl3O1+xy/4BovVStPu/QHw8AviymemMfCxt4i69h5ivphMccG5NdOnOiLO+6lvzo///c5zCfA/Y4wNOCwiS4AewLGnulyBd0WkC2AD2p3Caywwxhw9NXwJcCOAMWahiASLiN/fLAeYb4wpFpFYwAr84lgei32q8FygAPhEROY6HlchIqOAUQAffvghhPY5hRSqyigoIdCz/OMY4OlKRkHls6MZ+SUEetmXWwQ8XS3kFtloEehJ18a+XBfZAE9XKwYoKTUs2X2ETMdz5BTZ2Hgwm+aBnuxMyz+jWM/UzqU/s2flrwAENWtL3pHyil9+RlrZTYSO8vQPrjSVJT8jtUobgGbR/Vj24XNEXnk7ngHBuHn74uLugYu7ByGtO5F5cA++DcLPUlYn789537PitzkANGsbwZHU8msBM9KS8Q8KqW5TXN3cueDCS9gUs5QOXXoQEBxK54v6ISK0aNcRiwg5WRn4+tfvqbjnkoMpmTRpWF4JCw/1JzGl8p/EpNRsbh3/JQDenm5c1z+yyvV/SanZxO0+zMVdWjB70eazH/gZOJiaTZMKVd7wEF8SUytfnz5icBTXjv8WgNVbD+Lh5kKIv5f9mtHYA6Rl2f9O/RKzm65tGrJ4wz7nJXAaDqZk0aRBhf3cwI/ElMoVPvt+tt8K4dj97OvlzqxX72TChwuIiTvgvMBrSHpeESEVptQGe7tVqhYeFdXYl5u6NOI/c7eVTUmtL47kFVeq6gZ5uZbNSjoVGfklJGQU0L6Bd9lNiuqaDb//xKbF8wAIa9me7PTyGVbZ6an4BFU9BlfHJzCYax98FoCigny2r1mGh3fdOJG2a1l5fySwWdtj+hppeBzT1/DwDyY/s0KbzMr9kb0xv5MUt4Y+971QNi3U6uKK1cVeKQ9s2gbv4DBykhMJbFb1Rk7q/HHunoKp2x4GDmOvlEYDp3IhSO4ZvnYhgDGmFCg25aeZSwEXY0wJ0BOYCVxN+QC1EmPMVGNMtDEmetSoUWcYEuw7kk8DHzeCvVyxCnRv4kdsUuWpdrFJOVzYzN7B6drYj+0p9jNobyzdxzO/7eKZ33axaFc6v25LZcnuI7hZBXcX+0fczSpENPCuE9eItukzhEFPvM2gJ96m8QW92LdmIcYY0vbG4+rphad/UKX2nv5BuHh4kbY3HmMM+9YspPEFvQDITjlY1u5g7Gp8GzYBoHGnXqTu3kKpzUZJUQHp+7bh27Cp85L8G32vupFxb05n3JvTibqwDzGLf8EYw55tm/Hw9qkyAC3MzyublmuzlRC3diUNw+0VoagL+7LDUQ1NTtxPSUkJPn51b6r1+Wzt1kTaNAmheaNAXF2s3Dwwip+XVZ4qHezvVdZZefzOfsyYuw6A8FA/PNzsJ6YCfD3oHdWC7fuqTrWva9ZuS6JNeCDNw/xxdbFwc/8Ifl65s1KbA8lZZZXN9s2C8XCzkpKRx4K1u4lsGYqnuwtWi9Anqilb99X9a6nWxifSpklw+X4eEMXPy+Irtam0n+/ox4yf7fvZ1cXKNy/fzle/bGD24vo5PW9HSi6N/Dxo4OOGi0W4pFUQMfsq3/ytZbAn913SnJd+21l2crQ+2Z2WR5ivG6HeblgtQq8WAaxPOLkBZJCXK65W+773crPSro4cj6vTdeBQRrwwhREvTKFN997ELV+AMYaDO7fi7uV93Gs9q5OXnYkptV/7u3rO13Tqe8XZCvuUtb5kCAMff5uBj79N404n1x9xPaY/0qiTvT9yaOs6ti+cRe97nsbFzaNsm8KcTEyp/Vr+nNRD5KQexDs4zHlJqjpJK6BnLhs4erecpcC9IjIDCAL6Ao8D4RXaAPgDCcaYUhEZgb0SeTqWArcDE0WkP5BqjMkSkeqWn/AJRcQH8DLGzBOR5YBTbtFXauDbjYcYfXFTLAgr92WQlF3EkIgQ9h8pIPZQDiv2ZTAiujETBrUmt8hW6Q64x+Pr7sKoXvYBmVWENQcy2ZJ8puP3mhXWMZpDW9fyywujsLrZb3t+1IJJDzDoCfvs7K43/Zu1X5Xf9vzotRWb50wnOzkREQteQaF0u9l+a3O/sKaERXRnwaT77Tf46XU5/o3q3jS+yO4XsWXdSp7/1zBcHV/DctQrD41k3JvTKSwsYOpL4ygpLsaYUtp26sYlg68FoNeAIXz57su89MAdWF1cGf7gU/XyYvyjZrw8kj7d2xIS4MPOXyYycco8ZvxQN29YcbJstlIefv0n5rzxT6xWYcbcdWzdk8zT9wxkfXwCPy+Lp6/jjqjGwLK/9vDQa/avMGjfogGv3H8lxtinGL35v6XE7T5cyxmdmK3U8PC7C5jz8i1YLcKMX2PZui+Vp0dcwvrth/h55U7GfbiQ9x8ZzP039MBg+L9X7dWWjJxC3v5+DcveHYExhl9jdvNLTN2/U6rNVsrDb8xhzusjHft5vWM/D2B9fKJ9P3dtWb6fN+4t2883XtaJS7q0IMjfi+FXdQNg1Ivfs2lHUm2mdEpKDXy0Yj/PXtkOq8Dv29M4kFHAP7o1ZmdqLmv2ZzKyZ1M8XK08MaA1ACk5Rby0YOcJnrnuKDUwY00iTwxohUVgya50EjMLuTGqIXvS81mfkEWrYE8e6tsCL3crXZv4cWNUGOPmbqOxnzu3dW+JwX6rvHlbkivdIbgua9W5J3s2xvDx4yNxdXNn8D2Pla2b8Z9/MeKFKQAs+fojtq5cRHFRIVMevI0L+g3m4hvu5MDWjSz9bhqC0KTDBQy4c0xtpfK3jvZHfn3R0R+5tbw/8vurD5Tdxbbrjf8u+xqWhhX6I3/N+pDSkmKWfvA0UP51K6m7NhM3/0ssVhdEhK43jcbN27dqAOeg+twfOdvkXL7OwllE5CsgCpjvWHQl9vvfvGCM+cZxc59fgWBgOvZprd872vwCjDbG+Jzoa1hEZCQQbYwZ43gcBEwDWgF5wChjzKa/WT4ByDHGTHZsn2OM8XH8PgHIAb4EfgQ8sB8nJhtjZpzgLTCjZ59fN3957/oInpq/vbbDcJoXr7TPEv/tODd6OlddHmG/6YRn17rZWTgb8je8C4Bn7/EnaHnuyF9h/75Vz0H/reVInCd/wVg8L36qtsNwqvzlL3Ldx2trOwyn+uGeaIZ/sbG2w3CqL4Z35qPVdXu6ek36vwvtJ5bHzzt/+iMvXdUOjt7yv47r8eJipw2y1jzVv168J0dpBbQGGGOO/YqVx49ZX4z9xj8VRVX4fayj3V6g2u8ANcZMxz6APfo4HbjuOO2qWz7hmMc+1ayrH7ddVEoppZRSqg7SAmj19BpQpZRSSimllFJOoRXQOkhErgCOnQ+2xxhzfW3Eo5RSSimllDp5eg1o9XQAWgcZY37Ffs2oUkoppZRSSp0zdACqlFJKKaWUUjVIC6DV02tAlVJKKaWUUko5hVZAlVJKKaWUUqoG6TWg1dMKqFJKKaWUUkopp9AKqFJKKaWUUkrVIC2AVk8roEoppZRSSimlnEIroEoppZRSSilVg/Qa0OppBVQppZRSSimllFNoBVQppZRSSimlapAWQKunFVCllFJKKaWUUk6hA1CllFJKKaWUUk6hU3CVUkoppZRSqgbpTYiqpxVQpZRSSimllFJOoRVQpZRSSimllKpBWgGtnlZAlVJKKaWUUko5hVZAlVJKKaWUUqoGaQG0emKMqe0YVP2nHyKllFJKKeUM9WJo1++N5U7rHy95+OJ68Z4cpRVQVSNGfRdX2yE41dSbI3l+wc7aDsNpnhnUBoA5sYdrORLnueaChgB49h5fy5E4T/6KlwDw7DqmliNxnvwN7wLgedmLtRyJ8+QvfArP6IdrOwynyl/7Bk/8vK22w3CqSUPa8+ic8yvn165pf171R6beHAnA+HnbazkS53npqna1HcJJ02tAq6fXgCqllFJKKaWUcgqtgCqllFJKKaVUDdICaPW0AqqUUkoppZRSyim0AqqUUkoppZRSNUivAa2eVkCVUkoppZRSSjmFVkCVUkoppZRSqgZpAbR6WgFVSimllFJKKeUUWgFVSimllFJKqRpk0RJotbQCqpRSSimllFLKKXQAqpRSSimllFLnMBEZLCLbRGSniIw7zvpHRGSLiGwSkT9EpHmFdTYR+cvx89OZxqJTcJVSSimllFKqBtWlGbgiYgXeAwYBCcAaEfnJGLOlQrMNQLQxJk9E/g1MAoY51uUbY7rUVDxaAVVKKaWUUkqpc1dPYKcxZrcxpgj4Gri2YgNjzCJjTJ7j4SqgydkKRgegSimllFJKKVWDRMRpPychHDhQ4XGCY1l17gbmV3jsISJrRWSViFx36u9GZToFVymllFJKKaXqKREZBYyqsGiqMWbqaT7XcCAa6FdhcXNjTKKItAIWikisMWbX6carA1CllFJKKaWUqkEWJ14D6hhs/t2AMxFoWuFxE8eySkRkIPAU0M8YU1jh+RMd/+4WkcVAV+C0B6A6BVcppZRSSimlzl1rgLYi0lJE3IBbgUp3sxWRrsCHwFBjTHKF5YEi4u74PQS4GKh486JTphVQpZRSSimllKpBJ3ltplMYY0pEZAzwK2AFphlj4kTkeWCtMeYn4FXAB/jOEft+Y8xQIAL4UERKsRcvXznm7rmnTAegSimllFJKKXUOM8bMA+Yds+yZCr8PrGa7FcAFNRmLDkCVUkoppZRSqgbVoQJonXNeDkBFJAC4zRjz/t+0aQH0NsZ8dYLnagHMNcZ0qmb9SOxf6jrmNGM9o+3rk8iGPgzrGoZFYNnuDH7ZllppvYtF+GfPcJoHepBbaGPqqgTS8ooBCPd3Z3j3xni6WDDAi7/vpqTUEN3Ej6siQrEIbErKYVbs4VrIrHrGGNbN/JDEuLW4uLlz0R0PE9S0TZV2aft3sPLzN7AVFxEeGU33m+4tm9qxbfFPbF/6MyIWGnfqQbfr7gLgSOIeYv73LsUFeSDClU+8idXVzan5nYgxhh+nvc3WDatwc3Nn2JgnadKqfZV2H73wGFlH0ii12WgZEcUN9zyMxWplzmfvs2XtClxcXAgOC2fY6HF4evvWQiYnb9CFbZn80NVYrRamz1nD5M//rLS+WVgAU8bfSEiAF0ey8rnruW9JTMmiWVgAX798OxYRXF2sfDBzJR//EFNLWdScKc/ezpV9O5GSnk30zS/Vdjg1ZlCPVkweczlWizB93l9M/t/KSuubNvDjo7HX4O/jgdUiPP3xIn5dvYtbB0Ty0LCLytpd0KoBF937CZt21a2/Xccz6KIOTH7senvOP6xm8ow/Kq1vFhbIlGduJSTQhyNZedz19BckJmfSt3sbJj1Sflf/9i0acOf4z5izZLOzUzguYwyxsz8ieetarG7udP3HQwQ0aV2lXcaBnaz/31uUFhfSICKaC67/P0SEotxs1n4+ibz0ZLyCGhB951jcvHzYsXAWCeuX2F+j1Eb24QSufP5z3Lx9Kc7PYcM375J9aB8gdL31AYJadHBazu1DvbiuU0MsAqv3Z7JwZ3ql9VaLcFuXMJoEeJBbZOPzdQc5kl8CwGVtgriwmT+lBn7YfJhtKfavFRzWOYyIht7kFNqYvGRv2XM19nPnpqiGuFiEUgPfxx7mQEaB03I9ntPtj/Rs5s8V7YPL2oX7e/DCgt0k5xRy70VNCfV2o9QYNiZlMzs2+diXrVXGGDbOnsqhreuwuroT/Y8HCTxOf+TIgZ2s/d+b2IqLCIvoTufrRyEibPppGklxMVisrviEhNH9Hw/i5ulDqa2EdV+/Q0biLozNRrMel9Fh4M21kKGqS87LASgQANwHVDsABVoAtwF/OwCtLSLiYowpqe04aooAt3VrxBt/7uVIXgnjB7Zi48FskrLLbsDFxS0DyCuy8Z/5O+nR1I8bohry0aoELAJ392zCtJgEEjIL8XazYis1eLtZualzQ15YsJucIhsje4TToYE38cm5tZfoMQ5uWUtWykGGPvsRaXu3EfP1ewx+/I0q7dZ88z69bnuA4BbtWfTBsxzcso7wyGgObd9IQuwqrhr3LlZXVwqyMwAotdlYMWMyve98lMAmrSjMyUKsVmend0LxG1aRkpTAuHe+Yv+OLXw/9XUefOXDKu3ueOQ5PLy8Mcbw2eSn2bhyMV0vGUC7qGiuun0UVqsLcz//gD9mfcHVd/y7FjI5ORaL8OZjQxny4DQSk7NY9sl9zF0aT/ze8o7Iy2Ou5Mv56/ly/gb6dW/F8/++gruf/46k1Gz6j5pCUbENb0831n3xID8v20pSanYtZnTmPp+ziinfLOHjiXfWdig1xmIR3nxwMEMe/4rElCyWfXAXc1fsIH5feSd27PBL+H7JVj76aT0dmofww8vD6HDbe3z9Rxxf/xEHQGTLUL6deHO9GHxaLMKbY29kyOgpJB7OYNlnDzP3z83E7ymP/eWHhvLlz2v58uc19Ituw/NjrubuZ77kz3U76XX7ZAAC/bzYPHs8v6/aVlupVJG8dR25qQcZMP5DjuzbxsaZH9DvoclV2m2c+QFdbhlNYPP2rProOZLj19Mwojs7Fs4kpG1n2g24ie1/zGTHHzOJvGYkbS+7gbaX3QDAobgYdi35ETfHCbTY2R/RsEM3eo4cR2lJMbbiwiqvd7YIcMMFDflwVQKZ+cU81Kc5cYdyOJxTVNbmwqb+5BWX8vLCPXRp7MvVEaF8vj6Jhj5udG3sy6TFe/F3d+Hei5rwysI9GGDNgUyW7T3CP7o0qvR6V3cM5bftacQn59KhgTdXR4TywcoD1JYz6Y/E7M8kZn8mAOF+7tx3cTMSMgtwswq/bUtlW0oeVhEe6decTmE+bD6UU0tZVnVo6zpyUg5yxfgPSd+3jQ0zP+Cyh1+r0m7DzPfpdssYgpq3Z/nUCRyOX0dYRDQN23Wh05ARWKxWYudMZ9vvM7ngmpEk/LWMUlsxg554l5KiAha8Mpqm3friHdSwFrJ0LkFLoNU5X++C+wrQWkT+EpFXHT+bRSRWRIZVaNPH0eZhEWkhIktFZL3jp/cpvF5TEVksIjtE5NmjC0VkuIjEOF7jQxGxOpb/U0S2i0gM9jtNHW0/XUSmiMhqYJKIdHF8IewmEZktIoGOdtUtXywibzi+SHariPQQkVmOuF5wtPEWkZ9FZKPjPRmGE7QM8iQ5p4jU3GJsxrDmQCadwytXsro09mPlXvsAa11CFhENvAHo2NCHhMwCEjLtB4fcIhsGCPF25XB2ETlFNgDiD+fQLdzPGemctIRNq2jV8zJEhJCWHSjKzyU/s/KZ5vzMdIoL8ghp2QERoVXPy0jYZK+m7Fg6j46Dbsbq6gqAh28AAEnx6wkIb0Fgk1YAuPv4YbHUvQFo3JplRPe/AhGhebtICvJyyDqSWqWdh5d9X5fabJSUlJRNa2nfpSdWq/08WvN2kWSmpTgt9tPRo2MTdiWksffgEYpLbHz3+yau7hNRqU2HFg1Ysm43AEvW7S5bX1xio6jY/ll2d7ViOUfm9ixfv4v0zLzaDqNG9ejQmF2J6exNyqC4pJTvFm7h6t7tKrUxxuDn5Q6Av7c7SWlVO6K3XBbJdwvP6D4PTtMjshm7DqSyNzHN/tn+bQNX96s8MahDyzCWrN0BwJK1O7m6b9WJQ9cP6MxvK+LJLyx2StwnI2nzappGX4qIENSiA8X5uRRkVf47XZCVTklhHkEt7H+nm0ZfSlLsKsf2MTTrcRkAzXpcRtLm1VVeI2H9n4R37QtAcX4uabvjaHbhIAAsLq64evqczRQraRboQVpuMel5xdgMbDiYTWRY5dfvFObD2gT7QGtTUjZtQ70AiAzzYcPBbGylhvT8YtJyi2kW6AHA7vR88hzH40oMeLjYu6OeLhayCmr33PqZ9Ecq6tHMnzUH7O9Rkc2UVYJtxrA/o4AAT9eznMmpSdq8iuY97P2RYMfnvLr+SLDjc968x2UcdHzOG3bohsVxojuoeXvyM+zHchGhpLCAUpsNW3ERFhcXXN29nJucqnPO1wHoOGCXMaYLsAroAnQGBgKvikgjR5ulxpguxpg3gGRgkDGmGzAMePsUXq8ncCMQBdwsItEiEuF4nosdcdiA2x2v/Rz2geclQMdjnqsJ9qnBjwCfAWONMVFALHB0cFvdcoAiY0w0MAX4ERgNdAJGikgwMBg4aIzp7JhW/Msp5HnaAjxdSc8r73Bk5BUT6OlyTBsX0vPtbUoN5BeX4uNmpaGvfVrpg32a85+Brcqmv6TkFBHm606wlysWgS7hfgR61a0/+HkZaXgFhpY99goIIS8jrWqbgODjtslOTiRlVxy/vPowC94cS9q+7WXLQVj47tPMe+UB4hbMPPvJnIbMtFQCghuUPfYPCiUzreoAFGDqxEeZcPdQPDy9iOrVv8r6mIXz6NCt19kKtUY0DvUn4XBm2ePElEzCQyufFIndeYhr+0cCcG2/SPy8PQjy8wSgSQN/Yj67nx0/jOW1L/6s99XPc1XjEF8Sksv3TWJqFuGhlTuwL85Yyq0DO7Hzm/uZ/fIwHnn71yrPc9OlHfl2YdxZj7cmNG4QQMLhjLLHicmZhDfwr9Qmdkci114aBcC1l16An48HQf6VO6I3X96Vb39df/YDPgUFWWl4BpT/nfYMCCY/s/Lf6fzMNDz8Qyq0CaEgy96mMDsDD78gANx9AynMzqi0bUlRIcnx62kcZT+vnZd+GDdvfzZ8/RaLX3uQDd+8Q0mh86ak+nu4kJFffjzOLCjB36Py8djPw4UMx5Tbo8djbzerY9vyAWRGQXGVbY/1Q1wyV3cM5emBrbimYyjz4mv3ROKZ9Ecq6tHUv6waWpGnq4WoRr7EJ9ed6ifYP8OeARU/w8EUHPM5L8hMw7Pi59w/pMr/BYC9qxcQFtEdgPDOF+Pi7sHPz97J/Ofvom3/68sq/ec6izjvp745XwegFV0C/M8YYzPGHAaWAD2O084V+EhEYoHvqDow/DsLjDFpxph8YJbjNQcA3YE1IvKX43Er4EJgsTEmxRhTBHxzzHN9Z4yxiYg/EGCMWeJYPgPoW93yCtsf/c6fWCDOGJPk+KLZ3di/oDYWGCQi/xWRPsaYqn89AREZ5aikrp069e++9/bss4jQJsSLT1YnMGnRHrqE+9GhgTd5xaV8uf4go3o14fFLW5KaW4QxplZjrWmlpaUU5mZzxWOv0/W6u1g67RWMMZTabKTs3kLvkY9x+SOTSNi4kkPb/qrtcM/IqKdf45mPZlNSXMTOzZU7qL9//xlWq5VufQbVUnQ158l359GnS0tWTh9Dn64tSUzOxFZq/9wmJGfS88536HTLawy/qisNAp1XFVE165bLOvLFr5toM+wdrn/yGz55cmilG1b06NCYvIJituyt21X9U/Hkmz/Rp1trVn75KH26tSHxcAY2W2nZ+rBgPyLbNGLByvhajPLsEpEqNyY5HBdDUMuIsk55aamNzMRdtOh9Jf0ffQsXNw92LKybJxFrQu/mAfwYl8zE33fzY1wKt3QOq+2QzljLIE+KbKUczKo8ddoi8H8XNmHhzjRSc+tOlb8mxS/4BovVStPu/QFI37cdEQtDnpvB4P98zI7FP5CTeqh2g1S17ny9BvR0PAwcxl4ptQCncjry2FGPwX6ZwQxjzJMVV4jIdfy9M72A8ehfw9IKvx997GKM2S4i3YCrgBdE5A9jzPPHPokxZipwdORp1n53ZmfpM/KLCapQnQzwci27oUF5mxKCPF3JyC/BIvaziDlFNjLyi9meklc21XZzUg7NAjyIT85lU1IOm5LsZxn7tAykLow/ty2Zy64V9sJyUPN25B0p72DmZaRWqnYCeAUEV6qKVmzjFRBM0y697VN4W7RHRCjMycIrIIQGrTvh4WOvQDSOjCb9wC7C2nc52+md0PL5s1j9x1wAmrbuQEZa+fWPmekp+AeHVLcprm7uRPa4hM1rltGus/080ZpF89m6biX3PvtGnfrOreM5mJJJk4blVaHwUH8SU7IqtUlKzebW8V8C4O3pxnX9I8nMKajSJm73YS7u0oLZi+rGjVpUuYOp2TRpUH6GPzzEj8SUytXqEVd14dqx/wNg9ZZEPNxcCPH3IiXDPk3v5svqT/UT4GByBk0aBpQ9Dm/gT2Jy5fOXSalZ3PrEp8D/s3ff4VFV+R/H32fSE1JIoyRU6UFqKBbApdhQsaGu3cXFXcsqdnFRf3ZdLKvoYkEXy9pFBVxdBUVAWugioQdCEkIKKaSQZHJ+f8yQZIAISJhJ9PN6njyZuffcme+ZO8m5537Pudf93R7ey+O7fdGoPnzx3Vqq6nRKfWXrgtlsX/w/AJq36UxZQe3/6bKCPEIiPf9Ph0TGUF6YW6dMLsERrjJB4VGUF+UTHBFNeVE+gc2iPLbduXI+iX2H1nmtWIIjY4lu57ogW+veJ7NpzicNW8FfUFhe5TE8NDLYn8IDhsUWlVcRFeJavr89LqlwuretPbSMCg44aNsDJbeJ4LN1rnZgdVYxl/T27dzAYzke2a++7OdV/VuTvbeCOZvyD1rnC1sWzGbbItfoi+ZtO9cMmwXX9zz4gO95cGQMZXW/54W5Hn8LaUu/JWvdMobc+GhNe5y+Yp57eK4/weFRxHToTkH6JprFNv0TDYfT2I9JfOn3mgEtBvYfHcwHLjXG+Blj4nBlC5ceUAYgEsiy1lYDV+G6ieuRGmWMiTbGhADnAwuBOcDFxph4APf6dsASYJgxJsYYEwAc8lJh7szkHmPMEPeiq4B59S0/0kCNMa2BUmvtO7huSNvvKOr5q6XtKSO+WSAxoQH4GcOANpGszvQ8YFudWcxJ7V0Nd//EiJqLCa3btZfEyCAC/QwOA13iQslyn3UMD3LtptAAB6d1as78bXu8UZ1f1HXYOZx93xTOvm8KbXoNZuvSuVhryd2WSmBIGCGR0R7lQyKjCQgOJXdbKtZati6dS2Iv11DTxF4nkb1xDQBF2RlUV1UR1CyCVj36UZCZRlWFa97F7mBqvHQAACAASURBVM1riWzZxut1PZRTzrqQ2ye/we2T3yBp4BBSvv8aay3bN64jODSMiOaeHdB9ZaU180KdzirWr1hEfEJbAFJXLuG7z//Ddfc8QWBQsNfrcrRS1mfQKTGWdq2aE+Dvx9iRvZi9YL1HmZjI0JpG666rhzF91nIAEuIiCA50HdhFhQdzcq/2bNz+28mO/ZakpGbSKSGadi0jCfB3MHZ4D2Yv2uhRJj27iNP6dQCga9sYggP9azqfxsBFp/Xgo++axvxPgJSf0+nUJo52raNd3+3T+zL7B88OdExkWO13+7qRTP/Ccy7kJWc0nuG3HU8dzR/u/Cd/uPOftDxxEOkp32GtJT8tlYDg0JohtfsFR0TjHxRKfprr/3R6yne06jkIgFZJA9mxbC4AO5bNpVXPgTXbVZaVkLflJ1q6y7peqzkhUbEU794JQM7G1YS38N7/7/SCcmLDAogOCcDPQN/W4aw74GI567L3kpzoOpnWq1U4m3Jd3911u/bSt3U4fg5DdEgAsWEB7Njzy+fri8qrOCHGNc2gc2woOT7ODB7L8Qi4sgv920TUzP/cb0xSPCEBfny4qvFk/044dTQj73qBkXe9QOueg9m+zHU8kpeWSkBIaL3HI3nu7/n2ZXNp1dN1PLJr/XI2zv2Uk6+fhH9gbXsc2jyOnM2u45SqfeXkb99AeItE71VSGqXfZQbUWptnjFlojPkJ+C+wBliNKzN5t7V2lzEmD3AaY1YD/8Z1xdxPjDFX45oXeTSZyKXAJ7jmb75jrU0BMMb8HfifMcYBVAI3WWsXG2MeAhYBBcAvjZu8BphqjAnFNYT2usMsPxIn4poHW+2OySuXFK228N7KLG4b2g6HMSzctoeson2clxTH9vxyVmcVs2DbHsYNTODRszpRUuHktcWuxrm0sppvNuYxcURHLK4M6Fp3Y3lpn1YkRrku9DH75xx217mKX2PQOmkAGetS+OL/rscvIIiTrpxQs+7LJ27m7PumADDgkhtZ9M5zOCv30bpHMq17JANwwkmjWPzu88x67EYcfv6cdNXtGGMICg2n+/Dz+erpCWAMrZOSSahz0NNYdO83mNQVi3jy5j8SEBTEpTfWDgh49s4/cfvkN6jYV84bT07EWVlBtbV06tmXk04fA8CMac9TVVnBq4/cDkDbzj24+IY7fVKXI+F0VjPh2S+Y+dx1+PkZps9azvptu5l0/UhWpO5k9oJUhvbryMN/OR1rYcGqbdz2jGvUfNf28Tx5y1lY6+qgPP/efNZtbfxXRz2c6U9cy5D+nYmNasbmrx7hkalfMv2zRYffsBFzVlsmvPg1M5/6I35+Dqb/dzXr03KZdO1QVmzMYvaPm7h36re8fMfZ3HLxQKyFPz89s2b7U3u1ZefuItKyCn7hXRoXp7OaCf/4hJkv3uCq8xdLWL91F5NuOJMV69OZ/cM6hiZ34uGbRmOtZcHKrdz2VO2w0ratmpPYIor5K7b4sBaH1qJ7Mtnrl/Pt4zfgFxBE3z/+rWbdd5Nv5Q93/hOAXhf/hZXv/RNnZQUtuvUj3j0HrvOIi1j21tPsWPINIc3jGXD13TXbZ61dTHzXvvgfcAKt14XjWf7Os1hnJaExLel72a1eqKlLtYVPf9rN+MGJGANL0wvJ3lvBGV1j2FlQzrrsEpbsKOTyvq24b3gHSiucvL0iC4DsvRWsyirm7tPa17zO/oFHV/ZrxQkxoYQF+jFpZEe+3pDH0vRCPlqTzZikePwMVFZbPl7j2w7asRyPAHSOC2VPaaXHENuoEH9G94gjq2gffx/lujjgd5vzWbCt8fyNt+yRzK71KXz92Hj8AoNIrvOd+/Yff2PkXa5Ln/S96K81t2Fp0b1/zVzPVZ++QnVVJfP/NQlwXYio3yU3ccKpo0l575/878kbAWg3cCSRrTt4uXbS2Jjf2pw48Qk7/hiH4DY1r45N4uFvNvs6DK95YJTrXmAzG9l9VI+nc090DQMLOXmijyPxnrIfXffhDOn7m7/tcI2yla6TPCHDH/NxJN5TNvd+QpInHL7gb0hZynPcPbvx3NrFG54e3ZU7Zv6+6vzMuV35PR2PvDrWdcG6iV9uPEzJ347Hz+4CNI37m5z/eorXOlmfXZ/cJD6T/X6vQ3BFRERERETEy36XQ3CPB2PMGcBTByzeZq29wBfxiIiIiIiIb/xW7td9PKgD2kCstV8DB9/ITURERERERAB1QEVERERERBqUEqD10xxQERERERER8QplQEVERERERBqQUQq0XsqAioiIiIiIiFcoAyoiIiIiItKAlACtnzKgIiIiIiIi4hXKgIqIiIiIiDQg3Qe0fsqAioiIiIiIiFcoAyoiIiIiItKAlP+snzKgIiIiIiIi4hXKgIqIiIiIiDQg3Qe0fsqAioiIiIiIiFeoAyoiIiIiIiJeoSG4IiIiIiIiDcihEbj1UgZUREREREREvEIZUBERERERkQakixDVz1hrfR2DNH36EomIiIiINzSJnt2V76z22vHxO1f2bhKfyX7KgIqIiIiIiDQgJUDrpw6oNIjr3l/r6xC86s3LTuQf32/1dRhec9dpHQGYsWaXjyPxngt6tQQgZNRTPo7Ee8q+uQeAkOGP+TgS7ymbez8AIX1v9nEk3lO2cgohQx7wdRheVTb/Ye6YucHXYXjVM+d25ZFvN/s6DK+aNLITt3+R6uswvObZ87oBMP6jdT6OxHteHZvk6xCkAagDKiIiIiIi0oA0B7R+ugquiIiIiIiIeIUyoCIiIiIiIg1I9wGtnzKgIiIiIiIi4hXKgIqIiIiIiDQgzQGtnzKgIiIiIiIi4hXKgIqIiIiIiDQg5T/rpwyoiIiIiIiIeIUyoCIiIiIiIg3IoTmg9VIGVERERERERLxCHVARERERERHxCg3BFRERERERaUAagVs/ZUBFRERERETEK5QBFRERERERaUBGKdB6KQMqIiIiIiIiXqEMqIiIiIiISANSArR+yoCKiIiIiIiIVygDKiIiIiIi0oAcSoHWSx3QJsoY0x6YZa3teZgyJ1tr/+N+ngxcba39mxdCbFA9Wzbj8n6tcRj4Yesevlyf47G+S1wol/dtTWJUMFN/3EHKziIfRfrrWWtZ9MFUdv60DL/AIIZdewexbTsdVG7ZZ/9m8+I57Cvdy7UvzKhZnrVxLYs/fIX8jG0Mv/5eOvQf4s3wj5m1lplvvsCGFUsICApi7E33kdCxy0Hl3nj0LooK8qh2OunQvRdjxt2Gw8/PBxH/OqOSOzD5xhH4ORz8+7+rmfzBEo/1beLCee3u0UQ2C8bPYZg0bR5fL90KQM8OcUy57QzCQ4OotpZTb5rOvkqnL6pxVEYN6Mjkm0/Hz2H495ermPzeIo/1beIjeO2ec2vr/Pp3fL1kC5eNSOK2S0+qKXdix3hOumEaa7Zke7sKDWrqg1dw1tCe5OQXkzz2cV+H02BGDezE5FvPdu3nWSuY/O58j/VtW0Qy9b4LiI0KZU9RGX965BMyclz/qz+ffBUDeyTy49odXHTPu74Iv15d40I5v2cLHAaW7Chk7uZ8j/V+DsPlfVqSGBVMSYWTt5dnsqesCoDhnaIZ1DaSaguf/ZTNhpzSmu0MMGFoOwrLq5i2NAOAzrGhnNMjDgNUOKt5b+Uu8korvVXVQ7LWkvLRK2SsS8E/MIiTrppAzCHaprwdm1j09nNUVVSQkJRM8tgbMMYwf9qTFGXvBKCirITAkDBGT5xC1vqVrPz8TaqdVTj8/Ol3wThadu3t7eodVre4MM4/MR6HMSzeXnDo/d+3FW3c+/+tlEz2lFUSGuDg2gEJtIkKYVl6IZ+ubTr/t5JaNOPSvi1xGFiwtYCvNuR6rPd3GK4bmEC75sGU7HPy6uKd5JVWMrBtJGd0jakplxAZzKPfbGVnYbm3qyCNnDqgv23tgcuB/wBYa1OAFF8G9GsYA1clt2byd9vIL6vigVEnsCqjiMyifTVl8koreX3JTs7sFuvDSI/Nzp+WUbQ7k7GPTCNnWyoL353CmPueP6hcu16DSPrDeXw4aZzH8mbR8Qy99g7WfvOJt0JuUBtWLiE3ayd3vvgu6Zt+5rPXnuWmJ6YeVO7y2x8iODQMay3vPPMAaxd/T+9TRvgg4qPncBiev2UUo+/5gIzcYhZMuYZZizaTuiOvpsw9V5zMJ/NSeW3WKrq1jeGzx8bS7aqp+DkMb9x7DuOemsXarTlEhwdT6az2YW2OjMNheP7WMxl913/IyCliwb/+xKwfN5G6vfaA5p4rT+WTeet57YsVdGsXy2dPXEq3y1/i/TnreH/OOgCSOsTx4SNjm3znE+DtmYuZ+sE8Xn/kal+H0mAcDsPzt5/D6AnTXfv5tRuYtTCV1LTak4VP3HQG7361ine/WsWwfh14+IaRjHv0UwCee28hoUEBjBuT7KsqHJIBLjyxBa8s3klhWSW3DWnHul17yd5bUVNmUJtISiureWLuNvq0Duec7nG8vSKLFs0C6ds6nKe/TyMyyJ8bTkrkybnbsO7thnRsTnZxBcEBtbOhLjqxBW8sy2D33gpObhfFqC4xvL9ql3crfYDMdSkU52Qy5qHXyE3bwNL3X+Ksu587qNzS919m0OV/I7Z9V757+UEyf15OQlIyQ8bdW1Nm+SevExASCkBQswhO+8uDhEbFUJCZxpwpD3DR4295rV5HwgAX9mrB1EXpFJZVMmFo+4P3f9tIyiqdPD5nq2v/94jj7eWZVFVb/puaS8vwIFpFBPmuEkfJAJf3a8VzP6Sxp7SKiSM7sjqzmKzi2mOuUzpEUVrh5O//3cyANhFc2KsFry3eydIdhSzdUQhAQkQQN57S9nfd+VQCtH6aA3qcGGPaG2NSjTHvGmPWG2M+NsaEGmNGGGNWGmPWGmPeMMYEucunGWOedi9faozp5F7+b2PMxXVed2897zXfGLPC/XOye9WTwBBjzCpjzARjzGnGmFnubaKNMZ8ZY9YYYxYbY3q5lz/kjut7Y8xWY4zPs6Udo0PZXVxBTkklzmrL0h2F9E2I8CiTV1LJzsLymoa9Kdq+ejGdB4/AGEN8x+5UlO2ltDD/oHLxHbsTGhl90PLw2BbEJHZospf9/nnZAvoNOwNjDG27JFFWspeiPXkHlQsODQOg2unEWVWJq7lsGgZ0bcWWzALSdhVSWVXNR9+v55yTO3uUsRYiwlwHK5FhQWTluf7kRyZ34KetOazd6jqgzy8up7q68X/jB3RrzZaMfNKyClx1nvsz55zsmdm21hIRenCd67pkeBIfzf3ZKzEfbwtXbCG/sPTwBZuQAd0T3ft5D5VVTj6as5ZzTu3mUaZb+3jmrXBl8+et2Oax/vvlWyku3Udj07Z5MHklleSXVuK0sDKzmKSWzTzK9GzZjJSdroPuNVnFdI5zdbCSWjZjZWYxzmpLflkleSWVtG0eDEBksD894sNY4j5Y388Cwf6uQ7PgAAeF5VXHuYaHl75mMR0GDccYQ1yHblSUlRzUNpUW5lNZXkpch24YY+gwaDjpqz1HOlhr2b5iPu2ThwEQ3eYEQqNc2bLIVu1wVu7DWenbbO+B2jYPJrekonb/ZxTR8xD7f1l6nf0f69r/FU7LtvwyqprA/+m6OkSHsHtvBbkllTitZVl6Ib0Twj3K9GkdwaK0AgCW7yyie3zYQa8zoG1kzeciciB1QI+vrsDL1truQBFwO/Bv4FJr7Ym4MtB/rVO+0L18CnBw6qt+u4FR1tp+wKXAC+7l9wLzrbV9rLUHnq78P2CltbYXMBGoe9qxG3AGMBB40BgTcBSxNLjmIf7k1xmClF9WSfMQn4Z0XJQU5BEWXZvBDYuKpWRP7i9s8dtSlJ9LVEx8zfPImDiK8nMOWXbao3fyyPVjCAoO5cTBw7wV4jFrHRvOzpza4eEZucUkxHoezDz29gIuG5HE5v/cyIzHxnL7S98A0DkhGovliycu4ceXr+H2SwZ6NfZfq3VsODt3F9c8z8gtIiHO82DmsenzuWxkTzZ/cAsznriU21/4+qDXufgPPfhw7rrjHq/8Oq3jwtm5u/ZgMyOniIRYzxOFazfvYszQHgCMGdqdiLBgoiNCvBrn0YoM9qegrLb9KSyvIjLYc/BYRLA/Be4ht9UWyiqrCQv0c29b24EsKK+s2XZMUjyz1udgDzht+uHqXVw/KJFJIzvSPzHioOGevlBWmEdYVFzN87CoWMoKPE8OlhXk1XQma8oUepbZvXkdwRFRRMQnHPQeO1YuJLrNCfgFNK62PTI44IB9WEXkAccfdctUWyivcu3/pioqJMDjmKugtJLmIf4HlPEn3/13sf873+yAOg9oE1mTDf29MsZ47aepUQf0+Eq31i50P34HGAFss9ZudC+bDgytU/69Or9P4sgFAK8ZY9YCHwE9jmCbU4G3Aay1c4EYY8z+o4XZ1tp91tpcXJ3bFkcRi8hxN+7vk7n/1U+pqqpky08rfB1Og7rkDz14539r6XT5y1xw/0dMu+ccjAF/PwcnJyVy3RMzGTHhXc47pQun9W3n63AbxCXDe/DO12vodOmLXHDfB0y77zyPoUsDurWmtLySn9MOfUJCmob7XvqaIX3as2jaXxnSpz0ZuwtxNrHsUEPoHh/G3ooqdhYenPEd2rE5ry/ZySPfbmVZeiFjesQd4hWaprSUebTvf/AJw4LM7az8/E0G/fEWH0Qlx0OH6BAqnNUeU6VE6tIc0OPrwJa1AIg5VMFDlN//uAr3iQJjjAMIPMR2E4BsoLe77LEOuK/7H8PJIb4nxpjxwHiAV155BSKOpr98dPaUVREdWnvGMTokgD1ljWuYzq/183czSV3wFQBx7btQkl+b8SwpyCWsedOd03okFn01g6XfzgIgsVNXCvJ216wrzMshIrr+g6+AwCB6DDiFn5ctpHPvAcc91oaQmVtMYlxtVighNpyMXM/hptec2YsxEz8EYMn6TIID/YmNDHXNGV2bTl5RGQBfLd1K304t+H7ldu9V4FfIzC0mMb4245kQG0FGTrFHmWvO7sOYe1zn35b8nFFT55wC1zDVscOV/WzsMnOKSYyPrHmeEBdBRq7nxeCy8oq57O/vAxAWEsj5w3pQuLdxzw8rLK8iqk7GKzLY/6BhsUXlVUSFuJY7DIQEOCipcLq3rW0+o4IDKCyvIqlFM5JaNKN7fDP8HYbgAAeX923F5+t20zoiiB0Frs9kVWYxfx6U6J2KHmDDvFlsXuhqm2LadaGkoPbkT0lBLiFRnocyIVExlNbJipYU5BISWVum2ukkffWPnHXPPz22K9mTy7zXHuXkq+8gPK7V8ajKMSksrzxgH/pTeMDxx/4y+/d/sL9r/zdVBWWVHsdcUaEBNRfVqi1TRXSIK/O7/zu/t06dlf10UZavfvpsjq+2xpj9PbPLcV0AqP3++Z3AVcC8OuUvrfN7/+SJNKC/+/F5uLKdB4oEsqy11e7X3D8OohgIP0R5gPnAFQDGmNOAXGvtEV861lr7qrU22VqbPH78+CPd7FfZll9KfHgQsWEB+DkMA9tGsjKj6V3l9lB6/OFcLpz0EhdOeol2fU5i0+I5WGvZvXU9gSFhh5zr+Vty0pkXcOvkadw6eRpJA4awYt7XWGvZsXEdwaFhRDT3PMjZV1ZaMy/U6axiw/LFxCW09UXov0rKhiw6JTSnXctIAvwdjD2tO7MXbfYok767qCaz2bVtDMGBfuQUlPJNylaSOsQREuSPn8MwpFcb1m9v/EO0U1Iz6ZQQXVvn4T2YvWijR5n07CJO69cB2F9n/5rOpzFw0Wk9+Oi738b8z9+qlNQMOiVG065VFAH+fowdcSKzF6R6lImJDK0ZKnbXlUOY/uVKX4R6VNILyokNCyA6JAA/A31bh7Nul+dJo3XZe0lOdHW+e7UKZ1Ou67u7btde+rYOx89hiA4JIDYsgB17yvkyNZdHvt3KY3O28s6KTDbnlvKflVmUVToJCXAQG+Zq5rvEhrG7zsVuvKnrsHMYPXEKoydOIbH3YLYtmYu1lpxtqYdsm0IjowkIDiVnWyrWWrYtmUubXoNr1u9KXUlEi0SPk6oVpXv57l8P0XfMtcSfcCQDt7wvvaCcuLBAokPd+z8hgp+yD9j/u/YyoE3t/t+c27Tnd6ftKSO+WSAxoQH4GcOANpGszvQ8abg6s5iT2kcB0D8xgtTdJTXrDNC/TYTmf8ovUgb0+NoA3GSMeQP4GfgbsBj4yBjjDywD6l7ms7kxZg2uDOQf3cteAz43xqwGvgJKONjLwCfGmKsPKLMGcLq3/TdQt7V/CHjD/X6lwDXHVtXjp9rCu8szuWNYBxwOmL91D5lF+zi/Zzxp+WWsyiymQ3QIN5/ajrBAP/q0Duf8E1vw9/9u8nXoR6VNzwGkr13Gh3//E/6BwQy9ZkLNuk8fuYkLJ70EwJJPprFl6XdUVezjP/dcSddTz6T/uVeSk7aBb/71CBWle9mxZgnLZ77DxQ+94qvqHLWu/QaTunIx/7jlcgICgxh7U+2VE/955zhunTyNin3lvPXUfVRVVmKtpWNSHwadfp4Poz46zmrLhCnfMPOJS/BzGKZ/vZb123OZdM2prNi4i9mLNnPvK3N5+fYzueXCAVgsf/7HlwAU7N3HC58sY8GUa7DW8vXSrXzlvj1LY+astkx48WtmPvVH/PwcTP/vatan5TLp2qGs2JjF7B83ce/Ub3n5jrO55eKBWAt/fnpmzfan9mrLzt1FpGUV+LAWDWv6E9cypH9nYqOasfmrR3hk6pdM/2zR4TdsxJzOaiY8N5uZz1yNn8PB9NkrWJ+Ww6Rxw1mRmsHshRsY2rc9D48fhcWyYPV2bnt2Vs32304ZR5d2sTQLCWTzJ3fwl6c+59ulm3/hHb2j2sKnP+1m/OBEjIGl6YVk763gjK4x7CwoZ112CUt2FHJ531bcN7wDpRVO3l6RBUD23gpWZRVz92nta17nlwYcV1v4cHU21yYnYK2ltLKaD1b79gq4AAlJA8hcl8LnD13vug3LlbVt0+zHb2b0xCkADLz0Rn58+zmclfto3SOZ1km1VzROW/5DzcWH9tswbxbFOZms/fI91n7pGgEx4pZHCQ6P8kKtjky1hU/XZjN+cBscBpbuKCS7uIIzu8aSXlDOuuy9rv3frxUTR3SktMLJW8sza7b/+8gTCPZ34Ocw9GzZjFcWpXtcQbcxqrbw3sosbhvaDocxLNy2h6yifZyXFMf2/HJWZxWzYNsexg1M4NGzOlFS4eS1xTtrtu8cF8qe0kpyS34bI9WORVOcm+ktxtrf3/wLbziS+3QeUD4NSHbPu2xq7HXvr/V1DF715mUn8o/vG//Bf0O567SOAMxY4/uDIW+5oFdLAEJGPeXjSLyn7Jt7AAgZ/piPI/Gesrn3AxDS92YfR+I9ZSunEDLkAV+H4VVl8x/mjpkbfB2GVz1zblce+db3nXhvmjSyE7d/kXr4gr8Rz57nupL0+I9+P1MUXh2bBE3k8vd/+yzVa52sF87v1iQ+k/2UARUREREREWlAjibVJfQudUCPE2ttGnBE2U93+fbHLRgREREREZFGQBchEhEREREREa9QB1RERERERKQBOYz3fo6EMeZMY8wGY8xmY8y9h1gfZIz5wL1+ift6NvvX3edevsEYc8YxfzbH+gIiIiIiIiLSOBlj/ICXgLOAHsAfjTEH3v9oHLDHWtsJeA54yr1tD+AyIAk4E3jZ/Xq/mjqgIiIiIiIiDcgY47WfIzAQ2Gyt3WqtrQDeB8YcUGYMMN39+GNghHG9+BjgfWvtPmvtNmCz+/V+NXVARUREREREmihjzHhjTEqdn/EHFEkA0us83+ledsgy1toqoBCIOcJtj4qugisiIiIiItKAvHkbFmvtq8Cr3nvHY6MMqIiIiIiIyG9XBtCmzvNE97JDljHG+AORQN4RbntU1AEVERERERFpQMZ47+cILAM6G2M6GGMCcV1U6IsDynwBXON+fDEw11pr3csvc18ltwPQGVh6LJ+NhuCKiIiIiIj8Rllrq4wxNwNfA37AG9badcaYh4EUa+0XwDTgbWPMZiAfVycVd7kPgZ+BKuAma63zWOJRB1RERERERKQBOY4wNekt1tovgS8PWPZAncflwNh6tn0MeKyhYtEQXBEREREREfEKZUBFREREREQakLJ89dNnIyIiIiIiIl6hDKiIiIiIiEgDamRTQBsVZUBFRERERETEK5QBFRERERERaUCN7Sq4jYkyoCIiIiIiIuIV6oCKiIiIiIiIVxhrra9jkKZPXyIRERER8YYmMbb1ga83ee34+OEzOjeJz2Q/zQGVBvHXT372dQhe9a+LevDIt5t9HYbXTBrZCYDP1uzycSTec36vlgCEnHK/jyPxnrKFjwEQkjzBx5F4T1nKcwCEDHnAx5F4T9n8hwnpe7Ovw/CqspVTuP2LVF+H4VXPnteNx+b8ftopgPtHdOKWGet9HYbXvHhBdwAmfrnRx5F4z+Nnd/F1CNIA1AEVERERERFpQI4mlZP0Ls0BFREREREREa9QBlRERERERKQB6TYs9VMGVERERERERLxCGVAREREREZEGpARo/ZQBFREREREREa9QBlRERERERKQB6Sq49VMGVERERERERLxCGVAREREREZEGZFAKtD7KgIqIiIiIiIhXKAMqIiIiIiLSgDQHtH7KgIqIiIiIiIhXKAMqIiIiIiLSgJQBrZ8yoCIiIiIiIuIV6oCKiIiIiIiIV2gIroiIiIiISAMyRmNw66MMqIiIiIiIiHiFMqAiIiIiIiINSBchqp86oA3EGNMemGWt7enl991rrW12FOUfAvZaaycfsLw9Poi/rh4twrikd0uMMSzctof/bczzWO/vMFyT3Jq2zUMoqXDy+pKd5JdWEh0awIOnn0B2cQUA2/JLeW/lLgAmDG1HZLA/FU4LwIsLtlO8z+ndiv0Cay0pH71CxroU/AODOOmqsMmiewAAIABJREFUCcS07XRQubwdm1j09nNUVVSQkJRM8tgbMMYwf9qTFGXvBKCirITAkDBGT5zCvr1F/PD64+Rt30THwSMZeOlfvV21o2at5Ys3X2DDiiUEBAVxyU33kdCxy0Hlpj16F8UFeTidTjp078X5427D4efng4h/nVGDOjP5ttH4ORz8e2YKk9/5wWN92xZRTJ14IbFRYewpKuVPD39ERk4RvTq34oU7zyM8LAin0/L0W9/z8Zy1PqrF0Rl1Ujcm33kBfg7Dvz9bwuTpczzWt23ZnKkPXEZs82auOk96h4zdhQzt34mnbz+/plzX9vFcPfEtZs77ydtVOGqjBnZi8q1nu+o8awWT353vsb5ti0im3ncBsVGh7Ckq40+PfEJGThEAn0++ioE9Evlx7Q4uuuddX4Tf4KY+eAVnDe1JTn4xyWMf93U4v1q3uDDOPzEehzEs3l7A3M35Huv9HIbL+7aiTVQwJRVO3krJZE9ZJaEBDq4dkECbqBCWpRfy6drsmm3GD04kIsgfhzFszS/lkzXZWG9X7BdYa1nmbqf8AoI45er626mFbz2Hs9LVTg1wt1P56VtY/N5LOKsqcDj8GHTZjcS270rhrnQWvv08+emb6Xvu1SSNusgHtTu07vFhXNSrBQ5jWLS9gG8OcTxyVf/WNfv5zWUZ5JdW0q55MJf1aQWAMfDl+lzWZBXXbGeAu/7QgcLySl5ZtNObVTosay2rZ7zKrvXL8QsIIvmPt9K8zcH7eU/6ZlLeex5nZQUtu/en9wXjMcaw5os3yFq3FIdfAM1iW9L/j7cSGNKMHcu/Z+PcT2u2L8xKY8QdzxOV0NGLtZPGRh1QaRQMcFmfVrywYDt7Siu5d3hH1mQVs8vdqQQ4uX0UpZVOHvx6M8mJEVzQM55pSzMAyN1bweNzth7ytd9YmsGOgnJvVOOoZa5LoTgnkzEPvUZu2gaWvv8SZ9393EHllr7/MoMu/xux7bvy3csPkvnzchKSkhky7t6aMss/eZ2AkFAA/AIC6X3OVRRkbacgc7vX6nMsNqxcQm7WTu568V12bPqZGa89y81PTD2o3BW3P0RwaBjWWt555gHWLP6ePqeM8EHER8/hMDx/x7mMvu1NMnYXseD1vzJrwXpS03Jqyjxx85m8+9VK3v3vSob168jDfzmdcY98TGl5BeMe+ZgtO/NoFRvOwmk38c2STRTubZzf7f0cDsPz91zE6JumkpFdwIK3JjDrh59I3VZ7AP7Ebefx7uwU3p29jGHJnXj45nMY98C7/LB8M4OvcJ0rax4Ryk8zJvLt4g2+qsoRczgMz99+DqMnTCcjp4gFr93ArIWpnvv5pjN496tVvPvVKob168DDN4xk3KOug7Tn3ltIaFAA48Yk+6oKDe7tmYuZ+sE8Xn/kal+H8qsZ4MJeLZi6KJ3CskomDG3Pul17yd5b204NahtJWaWTx+dspU/rcM7pEcfbyzOpqrb8NzWXluFBtIoI8njd6SmZ7KuqBuDa5AR6tw5nVWYxjUXGuhSKdmdyvrudWvL+S5x9iHZq8Xsvc9IVrnZqzku17dTyGW/Se/TlJCQls/OnZSyf8SZnTHiSwLBwBo69gfTVi3xQq/oZYGzvlry0cAcFZZXc9YcOrD3geOSkdq7jkYe/2UK/hAjGJMXz5rIMMov28Y/vt1FtISLIn3tHdOCnXcVUu88onNYpmuzifQQHNL4ZcLvWL2dvTiZnTHyF/O0bWPnxvxg+4ZmDyq38+GX6XXIz0e26svDVh8hOXU7L7sm06NKHnqOvweHnx9qZ/2bDtx9z4rnX0rb/abTtfxoAhZlpLHrjsd9N51NTQOvX+P4CmjY/Y8xrxph1xpj/GWNCjDF9jDGLjTFrjDEzjDHNAYwx3xtjkt2PY40xae7HScaYpcaYVe5tOruXX1ln+SvGmJqUjzHmMWPMavf7tHAva2+Mmet+jTnGmLYHBmuM6e/ebjVwU53lh4zheGofHUJOSQW5JZU4LaTsLKR363CPMr1bh7N4eyEAKzKK6BYfdrzDOu7S1yymw6DhGGOI69CNirISSgs9z6iXFuZTWV5KXIduGGPoMGj4QQ22tZbtK+bTPnkYAP5BwcR3SsLPP8BrdTlW65YtoP+wMzDG0K5LEmUleynak3dQueBQ136vdjpxVlViaDr/4Qd0T2TLznzSMvdQWeXkozlrOGdId48y3TrEM2+562TKvBVba9ZvTs9jy07X55GVW0zOnr3ERjX+v4EBSW3Zkp5LWkaeq87/W8k5wzwHWnTr0JJ5KZsAmJeymXOGHjwQ44IRvfnfj6mU7av0StzHYkD3RLZk5JOWtX8/r+WcU7t5lOnWPp55K/bv520e679fvpXi0n1ejfl4W7hiC/mFpb4O45i0bR5MbkkF+aWudmplRhE9W3oOQOrZshnL0l3t1JqsYjrHuk4KVjgt2/LLqKo+OLe5v/PpMK4MamOTvmYxJ9Rtp0oP306dMGg4O/a3U8ZQUeba95VlJYRERgMQEh5FbPsuGL/GlQtpFx1CbkkFee79vHxnESe28jweObFVM5bscO3nVZlFdIlz7edKp63pbAb4GWyd3R0V7E9Si2YsSivwSj2OVtZPi2k3wLWfY9p3o7KshLID9nOZez/HtHft53YDhpO5djEALbr1qxmNFN2uK2UFuQe9R/rKH0jsO+T4V0YaPXVAG1Zn4CVrbRJQAFwEvAXcY63tBawFHjzMa/wF+Ke1tg+QDOw0xnQHLgVOcS93Ale4y4cBi621vYEfgD+7l78ITHe/77vAC4d4rzeBW9zb/mIMR1T7YxAV4s+e0toDyz1lVUSFeHaeooL92VPmKlNtoayymrBA1z+7mLBAJo7owISh7egUE+qx3dXJrZk4oiNndYs9zrU4emWFeYRFxdU8D4uKpazAs9NVVpBHaFSMZ5lCzzK7N68jOCKKiPiE4xvwcVSUn0tkTHzN88iYOIrycw5Z9vVH7+SR68cQFBzKiYOHeSvEY9Y6LoKduwtrnmfsLiIhLtKjzNpNuxgzrAcAY4b1ICIsmOiIEI8yyd0TCQzwY2uG58FBY9Q6Poqd2bUHXBm7C0mIP7DOGYz5Qy8AxvzhRCKaBRMd6fl3PPb0vnz49YrjH3ADaB0X7rmfc4pIiI3wKLN28y7GDHXv56HdD7mfpXGJDA6goKyq5nlBeRWRB7RTdctUWyivqm2nfsn4wYk8fEZn9lU5Wd2Isp8ApQV5hDavbadCm8dSekA7VXpAO1W3zICL/8zyGW/w8cRrSPn0DfqNudYrcf9armONOvu5rJKoYM9OcmSIPwWlhz4eadc8mIkjOnLfiI58sGpXTYf0wl4t+Hzdbqq9U42jVlaYR0hU7XFSSFQM5Qcca5QX5hESWadM5MHHIwBpS76hZff+By3fuXI+bfo1nTb7WDmM8dpPU6MOaMPaZq1d5X68HDgBiLLWznMvmw4MPcxrLAImGmPuAdpZa8uAEUB/YJkxZpX7+f7xCxXArDrv2d79+CTgP+7HbwOn1n0TY0yUO7Yf6pT5pRgaraLyKu7/7yYen7ONT9Zkc93ABIL9XV/tN5Zm8Oi3W3lmXhqdYkMZ1DbyMK/WNKWlzKN9/9/PP/Xr/z6Z+1/9lKqqSjb/1DQ6JUfqvpf+y5C+HVj05k0M6dOBjN2FOOtkTVrGhDPtgYu54fFPsbYxzRT79e57/guG9DuBRe/ewZB+ncjILsDprD1MaxkTQVKnVnyzKNWHUTas+176miF92rNo2l8Z0qf9QftZfl9eXbyTh/63GX+Hg85xoYffoAnZOP9LBlz8Zy5+fDoDLv4zP77zvK9DOq627ynn8Tlb+cf32zi9Swz+DkNSy2bs3eckvZFOB2pIqd98gMPPjzbuYbf75W/fgF9gEJGt2vkmMGlUGte4h6av7pgpJxD1C2WrqD0BELx/obX2P8aYJcBo4EtjzA24piRMt9bed4jXqbS1R6FOGmCfHioGa+3cumWMMeOB8QCvvPIKxJx6iFc6cgVlVTQPrT2T3DzEn4Iyz6F2BeVVNA9xnV12GAgJcFBS4bqgUJX7946CcnJLKohvFsiOgnIKy11nMfdVVbMsvZD20SE1w2Z8ZcO8WWxe+BUAMe26UFJQm+UrKcglpM5ZZHCdhax7trmkIJeQyNoy1U4n6at/5Kx7/nmcI294P341g6Xfus6fJHbqSmHe7pp1hXk5RETH1bcpAYFB9BhwCj8vW0iX3gOOe6wNITOniMQ62b+E+Agycjy/j1m5xVw20XXuKCwkkPNPS6qZ5xkeGsSn/7iah175hqXr0r0X+DHI3F1AYovaf4UJ8ZFk7D6wzkVcdvebgLvOw3t5zG29aFQfvvhuLVXOxpo78JSZU+y5n+MiyMgt8iiTlVfMZX9/H3DXeViPRj+f9/eusLySqJDaJjYq2J/CA9qp/WUKy13tVLB/bTt1OFXVlp92FdOzZTgbc3w7XDl13iw21WmnSvfUtlOle3I9sp0AoQe0U3XLbFk8hwFjbwCgXb9TWfRu426rXMcadfZzSAAF5VUeZQrLqogKdS0/8Hhkv+ziCvY5q2kVEUTH6BB6tmpGjxYnEODnINjfwdX9W/PW8kyv1Kk+WxbMZtuirwFo3razx7DZsoI8giM993NwZAxlhXXKFHoej6Qt/ZasdcsYcuOjB90DM33FD7Tpe7gczG9LIxxR32goA3p8FQJ7jDH7B7xfBezPhqbhymoCXLx/A2NMR2CrtfYF4HOgFzAHuNgYE+8uE22MOdwppB+By9yPrwA8LsForS0ACowxp9Yp80sxcMD2r1prk621yePHjz9MKIe3fU8Z8c0CiQkNwM9AcmIkazL3epRZk1nM4Haug7p+CRFsyCkBoFmgX80swNiwAOKbBZJbUoHDUDMkxmHgxJbhZBb6fl5V12HnMHriFEZPnEJi78FsWzIXay0521IJDAkj1D0/Zr/QyGgCgkPJ2ZaKtZZtS+bSptfgmvW7UlcS0SKRsOaNb4jx4Zx85gXcNnkat02eRtKAISyf97VrPuvGdQSHhhHR3LPx21dWWjMv1OmsInX5YuITDpre3GilpGbQKTGGdq2aE+Dvx9gRvZi9wDOrFxMZWtNw33XVMKbPXg5AgL8fHzxxBf/5aiUzvl/n9dh/rZSf0+nUJo52raNddT69L7N/8Iw/JjKsts7XjWT6F0s81l9yRtMZfgv793M07VpFuffzib+8n68cwvQvV/oiVDkK6QXlxIUFEu1up/omRPBTtmc7tW7XXga0cbVTvVqFszn3lzuSgX6G8KDadqp7i2bsLvZ9O9Vt2DmcO3EK506cQtteg9lSp50KOIJ2akuddio0MprsTa4rdu/asJrwuNZer8/R2LGnjLg6xyP9EyNYm+U5LHpt1t6aEVV9WkfUnDCICQ2o6XQ0D/GnRbNA8ksrmflzDg98tZmH/reFN5dlsDG3xOedT4ATTh3NyLteYORdL9C652C2L3Pt57y0VAJCQmvm6+4X4t7PeWmu/bx92Vxa9XTt513rl7Nx7qecfP0k/AODPbaz1dXsXL2AxN9ZB1Tqpwzo8XcNMNUYEwpsBa5zL58MfOjOJM6uU/4S4CpjTCWwC3jcWptvjPk78D9jjAOoxHXRoF+6vOktwJvGmLuAnDrvW9d1wBvGGAv875diOKoa/wrVFt5ftYtbTm2Lwxh+TCsgq3gf5/SIY8eeMtZk7WVhWgHXDkjg/87oRGmFk2lLXVNTO8eGck5SHM5q18V4/rMyi9LKagL9DH87tS0Oh8FhIHV3CQu27TneVTkqCUkDyFyXwucPXe+6DcuVE2rWzX78ZkZPnALAwEtv5Me3n8NZuY/WPZJpnVR7dcy05T/UXHyorhmTrqOyvJTqqip2rlnE8JsfJapV4+2sdes3mA0rF/P0LZcTGBjE2Jtqr/D7/J3juG3yNCr2lTP9qfuoqqzEWssJSX0YdPp5Poz66Did1Ux4biYzn70WPz/D9FkrWL9tN5OuH8GK1AxmL0hlaN8OPPyX07EWFqxO47ZnvgDgouE9ObVPe6IjQ7ny7H4AjH/sE9ZsyvJllQ7L6axmwj8+YeaLN+Dn52D6F0tYv3UXk244kxXr05n9wzqGJnfi4ZtGY61lwcqt3PbUxzXbt23VnMQWUcxfscWHtTg6rv08m5nPXI2fw8H02StYn5bDpHHDXft54QaG9m3Pw+NHYbEsWL2d256dVbP9t1PG0aVdLM1CAtn8yR385anP+XbpZh/W6NhNf+JahvTvTGxUMzZ/9QiPTP2S6Z81rqufHk61hU/XZjN+cBscBpbuKCS7uIIzu8aSXlDOuuy9LNlRyOX9WjFxREdKK5wenYy/jzyBYH8Hfg5Dz5bNeGVROiWVTsYNTMTfz2AwbM4t5cftjesiNQk9B5CxLoUZD7raqZOvqm2nZj5+M+e626lBl93Ij289R1XlPhKSkklwt1ODr/gbyz56BVtdjV9AACddcQvguqDN7Kduo7K8FIyD9d99znmTphIY4tshyNUWPlq9ixtPaYPBdbudXcUVnN09lh17yvlp114WbS/g6uTWPDDqBErdt2EB6BgTwqgubXBWWyzw4epdR5wB97WWPZLZtT6Frx8bj19gEMmX3Vqz7tt//I2Rd7kuJdL3or/W3IalRff+NXM9V336CtVVlcz/1yTAdSGifpe4rm+Zu3UdoVFxNItt6eVa+VYTnJrpNea3ModIfMr+9ZOffR2DV/3roh488m3TPiA8GpNGuu4F9tmaXT6OxHvO7+VqKENOud/HkXhP2cLHAAhJnnCYkr8dZSmu20mEDHnAx5F4T9n8hwnpe7Ovw/CqspVTuP2L384c4iPx7HndeGzO76edArh/RCdumbHe12F4zYsXuK6SPvHLjT6OxHseP7sL0DQuf//iwm1e62TdckqHJvGZ7KcMqIiIiIiISANyNI1+sk9oDqiIiIiIiIh4hTKgIiIiIiIiDUhzQOunDKiIiIiIiIh4hTqgIiIiIiIi4hUagisiIiIiItKAHBqCWy9lQEVERERERMQrlAEVERERERFpQA5dhaheyoCKiIiIiIiIVygDKiIiIiIi0oCUAK2fMqAiIiIiIiLiFcqAioiIiIiINCDNAa2fMqAiIiIiIiLiFcqAioiIiIiINCAlQOunDKiIiIiIiIh4hTKgIiIiIiIiDUhZvvrpsxERERERERGvUAZURERERESkARlNAq2XMqAiIiIiIiLiFcqAioiIiIiINCDlP+tnrLW+jkGaPn2JRERERMQbmkTf7q2UdK8dH1+d3KZJfCb7aQiuiIiIiIiIeIWG4EqDuPfLjb4OwauePLsLj83Z7OswvOb+EZ0AeGbeVh9H4j13DOsIwPmvp/g4Eu/57PpkAO6evcHHkXjP06O7AnDHzN9PnZ85tyu3f5Hq6zC86tnzuhHS92Zfh+FVZSuncOrk+b4Ow6sW3DmE1enFvg7Da3q3CQfgts9/P3/Pz4/p5usQjphDFyGqlzKgIiIiIiIi4hXqgIqIiIiIiDQg48WfY4rTmGhjzDfGmE3u380PUaaPMWaRMWadMWaNMebSOuv+bYzZZoxZ5f7pc7j3VAdURERERETk9+leYI61tjMwx/38QKXA1dbaJOBM4HljTFSd9XdZa/u4f1Yd7g01B1RERERERKQBNaEpoGOA09yPpwPfA/fULWCt3VjncaYxZjcQBxT8mjdUBlREREREROT3qYW1Nsv9eBfQ4pcKG2MGAoHAljqLH3MPzX3OGBN0uDdUBlRERERERKQBGS+mQI0x44HxdRa9aq19tc76b4GWh9j0/rpPrLXWGFPv/UuNMa2At4FrrLXV7sX34eq4BgKv4sqePvxL8aoDKiIiIiIi0kS5O5uv/sL6kfWtM8ZkG2NaWWuz3B3M3fWUiwBmA/dbaxfXee392dN9xpg3gTsPF6+G4IqIiIiIiDQghxd/jtEXwDXux9cAnx9YwBgTCMwA3rLWfnzAulbu3wY4H/jpcG+oDqiIiIiIiMjv05PAKGPMJmCk+znGmGRjzOvuMpcAQ4FrD3G7lXeNMWuBtUAs8Ojh3lBDcEVERERERBqQN+eAHgtrbR4w4hDLU4Dr3Y/fAd6pZ/vhR/ueyoCKiIiIiIiIVygDKiIiIiIi0oCaRv7TN5QBFREREREREa9QBlRERERERKQBNZU5oL6gDKiIiIiIiIh4hTqgIiIiIiIi4hUagisiIiIiItKAlOWrnz4bERERERER8QplQI+BMeZ74E5rbYox5kvgcmttQQO99l+AUmvtWw3xek2BtZY1M14le/1y/AKC6P/HW4lq0+mgcnvSN7PivedxVlbQont/el0wHmMMGasWsP6r/1C8eyen3fYMzdt2BqAkP5tvn7yR8LgEAJq360rfS27yat2OhLWWZR+9Qsa6FPwCgjjl6gnEtD24/nk7NrHwredwVlaQkJTMgLE3YIwhP30Li997CWdVBQ6HH4Muu5HY9l19UJMjZ63lxw+mkr52Gf6BQZx27R3Etju4zktn/JtNi+ewr3Qvf3pxRs3yNd98SuqCr3A4/AgOj2TYNRMIj2nhzSock76JEVw/uC0OA99syOXTNbs81p/XswWjusbitJaisipenJ9Gzt4KH0V7eNZa1s54jd3rU/ALDKLvH28jKvGEg8oVpG9mxXv/pLpyH/Hdkznxgj9jjKGipJiUt5+mNH83odHxJF99D4Ghzdg091N2rpjneo9qJ8XZOznr4bcJDAunsmwvKz+YQvGu7YCh72V/I7p9N6/VuWtcKOf3bIHDwJIdhczdnO+x3s9huLxPSxKjgimpcPL28kz2lFUBMLxTNIPaRlJt4bOfstmQU1qznQEmDG1HYXkV05ZmANA5NpRzesRhgApnNe+t3EVeaaW3qnpI3eLCOP/EeBzGsHh7waHr37cVbdz1fyslkz1llYQGOLh2QAJtokJYll7Ip2uza7YZPziRiCB/HMawNb+UT9ZkY71dsQYw9cErOGtoT3Lyi0ke+7ivw2kQg9o359bhHXEYw6y1u3hn6U6P9WN6t+TCPq2ptpayCidPf7OZtLxSurdsxt2nu9pkA7zx4w5+2JzngxocPWstb740mZVLFxIUFMyNdz9Ex84H/4956Pbx7MnPJTAoGIC/PzmFyObRfP/1TN5+9Z9Ex8YDcOaYSxhx9vlercOR6BYfxoUnxmMwLN5RwJxNB/8tX9mvFYmRwZRWOpm+LJN899/ydQMSaNs8hKU7Cvmkzt9y39bhjOoSgzGGn7P3MvPnHG9Xy6d0EaL6qQPaQKy1Zzfw601tyNdrCrLXL6ckJ5NRE19hz/YNrPr4X5w24ZmDyq3++GX6XnIzzdt1ZdGrD5GdupyW3ZMJb9WOQX+ayKoPXzpom7CYlgy/6wVvVONXy1iXQtHuTM5/6DVy0zaw5P2XOPvu5w4qt/i9lznpir8R274rc156kMyfl5OQlMzyGW/Se/TlJCQls/OnZSyf8SZnTHjSBzU5cuk/LaMoO5NLH53G7m2pzH93ChdMfP6gcu16D6LnH87j/UnjPJbHtjmBCye+gH9QMD9/P4sln7zByPH3eSv8Y+IwcMPJbXnwvxvJK6nkH2O6s3RHATsLymvKbM0r5Y7P1lPhrObM7nFcMzCRyXO3+jDqX7Z7/XJKcjMZ4f4bXv3xvxh22+SDyq3++F/0ueQmmrfryuLX/o/dqSto0b0/m+Z+TGzn3nQZcTEb53zMpjkfk3TutXQefiGdh18IwK51S9ky73MCw8IBWDvjNf6fvfuOj6JOHzj+eTZtN4V0UiCEIr1DKCooAnp2PbHc2X96oudZzoJnubOc9Sxnw1OUU1HvLGfvSlGkBUhASiT0klBC6pJkN8lm9/v7Y5dNB9SwG/R588qL7Mx3Zp9nd2ey33m+M5PSbwSjL78dT70Lt6s2YPkKcM7gFGZkF2J3uvjz+Ezy9lRR1OggwZiMWBwuDw/P28qw9BhO75/M6yt2kxIdzvD0GB79dhuxEaFcfXRXHpm31d/RGt8znqLKOqxhDQOVpgxO4eXlO9lbVccxmXGc2CeRt75vetAikAQ4Z0gKLywpwO50cdNx3Vvm3y0Wp8vNQ3O3ePMfkMzrubuo9xi+yC8hNSaCtE4RTdY7K2cXtfUeAC7P6sLQ9Bi+31UZyNTaxeufZPPC2/OZef+lwQ6lXVgEbp7ci5v+t5a9lbXMvHgYCzeXsa204cDJ7HXFfLTK+5k8tlcC10/owS3v5bGlxMEfXl+J20BiVBivXjaCRZtLcR8BRxZWLlvEnp0FPDPrAzauW8vMpx/moemzWm17wx0P0KvvgBbTj5lwIlde/5fDHepPJsC5Q1J4fnEBFU4XNx/fnbV7qiiqbNiWx3aLxVHn5sG5WxjeJYYzBiYzK8e7LX+eX0JapwjSYhq25cgwC2cO7Mzj87dRXefmwuFp9E6KZGOJo5UI1K/Nr24Iroh0F5F8EXlVRDaIyH9EZLKILBKRjSIyWkSiRORlEVkmIitF5CzfsjYReUtE1onIB4Ct0Xq3iUiS7/cPRSRXRPJEZGqjNlUi8qCIrBKRbBFps1QjIveKyK2+378VkX/44tkgIuN900NE5HERWSsiq0Xket/0Sb641/jyiGgU48Mi8r2I5IjICBH5SkQ2+yqu+597mogs963zvnZ9Aw5g99psMkZNRERI6N4Pl7OaGnvTI3A19jJcNQ4SuvdDRMgYNZHda7IB6JSSQUznroEKt90VrM6m1xhv/sk9+lHnqMbRLH+HL//kHt78e42ZyI5VS7wzRahzenfsLmc1ttiEQKfwo237PpveR09CREjp2Z86ZxWOirIW7VJ69icyrmU+6f2GEuo72ty5Zz+qy0sOe8ztpXdyFLv31VJUWUe9x7BwSxljMuOatFm7u5I6t/eL+Pq9VSRGhQcj1EO2e+1SMrJOaLoN72u2De8ro7620TYTPZhOAAAgAElEQVScdYJ/G969dhndRk0EoNuoiexeu7TFcxSu+I4uw48DvJ/z0i15dBtzIgCW0DDCbNGHM8UmusVbKa12UeZw4TawclclA1ObPv+g1GhyCu0ArN5dSe/kSAAGpkazclclbo+hzOmitNpFt3jvZznWGsqAzlEs3WFvsi4DWEO9f7atYRbsNfWHOcMD6xZvpaS6riH/nfsY1Er+ywsa5Z/kzb/Obdha5qTe07IHsr/zaRFv1eVItWjFZsrsv5wv2/1TYygsr2GXvYZ6j2FOfjHjejXdLzvq3P7fbWEh/gMqtfUef2czPNSCOQI6nvvlLJ7PcSeeiojQZ8BgqqsqKS89cv7WHIpM37Zc2mhbHtxsWx6c1rAtr9rVyrbc7GhCYlQ4xdV1VPs+ExuKqxmaHhOAbDoOCeDPkebXWgE9CjgPuAJYDlwIjAPOBO4EfgDmGWOuEJE4YJmIzAGuxjsstr+IDAFWtLH+K4wxZSJiA5aLyHvGmFIgCsg2xtwlIo8CVwEPHGLMocaY0SJyKnAPMBmYCnQHhhlj6kUkQUSswKvAJGPMBhF5DfgjsL+stMMYM0xEnvS1OxawAmuBF0TkJKA3MBrvZ/pjETnOGPPdIcb5kzntpdjikvyPbXGJOO2lWBt1pJz2UmyxjdrEJuG0H3wYj6OsiHmP30io1caAUy4hqdfA9g2+HTgqSomMT/Y/joxP8k5rlL+jopTIuMQWbQBGnXsVc6bfTe77/8YYwym3tqw8dTSOilKi4xvez6j4JKorSlrtbB5M/sKvyRiU1Z7hHVYJkeGUVDccXS6trqN3ctudp8l9kllRYG9zfkdQs68UW1zDZ9i/DXdqug1bG2/DcUnU7PN+hmsrK/xtI2Liqa1sekZDfV0te/NXMOScqwHvdh0eFcvKt55m366txHY9isFnX+U/KHG4xVpDqXA2DIG119TTLa7pc3eyhlLhG3LrMeB0eYgKDyHWGsr28oZqd0WNi1ir90/yWQM78+m6YiJCmx4jfmfVHv4wpisut4eaeg/PLNxxuFI7JLHWMH9uABU19WTG29ps4zFQU+/Nv7pRR6U1U8d2pVucjfy9Vaw6Aqufv0TJMRHsrWwYYVBcVceAtJYdinOGpXFBVhdCLRZufGe1f/qA1BjuOLk3KZ2sPPD5+iOi+glQVlJMUnKq/3FicgplJXuJT0xq0fZfj92HJSSEMeMnMuWiK/1DMJcumMe61StJ69qNy/54M0mdU1ssG0yx1jD/qQEAFc7Wt+XyH7Etl1TX0Tk6nARbGBU1LganxRzRB5RU+/rVVUB9thpj1hhjPEAeMNcYY4A1eDt0JwG3i8j3wLd4O2jdgOOANwCMMauB1S1XDcANIrIKyAYy8HboAOqAT32/5/qe61C938pyk4EZxph6X0xlQF9ffht8bWb54t7vY9//a4ClxphKY0wxUOvrbJ/k+1mJt4Pdr1H8RyRrpwR+c/fLTLz1aQaf9Qdy3ngcV80v56j0fhsWfM6oc6/i3IdmMercq1j8RsuhrL9UG7PnUbJ9A0NPmhLsUA6L449K4KjkSD5YHbzhloEmIjQ/faYobxkJPfr7h996PG7sOzfT/ZhTmHDL04SGW9k4790gRNt++neOoqqunkJ7y6HEx/WMZ+bSQu6fs4XlBXbOGpDcyhp+GV7MLuTerzcRarH4q8bqyPD+97u5YGYOL3y3lcuO7uaf/sOeSi55dQVXvbGSi8dkEB7yy+qM3HDnAzwx823+/uRL5K9ZyXezPwNg5NjxPPfGJzz+0lsMGTmG5x69N7iBBojT5eF/q4q4bFQ6N4zLpMzhwhxJpe92IBK4nyPNr7UC2vgvu6fRYw/e18QNTDHGrG+80KGcTCwiE/B2DI82xjh8Fyraf0jcZRq2Pjc/7vXfH+OPXa6t9TTOe//jULxVz4eNMTMOtBLf0OKpADNmzICuE35SMFsWfsa2JV8BENetN86KhmEtzopSbLGJTdrbYhNx2hu1sZe0aNNcSGgYIaFhAMRnHEVUYipVe3f6L1IUTPnzP2Xjoi8BSMzsg6O84QR9R3lJk2onQGRcor/i2bzN5uy5jDrPWxnKHDGOJf95+nCH/5PkffMJ+Qu8OSd370NVo2Gz1eUlRMW1PKp8IIU/rGTl529xxq2PEhLWsYeoNlbmqCOp0ZDaxKhwyhwtLzA0JD2Gc4el8ddP17c6XDHYtiz8jO3ZXwMQn9EbZ0XDZ7itbbim8TZcUYK1k7dNREwcNfvKsHZKoGZfGeHRTYckF65cQNfhxzVaVxLW2CQSMr0X20ofegwb577XvgkegL2mnjhbmP9xrDW0xbDYfTX1xNm80y0CtjAL1XVu37INu/I4axj2mnoGpkQzMCWa/p2jCbUI1jALFw5P46O8vaR3imCH7xzh73dVctWY4J5yYK9xNcshFLvT1Wqb/flbQy0HrX7uV+8xrN1TyaDUGDYU//IOGh5piitr6dzoHL/k6HCKK9s+53pOfjG3nNjyonLby5w4XW56JEWxvqjqsMT6c3350TvM/fxDAHr1GUBJccPBv9LiIv8FhRrbP80WGcW4iSezaX0ex590OjGxDfuxSaeczRsvdrzrUdhrXMQ33pZtodhrWm7L8T9yW84rqiLP9x4fnRmL51fWAVVt+7VWQA/mK+B68fU4RWS4b/p3eIfrIiKDgCGtLBsLlPs6n/2AsYcxztnA1SIS6ospAVgPdBeR/Xv9S4D5P2KdXwFXiEi0b51dRKTFntYY86IxJssYkzV16tQWKzlUPcedxsRpzzBx2jOkDxpLwfJ5GGMo25ZPmC2yyfBbAGtsAmHWSMq25WOMoWD5PNIGHfglrq2yYzzenWR1yR6qSnYRldgxhr/0O/50zrhzOmfcOZ1uQ8ayeak3/+Kt+YTZopoMvwWI9OVfvNWb/+al88gYMtY/r2jjGgD2rF9FTHJ6wPM5FANPOIMpdz/HlLufo/uwo9m4ZC7GGIq2rCPcFvWjht+W7NjEgjee4Td/ugdbp7iDL9CBbCyuJq2Tlc7R4YRahHE9E1i2vemQ0x6JNq4dl8lDX28K+vl+bek57jROuPVpTrj1aVIHj6Eg55uGbdga2WT4LXhHJIRGNNqGc74hbdAYANIGjmbH8nkA7Fg+j7RBo/3LuZzVlG5eS6qvrXdd8djikqjc670SZ/GGVcSkZBzulP0KKmpIigojwRZGiHiv+Ji3p+kX6ryiKrK6xgIwJC3GfwGOvD1VDE/3DklLsIWRFBXGjvIaPs8v4f45W3hw7hbeWLGLTSUO/rtyN06XG1uYhaQob4e3T1IUe4N8ReSCihqSo8JJiPTl36UTa5t1KPL2VDEqoyH/TQe5AEl4iBATEQJ4zwHtnxLdZNinCp78PZVkxFtJi40g1CJM7pfMos1Nz/Hu2mgI+jE9EygsdwKQFhvB/oJnSqcIMhNs7NlXQ0d18lnn89iM//LYjP8y+tgJfDf7c4wxbPhhDZFR0S2G37rd9eyze/ff9fX15GYvIKO79wrgjc8XzVnyHV279QhcIodoR0UNSc235Wb7srWNtuWh6TGHdDGh6HDvtmwLszCuRzzZ29vlRhFHDAsSsJ8jza+1Anow9+M9Z3K1iFiArcDpwPPAKyKyDliHdzhsc18C1/jarMc7DPdwmQn08cXpAl4yxkwXkf8D/ufrmC4HDvmKusaYr0WkP7DE1/+uAi4G9rZ79M2kDMhiz7ocZj84lZDwCEb87kb/vHmP3eC/iu3QKX8k982n8Phuw5LSfyQAu1YvYdX7M6irsrPkpb8T26UHx17zd0o2r2XdF//BEhIKIgw790/+IXwdSZdBo9iZl8MH9/yB0PAIjrnkJv+8Tx66jjPunA7AmN9dy+LXnqTeVUuXgVl0Geg973HsRTew/H8zMB4PIWFhHH3R9UHJ48fIGDyKHWuX89ZdVxAabmXC5Q05v/f3PzHlbu8VjbPf/Tebl31DfV0t/7ntYvqOO5msMy9m6bv/pr62hjkzvLc4iEpI5uTr7g1GKj+ax8BLi3dwzyl9CBGYs6GUgooafj8inU0l1SzfYefy0RlYw0K4bZL3i0xxVR0Pzd4U5MjbltI/i6J1ucx56GpCwiIY/vsb/PO+efxGTrjVW5Ufcu41rHzzae+tlPqNoLNvG+49aQrLX3uUHUtnY4vvzKhLb/Mvv3tNNp37Dm9xfueQc6aS+8Y/MW4XkYmpDG+03zjcPAbeX7uXqWO7IgLLCuwUVdXxm76JFFbUkFdUzdIddi4cnsYdE3vgqHPz+ordABRV1fH97kpum9Ddv54D1QY8Bt5ZVcTlWV0wxuBweXh7VXCHZHsMvL+miKljM7AILNthp6iyjpP7JlFQUUNeUZU3/xFp3DmpJ446N6/l7vIv/9fJvbCGWgixCINSo5mxpIBql5srR3clNEQQhE0lDhYfoV9aZz18OeNH9iYpLppNX97P/S98zqwPlwQ7rJ/MbeCfczfzzymDsFiEz9YUsbXUwZXHZpK/p5JFm8uYMjydrMw46j2Gypp6HvzCezbQkC6xXPzbrtR7DB4DT8zZjN3ZMQ+qNTd8zLGsWLaIGy49m/AIK9dOu8c/b9rVF/LYjP/iqnPx4O3X4a6vx+PxMHjEaCaf+lsAvvjgLXKWfEdISAjRMZ249rZ7g5RJ2zwG3ltdxDVHZ/hvKbWnso5T+iWxo6KGvD1VZG+3c/GINO6a1BOHy3tLpf3uPrEXEaEWQi3C4LRonl9SQFFlHecMTiE91ls1/2p9CcXVwb1tlOo45Nc2HlsdFub2zzccvNUvyCOn9uHBuR23I9De7prkLag/Mb/j3gKkvd1yfE8Azp6ZE+RIAufDP3gPZtz22fqDtPzlePQ07/DdWz759eT8xBl9ufnj/GCHEVD/PLMftuHXBTuMgHKunM64xxcEO4yAWnjreFYV/HouWjU0w3sw/c8f/Xq256fO6gdHyIVfP11bFLBO1umDUo6I12Q/HYKrlFJKKaWUUiogdAhukInIXXhvCdPY/4wxDwYjHqWUUkoppdTPI0dGoTYotAMaZL6OpnY2lVJKKaWUUr942gFVSimllFJKqXZ0JN6fM1D0HFCllFJKKaWUUgGhHVCllFJKKaWUUgGhQ3CVUkoppZRSqh1Z9CJEbdIKqFJKKaWUUkqpgNAKqFJKKaWUUkq1I70IUdu0AqqUUkoppZRSKiC0AqqUUkoppZRS7UgroG3TCqhSSimllFJKqYDQCqhSSimllFJKtSPRq+C2SSugSimllFJKKaUCQiugSimllFJKKdWOLFoAbZNWQJVSSimllFJKBYRWQJVSSimllFKqHek5oG3TCqhSSimllFJKqYDQCqhSSimllFJKtSO9D2jbtAKqlFJKKaWUUiogxBgT7BjUkU8/REoppZRSKhCOiNrit+vLAvb9eELfhCPiNdlPh+CqdnHn5xuCHUJAPXRqHy5/c3WwwwiYV38/BIDnFm0LbiAB9KdjuwNw8RurghtIAL1x8VAAbvlkfZAjCZwnzugLwP1zNgU5ksD52+SjeHDurydfgLsmHcW4xxcEO4yAWnjreGzDrwt2GAHlXDmd2etKgh1GwJzYPwmAaZ/+evbZj53eN9ghqHagQ3CVUkoppZRSSgWEVkCVUkoppZRSqh1ZjqhBsYGlFVCllFJKKaWUUgGhFVCllFJKKaWUakdyZFwrKSi0AqqUUkoppZRSKiC0AqqUUkoppZRS7Ui0ANomrYAqpZRSSimllAoIrYAqpZRSSimlVDvSAmjbtAKqlFJKKaWUUiogtAKqlFJKKaWUUu3IoieBtkkroEoppZRSSimlAkIroEoppZRSSinVjrT+2TatgCqllFJKKaWUCgitgCqllFJKKaVUe9ISaJu0AqqUUkoppZRSKiC0AqqUUkoppZRS7Ui0BNomrYAqpZRSSimllAoI7YAqpZRSSimllAoIHYKrOgxjDKs+eJE963IJCYsg6/c3Ep9xVIt25QWbyHnzKdyuOlL7j2Tob6ciIqz++GV25y3DEhJGdFIqI39/I+G2aDzuenLfepaKnZsxbjfdRk2k3+TzgpDhgQ1Oi+bCEV2wCHy3uYzP1hU3md8nOYoLR6STEWfl+cU7yCmw++fdMqEHvRIj2VBczVPfbQtw5D+dMYbv/vs829YsIzTcyolX3kLnzN4t2i1+7xXyF8+h1lHFH5//yD/9h4Vfs/CdmUTHJwIwZNKZDDrulIDF/1MMSYvhklHpWET4dlMZn+TtbTK/b+coLslKJyPOxvSF21m+w/s+J0aFcdPx3RGEEIvw9foS5m0sDUYKbeqbHMnZg1KwCCzdYWfeprIm80MswoXDUukaZ6W6zs3rubsod9YDMPGoBMZ0i8Vj4MO1RawvdgBwwdBU+qdEUVXr5vH52/zrSu8UwblDUgi1CB4D760poqCiJmC5tsYYQ87/ZrAzL4fQ8AiOvuQmEru13IeV7tjIktefpL6uji4Ds8g672pEhAX/foR9RYUA1DmrCbdFcdqd09m9biUrP3oFj7seS0goI357Jal9hwY6vVYZY1juyzkkLIJjL20750WvPYnb5c15lC/nsoLNZL/5HO76OiyWEMb87lqSuvfFvqeARa8/RVnBJoafcSkDT5wShOwObkz3eG6c2BOLCJ+u2cMbywqbzD9raCrnDEvHYwzOOjePzt7EtlIH/VOjue0k775OgJcX7+C7TR1re/4pXrjnIk45bhDFZZVknfdQsMNpF8YY3p35FHm5SwiPsHLJDXeR0atvi3bP3Xcz+8pLcbvr6TVgKBdMvQVLSAgvP/Y3inbuAMBZXYUtKpo7npoV6DRaZYxh7YcvUbQuh5DwCIb/7s/Ede3Vol1FwSZWvvU0blctKf2zGHT2VYgIdY5Kcl57FGf5Xmzxncm69C+ER0b7lyvfsZGFz05j5MXTSB96LAA/fPoqRetyAOgz+QK6DB8fmGSDQHQEbpu0A3oYicg2IMsYUxLg5/0WuNUYk3OI7Sf42p/eyrxtBCiHPetyqSrexW/unEHZ9vWsfPd5Jt70RIt2K9/9FyPOv46EzL4sevFeivJzSe2fRUqfYQw67TIsISGs+eRV1s95l8FnXE7h9wvxuF2ceNt06utqmP3In8gYcRxRCSmHO6VDJgKXjOzCY99spczp4p6TjmLlzn3s2lfrb1PmqGPm0gJO6ZfcYvnP1xUTESJMOCoxkGH/bNvXLKeiaCeXPvwKe7bk881rz3LB355p0a7HsLEMnXQmr91xRYt5fUYfx4SLrwtEuD+bCFw2uguPzN1CmcPF30/pTW6hnV32hve5tLqOGYsLOHVA0/e5wlnPvV9uot5jiAi18MjpfVlRaKfC14ELNgHOGZzCjOxC7E4Xfx6fSd6eKoqq6vxtxmTE4nB5eHjeVoalx3B6/2ReX7GblOhwhqfH8Oi324iNCOXqo7vyyLytGGB5gZ2F28r5/bC0Js93+oBkvt5QSv7eavp1juL0/sk8v6QgsEk3sysvh8riXZx170uUbFvPsree45TbnmzRbtlb/2LMhTeQ1L0v3/zrHnb9kEuXgVmMv/J2f5vc92YSZosEICK6ExOuuYfIuEQqdm1j7vS7mfLQawHL60B25uWwb+8uzvblvPSt5zi1lZyz3/wXR1/kzXnucw05537wCkNPu5AuA7MoXLuc3A9e4Tc3PUJ4VAyjz7uaglVLgpDVobEI3Dy5Fzf9by17K2uZefEwFm4uY1upw99m9rpiPlq1B4BjeyVw/YQe3PJeHltKHPzh9ZW4jffg0quXjWDR5lLcJljZtI/XP8nmhbfnM/P+S4MdSrv5IXcJxbsLuef5t9m2IY+3XnicaY+91KLdFdPuxxYZhTGGmf+4ixWLvyFr/GSumHa/v837Lz+LLSoqkOEf0N78XKpLdjHpjhmU71jP6vee57gbH2/RbvV7zzP0/D8R360vS2fex978FaT0H8nGue+S3HsovSedy8a577Jp3rsMOP1yAIzHzbrPXiW5z3D/eop+WE5F4WaOv/lpPPUuFj9/J537jyTMGhmolFUH0SGG4IpXh4jlpxCRkGDH8Euwe202maMmIiIkdu+Hy1mN0960guK0l+GqcZDYvR8iQuaoiexakw1ASr8RWEK8b0VCZl+cFd4+s4hQX1uDx+3G7arDEhpKWETH2tn1TIikqKqO4uo63B7D0h0VDO/aqUmbkmoXhRU1GNPyG8q6oipq6j2BCrfdbFm5hH7HTEZESOvVn1pHNdUVLasAab36ExV3ZHWuW9MrMZKiyjqKq7zvc/a2CkZ2jW3SpqTaRUFFDc3fZrfHUO/xTgyzSIc7stot3kpptYsyhwu3gZW7KhmYGt2kzaDUaHIKvRXd1bsr6Z3s3Q4Hpkazclclbo+hzOmitNpFt3grAFvKnDjq3C2f0IA11PtnwxZqYV9N8DviBauz6THGuw9L7tGPOmc1jmb7MIdvH5bcw7sP6zFmYotOljGG7SsW0D3reAASMnoR6fv8x6Zl4nbV4na5ApPUQRSszqZX45wdB8+515iJ7Nifswh1Tm+HzeWsxhabAIAtJo6k7n2QkI57nLx/agyF5TXsstdQ7zHMyS9mXK+EJm0af3ZtYSHs36xr6z3+zmZ4qKXF9n6kWrRiM2V2x8EbHkFWL1vI6Akne7fXvoNwVldiL2t5TN4W6e1Yetxu3PX1LfbRxhhWLJrHyPEnBiLsQ7Jn7VK6jjwBESEh0/u9q2Zf0+23Zl8Z9TUOEjK922/XkSewZ633e9eevGVkjJoIQMaoiexeu9S/3JaFn5I2+Bgiohv+xlUWFZDYayCWkBBCI6x0SuvO3vwVAcg0OCSAP0eaoHX6RKS7iKwXkdeAtcC/RWStiKwRkQt8bUREHmtl+gQRmS8iH4nIFhF5REQuEpFlvna9fO3O8y27SkS+O0Asl/vW9a2IbBSRexrNu9i33u9FZMb+zqaIVInIEyKyCjj6AKleLyIrfHH18y2bICIfishqEckWkSG+6feKyK2Nnnut73WKEpHPfHmsbfQ6jPS9Drki8pWINC4RnOeLe4OIjPe1t4rIK75YVorICa28Foki8rWI5InITAL4uXbaS7HFJfkf2+ISqbE37YzU2EuxxTZqE5uE096yw7Jt6WxS+48EoMvQYwmNsPLZPZfyxd+voPeE3xIeFXOYsvhp4iPDKHM0fKEsd7iIt4UFMaLAqCovISahodIXnZBEVfmPG4a2KXcR/7n7Gj577n4qy/YefIEg8r7PDRXBMoeL+MhDf58TIsN46LQ+PH3OAD7N29thqp8AsdZQKpwNn2F7TT2x1qadh07WUH/MHgNOl4eo8BDfsg25VNS4Wizb3Id5ezl9QDJ/m9yTMwYk83l+8QHbB4LTXkpUXMPnOSouCWezAyrOilJ/Z9Lfptk+bO+mPKyd4ujUuUuL59ixchEJGb0ICesY+wdHRSmR8Q05R8Yn4WiWs6NZzo3bjDr3KnI/eJl377yMnPdfZsRZlwck7vaQHBPB3sqG0QvFVXUkx0S0aHfOsDTe/kMWfzyuB0/N3eyfPiA1htcvH8Gsy0by+OxNR3z185eqoqyY+KTO/sdxiZ2pKGt9fzP93pu4/bLTibBFMvzopl+xNv+wipi4eDqnZxzWeH+MGnsptkb7LFts69+7rE2+myX529RWVmDt5D3oEhETT21lBeDdF+5Zk033Y5qeEtMpvQd781dQX1dLbdU+SjatwVkR/H23CrxgH1rsDVwGdAGuAYYCScByX4fxGGBYK9PxTesPlAFbgJnGmNEiciNwPfBn4G7gN8aYnSISd5BYRgODAIfveT4DqoELgGONMS4R+RdwEfAaEAUsNcbccpD1lhhjRojItcCtwB+A+4CVxpizRWSib33DDrCOk4FdxpjTAEQkVkTCgGeBs4wxxb5O6YPA/jGKob7X41TgHmAy8CfAGGMG+zrDX4tIn2bPdQ+w0BjzdxE5DbjyIPl1OPmz38YSEkLGyAkAlG3fgIiF0+6bRZ2jivnP3k7nPsOITkoNbqDqZ+sxbCx9xkwgNCycNd9+xuyZj3PObY8GO6zDpszh4s7PNhBnC+Wm43uwbIe9Q1T+guGYzDg+ytvLmt1VDE2L4fyhqczILjz4gkeAbTnz6T7y+BbTK3ZtZ+VHrzDpugeCENXhsWHB54w69yoyhx/LttwFLH7jKU668Zdx7uB+73+/m/e/382J/ZK57OhuPPjFBgB+2FPJJa+uIDPBxl2n9CV7axl12gs9ol1375O46mp59Z/3sX5NLv2HjfbPy1kwm6wOVP1sbyINI3PWfvgS/U+/DLE0rXN17jucioKNLHz2NsKjOhGf2a9Fm1+UI7E0GSDB7oBuN8Zki8iTwJvGGDdQJCLzgVHAuDam7wOWG2N2A4jIZuBr3zrXAPsPOy0CXhWRd4D3DxLLbGNMqW997/ueux4YibdDCmAD9pdY3MB7h5Dj/ufNBc7x/T4OmAJgjJnnqzp2am3hRjk9ISL/AD41xiwQkUF4O8yzfbGFALvbeN7ujZ73Wd/z5ovIdqB5B/S4/XEaYz4TkfLWAhKRqcBUgBkzZkDXCQcIv22bF37G1iVfARDfrbd/2Cx4KwXW2KbDLq2xiTjtjdrYS7A1arNt2Rx25y1n/LUP4HtdKFgx3zc8NxRrTByJPfpTUbCxQ3VAyx0uEhpVwuIjwyh3dowhdu1t1dyPyfvuCwBSevShstGR5KqyEv8FhQ6FLbphsxl43Mks+t/M9gv0MPC+z+H+xwmRYZQ7fvz7XOGsp7Cihr6do/wXKQo2e009cY2q9rHWUOzNOsf7auqJs3mnWwRsYRaq69y+ZRv+HMVZw1os21xWRic+9F3AadXuSs4fGpxzutfP/5RNi74EIDGzD9WNjuZXV5RgazZ03BaX2KRCWF3RdB/mcbspWLWYU/7ydJPlqstLmP/SAxxz6S3EJDc9HzbQ8ud/ysirPjMAACAASURBVMZGOTvKG3J2lJc0qXYCRDbLuXGbzdlzGXXe1QBkjhjHkv80zbsjK66spXOjimdydDjFjSqizc3JL+aWE1teoGl7mROny02PpCjWF1UdlljVjzP/8/dY/PXHAGT27k95ScPomorSvcQltLwWw35h4REMGTOeNcsW+Dugbnc9q5bM57YnXj68gR+CrQs/Y/tS71fmuIzeTSqQTnvr37tqmnw3K/G3iYiJo2ZfGdZOCdTsKyM82lvrsRduIvd177mkddX7KMrPRSwhpA0eS5/J59Nn8vkA5L7xONHJLUd6qMASkQTgbbz9hW3A+caYFt//RcSNt08CsMMYc6Zveg/gLSARb7/jEmNMXfPlGwv2YYfqn7Fs4728p9FjD76OtTHmGuCvQAaQKyIH+mbb/LCjwXvsYpYxZpjvp68x5l7f/Bpfx/hQ43Rz8A5/PU3fEyuAMWYDMALvm/6AiNztiy2vUWyDjTEn/cTn/dGMMS8aY7KMMVlTp079yevpNe40Jk97hsnTniF90Fi2L5+HMYbSbfmE2SL95wPtZ4tNIMwaSem2fO95UsvnkTZoLOC9iNGGee9zzB/+Rmi41b9MZHwyxZtWA1BfW0PZ9vXEpHT9yTEfDlvLHKTEhJMUFUaIRRjTLY6VhfuCHdZhMXTSmVx43/NceN/z9Bx+DPmL52CMYffmdURERv6ocz0bny+6dWU28WndDkfI7WZLqYPUmHCSo8IJsQhju8exovDQOpAJkWGEhXgPqkSGh9CncxS797X9ZTfQCipqSIoKI8EWRojA8PQY8vY0/TKdV1RFlu+c1yFpMWws8Z4rlreniuHpMYRYhARbGElRYewoP/AVbffV1NMr0QZA76RIiquDc8Cm7/Gnc9qd0zntzul0HTqWrUu9+7DirfmE26KIbLYPi/Ttw4q3evdhW5fOI2PIWP/8Pfkr6ZTSlaj4hiFvdY4qvnn+XoafdTmdew0IWG5t6Xf86Zxx53TOuHM63YaMZXOjnMMOIefNjXKOjE2gaKP3+8ye9auISU4PeD4/Vf6eSjLiraTFRhBqESb3S2bR5qbnz3WNa/hbdEzPBArLnQCkxUbg25xJ6RRBZoKNPfuCexVn1eD4U6dwx1OzuOOpWQwZcxzLvv3Su72uX4stKprYhKQm7WudDv95oW53PXk5i0npkumfv35VDildM5sM5Q2WHuNOY8ItTzPhlqdJGzSGwtxvMMZQtj2fMGukf0jtftZOCYRaIynb7t1+C3O/IXXQGABSB46mYPk8AAqWzyN1oLfDPfmumZz4V+9P+pBjGHLONaQNHovxuKmr9n63se/ayr7d25pcpOiXRgL472e6HZhrjOkNzPU9bo2zUb/jzEbT/wE8aYw5CijnEEZPBrsCut8C4GoRmQUk4K3CTcMbX2vT+x3KSkWklzFmKbBURE7B2xFt6wSzE31HAJzA2XiHsjqAj0TkSWPMXt/8GGPM9p+aqM8CvEN57xfvFWhLjDH7xHvF2dN9sY8Aevh+TwfKjDFviEgF3mG8jwDJInK0MWaJb0huH2NM3iE87zzf0NtuwHqansP6HXAh3o7uKUD8z8z1kKUOyGLPuhy+enAqIeERZP3uRv+8OY/dwORp3qujDp/yR/9tWFL6j/Sf6/n9+zPw1LtY8PzfAO+FiEac/yd6jTuNnDef5utHrgUgc/RkYtN7BCqtQ+Ix8EbOLm6d0BOLwIIt5ezaV8tvB6ewtczJ9zv30SPBxvXjM4kKD2VYl078dnAKd33uHcp1x6RepHWKwBpq4Z9n9ePlpYWs3dPxj6R3HzKabauXM+v2/yMsPILJVzSMaP/vPX/kwvueB2DhOzNZv/QbXHW1/PuWixg4/mTGnn0J38/5iK3fL8FiCSEiOoYTrzzYiPjg8hiYtXwnt03yvs/zN5ex017LlCHe93lF4T56Jtr483HdiYwIYXjXTkwZksrtn64nvVMEF47s4T8y9vkPeykM8m1HGvMYeH/tXqaO7YoILCuwU1RVx2/6JlJYUUNeUTVLd9i5cHgad0zsgaPOzesrvIM2iqrq+H53JbdN6O5fz/4jghePSKNXYiRR4SH8bXJPvlpfyrICO/9bXcRZAzsTIuDyGN5dvSd4yft0GTiKXXk5fHTvH7y3Ybn4Jv+8zx66jtPunA7A6AuuZfHrT+J21ZI+IIv0gVn+dttyv/NffGi/9fM/pbJ4F2s+f5M1n78JwKTrH8Aac7AzSw6/LoNGsTMvhw/u8eZ8zCUNOX/y0HWc4ct5zO+uZfFrT1LvqqXLwCy6+HIee9ENLP/fDIzHQ0hYGEdfdD3gveDcZ//4M64aB4iFdd98xJl/e4FwW8e5gJzbwD/nbuafUwZhsQifrSlia6mDK4/NJH9PJYs2lzFleDpZmXHUewyVNfX+4bdDusRy8W+7Uu8xeAw8MWcz9g50TvdPNevhyxk/sjdJcdFs+vJ+7n/hc2Z92HGvZHwoBo48mrzcJdx3zfmERVi5+IY7/fMe/vNl3PHULGpra5jx0F+od7kwxkPvQSMYd/LZ/na5C+YwcvzkYIR/QJ37Z1G0Lpe5D19NSFgEw393g3/et0/cyIRbvCMShky5xncbljo69xtB537e7129J04h57VH2bFstu82LLcd8Pk8bjcLn7sDgLAIGyMuvNl/8UgVVGcBE3y/zwK+Bf5yKAuKd7jhRLx9h/3L3ws8f8DlWruiZiCISHe8w0kH+YJ/FDgFb+XxAWPM2weYPoFGtw2RRrcdaTzPN5S2N97va3OBP5tWEhaRy/F2OmOBrsAbxpj7fPMuAO7AW5l0AX/yDRuuMsZEN19Xs/Vuw3cLExHJAh43xkzwdWRfBnri7eRONcasFhEb8BHec2KX4u0YngL0BR7DW911AX/05ToMeMYXdyjwlDHmpWavRxKQY4zpLiJWvB+ILLzV1puNMd80e80SgTd9MSwGTgJGHuQ2LOZOX0fo1+KhU/tw+Zurgx1GwLz6+yEAPLdoW3ADCaA/HdsdgIvfWBXcQALojYu995a85ZP1QY4kcJ44w3s/v/vnbApyJIHzt8lH8eDcX0++AHdNOopxjy8IdhgBtfDW8diGHxm3qGovzpXTmb0uoHe+C6oT+3srsdM+/fXssx87vS8cIWdX5m7bF7BO1sjunX7yayIiFcaYON/vApTvf9ysXT3wPd4+xCPGmA99/YxsX/UTEckAvjDGDDrQcwatAmqM2Yb3HEZ8ncJpvp/Gbdqa/i3e3vn+xxNam2eMOYdDV2iMObv5RGPM23jHRTeffsDOp69N90a/5+A7umCMKcPb4W3e3om3w9fcNuCrVtp/j7cq3Hz6hEa/l+A7B9QYUwP8Xyvtv6XhNSttIwallFJKKaVUB9P42iw+LxpjXmw0fw7Q2sVP7mr8wBhjRKStjnOm78KuPfGOplwD/KQLUXSUIbhKKaWUUkop9YsQyDKtr7P54gHmtzkGXESKRCTNGLPbd0vHVu9pZ4zZ6ft/i2+05XC8F2SNE5FQY0w93pGkOw8Wb7AvQhRQIvIb8d7Ps/HPB8aYV40xP3mcioh80Mp6f9OesSullFJKKaVUO/sY720x8f3/UfMGIhIvIhG+35OAY4EffKNVvwHOPdDyzf2qKqDGmK9oZShrO6z3t+29TqWUUkoppdQR6og4UxXwXtj0HRG5EtgOnA/gu37NNcaYPwD9gRki4sFbwHzEGPODb/m/AG+JyAPASuDfB3vCX1UHVCmllFJKKaWUl+/6L5NamZ6D984bGGMWA4PbWH4LMPrHPKd2QJVSSimllFKqHbXD/Tl/sX5V54AqpZRSSimllAoe7YAqpZRSSimllAoIHYKrlFJKKaWUUu1IdARum7QCqpRSSimllFIqILQCqpRSSimllFLtSAugbdMKqFJKKaWUUkqpgNAKqFJKKaWUUkq1Jy2BtkkroEoppZRSSimlAkIroEoppZRSSinVjkRLoG3SCqhSSimllFJKqYDQCqhSSimllFJKtSO9D2jbtAKqlFJKKaWUUiogtAKqlFJKKaWUUu1IC6Bt0wqoUkoppZRSSqmAEGNMsGNQRz79ECmllFJKqUA4IoqLa3dWBez78aAu0UfEa7KfDsFV7eKqd9YGO4SAeun8QTz6zeZghxEwt53QC4CLXv8+yJEEzn8uGQbAS0u3BzmSwLlqTCYAU/+XF+RIAufF8wYCcPPH+UGOJHD+eWY/rv9gXbDDCKhnf9ufVQWVwQ4joIZmxDB7XUmwwwioE/snYRt+XbDDCBjnyukA3PLJ+iBHEjhPnNE32CGodqAdUKWUUkoppZRqR3of0LbpOaBKKaWUUkoppQJCK6BKKaWUUkop1Y70PqBt0wqoUkoppZRSSqmA0A6oUkoppZRSSqmA0CG4SimllFJKKdWOdARu27QCqpRSSimllFIqILQCqpRSSimllFLtSUugbdIKqFJKKaWUUkqpgNAKqFJKKaWUUkq1I9ESaJu0AqqUUkoppZRSKiC0AqqUUkoppZRS7Ui0ANomrYAqpZRSSimllAoIrYAqpZRSSimlVDvSAmjbtAKqlFJKKaWUUiogtAKqlFJKKaWUUu1JS6Bt0gqoUkoppZRSSqmA0AqoUkoppZRSSrUjvQ9o27QCqpRSSimllFIqIDpsBVREugOfGmMGBXJZFTwDU6P53bA0LAILtpbzZX5Jk/mhFuGK0V3JjLdSVefmxSUFlDpchAhcOqoL3eJshFhgybYKvvAte9moLgxJi6Gytp57v9oUjLQOyBhD9jszKFi7nNDwCI677GaSuh3Vol3J9o18N+uf1LvqyBg0irHnX42IUFq4hUX/mU59rZPoxBQmXHEb4bZI3PUuFv3nWUq2b0TEwtjzryat75AgZHhgQ9JjuCSrCxYRvt1Uyid5e5vM79c5iouzutAt3sb0BdtYtsPeZL4tzMKjZ/Qjp8DOrOU7Axn6T2aMYd4b/2LrquWERkRwylW3ktK9d4t2C/73Cj8smk1NdRU3vvSxf7q9pIivZj6Bo9KONSqG0675CzEJyYFM4ZAMTInmguGpWAQWbqngy/Utt+f/G92FzHgr1bVuXswupNThYnS3WH7TN9HfrkuslQdmb2FvVS1XH51BclQ4HmNYtbuSD9bsbf60HUa/5CjOHtwZiwjZ2yuYt6msyfwQi3Dh8DQy4qxU17l5LWcX5U4XkWEWLh/VhYw4G8sL7Ly/pihIGRya/p2jmDIkBYsIS7ZXMHtDaZP5oRbhkpHp/jxfWb6TMoeLzHgrvxuWBnjvlff5uhJW7670LyfAtBN6YK9xMWNJYSBT+lGMMbzy3OOsXLaIiAgr1952Lz1792vR7t6bp1JeVkJ4hBWAvz4yndj4BL796hNef/FpEpI6A3DyWecz6dSzA5rDj2GM4d2ZT5GXu4TwCCuX3HAXGb36tmj33H03s6+8FLe7nl4DhnLB1FuwhITw8mN/o2jnDgCc1VXYoqK546lZgU6jXb1wz0WcctwgissqyTrvoWCH86P0TY7k7EEpWASW7rC3vp8alkpX3/b7eu4uyp31AEw8KoEx3WLxGPhwbRHrix3EWUP5/fA0oiNCAMjeXsGCrRX+9Y3rHsexPeLwGFhXVM2n64oDl2wQ6H1A29ZhO6CHg4iEGmPqgx3HT3Uo8YuIAGKM8QQorHYhAheOSOfJ+Vspd9Zz1+SerNpVye59tf4243rE43C5ueuLjYzKiGXKkFRezC5gZEYsoRbhvq83ER4i3Hdyb5btsFPqcLF4aznfbCzlijFdg5hd2wrX5rBv707O+/tMireuZ/F/p3Pm7U+1aLfov88x7uIbSe7Rl6+n301hXg4Zg0ax8PWnGT3lD6T1GcyGRV+zZva7jDzzUtYv/BKAc+5+Hue+Cr6afjdn3f4UYuk4gx5E4PLRXXl4zmbKHC7uP6UPKwrt7LQ3vOcl1S5mLN7BaQM6t7qOc4emkb+3OlAht4utq5dTXrSTKx97hd2b85n96jNcfO+zLdr1Gj6W4Seeyb+n/V+T6fPffJEBx05m0PiT2PHDSha88zKnXvOXQIV/SAS4cEQaT363jXJHPXfu354rG97bY3vE4ahz89cvNjEqoxPnDEnhpexClu2w+w80dOkUwbXHdqPQXkN4iPD1+hLWFzsIEeHm4zMZlBrN2j1VQcqybQKcMySFF5YUYHe6uOm47uTtqaKoqs7fZky3WJwuNw/N3cKw9BhOH5DM67m7qPcYvsgvITUmgrROEcFL4hAIcN7QVJ5btIMKp4tpJ/Rgze5K9lQ25Hl0ZhwOl5u/z97MiC6dOGtgZ15ZvpNd+2p57NuteAx0igjl9kk9WLunEo/xLjfhqASKKmuxhnWcfVZrVi5bxJ6dBTwz6wM2rlvLzKcf5qHprXeobrjjAXr1HdBi+jETTuTK6zvWNtyWH3KXULy7kHuef5ttG/J464XHmfbYSy3aXTHtfmyRURhjmPmPu1ix+Buyxk/mimn3+9u8//Kz2KKiAhn+YfH6J9m88PZ8Zt5/abBD+VEEOGdwCjOyC7E7Xfx5fGbL/VRGLA6Xh4fnbfXup/on8/qK3aREhzM8PYZHv91GbEQoVx/dlUfmbcVtDB//sJed9loiQoSbjuvOhmIHRVV19Eq0MTA1msfnb8ftMUSHhwQveRV0HXvPDqEi8h8RWSci74pIpIiMFJH5IpIrIl+JSBqAb/oqEVkF/Gn/CkTkchH5WETmAXNFJEFEPhSR1SKSLSJDfO3amn6viMwSkQUisl1EzhGRR0VkjYh8KSJhvnaPiMgPvuUfbyshEXlVRF4QkRwR2SAip/umh4jIYyKy3LeOq33TJ/ie+2PghzbW2V1E1ovIa8BaIMO3rrW+OC/wtZM2pk/wvaYficgWXy4XicgyX7teP/N9PKgeCTaKq2opqXbh9hiW77AzLD2mSZthXWJYvK0cgNxCO/1SfH+4DESEWrAIhIVYcHsMznpv/3tjiYPqOvfhDv8n2746m6PGTkJE6NyzH3XOahz2pkcgHfYyXDUOOvfsh4hw1NhJbF+VDYC9aCepvb2F/vT+w9m2YhEAFbt3kNZ3KAC2TnGE26Io2b4xgJkdXK/ESIoqaymuqsPtMWRvL2dkRmyTNiXVdRRU1GBaWb57go1YWyhrdlW2Mrfj2rRiMQOPPRERIf2o/tQ6qqmqKG3RLv2o/kTHJbaYXrprB90GDAMgo/8wNq1Ycthj/rF6JNjYW1Xn3Z6NYXmBnaFdmm3P6Z1Yss17ZDy3cB/9O7f8IjqqWyzLC7yd0Tq3YX2xAwC3MeyoqCHOFnaYM/lpusVbKamuo8zhwm1g5c59DEqNbtJmUGq0P7fVuyvpnRQJePPcWuak3tPap75jyUywUVJdR6kvz9zCfQxOa/o+D06LZqnvgML3u/bRJ9mbp8tt/J3NsBDBNEo3zhrKwJRo/+ejI8tZPJ/jTjwVEaHPgMFUV1VSXlpy8AWPUKuXLWT0hJMREXr0HYSzuhJ7Wct8bZHe7dnjduOur29RCTLGsGLRPEaOPzEQYR9Wi1ZspszuCHYYP1q3eCul1a6G/dSuSga2sp/KKWy0n/JtvwNTo1m5qxK3x1DmdFFa7aJbvJXKWrf/IHKt21BUVUus1VvrOqZ7HPM2leH2bfhVHfi7mTr8OnoHtC/wL2NMf2Af3o7ls8C5xpiRwMvAg762rwDXG2OGtrKeEb5ljgfuA1YaY4YAdwKv+dq0NR2gFzAROBN4A/jGGDMYcAKniUgi8FtgoG/5Bw6SV3dgNHAa8IKIWIErAbsxZhQwCrhKRHo0iv9GY0yfA6yzN97XaiCQBQwDhgKTgcd8HfVz2piOb9o1QH/gEqCPMWY0MBO4/iD5/GxxtjDKHC7/43JnfYsvl3G2MMp9bTwGnC4P0eEh5Bbaqa338PgZ/fjH6X35an0JjiNkx+aoKCEqvmH4ZGRcEtUVTf+YV1eUEBWf5H8cFZeEw9cmPj2T7au8HZCtKxZQXe6dntC1JztWL8XjdlNZsofSHZuoKu9YQ10SIsMorW54z8uqXcQfYodCgItGduG/ubsOU3SHT1VZaZMhszEJSVSVteyAtiU5oycbc7wHGjbmLKKuxoGzcl+7x/lzNN+eKxwu4m2hzdqEUuZsuT03NiojtsWwa/AOvR6SFkP+3o5X/QSItYZR4WwYrFJRU09ss8924zYeAzX1HqKOsIpAnDXUPxwPoMLpIs7a9H2OtYVS0Wy/vT/PzHgrd07qyR2TevL293v8HdJzhqTwUd5ejoRhPGUlxSQlp/ofJyanUFbS+tDwfz12H9OuvpB335iJadTjXrpgHrde9TueuO82SvbuOewx/xwVZcXEJzWMSIlL7ExFWet/W6bfexO3X3Y6EbZIhh99QpN5m39YRUxcPJ3TMw5rvKptsdZQKpwN+2l7Tb2/s7hfJ2tok/3U/u03ttF0gIoaV4tl422hdIm1sr2iBoDkqHB6Jti4YVw3rj0mg4xY6+FKrcOQAP4caTp6B7TAGLPI9/sbwG+AQcBsEfke+CvQVUTigDhjzHe+tq83W89sY8z+stK4/fONMfOARBHpdIDpAF8YY1zAGiAE+NI3fQ3ezqQdqAH+LSLnAAc7FPaOMcZjjNkIbAH6AScBl/ryWgok4u1UAiwzxmw9yDq3G2OyG+X4pjHGbYwpAubj7dS2NR1guTFmtzGmFtgMfN0sxyZEZKqvipvz4osvHiS0w6t7QiTGwLRP8rnjs/Wc1CeJpKiOWRlpb+Mv/TPr5n/Ghw/dgKvGiSXU+wegzzEnERWXxEcP30j2Oy/SuWf/DjX89uea3DeJVTv3Nenk/FpM+P1UCvNX89pf/0jh+tVExyf9ot7b/Xok2Khze9jVaBg+gEXgqjFdmbeplJLqX9/7/0uyvbyGh+Zu4bFvt3JSn0RCLcLA1Giqat0U+L60/lLccOcDPDHzbf7+5Evkr1nJd7M/A2Dk2PE898YnPP7SWwwZOYbnHr03uIG2o+vufZKHXvmIelcd69fkNpmXs2A2Wb+A6qdqXXiIcFlWFz5au5da34g0iwiR4SE8s3AHn/xQzCVZaQdZi/ol6+jngDYfg1QJ5Bljjm480dcBPZCfe5JYLYAxxiMiLtNw6NIDhBpj6kVkNDAJOBe4Dm/FtC3N8zJ4D2Bcb4z5qvEMEZlwiPG3S44+nkaPPbTyOTHGvAjs73ma5e+s/VlPXuF0kRDZ0GmMtzU9Mre/TXxkGOXOeizirYJU1bk5MzOWtXuqcBuorHWzqdRB93hbh/1y+sO3n7B+ofdtTsrsTXWjyqSjooSouKQm7aPikvyVTfBWRCN9beJSMzjlRu8gAHtRIQVrlgNgCQlh7PlT/ct88ugtxHbuWOfBljlcJDY6UJAQFUa589Des97JkfTtHM3kvklYQy2EWoSaeg9vr9x9uML9WVbO+ZjV334OQGqPvlQ2qhhUlpUQndByqG1bouMTOevGewCoq3GyYflCrFHRB1kqsJpvz3G+7bZpm3oSbN4qYOPteb+2qp+XjEynqKqOuRvLWszrKOw1/8/encdHVV5/HP98EwIJBMK+74qAIIiA4lK1Lm1dq9altdali63aatWqtdqqrdpWrXXrr0VbFbvY1qp13zdwQWQRAQVFdoEgS8Iasp3fH/dOMglJwJqZm7lz3rzyIvfOneQ8ucmdee55nvNU0DEp49sxvxWl9X63E8eUlgXtz2+V06KnCzSkpKyyTma7Y0EeJWV1z3Pptko6tg32J85z/XYWbypne1U1vTq0YXDnAkb2KmTPHruRl5tDfqsczhzbmwda0GiHZx/7Ny89/V8AdttjT9Z+Wpu1XPdpcU1BoWSJfQVt23HQYV9h4YJ5HPKlY2lfVPv25fCjTuBvd9+R4ug/u9eefpg3nw8KoQ0YMpwNSRneknVr6NhEEbS81m0Ytd8XmDNtCsP33heAqqpKZr/1Gpf/7t7UBu6aVFpWd6RZUX5wPUq2sayyznUq8fdbGu5P6JifV/PcHMHZ4/ow85ONzEmao19aVllTaGx5SRlm0K51bsZd9z6TTExNpklLv23eX1Kis3k6MBXoltgnKU/SCDMrAUokHRQe+80mvuaUxONh526tmW1sYv9OSSoEiszsaeBiguGsTTlFUk44t3IwsAB4DjgvaU7pHpL+19n5U4DTwnml3YCDgWlN7I/ckvXb6F7Yhq7t8sjNEeP7FzG73ty+d1du4oCBnQAY27eIBWHxmfVbKxgWzh9rnSsGdy6oU+ykpdnz0OM48eq7OPHquxiw9/4snPoSZsaaRfPJy29H26LOdY5vW9SZvPy2rFk0HzNj4dSXGDBqAgDbNgZzpKy6mnef/ifDDz4agMryMiq2BxmET96fiXJy6NS7fxpbuXOL1m2lZ/s2dCtsTW6OmDCgEzOW79pQ0v97fRkXPfI+P370ff4xYyVTFq1vsZ1PgDFHHM9Z1/+Js67/E7uPPYB5b7yAmbFy4Qe0aduuwbmejdm6qRSrDu4ov/3EPxl58JdTFfb/bMmGbXQvbE2XtnnkSozvt+Pf8+yVm9h/YPDme2zfDnWKSQkY269DzRzJhK+O6E5BXi7/frdlD1NcXlJGt3at6dw2j1zBmD4dmFtcd7jwvNWbGR/OeR7Vqz0L12beHLJlG7bRreY8B+dxzqq653nOqs3s1z9o5969O/BhOI+3S9s8csI3Z50KWtGjsDXrt1bwxPuf8otnF3Lt8x9z3zuf8OHaLS2q8wlBpdqbJ/6Dmyf+g30PPJTJLzyNmfHh+3No266QTl3q3kSsqqpkY2lwra6srGTG1Cn0GxiUVkieLzr9rcn07T+IluaQo7/GlbdN4srbJjFqv4OZ9uqzmBmLF8yloF0hRZ3rtnf7tq0180KrqiqZN/1NevQZUPP4gtnT6dF3QJ2hvC79lpeU0bVdHp0LwutU7/bMq1fUbV7xZsb1rb1OfRRep+at3syY3u3JpRK/oAAAIABJREFUzRGdC/Lo2i6PZRuC9xynje5J8ebtTF60oc7Xmrt6E7uHc927tsujVY7i3fl0TWrpGdAFwAWS7iUowHMnQUftDklFBPHfBswDzgHulWTUDh9tyLXhce8RDJU9ayf7d0V74LFwLqeAS3Zy/DKCjl8H4AdmVibpzwRDXWdKEvAp8L/WYn8U2B+YTZBdvdzMVktqbP+ONePTrNrgHzNX8uODByKJNxZvYOXG7Rw/ojtLN2xj9spNvL5oA9/Zry83HDWELeVV3D11OQCvLFzP2eP7cN2Xg+VL3lhSUjMJ/nsT+rJHt3YUtmnFTccO5fF5a3h98YZG40i3fiPHs2LuOzz08+/QqnUbvnDWxTWPPXr9Dznx6rsAOOD085k86fdUlW+n74hx9B05DoCP33mVD157EoCBYw5kyAHBkKZtG0t57s6rQTm069iFQ875SZpbtnPVBvdPW8EVhw8mR+K1hev5pLSMr43uyeJ1W5m5YiODuxRw8SGDaNsmlzF9O/C10T254okFUYf+uQwevS+LZ0/jz5edTV7rNnzlu7XnZtLVP+Cs6/8EwGv/vIcP3nqFivLt/Omi09nrkK9w4ElnsvyD2Ux56F6E6DtsLw4/84dRNaVR1QYPzlrFjw8eQE7497xq43aOH9GNpevLmL1qE68v3sB39u3D9UftzpbyKu6ZWrvUxpBubdmwtaLOKIaOBa04Zs9urNq4nauPHAwEf/uvL255hWqqDR6ZU8y5E/qRI5i2rJTiTeV8ZWhXlpeUMa94M28vK+X0fXrxs8MHs7W8qk4n6+ojdiO/VQ65OWJkz0ImvrW8TmXKlqLa4KHZqzn/wH6IYLmZ1ZvKOXp4V5ZtKGPu6s28tbSEM8f15hdH7sbWcBkWgMFdCjhyj35UVRsG/Hv26ox8MzpmvwOZOe0NLjzzBFq3yef8y66peeyy75/OzRP/QUV5BTf89IdUVVZSXV3NXvvsyxFHnwjAM4/+k+lvTSY3N5fC9h04//JrI2rJrhkxdn/mzXiL635wKnlt8jnjwp/VPPbrH5/FlbdNYvv2MibeeAWVFRWYVTNk5D4c9JXatzMzprzI2C8cEUX4KTHp12fzhbFD6NqxkIXP/opf/elpJv235RWHq6/a4JG5azh3Ql8kmLa8lOLN5Xx5aBdWlJQxr3hLcJ0a04srDxvE1vIq/jozuNFbvLmcd1dt4vJDB9Z8HSOYOjGuXxErN27nkoODzubT89cyf80Wpi0r5bS9e/GTQwZSZcaDs1r2jcTmIE+BNkrJE+Fd6km6n2CN0v9EHUszsu99ziG4meaeU0dy0ysfRx1G2lz+xeBu/Tf/+m7EkaTP378VVJq95+2lEUeSPt/bL8hSnPvQvIgjSZ+7TxkBwCWPz484kvS59fhh/OjRD6IOI63uPHE4s5dnVsXsz2t0v/a88EF8K/I25MjhXSkY0/JuyqXKtlnBTepLM/zG7Gfxu+OGQoYMbl30aVnaOlmDu+VnxM8koaVnQJ1zzjnnnHMuo9RffsjV8g5oiki6Cjil3u6HzOzsz/E1uwAvNfDQ4Wa26+s4OOecc84551wEvAOaImZ2A7VrlDbX11xHsI6nc84555xzroXyBGjjWnoVXOecc84555xzMeEZUOecc84555xrTp4CbZRnQJ1zzjnnnHPOpYVnQJ1zzjnnnHOuGfk6oI3zDKhzzjnnnHPOubTwDKhzzjnnnHPONSNfB7RxngF1zjnnnHPOOZcW3gF1zjnnnHPOOZcWPgTXOeecc84555qRj8BtnGdAnXPOOeecc86lhWdAnXPOOeecc64ZeRGixnkG1DnnnHPOOedcWngG1DnnnHPOOeealadAG+MZUOecc84555zLQpI6S3pB0kfh/50aOOaLkt5N+iiTdEL42P2SFic9tvfOvqd3QJ1zzjnnnHOuGUnp+/icfgq8ZGZDgJfC7TrM7BUz29vM9gYOA7YCzycdclnicTN7d2ff0DugzjnnnHPOOZedvgpMCj+fBJywk+NPBp4xs63/6zeUmf2vz3UuwX+JnHPOOedcOmTE5MqVJeVpe3/cu2Pr//lnIqnEzDqGnwvYkNhu5PiXgVvN7Mlw+35gf2A7YQbVzLY39T09A+qcc84555xzGUrSuZKmJ32cW+/xFyXNbeDjq8nHWZCZbLTjLKkXsBfwXNLuK4FhwHigM3DFzuL1KriuWVz6xIKoQ0ir3x03NKva/LvjhgJwyePzI44kfW49fhgAP3v6w4gjSZ8bj94DyM42n/vQvIgjSZ+7TxmRVecYgvP848ey5/oFcNtXh3HZk9nzOgVw87HZ+dpcMOaHEUeSPttm3RV1CLssneuAmtndwN1NPH5EY49JKpbUy8xWhR3MNU18q1OBR82sIulrrwo/3S7pPuAnO4vXM6DOOeecc845l50eB84KPz8LeKyJY78BPJi8I+y0JobvngDM3dk39A6oc84555xzzjUjpfHf5/Qb4EhJHwFHhNtIGifpzzXtkQYC/YDX6j3/75LmAHOArsD1O/uGPgTXOeecc84557KQma0DDm9g/3Tgu0nbS4A+DRx32Gf9nt4Bdc4555xzzrnmlBG1eqPhQ3Cdc84555xzzqWFd0Cdc84555xzzqWFD8F1zjnnnHPOuWbkI3Ab5xlQ55xzzjnnnHNp4RlQ55xzzjnnnGtG8hRoozwD6pxzzjnnnHMuLTwD6pxzzjnnnHPNSD4LtFGeAXXOOeecc845lxaeAXXOOeecc8655uQJ0EZ5BtQ555xzzjnnXFp4BtQ555xzzjnnmpEnQBvnGVDnnHPOOeecc2nhGVDnnHPOOeeca0a+DmjjPAPqnHPOOeeccy4tPAPqIjW0W1tOGNmDHMHby0p5eeH6Oo/n5ojT9+5J3475bCmv4q8zVrJhWyUAh+3emf36F1Ft8N+5xSz4dCsd81vxjTG9KGyTC8DUpSVMWVwCwJf26MKE/kVsLq8C4On5a5m/ZksaWxtIZ5sTDhncieNHdOcXzy1kS9j+qAzr1o4T9upOjsTUpSUNt39ML/qF7X9g+ko2bKugbV4OZ4/vQ7+OBbyzvJRH5hTXPOfcCX3p0KYVORKL1m/l4feKsXQ3rAlmxuxH72b1BzPIzWvDuG9cRKd+u+9w3IblC5n+4G1UVZTTc/hYRp94LpJ47/F7WTVvGjm5eRR27cnYb1xE64JCtqwv5vnfnE/7bn0A6DxgKPucekG6m9egVLW5uqqSGf+8k5JPPsaqqug//jCGHXFKBC1s2ogehZw2pic5gtcXlfDsgrV1Hm+VI87Ztw8DOuWzZXsVd09dwbqtFezbv4gvD+1Sc1yfonyuf2ERK0rL0t2EXZKq87xsxqt8+PIjNc8vXbWEwy+9jY59BqexdTsa1r0dJ+3VHSGmLivhpY92vH6dsU8v+hbls7WiiknvrGR9eP06Z3wf+ncqYNqyUh5Oun6N6d2eI/fogiTeL97ME+9/mu5m7cDMmPvfeyj+YDq5rdsw5us/pmPf3XY4rmT5Qmb983aqKrbTY/g4Rp7wPSRRvnUT0x+4iW0b1lDQqTvjzryC1m0La563YdlHvH7nZYw94zJ6jz4QgPefvJ/iD6YDsMcRp9FnzBfS09hQul+bDxrYkQMHdaTa4IPiLTz5QfTnfVf96ZpvctTBI/l0/SbGnXJj1OG0WL4OaOMiz4BKGihp7i4cc3rS9jhJd6Q+us9H0v2STo7g+14r6Sef8TmbG9mfsjYIOGmvHtzz9gpuemUxY3q3p0dh6zrH7NeviK0V1fz65cVMXrSBY4d3A6BHYWvG9G7PTa8u4Z6pKzhprx4IqDLj8ffXcPOrS7hjylIOHNipztecvGgDt05eyq2Tl0bS+YyizR3zWzG0WzvWb61IY0sbJuCkUT24e+oKfvvyIvbp02HH9vcvYltFFTe+tIjXPl7PsXsG7a+sNp6Zv5bH563Z4etOmr6SW15bwk2vLqawdStG926fjubsstUfzGDzpyv58s8mss+pFzDrP39s8LhZ//k/9jn1h3z5ZxPZ/OlKiufPAKDHHntz5OV/4MjL76SwWx8WvPifmucUdunJEZfdwRGX3dFiOp+QujavePd1qqsqOPLyuzjs0t+z+M1n2bK+uMGvHRUBp+/TizumLOWaZz9mfP8ierVvU+eYAwd1ZGt5FVc/s5AXP1rHSaN6ADBtWSm/emERv3phEfe+/QnrtlS02M4npO489x97aM3v9fhvXkK7zj0i73wKOHlUDya+tYLfJK5f7etevyb0L2JreRU3vLSIVz9ez3Ejaq9fT89fy2P1rl9t83I4fkR3/vDmcn77ymLat2nFkK5t09WkRq2ZP4Mta1dy+JUTGX3KBbz3cMPn9b2H/8joUy/g8CsnsmXtStbMnwnARy/9h25DRnP4lRPpNmQ0C1+uvWZZdRUfPHU/3fYYU7Ov+P13KFnxMYdccjtfuPAWPn7tUSrKtqa2kUnS/dq8W5cCRvQs5JbXlnLzq0t49eP1ZJK/PjGVr17wh6jDcBks8g7oLhoI1HRAzWy6mV0YXTh1SfJM8v+gf6d81m2pYP3WCqoMZq3cxIiehXWOGdmzkOkrSgF4b9UmhnQLXphH9Cxk1spNVFUb67dVsG5LBf075bNpexWflG4HYHuVUbx5O0X5Lef0RNHm40d054kWcme1f6d81m4pr23/JxsZ2UD731me1P7wzVh5lbF4/TYqq3fMbW6vrAYgR8Fd6pZm1dypDBh/GJLoMnAYFdu2sK207huObaXrqSjbSpeBw5DEgPGHsXLOVAB6DNuHnNzgLnrnAUPZVrJ2h+/R0qSqzZKo3F5GdVUVVRXl5LRqRV6b6N+wJxvUuYA1m8tZu6WCKjPeWV7K6D51b4rs3bsDby0JsiEzVmxkePd2O3yd8f2Lav4WWqp0/G4vnzWZvmnOhjVkQHj9Wpd0/dqr3vVrr16116/ZKxu4flXVvX51adeaT7eU14xM+fDTLS3iBtrquW/Td+wXkUTnAcF5LdtY97yWbVxPZdlWOg8IzmvfsV9k9dzgvK6eN41+4w8DoN/4w1g19+2a5y16/Ul67XUAbQqLavZtKl5Ol91GkJObS6s2+XToNbCmM5sO6X5tPmBgR15euJ6q8PVsc8Qjkz6rN2Z+zPrS9N0gyFRS+j4yzU47oGH2cb6kv0v6QNJ/JLWVdLikWZLmSLpXUpvw+CWSbgr3T5O0e7i/TiatoYxb+L2mSJoZfhwQPvQb4AuS3pV0saRDJT0ZPqezpP9Kek/SVEmjwv3XhnG9KmmRpEY7rI21MXxsrKTXJM2Q9JykXuH+VyXdJmk6cFETP8KDJb0ZxnBy+FxJulnS3PDndFq4v6Zd4fZdks4OP/+NpPfDdt4S7usm6WFJ74QfByZ93z0barukS8LvO1fSjxv4WSj8vgskvQh0b6Jtn0tRfitKttVm5UrLKnfoLHbIb0VJOMSl2mBbRTXtWueGz62sOa6krGKH53YqaEWfonyWltRmDw4c1IlLDxnIaaN7UpCX/vsv6W7ziB6FlJZVsmrj9lQ16TMpys+r14ZKigryGj2m2qCsMmj/zpw7oS+//PIQtldWMXvlpuYN/HPaVrqOgo5da7YLOnahrHRdnWPKStdRUJR0TFFXttU7BmDJ2y/Qc/jYmu0t64t58ZaLeO2un7L243kpiP5/k6o29xl9IK3a5PPUNWfyzC+/zZBDT6R1u+jfsCfrWJBXZ8RBydYKOhW0qndMK9aH14LE33lhvd/z8f2KmLasZXdAU/m7nbBi1hT67XNIM0b9vynKz6sZcglQsq2Sovwdr18bPsP1a+2WcroXtqZzQR45gr16tadjvWtiFMpK11HQsVvNdkFRw+c1v86571pzzPZNJeR36AxAm/ad2L4puNmyrXQdq+dMZeABR9X5Wh16D2LN/JlUlm9n++aNrF04h20l6btxmu7X5m7tWjO4cwEXHtSf8w/oR7+i/FQ1zbkWaVdTQ0OB75jZG5LuBS4Bvg8cbmYfSnoAOA+4LTy+1Mz2knRmuO/YXfw+a4AjzaxM0hDgQWAc8FPgJ2Z2LAQdtaTnXAfMMrMTJB0GPADsHT42DPgi0B5YIOmPZtbYOMT6bTxf0u3AncBXzezTsKN4A/Dt8DmtzWzcTtrUCzgojOVx4D/ASWGMo4GuwDuSJjf2BSR1AU4EhpmZSeoYPnQ78Hsze11Sf+A5YHhjbQdGAecA+xGMOHlb0mtmNivp250Y/iz2BHoA7wP37qSNLU7rXHHWuD48NndNTXbszSUlvPBh8OL4lWFdOX7P7vxr9uoow2xW9duclysOH9KZu6euiDq0tLh76gpa5Ygz9unNkG5t+fDT+N2dnf/Cv8jJzaXf2EMByO/QmaN+cS9t2nVgw/KFvHXvDRx5xR/Iy29ZGcHPo36b1y/9ECmHY66bRPnWzbx250/pvsfeFHbtGW2gzWxQ5wLKq6pZ2UJuHqVa/fOcsH7pAnJbt6Go14BoAkuxbRXVPDS7mLPG98YMFq/fRtd20XdAm5OkmgzN3P/ew/Bjz0I5dW8Adx86hpLlH/H6nZfTul0HOg0YtsMxmaqh9yM5Em1b53LH68vo1zGfb43rxY0vLY44UufSZ1c7oMvN7I3w878BPwcWm9mH4b5JwAXUdkAfTPr/958hnjzgLkl7A1XAHrvwnIOArwGY2cuSukjqED72lJltB7ZLWkPQoWrs3Xj9Nl4IPAuMBF5QcPXMBVYlPedfuxDff82sGnhfUo+kmB80syqgWNJrwHhgYyNfoxQoA/4SZkgTWdIjCDKdieM6SEqMGWmo7QcBj5rZFgBJjwBfAJI7oAcnxbZS0ssNBSTpXOBcgIkTJ0Kvz353urSsss6d3qL8VpSWVdY5ZmNZJR0Lgv05goK8HLaUV4XPrf317ZifV/PcHMHZ4/ow85ONzFldm2hPHuIydWkJ39m372eO+fNKZ5u7tM2jc9s8Lj1kYM33uvjgAdw+ZSmbtkcz3Ke0rKJeG1pRuq2iwWMS7c9vlbPLhZMqq425qzcxsmf7yDugH7/+FIvfeg6ATv2H1BlauK1kHflFXeocn1/UhW2lSceUrqUg6Zgl015k1bx3+ML515P4m89tlUduq+D3qVO/3WnXpSeb13xCp/5DUtaupqSjzctnvhYO22xFfvuOdBk0nJLlH7WoDmjJtgo6t639O+/Ytm7mLDimks4FQbY/8XeefI1qydnPdJznhOUzJ9NvzMGpaMZnVlpWN5MdXKd2vH51+ozXr3nFm5lXHFy39x9QRLVFU0Jt8etPsfTt5wHo2G9InQzkttKGz2tZnXO/tuaYNu07UrZxPfkdOlO2cT2tC4P75qUrFjLjr7cAUL5lI8XzZ6CcXHrtNYE9jjiVPY44FYAZf7uFwrC4Wjqk+/1IaVkl760KRuosLynDDNq1zo28SKBz6bKrt5fqXw1LGjyq4eMTn1cmvp+kHKB1/ScBFwPFBJnBcY0c81kk3zquoukOd/02GkGWcJ6Z7R1+7GVmX0o6Zleq2CTHsLNR2jU/o1A+gJlVAvsSZE+PJegYEx47ISm+PmaWuMJ9lrZ/ZmZ2t5mNM7Nx55577v/0NZaXlNG1XR6dC/LIVVAJcN7quiOz5xVvZlzfYJ7IqF7t+Wht0KmYt3ozY3q3JzdHdC7Io2u7PJZtCIa2nDa6J8WbtzN50YY6X6t9m9phUHv1as/qTenPLKSzzas3lXPt8x9zw0uLuOGlRZSWVfL7ydF1PiFof7d2rencNmx/nw7MLa7X/tWbGd+vtv0L1zbdkWydq5pzmyMY3qOQNRGc2/p2O+iYmiIqvUdOYOk7L2NmrFsyn7yCthQUda5zfEFRZ/Ly27JuyXzMjKXvvEyvkROAoNDLhy8/wgHf/TmtWtcO1dq+uRSrDs7n5rWr2bx2Je26RNcRS0eb23bqxqcL3wOgcnsZ65cuoH2P9N9MasqSDdvoXtiaLm3zyJUY369oh2Hhs1duYv+BwZvysX071CmKJmBsvw4tdv5nOs4zgFVXs2L26/RtIR3QZSVldK1//ap3/Z6bdP0a3bv2+t2UxNDrgrwcDhrUialLd/YWKzUGHXQMh156O4deeju9Ru7HihmvYGasXzqfvPy2NUNqE/I7dKZVflvWLw3O64oZr9Bz5H4A9ByxL8vfCe5fL3/nZXqO2BeAI676M0deHXz0HnUAo076Ab32moBVV1G+JbgHX7pyMRtXLalTpCjV0v1+ZO7qTewezg/u2i6PVjnyzqfLKrvaKekvaX8ze4ugGNB04PuSdjezhcC3gNeSjj+NYN7macBb4b4lwFjg38DxBNnO+oqAFWZWLeksgowjwCaCoaQNmQJ8E/hVODR3rZltrH8X9X9o4+vAAqBbYr+kPGAPM/u8E62mEPz8JgGdCbKOlxH8TPYM59MWAIcDr4dZzbZm9rSkN4BF4dd5HvgRcDOApL3N7N2dfN/7Jf2G4D3OiQTnLtnkpNi6Ewzj/cfnbG+Dqg0embuGcyf0RYJpy0sp3lzOl4d2YUVJGfOKt/D2slJOH9OLKw8bxNbyKv46M0hAF28u591Vm7j80IE1X8cIhq2N61fEyo3bueTg4OKeWG7l2D270adDPgZs2FrBQ++lf/htutvc0lQbPDKnmHMn9CNHQcXP4k3lfGVoV5aXlDGveHPQ/n168bPDB7O1vIoHZqysef7VR+xGfqsccnPEyJ6FTHxrOVsqqvjOvn1plSuEWLh2K29G9AauMT33HMfqD6bz3A3nktu6DeO+Xjtt/MWbL+SIy4Ki3mO+dl7NUhU9ho+tmQ/37iMTqa6sYMoffw7ULrey9uO5zHvm7+TktkISY06+oMXMh0xVm3c76BimP3g7z//mfAAG7HsERb0Hpbl1Tas2eHDWKn588AByJN5YvIFVG7dz/IhuLF1fxuxVm3h98Qa+s28frj9qd7aUV3FP0lD5Id3asmFrBWu3RF+5emdSdZ4B1i6aR9uO3VpMdrva4OH3ivnB/v1qlupYvamco4Z1ZVlJGfNWb2bq0lLO2KcXVx0+mK0VwTJSCb84cjfatMqhVY7Yq1chf3xrOcWbyjlprx70LgqqJD+3YC2ftoDz3n34OIo/mMFLv/4+uXltGPP12jIar/7uIg699HYARn3tB+EyLOV0H7YP3YcF53XIYV9j+gM3sWzaC+EyLJc3+f2qq6p4/Q9XApDXpoB9Tr+kpjhVOqT7tXnaslJO27sXPzlkIFVmPDgrs6YDTfr12Xxh7BC6dixk4bO/4ld/eppJ/31r50/MMplYHChdZDsZ6iFpIEHGbTpBB/J9gk7L/sAtBJ3Yd4DzzGy7pCUEQ1OPIsjCfcPMFobDTx8j6Fg9C1xgZoXh13/SzEaG8z4fJsg+Jh+TRzC/sQtwP8GQ0Z+Y2bGSOhPMURwMbAXONbP3JF0LbDazRMGeucCxZrZkV9toZlvD4cB3EHSOWwG3mdk9kl4NY5jexM/u/rBt/wm3N4ftEXBT+DMy4Hoz+1d4zE0EHcPFwGaCeaPPhT+7fIKO4y1mNklSV+APBPM+WwGTzewHTbVd0iXUzmH9s5nd1kBsdwJHAsuACuDeRBsaYZc+saCJh+Pnd8cNJZva/LvjhgJwyePzI44kfW49fhgAP3v6w50cGR83Hh3MesjGNp/7UMsp4JRqd58yIqvOMQTn+cePZc/1C+C2rw7jsiez53UK4OZjs/O1uWDMDyOOJH22zboLdj6isEUo2VaVtvH0HQtyM+JnkrCrGdBKMzuj3r6XgMbGR9xsZlck7zCzYmBC0q4rwv1LCOZZYmYfERTKqX9MBXBYve/xavjYeuCE+gGY2bX1tkc2EmtCQ20kzCjuMP7HzA7dydfDzM6ut10Y/m8EGc/LGnjO5UBDtwr3beDYtQRZ5vr7r623PTLp81uBWxt4TnJs2XMlc84555xzrpkpM/rJkYhHiTHnnHPOOeeccy3eTjOgyRnKXWFmAz9HPCkVLmfyUgMPHb4LGdKmvu5VwCn1dj9kZjf8r1/TOeecc845l5l8DmjjmrUyaktnZuuoXSO0Ob/uDQTrgzrnnHPOOeeca0RWdUCdc84555xzLtU8Ado4nwPqnHPOOeeccy4tPAPqnHPOOeecc83JU6CN8gyoc84555xzzrm08Ayoc84555xzzjUjXwe0cZ4Bdc4555xzzjmXFp4Bdc4555xzzrlm5OuANs4zoM4555xzzjnn0sI7oM4555xzzjnn0sKH4DrnnHPOOedcM/IRuI3zDKhzzjnnnHPOubTwDKhzzjnnnHPONSdPgTbKM6DOOeecc84559LCM6DOOeecc84514zkKdBGeQbUOeecc84551xaeAbUOeecc84555qRPAHaKJlZ1DG4zOe/RM4555xzLh0yomtXVpm+98f5rTLjZ5LgQ3Bdc1BUH5K+H+X39zZ7m73N3l5vs7fZ2+xt9jan9SMj5LdC6fqIuq2flXdAXaY7N+oAIuBtzg7Z1uZsay94m7OFtzk7eJud20XeAXXOOeecc845lxbeAXXOOeecc845lxbeAXWZ7u6oA4iAtzk7ZFubs6294G3OFt7m7OBtdm4XeRVc55xzzjnnnHNp4RlQ55xzzjnnnHNp4R1Q55xzzjnnnHNp4R1Q55xzzjnnnHNp0SrqAJz7rCS1BS4F+pvZ9yQNAYaa2ZMRh5YykvYA/gj0MLORkkYBx5vZ9RGHllKSCgjO84KoY0k1STcB1wPbgGeBUcDFZva3SANLIUmnAM+a2SZJVwP7ANeb2cyIQ0spSblAD5Jeg81sWXQRpZak3YAVZrZd0qEEv9sPmFlJtJGllqSDgCFmdp+kbkChmS2OOq7mJqlzU4+b2fp0xZJukgYBPwIGUvfv+fioYkoVSSc19biZPZKuWFzm8yJELuNI+hcwAzgz7Iy1Bd40s70jDi1lJL0GXAZMNLMx4b65ZjYy2sgqK9gDAAAgAElEQVRSR9JxwC1AazMbJGlv4JdxfGEHkPSume0t6UTgWOASYLKZjY44tJSR9J6ZjQrfqF8P3Az8wsz2izi0lJH0I+AaoBioDnebmY2KLqrUkvQuMI7gTfrTwGPACDM7Osq4UknSNQRtHmpme0jqDTxkZgdGHFqzk7QYMEBAf2BD+HlHYJmZDYowvJSSNBv4CzCH2r9nzOy1yIJKEUn3hZ92Bw4AXg63v0jwHuzYSAJzGckzoC4T7WZmp0n6BoCZbZWkqINKsbZmNq1eMyujCiZNrgX2BV4FMLN3w7vNcZW4Hh9D8Ea1NP6/1lSF/x8D3G1mT0mKdVYfuIigU7Iu6kDSqNrMKsObK3ea2Z2SZkUdVIqdCIwBZgKY2UpJ7aMNKTUSHUxJ9wCPmtnT4fZRwAlRxpYGZWZ2R9RBpIOZnQMg6XlgTzNbFW73Au6PMDSXgXwOqMtE5eHQTIOa4V3bow0p5daG7Uy0+WRgVbQhpVyFmZXW2xfnIRtPSpoPjAVeCofslUUcU6p9ImkicBrwtKQ2xP91aTlQ//c67irCG4ZnAYmpEnkRxpMO5RYMMUtcs9tFHE86TEh0PgHM7BmCTFmc3S7pGkn7S9on8RF1UCnWL9H5DBUTZL6d22WeAXWZ6BqCOXL9JP0dOBA4O9KIUu8CggWfh0n6BFgMnBFtSCk3T9LpQG44z/dC4M2IY0oZM/tpOA+01MyqJG0Bvhp1XCl2KvAV4BYzKwnvpF8WcUyptgh4VdJTJN04M7Nbowsp5c4BfgDcYGaLw5EMf404plT7d3hzpaOk7wHfBu6JOKZUWxnO5U7MW/8msDLCeNJhL+BbwGEkDakPt+PqJUnPAQ+G26cBL0YYj8tAPgfUZSRJXYAJBPNMpprZ2ohDSovwLnqOmW2KOpZUC+f2XgV8ieA8Pwf8ysximRUMC9Mcw47FLOLcMUFSJ6Afddsc2yJE4dzAHZjZdemOxaWWpCNJun6Z2QsRh5RSYTGia4CDw12TgetiXoRoIcFw1PKoY0mnsCDRF8LNyWb2aJTxuMzjHVCXMXY2rCWOb1olXdLU43HvnGQTSU8TDLmtX8with0TSb8iGL3wMbXDq83M4pw9AEBSIYCZbY46llSRNIcmhs3HufBSgqQO1L25EtvOWDaS9F/gXDNbE3UszmUSH4LrMsnvwv/zCaoLzia4szwKmA7sH1FcqZQoWjEUGA88Hm4fB0yLJKI0kfQEO755LSU41xNjmAntmw1vyOs5laCoWNZkDySNJBh+2jncXktQ0XtepIGlRqIq5gXh/4lht2cQ7/ncSPo+cB3BTaVqgtcqAwZHGVcqNHKtrhHXyuWhjsB8Se9Qd0h97NosaRMNn2cR3DjskOaQXAbzDKjLOJIeAa4xsznh9kjgWjM7OdrIUkfSZOCYxNDbsJriU2Z2cNPPzFySbge6UXeeyUaCF8AOZvatqGJLBUm/BV4ys+ejjiVdJD0MnJdN2QNJbwJXmdkr4fahwI1mFttiLZJmJZaPSto308xiW6xF0kfA/tkwPUTSIU09HsclSRIaa3uc2+xcc/AMqMtEQxOdTwAzmytpeJQBpUEPIDlLVB7ui7MDzGx80vYTkt4xs/GS4pgtmgo8KikHqCA77ir/GpglaS4xzx4kaZfofAKY2atZUCFVkg40szfCjQOIf7Xjj4GtUQeRDsmdLUmtgT3CzQVmVhFNVOlhZq9J6kEwQglgWjbcUJM0mrpzQN+LMh6XebwD6jLRe5L+TN1Ke3G/+D0ATJOUmOh/AjApwnjSoVBSfzNbBiCpP1AYPhbHIZu3Egwjn2PZMzRlEvBb6s17jblFkn5O3eGoiyKMJx2+A9wrqYjgxsoGgqqwcXYl8Kakt6l7c+XC6EJKrTCbPwlYQnCe+0k6y8wmRxlXKkk6FbiZYL1qAXdKuszM/hNpYCkk6SLge8Aj4a6/S7rbzO6MMCyXYXwIrss4kvKB86hbae+PMZwTWEdYhCn5jmOsF3KXdDTwJ4JMgoBBwPkEL/TfM7Pboouu+YXDrA81s2zpiJHIaEcdRzqFVX+vAw4Kd00hmEKwIbqo0iPsgNLA+r6xI2ka8Do7FhWL7Y1DSTOA081sQbi9B/CgmY2NNrLUkTQbODKR9QzXb37RzEZHG1nqSHqPYHj5lnC7HfBWFtYwcJ+Dd0CdywBh9m8HiexgXElqAwwLNxfE+SaDpPsJCpQ8Q5asDynpVoK2Pk7dNseuonU2yuYq3g3Ne407Se/V74Q0tC9OJM0xs72StnOA2cn74iasbj0+8XocJgXeiXObXfPzIbgu40haTAOV2MwsdtUFkzxFbZsLCLKBC4ARkUWUHkMIKgDnA6MlYWYPRBxTqiwOP1qHH9kg8QZ9QtK+WC7iLuk2M/txYxVDYzrvtf3OD4mtZySdCzxB3ZsrcV6GZXoD02OmRxhPOjwr6TnqFst7OsJ40uE+4O16U4L+EmE8LgN5BtRlHEldkjbzgVOAzmb2i4hCSrtwOO75ZvbdqGNJFUnXAIcCexK8oB8FvB7naseQHetDZiNJY81shlfNzA7hjdL6LM43SsMRKxdQd3j5/5nZ9saflfkknURSm83s0aaOjwNJY4EDw80pcZ8S5Jqfd0BdLEiaEed5Jg2pP/QnbsJhPqOBWWY2Oqw0+DczOzLi0FKi/vqQQJzXhwRq5gReQ+187teAX8Z5jqCki8zs9p3tixNJfYE7SXrDClxkZiuii8q55hG+Nu1LMLIhW6rg5hJU4q8ZSRn3KUGuefkQXJdxwuxfQg4wjpj/LtebS5UD7AOsjCicdNlmZtWSKiV1ANYA/aIOKoXuBi6ptz7kPUBs14cE7gXmAqeG298iGN51UmQRpd5ZQP3O5tkN7IuT+4B/EIxWgaDy731ALG8mAUjKo26xvFeBiXFelkTSgcC1wADqdkzinPXNxiq4PyK4cVgMVBEuGQbEdq6va36eAXUZR9IrSZuVBPPmfpeovBdH4XDUhEqCMvcPx7woz/8BPwO+DlwKbAbeNbNzIg0sRSTNrl85saF9cSLpXTPbe2f74kDSN4DTCYbqTUl6qD1QbWaHRxJYGmTTeU4I50LmUbtc1reAqphPm5gPXAzMIOiYAGBm6yILKsWytAruQmC/OJ9Xl3qxzhq52PqOmdVZN0/SoKiCSZP3zeyh5B2STgEeauT4jGdm54ef/knSs0CH5MWuJY2I2fDUbFwfcpukg8zsdajJoGyLOKZUeRNYBXQFfpe0fxPxX8d4naQzqC3U8g0g7m9ex9frhLwcdlbirNTMnok6iDTLqTfkdh3BKKU4Ww7EdpqESw/PgLqMI2mmme1Tb1+s54A20uYd9mWTuLU/G9eHlLQ3QYaoiGAY13rgrOQbDS7zSRpAMAd0f4Khem8CF8Z5zpikmcApZvZxuD0Y+E+crlkJSdNiTgVygUfIkmWVJN1MMPQ0uQrue2Z2RXRRpUbSVKARBNXpnyJLlgxzzc8zoC5jSBpGcOErCqvOJXQgqIYbO5KOAo4G+ki6I+mhDgRDcbOZog6gOYUdzQsltQ82418F18zeJVhep0O4vTHikFJO0gSCzthwguV2coEtZtYh0sBSyMyWAnFcZqYplwGvSFpEcK0aAMRy+gB1M/oQ1GVIiOWySgCSBNwBjKf2xuHdMa6Cm1hWaVn4kU1Lhrlm5h1Ql0mGAscCHYHjkvZvAr4XSUSpt5JgHbXjCebVJGwimGuTzWI1fEPSXsADhFVwJa0lyAbOjTSwFKpfBVdS7KvgAncRzGt+iOCN+pnAHpFGlGLhvLjvAQOpW5zm21HFlGpm9pKkxDrGAAviuhyJmX0x6hiiYGYm6emwGv0jUceTamZ2XfK2pLZmtjWqeFxm8yG4LuNI2t/M3oo6jnSS1MrMsj3jWUcMh+C+CVxVrwrujWYW2yq4kh4mqIKbXKhltJnFtgqupOlmNk7Se2Y2Ktw3y8zGRB1bqoS/21PYsTjNw5EFlWKSLgD+bmYl4XYn4Btm9n/RRpY64XIkNwK9zewoSXsC+5vZXyIOLWUkTQLuMrN3oo4lXSTtD/wFKDSz/pJGA99Pqtvg3E55B9RlDEmXm9lNku6kgeyXmV0YQVgpJenfZnZquCZmQ23O2rLnkqaa2YSo42guXgW38X1xImkycATwZ2A1QWGis7PtPMddI7/bcb/R8AzB8jpXhWs3tyJYxznO61XPB3YHlgJbCJckifNrs6S3gZOBxxO/z5LmmtnIaCNzmcSH4LpM8kH4//RIo0ivi8L/j400iohI6sOOa8pNDv+PTecz5FVw410FN+FbBPM+f0gwjL4f8LVII0q9JyUdbWZPRx1IGuVKkoV3+SXlEv/5cl3N7N+SrgQws0pJVTt7Uob7clMPSuoUx0JyZrY8mAJbI+7n2TUz74C6jGFmT4T/T9rZsXFhZqvCT8+vX1VP0m+B2FXaSwjbdxrwPrUvbgZMjiyo1Po2QRXcRwjaOSXcF2c/AB4I54ICbADOijCelAsL8kDQ0b6uqWMznaRNBL/LAn4mqRwopzZLFNvCS8CzwL8kTQy3vx/ui7MtkroQjtYJC27FeT538t9zY14CYjNVJLRc0gGAScojuFH+wU6e41wdPgTXZRxJT7DjcNRSgszoRDMrS39UqdXIMizvxXyYzwJgVFwLdyQLsyMvZlMxj7DNvzWzn2RDFdzGhtEnxPlvORtJyiHodB4e7noB+LOZxTZTFC7HcicwkmBudzfg5GxeVimOw64ldQVuJ5hKIOB54CIzi/vavq4ZeQfUZRxJtxO8sCWvu7WR4M1dBzP7VlSxNTdJ5wHnA4OBj5Meag+8YWZnRBJYGoTziU7JhuVIACS9BJwU8wqwdcRtHm9TwrUwG7ULmZSMFS5X8U1gkJn9SlI/oJeZTYs4NNfMwnmfQwk6JgvMrCLikCIVt2J5zjUX74C6jCPpHTMb39A+SfPMbERUsTW3cGhiJ+DXwE+THtpkZuujiSo9wgqpowmGMCUvdh27YlMAkh4DxhBkSrYk9se1vQCS/gj0IViSJLnNsV/SIJuE57kaOMzMhocVYZ+vfx2Pk3A+87XUzmFPDDseHGVcqSTpFOBZM9sk6WqCoafXm9nMiEOLTBw7oJJuAq4nmEbwLDAKuNjM/hZpYC6j+BxQl4kKJfU3s2UAkvoDheFj5dGF1fzCbFgp8A0ASd2BfIKfQWHiZxBTj4cf2eIRsmAtuXrygXXUXajeiPHPIWleJARFafKALTGfD7mfme0jaRaAmW2QFPeCPH8hKDJVZ+mZmPu5mT0k6SCCoce3AH8E9os2rEhp54dknC+Z2eWSTgSWACcR1GbwDqjbZd4BdZnoUuB1SR8TXNwHAedLakfteoKxIuk44FagN7CG4K76B0Bssr31ZVOxKdh5eyU9bGaxqpZqZudEHUO6mVn7xOfh0NSvAnEfhlwRzvlNFKfpRpARjbNSM3sm6iDSLNHRPga4x8yeknR9lAGlUvg7Pc/MhjVx2OFNPJapEn2HY4CHzKy0XkVc53bKh+C6jCSpDZC46C+IY+GhZJJmE2SJXjSzMZK+CJxhZt+JOLSUkTSEYOjxngSZMgDiPIStKXEqZtHYWr4JcR523JA4nduGSPomwVz9fQhuEp4MXG1mD0UaWApJ+g3BcjuPUHcKQWyHo0p6EvgEOJLgXG8DpsV8jdvHgB/FfDRSHeHv9gkE53dfoCPwpJllc6bbfUaeAXWZaiwwkOB3eLQkzOyBaENKqQozWycpR1KOmb0i6baog0qx+4BrgN8DXwTOAXIijShacbpbmFjL90CCGwz/CrdPIVh2J7YknZS0mQOMA2J9A83M/i5pBkE2SMAJZhb3ZRsSb8bHJe0z6g43j5tTga8At5hZiaRewGURx5RqnYB5kqZRdx778dGFlFpm9tNwHmipmVVJ2kIwksO5XeYZUJdxJP0V2A14l6T1IeOcNZH0IsEdx18DXQmG4Y43swMiDSyFJM0ws7GS5pjZXsn7oo4tCjEtZjEVOMjMKsPtPGBKnCvjSrovabOSYA7VPWa2JpqIUk/SbsAKM9su6VCCoiUPmFlJtJG55hTWY9hBnLODkg5paL+ZvZbuWNJF0pkN7Y95EsA1M8+Aukw0DtjTsuvuyVcJsiQXEyxnUAT8MtKIUm97uJbeR5J+SDC0q3Anz4mzOE6y6QR0ABIVnQvDfbGVjfNegYeBcZJ2ByYSFBf7B3B0pFGlgKQzzOxvki5p6HEzuzXdMaXRUwRZXhFMmxgELCDetQpeC5dYGmJmL0pqSzD0Os6Sq1fnE4xsmAl4B9TtMu+Aukw0F+gJrIo6kHQxsy1Jm9lSnOcioC1wIfArgqFrZ0UaUbSuiDqAFPgNMEvSKwRvWg8mWLoitiQNJljEfQLBm/W3CJYwWBRpYKlVbWaV4fDju8zszkRF3BhqF/7fvsmjYigxUiVB0j4E61jHlqTvAecCnQlGZvUB/kQ8iw8BYGY/St6W1BH4Z0ThuAzlQ3BdxgnfrO4NTKNucYfYzbmot2RDnYcIhh3HeemGrCBpDk2f41FpDimtJPWkdr7c22a2Osp4Ui0cdvwH4MFw19cJipjEtoCHpLeB24CrgOPMbLGkuWY2MuLQIiPpSjP7ddRxpFryFIo4kvQuQSGetxOFxOLe5vrCqRNzzWxo1LG4zOEZUJeJro06gHRJXrIhW0i6zcx+LOkJGuiYxfBGw7FRBxCVcBmSI4DBZvZLSf0l7Wtm06KOLYXamtlfk7b/JinuhVrOAX4A3BB2PgcBf93Jc+LuFII5/bFRb9hxDkEl3JURhZMu282sPLEMiaRWxKtg3A7qvTbnAsOBf0cXkctEngF1GUlSD2rnIUyLcwGPbCNprJnNyMbiDtlG0h8J1oM8zMyGS+oEPG9m43fy1Iwl6bfABoIha0awPEkn4GYAM1vf+LNdXMRx6R1J1yRtJgpsPRznZdLCarAlwJnAjwiGHL9vZldFGlgK1XttrgSWmtmKqOJxmck7oC7jSDqV4M3aqwTDFL8AXGZm/4kyLuc+D0kTgDsJ7ia3JrizvCXOw6wTlX2T34xLmh3zdQMXN/GwxXGd27DNDY1miF1bd1Ucq1onSCoEMLPNUceSamGhvO8AXyJ4P/Ic8Oe4F0n0JID7vHwIrstEVxEsQbIGQFI34EXAO6Ax0MScSABiPCfyLoL5gA8RVHo+E9gj0ohSr0JSLuH5Dv+Wq6MNKbXMbFDUMUQgeS3MfILhp50jiqWliF1Va0kjCYZWdw631wJnmdncSANLITOrljQJeJvgOrYgCzqf9ZMAd0ryJID7TLwD6jJRTr27besI5pu4eEjMibwg/D8xV+wMYj63xswWSso1syrgvrBS6JVRx5VCdwCPAj0k3QCcDFwdbUipFRbsOI+g4i8Eb+ImmllFZEGlmJmtq7frNkkzgF9EEU8L8VDUAaTA3cAlZvYKQLjm691AnNerPoag6u3HBJ2xQZK+b2bPRBtZSnkSwH1uPgTXZRxJNxMsZJ6oInka8J6ZxXGZiqzV0BypmA9bm0xQkOfPwGqCZYbOjvNwVABJw6hdsuBlM/sgynhSTdKfgTxql1P6FlBlZt+NLqrUCpfjSMghyIieF+ff7fBN+feAgSTd7Dezb0cVU6o1NHw+C4bUzweONbOF4fZuwFNmNizayFKnfpXfcBjy7Gyq/Os+P8+AuoxjZpdJ+hpwYLjrbjN7NMqYXEpI0oFm9ka4cQDxznR/i6B9PwQuBvoBJ0UaUXokFm43oCDiWNJhfL035C9Lmh1ZNOnxu6TPE8VpTo0mlLR5DJhCkBmqijiWdFkk6efUHbUS5/VtATYlOp+hRcCmqIJJk2clPUfdJMDTEcbjMpBnQJ1zLZKkscC9QFG4qwT4tpnNjC6q1JF0kZndvrN9cSLpFwTzAR8mGL52AvCQmV0faWApJGkmcIqZfRxuDwb+E9fMfraS9K6Z7R11HOkUVrG+Djgo3DUFuNbMNkQXVWqFlbwHECxDYgTXs2UENx4ws0eiiy516iUBpngSwH1W3gF1GUPSJhqeAyiC6pGxrRaazSQVAZhZadSxpFJDw4vjuFRDMkkLgNGJZRokFQDvxnlBc0mHA/dRmxkaCJyTmDcXR+Hf8DXUznt9DfhlnP+mJV0PvGlmnhmKMUn3NfGwxXnItXOfh3dAnXMtUljm/Uagt5kdJWlPYH8z+0vEoTUrSd8ATifIGkxJeqgDwdzAwxt8YgxIegU40cxKwu2OwCNmdli0kaWOpHzgUoJ5ryXAO8DvY75W4sPAXOrOex1tZrEdYh7eMG0HbAcqyIIbpZL2AH7CjvNeY/v3vDOSrjSzX0cdR3OSdBLwW6A7we917H+3XfPzDqhzrkWS9AxBpugqMxstqRUwK26FDiQNAAYBvwZ+mvTQJoLiWpWRBJZCku4kGM3Qn2AtuRfC7SMJ1pSLc8fk38BG4O/hrtOBjmZ2SnRRpVZDw1GzcYhq3IVzmf8EzCBp3quZzYgsqIjFsXCepIXAcXEvGOdSy4sQOedaqq5m9m9JVwKYWaWk2BXzMLOlwFJg/3qLe38Qx85naHr4/wyCZVgSXk1/KGk30sz2TNp+RdL7kUWTHtskHWRmrwNIOhDYFnFMKRfOiRxCsPYpAGY2ObqIUq7SzP4YdRAtTOzWewWKvfPpPi/vgDrnWqotkroQzvuVNAGI85yxU4BbyILFvc1s0s6PCoZumtnXUh1Pms2UNMHMpgJI2o/aDnlcnQdMSsznBjYAZ0UYT8pJ+i5wEdAXeBeYALwFxG44qqTO4adPSDqf4KbS9sTjZrY+ksBahtgMMwyH3gJMl/Qv4L/UPc+xLLjkUsOH4DrnWqRw7cA7gZEE88e6ASeb2XuRBpYi4fC1I+sv7h3nNfR2Jo5FmCR9AAwlqJQJwTDkBQTLk5iZjYoqtlSR1AY4GdgN6EhwI8nM7JeRBpZCkuYQjGaYamZ7h+vd3hjH4eWSFhN0tBrK9pmZDU5zSC1GnK5hXnDJNSfPgDrnWiQzmynpEII36wIWmFlFxGGlUk6i8xlaR7zXPd0VcbxD+pWoA4jAYwQFl2YCn0QcS7qUmVmZJCS1MbP5kmJZ3dnMBu3KcZKONLMXUh1PC/NQ1AE0FzM7Z1eOi2PhJdf8vAPqnGuRJOUCR1NbUfFLkjCzWyMNLHWe8cW94y+c85tt+ppZtnW8V4RVnf8LvCBpA8Fc72z2W4KCY7Eh6SbgeoI5zc8Co4CLzexvAGZ2Y4ThReUUgqJ6zjXKO6DOuZbqCaAMmANURxxLOhgwkdpF3O8mmDeWzeJYwCMbvSlpLzObE3Ug6WJmJ4afXhsuN1RE0EHJZnH8e/6SmV0u6URgCXASMBn4W6RRRSuO59k1M++AOudaqr5xnA/XhCPN7AqgppCDpOuAK6ILKXLZ3PaMF86DNIL3GudIWkRQtCSxbmDs/r4ldTCzjUmFeSC4iQZQCHhBnnhJvI8+BnjIzEqlrO9/xfE8u2bmHVDnXEv1jKQvmdnzUQeSSpLOA84HBktKLrDUHngjmqhSK6ljssNDJHVM4n7us8CxUQcQgX8QtHsGOxbmMSBrC/LE1JOS5hMMwT0vLB5XFnFMUcv6HrjbOa+C65xrkcIhTX8jKMRTQW3npEOkgTWzcGmKTgRzZn6a9NCmuC5fIGlAU49n6TxJ5zKWpBxggpm92cQxj8S0CnBnoNTMqiS1BTqY2eqo40qFsDbDhWb2+yaO+VmWzn11n4F3QJ1zLVJY2v+rwBzzC5VzLgOEy0c1ysxmpiuWdIvTkiO7KuyQHUNtsTyAOBfLQ9I0M9s36jhcZvMhuM65lmo5MNc7n/ElaQLBWq/DgdZALrAlbllul1V+F/6fD4wDZhOM3hgFTAf2jyiudHhJ0teAR7Loup1txfIA3pB0F/AvYEtiZ5xvrrjm5xlQ51yLJOl+gvlSzxAULgHifWc520iaDnydYK28ccCZwB5mdmWkgTn3OUl6BLgmUflX0kjgWjM7OdrIUkfSJqAdUEUwJzKW0yaSSXovjsW0mhJWda7PzOywtAfjMpZnQJ1zLdXi8KN1+OFiyMwWSso1syrgPkmzAO+Aukw3NHnZGTObK2l4lAGl2v+3d+8xmlf1HcffHwTUykURQrUVZKlSl8t6gbIg1Sqx0UatgkDBImpMU7Vou9aooUpoo43XKtgoKrVo0QYrVEkFFcO2XCoLLMtykzYugm2NqCA3b4Df/vH7jTs7DjMjO8+c5/fM+5VM5jlnZpLPZDaz8/2dc76nqnZsnaGBZdEsb7qqek7rDBo+C1BJY6mqTpnr40lOq6oTlyqPRuJHSbYHNvQXun+HrumUNHQbk3yCzfdBvhzYOMfnD166+0deDuxVVX+T5AnA46pqXeNoo/R14Ny+CdPENsubLsnuwLuAx1fVC5KsBA6pqjMaR9OAuAVX0iAlWV9Vczb80Hjru+F+l26F+y+AnYG/r6pvNg0mbaUkjwBeCzyrn/oP4CNVNbFXdCT5CN05yOdW1VOSPAb4SlUd1DjayCzHZnlJzgc+CZxUVauSbAtcXVX7N46mAfFJsySplZdU1U+q6q6qOqWq1rA8747UhOkLzY8Cb62ql1bV301y8dk7uKpeT38PZlXdweQfn1iOzfJ2raqz6ZsuVdX9dOd+pQWzAJUktXLCLHOvXOoQ0mJL8mJgA3BBP35qki+2TTVy9/XXkhRAkt2Y/M6wm4C1Sd6WZM3UW+tQI3Zvksey+ee8GrizbSQNjWdAJQ1VWgfQQ5PkWOA4YK8Zf5TvBNzeJpW0qE4GfgdYC1BVG5Ls1TTR6J0KnAvsnuSdwMuAv2obaeSWY7O8NcAXgb2TXArsRvezlhbMAlTSUH2odQA9ZJfRNRzalc33JgLczYQ3atGycV9V3dn15fmFid6mWVVnJbkKOLyfeklV3dgy06hNNctLskM/vqdtotGrqvVJng3sQ/cg+KaquoFeGVQAAAvYSURBVK9xLA2MBaiksZTkPH75D7Y76S5zP72q/nHJQ2lRVNUtwC3AIX1HxakmJTf254mkobs+yXHAw5I8CXgD3YOXSfdrwNQ23Ec2zjJy/f2unwZ26cffB15RVdc3DTZCfYOt1wGH0f2cL07y0WVwxlmLyDOgksbVJuAe4OP92110K2RP7scauCRHAeuAo4CjgcuTuJVLk+BEYF/gp8Bn6B6evbFpohFL8g7gTLpibFe6e30nfQvux4A1VbVnVe0JvInJ///pU3T/tk8DPty//nTTRBocr2GRNJaSXDGzff/UXJLrq2rfVtm0OJJcAzyvqm7rx7sBF1bVqrbJpK2T5EDgJOCJbN5tVlV1QLNQI5bkJmDV1EpYkkcCG6pqn7bJRifJNTN/X802N0mS3FBVK+ebk+biFlxJ42qHJHtU1a0ASfYAdug/9rN2sbSItpkqPns/wJ05mgxnAX8JXMfkd4Kd8n/AI+ivYQEeDvxvuzhLYlOSt7N5BfCP6XbvTLL1SVZX1dcBkhxMdzRGWjALUEnj6k3AJUm+SdfoYC/gdUkeRbfNS8N3fpIvA5/tx8cAX2qYR1os36uq81qHWGJ30p19/Srd2cDnAeuSnApQVW9oGW5EXg2cApzTjy/u5ybZM4DLktzaj/cAbkpyLRO+yq/F4xZcSWMrycOB3+6HN9nkYLIkeTdwOV0zC+j+eFtdVW9pl0raekkOB44FvkZ3DhSAqjrnQb9o4JLMdq/vL1TVxD44TLIjXfE18V1wk+w5z6fcVVV3LEkYDZYFqKSxleRQtjxDRVV9qlkgLaok66vq6TPmNvoEXUOX5J/oHp5dz+YtuFVVk7469qCSfL6qjmydYzEl2Z+uKc8u/dT3gROq6rp2qdqa7fe6NJNbcCWNpSSfBvYGNgAP9NNF95+9BizJa+na+K9IMv3ezx2BS9ukkhbVQZPcfOchWtE6wAicTtcF9yKAJL9H1xn30JahGsv8n6LlzgJU0rg6EFhZbtOYRJ8Bzgf+FnjrtPm7q+r2NpGkRXVZkpVVdUPrIGNkEn+XP2qq+ASoqrV9n4LlbBJ/zlpkFqCSxtV1wK8D32kdRIurqu6ka1hybOss0oisBjYkuZnuDGiwQcskWo5dcKWtZgEqaVztCtyQZB1bNvF4cbtIkrQgz28dYAxN4tbM6V1wi+XRBXc+k/hz1iKzCZGksZTk2bPNV9W/L3UWSdLCJXkM8ISq2jht7ver6isNYy2qJA8DLqyq57TOstT67313tmwQOHVn9y4epdB8LEAlSZK0VZKsBV5MV5RcBdwGXFpVa1rmGqUkXwOO6I8VLAtJTgROBr7Llh2e3V6uBXMLrqSxkuSSqjosyd1s2cxg6gzVTo2iSZIe3M5VdVeS1wCfqqqTZ3S5nkT3ANcm+Spw79RkVb2hXaSReyOwT1X9oHUQDZcFqKSxUlWH9e93bJ1FkrRg2yZ5HHA0cFLrMEvknP5tOfk2XRM56SGzAJU0lpLsDfxPVf20v1vtALqn6j9sm0ySNIu/Br4MXFJVVyRZAfx340wjVVVnts7QwCZgbZJ/Y8sGgR9oF0lD4xlQSWMpyQa6u0CfCHwJ+AKwb1X9QctckqTlLcm1zHHf5SSfh0xy8mzzVXXKUmfRcLkCKmlc/byq7k/yUuC0qjotydWtQ0mSflmSvYAT6R4aTu+OOolXZ72wf//6/v30e0AnemVnqtBMskM/vqdtIg2RK6CSxlKSy4EP0p0lelFV3Zzkuqrar3E0SdIMSa4BzgCuZXN31Im+OivJ1VX1tBlz66vq6a0yjVqS/egK7l36qe8Dr6iq69ul0tC4AippXL0K+FPgnX3xuRebnzJLksbLT6rq1NYhlliSPLOqLu0HhwLbNM40ah8D1lTVRQB9j4aPA4e2DKVhcQVUkiRJWyXJccCTgK+wZXOa9c1CjViSZwD/AOzcT/0QePWEf8/XVNWq+eakubgCKmksJbmZWc7SVNWKBnEkSXPbHzgeeC6bt+BWP55IVXUVsCrJzv14OVxPsinJ29ny3Oumhnk0QBagksbVgdNePwI4is1nTiRJ4+UoYEVV/ax1kKWSZHfgXcDjq+oFSVYCh1TVGY2jjdKrgVPYfP/pxf2ctGBuwZU0GEmuqqpntM4hSdpSkn8F/qSqbmudZakkOR/4JHBSVa1Ksi1wdVXt3ziaNNZcAZU0lpJM7yK4Dd2KqL+zJGk8PRr4RpIr2PIM6CRewzJl16o6O8nbAPqrwx5oHWoUknywqv48yXnMfjxmkn/OWmT+MSdpXL1/2uv7gW8BR7eJIkmax8mtAzRwb5LH0hdkSVYDk3oOdOrM5/uaptBEcAuuJEmStlp/JvKgfrhu0rfj9jt1TgP2Ba4HdgNeVlUbmwYboSRvrKoPzTcnzWXS7yqSNFBJdk7ygSRX9m/vn+o0KEkaL0mOBtbRNSM6Grg8ycvaphq5G4BzgSuA79Ldh/lfTRON3gmzzL1yqUNo2FwBlTSWknweuA44s586HlhVVUe0SyVJmk2Sa4DnTa16JtkNuHCS74dMcjZwF3BWP3Uc8OiqOqpdqtFIcizd93cYXefbKTsCP6+qw5sE0yB5BlTSuNq7qo6cNj4lyYZmaSRJc9lmxpbbHzD5O+32q6qV08YXJbmhWZrRugz4DrArW/ZouBuY2C3HGg0LUEnj6sdJDquqSwCSPBP4ceNMkqTZXZDky8Bn+/ExwJca5lkK65OsrqqvAyQ5GLiycaaRqKpbgFuAQ1pn0fC5BVfSWEryVLrtt1PnPu8ATpjk5g6SNGRJjqDboglwcVWd2zLPqCS5lq7z7XbAPsCt/XhP4BszVkUnSt/p9zTgKcD2wMOAe6tqp6bBNCiugEoaVzcC7wH2prtf7k7gJbjVR5LG1aXAfXTF2LrGWUbpha0DNPRh4I+Az9Hdz/0K4MlNE2lwXAGVNJaSXAD8EFgP/OJi76p6/4N+kSSpib4L7nuBtUCA3wXeXFX/0jKXFleSK6vqwCQbq+qAfu7qqnpa62waDldAJY2r36yq57cOIUlakJOAg2Z2wQUsQCfLj5JsD2xI8h66xkST3mxKi8x/MJLG1WVJ9m8dQpK0IMuxC+5ydDzduc8/A+4FngAcOedXSDO4BVfSWJnW3GFb4EnAJuCndFu6amrLjyRpPCQJcAbwG2zZBXdjVb2lWTBJY8kCVNJYSbLnXB/vW8FLksZIkuuAd7AMuuAuR9MeDs/Kh8P6VXgGVNJYscCUpEG6Cvh2Va1pHUQjsZw7/2qRuQIqSZKkrZLkG8BvAbfQnQ0EXBmT9MssQCVJkrRVHuz4hLtaJkuSu9m8FXd7YDvg3qraqV0qDY1bcCVJkrRVLDSXh6racep133zqD4HV7RJpiFwBlSRJkvSQJLm6qp7WOoeGwxVQSZIkSfNKcsS04TbAgcBPGsXRQFmASpIkSVqIF017fT/wLbptuNKCuQVXkiRJkrQktmkdQJIkSdL4S7IiyXlJvpfktiRfSLKidS4NiwWoJEmSpIX4DHA28Djg8cDngM82TaTBcQuuJEmSpHkl2VhVB8yYu6aqVrXKpOGxAJUkSZI0ryTvBu4A/hko4BjgMcB7Aarq9nbpNBQWoJIkSZLmleTmOT5cVeV5UM3LAlSSJEmStCS8B1SSJEnSvJJsB7wWeFY/tRY4varuaxZKg+MKqCRJkqR5JfkEsB1wZj91PPBAVb2mXSoNjQWoJEmSpHnN1vHWLrj6VXkPqCRJkqSFeCDJ3lODJCuABxrm0QB5BlSSJEnSQrwZuCjJpn78ROBV7eJoiFwBlSRJkrQQlwKnAz8Hbu9f/2fTRBocz4BKkiRJmleSs4G7gLP6qeOAR1fVUe1SaWgsQCVJkiTNK8kNVbVyvjlpLm7BlSRJkrQQ65OsnhokORi4smEeDZAroJIkSZLmleRGYB/g1n5qD+Am4H6gquqAVtk0HBagkiRJkuaVZM+5Pl5VtyxVFg2XBagkSZIkaUl4BlSSJEmStCQsQCVJkiRJS8ICVJIkSZK0JCxAJUmSJElLwgJUkiRJkrQk/h8zg5XID/Mh6AAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ INSPECTING HEATMAP:\n", "plt.figure(figsize=(15,10)) \n", "sns.heatmap(data_numeric.corr(),annot=True,linewidths=.5, cmap=\"Blues\")\n", "plt.title('Heatmap showing correlations between numerical data')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "AkAl7M2lyxkW", "outputId": "5c6bc6e1-3ca2-4d4d-ec0e-d8737d6500e4" }, "outputs": [ { "data": { "text/plain": [ "longitude longitude 1.000000\n", "latitude latitude 1.000000\n", "bedrooms_per_room bedrooms_per_room 1.000000\n", "rooms_per_household rooms_per_household 1.000000\n", "median_income median_income 1.000000\n", "households households 1.000000\n", "total_bedrooms total_bedrooms 1.000000\n", "total_rooms total_rooms 1.000000\n", "housing_median_age housing_median_age 1.000000\n", "population population 1.000000\n", "population_per_household population_per_household 1.000000\n", "total_bedrooms households 0.974366\n", "households total_bedrooms 0.974366\n", "total_bedrooms total_rooms 0.927058\n", "total_rooms total_bedrooms 0.927058\n", "dtype: float64" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING CORRELATION:\n", "data_numeric.corr().unstack().sort_values(ascending = False)[:15]" ] }, { "cell_type": "markdown", "metadata": { "id": "Vt6WCEC-0OfJ" }, "source": [ "- Answer for Question2: 'total_bedrooms' and 'households'. " ] }, { "cell_type": "code", "execution_count": 85, "metadata": { "id": "2GJHYKU50ODl" }, "outputs": [], "source": [ "#@ PROCESSING DATASET:\n", "data_class = data.copy()\n", "mean = data_class['median_house_value'].mean()\n", "\n", "data_class['above_average'] = np.where(data_class['median_house_value']>=mean,1,0)" ] }, { "cell_type": "code", "execution_count": 86, "metadata": { "id": "Sh0FsNIS06ym" }, "outputs": [], "source": [ "#@ PROCESSING DATASET:\n", "data_class = data_class.drop('median_house_value', axis=1)" ] }, { "cell_type": "code", "execution_count": 87, "metadata": { "id": "6RYfeKmp1PfL" }, "outputs": [], "source": [ "#@ SPLITTING THE DATASET:\n", "df_train_full, df_test = train_test_split(data_class, test_size=0.2, random_state=42)\n", "df_train, df_val = train_test_split(df_train_full, test_size=0.25, random_state=42)" ] }, { "cell_type": "code", "execution_count": 88, "metadata": { "id": "UgWT9jAa1Zjr" }, "outputs": [], "source": [ "#@ PROCESSING THE DATASET:\n", "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 89, "metadata": { "id": "ZBGzHdVD1f_B" }, "outputs": [], "source": [ "#@ PROCESSING THE DATASET:\n", "y_train = df_train.above_average.values\n", "y_val = df_val.above_average.values\n", "y_test = df_test.above_average.values" ] }, { "cell_type": "markdown", "metadata": { "id": "QAieBTSC06zL" }, "source": [ "**MUTUAL INFORMATION:**" ] }, { "cell_type": "code", "execution_count": 90, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 81 }, "id": "GrWi3uy40gLg", "outputId": "fe098f56-03d4-435f-eea7-a58588868fc0" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MI
ocean_proximity0.101384
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " MI\n", "ocean_proximity 0.101384" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ PREPARING DATASET:\n", "cat = ['ocean_proximity']\n", "\n", "#@ DEFINING FUNCTION:\n", "def calculate_mi(series):\n", " return mutual_info_score(series, df_train.above_average)\n", "\n", "#@ IMPLEMENTATION:\n", "df_mi = df_train[cat].apply(calculate_mi)\n", "df_mi = df_mi.sort_values(ascending=False).to_frame(name='MI')\n", "df_mi" ] }, { "cell_type": "markdown", "metadata": { "id": "-oWxCUes2Oqn" }, "source": [ "- Answer for Question3: 'ocean_proximity=0.101384'" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "id": "7a0HO3m7USvH" }, "outputs": [], "source": [ "#@ PREPARING THE DATASET:\n", "df_train = df_train.drop('above_average', axis=1)\n", "df_val = df_val.drop('above_average', axis=1)\n", "df_test = df_test.drop('above_average', axis=1)" ] }, { "cell_type": "markdown", "metadata": { "id": "MxFu2alh1R4Y" }, "source": [ "**CLASSIFICATION AND ACCURACY OF MODEL:**" ] }, { "cell_type": "code", "execution_count": 92, "metadata": { "id": "VjZYolWL1PCq" }, "outputs": [], "source": [ "#@ TRANSFORMING THE DATASET:\n", "num = [\"longitude\", \"latitude\", \"housing_median_age\", \"total_rooms\", \"total_bedrooms\", \"population\", \"households\", \"median_income\", \"rooms_per_household\", \n", " \"bedrooms_per_room\", \"population_per_household\"]\n", "train_dict = df_train[cat + num].to_dict(orient='records')\n", "\n", "#@ VECTORIZING THE DATASET:\n", "dv = DictVectorizer(sparse=False)\n", "dv.fit(train_dict)\n", "X_train = dv.transform(train_dict)" ] }, { "cell_type": "code", "execution_count": 93, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "he_Rn01H1b8-", "outputId": "629e13b6-6890-4f64-c83b-bd16de56fd9c" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.84\n" ] } ], "source": [ "#@ TRAINING LOGISTIC REGRESSSION MODEL:\n", "model = LogisticRegression(solver=\"liblinear\", C=1.0, max_iter=1000, random_state=42)\n", "model.fit(X_train, y_train)\n", "\n", "#@ INITIALIZING THE MODEL PREDICTION:\n", "val_dict = df_val[cat + num].to_dict(orient='records')\n", "X_val = dv.transform(val_dict)\n", "y_pred = model.predict(X_val)\n", "\n", "#@ INSPECTING THE ACCURACY:\n", "accuracy = np.round(accuracy_score(y_val, y_pred),2)\n", "print(accuracy)" ] }, { "cell_type": "markdown", "metadata": { "id": "3ttq6Hcz6vJE" }, "source": [ "- Answer for Question4: ~= 0.84" ] }, { "cell_type": "code", "execution_count": 94, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "tNyfZPwr6uGb", "outputId": "77994134-6ea6-46fd-8fbc-53e7d5890b9c" }, "outputs": [ { "data": { "text/plain": [ "['ocean_proximity',\n", " 'longitude',\n", " 'latitude',\n", " 'housing_median_age',\n", " 'total_rooms',\n", " 'total_bedrooms',\n", " 'population',\n", " 'households',\n", " 'median_income',\n", " 'rooms_per_household',\n", " 'bedrooms_per_room',\n", " 'population_per_household']" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INITIALIZING FEATURES:\n", "features = cat + num\n", "features" ] }, { "cell_type": "markdown", "metadata": { "id": "G82TR8D7FxHz" }, "source": [ "**FEATURE ELIMINATION:**" ] }, { "cell_type": "code", "execution_count": 96, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "L11XM_pmGIgI", "outputId": "84ce3f55-072f-4492-cf83-ac5885b14e0e" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ocean_proximity 0.019021317829457374 0.8209786821705426\n", "longitude 0.009089147286821642 0.8309108527131783\n", "latitude 0.00618217054263559 0.8338178294573644\n", "housing_median_age 0.009089147286821642 0.8309108527131783\n", "total_rooms 0.0015794573643410637 0.8384205426356589\n", "total_bedrooms 0.002306201550387521 0.8376937984496124\n", "population 0.013691860465116279 0.8263081395348837\n", "households 0.006666666666666599 0.8333333333333334\n", "median_income 0.05438953488372089 0.7856104651162791\n", "rooms_per_household 0.005697674418604581 0.8343023255813954\n", "bedrooms_per_room 0.004486434108527115 0.8355135658914729\n", "population_per_household 0.004486434108527115 0.8355135658914729\n" ] } ], "source": [ "#@ INSPECTING THE DIFFERENCE IN ACCURACY:\n", "orig_score = accuracy\n", "\n", "for c in features:\n", " subset = features.copy()\n", " subset.remove(c)\n", " \n", " train_dict = df_train[subset].to_dict(orient='records')\n", "\n", " dv = DictVectorizer(sparse=False)\n", " dv.fit(train_dict)\n", "\n", " X_train = dv.transform(train_dict)\n", "\n", " model = LogisticRegression(solver='liblinear', C=1.0, max_iter=1000, random_state=42)\n", " model.fit(X_train, y_train)\n", "\n", " val_dict = df_val[subset].to_dict(orient='records')\n", " X_val = dv.transform(val_dict)\n", "\n", " y_pred = model.predict(X_val)\n", "\n", " score = accuracy_score(y_val, y_pred)\n", " print(c, orig_score - score, score)" ] }, { "cell_type": "markdown", "metadata": { "id": "mQOkdoy2HiJw" }, "source": [ "- Answer for Question5: smallest difference - `total rooms`." ] }, { "cell_type": "code", "execution_count": 97, "metadata": { "id": "r6wFxYueWcco" }, "outputs": [], "source": [ "#@ NORMALIZING THE DATA:\n", "data['median_house_value']=np.log1p(data['median_house_value'])" ] }, { "cell_type": "code", "execution_count": 98, "metadata": { "id": "gyftDcMvWrou" }, "outputs": [], "source": [ "#@ SPLITTING THE DATASET:\n", "df_train_full, df_test = train_test_split(data, test_size=0.2, random_state=42)\n", "df_train, df_val = train_test_split(df_train_full, test_size=0.25, random_state=42)" ] }, { "cell_type": "code", "execution_count": 99, "metadata": { "id": "dPO-Pb85W1qN" }, "outputs": [], "source": [ "#@ PREPARING THE DATASET:\n", "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 100, "metadata": { "id": "EyjgXwFGW3WO" }, "outputs": [], "source": [ "#@ PREPARING THE DATASET:\n", "y_train = df_train.median_house_value.values\n", "y_val = df_val.median_house_value.values\n", "y_test = df_test.median_house_value.values" ] }, { "cell_type": "code", "execution_count": 101, "metadata": { "id": "4u2Jmme1W3Qq" }, "outputs": [], "source": [ "#@ DELETING DATASET:\n", "del df_train['median_house_value']\n", "del df_val['median_house_value']\n", "del df_test['median_house_value']" ] }, { "cell_type": "markdown", "metadata": { "id": "lHPwHninXNLY" }, "source": [ "**RIDGE REGRESSION:**" ] }, { "cell_type": "code", "execution_count": 102, "metadata": { "id": "XbIYll6mW3HW" }, "outputs": [], "source": [ "#@ PREPARING THE DATASET:\n", "train_dict = df_train[cat + num].to_dict(orient='records')" ] }, { "cell_type": "code", "execution_count": 103, "metadata": { "id": "gdW4VCIGXXjK" }, "outputs": [], "source": [ "#@ VECTORIZING THE DATASET:\n", "dv = DictVectorizer(sparse=False)\n", "dv.fit(train_dict)\n", "\n", "X_train = dv.transform(train_dict)\n", "\n", "val_dict = df_val[cat + num].to_dict(orient='records')\n", "X_val = dv.transform(val_dict)" ] }, { "cell_type": "code", "execution_count": 116, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "rqMpeRa9XXYA", "outputId": "50348620-f291-4056-c921-0c38b31b84f4" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 0.5241\n", "0.01 0.5241\n", "0.1 0.5241\n", "1 0.5241\n", "10 0.5241\n" ] } ], "source": [ "#@ RIDGE REGRESSION IMPLEMENTATION:\n", "for a in [0, 0.01, 0.1, 1, 10]:\n", " model = Ridge(alpha=a, solver=\"sag\", random_state=42)\n", " model.fit(X_train, y_train)\n", " \n", " y_pred = model.predict(X_val)\n", " \n", " score = np.sqrt(mean_squared_error(y_val, y_pred))\n", " \n", " print(a, round(score, 4))" ] }, { "cell_type": "markdown", "metadata": { "id": "7V9Bi9vZKeEU" }, "source": [ "- Answer for Question6: 0." ] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3.8.13 ('chatbot')", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.8.13" }, "vscode": { "interpreter": { "hash": "4cbf2951cde2f569b578b1df868513fa15c696ba1c73b34f313a3fcf610bb9ca" } } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: cohorts/2022/04-evaluation/homework.md ================================================ ## Homework > **Solution**: > * [Notebook](homework_4.ipynb) > * [Video](https://youtu.be/82TYlOvKwfk) > Note: sometimes your answer doesn't match one of the options exactly. That's fine. Select the option that's closest to your solution. If it's exactly in between two options, select the higher value. ## Dataset In this homework, we will use Credit Card Data from book "Econometric Analysis". Here's a wget-able [link](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/AER_credit_card_data.csv): ```bash wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/AER_credit_card_data.csv ``` The goal of this homework is to inspect the output of different evaluation metrics by creating a classification model (target column `card`). ## Preparation * Create the target variable by mapping `yes` to 1 and `no` to 0. * Split the dataset into 3 parts: train/validation/test with 60%/20%/20% distribution. Use `train_test_split` function for that with `random_state=1`. ## Question 1 ROC AUC could also be used to evaluate feature importance of numerical variables. Let's do that * For each numerical variable, use it as score and compute AUC with the `card` variable. * Use the training dataset for that. If your AUC is < 0.5, invert this variable by putting "-" in front (e.g. `-df_train['expenditure']`) AUC can go below 0.5 if the variable is negatively correlated with the target varialble. You can change the direction of the correlation by negating this variable - then negative correlation becomes positive. Which numerical variable (among the following 4) has the highest AUC? - `reports` - `dependents` - `active` - `share` ## Training the model From now on, use these columns only: ``` ["reports", "age", "income", "share", "expenditure", "dependents", "months", "majorcards", "active", "owner", "selfemp"] ``` Apply one-hot-encoding using `DictVectorizer` and train the logistic regression with these parameters: ``` LogisticRegression(solver='liblinear', C=1.0, max_iter=1000) ``` ## Question 2 What's the AUC of this model on the validation dataset? (round to 3 digits) - 0.615 - 0.515 - 0.715 - 0.995 ## Question 3 Now let's compute precision and recall for our model. * Evaluate the model on the validation dataset on all thresholds from 0.0 to 1.0 with step 0.01 * For each threshold, compute precision and recall * Plot them At which threshold precision and recall curves intersect? * 0.1 * 0.3 * 0.6 * 0.8 ## Question 4 Precision and recall are conflicting - when one grows, the other goes down. That's why they are often combined into the F1 score - a metrics that takes into account both This is the formula for computing $F_1$: $$F_1 = 2 \cdot \cfrac{P \cdot R}{P + R}$$ Where $P$ is precision and $R$ is recall. Let's compute F1 for all thresholds from 0.0 to 1.0 with increment 0.01 using the validation set At which threshold F1 is maximal? - 0.1 - 0.4 - 0.6 - 0.7 ## Question 5 Use the `KFold` class from Scikit-Learn to evaluate our model on 5 different folds: ``` KFold(n_splits=5, shuffle=True, random_state=1) ``` * Iterate over different folds of `df_full_train` * Split the data into train and validation * Train the model on train with these parameters: `LogisticRegression(solver='liblinear', C=1.0, max_iter=1000)` * Use AUC to evaluate the model on validation How large is standard devidation of the AUC scores across different folds? - 0.003 - 0.014 - 0.09 - 0.24 ## Question 6 Now let's use 5-Fold cross-validation to find the best parameter C * Iterate over the following C values: `[0.01, 0.1, 1, 10]` * Initialize `KFold` with the same parameters as previously * Use these parametes for the model: `LogisticRegression(solver='liblinear', C=C, max_iter=1000)` * Compute the mean score as well as the std (round the mean and std to 3 decimal digits) Which C leads to the best mean score? - 0.01 - 0.1 - 1 - 10 If you have ties, select the score with the lowest std. If you still have ties, select the smallest C ## Submit the results * Submit your results here: https://forms.gle/8TfKNRd5Jq7sGK5M9 * You can submit your solution multiple times. In this case, only the last submission will be used * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ## Deadline The deadline for submitting is October 3 (Monday), 23:00 CEST. After that, the form will be closed. ================================================ FILE: cohorts/2022/04-evaluation/homework_4.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 5, "metadata": { "id": "ECAHBvpkIMvG" }, "outputs": [], "source": [ "#@ IMPORTING LIBRARIES AND DEPENDENCIES:\n", "import pandas as pd\n", "import numpy as np\n", "\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "# from sklearn.preprocessing import LabelEncoder\n", "from sklearn.model_selection import train_test_split\n", "\n", "from sklearn.metrics import roc_auc_score\n", "from sklearn.metrics import roc_curve\n", "\n", "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.model_selection import KFold\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ZDTWz-TUNaYl", "outputId": "dc4309f9-6037-40a0-c344-6ca08909024c" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2022-09-25 12:19:55-- https://raw.githubusercontent.com/alexeygrigorev/datasets/master/AER_credit_card_data.csv\n", "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.111.133, 185.199.109.133, ...\n", "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 73250 (72K) [text/plain]\n", "Saving to: ‘data.csv’\n", "\n", "\rdata.csv 0%[ ] 0 --.-KB/s \rdata.csv 100%[===================>] 71.53K --.-KB/s in 0.001s \n", "\n", "2022-09-25 12:19:55 (78.0 MB/s) - ‘data.csv’ saved [73250/73250]\n", "\n" ] } ], "source": [ "#@ GETTING THE DATASET:\n", "!wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/AER_credit_card_data.csv -O data.csv" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 363 }, "id": "tNTMUkhkNvUj", "outputId": "6394148e-714d-4fb1-b856-4b2f6b4c9e44" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cardreportsageincomeshareexpenditureownerselfempdependentsmonthsmajorcardsactive
0yes037.666674.52000.033270124.983300yesno354112
1yes033.250002.42000.0052179.854167nono334113
2yes033.666674.50000.00415615.000000yesno45815
3yes030.500002.54000.065214137.869200nono02517
4yes032.166679.78670.067051546.503300yesno26415
5yes023.250002.50000.04443891.996670nono05411
6yes027.916673.96000.01257640.833330nono2715
7yes029.166672.37000.076434150.790000yesno07713
8yes037.000003.80000.245628777.821700yesno09716
9yes028.416673.20000.01978052.580000nono065118
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " card reports age income share expenditure owner selfemp \\\n", "0 yes 0 37.66667 4.5200 0.033270 124.983300 yes no \n", "1 yes 0 33.25000 2.4200 0.005217 9.854167 no no \n", "2 yes 0 33.66667 4.5000 0.004156 15.000000 yes no \n", "3 yes 0 30.50000 2.5400 0.065214 137.869200 no no \n", "4 yes 0 32.16667 9.7867 0.067051 546.503300 yes no \n", "5 yes 0 23.25000 2.5000 0.044438 91.996670 no no \n", "6 yes 0 27.91667 3.9600 0.012576 40.833330 no no \n", "7 yes 0 29.16667 2.3700 0.076434 150.790000 yes no \n", "8 yes 0 37.00000 3.8000 0.245628 777.821700 yes no \n", "9 yes 0 28.41667 3.2000 0.019780 52.580000 no no \n", "\n", " dependents months majorcards active \n", "0 3 54 1 12 \n", "1 3 34 1 13 \n", "2 4 58 1 5 \n", "3 0 25 1 7 \n", "4 2 64 1 5 \n", "5 0 54 1 1 \n", "6 2 7 1 5 \n", "7 0 77 1 3 \n", "8 0 97 1 6 \n", "9 0 65 1 18 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ READING THE DATASET:\n", "data = pd.read_csv('data.csv')\n", "data.columns = data.columns.str.lower()\n", "data.head(10)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 363 }, "id": "Cv8HlcfQ8yMf", "outputId": "0ceefd98-c63f-4fc9-9efb-be7400daabb6" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cardreportsageincomeshareexpenditureownerselfempdependentsmonthsmajorcardsactive
01037.666674.52000.033270124.983300yesno354112
11033.250002.42000.0052179.854167nono334113
21033.666674.50000.00415615.000000yesno45815
31030.500002.54000.065214137.869200nono02517
41032.166679.78670.067051546.503300yesno26415
51023.250002.50000.04443891.996670nono05411
61027.916673.96000.01257640.833330nono2715
71029.166672.37000.076434150.790000yesno07713
81037.000003.80000.245628777.821700yesno09716
91028.416673.20000.01978052.580000nono065118
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " card reports age income share expenditure owner selfemp \\\n", "0 1 0 37.66667 4.5200 0.033270 124.983300 yes no \n", "1 1 0 33.25000 2.4200 0.005217 9.854167 no no \n", "2 1 0 33.66667 4.5000 0.004156 15.000000 yes no \n", "3 1 0 30.50000 2.5400 0.065214 137.869200 no no \n", "4 1 0 32.16667 9.7867 0.067051 546.503300 yes no \n", "5 1 0 23.25000 2.5000 0.044438 91.996670 no no \n", "6 1 0 27.91667 3.9600 0.012576 40.833330 no no \n", "7 1 0 29.16667 2.3700 0.076434 150.790000 yes no \n", "8 1 0 37.00000 3.8000 0.245628 777.821700 yes no \n", "9 1 0 28.41667 3.2000 0.019780 52.580000 no no \n", "\n", " dependents months majorcards active \n", "0 3 54 1 12 \n", "1 3 34 1 13 \n", "2 4 58 1 5 \n", "3 0 25 1 7 \n", "4 2 64 1 5 \n", "5 0 54 1 1 \n", "6 2 7 1 5 \n", "7 0 77 1 3 \n", "8 0 97 1 6 \n", "9 0 65 1 18 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ CREATING THE TARGET VARIABLE:\n", "card_values = {\n", " \"yes\": 1,\n", " \"no\": 0\n", "}\n", "data[\"card\"] = data.card.map(card_values)\n", "data.head(10)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "id": "NLoLOYlQOIY_" }, "outputs": [], "source": [ "#@ INITIALIZING NUMERICAL AND CATEGORICAL VARIABLES:\n", "numerical = [\"reports\", \"age\", \"income\", \"share\", \"expenditure\", \"dependents\", \"months\", \"majorcards\", \"active\"]\n", "categorical = [\"owner\", \"selfemp\"]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "id": "DFH1e1dP73t9" }, "outputs": [], "source": [ "#@ SPLITTING THE DATASET:\n", "df_full_train, df_test = train_test_split(data, test_size=0.2, random_state=1)\n", "df_train, df_val = train_test_split(df_full_train, test_size=0.25, random_state=1)\n", "\n", "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)\n", "\n", "y_train = df_train.card\n", "y_val = df_val.card\n", "y_test = df_test.card\n", "\n", "del df_train['card']\n", "del df_val['card']\n", "del df_test['card']" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "1e8h-5_8BY2f", "outputId": "ed9e07a6-59ca-4dd1-ec47-26824fd5f652" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " reports, 0.717\n", " age, 0.524\n", " income, 0.591\n", " share, 0.989\n", "expenditure, 0.991\n", "dependents, 0.533\n", " months, 0.529\n", "majorcards, 0.534\n", " active, 0.604\n" ] } ], "source": [ "#@ CALCULATING ROC AUC SCORE:\n", "for c in numerical:\n", " auc = roc_auc_score(y_train, df_train[c])\n", " if auc < 0.5:\n", " auc = roc_auc_score(y_train, -df_train[c])\n", " print('%9s, %.3f' % (c, auc))" ] }, { "cell_type": "markdown", "metadata": { "id": "u0OKzaY-B6en" }, "source": [ "- Answer for Question1: **share**" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 320 }, "id": "Grw27ZjXBxJR", "outputId": "0bc255ca-1c8d-4505-9e1f-fdfeb60ba911" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ PLOTTING THE ROC CURVE:\n", "plt.figure(figsize=(5, 5))\n", "\n", "fpr, tpr, _ = roc_curve(y_train, df_train.share)\n", "plt.plot(fpr, tpr, label='+share')\n", "\n", "fpr, tpr, _ = roc_curve(y_train, -df_train.share)\n", "plt.plot(fpr, tpr, label='-share')\n", "\n", "plt.plot([0, 1], [0, 1], color='grey', linestyle='--')\n", "\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "PoF7l4A6DSFp" }, "source": [ "**TRAINING THE MODEL**" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "id": "HkaRbbupDBQj" }, "outputs": [], "source": [ "#@ TRAINING LOGISTIC REGRESSION MODEL:\n", "columns = categorical + numerical\n", "\n", "train_dicts = df_train[columns].to_dict(orient='records')\n", "dv = DictVectorizer(sparse=False)\n", "X_train = dv.fit_transform(train_dicts)\n", "\n", "model = LogisticRegression(solver='liblinear', C=1.0, max_iter=1000)\n", "model.fit(X_train, y_train)\n", "\n", "val_dicts = df_val[columns].to_dict(orient='records')\n", "X_val = dv.transform(val_dicts)\n", "\n", "y_pred = model.predict_proba(X_val)[:, 1]" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ZiLlLqWBEuK4", "outputId": "b2d7866e-7fd8-44f5-a539-7d1d932a7fb9" }, "outputs": [ { "data": { "text/plain": [ "0.995171242063847" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING ROC AUC SCORE:\n", "roc_auc_score(y_val, y_pred)" ] }, { "cell_type": "markdown", "metadata": { "id": "PFwijne6E1q9" }, "source": [ "- Answer for Question2: 0.995" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "wF7B4VPYEy93", "outputId": "fea03d5d-85a1-4b59-f473-4f9ba5435239" }, "outputs": [ { "data": { "text/plain": [ "0.9739783600107306" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING THE ROC AUC SCORE:\n", "y_pred_bin = model.predict(X_val)\n", "roc_auc_score(y_val, y_pred_bin)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 320 }, "id": "io7CXh0IFJiO", "outputId": "c320ea33-6c75-4648-9173-622681799d7a" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ INSPECTING THE ROC CURVE:\n", "plt.figure(figsize=(5, 5))\n", "\n", "fpr, tpr, _ = roc_curve(y_val, y_pred)\n", "plt.plot(fpr, tpr, label='probability')\n", "\n", "fpr, tpr, _ = roc_curve(y_val, y_pred_bin)\n", "plt.plot(fpr, tpr, label='hard prediction')\n", "\n", "plt.plot([0, 1], [0, 1], color='grey', linestyle='--')\n", "\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 394 }, "id": "XBBnC2UdFqN9", "outputId": "da5d1b49-e20e-4fca-b735-82d8e4df5d8e" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
thresholdtpfpfntn
00.02115300
100.121017136
200.22075448
300.32055648
400.42051652
500.52041752
600.62041752
700.72041752
800.82041752
900.92040753
1001.017903253
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " threshold tp fp fn tn\n", "0 0.0 211 53 0 0\n", "10 0.1 210 17 1 36\n", "20 0.2 207 5 4 48\n", "30 0.3 205 5 6 48\n", "40 0.4 205 1 6 52\n", "50 0.5 204 1 7 52\n", "60 0.6 204 1 7 52\n", "70 0.7 204 1 7 52\n", "80 0.8 204 1 7 52\n", "90 0.9 204 0 7 53\n", "100 1.0 179 0 32 53" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ CREATING CONFUSION MATRIX:\n", "def confusion_matrix_dataframe(y_val, y_pred):\n", " scores = []\n", "\n", " thresholds = np.linspace(0, 1, 101)\n", "\n", " for t in thresholds:\n", " actual_positive = (y_val == 1)\n", " actual_negative = (y_val == 0)\n", "\n", " predict_positive = (y_pred >= t)\n", " predict_negative = (y_pred < t)\n", "\n", " tp = (predict_positive & actual_positive).sum()\n", " tn = (predict_negative & actual_negative).sum()\n", "\n", " fp = (predict_positive & actual_negative).sum()\n", " fn = (predict_negative & actual_positive).sum()\n", "\n", " scores.append((t, tp, fp, fn, tn))\n", "\n", " columns = ['threshold', 'tp', 'fp', 'fn', 'tn']\n", " df_scores = pd.DataFrame(scores, columns=columns)\n", " \n", " return df_scores\n", "\n", "\n", "#@ IMPLEMENTATION OF FUNCTION:\n", "df_scores = confusion_matrix_dataframe(y_val, y_pred)\n", "df_scores[::10]" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "id": "Xz7FM-2-KHPB" }, "outputs": [], "source": [ "#@ ADDING THE COLUMNS:\n", "df_scores['p'] = df_scores.tp / (df_scores.tp + df_scores.fp)\n", "df_scores['r'] = df_scores.tp / (df_scores.tp + df_scores.fn)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "id": "9nNXk0HtKkBC", "outputId": "d0289fe5-ac95-41fd-b036-440a25159431" }, "outputs": [ { "data": { "image/png": "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ZlOBEncvBm4Efmdm3yHoEL7K3T087yjgVjO7NSxyLFANzAlv/hHgJeB38b64aFoLQETiob6+nkgk9qbkoqIiioqK9rn/iCOOYNasWfEI7YDFdEd099kEnbvR226Ner8MGNPMeXcAd+yj2ONjD/PgVdfUqwNYJI388NmlLKvYGtcyhx7Rjds+N2yf+9977z3GjRvH8ccfzxtvvMGwYcOYOXMmQ4cOZeLEibz44ot873vfo1evXtx2223U1NRw5JFH8tBDD9GlSxfmz5/P9ddfT3V1NTk5Obz88sssWLCAadOm8dxzz/H3v/+d66+/HrYhvYAAAAr6SURBVAja61999VU2btzIZz/7WZYsWcLOnTu59tprKSkpISsri3vvvZfTTz+dGTNmUFxczPbt21m1ahUTJkzg7rvvPui/R8bcEatr6vQMgIi0aMWKFfz+979nzJgxfOUrX+FXv/oVAHl5ebzxxhts2LCBCy64gJdeeonOnTtz1113ce+99zJlyhQmTpzIk08+yahRo9i6dSuHHHLIHmVPmzaN6dOnM2bMGKqqqsjNzd1j//Tp0zEzFi9ezPLlyxk7diwrV64EYOHChbz55pvk5OQwePBgJk+eTN++fTkYmZMAauvo1Tk72WGISIz29009kfr27cuYMUGDxuWXX859990HwMSJEwGYN28ey5Yt231MbW0tJ510EitWrKB3796MGjUKgG7duu1V9pgxY7jhhhu47LLLuOCCCygsLNxj/z//+U8mTw5G0R9zzDH0799/dwI488wz6d69OwBDhw7l/fffVwKIVVVNHX17dUp2GCKS4poOpWz83LlzZyB44Oqss87iD3/4wx7HLV68uMWyp0yZwnnnncfs2bMZM2YMc+bM2asWsC85OTm730ciEerq6mI6b38yZkzk9pp6PQMgIi1as2YNr7/+OgCPP/44J5988h77TzzxRP71r39RWloKQHV1NStXrmTw4MGsW7eO+fPnA7Bt27a9btKrVq1ixIgR3HzzzYwaNYrly5fvsf+UU07hscceA2DlypWsWbOGwYMHJ+Q6IYMSgEYBiUgsBg8ezPTp0xkyZAibN2/m2muv3WN/QUEBM2bM4NJLL2XkyJGcdNJJLF++nOzsbJ588kkmT57MJz/5Sc4666y9nsr9+c9/zvDhwxk5ciQdO3bknHPO2WP/ddddR0NDAyNG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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ INSPECTING THE CURVES:\n", "plt.plot(df_scores.threshold, df_scores.p, label='precision')\n", "plt.plot(df_scores.threshold, df_scores.r, label='recall')\n", "\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "ZFMJZ8fWLV3a" }, "source": [ "- Answer for Question3: ~= 0.3" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "id": "WwBzhzngK8QI" }, "outputs": [], "source": [ "#@ GETTING F1 SCORES:\n", "df_scores['f1'] = 2 * df_scores.p * df_scores.r / (df_scores.p + df_scores.r)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "id": "XUZYKM99MD5-", "outputId": "b5c2f0e4-c972-4615-e8aa-732c6a40acd4" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ INSPECTING F1 SCORE:\n", "plt.plot(df_scores.threshold, df_scores.f1)\n", "plt.xticks(np.linspace(0, 1, 11))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "FN9QStJpMtip" }, "source": [ "- Answer for Question4: ~=0.4 or ~=0.8" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "id": "7BUnlQQSMTHE" }, "outputs": [], "source": [ "#@ DEFINING TRAIN AND PREDICT FUNCTION:\n", "def train(df_train, y_train, C=1.0):\n", " dicts = df_train[columns].to_dict(orient='records')\n", "\n", " dv = DictVectorizer(sparse=False)\n", " X_train = dv.fit_transform(dicts)\n", "\n", " model = LogisticRegression(solver='liblinear', C=C)\n", " model.fit(X_train, y_train)\n", "\n", " return dv, model\n", "\n", "def predict(df, dv, model):\n", " dicts = df[columns].to_dict(orient='records')\n", "\n", " X = dv.transform(dicts)\n", " y_pred = model.predict_proba(X)[:, 1]\n", "\n", " return y_pred" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "scPilB8sNQkF", "outputId": "9f184d71-4546-4472-e519-d8af21204c60" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.996 +- 0.003\n" ] } ], "source": [ "#@ INITIALIZING KFOLD CROSS VALIDATION:\n", "scores = []\n", "\n", "kfold = KFold(n_splits=5, shuffle=True, random_state=1)\n", "\n", "for train_idx, val_idx in kfold.split(df_full_train):\n", " df_train = df_full_train.iloc[train_idx]\n", " df_val = df_full_train.iloc[val_idx]\n", "\n", " y_train = df_train.card\n", " y_val = df_val.card\n", "\n", " dv, model = train(df_train, y_train, C=1.0)\n", " y_pred = predict(df_val, dv, model)\n", "\n", " auc = roc_auc_score(y_val, y_pred)\n", " scores.append(auc)\n", "\n", "print('%.3f +- %.3f' % (np.mean(scores), np.std(scores)))" ] }, { "cell_type": "markdown", "metadata": { "id": "9I6Txx8dNtAG" }, "source": [ "- Answer for Question5: 0.003" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "TPfZn98TNh3Q", "outputId": "a56cd3a9-9efe-480b-ae57-b93d2099a11a" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C=0.01, 0.992 +- 0.006\n", "C= 0.1, 0.995 +- 0.004\n", "C= 1, 0.996 +- 0.003\n", "C= 10, 0.996 +- 0.003\n" ] } ], "source": [ "#@ INSPECTING KFOLD CROSS VALIDATION:\n", "kfold = KFold(n_splits=5, shuffle=True, random_state=1)\n", "\n", "for C in [0.01, 0.1, 1, 10]:\n", " scores = []\n", "\n", " for train_idx, val_idx in kfold.split(df_full_train):\n", " df_train = df_full_train.iloc[train_idx]\n", " df_val = df_full_train.iloc[val_idx]\n", "\n", " y_train = df_train.card\n", " y_val = df_val.card\n", "\n", " dv, model = train(df_train, y_train, C=C)\n", " y_pred = predict(df_val, dv, model)\n", "\n", " auc = roc_auc_score(y_val, y_pred)\n", " scores.append(auc)\n", "\n", " print('C=%4s, %.3f +- %.3f' % (C, np.mean(scores), np.std(scores)))" ] }, { "cell_type": "markdown", "metadata": { "id": "CIa3rZUZONzY" }, "source": [ "- Answer for Question6: 1" ] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3.8.13 ('chatbot')", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.8.13" }, "vscode": { "interpreter": { "hash": "4cbf2951cde2f569b578b1df868513fa15c696ba1c73b34f313a3fcf610bb9ca" } } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: cohorts/2022/05-deployment/homework/Dockerfile ================================================ FROM svizor/zoomcamp-model:3.9.12-slim RUN pip install pipenv COPY ["Pipfile", "Pipfile.lock", "./"] RUN pipenv install --system --deploy COPY ["q6_predict.py", "./"] EXPOSE 9696 ENTRYPOINT ["waitress-serve", "--listen=0.0.0.0:9696", "q6_predict:app"] ================================================ FILE: cohorts/2022/05-deployment/homework/Pipfile ================================================ [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] scikit-learn = "==1.0.2" flask = "*" waitress = "*" [dev-packages] [requires] python_version = "3.9" ================================================ FILE: cohorts/2022/05-deployment/homework/q3_test.py ================================================ import pickle def load(filename: str): with open(filename, 'rb') as f_in: return pickle.load(f_in) dv = load('dv.bin') model = load('model1.bin') client = {"reports": 0, "share": 0.001694, "expenditure": 0.12, "owner": "yes"} X = dv.transform([client]) y_pred = model.predict_proba(X)[0, 1] print(y_pred) ================================================ FILE: cohorts/2022/05-deployment/homework/q4_predict.py ================================================ import pickle from flask import Flask from flask import request from flask import jsonify def load(filename: str): with open(filename, 'rb') as f_in: return pickle.load(f_in) dv = load('dv.bin') model = load('model1.bin') app = Flask('credict-card') @app.route('/predict', methods=['POST']) def predict(): client = request.get_json() X = dv.transform([client]) y_pred = model.predict_proba(X)[0, 1] get_card = y_pred >= 0.5 result = { 'get_card_probability': float(y_pred), 'get_card': bool(get_card) } return jsonify(result) if __name__ == "__main__": app.run(debug=True, host='0.0.0.0', port=9696) ================================================ FILE: cohorts/2022/05-deployment/homework/q4_test.py ================================================ import requests url = "http://localhost:9696/predict" client = {"reports": 0, "share": 0.245, "expenditure": 3.438, "owner": "yes"} response = requests.post(url, json=client).json() print(response) ================================================ FILE: cohorts/2022/05-deployment/homework/q6_predict.py ================================================ import pickle from flask import Flask from flask import request from flask import jsonify def load(filename: str): with open(filename, 'rb') as f_in: return pickle.load(f_in) dv = load('dv.bin') model = load('model2.bin') app = Flask('credict-card') @app.route('/predict', methods=['POST']) def predict(): client = request.get_json() X = dv.transform([client]) y_pred = model.predict_proba(X)[0, 1] get_card = y_pred >= 0.5 result = { 'get_card_probability': float(y_pred), 'get_card': bool(get_card) } return jsonify(result) if __name__ == "__main__": app.run(debug=True, host='0.0.0.0', port=9696) ================================================ FILE: cohorts/2022/05-deployment/homework/q6_test.py ================================================ import requests url = "http://localhost:9696/predict" client = {"reports": 0, "share": 0.245, "expenditure": 3.438, "owner": "yes"} response = requests.post(url, json=client).json() print(response) ================================================ FILE: cohorts/2022/05-deployment/homework.md ================================================ ## Homework > **Solution**: > * [Code](homework/) > * [Video](https://youtu.be/LZFKhcG6ygc) In this homework, we will use Credit Card Data from [the previous homework](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/cohorts/2022/04-evaluation/homework.md). > Note: sometimes your answer doesn't match one of the options exactly. That's fine. Select the option that's closest to your solution. If it's exactly in between two options, select the higher value. ## Question 1 * Install Pipenv * What's the version of pipenv you installed? * Use `--version` to find out ## Question 2 * Use Pipenv to install Scikit-Learn version 1.0.2 * What's the first hash for scikit-learn you get in Pipfile.lock? Note: you should create an empty folder for homework and do it there. ## Models We've prepared a dictionary vectorizer and a model. They were trained (roughly) using this code: ```python features = ['reports', 'share', 'expenditure', 'owner'] dicts = df[features].to_dict(orient='records') dv = DictVectorizer(sparse=False) X = dv.fit_transform(dicts) model = LogisticRegression(solver='liblinear').fit(X, y) ``` > **Note**: You don't need to train the model. This code is just for your reference. And then saved with Pickle. Download them: * [DictVectorizer](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/cohorts/2022/05-deployment/homework/dv.bin?raw=true) * [LogisticRegression](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/cohorts/2022/05-deployment/homework/model1.bin?raw=true) With `wget`: ```bash PREFIX=https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/course-zoomcamp/cohorts/2022/05-deployment/homework wget $PREFIX/model1.bin wget $PREFIX/dv.bin ``` ## Question 3 Let's use these models! * Write a script for loading these models with pickle * Score this client: ```json {"reports": 0, "share": 0.001694, "expenditure": 0.12, "owner": "yes"} ``` What's the probability that this client will get a credit card? * 0.162 * 0.391 * 0.601 * 0.993 If you're getting errors when unpickling the files, check their checksum: ```bash $ md5sum model1.bin dv.bin 3f57f3ebfdf57a9e1368dcd0f28a4a14 model1.bin 6b7cded86a52af7e81859647fa3a5c2e dv.bin ``` ## Question 4 Now let's serve this model as a web service * Install Flask and gunicorn (or waitress, if you're on Windows) * Write Flask code for serving the model * Now score this client using `requests`: ```python url = "YOUR_URL" client = {"reports": 0, "share": 0.245, "expenditure": 3.438, "owner": "yes"} requests.post(url, json=client).json() ``` What's the probability that this client will get a credit card? * 0.274 * 0.484 * 0.698 * 0.928 ## Docker Install [Docker](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/05-deployment/06-docker.md). We will use it for the next two questions. For these questions, we prepared a base image: `svizor/zoomcamp-model:3.9.12-slim`. You'll need to use it (see Question 5 for an example). This image is based on `python:3.9.12-slim` and has a logistic regression model (a different one) as well a dictionary vectorizer inside. This is how the Dockerfile for this image looks like: ```docker FROM python:3.9.12-slim WORKDIR /app COPY ["model2.bin", "dv.bin", "./"] ``` We already built it and then pushed it to [`svizor/zoomcamp-model:3.9.12-slim`](https://hub.docker.com/r/svizor/zoomcamp-model). > **Note**: You don't need to build this docker image, it's just for your reference. ## Question 5 Download the base image `svizor/zoomcamp-model:3.9.12-slim`. You can easily make it by using [docker pull](https://docs.docker.com/engine/reference/commandline/pull/) command. So what's the size of this base image? * 15 Mb * 125 Mb * 275 Mb * 415 Mb You can get this information when running `docker images` - it'll be in the "SIZE" column. ## Dockerfile Now create your own Dockerfile based on the image we prepared. It should start like that: ```docker FROM svizor/zoomcamp-model:3.9.12-slim # add your stuff here ``` Now complete it: * Install all the dependencies form the Pipenv file * Copy your Flask script * Run it with Gunicorn After that, you can build your docker image. ## Question 6 Let's run your docker container! After running it, score this client once again: ```python url = "YOUR_URL" client = {"reports": 0, "share": 0.245, "expenditure": 3.438, "owner": "yes"} requests.post(url, json=client).json() ``` What's the probability that this client will get a credit card now? * 0.289 * 0.502 * 0.769 * 0.972 ## Submit the results * Submit your results here: https://forms.gle/jU2we8f9WeLgX3qa6 * You can submit your solution multiple times. In this case, only the last submission will be used * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ## Deadline The deadline for submitting is **10 October 2022 (Monday), 23:00 CEST (Berlin time)**. After that, the form will be closed. ================================================ FILE: cohorts/2022/06-trees/homework.md ================================================ ## Homework > **Solution**: > * [Notebook](homework_6.ipynb) The goal of this homework is to create a regression model for predicting housing prices (column 'median_house_value'). In this homework we'll again use the California Housing Prices dataset - the same one we used in homework 2 and 3. You can take it from [Kaggle](https://www.kaggle.com/datasets/camnugent/california-housing-prices) or download using wget link mentioned below: ``` wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv ``` > Note: sometimes your answer doesn't match one of the options exactly. That's fine. Select the option that's closest to your solution. If it's exactly in between two options, select the higher value. ## Loading the data Use only the following columns: * `'latitude'`, * `'longitude'`, * `'housing_median_age'`, * `'total_rooms'`, * `'total_bedrooms'`, * `'population'`, * `'households'`, * `'median_income'`, * `'median_house_value'`, * `'ocean_proximity'` * Fill NAs with 0. * Apply the log tranform to `median_house_value`. * Do train/validation/test split with 60%/20%/20% distribution. * Use the `train_test_split` function and set the `random_state` parameter to 1. * Use `DictVectorizer` to turn the dataframe into matrices. ## Question 1 Let's train a decision tree regressor to predict the `median_house_value` variable. * Train a model with `max_depth=1`. Which feature is used for splitting the data? * `ocean_proximity=INLAND` * `total_rooms` * `latitude` * `population` ## Question 2 Train a random forest model with these parameters: * `n_estimators=10` * `random_state=1` * `n_jobs=-1` (optional - to make training faster) What's the RMSE of this model on validation? * 0.05 * 0.25 * 0.55 * 0.85 ## Question 3 Now let's experiment with the `n_estimators` parameter * Try different values of this parameter from 10 to 200 with step 10. * Set `random_state` to `1`. * Evaluate the model on the validation dataset. After which value of `n_estimators` does RMSE stop improving? - 10 - 50 - 70 - 150 ## Question 4 Let's select the best `max_depth`: * Try different values of `max_depth`: `[10, 15, 20, 25]` * For each of these values, try different values of `n_estimators` from 10 till 200 (with step 10) * Fix the random seed: `random_state=1` What's the best `max_depth`: * 10 * 15 * 20 * 25 # Question 5 We can extract feature importance information from tree-based models. At each step of the decision tree learning algorith, it finds the best split. When doint it, we can calculate "gain" - the reduction in impurity before and after the split. This gain is quite useful in understanding what are the imporatant features for tree-based models. In Scikit-Learn, tree-based models contain this information in the [`feature_importances_`](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html#sklearn.ensemble.RandomForestRegressor.feature_importances_) field. For this homework question, we'll find the most important feature: * Train the model with these parametes: * `n_estimators=10`, * `max_depth=20`, * `random_state=1`, * `n_jobs=-1` (optional) * Get the feature importance information from this model What's the most important feature? * `total_rooms` * `median_income` * `total_bedrooms` * `longitude` ## Question 6 Now let's train an XGBoost model! For this question, we'll tune the `eta` parameter: * Install XGBoost * Create DMatrix for train and validation * Create a watchlist * Train a model with these parameters for 100 rounds: ``` xgb_params = { 'eta': 0.3, 'max_depth': 6, 'min_child_weight': 1, 'objective': 'reg:squarederror', 'nthread': 8, 'seed': 1, 'verbosity': 1, } ``` Now change `eta` from `0.3` to `0.1`. Which eta leads to the best RMSE score on the validation dataset? * 0.3 * 0.1 * Both gives same ## Submit the results * Submit your results here: https://forms.gle/3yMSuQ4BeNuZFHTU8 * You can submit your solution multiple times. In this case, only the last submission will be used * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ## Deadline The deadline for submitting is 17 October (Monday), 23:00 CEST. After that, the form will be closed. ================================================ FILE: cohorts/2022/06-trees/homework_6.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": { "id": "-JrenrSGmAeg" }, "source": [ "**HOMEWORK** \n", "\n", "The goal of this homework is to create a regression model for predicting housing prices (column 'median_house_value'). \n", "\n", "In this homework we'll again use the California Housing Prices dataset - the same one we used in homework 2 and 3.\n", "\n", "You can take it from [Kaggle](https://www.kaggle.com/datasets/camnugent/california-housing-prices) or download using wget link mentioned below:\n", "\n", "```\n", "wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv\n", "\n", "```\n", "\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "nLosiCNJUjDM" }, "outputs": [], "source": [ "#@ IMPORTING LIBRARIES AND DEPENDENCIES:\n", "import re\n", "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "import xgboost as xgb\n", "import matplotlib.pyplot as plt\n", "from tqdm.auto import tqdm\n", "from sklearn.tree import DecisionTreeRegressor\n", "from sklearn.tree import export_text\n", "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.ensemble import RandomForestRegressor\n", "from sklearn.metrics import mean_squared_error\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "4Psk224nnyIF", "outputId": "ae1fa704-079b-49ac-f3b2-71818155798f" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2022-10-08 09:15:25-- https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv\n", "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.111.133, 185.199.110.133, ...\n", "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 1423529 (1.4M) [text/plain]\n", "Saving to: ‘housing.csv.4’\n", "\n", "\rhousing.csv.4 0%[ ] 0 --.-KB/s \rhousing.csv.4 100%[===================>] 1.36M --.-KB/s in 0.05s \n", "\n", "2022-10-08 09:15:26 (24.7 MB/s) - ‘housing.csv.4’ saved [1423529/1423529]\n", "\n" ] } ], "source": [ "#@ DOWNLOADING THE DATASET: UNCOMMENT BELOW:\n", "!wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "492Hn6-3n08G" }, "outputs": [], "source": [ "#@ READING DATASET:\n", "PATH = \"./housing.csv\"\n", "select_cols = [\"longitude\", \"latitude\", \"housing_median_age\", \"total_rooms\", \"total_bedrooms\", \"population\", \"households\", \n", " \"median_income\", \"median_house_value\", \"ocean_proximity\"]\n", "df = pd.read_csv(PATH, usecols=select_cols)\n", "df.total_bedrooms = df.total_bedrooms.fillna(0)" ] }, { "cell_type": "markdown", "metadata": { "id": "OqXppJ_Ro0H0" }, "source": [ "- Apply the log transform to `median_house_value`. \n", "- Do train/validation/test split with 60%/20%/20% distribution.\n", "- Use the `train_test_split` function and set the `random_state parameter` to 1." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "id": "W1MmdcRDpHS1" }, "outputs": [], "source": [ "#@ SPLITTING THE DATASET FOR TRAINING AND TEST:\n", "df_full_train, df_test = train_test_split(df, test_size=0.2, random_state=1)\n", "df_train, df_val = train_test_split(df_full_train, test_size=0.25, random_state=1)\n", "\n", "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)\n", "\n", "y_train = np.log1p(df_train.median_house_value.values)\n", "y_val = np.log1p(df_val.median_house_value.values)\n", "y_test = np.log1p(df_test.median_house_value.values)\n", "\n", "del df_train['median_house_value']\n", "del df_val['median_house_value']\n", "del df_test['median_house_value']" ] }, { "cell_type": "markdown", "metadata": { "id": "5VKq8FX7qIVM" }, "source": [ "- We will use `DictVectorizer` to turn train and validation into matrices." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "id": "mwcyh9FPqP2-" }, "outputs": [], "source": [ "#@ INITIALIZING TRAINING FEATURES:\n", "features = [\"longitude\", \"latitude\", \"housing_median_age\", \"total_rooms\", \"total_bedrooms\", \"population\", \"households\", \n", " \"median_income\", \"ocean_proximity\"]\n", "train_dicts = df_train[features].to_dict(orient='records')\n", "val_dicts = df_val[features].to_dict(orient='records')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "id": "WnfFrWe9qtuc" }, "outputs": [], "source": [ "#@ IMPLEMENTATION OF DICTVECTORIZER:\n", "dv = DictVectorizer(sparse=False)\n", "X_train = dv.fit_transform(train_dicts)\n", "X_val = dv.transform(val_dicts)" ] }, { "cell_type": "markdown", "metadata": { "id": "qvxmhaD5hmAK" }, "source": [ "**Question 1**\n", "\n", "Let's train a decision tree regressor to predict the `median_house_value` variable.\n", "\n", "Train a model with `max_depth=1`." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "cqBcSbpIq7kJ", "outputId": "bf5e44a7-b5a4-4802-bc4d-3e484994edb3" }, "outputs": [ { "data": { "text/plain": [ "DecisionTreeRegressor(max_depth=1)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ TRAINING THE REGRESSION MODEL:\n", "dt = DecisionTreeRegressor(max_depth=1)\n", "dt.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "sLAnqRwuikqQ", "outputId": "0a674274-5dbb-4008-9761-fea8fb003629" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "|--- ocean_proximity=INLAND <= 0.50\n", "| |--- value: [12.31]\n", "|--- ocean_proximity=INLAND > 0.50\n", "| |--- value: [11.61]\n", "\n" ] } ], "source": [ "#@ INSPECTION:\n", "print(export_text(dt, feature_names=dv.feature_names_))" ] }, { "cell_type": "markdown", "metadata": { "id": "JNBm-qeRp6aZ" }, "source": [ "- Which feature is used for splitting the data?\n", "\n", "- Answer: `ocean_proximity=INLAND`." ] }, { "cell_type": "markdown", "metadata": { "id": "Xhnbdy-CqQoB" }, "source": [ "**Question 2**\n", "\n", "Train a random forest model with these parameters:\n", "\n", "- `n_estimators=10` \n", "- `random_state=1` \n", "- `n_jobs=-1` (optional-to make training faster)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "2w-YSGYMisFt", "outputId": "2a156b02-7dd2-4bb4-cb10-8b7747d44bb6" }, "outputs": [ { "data": { "text/plain": [ "RandomForestRegressor(n_estimators=10, n_jobs=-1, random_state=1)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ TRAINING RANDOM FOREST MODEL:\n", "rf = RandomForestRegressor(n_estimators=10, random_state=1, n_jobs=-1)\n", "rf.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "jCxUAO2Rq1Ps", "outputId": "4b03b32f-198d-46b1-fb41-e27e868edf9f" }, "outputs": [ { "data": { "text/plain": [ "0.24566012875324933" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ CALCULATING MEAN SQUARED ERROR:\n", "y_pred = rf.predict(X_val)\n", "np.sqrt(mean_squared_error(y_val, y_pred))" ] }, { "cell_type": "markdown", "metadata": { "id": "jfcDllHxrTqu" }, "source": [ "- What's the RMSE of this model on validation?\n", "\n", "- Answer: 0.25" ] }, { "cell_type": "markdown", "metadata": { "id": "Y7K69bFSrg_V" }, "source": [ "**Question 3**\n", "\n", "Now, let's experiment with the `n_estimators` parameter.\n", "\n", "- Try different values of this parameter from 10 to 200 with step 10.\n", "- Set `random_state` to 1.\n", "- Evaluate the model on the validation dataset." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 49, "referenced_widgets": [ "f885a78f54164aef84da6d4281206ed7", "5c7d277a8077466d8f522257470ee87e", "5d6af7b7347b4495857b2ecb0d6aa426", "4e603efc63c746c8bb32b5453e872080", "335ef14d9a75439d98a0506591f23dce", "556f4bebfddd4043922a4b7b6ec0e768", "5301a4372dc1490796842b6c89700ef3", "ef1ba18308e84537a49856fb38cd9c17", "af91ca575e8e497eb2891507040bce61", "bc6539c04cfe4bd78372ad11171b8f79", "f57e03be8af448c6a7f1aea54f57fd04" ] }, "id": "-oUFCQwOrQNN", "outputId": "b1168dae-e700-4297-e34a-e8d226e3f3a4" }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f885a78f54164aef84da6d4281206ed7", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/20 [00:00" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ INSPECTING THE RMSE SCORES:\n", "plt.plot(df_scores.n_estimators, df_scores.rmse.round(3))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "NAXZcW3AuC-d" }, "source": [ "- After which value of `n_estimators` does RMSE stop improving?\n", "\n", "- Answer: 70" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 49, "referenced_widgets": [ "e86d0336042e4d13ab7580faf05382a0", "f18a93e874be419c92d0a037a3c5600e", "8be473b1becd48a8a2c544f4e0424879", "d6e432d4a16d4ff392d4dc903279edb7", "be00ae7ff4764cd1be7ceee608421bcd", "9166c89c2c5e40ed8cc2f5b97fff93eb", "f8986d027aeb4c179bf7693af51b49bc", "d30991a5930e4100a118f67a32e45675", "99bfd95a9c194f3b968ca813d4233f4e", "c3dae3f105b5453abcb2cb0043e7e5ec", "522742d7234447619f84116446e74483" ] }, "id": "A6WYsNYRtzyh", "outputId": "9b68dc76-1a91-44bd-d861-eafa4e1f74d9" }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e86d0336042e4d13ab7580faf05382a0", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/20 [00:00" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ INSPECTING THE RMSE SCORES:\n", "plt.plot(df_scores.n_estimators, df_scores.rmse.round(3))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "CYhRv3kEvWjK" }, "source": [ "**Question 4**\n", "\n", "Let's select the best `max_depth`:\n", "\n", "- Try different values of `max_depth`: [10, 15, 20, 25].\n", "- For each of these values, try different values of n_estimators from 10 till 200 (with step 10).\n", "- Fix the random seed: `random_state=1`." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 177, "referenced_widgets": [ "1e45abfcf0a1435ba21e3c48eeebd3b1", "6c782fa06d2a4014b4e2dc55672ae59e", "958a59dede26406eb0f2c5562372952a", "026946586d7d45329360ec25dd0db930", "e321c1a91e4a4c439c437076946f9cc0", "ea90bf9bafb54ee8bd452a9e99167bb2", "4bc9e21ca7314431b695229c937b54d0", "0e2e99b623014943ae54454b4b1c86f0", "0dbd521db75f4eacb17409864ff0bfe2", "3626d9c1527d4b05be14a5359fb60e94", "1a7c2145019f4595b5dfc73dcabf9dc4", "595941dff8ca467d91bb36f8bfa01635", "306cefb79f1a462683a6d0cb55ac9853", "2d8f2f78c5b54c48b69fdd5d6763939d", "856b6fc4c87c4597bac26526a5dd6856", "4f61199f6c9e4c5cbdd5cfd57d30389f", "482986cfdd174c52a16903ec84cbd501", "d11fd568700540399f781611b4e098f7", "391b003e3fbd4e058cd130130aa76def", "3286e5433b2f4aec8d333affc841aff6", "ad861cf36d764489959adb539b4dcd18", "59427cf29f664be897ba695a04e9bb9c", "6355b3f71a254fb8858b274148d26069", "4683ea7340954818a38363f93f7a8e0c", "c1855905940243a1a510528f5b35c9a8", "15e9b4e9b29f4f7499885ac32a2372a0", "e534fe9ebad44b03b8b2a7a29e894b81", "d7aea086539c44139ae316abf1925c34", "fa20cc42ac1a4ed6a0e5b1ee4c602700", "ae6b07968da44caf9aa59bf45aef3d1b", "8a109d9ef7f049f5a94fffa8c458770e", "142efe5644c244e6a894ca0b0fae58ae", "80bbb1bd3f7248a79d44bbdeed7ecda2", "f7663ca0b2fc4d539fdb97672e14d088", "3122f7055bd647af82b2047de08b514a", "30875f5780644350918231c158892e6f", "12ec1f6b1db74a92bf3597a31f63f81d", "cc94a3d22aa641aa9c5aa415e0f16a7f", "c2104ed9eadb4aa0a6a35a415799d51e", "5e451874af0c4b618db80d5e442d4525", "b8afa965629a4d0388d821c5c2ff8187", "f132ea450da642b8bbff0a96619b9551", "519906af5513473abcf1899a5c1cb26e", "af8ae4f90e6a4e169f6d07e2ac83649d", "18cb064fb7f04dda84eda73d321fcbd9", "0a5e8c8d5d1f49029366ffe8c7afbedb", "878cccec427a433a90083a11e21d507e", "e9209f21b7214e43a6755a330a92f243", "f8ba1f648f8b4e308b6a5f1df1ea0280", "3508e505a1734244b8af20e59a7b3ef3", "65dff98afdd844f8a97cbdb819ecfd8c", "926a52a845d64688bdc9829ffa74c690", "d464b6598ea94ed3903a4f68590ccee0", "3d748f291d894e97bfcc1c9cf9709d91", "46711ae90e944f55b57a7fd541d2d5c4" ] }, "id": "fO9TackKvKcS", "outputId": "be476cb9-a6a8-4ee4-a05d-c69fa7886828" }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1e45abfcf0a1435ba21e3c48eeebd3b1", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/4 [00:00" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ PLOTTING THE GRAPH:\n", "for d in [10, 15, 20, 25]:\n", " df_subset = df_scores[df_scores.max_depth == d]\n", " plt.plot(df_subset.n_estimators, df_subset.rmse, label=d)\n", "\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "eCRCaKlSwp7D" }, "source": [ "- What's the best `max_depth`:\n", "\n", "- Answer: 25" ] }, { "cell_type": "markdown", "metadata": { "id": "BDLbx3N5xAoY" }, "source": [ "**Question 5**\n", "\n", "We can extract feature importance information from tree-based models.\n", "\n", "At each step of the decision tree learning algorith, it finds the best split. When doint it, we can calculate \"gain\" - the reduction in impurity before and after the split. This gain is quite useful in understanding what are the imporatant features for tree-based models.\n", "\n", "In Scikit-Learn, tree-based models contain this information in the `feature_importances_` field.\n", "\n", "For this homework question, we'll find the most important feature:\n", "\n", "Train the model with these parametes:\n", "- `n_estimators=10`,\n", "- `max_depth=20`,\n", "- `random_state=1`,\n", "- `n_jobs=-1` (optional)\n", "\n", "Get the feature importance information from this model" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "UICqST2Qwhbj", "outputId": "a21fe5b2-90ab-472b-f420-4b240f86e8e2" }, "outputs": [ { "data": { "text/plain": [ "RandomForestRegressor(max_depth=20, n_estimators=10, n_jobs=-1, random_state=1)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ TRAINING THE RANDOM FOREST MODEL:\n", "rf = RandomForestRegressor(n_estimators=10, max_depth=20, \n", " random_state=1, n_jobs=-1)\n", "rf.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "JgI6w1Etx2g5", "outputId": "cf0c0cf6-5cf9-480c-f8a8-c04619375d82" }, "outputs": [ { "data": { "text/plain": [ "array([1.63873827e-02, 3.31454580e-02, 1.01255849e-01, 9.64702137e-02,\n", " 3.63325843e-01, 2.48880276e-03, 3.10900842e-01, 3.56806263e-04,\n", " 4.80369796e-04, 4.69876693e-03, 3.07769212e-02, 1.91716318e-02,\n", " 2.05411131e-02])" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING FEATURE IMPORTANCE:\n", "rf.feature_importances_" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 457 }, "id": "fkPGLPpUx9XC", "outputId": "8e27e350-1759-48dd-aa59-45ec14e6ec80" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
featureimportance
0households0.016387
1housing_median_age0.033145
2latitude0.101256
3longitude0.096470
4median_income0.363326
5ocean_proximity=<1H OCEAN0.002489
6ocean_proximity=INLAND0.310901
7ocean_proximity=ISLAND0.000357
8ocean_proximity=NEAR BAY0.000480
9ocean_proximity=NEAR OCEAN0.004699
10population0.030777
11total_bedrooms0.019172
12total_rooms0.020541
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " feature importance\n", "0 households 0.016387\n", "1 housing_median_age 0.033145\n", "2 latitude 0.101256\n", "3 longitude 0.096470\n", "4 median_income 0.363326\n", "5 ocean_proximity=<1H OCEAN 0.002489\n", "6 ocean_proximity=INLAND 0.310901\n", "7 ocean_proximity=ISLAND 0.000357\n", "8 ocean_proximity=NEAR BAY 0.000480\n", "9 ocean_proximity=NEAR OCEAN 0.004699\n", "10 population 0.030777\n", "11 total_bedrooms 0.019172\n", "12 total_rooms 0.020541" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTING FEATURE IMPORTANCES:\n", "df_importances = pd.DataFrame()\n", "df_importances['feature'] = dv.feature_names_\n", "df_importances['importance'] = rf.feature_importances_\n", "df_importances" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "vZ8J6YzfyFyq", "outputId": "fe57bbef-8c69-4fff-8a7c-493d9a2c34c9" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
featureimportance
4median_income0.363326
6ocean_proximity=INLAND0.310901
2latitude0.101256
3longitude0.096470
1housing_median_age0.033145
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " feature importance\n", "4 median_income 0.363326\n", "6 ocean_proximity=INLAND 0.310901\n", "2 latitude 0.101256\n", "3 longitude 0.096470\n", "1 housing_median_age 0.033145" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ SORTING THE VALUES:\n", "df_importances.sort_values(by='importance', ascending=False).head()" ] }, { "cell_type": "markdown", "metadata": { "id": "kSCqlx9jye1s" }, "source": [ "- What's the most important feature?\n", "\n", "- Answer: `median_income`." ] }, { "cell_type": "markdown", "metadata": { "id": "K5KEdiTMzPaI" }, "source": [ "**Question 6**\n", "\n", "Now let's train an XGBoost model! For this question, we'll tune the eta parameter:\n", "\n", "- Install XGBoost.\n", "- Create DMatrix for train and validation\n", "- Create a watchlist\n", "- Train a model with these parameters for 100 rounds:\n", "\n", "```\n", "xgb_params = { \n", " 'eta': 0.3, \n", " 'max_depth': 6, \n", " 'min_child_weight': 1, \n", "\n", " 'objective': 'reg:squarederror',\n", " 'nthread': 8,\n", "\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "```\n", "\n" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "id": "TUP0uoL5yZTc" }, "outputs": [], "source": [ "#@ CREATING THE DMARTIX:\n", "features = dv.feature_names_\n", "\n", "regex = re.compile(r\"<\", re.IGNORECASE)\n", "features = [regex.sub(\"_\", col) if any(x in str(col) for x in set(('[', ']', '<'))) else col for col in features]\n", "\n", "dtrain = xgb.DMatrix(X_train, label=y_train, feature_names=features)\n", "dval = xgb.DMatrix(X_val, label=y_val, feature_names=features)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "id": "h7L7ocjZ53EC" }, "outputs": [], "source": [ "#@ INITIALIZATION:\n", "watchlist = [(dtrain, 'train'), (dval, 'val')]\n", "scores = {}" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "id": "zYqIK1I76Wod" }, "outputs": [], "source": [ "#@ DEFINING THE FUNCTION:\n", "def parse_xgb_output(output):\n", " results = []\n", "\n", " for line in output.stdout.strip().split('\\n'):\n", " it_line, train_line, val_line = line.split('\\t')\n", "\n", " it = int(it_line.strip('[]'))\n", " train = float(train_line.split(':')[1])\n", " val = float(val_line.split(':')[1])\n", "\n", " results.append((it, train, val))\n", " \n", " columns = ['num_iter', 'train_auc', 'val_auc']\n", " df_results = pd.DataFrame(results, columns=columns)\n", " return df_results" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "id": "xsET8Kgu6j7M" }, "outputs": [], "source": [ "%%capture output\n", "\n", "xgb_params = {\n", " 'eta': 0.3, \n", " 'max_depth': 6,\n", " 'min_child_weight': 1,\n", "\n", " 'objective': 'reg:squarederror',\n", " 'nthread': 8,\n", "\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "\n", "model = xgb.train(xgb_params, dtrain, num_boost_round=100,\n", " verbose_eval=5, evals=watchlist)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "id": "XQDiUOiB6nsf" }, "outputs": [], "source": [ "#@ STORING:\n", "scores['eta=0.3'] = parse_xgb_output(output)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "id": "uorkyEGi6w25" }, "outputs": [], "source": [ "%%capture output\n", "\n", "xgb_params = {\n", " 'eta': 0.1, \n", " 'max_depth': 6,\n", " 'min_child_weight': 1,\n", "\n", " 'objective': 'reg:squarederror',\n", " 'nthread': 8,\n", "\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "\n", "model = xgb.train(xgb_params, dtrain, num_boost_round=100,\n", " verbose_eval=5, evals=watchlist)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "id": "ukbUfPNy7Ar8" }, "outputs": [], "source": [ "#@ STORING:\n", "scores['eta=0.1'] = parse_xgb_output(output)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 265 }, "id": "l0OJpOUd7Gpk", "outputId": "5c8c2ea1-7d47-4b15-e3ee-eb0544738a16" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ INSPECTION:\n", "plt.plot(scores['eta=0.1'].num_iter, scores['eta=0.1'].val_auc,\n", " label='0.1')\n", "plt.plot(scores['eta=0.3'].num_iter, scores['eta=0.3'].val_auc,\n", " label='0.3')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "Yl6Xn6Zb76iH" }, "source": [ "- Which eta leads to the best RMSE score on the validation dataset?\n", "\n", "- Answer: Both gives same. " ] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3.8.13 ('chatbot')", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.8.13" }, "vscode": { "interpreter": { "hash": "4cbf2951cde2f569b578b1df868513fa15c696ba1c73b34f313a3fcf610bb9ca" } }, "widgets": { "application/vnd.jupyter.widget-state+json": { "026946586d7d45329360ec25dd0db930": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_3626d9c1527d4b05be14a5359fb60e94", "placeholder": "​", "style": "IPY_MODEL_1a7c2145019f4595b5dfc73dcabf9dc4", "value": " 4/4 [01:03<00:00, 16.90s/it]" } }, "0a5e8c8d5d1f49029366ffe8c7afbedb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_3508e505a1734244b8af20e59a7b3ef3", "placeholder": "​", "style": "IPY_MODEL_65dff98afdd844f8a97cbdb819ecfd8c", "value": "100%" } }, "0dbd521db75f4eacb17409864ff0bfe2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "0e2e99b623014943ae54454b4b1c86f0": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "12ec1f6b1db74a92bf3597a31f63f81d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_519906af5513473abcf1899a5c1cb26e", "placeholder": "​", "style": "IPY_MODEL_af8ae4f90e6a4e169f6d07e2ac83649d", "value": " 20/20 [00:18<00:00, 1.07s/it]" } }, "142efe5644c244e6a894ca0b0fae58ae": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "15e9b4e9b29f4f7499885ac32a2372a0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_142efe5644c244e6a894ca0b0fae58ae", "placeholder": "​", "style": "IPY_MODEL_80bbb1bd3f7248a79d44bbdeed7ecda2", "value": " 20/20 [00:15<00:00, 1.22it/s]" } }, "18cb064fb7f04dda84eda73d321fcbd9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_0a5e8c8d5d1f49029366ffe8c7afbedb", "IPY_MODEL_878cccec427a433a90083a11e21d507e", "IPY_MODEL_e9209f21b7214e43a6755a330a92f243" ], "layout": "IPY_MODEL_f8ba1f648f8b4e308b6a5f1df1ea0280" } }, "1a7c2145019f4595b5dfc73dcabf9dc4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "1e45abfcf0a1435ba21e3c48eeebd3b1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_6c782fa06d2a4014b4e2dc55672ae59e", "IPY_MODEL_958a59dede26406eb0f2c5562372952a", "IPY_MODEL_026946586d7d45329360ec25dd0db930" ], "layout": "IPY_MODEL_e321c1a91e4a4c439c437076946f9cc0" } }, "2d8f2f78c5b54c48b69fdd5d6763939d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_391b003e3fbd4e058cd130130aa76def", "max": 20, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_3286e5433b2f4aec8d333affc841aff6", "value": 20 } }, "306cefb79f1a462683a6d0cb55ac9853": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_482986cfdd174c52a16903ec84cbd501", "placeholder": "​", "style": "IPY_MODEL_d11fd568700540399f781611b4e098f7", "value": "100%" } }, "30875f5780644350918231c158892e6f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_b8afa965629a4d0388d821c5c2ff8187", "max": 20, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_f132ea450da642b8bbff0a96619b9551", "value": 20 } }, "3122f7055bd647af82b2047de08b514a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_c2104ed9eadb4aa0a6a35a415799d51e", "placeholder": "​", "style": "IPY_MODEL_5e451874af0c4b618db80d5e442d4525", "value": "100%" } }, "3286e5433b2f4aec8d333affc841aff6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "335ef14d9a75439d98a0506591f23dce": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3508e505a1734244b8af20e59a7b3ef3": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3626d9c1527d4b05be14a5359fb60e94": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "391b003e3fbd4e058cd130130aa76def": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3d748f291d894e97bfcc1c9cf9709d91": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "46711ae90e944f55b57a7fd541d2d5c4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "4683ea7340954818a38363f93f7a8e0c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_d7aea086539c44139ae316abf1925c34", "placeholder": "​", "style": "IPY_MODEL_fa20cc42ac1a4ed6a0e5b1ee4c602700", "value": "100%" } }, "482986cfdd174c52a16903ec84cbd501": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4bc9e21ca7314431b695229c937b54d0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "4e603efc63c746c8bb32b5453e872080": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_bc6539c04cfe4bd78372ad11171b8f79", "placeholder": "​", "style": "IPY_MODEL_f57e03be8af448c6a7f1aea54f57fd04", "value": " 20/20 [02:42<00:00, 11.56s/it]" } }, "4f61199f6c9e4c5cbdd5cfd57d30389f": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "519906af5513473abcf1899a5c1cb26e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "522742d7234447619f84116446e74483": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "5301a4372dc1490796842b6c89700ef3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "556f4bebfddd4043922a4b7b6ec0e768": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "59427cf29f664be897ba695a04e9bb9c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "595941dff8ca467d91bb36f8bfa01635": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_306cefb79f1a462683a6d0cb55ac9853", "IPY_MODEL_2d8f2f78c5b54c48b69fdd5d6763939d", "IPY_MODEL_856b6fc4c87c4597bac26526a5dd6856" ], "layout": "IPY_MODEL_4f61199f6c9e4c5cbdd5cfd57d30389f" } }, "5c7d277a8077466d8f522257470ee87e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_556f4bebfddd4043922a4b7b6ec0e768", "placeholder": "​", "style": "IPY_MODEL_5301a4372dc1490796842b6c89700ef3", "value": "100%" } }, "5d6af7b7347b4495857b2ecb0d6aa426": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ef1ba18308e84537a49856fb38cd9c17", "max": 20, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_af91ca575e8e497eb2891507040bce61", "value": 20 } }, "5e451874af0c4b618db80d5e442d4525": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "6355b3f71a254fb8858b274148d26069": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_4683ea7340954818a38363f93f7a8e0c", "IPY_MODEL_c1855905940243a1a510528f5b35c9a8", "IPY_MODEL_15e9b4e9b29f4f7499885ac32a2372a0" ], "layout": "IPY_MODEL_e534fe9ebad44b03b8b2a7a29e894b81" } }, "65dff98afdd844f8a97cbdb819ecfd8c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "6c782fa06d2a4014b4e2dc55672ae59e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ea90bf9bafb54ee8bd452a9e99167bb2", "placeholder": "​", "style": "IPY_MODEL_4bc9e21ca7314431b695229c937b54d0", "value": "100%" } }, "80bbb1bd3f7248a79d44bbdeed7ecda2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "856b6fc4c87c4597bac26526a5dd6856": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ad861cf36d764489959adb539b4dcd18", "placeholder": "​", "style": "IPY_MODEL_59427cf29f664be897ba695a04e9bb9c", "value": " 20/20 [00:11<00:00, 1.69it/s]" } }, "878cccec427a433a90083a11e21d507e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_926a52a845d64688bdc9829ffa74c690", "max": 20, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_d464b6598ea94ed3903a4f68590ccee0", "value": 20 } }, "8a109d9ef7f049f5a94fffa8c458770e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "8be473b1becd48a8a2c544f4e0424879": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_d30991a5930e4100a118f67a32e45675", "max": 20, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_99bfd95a9c194f3b968ca813d4233f4e", "value": 20 } }, "9166c89c2c5e40ed8cc2f5b97fff93eb": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "926a52a845d64688bdc9829ffa74c690": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "958a59dede26406eb0f2c5562372952a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_0e2e99b623014943ae54454b4b1c86f0", "max": 4, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_0dbd521db75f4eacb17409864ff0bfe2", "value": 4 } }, "99bfd95a9c194f3b968ca813d4233f4e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "ad861cf36d764489959adb539b4dcd18": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ae6b07968da44caf9aa59bf45aef3d1b": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "af8ae4f90e6a4e169f6d07e2ac83649d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "af91ca575e8e497eb2891507040bce61": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "b8afa965629a4d0388d821c5c2ff8187": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "bc6539c04cfe4bd78372ad11171b8f79": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "be00ae7ff4764cd1be7ceee608421bcd": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c1855905940243a1a510528f5b35c9a8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ae6b07968da44caf9aa59bf45aef3d1b", "max": 20, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_8a109d9ef7f049f5a94fffa8c458770e", "value": 20 } }, "c2104ed9eadb4aa0a6a35a415799d51e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c3dae3f105b5453abcb2cb0043e7e5ec": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "cc94a3d22aa641aa9c5aa415e0f16a7f": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d11fd568700540399f781611b4e098f7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "d30991a5930e4100a118f67a32e45675": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d464b6598ea94ed3903a4f68590ccee0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "d6e432d4a16d4ff392d4dc903279edb7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_c3dae3f105b5453abcb2cb0043e7e5ec", "placeholder": "​", "style": "IPY_MODEL_522742d7234447619f84116446e74483", "value": " 20/20 [00:17<00:00, 1.09it/s]" } }, "d7aea086539c44139ae316abf1925c34": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e321c1a91e4a4c439c437076946f9cc0": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e534fe9ebad44b03b8b2a7a29e894b81": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e86d0336042e4d13ab7580faf05382a0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_f18a93e874be419c92d0a037a3c5600e", "IPY_MODEL_8be473b1becd48a8a2c544f4e0424879", "IPY_MODEL_d6e432d4a16d4ff392d4dc903279edb7" ], "layout": "IPY_MODEL_be00ae7ff4764cd1be7ceee608421bcd" } }, "e9209f21b7214e43a6755a330a92f243": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_3d748f291d894e97bfcc1c9cf9709d91", "placeholder": "​", "style": "IPY_MODEL_46711ae90e944f55b57a7fd541d2d5c4", "value": " 20/20 [00:18<00:00, 1.03it/s]" } }, "ea90bf9bafb54ee8bd452a9e99167bb2": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ef1ba18308e84537a49856fb38cd9c17": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "f132ea450da642b8bbff0a96619b9551": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "f18a93e874be419c92d0a037a3c5600e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_9166c89c2c5e40ed8cc2f5b97fff93eb", "placeholder": "​", "style": "IPY_MODEL_f8986d027aeb4c179bf7693af51b49bc", "value": "100%" } }, "f57e03be8af448c6a7f1aea54f57fd04": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "f7663ca0b2fc4d539fdb97672e14d088": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_3122f7055bd647af82b2047de08b514a", "IPY_MODEL_30875f5780644350918231c158892e6f", "IPY_MODEL_12ec1f6b1db74a92bf3597a31f63f81d" ], "layout": "IPY_MODEL_cc94a3d22aa641aa9c5aa415e0f16a7f" } }, "f885a78f54164aef84da6d4281206ed7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_5c7d277a8077466d8f522257470ee87e", "IPY_MODEL_5d6af7b7347b4495857b2ecb0d6aa426", "IPY_MODEL_4e603efc63c746c8bb32b5453e872080" ], "layout": "IPY_MODEL_335ef14d9a75439d98a0506591f23dce" } }, "f8986d027aeb4c179bf7693af51b49bc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "f8ba1f648f8b4e308b6a5f1df1ea0280": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "fa20cc42ac1a4ed6a0e5b1ee4c602700": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } } } } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: cohorts/2022/06-trees/homework_6_starter.ipynb ================================================ { "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "markdown", "source": [ "**HOMEWORK** \n", "\n", "The goal of this homework is to create a regression model for predicting housing prices (column 'median_house_value'). \n", "\n", "In this homework we'll again use the California Housing Prices dataset - the same one we used in homework 2 and 3.\n", "\n", "You can take it from [Kaggle](https://www.kaggle.com/datasets/camnugent/california-housing-prices) or download using wget link mentioned below:\n", "\n", "```\n", "wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv\n", "\n", "```\n", "\n" ], "metadata": { "id": "-JrenrSGmAeg" } }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "nLosiCNJUjDM" }, "outputs": [], "source": [ "#@ IMPORTING LIBRARIES AND DEPENDENCIES:\n", "import re\n", "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "import xgboost as xgb\n", "import matplotlib.pyplot as plt\n", "from tqdm.auto import tqdm\n", "from sklearn.tree import DecisionTreeRegressor\n", "from sklearn.tree import export_text\n", "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.ensemble import RandomForestRegressor\n", "from sklearn.metrics import mean_squared_error\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "source": [ "#@ DOWNLOADING THE DATASET: UNCOMMENT BELOW:\n", "!wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv" ], "metadata": { "id": "4Psk224nnyIF" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "#@ READING DATASET:\n", "PATH = \"./housing.csv\"\n", "select_cols = [\"longitude\", \"latitude\", \"housing_median_age\", \"total_rooms\", \"total_bedrooms\", \"population\", \"households\", \n", " \"median_income\", \"median_house_value\", \"ocean_proximity\"]\n", "df = pd.read_csv(PATH, usecols=select_cols)\n", "df.total_bedrooms = df.total_bedrooms.fillna(0)" ], "metadata": { "id": "492Hn6-3n08G" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "- Apply the log transform to `median_house_value`. \n", "- Do train/validation/test split with 60%/20%/20% distribution.\n", "- Use the `train_test_split` function and set the `random_state parameter` to 1." ], "metadata": { "id": "OqXppJ_Ro0H0" } }, { "cell_type": "code", "source": [ "#@ SPLITTING THE DATASET FOR TRAINING AND TEST:\n" ], "metadata": { "id": "W1MmdcRDpHS1" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "- We will use `DictVectorizer` to turn train and validation into matrices." ], "metadata": { "id": "5VKq8FX7qIVM" } }, { "cell_type": "code", "source": [ "#@ IMPLEMENTATION OF DICTVECTORIZER:\n" ], "metadata": { "id": "WnfFrWe9qtuc" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "**Question 1**\n", "\n", "Let's train a decision tree regressor to predict the `median_house_value` variable.\n", "\n", "Train a model with `max_depth=1`." ], "metadata": { "id": "qvxmhaD5hmAK" } }, { "cell_type": "code", "source": [ "#@ TRAINING THE REGRESSION MODEL:\n" ], "metadata": { "id": "cqBcSbpIq7kJ" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "#@ INSPECTION:\n" ], "metadata": { "id": "sLAnqRwuikqQ" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "- Which feature is used for splitting the data?\n", "\n", "- Answer:" ], "metadata": { "id": "JNBm-qeRp6aZ" } }, { "cell_type": "markdown", "source": [ "**Question 2**\n", "\n", "Train a random forest model with these parameters:\n", "\n", "- `n_estimators=10` \n", "- `random_state=1` \n", "- `n_jobs=-1` (optional-to make training faster)" ], "metadata": { "id": "Xhnbdy-CqQoB" } }, { "cell_type": "code", "source": [ "#@ TRAINING RANDOM FOREST MODEL:\n" ], "metadata": { "id": "2w-YSGYMisFt" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "#@ CALCULATING MEAN SQUARED ERROR:\n" ], "metadata": { "id": "jCxUAO2Rq1Ps" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "- What's the RMSE of this model on validation?\n", "\n", "- Answer: " ], "metadata": { "id": "jfcDllHxrTqu" } }, { "cell_type": "markdown", "source": [ "**Question 3**\n", "\n", "Now, let's experiment with the `n_estimators` parameter.\n", "\n", "- Try different values of this parameter from 10 to 200 with step 10.\n", "- Set `random_state` to 1.\n", "- Evaluate the model on the validation dataset." ], "metadata": { "id": "Y7K69bFSrg_V" } }, { "cell_type": "code", "source": [ "#@ TRAINING THE RANDOM FOREST MODEL:\n" ], "metadata": { "id": "-oUFCQwOrQNN" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "#@ INSPECTING THE RMSE SCORES:\n" ], "metadata": { "id": "3J-wFLh4s8Ky" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "- After which value of `n_estimators` does RMSE stop improving?\n", "\n", "- Answer: " ], "metadata": { "id": "NAXZcW3AuC-d" } }, { "cell_type": "markdown", "source": [ "**Question 4**\n", "\n", "Let's select the best `max_depth`:\n", "\n", "- Try different values of `max_depth`: [10, 15, 20, 25].\n", "- For each of these values, try different values of n_estimators from 10 till 200 (with step 10).\n", "- Fix the random seed: `random_state=1`." ], "metadata": { "id": "CYhRv3kEvWjK" } }, { "cell_type": "code", "source": [ "#@ TRAINING THE MODEL WITH DEPTH:\n" ], "metadata": { "id": "fO9TackKvKcS" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "- What's the best `max_depth`:\n", "\n", "- Answer:" ], "metadata": { "id": "eCRCaKlSwp7D" } }, { "cell_type": "markdown", "source": [ "**Question 5**\n", "\n", "We can extract feature importance information from tree-based models.\n", "\n", "At each step of the decision tree learning algorith, it finds the best split. When doint it, we can calculate \"gain\" - the reduction in impurity before and after the split. This gain is quite useful in understanding what are the imporatant features for tree-based models.\n", "\n", "In Scikit-Learn, tree-based models contain this information in the `feature_importances_` field.\n", "\n", "For this homework question, we'll find the most important feature:\n", "\n", "Train the model with these parametes:\n", "- `n_estimators=10`,\n", "- `max_depth=20`,\n", "- `random_state=1`,\n", "- `n_jobs=-1` (optional)\n", "\n", "Get the feature importance information from this model" ], "metadata": { "id": "BDLbx3N5xAoY" } }, { "cell_type": "code", "source": [ "#@ TRAINING THE RANDOM FOREST MODEL:\n" ], "metadata": { "id": "UICqST2Qwhbj" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "- What's the most important feature?\n", "\n", "- Answer:" ], "metadata": { "id": "kSCqlx9jye1s" } }, { "cell_type": "markdown", "source": [ "**Question 6**\n", "\n", "Now let's train an XGBoost model! For this question, we'll tune the eta parameter:\n", "\n", "- Install XGBoost.\n", "- Create DMatrix for train and validation\n", "- Create a watchlist\n", "- Train a model with these parameters for 100 rounds:\n", "\n", "```\n", "xgb_params = { \n", " 'eta': 0.3, \n", " 'max_depth': 6, \n", " 'min_child_weight': 1, \n", "\n", " 'objective': 'reg:squarederror',\n", " 'nthread': 8,\n", "\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "```\n", "\n" ], "metadata": { "id": "K5KEdiTMzPaI" } }, { "cell_type": "code", "source": [ "#@ CREATING THE DMARTIX:\n", "features = dv.feature_names_\n", "\n", "regex = re.compile(r\"<\", re.IGNORECASE)\n", "features = [regex.sub(\"_\", col) if any(x in str(col) for x in set(('[', ']', '<'))) else col for col in features]\n", "\n", "dtrain = xgb.DMatrix(X_train, label=y_train, feature_names=features)\n", "dval = xgb.DMatrix(X_val, label=y_val, feature_names=features)" ], "metadata": { "id": "TUP0uoL5yZTc" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [], "metadata": { "id": "lRRzLznP-Z-Q" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "- Now, change eta from 0.3 to 0.1" ], "metadata": { "id": "3RmcQ1BQ64X-" } }, { "cell_type": "markdown", "source": [ "- Which eta leads to the best RMSE score on the validation dataset?\n", "\n", "- Answer:" ], "metadata": { "id": "Yl6Xn6Zb76iH" } } ] } ================================================ FILE: cohorts/2022/07-bento-production/homework.md ================================================ ## Homework > Note: sometimes your answer might not match one of the options exactly. That's fine. Select the option that's closest to your solution. If it's exactly in between two options, select the higher value. The goal of this homework is to familiarize you with BentoML and how to build and test an ML production service. ## Background You are a new recruit at ACME corp. Your manager is emailing you about your first assignment. ## Email from your manager Good morning recruit! It's good to have you here! I have an assignment for you. I have a data scientist that's built a credit risk model in a jupyter notebook. I need you to run the notebook and save the model with BentoML and see how big the model is. If it's greater than a certain size, I'm going to have to request additional resources from our infra team. Please let me know how big it is. Thanks, Mr McManager ## Question 1 * Install BentoML * What's the version of BentoML you installed? * Use `--version` to find out ## Question 2 Run the notebook which contains the xgboost model from module 6 i.e previous module and save the xgboost model with BentoML. To make it easier for you we have prepared this [notebook](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/code/train.ipynb). How big approximately is the saved BentoML model? Size can slightly vary depending on your local development environment. Choose the size closest to your model. * 924kb * 724kb * 114kb * 8kb ## Another email from your manager Great job recruit! Looks like I won't be having to go back to the procurement team. Thanks for the information. However, I just got word from one of the teams that's using one of our ML services and they're saying our service is "broken" and their trying to blame our model. I looked at the data their sending and it's completely bogus. I don't want them to send bad data to us and blame us for our models. Could you write a pydantic schema for the data that they should be sending? That way next time it will tell them it's their data that's bad and not our model. Thanks, Mr McManager ## Question 3 Say you have the following data that you're sending to your service: ```json { "name": "Tim", "age": 37, "country": "US", "rating": 3.14 } ``` What would the pydantic class look like? You can name the class `UserProfile`. ## Email from your CEO Good morning! I hear you're the one to go to if I need something done well! We've got a new model that a big client needs deployed ASAP. I need you to build a service with it and test it against the old model and make sure that it performs better, otherwise we're going to lose this client. All our hopes are with you! Thanks, CEO of Acme Corp ## Question 4 We've prepared a model for you that you can import using: ```bash curl -O https://s3.us-west-2.amazonaws.com/bentoml.com/mlzoomcamp/coolmodel.bentomodel bentoml models import coolmodel.bentomodel ``` What version of scikit-learn was this model trained with? * 1.1.1 * 1.1.2 * 1.1.3 * 1.1.4 * 1.1.5 ## Question 5 Create a bento out of this scikit-learn model. The output type for this endpoint should be `NumpyNdarray()` Send this array to the Bento: ``` [[6.4,3.5,4.5,1.2]] ``` You can use curl or the Swagger UI. What value does it return? * 0 * 1 * 2 * 3 (Make sure your environment has Scikit-Learn installed) ## Question 6 Ensure to serve your bento with `--production` for this question Install locust using: ```bash pip install locust ``` Use the following locust file: [locustfile.py](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/cohorts/2022/07-bento-production/locustfile.py) Ensure that it is pointed at your bento's endpoint (In case you didn't name your endpoint "classify") Configure 100 users with ramp time of 10 users per second. Click "Start Swarming" and ensure that it is working. Now download a second model with this command: ```bash curl -O https://s3.us-west-2.amazonaws.com/bentoml.com/mlzoomcamp/coolmodel2.bentomodel ``` Or you can download with this link as well: [https://s3.us-west-2.amazonaws.com/bentoml.com/mlzoomcamp/coolmodel2.bentomodel](https://s3.us-west-2.amazonaws.com/bentoml.com/mlzoomcamp/coolmodel2.bentomodel) Now import the model: ```bash bentoml models import coolmodel2.bentomodel ``` Update your bento's runner tag and test with both models. Which model allows more traffic (more throughput) as you ramp up the traffic? **Hint 1**: Remember to turn off and turn on your bento service between changing the model tag. Use Ctl-C to close the service in between trials. **Hint 2**: Increase the number of concurrent users to see which one has higher throughput Which model has better performance at higher volumes? * The first model * The second model ## Email from marketing Hello ML person! I hope this email finds you well. I've heard there's this cool new ML model called Stable Diffusion. I hear if you give it a description of a picture it will generate an image. We need a new company logo and I want it to be fierce but also cool, think you could help out? Thanks, Mike Marketer ## Question 7 (optional) Go to this Bento deployment of Stable Diffusion: https://l.bentoml.com/stable-diffusion-mlzoomcamp (or deploy it yourself) Use the txt2image endpoint and update the prompt to: "A cartoon dragon with sunglasses". Don't change the seed, it should be 0 by default What is the resulting image? ### #1 ### #2 ### #3 ### #4 ## Submit the results * Submit your results here: https://forms.gle/Hh9FWy6LGXk3wJYs8 * You can submit your solution multiple times. In this case, only the last submission will be used * If your answer doesn't match options exactly, select the closest one ## Deadline The deadline for submitting is **24 October 2022 (Monday), 23:00 CEST (Berlin time)**. After that, the form will be closed. ================================================ FILE: cohorts/2022/07-bento-production/locustfile.py ================================================ from locust import task from locust import between from locust import HttpUser sample = [[6.4,3.5,4.5,1.2]] class MLZoomUser(HttpUser): """ Usage: Start locust load testing client with: locust -H http://localhost:3000 Open browser at http://0.0.0.0:8089, adjust desired number of users and spawn rate for the load test from the Web UI and start swarming. """ @task def classify(self): self.client.post("/classify", json=sample) wait_time = between(0.01, 2) ================================================ FILE: cohorts/2022/08-deep-learning/homework.md ================================================ ## Homework > **Solution**: > * [Notebook](homework_8.ipynb) ### Dataset In this homework, we'll build a model for predicting if we have an image of a dino or a dragon. For this, we will use the "Dino or Dragon?" dataset that can be downloaded from [Kaggle](https://www.kaggle.com/datasets/agrigorev/dino-or-dragon). You can get a wget-able version [here](https://github.com/alexeygrigorev/dino-or-dragon/releases/download/data/dino-dragon.zip): ```bash wget https://github.com/alexeygrigorev/dino-or-dragon/releases/download/data/dino-dragon.zip unzip dino-dragon.zip ``` In the lectures we saw how to use a pre-trained neural network. In the homework, we'll train a much smaller model from scratch. **Note:** You will need an environment with a GPU for this homework. We recommend to use [Saturn Cloud](https://bit.ly/saturn-mlzoomcamp). You can also use a computer without a GPU (e.g. your laptop), but it will be slower. ### Data Preparation The dataset contains around 1900 images of dinos and around 1900 images of dragons. The dataset contains separate folders for training and test sets. ### Model For this homework we will use Convolutional Neural Network (CNN). Like in the lectures, we'll use Keras. You need to develop the model with following structure: * The shape for input should be `(150, 150, 3)` * Next, create a convolutional layer ([`Conv2D`](https://keras.io/api/layers/convolution_layers/convolution2d/)): * Use 32 filters * Kernel size should be `(3, 3)` (that's the size of the filter) * Use `'relu'` as activation * Reduce the size of the feature map with max pooling ([`MaxPooling2D`](https://keras.io/api/layers/pooling_layers/max_pooling2d/)) * Set the pooling size to `(2, 2)` * Turn the multi-dimensional result into vectors using a [`Flatten`](https://keras.io/api/layers/reshaping_layers/flatten/) layer * Next, add a `Dense` layer with 64 neurons and `'relu'` activation * Finally, create the `Dense` layer with 1 neuron - this will be the output * The output layer should have an activation - use the appropriate activation for the binary classification case As optimizer use [`SGD`](https://keras.io/api/optimizers/sgd/) with the following parameters: * `SGD(lr=0.002, momentum=0.8)` For clarification about kernel size and max pooling, check [Office Hours](https://www.youtube.com/watch?v=1WRgdBTUaAc). ### Question 1 Since we have a binary classification problem, what is the best loss function for us? - `binary crossentropy` - `focal loss` - `mean squared error` - `categorical crossentropy` Note: since we specify an activation for the output layer, we don't need to set `from_logits=True` ### Question 2 What's the total number of parameters of the model? You can use the `summary` method for that. - 9215873 - 11215873 - 14215873 - 19215873 ### Generators and Training For the next two questions, use the following data generator for both train and test sets: ```python ImageDataGenerator(rescale=1./255) ``` * We don't need to do any additional pre-processing for the images. * When reading the data from train/test directories, check the `class_mode` parameter. Which value should it be for a binary classification problem? * Use `batch_size=20` * Use `shuffle=True` for both training and test sets. For training use `.fit()` with the following params: ```python model.fit( train_generator, epochs=10, validation_data=test_generator ) ``` ### Question 3 What is the median of training accuracy for all the epochs for this model? - 0.40 - 0.60 - 0.90 - 0.20 ### Question 4 What is the standard deviation of training loss for all the epochs for this model? - 0.11 - 0.66 - 0.99 - 0.33 ### Data Augmentation For the next two questions, we'll generate more data using data augmentations. Add the following augmentations to your training data generator: * `rotation_range=40,` * `width_shift_range=0.2,` * `height_shift_range=0.2,` * `shear_range=0.2,` * `zoom_range=0.2,` * `horizontal_flip=True,` * `fill_mode='nearest'` ### Question 5 Let's train our model for 10 more epochs using the same code as previously. Make sure you don't re-create the model - we want to continue training the model we already started training. What is the mean of test loss for all the epochs for the model trained with augmentations? - 0.15 - 0.77 - 0.37 - 0.97 ### Question 6 What's the average of test accuracy for the last 5 epochs (from 6 to 10) for the model trained with augmentations? - 0.84 - 0.54 - 0.44 - 0.24 ## Submit the results - Submit your results here: https://forms.gle/XdH5ztBddvTvxzpT6 - You can submit your solution multiple times. In this case, only the last submission will be used - If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ## Deadline The deadline for submitting is 21 November 2022, 23:00 CEST. After that, the form will be closed. ================================================ FILE: cohorts/2022/08-deep-learning/homework_8.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 24, "metadata": { "id": "U19vNUrsczT4" }, "outputs": [], "source": [ "#@ IMPORTING LIBRARIES:\n", "import os\n", "import shutil\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from tensorflow import keras\n", "\n", "from tensorflow.keras import layers\n", "from tensorflow.keras import models\n", "from tensorflow.keras import optimizers\n", "\n", "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n", "from tensorflow.keras.preprocessing import image" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 35 }, "id": "fAOIcGU3jWsy", "outputId": "e90e943c-e7d2-4822-a421-35648b743b64" }, "outputs": [ { "data": { "application/vnd.google.colaboratory.intrinsic+json": { "type": "string" }, "text/plain": [ "'2.9.2'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTION:\n", "import tensorflow\n", "tensorflow.__version__" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "id": "BPF6k1g9jkpt" }, "outputs": [], "source": [ "#@ UNZIPPING THE DATASET:\n", "# !unzip /content/drive/MyDrive/Data/dragon.zip" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "id": "uCCnd0pik2hh" }, "outputs": [], "source": [ "#@ INITIALIZING PATH TO DATASET:\n", "train_dir = './train'\n", "test_dir = './test'" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "id": "EOtAG1Oblhm1" }, "outputs": [], "source": [ "#@ INITIALIZING MODEL CREATION:\n", "model = models.Sequential()\n", "\n", "model.add(layers.Conv2D(32, (3, 3), activation='relu',\n", " input_shape=(150, 150, 3)))\n", "model.add(layers.MaxPooling2D((2, 2)))\n", "model.add(layers.Flatten())\n", "model.add(layers.Dense(64, activation='relu'))\n", "model.add(layers.Dense(1, activation='sigmoid'))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "id": "HTOuSh11ln91" }, "outputs": [], "source": [ "#@ COMPILING THE MODEL:\n", "model.compile(loss='binary_crossentropy',\\\n", " optimizer=optimizers.SGD(learning_rate=0.002, momentum=0.8),\\\n", " metrics=['acc'])" ] }, { "cell_type": "markdown", "metadata": { "id": "7XcouIUVmPK2" }, "source": [ "- Answer for Question1: `binary_crossentropy`." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "i_UEvLG2mLCy", "outputId": "bc2fda0d-5090-4521-976f-8ecdea635f0b" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " conv2d (Conv2D) (None, 148, 148, 32) 896 \n", " \n", " max_pooling2d (MaxPooling2D (None, 74, 74, 32) 0 \n", " ) \n", " \n", " flatten (Flatten) (None, 175232) 0 \n", " \n", " dense (Dense) (None, 64) 11214912 \n", " \n", " dense_1 (Dense) (None, 1) 65 \n", " \n", "=================================================================\n", "Total params: 11,215,873\n", "Trainable params: 11,215,873\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "#@ SUMMARY:\n", "model.summary()" ] }, { "cell_type": "markdown", "metadata": { "id": "6fJl3C7hmlk1" }, "source": [ "- Answer for Question2: 11,215,873" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "id": "U7CL3rmomdtN" }, "outputs": [], "source": [ "#@ INITIALIZING IMAGE DATAGENERATOR:\n", "train_datagen = ImageDataGenerator(rescale=1./255)\n", "val_datagen = ImageDataGenerator(rescale=1./255)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "NZRgtr_mnryc", "outputId": "a371c6f3-0785-42a4-c1d2-c617a5c2c95e" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 1594 images belonging to 2 classes.\n" ] } ], "source": [ "#@ TRAINING DATAGENERATOR:\n", "train_generator = train_datagen.flow_from_directory(train_dir,\n", " target_size=(150, 150),\n", " batch_size=20,\n", " class_mode='binary')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "orvdanQ0n15D", "outputId": "3d9550ed-8044-4b4b-9e25-e375382e7512" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 394 images belonging to 2 classes.\n" ] } ], "source": [ "#@ VALIDATION DATAGENERATOR:\n", "validation_generator = val_datagen.flow_from_directory(test_dir,\n", " target_size=(150, 150),\n", " batch_size=20,\n", " class_mode='binary')" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "IB0Amcqzn7qu", "outputId": "e829d59b-b33f-4145-d494-b96c3308cbbc" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "data batch shape: (20, 150, 150, 3)\n", "labels batch shape: (20,)\n" ] } ], "source": [ "#@ INSPECTING:\n", "for data_batch, labels_batch in train_generator:\n", " print('data batch shape:', data_batch.shape)\n", " print('labels batch shape:', labels_batch.shape)\n", " break" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XHilosW_oFF_", "outputId": "f551655b-a566-4234-b48c-a8b21f23928f" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/10\n", "80/80 [==============================] - 9s 114ms/step - loss: 0.4787 - acc: 0.7961 - val_loss: 0.4133 - val_acc: 0.8477\n", "Epoch 2/10\n", "80/80 [==============================] - 9s 111ms/step - loss: 0.4040 - acc: 0.8174 - val_loss: 0.3995 - val_acc: 0.8223\n", "Epoch 3/10\n", "80/80 [==============================] - 9s 111ms/step - loss: 0.3563 - acc: 0.8557 - val_loss: 0.3538 - val_acc: 0.8477\n", "Epoch 4/10\n", "80/80 [==============================] - 9s 113ms/step - loss: 0.3091 - acc: 0.8752 - val_loss: 0.3345 - val_acc: 0.8528\n", "Epoch 5/10\n", "80/80 [==============================] - 9s 111ms/step - loss: 0.2739 - acc: 0.9028 - val_loss: 0.3209 - val_acc: 0.8629\n", "Epoch 6/10\n", "80/80 [==============================] - 9s 110ms/step - loss: 0.2435 - acc: 0.9109 - val_loss: 0.3324 - val_acc: 0.8655\n", "Epoch 7/10\n", "80/80 [==============================] - 9s 111ms/step - loss: 0.2246 - acc: 0.9210 - val_loss: 0.3094 - val_acc: 0.8731\n", "Epoch 8/10\n", "80/80 [==============================] - 9s 111ms/step - loss: 0.1817 - acc: 0.9410 - val_loss: 0.2763 - val_acc: 0.8782\n", "Epoch 9/10\n", "80/80 [==============================] - 9s 111ms/step - loss: 0.1534 - acc: 0.9555 - val_loss: 0.2816 - val_acc: 0.8680\n", "Epoch 10/10\n", "80/80 [==============================] - 9s 110ms/step - loss: 0.1395 - acc: 0.9586 - val_loss: 0.3197 - val_acc: 0.8579\n" ] } ], "source": [ "#@ TRAINING THE MODEL:\n", "history = model.fit(\n", " train_generator,\n", " epochs=10,\n", " validation_data=validation_generator)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 545 }, "id": "Bl5GyCf-oSac", "outputId": "35a1ad38-2143-4c96-ff01-56f8925fe90d" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEICAYAAABRSj9aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXxV1bn/8c8XFJFRGZwIIdQLCooJEKGgKCoqogVBtISgUAeqVr3a9nq1aKX4o9qrv1vrq+rvUgcEUpFai6g4AOp1qG0JMigoiMgQcIgok4BMz++PtUNOYkJOyElOcvK8X6/zOuesPT1nB56zztprryUzwznnXOpqkOwAnHPOVS9P9M45l+I80TvnXIrzRO+ccynOE71zzqU4T/TOOZfiPNHXQ5JekjQ60esmk6TVkgZUw37fkHR19DpX0qvxrHsQx0mXtE1Sw4ON1bnyeKKvI6IkUPTYJ2lHzPvcyuzLzC4wsycTvW5tJOk2SW+WUd5G0i5JJ8e7LzPLM7PzEhRXiS8mM1trZs3MbG8i9l/G8SRplaRl1bF/V7t5oq8joiTQzMyaAWuBH8WU5RWtJ+mQ5EVZK00D+krqWKp8BPC+mX2QhJiS4QzgKOAHkk6tyQP7v8nk80Rfx0nqL6lA0n9K+hx4QtKRkl6QVCjpm+h1Wsw2sc0RYyS9Len+aN1PJV1wkOt2lPSmpK2S5kp6SNK0cuKOJ8a7Jb0T7e9VSW1ill8uaY2kjZLGlXd+zKwAeA24vNSiK4ApFcVRKuYxkt6OeX+upI8kbZb0R0Axy46X9FoU31eS8iQdES2bCqQDz0e/yG6VlCHJipKipOMkzZL0taSVkq6J2fd4STMkTYnOzVJJ2eWdg8ho4DlgdvQ69nOdJGlOdKwvJP0qKm8o6VeSPomOs0BS+9KxRuuW/nfyjqTfS9oIjD/Q+Yi2aS/p2ejvsFHSHyU1imLqFrPeUZK2S2pbwed1MTzRp4ZjgFZAB2As4e/6RPQ+HdgB/PEA2/cGlgNtgP8CHpOkg1j3z8C/gNbAeL6fXGPFE+NI4CeEmmgj4JcAkroCj0T7Py46XpnJOfJkbCySTgCyongre66K9tEGeBa4g3AuPgFOi10FuCeKrwvQnnBOMLPLKfmr7L/KOMR0oCDafjjwW0lnxywfHK1zBDDrQDFLahLtIy96jJDUKFrWHJgLvBwd69+AedGmPwdygEFAC+BKYPsBT0yx3sAq4Ghg4oHOh8J1iReANUAG0A6Ybma7os84Kma/OcA8MyuMMw4HYGb+qGMPYDUwIHrdH9gFND7A+lnANzHv3wCujl6PAVbGLGsCGHBMZdYlJMk9QJOY5dOAaXF+prJivCPm/fXAy9HrXxMSQdGyptE5GFDOvpsAW4C+0fuJwHMHea7ejl5fAfwjZj0REvPV5ez3YmBhWX/D6H1GdC4PISTBvUDzmOX3AJOj1+OBuTHLugI7DnBuRwGF0b4bA5uBodGynNi4Sm23HBhSRvn+WA9wntZW8Pfefz6APkXxlbFeb8KXoqL3+cBlyfz/VxcfXqNPDYVmtrPojaQmkv4natrYArwJHKHye3R8XvTCzIpqbM0que5xwNcxZQDrygs4zhg/j3m9PSam42L3bWbfAhvLO1YU01+AK6JfH7nAlErEUZbSMVjse0lHS5ouaX2032mEmn88is7l1piyNYSabpHS56axym8LHw3MMLM90b+Tv1LcfNOe8GukLAdaVpESf/sKzkd7YI2Z7Sm9EzP7J+Hz9Zd0IuEXx6yDjKne8kSfGkoPQfoL4ASgt5m1IFyIg5g25GrwGdAqaiYo0v4A61clxs9i9x0ds3UF2zwJXAacCzQHnq9iHKVjECU/728Jf5du0X5HldrngYaN3UA4l81jytKB9RXE9D3R9YazgVGSPle4jjMcGBQ1P60DflDO5uuA48so/zZ6jv1bH1NqndKf70DnYx2QfoAvqiej9S8Hnomt1Lj4eKJPTc0Jbc2bJLUC7qruA5rZGsLP6vHRRbQ+wI+qKcZngIsknR61NU+g4n/LbwGbgEkUt/9WJY4XgZMkDYsS1E2UTHbNgW3AZkntgP8otf0XlJNgzWwd8HfgHkmNJZ0CXEWoBVfW5cAKwpdZVvToTGhmyiG0jR8r6WZJh0lqLql3tO2jwN2SOik4RVJrC+3j6wlfHg0lXUnZXwixDnQ+/kX44rxXUtPoM8de75gGDCUk+ykHcQ7qPU/0qekB4HDgK+AfhAttNSGX0N66Efg/wNPAd+Wse9AxmtlS4GeEi6mfAd8QEteBtjFCkuhAyWRxUHGY2VfApcC9hM/bCXgnZpXfAD0I7eEvEi7cxroHuEPSJkm/LOMQOYS28A3A34C7zGxuPLGVMhp42Mw+j30A/w8YHTUPnUv4Uv4c+Bg4K9r2v4EZwKuEaxyPEc4VwDWEZL0ROInwxXQg5Z4PC/cO/IjQLLOW8Lf8cczydcB7hF8Eb1X+FLiiCxzOJZykp4GPzKzaf1G41CbpcWCDmd2R7FjqIk/0LmEUbsT5GvgUOA+YCfQxs4VJDczVaZIygEVAdzP7NLnR1E3edOMS6RhCN7ttwIPAdZ7kXVVIuhv4ALjPk/zB8xq9c86lOK/RO+dciqt1gw21adPGMjIykh2Gc87VKQsWLPjKzMocA6jWJfqMjAzy8/OTHYZzztUpktaUt8ybbpxzLsV5onfOuRTnid4551JcXG30kgYCfwAaAo+a2b2llncAHgfaEm6YGWVhwgckpRPGzGhPuIV5kJmtrkyQu3fvpqCggJ07fSyj2qpx48akpaVx6KGHJjsU51wpFSb6aLjWhwjjYRQA8yXNMrPYuSfvB6aY2ZPR5Aj3UDzRwxRgopnNkdQM2FfZIAsKCmjevDkZGRmUPx+GSxYzY+PGjRQUFNCxY+kZ+5xzyRZP000vwmQTq6x4xpchpdbpSpiuDeD1ouXRTECHmNkcADPbVmq88rjs3LmT1q1be5KvpSTRunVr/8Xl3EHKy4OMDGjQIDzn5VW0ReXEk+jbUXISgQJKToAAsBgYFr0eCjSX1JowHOqmaC7IhZLui2NChzJ5kq/d/O/j3MHJy4OxY2HNGjALz2PHJjbZJ+pi7C+BMyUtBM4kjFW9l9A01C9afiph/O0xpTeWNFZSvqT8wkKfCtI5V3+MGwfbS7VzbN8eyhMlnkS/npIz56RRaqYbM9tgZsPMrDswLirbRKj9L4qaffYQRjPsUfoAZjbJzLLNLLtt29o3ufvGjRvJysoiKyuLY445hnbt2u1/v2vXrgNum5+fz0033VThMfr27ZuocJ1zdcjatZUrPxjxJPr5QCdJHaPZfEZQas5GSW0kFe3rdkIPnKJtj5BUlL3PBmIv4laLRLd3tW7dmkWLFrFo0SKuvfZabrnllv3vGzVqxJ4935vqcr/s7GwefPDBCo/x979XNG+Dcy7RqrttPB7p6ZUrPxgVJvqoJn4D8ArwIWGS4aWSJkgaHK3WH1guaQVwNDAx2nYvodlmnqT3CXNE/ilx4X9fTbR3AYwZM4Zrr72W3r17c+utt/Kvf/2LPn360L17d/r27cvy5csBeOONN7jooosAGD9+PFdeeSX9+/fnBz/4QYkvgGbNmu1fv3///gwfPpwTTzyR3NxcikYYnT17NieeeCI9e/bkpptu2r/fWKtXr6Zfv3706NGDHj16lPgC+d3vfke3bt3IzMzktttuA2DlypUMGDCAzMxMevTowSefHOxc0M7VLTWVKyoycSI0aVKyrEmTUJ4wZlarHj179rTSli1b9r2y8nToYBb+bCUfHTrEvYsDuuuuu+y+++6z0aNH24UXXmh79uwxM7PNmzfb7t27zcxszpw5NmzYMDMze/311+3CCy/cv22fPn1s586dVlhYaK1atbJdu3aZmVnTpk33r9+iRQtbt26d7d271374wx/aW2+9ZTt27LC0tDRbtWqVmZmNGDFi/35jffvtt7Zjxw4zM1uxYoUVnc/Zs2dbnz597NtvvzUzs40bN5qZWa9evezZZ581M7MdO3bsX34wKvN3ci7ZqjtXVMa0aeG4UnieNq3y+wDyrZy8WusGNauqmmjvKnLppZfSsGHoRLR582ZGjx7Nxx9/jCR2795d5jYXXnghhx12GIcddhhHHXUUX3zxBWlpaSXW6dWr1/6yrKwsVq9eTbNmzfjBD36wv596Tk4OkyZN+t7+d+/ezQ033MCiRYto2LAhK1asAGDu3Ln85Cc/oUlUdWjVqhVbt25l/fr1DB06FAg3PTlXX9RkrqhIbm54VJeUGwKhJtq7ijRt2nT/6zvvvJOzzjqLDz74gOeff77cPuWHHXbY/tcNGzYss30/nnXK8/vf/56jjz6axYsXk5+fX+HFYufqq5rMFcmWcom+Rtq7yrB582batQu3F0yePDnh+z/hhBNYtWoVq1evBuDpp58uN45jjz2WBg0aMHXqVPbu3QvAueeeyxNPPMH2qB/X119/TfPmzUlLS2PmzJkAfPfdd/uXO5fqkpUrkiHlEn1uLkyaBB06gBSeJ02q3p9FALfeeiu333473bt3r1QNPF6HH344Dz/8MAMHDqRnz540b96cli1bfm+966+/nieffJLMzEw++uij/b86Bg4cyODBg8nOziYrK4v7778fgKlTp/Lggw9yyimn0LdvXz7//POEx+5cbZSsXJEMtW7O2OzsbCs98ciHH35Ily5dkhRR7bFt2zaaNWuGmfGzn/2MTp06ccsttyQ7rP387+Rc8khaYGbZZS1LuRp9KvvTn/5EVlYWJ510Eps3b+anP/1pskNyztUBKdfrJpXdcssttaoG75yrG7xG75xzKc4TvXPOpThP9M45l+I80TvnXIrzRB+Hs846i1deeaVE2QMPPMB1111X7jb9+/enqJvooEGD2LRp0/fWGT9+/P7+7OWZOXMmy5YVD/j561//mrlz51YmfOdcPeeJPg45OTlMnz69RNn06dPJycmJa/vZs2dzxBFHHNSxSyf6CRMmMGDAgIPal3OufvJEH4fhw4fz4osv7h83ZvXq1WzYsIF+/fpx3XXXkZ2dzUknncRdd91V5vYZGRl89dVXAEycOJHOnTtz+umn7x/KGEIf+VNPPZXMzEwuueQStm/fzt///ndmzZrFf/zHf5CVlcUnn3zCmDFjeOaZZwCYN28e3bt3p1u3blx55ZV89913+49311130aNHD7p168ZHH330vZh8OGPn6o8614/+5pth0aLE7jMrCx54oPzlrVq1olevXrz00ksMGTKE6dOnc9lllyGJiRMn0qpVK/bu3cs555zDkiVLOOWUU8rcz4IFC5g+fTqLFi1iz5499OjRg549ewIwbNgwrrnmGgDuuOMOHnvsMW688UYGDx7MRRddxPDhw0vsa+fOnYwZM4Z58+bRuXNnrrjiCh555BFuvvlmANq0acN7773Hww8/zP3338+jjz5aYvujjjqKOXPm0LhxYz7++GNycnLIz8/npZde4rnnnuOf//wnTZo04euvvwYgNzeX2267jaFDh7Jz50727dt3UOfaOVfzvEYfp9jmm9hmmxkzZtCjRw+6d+/O0qVLSzSzlPbWW28xdOhQmjRpQosWLRg8ePD+ZR988AH9+vWjW7du5OXlsXTp0gPGs3z5cjp27Ejnzp0BGD16NG+++eb+5cOGhbnae/bsuX8gtFi7d+/mmmuuoVu3blx66aX74453OOMmpUeDcq4SasPMTvVJXDV6SQOBPwANgUfN7N5SyzsQpg9sC3wNjDKzgpjlLQhTCM40sxuqEvCBat7VaciQIdxyyy289957bN++nZ49e/Lpp59y//33M3/+fI488kjGjBlT7vDEFRkzZgwzZ84kMzOTyZMn88Ybb1Qp3qKhjssb5jh2OON9+/b5WPSuxhTN7FQ0UGrRzE6QmgOK1QYV1uglNQQeAi4AugI5krqWWu1+YIqZnQJMAO4ptfxu4E3qsGbNmnHW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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ PLOTTING LOSS AND ACCURACY:\n", "acc = history.history['acc']\n", "val_acc = history.history['val_acc']\n", "loss = history.history['loss']\n", "val_loss = history.history['val_loss']\n", "\n", "epochs = range(1, len(acc) + 1)\n", "\n", "plt.plot(epochs, acc, 'bo', label='Training acc')\n", "plt.plot(epochs, val_acc, 'b', label='Validation acc')\n", "plt.title('Training and Validation Accuracy')\n", "plt.legend()\n", "\n", "plt.figure()\n", "\n", "plt.plot(epochs, loss, 'bo', label='Training loss')\n", "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n", "plt.title('Training and Validation Loss')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "vRuMJA9PqX3i", "outputId": "98f0b955-0c6c-4c24-cf4e-e182ac22c2ec" }, "outputs": [ { "data": { "text/plain": [ "0.9068381190299988" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ MEDIAN OF ACCURACY:\n", "acc_median = np.median(acc)\n", "acc_median" ] }, { "cell_type": "markdown", "metadata": { "id": "Q8vZhkPIqtQF" }, "source": [ "- Answer for Question3: 0.907" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "SXikKVSSqoLV", "outputId": "0c9c4814-fc8e-4720-c4a7-7d336b5ac9f1" }, "outputs": [ { "data": { "text/plain": [ "0.1054818735562764" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ STANDARD DEVIATION OF LOSS:\n", "loss_std = np.std(loss)\n", "loss_std" ] }, { "cell_type": "markdown", "metadata": { "id": "Ei1wrvvvrXkH" }, "source": [ "- Answer for Question4: 0.105" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "id": "S5S4ImLNrUFt" }, "outputs": [], "source": [ "#@ INITIALIZING DATA AUGMENTATION:\n", "datagen = ImageDataGenerator(\n", " rotation_range=40,\n", " width_shift_range=0.2,\n", " height_shift_range=0.2,\n", " shear_range=0.2,\n", " zoom_range=0.2,\n", " horizontal_flip=True,\n", " fill_mode='nearest')" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "YDx3pQb5rm5b", "outputId": "588f3cf7-656a-45e1-887c-0a2d62def7df" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ INSPECTION:\n", "fnames = [os.path.join(train_dir+\"/dragon\", fname) for\n", " fname in os.listdir(train_dir+\"/dragon\")]\n", "\n", "img_path = fnames[0]\n", "\n", "img = image.load_img(img_path, target_size=(150, 150))\n", "\n", "x = image.img_to_array(img)\n", "\n", "x = x.reshape((1,) + x.shape)\n", "\n", "i=0\n", "for batch in datagen.flow(x, batch_size=1):\n", " plt.figure(i)\n", " imgplot = plt.imshow(image.array_to_img(batch[0]))\n", " i += 1\n", " if i % 4 == 0:\n", " break\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "id": "bf2usfn-r6lE" }, "outputs": [], "source": [ "#@ TRAINING DATA GENERATOR:\n", "train_datagen = ImageDataGenerator(\n", " rescale=1./255,\n", " rotation_range=40,\n", " width_shift_range=0.2,\n", " height_shift_range=0.2,\n", " shear_range=0.2,\n", " zoom_range=0.2,\n", " horizontal_flip=True,)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "id": "0U56MXMVsMlU" }, "outputs": [], "source": [ "#@ TEST DATA GENERATOR:\n", "test_datagen = ImageDataGenerator(rescale=1./255)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "h-SyqCjksSDo", "outputId": "c56dd9ac-6fc7-416e-9009-8cdeccd49443" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 1594 images belonging to 2 classes.\n" ] } ], "source": [ "#@ INITIALIZING DATA GENERATOR:\n", "train_generator = train_datagen.flow_from_directory(train_dir,\n", " target_size=(150, 150), \n", " batch_size=32, \n", " class_mode='binary')" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "GH4twLrfsdYV", "outputId": "bc546c52-81aa-4ab0-8c5d-4f4dc98813f7" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 394 images belonging to 2 classes.\n" ] } ], "source": [ "#@ INITIALIZING DATA GENERATOR:\n", "validation_generator = test_datagen.flow_from_directory(\n", " test_dir,\n", " target_size=(150, 150),\n", " batch_size=32,\n", " class_mode='binary')" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "AnN_TIx_srOi", "outputId": "640348d7-068f-45ad-9b3b-3a8213fac7e8" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/10\n", "50/50 [==============================] - 16s 315ms/step - loss: 0.4292 - acc: 0.7892 - val_loss: 0.4968 - val_acc: 0.7766\n", "Epoch 2/10\n", "50/50 [==============================] - 15s 307ms/step - loss: 0.3757 - acc: 0.8331 - val_loss: 0.3787 - val_acc: 0.8452\n", "Epoch 3/10\n", "50/50 [==============================] - 15s 309ms/step - loss: 0.3665 - acc: 0.8394 - val_loss: 0.3146 - val_acc: 0.8604\n", "Epoch 4/10\n", "50/50 [==============================] - 17s 338ms/step - loss: 0.3661 - acc: 0.8394 - val_loss: 0.3551 - val_acc: 0.8655\n", "Epoch 5/10\n", "50/50 [==============================] - 17s 349ms/step - loss: 0.3644 - acc: 0.8438 - val_loss: 0.3297 - val_acc: 0.8553\n", "Epoch 6/10\n", "50/50 [==============================] - 17s 344ms/step - loss: 0.3685 - acc: 0.8363 - val_loss: 0.3487 - val_acc: 0.8477\n", "Epoch 7/10\n", "50/50 [==============================] - 17s 338ms/step - loss: 0.3484 - acc: 0.8551 - val_loss: 0.3631 - val_acc: 0.8503\n", "Epoch 8/10\n", "50/50 [==============================] - 18s 353ms/step - loss: 0.3578 - acc: 0.8438 - val_loss: 0.5889 - val_acc: 0.7411\n", "Epoch 9/10\n", "50/50 [==============================] - 18s 364ms/step - loss: 0.3703 - acc: 0.8344 - val_loss: 0.2809 - val_acc: 0.8832\n", "Epoch 10/10\n", "50/50 [==============================] - 16s 320ms/step - loss: 0.3364 - acc: 0.8519 - val_loss: 0.2869 - val_acc: 0.8832\n" ] } ], "source": [ "#@ MODEL TRAINING WITH AUGMENTATION:\n", "history = model.fit(\n", " train_generator,\n", " epochs=10,\n", " validation_data=validation_generator)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 545 }, "id": "hxhLYTaxs3GG", "outputId": "596be1dc-461c-4c02-a54d-662652972a57" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#@ INSPECTION ACCURACY AND LOSS:\n", "acc_aug = history.history['acc']\n", "val_acc_aug = history.history['val_acc']\n", "loss_aug = history.history['loss']\n", "val_loss_aug = history.history['val_loss']\n", "\n", "epochs_aug = range(1, len(acc) + 1)\n", "\n", "plt.plot(epochs_aug, acc_aug, 'bo', label='Training acc')\n", "plt.plot(epochs_aug, val_acc_aug, 'b', label='Validation acc')\n", "plt.title('Training and Validation Accuracy')\n", "plt.legend()\n", "\n", "plt.figure()\n", "\n", "plt.plot(epochs_aug, loss_aug, 'bo', label='Training loss')\n", "plt.plot(epochs_aug, val_loss_aug, 'b', label='Validation loss')\n", "plt.title('Training and Validation Loss')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "RWv-9sM6tNhO", "outputId": "4be481fb-82f1-42f0-df36-3b5a30145f5a" }, "outputs": [ { "data": { "text/plain": [ "0.3743335366249084" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ MEAN OF VALIDATION LOSS:\n", "loss_mean_aug = np.mean(val_loss_aug)\n", "loss_mean_aug" ] }, { "cell_type": "markdown", "metadata": { "id": "UdgMRJaDtamu" }, "source": [ "- Answer for Question5: 0.374" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "N2DQ_1FptX8F", "outputId": "14e82c86-c094-4a8f-9611-cf4feed6a9f2" }, "outputs": [ { "data": { "text/plain": [ "[0.8477157354354858,\n", " 0.8502538204193115,\n", " 0.7411167621612549,\n", " 0.8832487463951111,\n", " 0.8832487463951111]" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ INSPECTION:\n", "val_acc_aug[5:10]" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "kr_d1vNJt4Xq", "outputId": "e0d8531a-3436-43f9-8b22-c9f9e467a1c0" }, "outputs": [ { "data": { "text/plain": [ "0.8411167621612549" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#@ MEAN OF ACCURACY:\n", "acc_mean_aug = np.mean(val_acc_aug[5:10])\n", "acc_mean_aug" ] }, { "cell_type": "markdown", "metadata": { "id": "KHW34IatuQYO" }, "source": [ "Answer for Question6: 0.841" ] } ], "metadata": { "accelerator": "GPU", "colab": { "provenance": [] }, "gpuClass": "standard", "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: cohorts/2022/09-serverless/homework/Dockerfile ================================================ FROM svizor42/zoomcamp-dino-dragon-lambda:v2 RUN pip install keras-image-helper RUN pip install https://github.com/alexeygrigorev/tflite-aws-lambda/raw/main/tflite/tflite_runtime-2.7.0-cp39-cp39-linux_x86_64.whl COPY homework.py . ENV MODEL_NAME=dino-vs-dragon-v2.tflite CMD [ "homework.lambda_handler" ] ================================================ FILE: cohorts/2022/09-serverless/homework/homework.ipynb ================================================ {"cells":[{"cell_type":"code","execution_count":null,"id":"86252c80","metadata":{"id":"86252c80"},"outputs":[],"source":["import tensorflow as tf\n","from tensorflow import keras"]},{"cell_type":"code","execution_count":null,"id":"52acc85f","metadata":{"id":"52acc85f"},"outputs":[],"source":["model = keras.models.load_model('dino_dragon_10_0.899.h5')"]},{"cell_type":"code","execution_count":null,"id":"270af343","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"270af343","executionInfo":{"status":"ok","timestamp":1668722440273,"user_tz":-180,"elapsed":2142,"user":{"displayName":"Timur Kamaliev","userId":"12270392991844786490"}},"outputId":"bdfbca61-b214-4342-dd73-2a649212e1e6"},"outputs":[{"output_type":"stream","name":"stderr","text":["WARNING:absl:Found untraced functions such as _jit_compiled_convolution_op while saving (showing 1 of 1). These functions will not be directly callable after loading.\n"]}],"source":["converter = tf.lite.TFLiteConverter.from_keras_model(model)\n","tflite_model = converter.convert()\n","\n","with open('dino-vs-dragon.tflite', 'wb') as f_out:\n"," f_out.write(tflite_model)"]},{"cell_type":"code","execution_count":null,"id":"29c8e4ec","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"29c8e4ec","executionInfo":{"status":"ok","timestamp":1668722440762,"user_tz":-180,"elapsed":503,"user":{"displayName":"Timur Kamaliev","userId":"12270392991844786490"}},"outputId":"f67f9964-43f1-4483-dda6-916c7d76a417"},"outputs":[{"output_type":"stream","name":"stdout","text":["-rw-r--r-- 1 root root 43M Nov 17 22:00 dino-vs-dragon.tflite\n"]}],"source":["!ls -lh dino-vs-dragon.tflite"]},{"cell_type":"code","execution_count":null,"id":"49b7d4f3","metadata":{"id":"49b7d4f3"},"outputs":[],"source":["import tensorflow.lite as tflite"]},{"cell_type":"code","execution_count":null,"id":"8dcbdcc7","metadata":{"id":"8dcbdcc7"},"outputs":[],"source":["interpreter = tflite.Interpreter(model_path='dino-vs-dragon.tflite')\n","interpreter.allocate_tensors()\n","\n","input_index = interpreter.get_input_details()[0]['index']\n","output_index = interpreter.get_output_details()[0]['index']"]},{"cell_type":"code","execution_count":null,"id":"79b551cd","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"79b551cd","executionInfo":{"status":"ok","timestamp":1668722440765,"user_tz":-180,"elapsed":19,"user":{"displayName":"Timur Kamaliev","userId":"12270392991844786490"}},"outputId":"58cd55c5-24ce-4415-a1f6-9b0c3488d414"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["13"]},"metadata":{},"execution_count":38}],"source":["output_index"]},{"cell_type":"code","execution_count":null,"id":"b838c6f2","metadata":{"id":"b838c6f2"},"outputs":[],"source":["from io import BytesIO\n","from urllib import request\n","\n","from PIL import Image\n","\n","def download_image(url):\n"," with request.urlopen(url) as resp:\n"," buffer = resp.read()\n"," stream = BytesIO(buffer)\n"," img = Image.open(stream)\n"," return img\n","\n","\n","def prepare_image(img, target_size):\n"," if img.mode != 'RGB':\n"," img = img.convert('RGB')\n"," img = img.resize(target_size, Image.NEAREST)\n"," return img"]},{"cell_type":"code","execution_count":null,"id":"23960ec7","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":167},"id":"23960ec7","executionInfo":{"status":"ok","timestamp":1668722440767,"user_tz":-180,"elapsed":17,"user":{"displayName":"Timur Kamaliev","userId":"12270392991844786490"}},"outputId":"c3528bf7-1a03-4a67-b6c6-a922bb6afabb"},"outputs":[{"output_type":"execute_result","data":{"text/plain":[""],"image/png":"iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAIAAACzY+a1AADTsElEQVR4nDz9Z5is2VUeDK+1dnpSxa7OfXKYPJo8Go0yAiQhIRQAmWiEbUww6QOMwe8LNhgDNja8Aks2GGwsZEQQApQDkkZhomZGk/PJp0+n6opP2Gl9P1r2/lXXVb/q2rXXXndY98bfefsNSkP0TTtPpMlUXR47MtjeG+WoNxYbeu2J0YO+Pej3jg+CzPLuindxeuGiKjRiUTuriJJCupkDEs2kDggyS4RQ7ENVznTm03y5iRXWwfl9JfTuC5e0EdPzo8nu7pWqfOHsts/cDJagKV3wMcKyphGK3dFUZ9msbiQYEMTMCEYAWyBbzSQSiqyKIBUEz4XMKh8M4Xg0Z4VQeaQ5EnkbGKOPpAQycwgspQSAGBopJQuqgckBSQFofKhCdMAKERGBIjvvEaWgEBkbFy1GLUXVWAZIdO5iKXW2v7/XLfKyaoiIIXDEELhxgYiY2TlnjAkECkQdbCaEEtJZm2o1daEOrgxeSTnwaFhe5ppIRlsrY6z3LWN8jFXwzJEDa60R0ftIBJIIEWpnQVBGisqqcbWTOnXOoZuhMftT18kz6/nMfvfixy4bwlSn0y0LJJBsmmixuJCpJJfYaif9fgpAF2fnuR6qrqlclSWJVCCUzQhVdzmQzlttEtFg7utQaA1SZKnpd7JW2vei6ayfrmwJ6DpKLzI0WmKwRhlNCUVJJNkzAMi0BYJEU0dhLIsACIzoIwWq6zkAOJ91DQk3JREggGBGsApJQ5DAaFkSRh+Cs8w89lzOPdaRCKrG2XoeIwov0HkRiRvnrRCoEiUQJMdoJHZVmlEuGZ1z08kuMrlqKgFVnmshA5IghSiklAKsBwBCkyY+BgFYuloI4QEjIAnh6yY09YoXmdZxXlsbLnKZSemjS42pATRRHaNDkABGGSMkxKhcJIkqQvQcQQQpvPchRIoCZZLZJiqVejaR0VuuPO3Wu3UzJp/O9iZhOqF6RsC2bqJwmeLO6sLF8y/ayU4znfuqufbaG7N80U/LQifcNL6u0zSdlHOsA0EdKwdAMiWF4BPZXl0kIXZ3tvb2tl52ze2z7WkvcDkcBt80QrKTESE1MsRGCCFFQqiBNc1LcGilEgyBwHFUmoAlSOVIySSXal7q3Og8urkgE0LUKm2aBkE551hCiA4gImIMpCMqJMFA1qceMDIF9gSgpeU6SgrkA4LniIjICSIGjyGEXOYr7d5gsMTMQoiFhYX53sh0ihgCAMQYGVya5gnBwUFExBijlNJaWzlbOVsHZwUsidRrkXnUWiuluqillJnUc8SEKMaYCyUBhVbgQ4MxCKwER+u8Ik8QnZeeU6EsROp0ego0MjfeI1BZNrNpeebZi/1stW9aEByXjme2Gk3i1EPZNPN58PX22RezdnvRmgSz2Xi3fGl7ePEC+ShCrCdTpURZjYtDJ5I8CRFZeD+blqOpg9AHsk+f2zi5fujEVabV2i1fuuWmfqK0gI63ouFQN46jCp6tBxu89QjsIlIjVBU8R4gxSo/gQ/QAUidSJEnCAjGaQimiTMuWRwcAzGyUJvIHn/udjgveehchrKmCmQGlkimQSKQyQiRBFlEmbLD21tXRW+e8937SjBDTVEmBBAAQGevQVwUFKqvKe99MqiIxabed56kUWmlNRFoJDlEJySESgxBCENngBana8bZwSUTtw6JOyhjnxIo5cCTviQiImuDBBXDBAycggvNAoEwaPUMMURKQECiQgXa3dxqIEXBeBhe8EazZbhy6enmjPQ1u3FSzKs5mZUoIZT3b3sGmAR2lbw+vXCw1bs7PpyaJhkxSqOksuinWTTOdTqYqy7JybyKB0dVpu2hlWTWcu8D5yuqTF847iZ1EJ6F79omtOpxL2toDQhBNYEIZBArAVCfRzx2DYCmFUUrF2kopg2CJOlOpJ0Im4qyeDJWRIUIiEh8rA0pLIyABoBiMokwErksoknTQWdTS1InsmW4rEw0jEHjvBaSAIgBHH4zOeybVGOpmbgXkQHUz2Q+zOs6BA0YF4IOHXCQFSKGNUNRUtZvOk4UO1KFpGiVkdD7R5HxjlOAQEREAhBBN9InWiCJImAsfXTQybLi4O5shQgJYW+eQbV0BMgDkUgeOkkRCqmJLDCgkRo4x2shAgmqLtmHvPaJs6jCe8X4wzpeXzk/Gs8qBKNmDC4nSMBoqIBaUqbR9TXs9W5nNZmmZ2rKyu/ukKHhOGkDEgtEsZb7cllJqraNM/axxlddaY5HMxpNDCwuT/bLQyhgjijTR14UQENEhSSltJGAVQvDeC60INaNCRIwStUQfJSRRoAs+ZwGsJPi+VHXlDIrKlUZ1A0GEVkAlyJBg67xICh+cEllZloQqFWrsJnUjEhSJVCE0SC7ViGCRvTbkmYxJ2+mimbsgSTEmETVBYDvyozRN80LHGAHiYtLJQJAUQgg7nMj1XAAiBSGEcy7TIsZIRCLCwS7GGD1wjNFxEJTskast7xWJECKNpIEkI0rRhCCEkIBRoBCCiJqm0UAOYozROUdEEcFxJA84nk1JpEhSm6zdy8iI0uF0VmWc+AYqGxqG8c6+KxtuHM7KuobmUgk6NtM5hSY1aYKdam83OM+I6MAurXd1V4us6Hbq0ZTmU6WBg02hKbe22q2sPL9rNIybuqnmsWJrRwILz8jBOo6BIwJozJ0LMRAIgwBNdFFpYPLaEFEiUhBGAlsmIzwLA+znvkLyARwG8uhFTFgopJCmqQ+ORG6jY48EYVbVUimpghBosrTV6llrrQ+JytMiN0gCQjm1SJaS9nKWscQYAzpGgpTEZDIpQ523kiwrfLACTE9naIObVc1oqpZaTQBAn2eZj0EJqQQKISDEGCMi1nWtEAJIB5GtrxQE57tZCwCuCIsUtYu9oo2BXfDWNkpoDgEAmJEIBIJQlBBx9BqA5vXce5DaeKCqYaS0nNfOz0xHM8VUI2LY3p4657FmJT1MKgSP3EQILZl1SaazkutJp9MRKtaTydaVC3nek9xAgGpShlmDDqXRAkWSZO3jJ+py5MAZBCmVUoaUTlPTxEoIjCidBxlj8IAUlMwje2dLL6xwMUZA0LKphdYiuOCtA4RyfzKcB7AGulBOnBPMqRAKY+VDRUzspRTCCE1cJpS1ihQicSAZwZW2qsvd3d3ovISIkRtno7NVUxsBuSYdoJuESUkraTZo54EoYVBBEEao7Kx2DjlLTJKqEEIrabfb3W7oLKoszRMAQGRNSWTfBB9jJCCNAoFQSSVpEppUKaNEjhw4yhBH6JdRE5BQalTPHDJIgQwQXYCIzMwBmSJgKhQAKKOBBJEUiLi7N6bAdeD94VRBGkKYbjW7k/rKZFZNm2CrqqoAgMtox7UKgVOY15uWy1Gnfv6lc0mSRNCkVZ7n/f6aL0dgyYc6HxAhW4gyKNFOy/1pvj9VSrXTAgAUkEHWAEWWMTMwUxBIzoNQmhyH2MyAlVYZNACCBIMGSpNWWyVNGiWwaOrAsb+xmnDhYZPkArsSeYKImozQNfIMKThfQnTMZN20mo2MQIIxcW0kaAHdIs2yLM/zNNNagCIm9pXzJUDl7e50Hng+ZyEDtaUEJXxoIGCWpJJK72rAkDCtDBZN8CSikLC62M+V1FkKACysUio3CQAAOkQEDBKw9g4Ra+8ySVKkRDSnqIEPyxaGOGBxPOkxsyaBKIUQhdAkBQActGYjV9XeEaCESGXlpo0NDB5EqJoQQQodkNKW6vbaofZZ3r24F5O8P9zdq7b3A8fYhBiTxY3rNSl9gTeObNTow2iYmTwSHXn1kbg9DpOQYSpclqbpUqc1nY65cchxVO5iZQmj9R7YaiMBPUenBTchMjEFoYWMldckFUiJ5KMLFLUEEa3ot2SaO46moYS0UEUqMjufbc8uttIBsc3ylECmhoyUmdBGmo6RuZJpBu1MFwnmBRlNxkQlpNYqkYoAfTljX4OrAWIIQSpMJLY0txRoETCl+Wx/FLwSek0la91WkiSJq0S1ndZpcM3y9Mp6PQmJX8SsV+hzz17WSiQIMrJAJRAQvNJCCMXMEqXnyCBjjEIIleQgMMYIAALlbph3E4VNzLTA4EMIyL6p6qqpow8pEkGUMSogLWWMUAemwNA01jGEEBxE6zmKMK6b0QTYUlGstttSNPK5587ppaKZehkslpZ86dROGsxwfy9tYrcoYox7s0k7XWguwazF9f7QajOf7KD2lzAWK2veW0HQMq1oowu202qZNJuXQ0aRZYnBNEaHwSMTE2utSTCbNMRhQNmRRWAhiyIVWAELIi08IAZVIY5Z1BAipqjaRjCaPEoECYwqgpABIZKURD5YBK10EbmB0CJpOUpJwQAIImRAjACEFDmCJiGZJOl+0V7upd/zypNvvitsz8/YBnpVvZzq2LS8WpvZ0Q+//IbvPfqyB2Zn+kVMqmpSmEFM/MRpFCJT7TQngQTIPkDwB5iEUBCREMJaa4P3wWqpGTECV56l5z0VN93kpDdKyAggtVJpooy2MQJREFiIxEYufe0lk7OM0jiw3oFWGYBkYTKhpG4a34m+zubdq+6OAs2ZB0cBgou5Zp5t1ak3orGttaXG0Pb5SyHWa8eOXZQxTisUgto6CU1WmtHUdqdmbm1T7usOta9ZdM6pjna+kiq2WwMNNgTX6mISUeWp0NFzTUQC0KMja1pkpkgI0MzLWaBEaa21NYVMRZ7nik1dTgdJ4apS+a00U1p2AhImTQxIaiKE0oREREQM1oURin5WCCWNMlYIDMSIUSkldR5jFAKNkIgALoRY23m1d377c0/c9/WvixtvvPFVN2RvWHRDHxd7sNGAVPgHX3niD7YuvPWGu37sNX1udr6lEa5tjhaqHJedbtYIT0RSSkT8BswHZF8552KMLAiVsYy9IkFwgiEKroxuR7ta6kWRhqoRDIxIkavgCDBwZOYATERZJOVZGpPaJmgyloCAQcR5WRvKxrOpHAz3tyfdnMvnhNayv6qilM3+5RG0YLGQ2ZJtj8N4IjkmaU6qcHu+n6fWYs/K4H0VFGR1qldBqGT7WUUtbPz+C5dUz8xndYgkFdqG8yIpZzZNctHB6H1wMVXSgaXIwo0rueT8hDCPhTBZN6oQSSSk0zSBuoSkiYVTROUs6rAPlNvY+KiQ2TNI7Ti2iGLkJjhCxBA8KUnBV80MWMdYMwhCkImxobY2KiUhYqvVmo53WZJEJBJZyGLV2QtVy7uH57NqPn77nf16wk/s7FHMNfH5+QyejP/5a5tPv6f6u6fVNY8+9mJy4to8G1qvEGolqtk0FdKTrkIgBmNMZIyeJWI53ktUuj0et0w6p5BLQS6UqOfKllp2gw46mYSmDmEpaY2bqiuzfT+rfSOULjFkIGk+L21wADCZz6xjFsqzChRJi3LapEX6wuXhrLa7o9n+3gSdasogFLR6fYiIbRldNXvhfCdI3e5szvaydi8/sZ6uLnHWlfmCTBbTvHfhwQfKcXBNYIz1JIKVJJQu8qaZyyQACRKstCC0oESSKBSUMVsPOltMYtU0SMKjl/NmdttrrlJImbJCzLwnPw1eBAalM+cDyqRGGgtoSES0DIEAIlJAUFJFIlIaGRLWcyFjpBqFqUMTSdhQA0gBLBWmxszrMYBUCEgB0CeZDhxl5NnEjYLBdO2TL+HPvvXwpwZyUZgWirbJRs30Fd2N7/yj/HPPXbn2He/6uZcn35ruZajDbI9ikLlhQRiDpCgFA5BgEhI9xyi0g6h14l1TO1e6yByC8D2j08b3A4Wy9LNKeZZIyNyAa5MmIkQWQiQkCaRghNoFmWTBsHOuqmrvfSfpT+qmaRqZ5JOykQv54YXFzd2zWZY1ZT4/tzffmcSIKeWDUzft58Wwbla6C1Mb9s9siwuT7uFrs8SDNpP56Mi1h8hwiGCDnjd1lUSlqbHl8ROHinyBnReMAD7LCuecTE2iskaIlIMQ3JAzNHMQK2hOHT30wOefXUROu31tOq3ONAjBUTNj9EYbjgFYaKEapCiTAjUANYioNBNpZo5QEAEK660yQsQYkyRBDEII5qC1phh8qJWXUhIzSyAAAPRGIimOAi34CfLeaGf5P933d43567fWIXDRbrESVbNP0izny49/8H//q789p67LOqPZAgZFwpC0ZRUIjFCVDQcYH1gQEYbYzVsUWeg0l8I4a1HIADpNlJB7KuRSOk19kzuIAOCtmwbLJJBBADqOBCR85NI287oJXjrvJ9OqfXJ5NJ3EGNOsPaurxfX1tJGf/dpOOS02rwytHRGwyjIRKQh2YUIpap3IlqZMpG01bedz97RtOERqlVuTcTmbBNRpjFFl2hAwoDFmb6eOWIZIeWoIhISQaeFcw6FWwjsS4DmRxhMp51xTTrdH0e5VmaG6sd5VYWE83OcoondIjjgJMSFMGUTERqdEqEkI1MiERFEkUuUeBHMUyngyKJQmoRxixXE43w2xyZNcKRHQIXitOQIjIjI4F2IAhQykBMe2VN8mN35jfOxzkwDrJYRysTMQMYkRnrx0cTy4+jtuXX36gVDg1ieW4/LIBbC6VyigEIJWCBCBCBESoZhcOZsQx16eEsp2YvqMg6KobDNPqsqHbpRtliI1wgajVG6MYDDeK0QCZGZqbBQycY6llHXTSF2QEU/dd2Z/WhmdzquZYLiyubU5PHfVNdnUZY1lrdLxqESO2fFBDhqkdFs7xsP2bCxL1myy1JQ+nxeNt9OqgtmsNCY6mK193zHnLHt2kb23ZJRRmUqEj9DuFL1uKxGpiIQiUUIXSRBGG9toXTSJz+u5l9Vqtpz5Zr+cpUJ5brKFnkJARBbagSeSIAyqTOosgGNJAZUQrQiIibTeee8EghTppMHzu3taEwEeyldfe2NyfP0kB3ho69l2USgJzMFnkkvnU/Ai1RKEZEIG4EiYCnURdnrxa3+/vVK8yHbajEZ7VVXFAC4Gl+gHL9uPreKxtRP30uqvHPKDzmqiJCAjARFBgAOGzEfHUbsYtJDMXARXVRUnauKbTCYhUl+ZOdm20rF2MUaonfXOxdAIsN7HCJaYvOPGlyZN9ytnIzOzEyrVqTB6bz7b3hmT0KW3eWv1uQsjW58ZwmQyrAUzOVFvDvlwZ7S/qwde5O1B/zAGO7y0Pd4fxZ2RHJmtZx4BKbrFApmsKu25D1wCtRAhF4CJKWKMKsVWq5Un+Ww8CTUniQfB0TdeqCq6vq6x0NcOeq0mbeV5tbNdN1NgDkw2BjRSkooqJsJkJBj0PM5ACKFUtMhRAEQjUseVlGStS1NMpME0kBi+/rXdqw6f7KhuL5O9jeHfPLAzmeXD+eiVqzfYgCMF1yc3XPL1y69d/+aevj+c1QC5UkpholBKOa/CbFuc0607Xt18fT7b1Xtp2iSailZmyFy8tHlhuLWx3/7qnH9zvPnwxp0/XM1dwzIVhEIIESNoSUKiBgXAucwcNGFaLvYXY9FVruoqY0MztTBzYVRXR0C7xhqpOJJFbqvEhUBESkgMTIjIwexPpyEE50IAllLGVOmWQk5QZfNmIsnUzSy4OHe4urwG6DuD/vTKLjRQbTe0vCaHfUiEG+/HQO0bbgHCweJK3l1ZWVjUWlNLWw4qU9ZWBnXZ1B44ylpKqdBIYuecElInwRIB+LGvWwA+GO9ogWAUQsNTkBJIVk2c1l4r1QARKSmlosQEajQqpVRUzNw0DWoMIYDCKB0ikzZJkUeUAHDxpXNZd/3ee6tOaHzcOtx77gv3nXt1MX7fL3/7ibXuojqf1d3X9y++6g5qD8VHLz/+6Na5b+EVi44Et1otKQGikwt63JkfWV3Y/Nv9mxM40ulaSKJA720kTBJNygRSI+/Wi5u+8MmvfG/7vG6GqcwkIDNLKREF+xBElAokOZqHKrjRaG9JWCNT733woImDIlR6kysH5Y4rowEVwULMpGbm2jZASNr0pBDdbJmEjoyeObpQzctDqysywaPL3UF3tbE+BjGsRhd39q6c3dkfzuppHRBjnqaD/tJgOVxlagTurmnlTAiAejIDVPX+bDKfTkf7O0maCtHyqq6TRhOEgMhKSxHASqmJKCtanazIhermypAlW59eXpeC55TW5V5edJqykVLnRsnMeAJQIoKMFCJwSJ0M5ClqnWBkgQyCUOlUdYxOpdQhOG6CBvni3qjYWI6XH5O460bn16sz2fCO71orPl92vvnXf+1L9vJG9D9/0949w/6Pf+Seu08vfu59P521b5lcvKI89bu5sFVsmrktzzw/+cHVjd0y/Nkl+uDf/aACryNpLSWBpFA2NXuYllWs8ZwbHbnj1Q+8613f/5pv6pdN6gAiaxGlBACQEVKdE8nUSJWoxjsROCA1B7qNhxACCbAQlUkjfKP8GmViDBEgFYIZidxEtgcCQ7vdJqXnI9/O2iyT8zvb1qpnrgw3t6YhwHTemKR94sQxU3SnPl64vC3RQFNxrrzJZ+MlRDSxKX1v68r5zsLS3kuPjO75ohapQ4HkZ36+M9kKYNOoUcmAsQm+cj4yRoSkkBCayGK50xGUncxNr1D1fFckEYWtHZNtXAwQosr0dDz1EYiiFCrLFzhES7n3ngBBRCklkSQGKaX1PiKBw3MXn0LyyofXtoY0bP7pd1y3c2X0uz9y+0/e/bL2t7zyyIppL9O7gZ77ye+4ISvvO3veJeG/3nV48oUnnv7J333Cx//8Y4Nvu3Hv2JElU5Gyo9XjHbex8Kjju5b239Q+/Ie/9rUXLhsWsksiOkQppNRCaYxhUs194Ednz/x/v/dXf/Dxr85w99nlthECEengYiVEZI+s0rzN4lDRspH3qnmMsaqqdp557+sATYg+SMEuzfNUmVg3moRREhEjIbV6C21STtN0OrVegBLDckw+ukpddcPRxHQCxVarBQA5mel+ub29rTQyyeFsIrQ5W0/CbLqyshJHdjYrtTZF0d7du4SHT/rDy0Q0H09iyKPzS/0FIwdDW1axIpKERgihjcgynSgthFhbX0pTc7STmqzrkNI0ja4tSCklAUAqRMQQIUmSIKMU2QFH1R4sSilbrRb44L0P0QL4A61OKvLe61xRMSBUQrgXgfZd+Adx83/4iXfc+xdf6B49Ov3Ee5O2eP217X9+WNxz3/za29b94sbW5hh3n/sn3/1u/ZrX/IgMoG7+0tls8557G33xfT/5XbeWzQ9NX/yFu676Z2/55n/3X9/41Vlush7bxnEkxdZa72tiL0m3kgwAplU5u+amD/7L191Z9K569hwiEhEAIKLWOoSQsbB1IyRrqbyPMgIRoRK1t5IxVTrPc1R+Q/bnVdk0DSMs5G12nhF0DDRt5n6x29QBAjZuVE+rpNVKsnTWhCefeE6KGCKduXBOFUWapgppVsfpeOYdlHZWZ2ZQz9Hku6Mt2/jggVW+V82kNyurizsvXvAEy0urg/Ul3RTz+WxeTg2KrLMg0442qVCSWGY6HSwv3faau3dntWy3KhuUEKnJPAAyuLqRJBBRC+l8Obfl3NYKFEkskkQTZlJJQZbDgUVFSmBmz1EhhCZqkxUqO7m43gQ/nr7w9Pn6Lf3p4t//mX7u3mM//48f+Ie/vXpjaafa/n5z5Z98YfTqt9790uHbt4b0J7eefE4ff37zc+//7BN//MJL7//bh+48vvzezcWr4uCX/uwLP/bu24+kx9fvXvz+P/yb3/t/vrBz5eKduk7TNJO6pYxAFkIAITIbYwJFRcJv7j30hQevvsXMT68wRmZ23lsOdVlJEoZ9WyuOuFeN5j5EgTFG5BgB2mkC7EpbhtqfcSMVwMeAEPfmE3/gthMSf/q73zkdjXm5PXr8uZbSsS6zXisRJtWgs4Bezifzq64/uv3CBUOBHGFGx9cH++XoTW95ZVlCttj2mE225/3ldmG6peo5vtQ7dIyn/a3nPluWcxtDnonJbNZOwVoLEXPdnk52KXofwNZuHnjl9MnQhNHuuLvQf+GZs3uXL5b1vGK5NXSBoLbzwIIZ2wutqpaL68eqqkm1yZSp3LyalK4cjSbTxjfBNkILKbJEqhijayqdJPc+cf8dN93S6b/Yuqx+4OWLH7rn6R+6rmtUR66Nn3rW90++PH3h2UO3fevmhWfvfebecxfkz1y9cc+kqWjpMy+99K6T19T5drzh1uufO/sfP//wEdH+8e9Yeu8nn37V26//4ufrSaKfuHhm5k0uW1omSH5eTbRp7U7HHCW50Dl0dFaNI7pUqbXJi60Il1uHntiZRCYXOTIyBC1V0XitBAAwwNz5ACwAA3CI0QMaxkiYe941sqoqScLWDQsEABTCQqSnH32WE2Wfv9Qr2g556cSRdq/fWxvEGGMQB2vzzCWm9PJwVDPMbKhr3y1aLz1yzlWNSPreyaVD693uYHt7W8DcqA05dc8/82HHMev0tNbS5Gnaapg8iNq7pmmklCCSNE3nTX3n3Xcl2mxt78ZUXXrqeZax6LZTSmN0SSqllIQaEZnDrAym021qn2VZlqos1zHGpGWCVDpLiYiMyvNOguLAw9lONCiRI+w/8OS5p9W/eOvr+9z+8VOLZ+sau3Y0H108V259+eG/e/LCZz78gWz3kXfccVJ5ecG98JH5OGy7n3j58Y+f+epDD2//1u986C8u1i+VV6/f5N7/uadfW9xO7priLob5mR6tX520jAQNNQAYYwyT0QUJtgq3L5y1c59oE8BdfdvSgwBnd3cPCHf8Pyupp5aDEAIR5803XFvf0J4YEqksgRBixk4w2hgiIQpSKLIssxyIiEySP/Llh7I039vbS4K4fOGSa1w5GjURJeqyrkjJeeVsmCfZAjM3DL2ljTxrb0eEGLcunMtMErwYjYb9LJtU83IyrJ1cLA7nnQwhzuf1aDSSacuYXCkleGW3HNcxjmdcRb9+5Ph+VYKWS71BIiV39HpvMG8s52nCUkTrfR2RfGNDFMzBOYcJpYoq56ejfSfA1UHFELxVSiFTVVoQgBSSVAo9byv4s//wm7/32d/51+ticFp1Nh8z7/j+Kl5zDja/5wt42+F4/fe/zmVw86rp8FUf+PvmPT/65t/+nP5Pt73szb/6g2dPLv/kDdd/27+6+1P3/O/PP/bU2F/5za+BW7n9H6K78dC5H/jR//e2b3rlL/7VP7/qRCbBr7Z66CH3qmFGsoKjScgIyPuZKWvRWX5zXy0PzfWy7xOtAJQSHD0AUJQpqaapQghCCGRQJAiQiGKMEFmLAzJOKo0JKQ6BAJVS3nsGSCLid9x8pySVtqU0Itf58kJvtrdj/bieVr0ilYlgx9H5NLqRt720ba3sL5bL7YVWO11YbbcXlvsbJ1PK98ZbioRV/UELRw3pZtMFNxlPC6cmKRZpUtvd4KEcDVUKccZa64XVxdrVsr062t2xkTH4qYtxbre3dmdbV3wDO9V0BjTcnwfnVNKRRZEUnbxomShYSGfL0FiTJNvDHTub1U1DQqNtKLIuMlFVQ2mvPj9UN6Tf1O7+xWce+pW3nCquP3KR19rNUy9cHKr5aKV//aX7n1t6+7E1PD78wJ/lNxx7QL3sVc/ct9utp+dHvzHrHD0//kSEd5+86slnz//MT9zyo//7saZBF+jDf/Qde/c9aJqmp+T9n3jmvdvQO9w7Jlp7s719bBHarFi7ePmSMhl32kvi3AuPlj/xo29Z+exHP4rtf9gXAsgDeo6BYy9YjqFIehb8vLIHR5OZPYFidIgMHkmgC4aSEUYAYOer0ChlZrZWSPjtL7sTGVpJFpMG96etq49pbqZb21efPnX57MVuR7nKRQTNvDuadDsbLdzJemk37S0utY8sdMLqwqC7EoMq7Zia2dLxl/vqbOhc30wepwL3nrmUXBWGz0aqK5ACFTbNvuF2t8hRG2HnobPAQoWyqpyd+8rNPCILSJ59/MlyPJuxm8/E9nQYSbm6yTsLaeeQ1rKbqGhkaOrd3V2Vp346nPjgdsfGGEkCCFukFwt+hf68WT9+WB5aPHz6I/f+3RtvukXO4peevO916+Mf/+uFd9+499Bj8K63rD7zxc0nx/KHDh99JhWTvc0xZ3//rNU9893L7kOXzQ8fLz/+5SwehUexFiE/N3XaF6duxM899fwnjiytrRXLLT+xdf2O6zf/9sX/sZnPr+wuLBhI16a2MB39l5/8+JbCj7/91e976LKuRw7kM828hKgF2Cq2Om0zmaUpUkzH1RRIHWiKB7tIRA2zECqC80El8ynk7cvV2BjjmzpJ85GvF9AQcyAVPfnQEHTbrejl3KeUnD9/Mc2TcjZ3oRaAShkpJYdnNwa9zcv1zNqybrYmExXBMZpEEIn+wtGaR4Fb4GOM3u80QqjmSlHPmjEDQV7XFUeTdbKRt3miuL8KAAaD1KkQslB5p53PhtV4XkGWla5WICM5o0RmEpQiRq90tG7uY4BQK6Wybp9tOS99rL1SRgRWggsABeaOI4+uH/9FtVWlJ2758u/84bfsbY0e/eKIP7vyjrtgS/37a/M4hvfctTx9qvzTHbhwyf/2c5sPPfTs+Ytu/5m9//jbJ39yDfZW0t993w+958v7D8Olz9f+4hC3XLMks3zZ7bzYJPv83qdmZ5/egXt3L3QPP/Lpr5eb53/1j6/9re/qPzM6f9dbbvz9Hzr089dsPvfG2+90XE72ueO8inuNTLVRKG3DJNR8VgmKQijnKkIlkSTSQf8RBXpkxRwiIJNE75Tcjw1JCY1vpS3JqKXaZ0sCNUZhXSQhjEomcxfIpqm++8arCWWSZJ1WPyKwjCuLi0hLT2/NdRKQlAA1ty5ZXPShqTy2igUH3s2wEaKuzk8ms2ikaScr/U7w1UKnNccqz/pZXgSSFEEtHqt9yPK2nXsGnyW5ErKywXQK0NReWO1sHAFipVGotHFRyUQnCrjJEj0db7PlndHQAQmhOkUqmYtcFAX1RTzW2/3+7/jy5gPX7z/03hvf/lPFP/zhxm2329t/odJCTzv3fPjp57/7vQ2fH5696t1/tvXRR8fvHsGoY4ZXukvLrbcPTr/nO67+1l/ffeNzW697+ct+65+97/hy+n2n1HLcyrSIHqfk7CidNvLo4NSOXr3hH936Wp/2dvd/5bO7d03z33/tR8+Lk3+Tr7w2Xnz6a1/3d9+9n06+99bF+ZOXuipgO5nKGWCMwWqtOdpECvBpNZknUkhEQA7RQwxIICKECCxJ4sGhxFTJVOrUGJOl3jmOse8xRYFvvuY2KSFraSEEcSJzFL7uHD982A8vXClbLSWi2x9ObRNaadJbyLIVKDL5zNd2bjiypE36ire+cf/8vLs2oGghbZc66SZ6uPlENLWdCyUpV7Iaj2YBIDiR1lnv1PjSi4PDV6EAW3shASJjU9Y+eorecu38aFJd2b8iQI7OnB/uN5NQ2kg+IAXAPOvlixijQ0ClVZIqwZPhbpyXq+SXTabReZe/9cTHtq3bOPSuFz75Vxu3/kB2fNH7D7iduz76sc9c/ysnnvuP279/35W4dqpXD//n0b3rz3f/bMP/9pOz/18G7x33vxW6a8vbHw7Vt92S/OVDqleOVruDv7i0e9tC5xkquIqKsaxDIlI9u6LTlbtbZ9/chx996eTP3WyVufr9n3v8g59858Mf/szk+fGFx3Z47+Qjpwaj2WP7kvOFq+34/GRazZxLZCq0gLnLmXvdLDLu7U/xAFqEGAiIIDIGAELpY0AUiGgbf2AJl4Db1ZQRPTEBMQA0dfAOQNQQSJk+xur57QkTV5O5dSHPi40ja8aYB1+4//mnRg/ct4fC7M4Ykca7k+XTg8AiUASlikQFSyjTZqay1HhbQRJmdeNw3l/ummLZDi8PA5BOeuuZNqxRSCQ2idQKUQX2yDgvSxWVm1S1Z51KiYqjCBxr11AMs/m4Io8EUTitmluXHrmxyG/MyM+fvj49c/ctn33N/kfOpm8/sfHP/8tv/lWz8o4rs4fVqffGv91tv2npmlcPHvmVx55p7Kt7kOzuVKPq3c9vrJ0f/et7+FbOfqPW35MPe0dfslK4/XBM37xuR+K67qfcoYW5+rHCw1441NLfvqLzNCr0rtP1Wfh8s/IL5w4fPlK+YIf/6sVPF6eyr/77By58+vL9O6e/Mrj60mCm3KM/v3B00OqDnTQ1S6GNSGywAFJGjzqx1iJEFN8wGCKiIsGMzICIPjrmAy+p1egTAU30w1B38qIoclKSmJmECSEiYhACuYzBw0wnmrTWIlFZkTO62Wzmm9mrT7wyIZ0p5tqWNmwPx7vb+5fOXZhNdgGSYDp2fycIESm0u926LhF0qEV3sWNQWe9J5nMSV199GzOOL9mIybiqPUdEAUQQQ4h1FDHvttNcF0lqNPkYIylAqUUipGIfHDchgERKkuSGG+OZzerkdfiqt173j9Zct3k6el78vlvWblt9cXjvj721fe2bL0nx7Ly9cN+MH/z5T/3lx+xn968999J123bxxUbePyvf0um/cdC+rMqPuXB8vPTHvPKpUf5MdeOrV/KPf/yZe9wq7F51ykzzDfMHl1Ux3R1e2Xr6wub3nVIq3d0KC1zVAjUr3Nums3z1y/Nres38g08/8CQd++nwlatsUy6WQc5/v51bbZTWWgolpZAgQPimlkaibQQZHwSRRI5SSmYmIC0kIvjAiN+wj+KBYUNoY4RinDd1bRsAkIEdUiIhcc4XJm/KJlvDprKLR08lYTa+cHG4M1pe6e/PJpDJ7f2piPHUT6jt/5Hr3Mh2OwStCRMdmuhxuj1fvWE5TvtiYT7aIymYHJKygTJl0m4+GdWLh64XTC5UpbfCZCophGGs5Hi+n6Q6xXxnNJGu7hXZbuWqqkxN3rjpHJ2WqRGpZRU9JUli8uSmTnbX5mPildNq95nqsx87NBi/cMu/PioujC639PZfnJh9t/9R9bX//ppH73ty/r9mTx0+eXr/7LPp4H89vfz4hfoDr5yur+BVmJ2djr7pZ9ef/cu91THfd+HiDx8HON8+U37pm2+WF66+5VVm+5cfuP/N+6aVDkZZ2eppmOB9YWPxyRfXcvM9a/GLw6WHzJV8JFVqrv/m23krOb978chjm+e7l39QHH65POzbp+swnVVTx7rfaY22rkRACCQFO2dBpxPRJI1nCATIINAFgRRjCCEiHmBDD0AHbaqLwK70UneSYi7DcDJmBhKUAERmVkqFENNuZhuMMe6cvTIpm6y/0FnqOoZctCGoLFF5bu77FR+pN9ybElFUTlBh2QgpW8askp2Nh7PR2BNEBKXU7s7Y100jwqwWHlIpJSiqIzgm4RplIjrlqDEylVISmpZsZWkXSXX7xfHrb0wpJqaVkXLOVd76ULcWUqWU9e7lqyKOHs73vmnBaaTpxVveeqr6Kvzdpx74vd9/+GNlffN/8VtH3/Gh337Nq3u3fc81LSofrNOCRHbn0fddd+8ZuWLH1UZx8qWpTb+888T00F0J/acCxg/AP/2+W3/qT757rczUE19q0+6Hfu5fPzZtf6baOyKqW3NxotO/2m8+3sR/nPRLfuZdC/wz+d47Tl2VM/7mb7zPrDq9vtB5210r9dEbysGuiQwNV7XEmJEK6JkZkQ8wQ57nFp1iFEJ44P/LfR/ACYWCmQ/qKmA44GskCaVUWyWNrYWLhU4WhMI3X3dzmubeW6OVlAVQ1e50AGjQT+d2mBOvbKzPruw28xKBqJrOHEeE6LjfUoeuucowHTl5pNtui9S02oN06fBkeJbtFc9ayKg7ML08q22tGMdhfPTqt3q/b8vKg4/sEwKwHgi9d+yi87V1pYuhnoexB6zKK+NJWpbnrkz2x6Opjc65yAKTrNttHz++8KPLH4id089cOjJYu4LiUfuCf2krO/3ign7NlfmD4k++VL/ptvbnwrE39kb/8RF1ni9V5YCn+N8O7b9fTgfZ2mh7F+T6r5+Y/efNlhq99Asv0x96sfsDP//jf/27732Z3T05WP+L7Lo/f+jB1iV7+qYTdvLY/RE+eeap09e99nv2aGOZfKhuuvuW7jOPve9c95lyp+/E4s2vgYV43S23tFT9pZc2+bmLNvJ8PJJJOm4mqIWr6tneTmQsm+iDVSS6QJWz3baclzHGSEzMKJACQowxIFuE4DlCIJIxRhHJE6hAmOrRaDRVvJAUJDGP0WuRK60TFaVIhWSthGsazUbLZDwqI7gQAhDuzUY2hFQDCtVEMd4eRwduVo2tC0yWh+Phc0T9qgxNVc7LyebT23beBG+9VCeu+44gvfMyREQmqhrXRFUszFwTmGxslEYFOkSdd9spRRktlJN047gF70kDx8hBMSIJ9vWxQSsWdC7vrRdfyc48Sc/47nWvO/bK8pNx73987Nr3Py7Hy+2/vmfyxKNPpdv65zfi62T1vaft3QvnMy02d+AVnctVZ+UtzfT9buHmI43j5cmL/e//4K//1W//yu3V4nz91L86X72++fQPdFvp0Y5opo/vLVRDuPrYTdc09v185c+vNOMn60OHr87Uq37u7k7XlTcfnY4ffu6b3vkOqaqks7rUWTcmZRJQ6OtibqkhbaXR1h9ccP5gSNhGSBMZgziwCBNJgAMREQFAAlFgSXBQSBkBAQBgM5bVeEpEizqPwOTjmCJHN0MLIQTnGtsggmhqL0mZPGst9BBVr9dDhLRVIKILJno7r5kW+7WJTQDNrMCniWpGVe3PoBDoIwVp8gzawpiOMelwus9VE2NE0Foq6nRAiqrZ11obo1JtgAmETqTy3oORcmGgF9pXnjsTQsi0TNM0TVMbUQIqVC398LjO1tdujtg3p1fs+tIf/crnP/PnCzBLZuIycn7N2pHXXnPtrur87m793LS8fwyvMfQzd+GXBvmPv+nYZ56Ho3Xzxv/07Y9u9U62h4Mb9z9BV1577Y/82TPwIeJ45fm1wfG/exg+VPp/+55D99Zn6r5+Wat1WOCxRn5XceQX3/WGrywX4y8+8owZ7/GpN65ffd/ji23tP/Hrv6my7tbW7umVfH+xXdXjXnd5cOpIv1ifT7BBmyRGJalgABcSy9JXIjQtkxIRC0JyB77vg/rpOABACOGgnYkxOiPIhYWkaHU7WZKmUk/KOSlajAEiMGBITK6UAWDnpj5SANNZXJhP9yVJY4SRSmqNiNP5LGtlUnBZuQoFiMDkXIDQtNTxawQYJigW+z46bZBQiXamlm5JVBZAJDIzmWFEZyOQ0EIKIYJzRIRCRoUylRQgkVFJ6i2va4JM6hChruvgoykSF8P08ui6v7rn/Aj/7U9/5NxnX7z/uYvDD2z/09uPbzVZ5YfvpPR1t6UXd/zl7c3b2ru3dM1Xwuw9gzvvP7yzcdudx09cet+HLnXz1e95d/vP/+sfv7f3ElyhR78UPnU2+dCr1t51Szspz92cnHj4mYd83r0iL//03539ttW1R85sXpPnH/von3defaOb7f7FFx89vNEaUXyesqGZ33pU/sjLAbvD1al49i//KgOYzspTx4+ixWY2fXa8KSSqlOw0APoYvRCkEwM+KC0B27N5JYRCxAgQowWISiABcIgo6MDexAdGveBDcHY+KZtaKTW3tVAS337jbQjSKM1oCaXMqUj7jAzQLLZb1OKWQD+bcYDg69HWFhV5orohhPmsKRaK5WNHN/r6+OGrgpuvnDgSqHfu7H2rLTNu6sHSivdRJ7kNHotjKMgYNZtXLWFnzVQqEW0lIoVYScAYo6P9pkwihapsoi/3AmdF/8zjL07Pb8+b6aiq5jNbge71Vu94xUrv4Xur77v7w7/6Abvr7nzF8OYX9VZjj57sXtaH1xdaN5//yh8+eeTmu9yNI37Xn/NnXPrOU+O7Xu3uf65Pz+J448KFveuv4+eesu6Q8EfTm69TGy/beDi0J1la3vuR8Kmi97dX7K+/ee3YXvPZzfNPKtXx7lK12K52VjWsqGNf7zY/OOjtzUrny5uFlbh/ZX91oVj99HBOofOR4QP/9t//+nMXLtosq545szpYefyxF4ZipLGeb+04js3MKyGhrNpZKkzSUfJcOaaSIwQjKEBgz0TS+miJfcQYYwSOwCiEQqgnddHtBSP9ZO5EpCZaUrK2jXestdY6g1AqlSgNqt+mwD4GJZMk0UXe7beWNSXRzaqqCrHRsiMWFwmNr8e6twgeWqk8evya6ICd2b+y7X0dI4nFa5RSmoL3npzzyFoVwEKKlESMMU5tHQEkdJRSwkUhBOgsVybMqqSb54VBROEEEWlGH8rZuQfPnP169rMfuC5bGF8aflsF/+ERLQECrrxidm7x609/anFNXZp8sV2mT2z+0LH0lo0zb63d8f7t5e7WU2k9Ph+Wsmd248YrW4t7+uiNq8NHwubHL1xSLbObhKOvS996uPO2N8yf+vyems+/99b1v3/NTYta/+o/+V69lqwVx55Vu1eHZL++tDcZLqvFzz/rc738Qx2sXZNP99/8S2+67tDxsiw3Fntd1dofj8aTnSgCxZDmOSqpGA+qpRBiZmvXzGuwGasQghEyxogohBAHl+X/1Q6JSDAyM7Js6Xx3OiYXHLKKkjAqwZFAIGJk8tb1W3mMM25ErIMu2kmSAsBgsSVkSNPU5lOQSgkSQly49MwiLS0OXqC062Z7JNOyKWE6EXkhZExaqdBp9E4rKdIkggYASiQJBYBaJ4jYXlojqfPusgt+XFXRY7u7YPJUobANoDYLWrF14CUBsA+g0EduLRx9w87CR4q7zmxOf/Sm/kdfyN9810yFl105+8zzcbJJw9/57+7hfvOKT4y+/XLr/ZPhY5fg5lfHL3y8fctCfWeezrW+a27y6vnXHg8/0x5zPfyT58PXh62fusdf2l1/9Qlx4XL7NVuwdtpfXMA7npl84I83vxzw373/jy7uys82k2I/PbP/0vb+kjKt/uGrb/7W4x9/fvfTZZnw1qhY+cKv/v7bejIEkej07N6Fa1758oXFBZs3amZn5VwoDYI4xMY6xsjBI4hq4nS20F1cr51FKTAyIgZg6xsCAoxAyBhJCiNk4ywnkAmlhNRC6kSSEGitFYDEzMTBw9xGUftpsFNsquncBJck5uK57boc++hhN5EksiJtd3obh666UJ2ddl67PR+VwuyGSmCsYnTOKi2EEF5ycvR6D+DRy3Yxm5UUMQaUWjUhkqSdK5uepaQYyaWZkLm4MDoffWQj+0sLRE3wWLMvWpqIjNFEFH145uEXFk9f7Lgrkyo8N04/+Wz4h2fg/suPPenhl+9r/eUjgGun79vD7tve/stHp0fQbXTXPvRSdt3hT35Hr7/c3r9j48hWLK89AUYUyWF7+Zj7zZd9/bCZ/uOXL//P+y793P/OvnDpse+5+86XPb3wLd3+/+vg5OrJq+dHB7C6jsWA9VBnC+0bxmFrdzre2zkz/tq4c2TjSzL+j+HIpdtNsX/x9a/cOHU0oLvj+Mm5s5cv7cDcNRi7ScfWFaIIAFopzlMVAYRc6/QENCT86tohEJ5ISoGKsEhShggEABFYxhjRuX6ayCYcXT+MAN66SdPQQZqC0iiECNEKnY7H42nEhU47Wy36C+1soctMs9kMuYgxmgSEEBQ5Tynqhlsd++Q5HO830zoXZIOPTfxGZE4Awg6RdM4d1ITVU8cY6hBCjBFBzhunlAoIzrk8XYKYM3NHLAsBKukQyaIopJSdTsd7DwpjRCmlVNjU4cn08NC88Hp1eeFIdfXALdz+xrk/+tBLABfDUxfgiLv3HYOQPfqVm9cW6tbh/++qyzcN9v/ia+ZXHhl2hXyDef5n33T9t9/YHWp+vjSff5wX1lZGDfzKB69kK7ifDIK6+kc+ee53jveP3zz4T++8+mcGXwAxCzJFbF3TmQmoduqoRX+gDnl2Y2rGs+kvrK+86RW3/1rTzt2bBp948LnPfjYGYacjZIhsWyqjPLly5UqMkcFLxZGbcDCoJtXucLKwsNBJOszcAgMA3vsQgnMO/s8i8Arp4Kt2ll/avjDc30fEQmjKSSUmi4GEERSQmkl/sJAupPrEwkC3ao2jctuHuVIG2nMpZa/XI4ajq0ubW0NuxICSiYm4uMxlpeqgPJs0UTLRbQMqV91j3nGSpQxCEpfTmQdWIkMEJVAgcZSJMd7Fxk8leABoL6VUFCE45xrnYwDPETJljJBCIPk6FvlCCP8rXzl2qD798t6zFw8ld93wiY/csxnhXdekV13t//y/vk40Rybc/icP1K/4aokw/MPz4r3PL/rEXroCL0yGX9lded8Xx//t78NnPh+vnJPrMXv/Z+sPb/fuaF3d27nxSgPf+SrFm3sndp54zwfg5G89/2p56CJd2sQXgtp99Eq7AX1I7RfW9apiej6o3N7QXfrprw9f+vLe/+u2xBv7Xze32X63DK6OUkhNRxcVoQ9Nqg0iQgQZQZBCyyRzBD9j10Q/mU0hct5qaWIp5QFZw8waJQIQIVmrpfDeT23ZMW1BpJWqfE1aEQfnfOMdW++AtONy6eQxhDAT3AXUxYBI9nq9OMqWN1Z0UI13Z89dzrvtwNDJlC6xZmwwyK7ZHU3K2jIYhWkxOMJaoFDggkaBDNEG2Vos+QqyYAJjUgKMzgsiJBV9FChsDMyopVEJCW0SStJUEAMiQmREQR2zXT1xKDw6vZz+4kdXJmLM59wbDx+X/fxvXspmTfrd//ahUTF7zEMO6S1Hj/XTohQ9MQ53dLLX3d69/6nT9+7v11h2u/p376iy/e1+tXB68dSvner91S+t7apJH3qf/Go8fLzHvvcqv3v7xuv3Loo1/8pzWyUoUq16xdrTWmQxmJVzW9n+eF74hm5b7Foap8Wx0ac/9dG9e6qPfWp+/oLRemc2XugdclnF3nlXkSSIjFKwrzjGJjYxRt1Rg9b64tqgLqdCZMB8gAW1EpLRQUBEEVFkhpnTLHE+uhjaOhWAApCmrg4haIHguBrvr3QykeSlK1utXOtkVpXD0SwSzqaVlHJz89JoXGutTZ6pkC2128MStsebuUhWBr1z22ORCM1V5IoxAUp0ACkNADjnoqI8zxPgjVM3aK0psPfeSWShhBDMWCqQRiNkUkqpg/eeGh9nuy3SB/1bp5uBlnZeHWG99lVKojmVF29/85uHF489P6kmm50g1i0UnWRdtwK3b2jEK1+66LdHxwfNHUVyrDFr++eP4GJxtTgiZi0z7/zy469qbrglljCP/pGm82/e+6XepVjuDbGTPbjJLzYbO8ePvNSuU7lWl9XtK3c2W3RItIWKX7wUV8JQzpffKKB/TfpwWT7m5jtRnufqobr5zd/4N/dt4tJNV7lgrzV56OdAqIE0RfQohIgxCkqAkUS0kYeT8d72JVfxysYhKdAYY4kPQH2MUQMRUYJWh28wqECIIYISnqP3npQwztkQIgk+eurUZtnobvv0yhKSqv10urE8OHpkNpuZhELwzCLpqNBYNB5wbLXZ+fwnDPY2X3yhibK6slPPmxgI2ATP1pVecHAzIYRWihv2VcUoJrtTFywQSmFUJCUkBa6apqPz0gshkD0ZnSRSoxSqlVsURspUavYsGPrHDo0Xrn/gRD2E0w7Dh//2pWw1beuBarVT05f2Kp2sIryeSCbZ5uHuEU72XJ4uL68+dnaAnbyfyMtlY+fmilqv9f6luSEl1/tfj+31M+mNF5LX/PXp5EjaO5qsrGSTT9z/4lferuvJyqDNPDsnWrw/qS7HiC3xwZg94rYed/XG/sxl03jlCodNXffSvP/3//q3X/9D7xB//w8tk4aE3Is7W1uV6rQRACGGEJQSSiMiCmaTyCPpMqmkKmckksg2MVlPpQgxRi+BmZmYXVSeIHrnrTNaCiF0RIwhTRJqgheUJSaztr6yuV01o+l0OovsHRipEmV6gx6iiBF8sHVjI1uOAGw4JPPxnuuvzhPoRJjM3UJWhLSwkVEoTFLHACESiBhCiFEQBkQjlXcYY9BSRYjSaMYoitRIwyATDcwhRFeWtqp93sp6C4sxuDRTQojI3hgTh5Ol9MT0Rdi15zpLS0/tf27mLpfVGaMoWBHT6SVzduUH169711Wv+4Hb125ajbbT6u77ZHL8ZoVJvye9UK3hSrvV1EdPbByt7anvP7zQfetpvZVi6/rkwo9fSHauXEzkyrJMksg/8UeXXyg/XGkMAo2nmu2xdt+zVU68zG9dwfalEb623dsySWfxZFp9vavDyTfdeffrb7r2n/1sCDZr92boVpYWMmQfnfdeCBFsCCEIaGrg4f5I5taFWZ63og+95eOpXqXGoSBCLeU3CNMklQRoVMIhDveH6CMQtkwqSRAEQKE8NkZnG+tHkrSIq9mVyRYpCdKgEC+evSAlSCmdDWjUUudwlhvnq7Sbr7zsujxMF+fCWb+6vPjSS+c6RjAE70GnRZK1pZQ+NAcFQUoZQrAcSARCFaWSUqKPIfjIaCSSiEII770RAEy+rra3t8vJqJWh0MoUmdG5UmpxcfHTR4uN3hu72eHz4+plb/3uY68+etN33HDd3ctGVWiqt/zod+ppPNZZubSWuW7jm3zeDE98z8vf/FNve+nJj3bTut81beVvuv1E+12LC++805+8cfFtR7641T/kqyjbrax73fLhCxfvjwFOrKw8X4Zv7dz60Etfz42RgFMPpYOeNEcz9ZHy8LhJApiHwS0tit2tnXxJRp5fN9wsTPHlr332wa8+WJeTaw6vXnPqeifUgWfiG/oRADMDQJZlqClNWkYZQjWZ1nuTl0hYIrIcmLkJXgFZa32oK9dUVbVU9JVS38jwYCZJBrhkL3SiHfnAfFgMUpN6WyKJCLyYdFBkEQJKUc5n26PLEYJ3mLaKrfse9Bvdp/fOPwthP/jp9mw2nFhr5/PpwSArAMTIQgkphHMeiaRQwaGNHFwEgLTT1SpvGkvSKGUkGYESUAiyvV7P5Fl3ceEgoc4Y0e93Scnd3e2jSfvZ0Zn24VNXvefmIstnOksXT7jBzKPudtvlaG5aum5zt+TuTSdOvUYs9NprSbI3n1zz7levvfPmatKcuvvI9BS74ciLoHfr2tA7fuCuptfrJ6FI3fm9rVsWX3a6X+DW5jWdzbPN9u29ay0LK7RCuuLHg4ZCkrXyWuL+p2azZBiSmJxc65536wPa+MLjL33Lm99WVvblr3stEc3n46/ef99k/wqzQmYADsASKQLLCBqkmzI4COyYGyn98ZO3gupTYCU4aKUhxNAQSiJKE3nk+Masrjz7qpoDIQdH4+ElpSmCD8BPPvOoWmzNkqaRjIg4tSHwdHOnGo3298ZA6F3QSZ5k7YXBSnDNwqFjNFdr3d7xfPHSzs5V3/LN3dUBKLM8WCQQwVUuBkUkkJh94KC19t7rLGUkbZBkWjdT6+oYobG28RWjd7E2xhAJltQrkssXzkcSKjERuHSNUFToJDvabrLMvKyvqxgN50rVvskW1tp3mBiotb5eFBmMpidFXM2zwfVr2YAkE5blocWNFuv1q1qzSTVxkKYGlYot460VavvOO8xAuEYnG4d1RbPeWv/YqdOncXDssNw4mhA4nWTaGAjwUmJLEAOVzXyaEWzPw7nd6T5fajpbk82dAecf/PCfdbL21t5wodPtg84E9otBLkWMDIHZB0Q8kMTZjXrtvipIk8AgosVZvZ/nS1IIBGGsJ5TCCHZWS8UhXrpwuQ61lpQlqbU1xEDt3pIU6XQ68z7c9PLbBkeWtCBnfRBoIQri0WxYBieFVkqtHzk6mY8i15uXz7k6vvWG6y8/++hk0COvT7eWljYG0/nUkxzX02CnRa+vpfAcI39jhIAJpZS2rowx3oVEChmTdqtrlLQkrMg8gxS6qWsCAHTzklbynFAF8kXL6MwkqZC+FhO7dCITUayubGysHp1JbPcXx7aKTGKxh4/Y1f4yzpu63wllef3VN1msGm/jsKQCBYYjJ44u37SST2wraWdFQj7a8XxfVOduX8iKzTe95cSaFCeOts8+vekWYXxiLb3+puLCXkHsqhIwmjSv63LBzCdb270cbcVnq3ELV67h5aWtqFtHNJuP/OlnKE8OrQ484Nb+/kK3VzfTCHxgsyfkyE4i+oBB5L4KEgeCkkg21egdRre52CnyRLjopJTspUmk9zHGmBVpJzOpSYBQgtSJoXk5mc+naaY3Dq1efOFsQnE6nWZCsQ/aMfp45IYber1eJAAXMFFJknDU6+urzs+fUdA/fd1SLvMrl8++9Oy9n/vK9mxcNn7aeNap9x59lEgCmv87VHcwOwIAUkoP3JCfVdFGjhGMMVXpEb/BAtvGQz2qlYncGGOklILIKB1krOp66dgtHuN0Nro43JE2NLOmSDM6cujIyZOPPPOx6aXNbq+XBEzXuld2LoyTbksZ3U2yYKJnuZ725YBuPTyfTymyUFJ1UyV05wtnPYinv/jIjmjWlwvT06tKr/S7lx5/YkUFbGtib3Sayug5eWnqlSQZeGmtmHHSK+r7tZRF8qzces5NTt++hoIsh8lkYlp5zEBK9Q1wFeMBc6211oaV9iM31YX0bsaY1d4x+4XBNXZmgweKHNkzuAMTxsE/oNXr1sGRiAwOXKDUiE4xSFFfePFC1lZN5RhqJVMiKnWsKhhe2a69nVXjUTkrdyfBxyxvYYh5mp659KwZjubD+VhwWdYpxHGwWap1YgSSEhgRbDO3HoAEkABkECSE0FnKzBFYoIjotKR2klS1TxIVAEMkIU2h097yclunhnTgGJwXGK2DBE1P5dlSkiWkErPUXxQRpPRSZ1cfPpqeii97+WtOXneqaBnvPUz90rH+3bfetLM3NFLVjevkmSY89+DTF7/+gtZJqJpOp5Ut9log461Huu0O+nHPXLDWHz2ln/j6C08//SRtxfv3lSnjca1He8OtanooTSiI3sbSbh154kioZ6uKS+ehd6K7LyfZI3/8NyKwlSoCKKVc5QqVRR+UkoTIQDFg4z2ASGLfNtHHcdAtDrNyao3CMsxt8PEgsl2CQAJACFGAMKT3x0NrrSF5QI5SsZxYe56lXzjdbhc54FQqHs3KwAJDSMGWZ3dkvnDousOUzI52k5Wio8uaoq2b6fjSZO1d37pCIixnSglJ2Jfp/niUmqQMDTdOICetntSCiUkgIkbrAEApxcwSYgA0UgqhHGKmFaIQpBCxaRqF7Mr9wF5KOWvKVAgDkmLMu61o51m3a2vnNGxdON/ppjXX9WSyZBtNvXHWbJ3fFFrpfpq0200pikOttsp0bmwzp4BZkm68bGOj39va3xt0ejrJ2kGBIDsrzaRq2svJzT92ZVwvjiRtzQdrhxdvvGXQGhvCLZDtAgZZcWJJHinsqLlQVLvChta0Yq25kgN4ZrQ15cHOI+Zph1w1M52oLC3W9s6rXDW2CtFFAsKIiCCFUjQRzdVHTwMuU5wsDY7oPEmMwegCBOsc5pKjRAFCCCmJiR3Y5f6a1tJFxohERM0ueMg4it1LO9TXKDJFi74cxdoGktM9u57J7tQsvlj/7Nve+a3XLtx+1Yvf+45rVlvy8PLGxuHD5//uk2dH+3FnL1lZKed2PNw5SIMXQjTEQojeQnYgnRy00TKVVVVFHwCg4SACa605iuCRiAB9iBWJRkoJbFS66kPtZRhIJSToVOaFmsymSZZCqNI8azfQ0akRIpVJLICl9PO9U0c3fFkmiRZeQIiS61BVUdh6WC6vrlQQIJTT6TQb9NZ6fW+ERFe0dDsRJ08sX0rd0eOhJ+5ZPzE4K0erP/C6ajgNmy9URha+OgpuveiQdQ8N7eV9mED+nCikCAtrfQP0oh29+6b+G273oj38F+mhFGWBimMMIdQ2Re+TJDHGqAhoFACoCN4JmoVkaUljA9lRz7UR2fb2LAjsdZcAIAaM3HAUB+29YJARynKGITKzMUYIQZ7AOyG1yIpuarSPcVaNknaByk+2dmlv9qa7T7++eGjwqq0+nHnqzJXl4hUP3vOVmwZ28/kXdy6flbZZ67QpL6IyIcPIBChjls6qMteJj3E8nHmOFMX/Sfz3SZZbayOSYIqS0LOTqJXwLiZJQqTTpI8QJzwf7l9uqlpwDBGqyB5QmXTQ67YjtllqStJeJo2u5k1bZUvdnhPcXh7I2i8cXW9CEEqiRAhqbXkwUJlIJAGQ9xx1u9suunmSZ2lGrrSqDCbTh6eJ1lcWnzzz3DNmXO2st49m07CwcrgvohRiF2JsvA7wloGy3lppVNLbcPM8d6Nmsseh0Po/38+fvjjYmy1/wt28Y+dSyhhjVc5IcU0+BWYfAgTgQBhtcIhVSrHcuxzAaB2h3Ul1s7CQKqFy09YIaD078t4jExEBIhAWiYnWKhLONdZaqm0g4YL37bxIjZTeOnKNa7iMYWje9Ka1eufZ2cap/sP4p/eMRnL40Uef3aeFh1+Mr33t1c8++JBPs5qYDg3itC4Or80r54VoplMAcPVMGRnZi0jgPXMgIkQFMVQhaJAxAgTwwMTAzKBUY71U6dbebG90RjEyxHlpfQ2CgKPvZdpILpwzeYrRG+3rvXlqUOeFUtiMpqGrZJCUy8rOmTmRWiFwIq5EWxcGGWZzywihambDUY283Gp3ku5atxezotbzrzzy2R//F9N6YfPEnUu3/tTP7BRNlthjs62XpmdFWbelgcV2QfJP62pDpANTvUqVT7bnD82m43JJCBFJJtTKLmwku3br659u7n8cOJIkqeniotx3OCndgYkUQUbvlBLe+2lsRtOZ1o1kxHoaTd8518kXZk2lhKBUHTR3PgTAGGNk5uFkakxLCQlAUjMBlZ4zFnHzytm94RZgSBuRotoeXaxnf9n/8kMf/NvPj5584sPDAWXjnb1rmZKdkv1i9+xLV6678dg7vus7hVHx4cfIhs7yQAhmQqVUYAIpAtdSSqkgHsyGI1JgADDEUzsNIRBFZiYGlRiFkS2jrxZpkgnXrq5sLC6gsFJBmiepEpmWS/0OtYxCSJM2utDp5vVkpj1H38QExDhQSjJURiBi8DHEGI0xg1iADESUZ5oavxd3mPl00t9spty4r108Nx2e3wC5tH7Nx37VnHpZJac7X3zjD/7od37XNQsLnz77D8dEKym456wr7ZN+P1fZVj2OPr13a+sNonWozIvk/O50D4Orm3h06Rxsv/Qbf/h75v5PVlWVpuli3i6EP9qMlpc7zEIpxeCVUgpJShnZSyldaVMdlF/Pi1gUg7kb66TQqNn5gzZea/1/tUOlVPTzupkrTUopEpSxsHUVGBqVGCZu9xNbT2nYkdO1p5948VJ5/Iuu3G6+HLpHJ81zL87HGydOTkZNJgaH1o89hiN55Kpp2tUrfRuqGkJVlpGwrm3gKILy3lrntJYYmb2L0XOIMkklfMOZJYxiQLAxrepOO0ccZoPFhe4aLF3HqLL2ojFqe9woKZvoY7CFoQicKFBAo/1JYiTKQEq3ZkRJlMRR6hCYY0COSRDkXCO90e0kNxmANGoABcd6hnjd4mqaJzcuDZY31oof+73JAx947ondZO/o4ublq7/50EMPffhPL+weesf38NqpQ6/7R1PvKIabs0Wezr9vMAlxXozgsYjHTJ99Z60b1pScS5Y4OHLjKz/9F58sfum3mqapJrPt/XFQaztO7u0OFRDFIFkc5AZFwk7REgaFqiR0lNnvL6zsz8ZsPZK3UBcsGAIAAEYEgYgEopyPpUkRiT2W00Yy6mD3irRYO7FOUmDw873dKBaWmwdP9Hh3PNuvQmplv3WdrHCps3hIiPMvPisjwNGFK6Ox/twjRW9RytpPR9tXZv3FJRVDAAEJOi9E8B6UUoDWC4kEBASBuamqiKQlxsCIKKQmbGZcm/1Z1Gp3VgmfeqrUdJxprgWkRjI3kVWRptMQKvaDfndnPJ5ORp00I7Q6yawbH24fcc00MqGS0QehtEJoNBrPqIQqZZJ3oO3HQ2tKtbu3105TUKiFzqZ0+lO/sG7d18787WdWT33Xq27dHrRd2n7z7gNbM3zw8nNHx9voKCp+9sqFJikvtgY3diBuHDn3zLkX2q1mHpbVyamatObZc2r/t/7b7/+Xf/E7er7XG/RD7YUWx3eHm4cWLk2HlfeEgCIKB0FI4xtQGGPM9YYQJfh0NsOl9eV6azfgnBhG0UopI3hJpvbhoGL1FgepajV2ApFNSEk1I4RuU/va2W9IWUJE9nvlMb/9jIvp8mL31ld/903dFuS9O6656e4feOWx9XW52B7Px4nJOieOi+ksKVavXLq40F2WzmmgsqkTxweoJYRAqBuIB8DWwzeMWRrIWnuAVZVSmpRI8/6hmysfm5BgZy0EztsZZAYT1VGSiBIVtqtQ1/VoNNSMvU736LH1NqEURarNatGtJ7MEWiII6eJaq5cLmPBI1yG6WFaT3eno+Uvn1w4f4gq362muTOAoqZ43dj7bfElfN7nynztvmd361KUrr7x9KPjBv/nS5+757MNf+pLws5kyTkN/eP7E0d4706s3XfIV6nz57HyqlvulXl1QM2yVNr7p+950Ql/14ENfFdeu5El6wBSCFJnKdy5t9ou2EAJYIqoDroOIQtVQ+MbLTaRmrtnv9TrQbqemD1IcvDAVQnDz6mAyhoiqqqp9eSAeeO/JkyKq0yKV1HLOAwApKUmF/YfWD73hWWtE+ejpp993e3vvjSuXBT8wPnduZfVMrIfjcb17+eL0/HlQiWjhytrhIJrxdDqajkJTDiejKpSOY6oFEjvn8q5s7JyZXfCCQchv0PbMMbJvmn2tk+29i0l6ZLHfIl9qNCQgUYVQphJNt91CKZMwGyR0eHkRsEmLnDzYxishnA379SzJ82CiVoaUmNW1n1UFJYzeu5CZZHmw+vKTJx979LEmoSPtwSyWjZZOFb20SJY6Jx76YH7kvTP9crqZs9Fm69z+1j1feNvda4uzHdPISjSDGOpW/lV0nxVbvaw7mCHC9Jrl2Xayd3EyJ96txezRz97/9l98V/TZda88gSTrukxSMZ0Nq1mzrltXdocHofcEGJAkAgA5ywLSaX2+rpxvqFvEeuT6Rbvf0RigcRbQSylBkAAEiJG9nlT6G4mKMVVIMfoY4/7+/t78BYwYIpSTYXTx6Qv79z1zplIXjk3ecPrOq5aXl5txJNFaaNxK9lPX9m+r7CTO5tK0tZaDldWQmn6h20YywmQ2yYrC2tp6Jzh671VixpMqk1oplRilM8HMEGIIgWsKwUM9k1uEilBQVdeCVUS/0yB5CBwlqcls3libFR00RWaAo8fKJsJUCpo466ZpkRWadQAVJUmhUCBpDQLIFMq0lKVqOn7u6TPz+XyZ0gb9yuqqFK5h2Sjq7tfp2ms9/vLRB85cvvjkU/d9/eR7vnfppjfw8uLCt/zQybe/Z922hjIls3hHraauvufiE6+qLnxnq3fxAuwLrTM+vNxZkcWm33r42b2N44Px+T1tZIwxMKetLgi6Uo4jggs2srfWEcTSOVKyu5AizDLTlsStVu6cZl9Za2dzZ5QU3YIIYoR+v3/AM3vv9dpyEApcIBdYEimlDlSrhfU1FIJZHKQt+oXqKxc3sUm3tu69/9F7H97Z+ro4/N/v+ciXn753s/rh9JW3X3v81GKxIEeb+3bW+Ep7F+tYN0EqtZC3OVHt5XUhhGNwzgXvY2XnNoQQmqaZzWYH0Q5CiChGeXjEt39wuPR0xIJQAQhmTpIkARr5CQXWWdbJuu1Wy4cmFZBpo1GJFomIy/1BrnEy3osIDiuttVAyypgmXSn70afBmSQahCgYxHLXpMl4PB6NRi3dzXuHtISVpVV7s7n8V//78B1f5J98/I5/+is3/6O3webzybWDc1vFpcfvfegj/+vMbOfEIGwmpa72jnN1wx6MxNLnRdbqcovttY6fO3/eN7nx0DmkFlaXl44endlaCHHwxFIzn62ubBSkpMgd+/9r8HXOOeeiAO9B63Q4GRtdEMnZJNbeRybBcLAdly5fPChaaZo+f+7C7uiClDJJkgN3tQMAa+1Sd8U1DXIMIXS66UYD+1lT+PLwK9OzF+Fjs6f/5q8/3Vt/09fP5vP9b01e+J39J4dhpZek7YWlY5gWbjqdTsdegTFmc7Lrynrn0sXSNq6Z50oJlBhF0co4RKUTEylGllIyeMnH6+rj7ewPhL2WwAviIDQriaR1lrVah1Ap9lyHKsSoI3YK19GprG1RijTHiLUvod3JsfFl2gIASjRD5gGYTCpWpMggogipiBjHc3xi58XtzZ5SoR+q/aHE4vGvveP6AGsrCDzqL3xf2O6c/ehXts4+XV586vLDf/HqOzob7VYzG15uwtWCTnbyN504+cxautvfPwY70ZsVgCfQZy0J2gaTfvDf/N67v+VdUE2MkgoBXEgQd5dbW+Od2jsfGgmCvXdMQhGzYFTJxJXzIWg0uiir/Swv2gNKik5ja4qRQ1TMWasb2QtE7/1rrr0hb61IQFAgpKSDOWCGeP7ZC99w14S4vHbU0tJCwi+M0icnu7tXzNXHbl47fCbvdSaV2Xn+ofmzL5y8+n/mS10PHC6fdZapm3mizCTD8bCVp4Z0kugQghCKOTAHFuQJ6tCEWMksoRiFEOxDNvkk0nVyfDTRRkoKIUjAykWNajoeI4BCElpoo7qdotXLrwydTNATWG78vKlnTZKnpfeqLdIQWAjHUqgCYsJRRBHRRh9dFEqTvmZ5fbhqji8s00IvTucc9e7w63fe8XuUbLwQvw5Uth77uy7sbGyc/tKHfjfKq0m88wvnis126813rlyejxzig6A/PrLfkrTOVjOtsja1L8IEolEhD94XmVk5cuiX/p9fnJbzvZ2dsrZCSalTEXhKxs5KAIgBEMn5oAIEjLmmpXbXyEwqklqQzBAxhhomE5DYxHjAZkfxDa0fER+99BIEG4AlYAiBtJAAJCg5dnzdBQYApfRv/fzPV7GP8xWP6aqU2xk/+siF/iB94sqTeZY8sb/2ROyG7J+mbsLt/PJoz1d20esOR4gNYCza3TINw2riQgwCS8sMjbXRl7U2MjioZjMmpnIN6+nIPrK18MOhtaiF9iACKp2YIlEeuegsaaxKbyULaTJSOsSYKlnXddJugxYOgreN0mlC5Ju6yDImJVQiQ0uatkwVsBPQiEiTWT3zzWS6u7q6TAAPfPHL47hk98fp4Tf90c/81FicOv1zf1J//9vSb/rDx4urMLnY655Ovvhf3SEh7388Xn7u7x/Z6qnDpxt/h8LXVcM/aaZi7/Dlpr48QBXWW4Fig32ZNpt7D3ztsZGtWkm2uLjYbrcRkSC85O2A2LRaQimtBBEixSZEAXZWU+1HplCz2QwpFsVh53dOrh8z/VSyzwRhiKV3qVAheGQKnnNSaUhqW86bUisk59yBa/HK7vggzE1rfbh1iMW88VtuPn50NmjB4lWNwLJ9+dEXyrKc27qsDz1x/tlLT24mw6oz6Hvvna+dc7OqzExSlqUbz4yQgn05m2sTRZSopNI6xkgMSqkYIxfnFou9nuKViHOwzBxCOGDJQwjoYzPb2R6OD0LnYozWWgQYLHRAClLUbrdb7bTQCUVunBWUzupKCMEierQhNtE6hUSRhcRutx110tZpUwfKk9u/+Y1tgmJ9Zc6f/OYfeU/rf33bU+eedf/8R7Y+/y/1c38p7/3dsNK74T3fE59/+puSaUyUTBTL6XP96tErNsvSwVDsy/0XOkldzpySUgTXqRsTY3v/1/7b77eKIhAg4sETjOXu3mo/ix4DBGstoAcAhYKIojdZrmSqXPBFUSiZ2bBta723t+8g6qxVuxAlHdiOpJSOo1JqXFWRZii0QClAEQjiiBzx1NVHIPpgg0D5+ve87fQdvTQPlDZnLviL6byWZW9r+/rbT/rhjs7yvXG00692F1UDbnd/l/18XgfmKAgUg6/nCoADKElGEDEBeCGZwQlSrLXQioRCkZ7Z9wH2sfkCxQAxdIs8ldJII6WMCF4aFJQkGYOKBGmSMMgysDaZNhRD06DPO22maPKil2eMJAGQE5KoREKeRGBkcOzLaqo76WPzrWp7vxj0veGxmHvvryreeufyZ/1r/sWi+Ezzql9cfsMDp9/0bn/1N9vZE3/9Px7s1dNPLzVtKIej+aAzOH++eMVi/Nq5+meXZ9emcE2p7tKx0Ug8krXCqgruxCf+5A/OPv2clBKFgOjL+ZQlJbNy1lI2+MgWAAIwADEHL6MDP4xepwlT8GGOEEs3G82fCMKwA1KSogwhVM4yEkn0HDVGF7wQQimFyMRAUpEP5eVzkQMIyePJbPvph156bn9Ur2pTqNZk+4p8aWeMoJeef6k1mFVVNa8Z57e3+ht19Ff1l3eHO5CwbGslSRsoWrkLHoJHECqVITihpIlMJL3Dg59BJOrGrlM2dE1MDiuJzBiC8z5agIASQadJp9deAPaWLQaezuaD5b5qdSWmyJFEspokhJW1roVqmmDHZIIAiRtmBlCJYo5ElAmVAJANwws7Ha9wOG+L5tZTq4eTcPLYZ7dv+i+b9/9aN/mXzRMvXt57v9vZuS97xW0bS4+df/y50flke6xtc/LoodMxe3I4uZ/SJwfiHrlOPE39rpqMXuKzF/X6bnM5ttvC6IRWlk6uB+mDc43j5YpMxZeSJq1QK2F0C1CQiECYghKAJNJ13/Klt5UnBZPJqNvqxGY5kzoEVqXV3RZEoXXCzMH5GH0OcjYr67pqnI0gv2HcRzDD6WMHpcznGp98qpzORNibD6uXH/W3biTNE3YzU8e+651+uzsrPQCMzIlz586gkmVTr2fdKvqiKASpuuKyLA+eLHXO1YGb6GOMESHGKJQ/oBhEsB0T63nMk4mvFvBgdC1yjDGEoFHUEBZaudRBUNJKdZYkRVGMx2OClheeUDmsJrE2KFqZGKOXJAARAIxQKYEV4CGwUIoxCGwyYOa7br3pxBtu3sMpTqqn//Sj493NL//af1+69O8WfumBqn9qe/hXzzwzCvD4A7/x33f/ct/sQpFK0xnceeiq/PDhB5fTbzlWTez05g5tjyd7rdZXovhEGb+9ShYEHQNxOG7Nqxnj/GR7A6e2gRhdGWNMEzmo0nnjiE1kGwMRmgO5FBEpuq3ZUKZKkNJYpEl7XO1neWI5IENDbIe7SD6EEEI4GDpUShVJxuSJyHEgZIiMiDgaqizPvffXfOaTL1b1eu1GDqfOXxjGZ2a+fzrd3NtduvDw2omvakEcmjxn41TQQqws1uevpATS1uxrnSoCdL7WgF5E19RCEChCZA5eAEqQiGgN1az48BH2zpBnZiTZhCiUFAw2RCVob1baJupEMLMH9NZRkgVpvfdMnIlEk8I8ZQD0DjUBNUDsmZQGqEuUyAgoOTonpa4DlqGebu+oiQ333efHldj6y7ZuwdaCOl+16Z7e4umbT3zzY+cXv+0HTO9HXv9Tv3vdj/6rG69LDu/21g4lh242rU7dv56TMpBou2F05SB+2/H2lZbat+XFJH2qMUKo0fxSmZBvIB3NtclCK6NOujrkfkEROERy0bngIEBEQMRMq+0ERtMhC577CUomlXlhbOPPjvaWTdXr9SUCAEgirTUzu1SgjAlJz5GjJRc8Mkik9Y55zcvfcNVjlz6e0P7Mn6vjQBiW6XObrSOHVm54y6tX9fonx7Mjh65PGZIs83U1Yxur0MrSfifxHEdaKiWIG8WeKLIEwcyCoiOIAMgSNTM3dRmjl/9/mt7z286rutte9W773n3vs0/vR9KRjqolWXI3bhibZsCmBUijhRBSSH8SAkme5AkJoSQkAQKhGwzYGPdu2ZYtq/ej0+vu7e5llfeD8/4La6wxxxxz/uZ1AcI5d7yIZnuklJgQGTOEEJSIYEViFDDEGUE6siPWcYMojrFG9YQmYaAnNACQRCyiXDcUgBGVPONHsQQQKAhKIKmqET8MJJGuwJhAANUkYWkm1jbmS2m0oVyaxFdyu/vOMg/0XqU6XSAPVoEXH/mv3sLOcK77R2/9xn/+84Vnvn4Oi6UX5i88/9oPw8hp9ypXoCVrXS2ZzAo00PZ7bJczZTId7swGSduZKXSItvO1nzwoo3BzZV1ioBUzq/VuCmitahhLABCCmKgQQySQBAICz2UQ4FJPfxhZkke+71JiRj0D7vKpgxP5HkVpxpziMKHSWIqmJwHCdqubzFCJEQAsAAj9LzEKC0M1/vEf/+KK53ubUOjUYrwrIwZj33fPvFZ78bEThulm2q3VU+7oSLLluY7jKBxEUUTtUIyUKERvRGMoRBjLN0oiQkgFCtUxkEQQxIAEAHD0v/dzEMJsibpLDRn5gAtA8BspN4wxB8hI0Ahh24sVJFUNqxRSiEgaAEOLAacISikVRQnDGFJNyaViSjGRUJE0EpTSSAghBIUMqTgAEEWhiGylmCkMjQ3UF2Z6tg6yxLlnn3vHbhWYq9L7PpBw6MFHWqRZt4ILf3fpL2/edhOFpI7mu01kBGOZ6PLplyY8nq4FVRazCBNNHdczsw6/UTJdSTcCum1Lj921xuzHDvHXiBLtntmKbLZaLQPOK0UPqnHAYiQkAf+/dguAlKECGOWKg23bQ9TU1ESp2COqbbx8ydAJkoFITU8zP6OQIPQQwS4Ks6gz3qtrYZoAKKFGCCEaFrGqT1VePftcK3Llq6BNVZPFXFNgKKWJIFegDLnVji97LkyAG3bsdO2lrVffBFuu0+kM5jJrzYYVWoP9I5C1KIFxHBNCotDXJYISQCKFEBxHVBJMAQBIwUSliEVxGIbcHcmM5LrJrAFlJAQECoBcAIkxDmOm6MTkZjvwdapzEUcSQiuECBGiJIkKYhlg6gVtHasqQF3EU5HKkSRUxpwBSKkpYl8iAkAkVQUBqeJm910P/qBj4JGbJ8E2Gz0w4Q1V7X99re+vHgA/+/X+3/puf/frT/7FZ3fdnvSVhZ79/fWuGpSdu9K5V+vz+yb2zgvnliB1Ca5l80MvL83PKx1IgJ7EwOkokp6pNlV9JK7Ec7LYf3FJnTYEBkY+568sc1vROE5QwjkXkkAgCMKMRRJQnZrdVnlq6wwTYlDH3QubQ2mTu/axzZVdQ9eUjOySXsAJTbuy+ZPWhRuG1UhoAPBG6EgoJBKCR6hc606wc+3ScM2rxYwJIaIwdsPYRLDEGQt8gpUIRCwOvELO5vLYyjHBz9ZfnXNb5YG0yVfryGeDpYEgDkAhpggTAqEEikooATGPWMzDWAYAMSaYQGHMIY9jKbhkqq5FOMb2PkvONaqrBHEOOUcAU4Kg0DGOGA+lRFJwCYhKAQDQ4ShkBEgPC03RIx8ChKMotGMG9TTWCBYIcgE4RlBigZFEnAFCgeA0gtFapt2e6u0Cq3pH58jpYzf/+9d6jvaov77dbf6Pu+MweOkjp/7fD3ZjL5qwYTbOpOpGQWqW1arPZ7XE6bGB3o3en6dqxNw2VD/dc91tuqKlFaAFrqFCLbYVIIb9St5nU/Hanu0zVxxhK8nypSvMzNWkzwn3wxAhQAFCIkaEG6qmS85AIimifdmSd2Xu4tnX+kum1q4PavK2O96d4jCeKBVziQwGqat639yb0roK5GEGYB1CihUZxqHN0XTf0ssdvFhvSwkxAo6IQcRMiZ3QhQSnsaoK6tW7Ksk3muRiJ6hcyM1fMvXtrjfv333VLoqlSmQ38lVFcSqW7/tCRpBgg2AoiICAe2+0UpwhICWUUjJCpeSxFIwxI3rNYRem15/oSZejKNIw/d8hH1WRShOIapoGsarrOqVaOqHbIpJ+xIEaMYoQySS0hKIZWAcAICaEEARLYECBOYcIvGEqRUwKjDW6+Mp/xCdeLbpd2a9Pqm8Zfd+Pg3NfBmNnSP/V62e/mfAfAmybuK5Ef0sT+3tW28lnn029coxtH9iJGOtCZdfJS6fEufcDvmxtPG+MqWceUzpB0jRaIFIid6BUTEBc1mM5IEh/7/z9/wJeekJZedSuraADyCEKCjEAQMacwBhjLCDYliGWcIq6GDh8y4X60mgQmGucOV1DRE1u1dzuUixyDRdazaC5sHwyluMHdu7YNWEe0hMz/WjVaceFlNirYrg/oSZNxABMQBAxnleVza5rGKYHAiKESMDQhjESJKEQQSdzmRC5Q6S1d3JIufE90fPHdk9Mb/RnpIWACZgmiBLrqiIAFJAavROGohI9oeiGZqgIEhVSIkQMIQw9qkgMSRwyWf28Kr1EzzU1cq2uTQQ8ZkAqhEgWCghwu1LZ3IBIAhZoST0EKJmQHZDUVDUMOEaR06i7ToQpyfb3MJRoRaoCEky4VALMOQ8YgtKMnMsP/9+rrW5Kkpr0rPuKyR/NDb17Un/nb3qPfV7dHMfXfRhMvQfE7YWlU+N+d/HlrwRn64+dcn90Drzn342BR/I/OL82kMmq5vbc2qkC5u28Wr5shSZAfSPJsNMOeDZ2Ww7ZkkwkFUVT5HLsZIEf3fihIEwunXyQonzAmOu1AGdBu5NMZnUCkCpIQA70Fs8sbNy9b3er0mLDA6ixoqT6BCEkaLiKWV8/ExS2wWZLKY1VN45l9d1Ot45pNtagWylH6W7ohiiTJEkE1FhSSBQYYwUUU6mEaiGEAMHcx1Q3sEAwgjFga522gZBlDrg6yF0+tqf/5Wrt3DWtbrHZlX6gGEkEJI8jKJGuUpVwgJGqKDFjwhcQ4kAwJwhjzjiPOZcxExARbdvTAriAHTVJnQNJqapRDWIMFT2QUAKiKAqJua5SKTFDEWcYAhBJgImEkAMWY5UABMJu2+cukj4lUCIFcKQgnE0kjSjx6n9+ZhSxqGhyL8wNT/qno2haQcUDgP+xeDDB3vlAlNu68eJX2OrF8fJj3cd/1HigLu/45Js//46//tVdO7488tDJzj2H3s8ye4NgMdu3vUbUvXtv9SUwhwtbhOlFsRnIVlKOpkUIHZYsXFis+xHvQhy+/MS217/zjmFMepe2qSXI4Vro5HKmTuGwkU679oHpLdu17E079jhqKjczFCZ7eGE8RBdE6/xi5/Lc6skut1POimvZ3cVTeaQ5myehofrduQQL8Ui2WDrgaBi+ude0AEhjmSMB4hSimJtq4LOKCyAGPMBdKCUmaSw5EorKe1RTx1xPRftu+K2rrtW3LXwxffAzzbWxZzcuj167019d5FzGkdANUysNYqphohmJTMLQOKKUUspBLDkOXSg4wERCUmx0ffG5AFRs5mTGn2MQIow54AghLsLmpQuGiqLY57ErIGAE6CQRJRIMCQUZYdT0682IIS9y+ks9LjcdPa8C4gucZRGWorX80voVa3v71Mx0Sh7fYCBuWV14j1M89GfSmRXT3wTWutG+AIs9mDcAN5trn8wPffFS6+xI4oaVgev+aBxUGfpUYnouOXDT6Mi3Z+8vUN2JQlwP9uym1Q3x1q25V4H99HE348SwD1hVVUmQWydHlzatiuqaZX+wB7RdDoY49osXAsVgtmezhNRy7fq+t35ga/Py3P495FhtcmbwhddeGaCbda5HYJsdXNbiTJ40r3R4m+GMEaVV2WkowNAUv+oAhUVFmvVYZsyv+wj58QAIE4CHupFJilxKAQpWGA9iGYe4ioWCUR+KExAoQJiIBjIMFTUKoNt4qvmzB1bDqeVjr+Z7mvkrG7lWEzIQM64rKkQSchb5EQJYitiNQywFj5kf2UwABmUgBAKYoriR0TvBaUWmc3i3QpOZ7jddvR9CHPp25HiJQikWOEY4lJBSSjWNU4VJgCQBIhJuoOoqUiElqmt7CoYUYABVjqRFNQdBmNm967rr0u//WjP0N166pK/UqGO7/4HcU8+YqQ+HlbOpM+8FFHCP+2v6yrG/Wn1QAqMo571X/+otD/SAyWxpDOkn+ObW9RM/v/DoW5VeYflXLMeLgzMVb+pD7+mGjsk6vzG8NVXIXQ9SA4NamQWnZ1dLINiOhZ5Bvh3VqbZRVc7omQJ3TS842D+6YzAzdcc77bHJqLPcOl5bqz3/4qmnvU5lvks2anbHPQ/D1jzYOAuCKgun+oVldy5tNM1C3A3WXWBIXQWkEVsxa8wnTYnMFCIYZnUwijxKQIKoeoAXI45gjBWsIQVDIQGQCqSUglDAWIAgBnrG3rTWJHNcNRML8N1/Hfj1d9uNTcSYhlUpmGBSEmGaJkQUIUylBgEFTFJBIJQQYkwJJlIIgRU1HvyFjHIgWtVq/4gWM6XKg0IAoiVVSlgYhEAgYqST2TcoLQAFUlUlhDGUoceEEEByahIAOSM+koHHIh3jjHAGFDMT88oM0Z74RPF0c2Lb1CkvfGwxeOCC2/P2H4DkRLHxU3DDj0hqUsEjUrky0n0peUfBP3+mt/aL1uLMdA5dbkqVKuV2+9msH9rVp/w6J6gvgtvG8zf1mMf+4zvfuNKVjUxCnE+lZfH6Pm5Fh/Kap7ot1Wg0A+JICpQscyEXw1ZZSacI8xWrdt31v2NFNHv+xUWjZESNzUawulINMa5YVpfwzVrrUi2+dK7pXHHX2u1fzJVPSD5laimqbUmlbGabgCHNUPR0CIy630QpyQtKIuoGZlLXI972Oi3klSRI6Vk74oTHKAIKUBJcJrijSZVFnMYx9AOv3vUt7q40N0O0Nga2/vOfoUQqCUEY2CKMMbejQAIMOHcBhJyyULAQaxxjTQZScihBHEnOJcYkhbNtrRKhdLv+nJ35FWEr9U5PAihO5ElFV1WqJzSk0GbEHB56ITAAlpQSQ0sXU5EbQKpQBeKUEvpAyBiDpgEkLHeav3pi8Hufu+meT5td95e1y7X3bF8ohtdP91+/pRA89MX27OfB4C5g5YFig+Ahz43P/dxQxP6GN6ettRbnzj6uzby1jzcY6eqjNxZHbp3IoNiKJgcHbx62jWbP7pG73zS1L0G++FL67AYwO+3Xlu09Et946E13HphealvmQCbE3rIfVzmfMrJ9BHdzcU9OBQp85JEvZFafgfWTLRKvdZaSKV0tipYX5JNpwuPYDwYK+ZGCKXtyY7n8cCqznWQvtv1THNW6DbsTNC3uso5vr9M48OMOAlQYBTTUZ3AnVHVNwyBC3Evrq47NJWYCGQBwznkukdFoTy7QMIX9xUSqsEI0LsiSF7eCpSyi69dPbgFzihS6qqqqCohKmXQiBpEChRBRDCNPhz5BOJRIhRhJEIrgjasDLuDQwP+YWANSodIFdMdgmgduwww6qqpKRNyYWZ6bSCRUjAgVQMYxIGEAvJArugYYZw4UREFCUigSCEhZpqN9DlzGcePRXk+96c6bp2aCteyArVxe2dw7FlR2fijdf9fyDz8LUBS2iceyhZe+lL/z9/zN8/Uz3r89k439YMK/wnRfDRs9SW/9tfmTV6JZm7dn16rn2shSzx87B4yeM37yyx9Ycft6M5p6E+6OTHsnrjz57Imlnfn2YIQ6VNPTVIeozNxzbfKW5VaAS9mtN05Pb3VktO6ylUan2Wz7DIFWwpGwFrksSoO01oyd8axheW0RWIkghIGtZortCyu+3Rtr1ENeygS5tKnqLSQkGiylRLepIUggopRECMOW0uoiTaqYywyHCaxwVeRZGFJoR1BI5rXageX2ZUevrNYByS2sZU+At7cal2yXTaS5yVieaikzExNuFtKqQkLugyhGBHPOQx4SRCUAEAAuAYIKxogS0onoRuEXRlqKOGXVv6pt3Ie9+QR8LWx/ycAgRRYTMiaxo/rAUJHFeCyDUHKMsUqRihCHVLhCCM8RbsSCgIVVwAdv+Yzx+T/M7OjFRqtS3PaVP/nOKRKFNMd65VDjpWj5yOgEixsPh6C+9twL3Upf9dz9vEFW/v7ftCsX24hc9NnRK1zTtMvV2jMoURg1eqWaCj3fam8CuWt8y+OvLE33BX93vidRqwwXw0SBX94UedFXJqDpmaI41Ef4ne+8xXApVaHIg9OkgAz52oX7N+dXPEmaQDVj5Dhoo2Of8OsKCBpr3b3X3nbzXZ/qHbsB7b51oDiimjkjnUxmDB7USQo0Ep6mGe1mGEMCTDRvwU4YIMMOk0oCYK6YhppIEmF0KAv9QCChEeiFHmDU5Foc+HnT1BWpqorak03mM4iaqKevUrdaHa954vntGV6tnLmy9kpBlCGKMmGYT0Kv6bWttooggj4hhDCOABVCSBEBApOaIREjAgDBMVHSZEWpsIAmBWdC0Qj5IEXTRuq9JOX2J80R7YuxzqyM0ay8ktARDKWE0GXQjpIUcSbiKqqpyYSVSHVcmJxf6QtfCxf/5MKff754cvHkDx/fGTQ+eSj7mT9/T8+h4ZNPunhoSDn4YbDlc0DmUhfPpsG5zUNL3Zu3LFx54UpeZSntWBBAaeayQztKvYT33dBHKY+KvQqECRxQo0vPvL4iqd2Pi79lesn9Q/kiODMfDJWMPTdgM/ZUAR85/tpKb779s9f6r79Gb1kmajaDcLDPM6uYFtLdQLRdd7Zsr0ZinwnHWuo7fvevb/rgp0NVb3eao+PTBtZYx5I8choYcV8amOdHkhrxXFvkzdmqu1Z3RIAsFqFG5BIl5pyzMK406pYVhOuxmc4AiUToDmhKCKNMOn4jKuFKFkQhYOHc0gXv8iuQCUdTkAQr0fz9mfdsCRNTHWcAgrS/HkTdMD04QGHS0L1OGyHitOoAgDf4JwGDgKM3st5Miv/1MBDdOvS0n7yjHfpY+I51kHUfS9a/nVz5p/DKd+qbmdzZB1Jh64DiwaUHM+k04VJJm9xMtyEMdRGahxNPfTq3ZXhcZbhk6n/0+Z1feqXv8PWp8Qlr07p09PKLtuU1BzeeO71lGq6uXvL+e78VhdyqgtTuAjNOfK3t/3IJcQOiaLMVfGoyyd9kWTV+zl/L9jR2lbYerccNT8aI9+e0WEGor9BosdVs9z9dZ1sPDCRIqNkzQfpRq7BHoa5GP/nuO6Ll6vEew184VR8fh5bMprorFx1vKHl5fT2dL12phiFnEQpXFPqb//VvnY26TkkqmSW5DAOhy6Mq9Gtd1yV8PchoMjMRryAmBkt63HWiKK56McMygSgiAEiBoyj2I08IpR3DrgK8iBOKUpACAIp9WsRZGPmRH0GfYYiiajebynt6EkvBo1QNqkz0kqd/WSte9frBD9ndbkS6KnNTV060VIhiWxnLwphTjDkCb2x0BUJSRG+czUVxDBAUGAoIgN+l+T82p/4p5iM5XKKEBRQAMuXApGHKRD5Irf9k/tSl+is/6ijtEarARjd75m/6edZe29jhtbpto/9Prk+u/2XPl/5BArC0a7yGLHdWSs+sclN08YtPPbL/Le9KL2Qy93/NJFlermg7psLjXz7Xmu2lkbk29+Tjvu6rhSmysNftPC3axpJXV4wk+qm1ThWudblgsQ9Bs2sfb6yHAQhOOu/ekmKIFfvQaK19j1nKVTfe8Sd/UNWABPjW8S16p6qPjA/WW8OIhCHuMKPpY5MkXi2vpgpJtadvuJAOI7Z4YVFgCgmCQOgxYWG0+5qDWsg0orpQOkFUcURZDG7fc1MQxKWU3pNIUY326ynBFfi5HYimqN+KN+qCF+jZChdI6QFcjSBUAMYYU5hICQghJBxoWqvKBXF7e/qg7+b7ShFXB3OKa1dyml7IKjMFIy07g6O9bUTUvm3LtFfVMwo2G6ooZAcjoWJMVaoAGSqII0ChFBwQDAlQkwAAiIQUSACpqkpc/qofVFJ4xItqaVizGsuJTn2xnszk0lE3oMCHU79VpDON2d+tNa2xuFBJxo3L3YkJeO6YTOSSxaol7rnh0X95Kp9MO25bTfQ5QRUnjLe+947eJ36p/sPP3ebvJeA7K89+S8isaoU/esrv6Xc6yfHx+9St3szn/uwHVNHm6t57RhILQnlUd/ZtZDeS3ZhFRRdqGRxjnPCoKwNtJB7YqR8S78Yb35u89Tf5hBk/Mf/60iPL5cTd73nz4rd+9iMLD2SBS3lG6YE685QwsaFFmK252NAlgnpWxYfv+YjwQwxRQtFjP4qi4LXnnwJ+xY3kXLdjqAZnjHAUKXGyDvVCEDOpp7IWwEW7gbgUQshUTjMM0HX1jGH0Ekg5SBFsJDDjUABfMA4BphDLmDEEKNGR09UUVeflQi5sxdUwDhSN+k4c++nlluE0GiQK1o6+OqwEeSTNIhqLURiGGGOOoQQxFz5nGAAgENA07Y1N4RsB5zfiBWHgdfS/0PP7XBhIoXXCXhaaQWZffuRAfmA4N9Ln8Wa89B/s4H63axhSXwnDANCxm4c6F82J7aWCnnwcRIv3v7zUin1fcl5capUzhqlTPKJl1XdfL0uplfYw67+5949eTr/tvsxt8vB+vvf339alF8MLSz//418cnlCpAL93eIL1uekc+NtxSsdrO6iY0lKGbhpYiYTOYbBjd6lveGsT+Jcf/V7P1E351Wp44sqL1IOH3991g2/9x8+Su41+ydsd0YPNJmuzwFOYWw6aF11dgtixAwMLRYMhATSXwhi3QpdSCiF814d+u972mr4/kstQSgWCGGMz2xMVKNW1RDrlxy7znAseQIqhRzZiKrZC0HRYgkFLKAQoqZIJGIW9ZDqhk5wZUagCJNwYcOiFaGCbAVXPaRPSqt8OQkUpREGMKTmxuXZqY80auApkhrZ++Ev2keOtpdfs2XkRdApcCuFBHvk8kgJiGHMeQkEYi6WEb2yAOUAQIwghkyCl1hvqFCq+T8mXIrGp63kZuOkcsC03VIqZ8dt56R7/wet4VkWTE1pv0q/LtQfnsqZ5uVlRfrXwwY/94XCkThVzQEobdQfymS39vSubrX/+l/987BNPeau29cgznmEy+/LyZmPxGeWqP/79i6fsz37+z4eeY5eFc6wOeIqiut8MCtsN6/Rr3ps1YCaI74dtTV1ixI/8loxPrqw/cnoWHqFXbQePP/O8etP48O998q4tu8D65bG33Wiq9KkTVGQzNkSbMNJVFHLZ6qTaWFWCmqIoqqJAqkdSSWBVxBwByIOIGwpJwh9//2+SmVRBKJqWkSEnEgOMcbutYOQ6KHRdAlGSolxaR5jDdAm1a0pHLSIgq2GY8UI1llkEUSI6TBjsjSckTEMkAiYQCDlzbXdprfvtsy7L6lMp8WK3079lvC1wAEXSTI+NjD/04GPSWTvznc+gUVfjYYpFagJxZCt+JFgooCYkE1JCiAMZMRYhEAMoAeQYIyZYHIVScia4Fvbbdmzpb6OpAxtp7iLcrq2nszMmTsGxPx3Yd2u+sNeXHbn2ql31oseXzaNxaXwkWBh+IqctffU75yPWkqRtBW/ZOj1RKFV8sKcAxpTcnR+fEoOvDhV2wc6GCNM76PbizpXN4Ka3v2/q/HcfeLCCrYJ+3vNbKlrirHSysRMajX7l5VXAbJ+wSOd1nRsxyCnYGAqV6SgZK/GGRycHqPr4Cfb4o8rJC7f23zC/SV9djLfdthWudXIG7fc0dzOhYpmhcY85aCZLAkFMCMBEC5o+CyGQxlBPspiVRDIErtp7LwLgEndajabPYwIkwNCVClQMQRRsZA1VRRAmFYoYAsTVT26GLd+LMDOxUQACFQOcRNcWkooKw3LMQ0sLQkaI4JhR1N+b15A5PaZt2znZ7A12DOVz0ExnzYyh+GGHmca2bdM/Oe08eWJ9/fmL5NkXrVce8xsbod/Nhw2VgSTiOsgwxiCEOiSMSc4AFgDEUsQs4TeU5gVV1THGKEaEEMI6Ff0QGv6K7bkdz17c+jdWcpu/9qtjc2fPNLNsrrDyCkx0g63/8uverblOba7uxCOhc2LBWu8iDvyO7kFD2274O2d6s/npm6+fDLVu8sxq33UzyTwONo60z377v78zCM9+/A/v+cpXv2Gd0FWv7U+qxijWX6rVZu4y7bve+jZ98p9/9+33DowkIGxDRctDAytSqvlBHgJyZl192cJnNvP7Xns5/l7bXukkwq8NppRdn9rhHz9WJ8ACoKuEWrLtBXrM0kMDCxRzHggpJQZC1XSEEFKoL3wVIIAgb/unLp0VQTQsdKzqKUUPufQDl0tPBFFbMubzFcvSCMI8RhwEl8qqzpmMgctRr+hGRVwqZlQIbe6wIDYVoKpU8EAIAXiYYDFqNh0yMJ0aypfAYL63HQ+dWr4wSILBLK11HXuzWfUj3IkSpfairzdSQEg7bF7q2Qoj3DJFK2qUZbKBEGJMBJFPCJSAIcygpuv1EwYTmdJYxqkKUJFcIoQY03IkG1trYvdfOnt+UHx4q/X608UCGFtv1BY2khDc+jdfYHfftvHYbHwi+dzL5e2wWUnlq1HoS1kw0yOJxMzd+x2Ajq3N3fiZ3/jkt4+dMsJW/mZ01Q67tZo6vLO7Y2hMaX3pP2r5yBgvBqRaW03r6VRiyanvhIX0YMiPvTD+4Rn45pur51fUYTIiIr/VjUPaEcYLlxUWtyeL0A9Y06kcGdW8A2Livz957ltsQm7A052NYEuhN5njFCl6gqo89iHyTl5WY8FDzjhjAAeZ5LhIalBIaYUooTHbSyVzM4feHCApNBG6rkqpgbDESHLFI9Kt2RKjDMlpkPsiRgs1Y8m3Y4ERZ5MipojGoe81Wizs0CAwjWQhq2JKIg9IyUv95kAx2Te+p89jC/5m5bWXOq97qyA3VUpRGKw2+M5De2BK9eutTDYB+da3/+ZvgSm1S80Cd+fOzrXOvszDFc2vBGU/YhFAkioaZwxCWRO9Gfv+0MwxJW8LIyZ2ucFCnQiJBVYiibbqWWV9lT7xYXHgN/2yYHrJWF2/7Td+Pa/v+vFXvjpzTLbOHoWTKlAKJwjcCCOsUgWw9dgt3rx13W8xA7/79/7Yunzq+/9w18F2An/z98H540oe2c8+2Hjk1QjQqW5jp5fewpTMwb2f3hUKAPSIN4a75sKg4wtT2fHk1767c1+C2vnrQrBlx45UqgWBpmnpUOiuLQBX7tpV+vMrvdseP/7UZ37/ptVHx9XSJ2ZiEFw5lDWasW02jXfnE2kj60quCmy1mqNqOhSo1fS7/goMQoCBxEgAjgASER8sIgMhIWFAIz/yYyilhBGPuB8YKUqBNAhpxEQHCFVaThjxCICUAdIKnBiNBg0lnwAJXQIAGPE5ikHTUbIojKNux11vx+2Y9pQmJzLpmGb5RHIgvRAHsZfWk+nIqsx3Ok2qqT4jLLT/+7u/qG1sA12vWYv8Vy6NZMcbiy8bhpqEAAMY//+cUsnD0frnfacJQJVGq3HIMB6IztwfhaGuqNxzhGTnV69sQSt9b/0ncYL1vPNe/MIpOV5Y+d63TqwfA+vyr19/ojC88xjYvLKxEcBCxpJFaUBNKXSDt11zx8gDz4tqZ/2Ln+++Yz9KDr1U35TL3KLcuv87lf861p1NzmxxPnzbrlXI3vm5m34tdWr3hcm0ytaaoHctfrIRgKicK59ZX9qw/uwLk/Hm1F0j7003uYwhiFyuqTLd5sCL+ENn6uxK9bv+4tUrmfN/8E/+q0+cqnhMu+aiHRKLZpnzp5cCsWnFlpJM4v4Box2u6VJoBlZ0YNu2izigOOTMRtyiAho5EGNN0xJaBgAAVCrC2KRqUtUzVI+hxBgiP8SSIQdiyIThphQYz4wUlqogn1NKFGlOHCcIiz3uY5oxhtIpnRLEZU9mcDq18cul55GZWo3t3bqIUUZJOqy9PL/WTGv+zjQkPM5ocGTHVojQ2dXXXq43HBHg+pn2409lnJDP/yr0OzrzNEIRlEKGKtJAjJk7m462ue5yPpG0L389n62lTDW0q1mFp9ud4cx0OZLqqRf1wTx/5AfOYLY911hR1h1i3jSqX711cMnsoyt8IJs2cNQwOO9PalTbNp755YPf6wzZu67a9vTpxkgsOtu0icO3iZt7lNnNVLXVqq4F2cWyHflr/JqCevwIGP27b13YlQur2OxRzmXSZ2uNXYX0sdnWyJtvIpXq2EHQe829fHJsQBdYqoRBHyZgqASaomezzhToyRcF59Hp2qPgjv03f+Bd7149sdoRafaCCFTbJblwM3ZjxjpuOLS1tEj8aLPuBhoJmGWA0Av9mCVUVVJ0ZX3FlxGIImF1NciB55qGBhFww4CrisZhIARPmE1OkSHpGEGgt5VWaeR2cmkqUMyJ6JnI5+yYl4pSSt/3N1qdRJE83dHs9tpRR12rBb0565777gqUTKrVIkLr0VJT/ZQwlhuCWOfdTrBabydggL2iDVNPn2mEyan1wag7izc307L6SMwjr7qmKATaXVNdC2INozHuLSIRdS/9U1qL+4e2tNdfpYh2554Cj37VfvZvSor0KrOpeT87ujs1v7CxVB3d8Sa3svbIxWX63Ir76lHdTI7dN2O1lww1fSnuBr6dP7j/7qFU5pp3/PzRF6dvO7D6d/+toInq+ace/Wl37eilJ17uLKnZ1y9TM1m6/8hi/U4jqrXZ/IW7PvCHhe2eQiHkUTeFFloJp/n83pOXowuPFpQZZX117uzTMChg4nPEpBRI67UctLDZ3NI//N91kE+6Hlq/Zu/Z+stnm8fA1bcPjpeyg4qCKbhk4SzBfiwgRiur3RtvjEe2GFPQ74YRhQhQ+UYeWo9BdiA3lE4Zil4qZKkAlKpuGEgWJnRdQTCGUFVMKSWhKkpBuIj9HIB6SgUwxpCNRWr/UE87cK3icETFSof5LZHIKtQbuGV4Kj8w1eOq/aXcJ//hnlfOzK00l+KE6LqOhYaYH+cG+5yAY6wOlsKBwRJxIC+QEaqpeuLSYrfjj3VHSrlSqAoar/xQQaK8OMui2bjyYrcxCzzuKZd1TaRHhoL1DZW3M/mDznOf5KdejUcijdNwrja/3r289OyVtYunYKcWntt45NjU0OBM7zTZ2ld3nTvedxD9fLZ0eLxOUZIlf+tfb5t5UzKeWwdHTrx5+3R5fTNXGEjUVo+sAzOXWtvoTeZsvbyWTaT1EW/PWw8Wcwf3/vM7Q9x96vlP35hLbs+p+XSxZIf/aclfdEF4ehk1FefaA3Prj79rV+9i0VkTbhjSSGLAgU5UN6Qvz9XK7XD6XPvLR7vg6fBKrUDanfeUTORzizI9TfSkShUUC0G5gUA4bozcaCQ3msrIZF+O69UEN5Jah1sWFk69awMoEHSdEKoEAJA1DMahazsbnToxAGC2BCqQKvJgvBtoOpQ5ibFGcljr25KI6lbGgZvl8hQNenMknaQgxBfJ6g/OnJ1rtE7XGjrIvvpAQxE0648wX5iKljCImci4ta4q46RitaxIXl5r90CeUCmlWgxiIApic27+VbfVWj5dxR2EWz/r66FJkqbc7BucMkwJNjedcDX0qizogrnOyf95rxC96eGMyvOyJ7pUfUlJrm3bNlRena9fIrnU8MbipmV7fNAc3juw+4ad3kDptY1W/+u1fNy9iVt2s5v+3rOnx0X97tvrOZlLaxCugfMv9QBz8q243lo4dNPeE2mwhwRzp82pnb1jV43pX3tGe7lTpumXYHctcjbacT2f0R03v4nZeGIdNHqm5dQ9O+ayExThq6gsyEUKGIRQYg0aWc+NCMd6Il1VwDOefb72cN4c6Twz15NTJ7eCveMp4oZeGMQRTOicQmTUN+0t2nBW5w+/GDfKUw2w6jsGNBFWk5oBKHAjVyImOKYc+FEICDZNc6BUUmECAMC4DWCIUqbqqzKUfNSITdPIZ3HLs2BM5VBioifuyDiWqt2Tqnf8JZAd7O/NiaAbBwSKubWLUOtNhE2JWCxjAWS6vwcSIwgQ51F9I0hpxLRgtuxAonHPJX64uByrxsjRU9Wkonrrob3Jlk/+C0EbjHfE6kXQFonWiqk4rR897NU7s5uVLI+pw167vNhaWA2Rqikj0Wq0aILhLTv1VLACo/03XtuXLxz4yMczudKbfuuelNO4c2uqT8XvuzPZOgCLRzfA227Yv+890fmXn/SQ0/Ho7j53rTpg9I8fmnn9BNC3Df7pXeCqlLNTKX/z8fsXTz7i/sPvVrJtu1p5+VRsuSgQrL5ieYngGl0xjc3p11d++tnvjDR29syvpTfFeuSITEqiNgCB47CYq0AYgQzdTlcnhoRCDZVUpe7f/ZbOYm2gGtB0gEBsqrqiIBCyEPLjZ/BPHu++snmZuse3n2gJ3d2STC8VIADCp7xV2xQcAkglFJHCTSNNEGKMU8GEjDBRNEIhxEhnLA0oJwynDAodgCNoxDmTbCxWXa561YiFbqvSfH1oii3FfRJdDE2WLhKJ9pVmVk6etQd6IxERlICR6zOh9eXT2byWSSeTyY7lmH7gmopVa3CcSOpql4dRt5Pbkem/ypB/8DVXQztB6LJiq9ZBWhaApVnq1dkkWqpk05oCUupEf61t7TLNlsaCiys2FLI3MXtRdkUFj0/deODABpJDt0xSBhIpcux/fmpeuMgGk0Ehri51rrvnzuXXL6yv2dX7H3FA70TJdDrlf/tesHJpY7bTWrt8ds87R5968slnz4IHGHj4qHn7m3an9KT6je+VmubBrdffcFCtdpmRCCencNVNPtcbZ0eGVKj+7q13PcgvWFPs6hl/pqDHFscRVjAxVA+zWEKAiT6uqhR7IaQqmngmabPQ3P/+t9LUwYLlp3WkK4aqIcfmWVXtTygkTE8fLvZO6fGe4wPPr2wYUcr3XcE3Yt93QkwJkCgAMYkx5zHlgjK3WWnGPG57jmAy5AzFQIRJ9I7xoXq5xh01h0VlLqq7LoSAUqzqRBsZP2qr6XK5v1TIx2oYe3sTHuLyxRcv7yntp76WIKTXjAIssR/ruu4DFbow0DpRUmloJNmy9aSZZHbEIJIG9NthlZ062kk+8vlOlbaKtyp+NZ9ILS5e6PgWrXvJM2vKb384AEmUQOOukj6wxfZhITHc7O1hhT2xdghlBdn+h+MmkYXpXddsV7L5YPbJhSeWBvoKGzfdnsCZdp3NvP9TfV31yp6MMLZLVbt0oTlkDPCciudPJJKFvU5jIjV267v75k+ER1+bDrA6FztmdmTg31/473/61sWnnvrxNx8Wy0FBV50AH6/n43pzvSy//OhGIqOrPe1+b7NzhidshzqOpgUq4YwFTKYgTqoKhkR3kREF6aciecKe3Wz5tx9/ZaepppQdcSIjmHDsbugCh0AYwYrNd/auDvb1XhKsdsqp9Bzf8fPlHh9aDadUj1KZApAEAKAL5EYBDOIYgwirakplvqSUYqJQKRGm0BfeertcLFEvcjmkFgWNHMH5jMznzH7S6KTWm9HxukbdynOdsuToUpNSLCBJPPT0K92gjTtw3YqlCziPiZI1UTJlirSet7uOr8nthwlJ6xwoSEUekCJWUN1tbLaWTjn7RmpYQzhysaKlRu/NjO7Q+/fZ3StdJ56fjZcvlgOnUJ+FjYkDDVbkdjEuWwXT358iu3Z00IjejbFS2MGq7Vhq+d1TRj5X+58fi1a3pzd/8j+/6oQXbx69w7965dXNzomjL/3wB7/4/nxoQHRhrv44BkQT3thn1ADs0y/9tkbedgDMhwsXvvHJO8jAL1rpK6PglY2BmGWgCIhtJYxUNpfUk6KmddzHW8rXF2fauKQXVimyfS78Lg+hEIIgEDEax1KEvI6drcAf4YoWKH98ZmV2RQ0ufTvdcLVtuaG8jiHARAZeEAO3W8evPHR64VV70Ws1T2zmhn42/nw5R/A8QNlU1gsDDjiTqJjJOZxpiOiYCg4VjZokAeIAEYrSSbU/HXMMOvPx0FXjak43TXNuM4LznV2TufKlPaEi7FjmFOVcYGb0FIQwxMhTlLrlDw1Ar5gN024a0tKAgZHuddthGrl51fKQTBr9G26sDjudNt5Wgprsv248DXUQy2wy1Yk3TtV1nyeZ7TfnaxG9sFlb6mwGMoubqx2OhF4o2XuuwgzLjstsJ5lTlKSeNdutrTuRkxlG/QpqqbJEaWyqfufy8bVqZffEVeWV1cFfuzGt9Zz9xcLKKyfM12jfaGmoD3QMbTc3z/hR6MOWr4N62X7kPmmA4xT//Ly67wPvBA/N/+ITP/qvzGACWbvXR7hfVxCMZI+OQifkSxvxOTb4V2eyG+sLK+MgPtRXp+rBlBjWdWxkpBpFIqAiJDBCCElNydDkuk9cV38eRIkB80fP/SJ71X3JKKF0/LBjIwCgNOqB0uWgawAvr3khaFtua/vwRjv3Suf75ScuGq+csQLMGCOQYCSCKFQ17EnWBTwR05gBz3cSRGcsQj2ldEpA1mIeAIbG1izXhkbfqIm2kV/87MqCj7/1/FkPAMuNbLsdCZRCfDqvZIlrt6z1tkN5puCBWNq80x3YPpVJGYTHQRcJKIptj23Lb7y+MTWp5jqt3mTTLS829hYCHbdkEGfp2P4bVai161U1AdorqyE9oGu9AhWSfkhzODIzS8fL2Z196a4LM3BDwUNToFXaTwU68dzJ9eW1QmvVufiNRKoAYmd0S/+u7dO1lfVtu/fgs0vV2bVrto49NRt//V9/NNuiG6iXOSiSfByLk2Z4lYzW1i/354s33pxWHT6Rzj33Z8f/+PkQppWb2VyCGnNsxeXC55xHXa5lYqzkMsVmp1zMyx8IxV9J/+0PTtwcyY9PgC2DPIahFAQh5AIWI0VKKQX2SXKPyJ41o31hvtJ26tArzd6fuGrm+nLIOe9LopAHUkIQqN2AdIK4mIOVLtqlD0Cmiw7bOnE8tGWtGyFDFTJijEkQUyhUiBUWc4gg4oqi1KOQAwWlvXVGNTWhDA7p8xdXTTA6UghGs9a5hUlLHxoYy3zw6pvSRgaqKicCERxLpLfqq97KZ/7spj/5wLvh4gJkGcXjFgvDdicM4265rYUBYaHYObRnXNs5kyjkUD7D86mekUw8s7aeSUaqoQ/kPepiNWroZgITWx8ral5kg9UFHvoi1gtMBSmlObtyYanFIl3vyVSWNtYrsex22/Foeqk0WMgPQlPLNhYurp09qUbOKz95WTFLs6nVL//VqaHb9vGN8v4b0pNbZp51ZdB03KbnS3khgn94M7r33uuGSon6xHVPXO5+Zs/1+yZqvro2nQPThd61hDa32FBJT06FvpRYSdC4A6WxUVv3Aj1KBz1QezVUPzCZ/f1zm3/HwbdfESSOOBEJgDFSgOSMBQAAyMQVA6UC8lzcfd0FfSHAb3lneOQI+Y33kv4U3wxNwJgK21YYRCHzQB2KbRny0JNHX55datPcQHJLyjyu47qIWdX3KU7qiOIY8IhzgTwYp4xMHEYSyZgzxKI0d32gMIr9A8WeCG3YUXS0vu9YbeHR1bV/fe65n106DggBMk7RXBRFyWR6dJQe6rum5bAHHn4k71p4SI+AQJi17bZkcbonb3dCQ2Kv2lna6CRyKd1QQkPJZVWNGjFqx4HWXV4AffeRRNK2u5JkOm3D9IZarYusfzBNxzE07DWJ+w2mqLjDspmUF3VGtu3tI3ludTRNE25A6yuQjdueX8hp5Xjw5eObrHz54qXT17ztbX95S2F57rIsr19qEs3u/p+BRYZyMpX34iCTSL64Md3Yd3X4aNco7v3y/WNfuHTiLy/md+f1bbr61OyZV8vMGM117Ma+VJQuAAm4jClCyo7RLdJE3QYqD6BV2fzxunjHaGr8Qv59V0OMDBHgCCqS+UJEUuKIhRwBIDEjuiE0OwOaBD784mtftYj8lx9ep/aaval8wsRSokySQGnEZL0u/FQRpvX1clAWwaNLx3v71F1b9iq6lyeJAIowDIWCJQYx5CCKmnYXAiE5kkgiP+l0ukAIWErijlufENR2UeviwiU7BggCqCKiKYryhiADQhgzcU3PREXqv/reqV37evOUutxDUu+0pZZPmzQHY392rsNtsHVHMhk5LZnRew/0TgyFWrbthGnVLG4xZ+66cceYWV9eYnzL0uXVtprM9/caMQDtTnvOWtkUGuBxpZXt6U0nU1oAU0aWsEtJWRt13eFz9ydcdqmZE3hBM4jbdFMJpiElModxsvf0X30HfSyXa7JTkztqumLn7cEtb17kuOqFCRe8f0i87Z3Xz77wLygB4vDyv04bH7u39P63r2UC374t9wd/8H/mCVU0KAqiMYps4GcRd2QIhbqw2BaMCyW7WDf6Za+R7EbAuhA0pcEMaVPSZYxBxP6XfoR1IWIppRRIocmxEMI4PdLo/lqK0UN3eG8aDWVbGNo6Ex4FmVRu0Q41hCuLtYyOKU2nQnMlVF4oV2dfenHrVIH7UQQkQ4qGKVewCQjGVFEIUmDIGWcIkQXePwF27Jp6NuAooXXjTn86Tqr5meIAghhIhCRgfhcjqRIKmUiR+Juvz2vaejqP+0f215MOdGkM3SxD0Xqr4dVsx1LyptUr9FZ7YMvMxGABxt2IB35jfSRR3EyB5Qq31pe8epvDTiiWCuOjKCQLK+tdpAkvT0pmf48i85PMsrTeNJMdn/nYWoM4FUhiZN1oqj99IzaUBrAtp1avVaruInPTwC6Qobfk+m7oI3tn1OtycyDSyq++uNp58adHUbg5oGE6kF1LpM8/991x5ZOXfDB2/rnwwOJ/fqWqXoJ9A+SW0S3Xf/ALH53wb7pmdDuj5+dRN7BFppNV0jwmPoeWHbm+wyK/a7YjOv7sBqho4HydtilAAgjBYkEJ0hHAhBCIpISISx5CAnBvN+IvU5URcOrUEzfUzD5K47g9nIppzLp20GOAGMqlMIR9pa7oBrydbvKcrfrTuDlbThWBImJAokhyFMuGF0gFhjGzQykVCZBEZEAriIGVzWb/Okil8wODpcMFgkyjy5hAKoRIAgS1ZMwk51wxEmXLSpV6khYGyKtcuBTODQAYSgihLjgVtWqz1ew6rSh2mJgYwcU+pGmKmszS/PSB6xCJw24qwTcG+0frEacSBh1KDa3S6TpVi6gl7FPW6EiYcnzFF6hRjmTadKE5MGh6CsUy2XJVUzHa87Vkb27TtUAPkj1ZtVjoKnDrLde5F9bXxw9dORsWWkpqm2s3B38to/6gGSepGesatWPb3+jdv63k/ngsM/XiMZCdfNOffHTa/swf+NfdfMtv/+H9376z981vbn/7xKGZ2JyZ3gbMUKi0kOIkhsgMeLbtQMmRxdSlZjOGykw6MaMXmatmgOczD0KMACOKjKJIcCglhwAIwUIMI6gsVMJn14FH9ZcfXduxb6h/fOxcZ6Y3hSocKVyPsNabKVxarBhJrRorApOGEHmpGRmT5Un/oN5kMJPOUSRNFUcSAyAAkpzDGAh09eEdXbCxI+7cft+MCLttYbc7qcBvEgGikL+hCmKMUUoxxroapVPJGKeM4cTw4IAL7fZwTWQFFIob+IzLAET1ijqQ77lmglSee7EAMdRTYehXKpWNxQuo0JPFjkyYMqvHHjcTmqRxbaNuJhIu59hvpYvFUv8YVFUZSCwBbV/SfZpQnK7dSaJGFC6wsAaAJ52saM52atujRauVgKtGtzQ2M3Xuu9P7r5s4dzzivQtQFpZuPJwefqoGQD4Z6D5S+DJylD07frRy0p68R9/V/8RL5Vb36UJvX/2hH2w0nlP++c/R8RORe0mdAacXld1nQl83Q493GjTkQgDHQEnCbRDarUYnS4cBii420WrQ/eQgCnSQRSpVFCz/98X+168EAaEQAACwIRE11KI0sg/UXz/s3X4I2+/pre9CbmA5RjYNhLW5UVMlrnJuhRELY+nBWst3LJ7hEHeb7RqJPQtpClEVQBEDhEkMAUJQQUceOZHSNVZE9uoCCmJfiE3qqLkUElJRKIRASqkhnIQIyBgEDIS81a7ay0HUyQ9PTTOZcerAjQI9nQxckTLpFYWKXduUkempm+5lSQ24zcDyduzaFwnK614Nm0ZoNjc7ZkbdmFu12x3kVZgTE6nIOFtrlB23JUMXtCsuVoCeCQBUktlChpBaPXSCZIZW1rqrxvDi0qV0pmx1uKhQDPL7tpDHwvdp2Z3hnZ/oPf8aiZWLL/yooayGEUd2DCJS5eKt+28MNpvvBgfxtdfMPvrC1SlgbeY+8/e/KgGNv/eTx977wegXtVE6minOXPT01qTVKocc8EQU96dbCCgCgQgOEUNL5Xt9Wc4VJ3cOJd+cMs+pvqWgZIYHvusBEIYxIvgNqgCUIGJxFgMCO6FQ5pl8bWnzlpLOx1/flxuKLN4cmMonE5c3u6xpRPnUer2dIAhpYF5yEIlQ4jZAduSTmNwxGq9UoYhi2+qmiSI5YOyN78LRyHYzn8v2F3qUUAStoBQD3wr0tSZSVAk4hFBC4HPLlwJLGgPVdm0KjS6lL732i/OLm0OL7UxbqiTGsZ8k/NG1eLSH62sXVbcDImdjbtlyIwCE47kGpxFBY4PDMWAFwwgalWw+p2BRaete6AEyFMQEeQET3O2s2nHcpwHh+EXUwWp3ZbbrVizWTSt1JWpnkXMBRf3VjjWfo+q2ie0RaywVd922DfSnCkuPZlR0mnbtUv/ZeqtBhhosRul0v0Geunzl3GrrxOLi5s++mfunP5namT1/orxZSMqOq3zpZ1a7M/zbfQ//20OkvnFgXF28XIYkpbKC1IEhVYQpxhgRyoUKQ7ey1vDF/OlTm01oOUv5rbbYMXRQVzgUhBAFAAkxEEBKCKMoaAuOoKJKK4Y4TmTqUF378cIDCjX3D5YX5tStvREPHE14bcvU6LrDSBwZANQAJAB6blB3wpoWEQkH+1qxa4/0D6gKIZxHkmGMY4kQkIrPvM3ymi/CmYPbbc+XLueZZIqAN8DLGPAkom94SQXjOKXlYtvtdg4evn1y/OqNEUWCkGBVhvHC5tJYvn/AyIxv3+31T2cyGdULqBP3b58xErlQgQ4G3lplFQ/YfalcUteZUEIX4iAMfUpYzEqSqqoGfFIkknm8hiCJE/1Ru76ZUXRFj7iY87vqkKt5hI6qmNKikRuorve+5XfF3ZMpurqxXZ597iXrxPFtc27owXIg25WOpuj1ls2tcL1VVnj00iX/LNs8tnT8K692qnVcVIfLKBV1N8VLryycK1+i6ASm63aBQh3LWFHchqxa3fQbtVHIOPBTXuiCAC514ZuvHUS+9747tv7r730Kv/ZEPgFC6SGoQggFB2/08BhjlcROzIr9RgxjhpVLmJ1jxpb/fOmO3oJi60uXFnbkcUKnVgt0I04YDKFmalT3ZYQkNhJ6l4U+iAzZCtheIDCXzPYUBVOO/RiYGkW6TmGzqwtcmhhbbS0XDTBSAp1IxUBBkMYxE5C40iUCYAEwiIDndw0VS+lZFkitCg6llvX9sOMGmXRxc7XaDiMtaifjllNZHpgaJ0UTUtRdudDNG7MNdbljoAi5s3Pl2ZPNZpPzCAEkmXTsFjRVhYKQo4G8wiUhPKNoOdfqgjjRv+xd3BS2yhAy2uUgpiqzQH2p2VfkfOf1ZLyT+tozqmsPfOXHsm/bv78CfrnCKs12IHo9iBmhSMByHJeGpoA5tllz+2fl5KmV9x2Q04dRSV84+tTsTwqpzmPHH+0UEiOFbi5usOVOLLlkURTtEHkfxRhSCSKKFNvzdSPrZmkBZdbPgjsHss7MDmPi0lhBS0XNPqQkcJJJAaAACEGACUF2IBRMljetvBoL2bZa2nPW+thusP2lOc+E+3eUXi+zlKnmh9JpYuTTNAx9V9AoDVoud0MWmQlpw1nb4RG4kAW+ugmNcCoPhrJh2kDVloUk1Pp71dTQ9vZ63bchNDMdMq5xmU0xwJiUQkoJIQ0llwgKKdNUxCIeHhjN6OlCsb9PYJ7EggOsqH6iL8sqOaCs2rhAi2a+16OgeqFsP318cTluHW0UWT0Oo57m64OdyKptRq5vAYoAzqYzmsk67TknbELeaTfKhChBs8xkq9VoV+u1roiYEwOApC+sEDQalsXY7pFGotnuSY8s/Ohns0b9/m898Z2XuyeWVtB0IluAKyzvRBgqMIoC3ws4AlZ5bb7eLG5VXpxvfjODn74AXJju2FDs7d1yMjg+AvuBvrrmt60scYSCzVjTJm/obZjtGIYAcIIVhCBF0PK4aeQB5lau8ZVyeziEZ084294xet3AhI6xEzsiZgJhAiCCQgquawkeByk9GQOqU8UTsKoWXm2kv+dH915dCl6o7s4mWkL4dhQwvtHyqZZhvi0jGQkZgtix4zqRRoB4DCQjPdmCRPz0ZtVM5BlupjWCFJSoMFXyIJVKwQ62WxBrrmckAw4xkRhjILkCsUQcChBxthlKD+KuFQ9dNb2x0g7MfroWhhCoheKKLxljeWCOThQchaeKMBvms3n1uBolTepyVA9jTZWTE0NWQnUc3C5XLNsJAhdhVZconUkoICXjyGdByJkfJbzyigIAErwDLYHJSstrNqJUTw70K3uu4clbbkvv+g1/4zGmj22nx9/96es/ct/oJWMkWnEveENGJiUhjiMSMi5BQUZSsIyrozDTv9Z2Jx+bJan8c8fAXMjO1dgJz+CL2gq3oYH0ViWrDXdZY2u6GngdERkEcykBJQACIUUkudFV2m4zYF10wAIvPf5fEzvF6C3XFJS4aqRTkUIQVoBkXAY+lxL4gU3VHINMQAEQTKkcgOQv20pBC3aF3Y+OJH/ZiHo46M+CkPNcJuN6ftKAQKqmoVGfOBwlEokKQRkjk3J4vWyrqmqaZG1tQ9eShumiemN9KvIbtc31hU21v0DjeK0LknaNxM4bRDtKKRISCiIBG9GpEUVRvQ019ORPHrhw9mIqWo60IIVdq95xy63xZMbePYCckHtB4BpRbaG9uLh/YOuiE1FFodIMgRYTKDxXxDKdzUqmIkTbjXqjUQ3DUM2lhEow040kyyQyMdGbrteKAOOqBRklgNLV2K3j8Ji/iVKVTTg1Ra3Uln2MvuPfrqwUOn7pX945ffVvbFMV4LTtFLCKJgdS1UlMFeByGJTligs2KU/p/Z3QLSUVYvb0KtFGJNtFrd2wabtbkTlLb1xnqLAeXXmiHUWdgBtC2I4dB0GAMYVCnSTZnryxqitqIVfoBy883LKPXkqr9Slng6TKAGAGZQwEVAAAPEUBYA6LScgFgSKOo2GtE2jqT9aCzz9qPZSNr8sqrNt0qO4IzjlXDNqOlKQGTIV1RUCU2Lb8jNRBYEuKIVCckHWZSgsmiiNTTSDqujg7lEuQyW1TCcXViun1c1UflhFv8yAQnBOEASQUYwgwUzQVG9u3j9e7Gz2D/X67sywClwcJs+/yhjNcyC201/NWl+PY6YT+ZvjM4sZy78TzJ8+0YlzzYhDrA0YLFxKSScaYE2E7DlgsXB4xnMACYeQjJGmBMs2wZZdh5rk+j+IYa0BJgnaib3Bi+V9fun70ntxwfv60CH/0QXn4dtzOyOD48HTv6v3fAL4/1rP23+8zdvQMKKlcryIMQiDELUdTkYyZCmvd0kjvM2stuxvEGvC9aCXE2WGtVa1KM901h3BlvWfvvjIKr3qT7rmAYhzF89zAgkSYECklF3HN1gbSocKDjqmtlvbd4nUqCbIcaXcWM5eJjpDEkhAMsCI1BXmBBRWuqgQDxAFUcbQSM5d1GojCgaxXTE2GaZwfgjLIJ3jbi+IgZBw2WKxqZtYgccwDIRzuVR0kAGF+HHpMV2nXCQOHu1aAxsa4TLupdKJLeBj70OYXw4EYpKpSCiyh4GEcRLEPEIRIhrEgPb1zi2uFTAnE8i//+e8Hx0ctg3TjTiTopq3U2fRGud3s60n19S6JFicFbHvMlyqCGmB5BIKu7bXdIIiCnoIVYjWdJhRABjQKE6XQr9aNfsP1kRdATVWUQtFNM6IYDIeFlnsN3Fw5cvrwn+/t1E+H52cT131oad26/H/fD1KBUp1WfvKtyRtSrWpjhzqwuXru1pljU8kBj5JkLDSqJ3QzrQZUxnZAVE1ZXy0syTSKAs+3aTcIa5V8grTbcsxY2TnTk3p5NiEzL7xCpyZh08roCOgAmgaXUIMSKAQ7FrqwiRtudNIR5IWTuLewY6Nzy1hxLEu2CcjiWAgg44hKL455JpU3QawnQMjUMJYxUFQ9SqiahPpc1N270ZyZYSWI0z705BDxQgEVKwoDJtc7ThDRrIrdCBBgsASox7EJgcTEdl0VaEIITBUECFg9H6/VN6EX2FW0xrtDQxtmUvp2iVCIMVYURcUUxlwIoStqu1EZHh0JIY4j70ff/vblmmPq+bAd5McnkN+6ZpsxO9+sx+aRk2efPHI2WyJux/OAaNQDKxJcbEigxV5U73LLoW03btc9KTBOaK7NYluxKW93AowY4DGzPc/zxoSRGigoInnDm3Y+J7Pbf//3w+HpID22uRjI1b/Du3ZuufrupdOPdjbPNvIZlJ84u7bSrdlBCmTfftt71Cc/6le2p1wDdwtE8RlSSYL4+uzJjSJc10UUREKJie+JrpVKacr1+TYYArtvyp3prK2TDhXdvhvloWvAtj1IE43ISxIgEXdSGsNIh6qSQDS0onNjuf/z0GzLS8dbhhqmp1gkkUhAxKSAqmLqSdMP3E6sxRHCNAAAcIIilIooz2WtoEt/vAn9eXzgWtZPzMrGWmbIhDDOIpUAyTgIAeNELRgiQh4Q3FS0GKoIIQixNDxEDQAAcoJE4eoJwYwwQBby9d6elp9PJpMhAQjAGAgRxQCSKI4dx/I8l3DAbStpKB3uNcr1HYMTyUDHSQ1gA55ZdMJmRbT4q1dWNrw9u3aeOnaxHcZdQNJYOn4YaVijTGDV0vN5QQgGyI1Cxi3bjlu1dKmQKgyiLkNY1YcGbWgUtGJicjS0N4o0/fNjDaCsLvzgb7Xzi93axpWNYDBxU7UzqPWiBe/6M1deWW+yY6c2d83g2WWr4/c++bkXnVtnxv/81ttA/dOH4fZcuzdD9bSqY6kqQ029NwoiKYii9ZiKqkMmKla9D4SrPQ98dxEBI++r93x6zHhhorvQlmuFplvQVVPTYo79jtXkPHRCoopQalgP0e/f3mtsg1GjkRozEzrinsd5rOqKCoLIawMgKIacSU0FyVxBSCi5kDqwmjikeWEkfoXt7Kt8kVV3bJFGkMICWJhhVYeRhBQ5Qcy5SjERRHEVsRH5kjPGWOBBDhkkENXXvc65S6qedDobRjHbo+fyab1SD0IQY4ApQBrACQyUhJorFjJmwjANqAEMSTHX3+3JtRfci45F85nZjXLl0KFHfjGnlwZjBcxMT1jra4W9M67AxALCIJQYXkQNotmrTdh2gyBkjqdJhiRIpLN6b77RrEUaMHJmrOpTxYySpcG2dLNJ/cx2b7RU7PTk2HWZN9/3yssz3eLhIcAuXj6jNBZee2bJWQ49zXDNXQvhUG2huHnafXGpcuMB3llsPPDNeeWDI7094x/7+Ecaq2nP2+z1GiYwFBYDJaWDEKIVEcSW7XVjMNBJ9BN/D9Csmjc8oZ7+j6X4lubJejxb53FnvVo9ncKdtJ4AalYiaNm+JMBxu5HjPj/PKt8/MrprEi0u9Y8ZeSVJiAJE6Ec4o1AdQ8xt3+1KCQVkSNEc19JYkMqRAu0wi1+j+xtOmfeQAVtx3DBHpQGwYJwkcFYlfqi0fAYASpmJSEihAi6BJIgDiCQDsUTCUMYnDAjl4OgIsWPXjS8srkcdlEAISYAxBgCkSaRgTiWMFeQDUe60fbcVhbKysiYZ7GTokjqDCchFG3vevadx8jJvN547frHRjtrLGwpRDcOwXEl1YPbkQ8Pcvv/aWEFuyy3u2eElzA6BhqphI4Up5V4ruzXfPzAyN4hEIq1f4PmJ/QM012/uzX306omPHt74OTen69qlqrX70OVKJwqdSsvbO/SSCyGJLk5ftz2YvCHcP/MuYWzMgWnWUr3llSN4funVSvf7b7mh8oPbh1ODyS1FuzeRyyOBtUSfkd7bY2QztBWAo5fd+Zo9sxv97fX5saQR7FQGrALqFFO6PrUb96fARs1qehQCgjE21ZRNzMiPQ89YTmrNLLj4WvNXNRm25mBga1BCxGkCehARCnUK0xkgIj/021wKTVO0kOgUAwqYVM90MiIC04rJTVUAN8AyLZkQQoRgs+X05/hIicZMbFY7KoYRiyVGb4zR45hDEaCx4fRCO1YVx3ZxdkDVsb9715RUo47nvXO7KngsEYTJvOQaw7iyVudRnKO6oucGhvWtmd5LZG5vXuv119NppKRUpbe/ODZyptZNBvVOC03gfLPudQR0XL+oaisLTZBNv65yYcc7770l3Ne30ar6GANslpEEbajv3hVKNTVc2H7ofbd/5v+NfurjdNe24VtuGbklWf/uyY2j9eQ4BKJwfMEAZTQ+8m4ruPrtW9Yr0S7a6XM6A4svnXj4scduKV3+sTk6Ww+/fyWKGO2sN2kLVNeSjaq10W59uI9/ZLuWac6JZKaHNUzkzVnOwd7x7YXkZAB2XNXzaje9eqV50q8kT0ePn5m/9U18KqsgbzQyxo3MEJKccQwF5IKMJxJuWTaD+KIdnk1tqS6u//ahHXu3JwVCNMY6xYx7VMER1iDEPBAYYxXDvGQC6x6Bke2XEBwexE01s6mB3c1kShcJGUzEhKRUFPgSMEzwRht0ApBS0USeMMgNqocR96NYCJEg5LKUqLHaEvUOi4049IFPbEfEjdAFQSahPXAxkABxAP1OoCYI97x0Pj3Y02/QJOG+77HDt9+cA1pP79YLZxbPHpurzi7QTS9nJEzG+oenoYYue04MkAJJOp32g6hUu5hc8q4anLyS1U6fraL1xcNxYvs1u20Y3Tw9NLJ3a7rWShnjcWmXM1epr1/unjyLGy19YnJxsWfoUx8Y+L27Zu77oG+YgxODa6Lm2N8wmqUjax+pbeTCSkdNFodWL7xzUPz4eE9hdck8sKOUGF7U08sm/0qz57Hj7btDYF6tLdlSdPhb7wE3uStv66V/9Im96nIIs82rqHzbVcrqsdqvvYW9528+/39TN2Vuu1a7gq4sFC81OnHEQQwYoxjThGoCXhNCHK1TklMNJUatprPePr0wH9VRTsd7RpKKIqiUhKoSSSEEI4jolEWRiGDD7RAIBBQAxm0ZW7avRe2jbNuj2e7ZBdSjgk0oa01QMFKaohKMERaCIYuBcixkABiPojgGGAz3ZJutuNkBpH96uHmp4jmelkERZiJD/SUd0py0GMMBhZAxFgBhtVo6pqlsxgkC7NsQicG+wePPHtmWo2bT6h/poQR0QiGX17b1FXgiA8ob62EuJTQjDVE+qeU9w0GlbTdOagcWldq+0tadOy7VNori2pliUrg3XN0QQZzODVNUcwElEllhz7DeyY5u3zGlxwvGmG4O5EPAz3fLvEVLo87+3fva83ek3h2+/jdTmR3J7Na9HoKJUXLq9ZaudU8XB67fiHZnK5VG3jKHrzbPLdiJrwT5O5/omLr9g+esvp5idsi66zOHL7xcuffT+26/59Of/8RHCmRsa7HmrbOPfvbz/pD4v888/tTKp93ZReqVuPAASA/0ZVpVL4y6BGQmJtHJk8uJHrpR89xAuilRlObfG1eO/wxsMyXFaQhEDOqIEkKhX2lyjaipnGShQVQKPU+qROW4G6OUuub5I25bnrT2DWQHrtsz/0J1iTWYx6ez5rofqQnNjpknEY24A0UincAxm8npcRjOpOgkjBHz7USWFgdguF7LiwjWK1A6VrjCYYgklAgSQAIEsUAdq90o171Op9Q7bCQIRnFah0qm8NNHn7IE0RM6Gx2KPXZ2S0/Lthd986qJXtegRip93eHp3W56gva1w8Jq7cjQ0/WdN0fqxbsoKonRZHfNSBSkruaGXBj1TQ6M9I3j3tTuIVnp7OiLo7nVeIO3qhseq6qzmwUB9AMGGLtJjNzdv78/vrT19r+g+fu2kj/+zA17Jjy+LTx90hYD2tztp4D6AvhAQ5cnr5zcuLBFrxDGMhbK5TKmbhZvv3foA4986cEnzsOidvmX577xx3/5mY++feHFjTt39Wuids3t+ptc8cxnb//w+uW/fdPgP2OxPdXdtW2b0ym9e1fx1iy4I1esHF15f48Y5erOsb5f3wK2mGJqKM49l/yDa8Mgt9FNzyWQnxqajAMAKGX5Qirf43uWlJJD7AoIccgFCtKKHzAMooCLTnLMtqJXnj99S6/zsQFsYVIOALdFbLmaRFkccQmLuoo77thA0fL9lbr3w1as5gF86G35np6UL8BVOfmnx8o8mVzY1NdWO5Ak6r5PKUaAQhFzDikmhbSRSuYSgTMwnDBEZzlaPKQoKkq1R6aDlpr9xIHGf78szRaLe6dZrU1HMoN0wnLGcdGauWt57oltg9neA73rL58Zn9FZ75sbnYezj3mNj7xr3Bt0ipHXnUMj7xuQabDwoJ/IqzLRSJ3oUW4ASr2+fDwFd4T9PNXlTuB0Ij+dzrt+Dduxlig888r917/9ztgONs6fWjy3OnX1oPPMU0c2r76q78hTs9VEcyLbHOndn//+/KXBihMAP1x2rt3lnu8OHZrujPVO3XD3gVf/5z9//gz42GcP0YuLPzlaG9iO9hy+M+g0q8joSyZMq3sJuknbSW3d0qg0291KpuY3YZCJs8ruCQHacLFyaW1jqoIekD0AlRsdkFCMVaGnSUfrcnekP4YQR7brEmJKqSLQ8kLJdTUPeTdpJK2a25UIuJiOlC40L/907/C57uq3rmRQuzPZa2Dd8yHyXaCoRjfyRrHY1md+5ST4mzfJ7nnwtEfRQtNxXXldX/6zRzv5wYnAhhsX17KIqar6hgsvErGU+A3qpGVZFAIzkx4aG6e69hef/tyop+hT95JKXYNrz/7J18+8eCHhXtnSPR8ZcP93PhU68BSGr+zR14dPjd81ldrKV/rVPfuv1gduWxmlvf23Fm8enV49akckE3eGUF059Xin/NN6kUax141XkzIF/AawbbXnIM2ZGjPtpDA5ymczSUXt5aXigTeH3fV3TOzW26dSbTmZvu2aiex0786pQ++/7y8mI3XqH//vS55MXXvXi/4mSFszcWEHEvl9H1PVq+H771xTR8HqaycdMzQuwr9/8NcMWmvL2ns+/putiugud7LDve1nj1dGi+1uJeNezk8NmoudLFF3ofTA4cMFU6Tyqtq8km4WTj6z/o+n5X+14W6rnEqOForgImag41oMuPumAcVBx/YJufcf9quqmvQ1pmCaNiui2wrgZq2KdJQgQqogt1G9SeS++UqI6M6u5f7NzmyOZg/oWo9QUoRmfX9aMeqBcmrJ+eR25dlj7sTWguHY8HM3mNLsEUFgDOgtS84vdZ4929raN+QFYVVCAFwCVAghEBBCOIykCjFIG/v2ZfJGcm72yg17s6tBOjL70NHKPV/YcjRaOtFqvfsXS6Vb3zmZlH9366e2ge4N1cXB8W1q7TxoLYPd7w3sl8FsG2smTfZWBoygucATBweK/uL/+5eeX//bpN6r+tz15ripcsvJNmyRhmEkPeTo2azRPwQuLoKJcfviqeS+w+DIL6PdN7pLDt5+ilwOy/c/0C47o1/8mPd0M9zWTf/SpTdnq/RSlPozxL5vHxn9r8ef3VKOfKesZLo6DhIg38/9qAl3vHVi7ek580Di8LXwiYfC55e6B7YV2lPJ7Z3WZG78/LP1K0vLeHqQDk8dMha/1y3dfurikV3qzX1bTj8z+ztvHvh/Dzen7ojnX1GWQ+YuNp63srfuD89fsq3ccCnutkvJPh5HARShZyGY10iiJ7PgVSe8nhB5rY4j4igSCY/FeogLmeyoo58auTw+K+3EyLBRNs2IhcDKo6ePi5kcGOtNlkluCHWfvtJJaKpBCJoN6YZttSjvduHacnNtrTU20O8JFwBAgBASgP/fZiZ4XEz4VSBQ4HVbfHN9Y3J6a0QODzday9H5Q4nAen5j/9uHD/9y+LYvfLznbYfdlvhjvXnL4y8oDth89hlX2XFx9eLmt/+afeeMNTrq7T7o946kXvdyJ1LDl5/X0JaRd3zdjBhor0UZTfZzhWRpYSCe3glyWwJ3JV/qgTJt/eLhaMcBEJj0nCt9ACbf0f7ev3fyBCxPg/bO+Nr79n/kc+D1oeE7/xTXr3I+8pHszn/3nJHKQ//QL96fpPP6hZdve5dW1vunmtyMBxoIPVu1Xmf2uecvDk/FSWrALVtHds6UL7LyfGX/0PTjVfGNy4sPM+vYWMLdbC5f3nj+KDBPXfoZ6JXno7PPL3YS6L5vn1emak8/Fp5u8vF2dXCnfNue1M5A3LQdGOtyvJQttp0KzG/EcaMPpXaVoj6v3nTu+PUb9vzH1Y0RlpEGQ6TLAhZHMYoHhaVllj6wmRPDoKGKmbH0XDdVbgNWI+MmKNHiC1fsfGX9odMWhUpaxM0ggO/alQ9oNCUGVszVA6Wbn1t7rT3vuVhTgFqLGBO2QpKx4AlKERBjSbza8HYMDmm6fddbbvjAx97z3i///QfXjctaJ+439+ze22cqKh8byZxQXr+x8/ujtYrZWT+d25/fBji41Jk7e3xKe3d406iiXuyuKBup5wbNvfVamPcjoczkXbu8Z7pUvYKCqU6mJ9N9vlbCPZ1ZPzOIO7nwomVkoWfNJtXxWsntGZuy6li2Q10L/M5m01R6L1F1kDZ7Va11JHW8Wdv1SfX15/23N5uzHWWkkmGH7caJtk8mbrjqO9P/pzuVfOKVxffmQYiGHFKNYObzb1GczODFB1dGk82XTOPiXLz/5sGvfbu261Du9VW7SGMEVdis9PTumAqXn7/k7t4N3rm37xvHZRAEZiqzoCTSItqiOq9vsP647ncmAr2txfYSxk1HvWOrcvxKXWjawK/f2N+tRxWrOggHt01Wm2tzp8qZzaQIW0ubMWACAtUEzk5efD0N3j7deuJKeiCGv7Mz9eMLiyVVRgayuYjS2qMXgi2ZHtVzHEKQPt0v+maMu4dTM9c0R17Zc2haM8YZYwH+X3E3YwxCiTFmMYrcgGPMMQcSu9321/703yfWm1fGLdE+dcs77s7/6sXKMf3U+oalpDvlr8nNZ2HrgWv2F4d+7X6wTprZcOqSefKqF18/9Vdwto7UKzvQdaFYKJp7zf47U+Ym274ITn6rUV6pBacRPLrZr6XXInC6jZdPBXOvVffFcmu6Mi42WLU5duWRL/x74/VHgdYmqmnEV4Y1iCZEpJWzUc1Qr3MaDn/xc+EHtOaRpfqvjg2V34JJavzAwb5T+7yTj137xbvLmdLHZ/bVlISTlZTmCwntsWc3H/7PCwPv7nXs6IbpUp6oAyNbRwYT8xur6VCzvGBVRCzZU+6Uj/CsOrkrr2d/+pR/kdr+WE8edW3cGkXWyuXy2HjSMMHkzvV8QvfouALzGYW1vDq+ew+8bddIOlilttObtByuyiZdoJmVZuC2mIGZ5wMAEGXpTPG0Vt1Oq7WmtrTRmI2df12pDKakqYFHLqnzAbj/dW5IoGLW5aweB2jBGDSI8vLXntq7Ha3USdagemZD1xJCRgIKJLEkCLDYdWKMYh+igppUqJYwc/WmhUcLkwoFvHbPH3yg7zX97B278B70tjclcpNvCebrmaMbA+EQiD3/E1P8tae7y5vgT0dHNzNQTnPHNR4nG08+m3KTfs+C7PzApYy4ft/ILfGryz25MbPSSp0L+VQquPluVnpT6vq3jLTgo9/5qf+SwrruBPiju37/XcGlhXTUipuPw213kOZlLUxoKqBopP7YS3pxL4BPmb9qjKpbbvrkP9j7Zmo/v7L6UtSvPtnrf2pquPzpSVS/Qcklc7mtO8OBoS4dTd/1V5Wccep8XX3/7u/9ZDZxzejZ773YEOuyI23fi1Gh6OihJxypel257G+80Gy/JpzsAi6tX3nFKYZ1dGozetsQHQ4rZSd3fEV50XGuI+Fe3Ghn8p12vuBtDl/de/aXFwon1PMXFoVT7QSm49Up7hlSC4ub1sRwLxdMMFHptEyaLA5fx9fJb1+VubbYs1iOflguen7yN7fol8uoH8SllFGptaihxBKj7epCf2j23Jh+8uULV/dtnW+eCAMBAGo4npQ8BhKxCEiiqzAHo7bNMhQgLJQENlTPp6mlHYMjP53MLC6j38HbLq9vHT8bdXKdi4/xN7/1Sn5w9UOffKEapl44deLYUfRsGZy03KXutsPxulo99r6sffMQWFrudUaUpifLr7uZ7UBuOtcScPZX9a27Q14Pv/kD78j36889HbQXvG4HVUVlaX5wXGme/5vL97/ivN1p9eRirvHoZ+XR8WBALAbx2uxJfzphTT4nbvl3dMOQ2xtY9OXU009rhVXTBPODU+HoE9Un7nR6rj7El7aONheXL05mo+07SyfnNzYsA7obzuyZlg0eevTksXzy13/3tpFr3tJH+vKlbhJZgWonAgeClspEJxjGokcW4euVQkaJryL6VaT983L8rCweS4BDRrxFU77cXZ64GuONMuHB7Mie4NV24LlNY3PKLSZrk1FkMck6dbTslweUdKyS3mwyxiCGkAny8rGXrJxatoCBwHgpW7LrT3bsl6600oo61J8mMiDJ7IYXE6oRFNX3XKOd7vxew32+1Gv1T+xVrPKxIy0VEQ4hgggjDAmUUtpKPiGDdRnqnp9KF1O55PY96ovz695VH2ocbYAbLkx/7K2NU08H1PHWovHhsPdl4t73u6nvvv4SwVt+675vfP3IxE/FngMqi/cunF+8NUOAZ7KH0961MR2YjL/4SPYTEozfsHXhfGWc0h++1FVrgx/5CDhb7RTmQZmFc8/b3ciLwvUfL9LffOtw7YVqY1yTF5rNK+bRJPJ0cWsrF+WjqdH80DQGB7Pxs36nt9j3O77+QHhjcnj56rDZmOzvBQPD/e9N0TAO/1+yf+dv6tHGsXoUVo5HKOkqjRfnCl87rv/2rXv89snza8GHxrcP8dzbP3uv33r52HG8aB251rFOro70v3iyXABJDUHWYxqN8sJSM2VO9u48Ci7tnhUsHb8SG9dsjfc7uSfOtLIjRsd1x87P62fKmyScmTC2ffrgye9cbC2veJbSMx62uwaQsLKxXsiXejzfgqgjQjOdaLX9i6aRgs1E1ZnsTygufwYHWSj8OLBdYSQBRErIGVF/br16x8F3Xt+z3qon8eCnf+/FqdIewDs6VWwWAQAEkEwiiuI48hRKokZXJGBtrSzc1ho0f+83tr98ZX3zc/3egW9qv3F64E9/e+OjzzjvYuLnQ9ZHYgxCY8cdW+o7pPPMgB+pOYhn46VXXjImZoKYa/V18oX7/Mvn1xPN/quvCYYVdv9fmH397WXTONg/0M0pdvPiwpGpa6/mcHci/jnGeGtmcNFubv3lUbdYWn2hBZYvic/cUp+0hosrG/6dqdNfj7VlWW438WyKzpjRmpdahOfLJNNEhk8nc/N//Z3M8XFx3zsG1K76118BBl/84VdzfHRo/IOrzz5oFnaceOq1sRxeamg8k9w9PbleQWGn8vyXj9I3ffrot99/Q6lT6R/Jqk3y5VuvPbplC3z4+WYHXk6r6aA6z9YS9cHuiKP6Oz2TiejIpbg3kaeh0gncUVqsn+O/jP3bWDp/aOzpLz7ap/WmmsWeyerCCWEk4PhNA/SFRHu9JXSKLJ8APWKcq4LWG1jL6maUgrmnErESNTGWSYI93ej6HqK6DEJ005dmElo3lJ8SIpNPNX7vS4bnLKfSCY1AySMgCZBEgaEUBADOfac/peVLCnN9hpW+zHVf/IsN76reF7768s2Pf/SHo5/g57D6xV/b2cDeh38rvWtbCPOtLzwuzKa/jJjkuk9PCLFisDI7H6qXwbXvcWcfXfnF97c8C9l9g9rLy8Zt26TUpvVwZGFDPX2xcf8jqlQrc2Xr8jfLjcLW/gmjEJIE3VSwL1nPp/c0407mtc2xCiHna/3WKQ8OEWMy4DvdYxfBFdsjsb18AkwkxOi1Inkz+fzTNhxFGa2anqXzWWvh4vy//9vh9x3M22fj83MXa7SUQsPDo6o+lrxuezY5cOnR5+dmZ2f6JsiB0tmn/+Hge24e+MRdQ3/69utu/BAE8ek3dxeWw8sn0J//0aFr//zXC3/739vePinzUhVUS+ulRDLkSt0Jmjwe0MyIYhX5N6TyqZn+yu6rj1xJvL55+Zpp92AadIulwpt76q92ItNJZLT+gR6zpEvOMMBOzBQVrbRq57rs6WBTuE3IY4BRwEIIJcMaj9lMSkX//ey2695UaLDx0YJyunpRdA0/qkjfDTlQCOUQxECEIhQyloKks/mEkeZc1tq13Te+iU1tv/O6ewafuXTvJw+9Vt769pv3u3u8zo+/ezTujfoeWv/lLHabuTvfWUpVjYMrbTV3YqlailzP6r7rs797cXV8TWsg4Y7uLoB79hs/ZmzbWORuuXB+vnLB4ajGb73TvP2t+ZnBoeGr1+YWqz6OqFvqybXb5dbi2quvzT/7F6/s/+xHXnr9dNtQK7B/dW3Bn8IgsSGVhf4Dh9wS7JYGVv7xO7XHGytf/9ew8uTSeO/e99yIp6K0vyc4vCs+MNhOm3F25u4bb6HD9Tv++pMVI799fKodwurZ9c7c6tDb0qcXF7m50lz3b/rojTdcv32op3eHktp9B73rxrt+Y+G4N4TMj4wefVq/7qV/f9t3P/Nm6gxp8Z7M0IVWubK5nEkFMukbSSATNqExgCECcHNzc/nchT/57PipRWCf7/3mBihR6nvx4M2TarqpjpqccNjljEcB4AgKTdNuuP5Af47iUJMS5XvSpqZUAmKHmHNeMKgPQth6+O1/+y1w9Y0vb+TupSvHHH/90f8Rhmpcsl0/sCQxAABAxjo2kQxTekKPvNFSRlVITzHx9o/+7vX3bDvy0LeOnlDGsss7m0Hq+p7w5H74a0bfZU/W8lH/y68+2Bj9bLaVfec+lzz1B3//aqB86COHVZixbh2dsYB3GjSdC6WefP2xi8auXpu6+NY3JRxtWWaT+nA6a8x9+xMjN3+8n9bB2VMvHV8q9GfKl9aLJj295u5I55K9kCs4oxqtvTOGWlP9q2J2DmixThSZikl+f508m0EHWyeeTucSzhotHtrNug/k+u86/epTW/tu8slhJ/pVlMzOlitn3/d4tNOKgrgtSz5bvP2mw/d/6aefeeDvN1wvJOC6rQd/6+C7PvCTz9xQefncXR+am3/L9sHksfft9WD1Qx97y+taZeGh0ZGbJ84/fSW9/YXW0mTm1CUnxHGpzcu4o+Xi6nphorS61LEs8pvP/nX9D74Uve0d9lVp8YUHXteLe+qeO9zKDY9HHm+trxsD+tkfLGEt1e229TjOFHMpJs47vKgyEYV2JKCZcxhzY7GFRAJB9KWHGte9b75lF6Nq6+ezxxfLCiKSQyyEQJAgLgFCUAghBJM4jsKQCD0tVEyohE/Pr3z1iz+zGyvvW69SnHr0xU0tmS/+DhnYWGon1rR7epY/z669e/z87z956JlHrZ7cjp2Hbx5QyvOd7LU9v/rcv33na0dePfPsM8/Od0cSmV97rxEpMdslnz4yf/z18IlvatHP4qVT/QcPl8JzDsi2SdqiKbvWrlQqc8v+cI8W6KA5XKpuWOz6nd3ACkTBJ2u906MwjZRkiQUXGuf+p6e8J8lq6UPjmCXElMf01ObiXcvL2dzobW7yN7i25EVHT3/gjx++7q8m79W3fiybH72eJHB73dptqiP37nJZOFK6Yce+Q5f+6ztffeaf+1aDgcy96gMfO/zz+2sf/tAf/uHV0ehE812f7v3y5tX3vWkyudLOnIq/t6lVTxy8ty8cd/OtvtH8ZMbpJqJE4LM+MT2x/71Pv+sXr7x94uwXH6x+f5P17LrzmjYqpDxCFy5dCsrrYQBOf/1S79Rwrd0NJeeE2MxtcNfEUdXymZHgmukLIQTcYoK8gTfiEJ791oFyirUaC6+8fs/ugSPfegKka3Sxu+kAwZkEUBEQABEiqWEMaSx6c+T2G3euXF6Zvuq6vj84lPqvI9YZBWW0665NFm9rPnv7ybe9K7De/7GL3/qjQ/f+y9ryE1o47kwnxvK76987Eu6cEs157S1b8MbKaibYO7RrnXTFSZufvzL2of8Bz768mXmBLw1FlEd9G2KLiXAf1Uo5ZXjz0R8LF8jRsZLfcVuzQSiS4yMgiubLoZkxlbF0ItXDYkQjKy0gIlqc7l199Gd92SB8+430h83oBptpO0ubr4V7bq4AoPz02PDpoxfeM9G79W2b8GJw1wvRX/YLo1Tds++RD/3TRF/9yjn9v37y8ecXV6snfT6U+enDX7hm2bzqn75y3c5coPLnHrq4/foJKAB79VjcXkZQdlUqW6nCe8vB2nX4/z22/G8fkk/+8sjXfzHo777qoANnBoLqqOHJrz/x9MT+d+WSZ+aWj0xnBpezI3RxjufUxhUHcQINnK+JzniydGBs6fsvvnAhGC6lhO9zBec5T2XoYkN6ggIkGZKMsZmCodis41vwY1f/TjgcXX/jWTO0T3fYiQdtr4tDhNddn4cuAwQhBGQAka5AKhjfldHyOaHT1MHHfjjzwsPrz7dU9Kq7rzEaDrQeiRYWrjkwvbq2vXnfwZvtbmVtbnZs9C1uxtmoNndohbDWbV9vopPEevaXczdMbe9MeaKL+gGZaG+G6iDeoRonXLvHlFNhqozwZaiOgHCY+la1DKdkBYcTS9alvkxpsbbY6Pojt16Xl95Ko4XzudBGusosEk2NX88ffHTd3wAbtdF3fbSxFyd+/4UXroL+/Jo2OHHtzLRjzVWXTu+8jL8xu3nHe0fZ42f0v/0/r7xUnyjGKz/61vAf/tHRH/yJh64/fE1//+SAshn/3b/9071f+Puto5n6hsvWtVnr9N1vfffxL17s/02WCZMTp460rhqdNdzBiU/5Z77V2yKnt/SHj3+D/WK2uWNEdhYDf5c3S8Ge2Ue/X/vdz72lfBosVF5ZE/7MRz8ezV0uzFvu/l0rP3peTbB1zHhNYjPq71GOvLi6fe/YxSPLiFATEDY94b9+bnhy9EqjjRCSkbNbYaGeKpgQCAve/Tsf7O8KdQQsP8wXw5/cdfC9r7/wWsNzbSDdyJJIRwgh7kOQBJIbhGyjMDdIxkdG1y8d7aPEuuamPeuLzr6pdyf9Jy9d2A1T4GZTVs1i6mT27HAbXOPmhCwlx088f3xgHDmUMtk3nGoCxdQDFmylPTWQ3M2KHjIuYqQJHuH03TG0E96GtXGwiF7qkpq1zprNZl826pglXZ/C9v9XELzGNlEAAAC+d+/auz63bu06N7q2e3RsMBmyrDpgQd4OMDJJ/EfCAsYYY3xGDeEPP5SooCZGiBHxhxITw0i2KIMwYHTCQqGDzY2ta9f349re9e56j975fVkcKMJ2b6rCGFFVKbKyKJmoRmCeW3mrU74+acGwh6vpHYGhzGKcgolwnt3tZOfu2q61WzpCuebWo5byaeDk0WWuw7c+MR3m936w7/b5i11aYYHF+56uTcB9EehZt6GaNzqPj7ROkolt7p4bZ+98dOnEX198e2CbP+qzhIPyljyj9m1e/OHXlmabaWh38Ps/OvtHJ3/+ePiUJzMaEA/dyrS7937Znrv42xLVr6QzzxcKK8tpygR1bG1+ssgEDu6KT6mPH90bDfhX8UwswmSUWKB9awwuVxZyAGEs82IkSqu8hkiixdfLZiMlVpJQHaqBJKrYdJqfknOM1tBlBYff/9w4N44fGVKTq9Kd/wRGEXigCio5TmE5GoAxTdNARYJgDAEJHVRzADWzXvE2NVAIdzOc3nO1Cb42iFeEXQI8l17fiFgL5fRih99uqdLJpycpRCbtCwMBZv2uw+BT0UZFEA3wdpTK8bGg/gAprw8r1iURTpPG/TI0jQAqDJrKarYFqyumQQh5ICiHiOoqm0ujTj9bXqLMnioXbXd2541kNhoiMbycSetlgMkrGMhrqlyxQXUWD3orF7duyMJ5Xx0+E4xybrkWFd3a4ediwnuYTsgtQOKegpKs7LEt3Z8vO1xHum1TN7g0+0TKNjKPR7Z2l+tfVlyOou5BzYmAsO7R7cWBNwbvvXtlj++4rp21HDyWiF/BXMZ8nB029s2E8mBxhvg6FORWMoLhkAMhQ5+IP55u7XmbPvvdmfmdg5snrFteESPZVk/bvBS1JYmpCOVev2lw7YciYczu2jhmvn+hEHsNDf30+MWxzuJMrLDGJud5srVRZbg0zcANrSiTqyBQRdU2IrJGAJvsWiEvJdkmcOTV0eDc74PuAUpv0w3Wz/4yboAJrqYxilThKzVAA0FQB4IACKsQXuWy/Q4ngUgeawOoRKz+AVUlS4Ycy1ENNr0V6zKvXRbkyvYWe7zeJ5TA5QSD4zhlaFNyCxBg2NxnMGhFlibxRpMEGE2osYJE9F60ZENIRafTETUUFflqtaoYVB1dLHHFMkpYIVprJlxFOxFCsoM0yTqt9TCfyBcoQMNUEGEUOpUAhSqK4WSZZ0QgXliBPF6JjUhNR1KpFIXxMQQpLlVTk+HmsbrS8trQZ9+kpxOCMVnnaKtc+BRR8WnnkPTs+rEO9yzmxYgqvRJ2eJs26Xof8RnFGrKkNLPp9a4zI35MPf/eGLKGtDWjjnMnfOvLqnvng9OrLz1/+G/o7+59gcUP91purbrHBXF2fE8iPPXm4XkrHb00q+90iY2xFhm7s1ApYt3nvkoG3+k5lcl7dmxoy/8TzJjr+us9L3RE/rxq7ulV8qWsqhEWiH6aFXlCAquqANT0plKpCEAaCSB6A6xXcIEu9fbjMiP/D4RJwcWj8gcAAAAAAElFTkSuQmCC\n"},"metadata":{},"execution_count":40}],"source":["img = download_image('https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Smaug_par_David_Demaret.jpg/1280px-Smaug_par_David_Demaret.jpg')\n","img = prepare_image(img, target_size=(150, 150))\n","img"]},{"cell_type":"code","execution_count":null,"id":"204920e3","metadata":{"id":"204920e3"},"outputs":[],"source":["import numpy as np"]},{"cell_type":"code","execution_count":null,"id":"2fa74634","metadata":{"id":"2fa74634"},"outputs":[],"source":["def prepare_input(x):\n"," return x / 255.0"]},{"cell_type":"code","execution_count":null,"id":"0e0940c9","metadata":{"id":"0e0940c9"},"outputs":[],"source":["x = np.array(img, dtype='float32')\n","X = np.array([x])\n","X = prepare_input(X)"]},{"cell_type":"code","execution_count":null,"id":"a22ebee7","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"a22ebee7","executionInfo":{"status":"ok","timestamp":1668722441058,"user_tz":-180,"elapsed":20,"user":{"displayName":"Timur Kamaliev","userId":"12270392991844786490"}},"outputId":"a4ed4bc1-419e-4adb-a3a4-ee30f7132379"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["0.5529412"]},"metadata":{},"execution_count":44}],"source":["X[0, 0, 0, 0]"]},{"cell_type":"code","execution_count":null,"id":"b1ff985d","metadata":{"id":"b1ff985d"},"outputs":[],"source":["interpreter.set_tensor(input_index, X)\n","interpreter.invoke()\n","\n","preds = interpreter.get_tensor(output_index)"]},{"cell_type":"code","execution_count":null,"id":"6814145a","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"6814145a","executionInfo":{"status":"ok","timestamp":1668722441645,"user_tz":-180,"elapsed":7,"user":{"displayName":"Timur Kamaliev","userId":"12270392991844786490"}},"outputId":"d52bd241-a818-423e-b3ef-ce467a1647c9"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[0.82448614]], dtype=float32)"]},"metadata":{},"execution_count":46}],"source":["preds"]},{"cell_type":"code","execution_count":null,"id":"3a3f6aa3","metadata":{"id":"3a3f6aa3"},"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.9.7"},"colab":{"provenance":[]}},"nbformat":4,"nbformat_minor":5} ================================================ FILE: cohorts/2022/09-serverless/homework/homework.py ================================================ #!/usr/bin/env python # coding: utf-8 # import tensorflow.lite as tflite import tflite_runtime.interpreter as tflite import os import numpy as np from io import BytesIO from urllib import request from PIL import Image MODEL_NAME = os.getenv('MODEL_NAME', 'dino-vs-dragon-v2.tflite') def download_image(url): with request.urlopen(url) as resp: buffer = resp.read() stream = BytesIO(buffer) img = Image.open(stream) return img def prepare_image(img, target_size): if img.mode != 'RGB': img = img.convert('RGB') img = img.resize(target_size, Image.NEAREST) return img def prepare_input(x): return x / 255.0 interpreter = tflite.Interpreter(model_path=MODEL_NAME) interpreter.allocate_tensors() input_index = interpreter.get_input_details()[0]['index'] output_index = interpreter.get_output_details()[0]['index'] # 'https://upload.wikimedia.org/wikipedia/en/e/e9/GodzillaEncounterModel.jpg' def predict(url): img = download_image(url) img = prepare_image(img, target_size=(150, 150)) x = np.array(img, dtype='float32') X = np.array([x]) X = prepare_input(X) interpreter.set_tensor(input_index, X) interpreter.invoke() preds = interpreter.get_tensor(output_index) return float(preds[0, 0]) def lambda_handler(event, context): url = event['url'] pred = predict(url) result = { 'prediction': pred } return result ================================================ FILE: cohorts/2022/09-serverless/homework/test.py ================================================ import requests url = 'http://localhost:8080/2015-03-31/functions/function/invocations' data = {'url': 'https://upload.wikimedia.org/wikipedia/en/e/e9/GodzillaEncounterModel.jpg'} result = requests.post(url, json=data).json() print(result) ================================================ FILE: cohorts/2022/09-serverless/homework.md ================================================ ## Homework In this homework, we'll deploy the dino or dragon model we trained in the [previous homework](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/cohorts/2022/08-deep-learning/homework.md). Download the model from here: https://github.com/SVizor42/ML_Zoomcamp/releases/download/dino-dragon-model/dino_dragon_10_0.899.h5 ## Question 1 Now convert this model from Keras to TF-Lite format. What's the size of the **converted** model? * 21 Mb * 43 Mb * 80 Mb * 164 Mb ## Question 2 To be able to use this model, we need to know the index of the input and the index of the output. What's the output index for this model? * 3 * 7 * 13 * 24 ## Preparing the image You'll need some code for downloading and resizing images. You can use this code: ```python from io import BytesIO from urllib import request from PIL import Image def download_image(url): with request.urlopen(url) as resp: buffer = resp.read() stream = BytesIO(buffer) img = Image.open(stream) return img def prepare_image(img, target_size): if img.mode != 'RGB': img = img.convert('RGB') img = img.resize(target_size, Image.NEAREST) return img ``` For that, you'll need to have `pillow` installed: ```bash pip install pillow ``` Let's download and resize this image: https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Smaug_par_David_Demaret.jpg/1280px-Smaug_par_David_Demaret.jpg Based on the previous homework, what should be the target size for the image? ## Question 3 Now we need to turn the image into numpy array and pre-process it. > Tip: Check the previous homework. What was the pre-processing > we did there? After the pre-processing, what's the value in the first pixel, the R channel? * 0.3353411 * 0.5529412 * 0.7458824 * 0.9654902 ## Question 4 Now let's apply this model to this image. What's the output of the model? * 0.17049132 * 0.39009996 * 0.60146114 * 0.82448614 ## Prepare the lambda code Now you need to copy all the code into a separate python file. You will need to use this file for the next two questions. Tip: you can test this file locally with `ipython` or Jupyter Notebook by importing the file and invoking the function from this file. ## Docker For the next two questions, we'll use a Docker image that we already prepared. This is the Dockerfile that we used for creating the image: ```docker FROM public.ecr.aws/lambda/python:3.9 COPY dino-vs-dragon-v2.tflite . ``` And pushed it to [`svizor42/zoomcamp-dino-dragon-lambda:v2`](https://hub.docker.com/r/svizor42/zoomcamp-dino-dragon-lambda/tags). A few notes: * The image already contains a model and it's not the same model as the one we used for questions 1-4. * The version of Python is 3.9, so you need to use the right wheel for TF-Lite. For Tensorflow 2.7.0, it's https://github.com/alexeygrigorev/tflite-aws-lambda/raw/main/tflite/tflite_runtime-2.7.0-cp39-cp39-linux_x86_64.whl ## Question 5 Download the base image `svizor42/zoomcamp-dino-dragon-lambda:v2`. You can easily make it by using [docker pull](https://docs.docker.com/engine/reference/commandline/pull/) command. So what's the size of this base image? * 139 Mb * 329 Mb * 639 Mb * 929 Mb You can get this information when running `docker images` - it'll be in the "SIZE" column. ## Question 6 Now let's extend this docker image, install all the required libraries and add the code for lambda. You don't need to include the model in the image. It's already included. The name of the file with the model is `dino-vs-dragon-v2.tflite` and it's in the current workdir in the image (see the Dockerfile above for the reference). Now run the container locally. Score this image: https://upload.wikimedia.org/wikipedia/en/e/e9/GodzillaEncounterModel.jpg What's the output from the model? * 0.12 * 0.32 * 0.52 * 0.72 ## Publishing it to AWS Now you can deploy your model to AWS! * Publish your image to ECR * Create a lambda function in AWS, use the ECR image * Give it more RAM and increase the timeout * Test it * Expose the lambda function using API Gateway This is optional and not graded. ## Publishing to Docker hub This is just for reference, this is how we published our image to Docker hub: ```bash docker build -t zoomcamp-dino-dragon-lambda . docker tag zoomcamp-dino-dragon-lambda:latest svizor42/zoomcamp-dino-dragon-lambda:v2 docker push svizor42/zoomcamp-dino-dragon-lambda:v2 ``` ## Submit the results * Submit your results here: https://forms.gle/Pnx563ELg9jgjxHX6 * You can submit your solution multiple times. In this case, only the last submission will be used * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ## Deadline The deadline for submitting is **28 November 2022 (Monday), 23:00 CEST (Berlin time)**. After that, the form will be closed. ================================================ FILE: cohorts/2022/10-kubernetes/homework/deployment.yaml ================================================ apiVersion: apps/v1 kind: Deployment metadata: name: credit-card spec: selector: matchLabels: app: credit-card replicas: 1 template: metadata: labels: app: credit-card spec: containers: - name: credit-card image: zoomcamp-model:v001 resources: requests: memory: "64Mi" cpu: "100m" limits: memory: "128Mi" cpu: "200m" ports: - containerPort: 9696 ================================================ FILE: cohorts/2022/10-kubernetes/homework/hpa.yaml ================================================ apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: credit-card-v1 spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: credit-card minReplicas: 1 maxReplicas: 3 targetCPUUtilizationPercentage: 20 ================================================ FILE: cohorts/2022/10-kubernetes/homework/service.yaml ================================================ apiVersion: v1 kind: Service metadata: name: credit-card spec: type: LoadBalancer selector: app: credit-card ports: - port: 80 targetPort: 9696 ================================================ FILE: cohorts/2022/10-kubernetes/homework/test.py ================================================ import requests from time import sleep url = "http://localhost:9696/predict" client = {"reports": 0, "share": 0.245, "expenditure": 3.438, "owner": "yes"} while True: sleep(0.1) response = requests.post(url, json=client).json() print(response) ================================================ FILE: cohorts/2022/10-kubernetes/homework.md ================================================ ## Homework In this homework, we'll deploy Credit Card prediction model from the homework 5. We already have a docker image for this model - we'll use it for deploying the model to Kubernetes. ## Bulding the image Clone the course repo if you haven't: ``` git clone https://github.com/alexeygrigorev/mlbookcamp-code.git ``` Go to the `course-zoomcamp/cohorts/2022/05-deployment/homework` folder and execute the following: ```bash docker build -t zoomcamp-model:v001 . ``` > **Note:** If you have troubles building the image, you can > use the image we built and published to docker hub: > `svizor42/zoomcamp-model:v001` ## Question 1 Run it to test that it's working locally: ```bash docker run -it --rm -p 9696:9696 zoomcamp-model:v001 ``` And in another terminal, execute `q6_test.py` file: ```bash python q6_test.py ``` You should see this: ``` {'get_card': True, 'get_card_probability': } ``` Here `` is the probability of getting a credit card. You need to choose the right one. * 0.289 * 0.502 * 0.769 * 0.972 Now you can stop the container running in Docker. ## Installing `kubectl` and `kind` You need to install: * `kubectl` - https://kubernetes.io/docs/tasks/tools/ (you might already have it - check before installing) * `kind` - https://kind.sigs.k8s.io/docs/user/quick-start/ ## Question 2 What's the version of `kind` that you have? Use `kind --version` to find out. ## Creating a cluster Now let's create a cluster with `kind`: ```bash kind create cluster ``` And check with `kubectl` that it was successfully created: ```bash kubectl cluster-info ``` ## Question 3 What's the smallest deployable computing unit that we can create and manage in Kubernetes (`kind` in our case)? * Node * Pod * Deployment * Service ## Question 4 Now let's test if everything works. Use `kubectl` to get the list of running services. What's the `Type` of the service that is already running there? * ClusterIP * NodePort * LoadBalancer * ExternalName ## Question 5 To be able to use the docker image we previously created (`zoomcamp-model:v001`), we need to register it with `kind`. What's the command we need to run for that? * `kind create cluster` * `kind build node-image` * `kind load docker-image` * `kubectl apply` ## Question 6 Now let's create a deployment config (e.g. `deployment.yaml`): ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: credit-card spec: selector: matchLabels: app: credit-card replicas: 1 template: metadata: labels: app: credit-card spec: containers: - name: credit-card image: resources: requests: memory: "64Mi" cpu: "100m" limits: memory: cpu: ports: - containerPort: ``` Replace ``, ``, ``, `` with the correct values. What is the value for ``? Apply this deployment using the appropriate command and get a list of running Pods. You can see one running Pod. ## Question 7 Let's create a service for this deployment (`service.yaml`): ```yaml apiVersion: v1 kind: Service metadata: name: spec: type: LoadBalancer selector: app: ports: - port: 80 targetPort: ``` Fill it in. What do we need to write instead of ``? Apply this config file. ## Testing the service We can test our service locally by forwarding the port 9696 on our computer to the port 80 on the service: ```bash kubectl port-forward service/ 9696:80 ``` Run `q6_test.py` (from the homework 5) once again to verify that everything is working. You should get the same result as in Question 1. ## Autoscaling Now we're going to use a [HorizontalPodAutoscaler](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/) (HPA for short) that automatically updates a workload resource (such as our deployment), with the aim of automatically scaling the workload to match demand. Use the following command to create the HPA: ```bash kubectl autoscale deployment credit-card --name credit-card-hpa --cpu-percent=20 --min=1 --max=3 ``` You can check the current status of the new HPA by running: ```bash kubectl get hpa ``` The output should be similar to the next: ```bash NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE credit-card-hpa Deployment/credit-card 1%/20% 1 3 1 27s ``` `TARGET` column shows the average CPU consumption across all the Pods controlled by the corresponding deployment. Current CPU consumption is about 0% as there are no clients sending requests to the server. > >Note: In case the HPA instance doesn't run properly, try to install the latest Metrics Server release > from the `components.yaml` manifest: > ```bash > kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml >``` ## Increase the load Let's see how the autoscaler reacts to increasing the load. To do this, we can slightly modify the existing `q6_test.py` script by putting the operator that sends the request to the credit-card service into a loop. ```python while True: sleep(0.1) response = requests.post(url, json=client).json() print(response) ``` Now you can run this script. ## Question 8 (optional) Run `kubectl get hpa credit-card-hpa --watch` command to monitor how the autoscaler performs. Within a minute or so, you should see the higher CPU load; and then - more replicas. What was the maximum amount of the replicas during this test? * 1 * 2 * 3 * 4 >Note: It may take a few minutes to stabilize the number of replicas. Since the amount of load is not controlled > in any way it may happen that the final number of replicas will differ from initial. ## Submit the results * Submit your results here: https://forms.gle/TqVbjFD1jRZ874nS9 * You can submit your solution multiple times. In this case, only the last submission will be used * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ## Deadline The deadline for submitting is **5 December 2022 (Monday), 23:00 CEST (Berlin time)**. After that, the form will be closed. ================================================ FILE: cohorts/2022/README.md ================================================ ## Machine Learning Zoomcamp 2022 * [Launch stream with course overview](https://www.youtube.com/watch?v=MqI8vt3-cag&list=PL3MmuxUbc_hIhxl5Ji8t4O6lPAOpHaCLR) * [FAQ](https://datatalks.club/faq/machine-learning-zoomcamp.html) * [Leaderboard](https://docs.google.com/spreadsheets/d/e/2PACX-1vQzLGpva63gb2rIilFnpZMRSb-buyr5oGh8jmDtIb8DANo4n6hDalra_WRCl4EZwO1JvaC4UIS62n5h/pubhtml) * [Course Playlist: Only 2022 Live videos & homeworks](https://www.youtube.com/watch?v=MqI8vt3-cag&list=PL3MmuxUbc_hL5QBBEyKUXKuTNx-3cTpKs) * [Public leaderboard](leaderboard.md) ### Syllabus **[1. Introduction to Machine Learning](01-intro/)** * [Module materials](../../01-intro) * [Homework](01-intro/homework.md) * Homework solution: * [Notebook](01-intro/homework_1.ipynb) * [Video](https://www.youtube.com/watch?v=J0Ht4V9mIRI&list=PL3MmuxUbc_hL5QBBEyKUXKuTNx-3cTpKs) * [Office hours](https://www.youtube.com/watch?v=VojpszKmKw8&list=PL3MmuxUbc_hL5QBBEyKUXKuTNx-3cTpKs) **[2. Machine Learning for Regression](02-regression/)** * [Module materials](../../02-regression) * [Homework](02-regression/homework.md) * Homework solution: * [Notebook](02-regression/homework_2.ipynb) * [Video](https://www.youtube.com/watch?v=mWJwXyibqW8&list=PL3MmuxUbc_hL5QBBEyKUXKuTNx-3cTpKs) * [Office hours](https://www.youtube.com/watch?v=UYWy8ETnKt8&list=PL3MmuxUbc_hL5QBBEyKUXKuTNx-3cTpKs) [**3. Machine Learning for Classification**](03-classification/) * [Module materials](../../03-classification) * [Homework](03-classification/homework.md) * Homework solution: * [Notebook](03-classification/homework_3.ipynb) * [Video](https://www.youtube.com/watch?v=o--DqcyRLEM&list=PL3MmuxUbc_hL5QBBEyKUXKuTNx-3cTpKs) * [Office hours](https://www.youtube.com/watch?v=WYOahoRGvZc&list=PL3MmuxUbc_hL5QBBEyKUXKuTNx-3cTpKs) [**4. Evaluation Metrics for Classification**](04-evaluation/) * [Module materials](../../04-evaluation) * [Homework](04-evaluation/homework.md) * Homework solution: * [Notebook](04-evaluation/homework_4.ipynb) * [Video](https://youtu.be/82TYlOvKwfk) * [Office hours](https://www.youtube.com/watch?v=glwPRlEcYgU&list=PL3MmuxUbc_hL5QBBEyKUXKuTNx-3cTpKs) [**5. Deploying Machine Learning Models**](05-deployment/) * [Module materials](../../05-deployment) * [Homework](05-deployment/homework.md) * Homework solution: * [Code](05-deployment/homework/) * [Video](https://youtu.be/LZFKhcG6ygc) * [Office hours](https://www.youtube.com/watch?v=4JMd6ovNuwk&list=PL3MmuxUbc_hL5QBBEyKUXKuTNx-3cTpKs) [**6. Decision Trees and Ensemble Learning**](06-trees/) * [Module materials](../../06-trees) * [Homework](06-trees/homework.md) * Homework solution: * [Notebook](06-trees/homework_6.ipynb) * [Office hours](https://www.youtube.com/watch?v=DOWSa2kR8-I&list=PL3MmuxUbc_hL5QBBEyKUXKuTNx-3cTpKs) [**7. Production-Ready Machine Learning (Bento ML)**](07-bento-production/) * [Module materials](../../07-bentoml-production/) * [Homework](07-bento-production/homework.md) * Homework solution: * [Video](https://www.youtube.com/watch?v=BknNxERM2fk&list=PL3MmuxUbc_hL5QBBEyKUXKuTNx-3cTpKs) * [Office hours](https://www.youtube.com/watch?v=yKK7RgXlNdY&list=PL3MmuxUbc_hL5QBBEyKUXKuTNx-3cTpKs) [**Midterm Project**](projects.md#midterm-project) * More information: [projects.md](projects.md#midterm-project) [**8. Neural Networks and Deep Learning**](08-deep-learning/) * [Module materials](../../08-deep-learning) * [Homework](08-deep-learning/homework.md) * Homework solution: * [Notebook](08-deep-learning/homework_8.ipynb) * [Saturn Cloud: Notebooks with GPUs](https://bit.ly/saturn-mlzoomcamp) [**9. Serverless Deep Learning**](09-serverless/) * [Module materials](../../09-serverless) * [Homework](09-serverless/homework.md) * Homework solution: * [Code](09-serverless/homework/) [**10. Kubernetes and TensorFlow Serving**](10-kubernetes/) * [Module materials](../../10-kubernetes) * [Homework](10-kubernetes/homework.md) * Homework solution: * [Code](10-kubernetes/homework/) **11. KServe (optional)** * [Module materials](../../11-kserve) * No homework [**Capstone Project**](projects.md#capstone-1) * More information: [projects.md](projects.md#capstone-1) [**Capstone Project 2**](projects.md#capstone-2) * More information: [projects.md](projects.md#capstone-2) **[Article](article.md) (Optional)** * More information: [article.md](article.md) **[Image classification competition](https://www.kaggle.com/competitions/kitchenware-classification/)** If you liked our deep learning module, join us to build a model for classifying cups, glasses, plates, spoons, forks and knives. Submit your learning in public links [here](https://forms.gle/yBo5rfN1WkSqQ5xj8) ## Supporters and partners Thanks to the course sponsors for making it possible to run this course

Thanks to our friends for spreading the word about the course

================================================ FILE: cohorts/2022/article.md ================================================ ## Article (optional) The best way to learn about something - to teach it. In this part of the course, we'll explore some topics that weren't covered in the course. You'll need to learn about this topic and then write about what you learned in an article. ## Submitting the results * Submit your article to [`#course-ml-zoomcamp-articles`](https://app.slack.com/client/T01ATQK62F8/C02QXBFS1PU) - just share the link to your article there * Submit the same link to [this form](https://forms.gle/6KKQg5EZPjtBpbb29) so we could link it to your message from the channel ## Evaluating We'll use voting for scoring your articles. * Check the articles in the [`#course-ml-zoomcamp-articles`](https://app.slack.com/client/T01ATQK62F8/C02QXBFS1PU) channel and put a :+1: reaction to articles that you liked * The top voted articles will get 20 points ## Deadline The deadline for finishing the article is 30 January, 22:00 CET. ## Articles from 2022 * https://medium.com/@sotoblanco263542/track-your-machine-learning-experiments-with-w-b-d5f9431e6bc2 * https://blog.aaishamuhammad.co.za/posts/onnx_machine_learning/ * https://github.com/ElenaNKn/scaling_methods * https://medium.com/@alexandervalverdeguillen/math-optimization-methods-for-machine-learning-8837eba9e3fe * https://rzabolotin.hashnode.dev/deploying-ml-model-via-telegram-bot * https://github.com/bsenst/mlbookcamp-2022/blob/main/social-media-analysis-ml-zoomcamp.ipynb * https://github.com/mary435/Telegram.git ### Past articles See examples of articles from the 2021 cohort [here](../../article/README.md) ================================================ FILE: cohorts/2022/leaderboard.md ================================================ ## Leaderboard This is the top [100 leaderboard](https://docs.google.com/spreadsheets/d/e/2PACX-1vQzLGpva63gb2rIilFnpZMRSb-buyr5oGh8jmDtIb8DANo4n6hDalra_WRCl4EZwO1JvaC4UIS62n5h/pubhtml) of participants of ML Zoomcamp 2022 edition! | Name | GitHub | Courseworks | Links | Feedback | | ---- | :----: | ----------- | ----- | -------- | | [Pastor Soto](https://www.linkedin.com/in/pastor-soto-34215b125/) | [:octocat:](https://github.com/sotoblanco) |
  • [Project](https://github.com/sotoblanco/skin-cancer-detection)
  • | | | [Aaisha Muhammad](https://www.linkedin.com/in/aaisha-muhammad/) | [:octocat:](https://github.com/AaishaMuhammad/) |
  • [Project](https://frogtoxicity.streamlit.app/)
  • |
  • [Midterm Project Codebase](https://github.com/AaishaMuhammad/mlzoomcamp_midterm)
  • [Capstone Project](https://github.com/AaishaMuhammad/mlzoomcamp_capstone2)
  • | | [Bhaskar Sarma](https://www.linkedin.com/in/bhasarma/) | [:octocat:](https://github.com/bhasarma/) |
  • [Project](https://github.com/bhasarma/kitchenware-classification-project/)
  • |
  • [Mid-term Project](https://github.com/bhasarma/mlcoursezoom-camp/tree/main/WK08-09-midterm-project/)
  • [Homeworks](https://github.com/bhasarma/mlcoursezoom-camp/tree/main/homeworks/)
  • [twitter](https://twitter.com/ML_BSarma/)
  • | Feel free to connect. thanks Alexey for everything! | | [Odimegwu David](https://www.linkedin.com/in/odimegwunnaemeka/) | [:octocat:](https://github.com/Emekadavid) | | | | [Konrad Mühlberg](https://www.linkedin.com/in/konrad-muehlberg/) | [:octocat:](https://github.com/kmue) | | | | [Giordano Pignagnoli](https://www.linkedin.com/in/giordanopignagnoli/) | [:octocat:](https://github.com/braccinocorto) |
  • [Project](https://github.com/braccinocorto/MLZoomcamp/tree/main/__Capstone_Project)
  • | | | [Daniel Egbo](https://www.linkedin.com/in/egbodaniel/) | [:octocat:](https://github.com/Danselem) |
  • [Project](https://github.com/Danselem/chestxray)
  • |
  • [Gender Determination](https://github.com/Danselem/gender_determination)
  • [Energy consumption prediction](https://github.com/Danselem/appliance_pred)
  • [Fraud Classifier](https://github.com/Danselem/fraud-classifier)
  • | | [Dimitrios Zacharenakis](https://www.linkedin.com/in/zacharenakis) | [:octocat:](https://github.com/dimzachar) |
  • [Project](https://github.com/dimzachar/capstone_mlzoomcamp)
  • | [Portfolio](https://zacharenakis.super.site) | Huge shoutout to DataTalks.Club for the outstanding course that has both enlightened and empowered me in the field of machine learning. Your dedication to delivering high-quality educational content is truly appreciated. | | [Francisco Ortiz Tena](https://www.linkedin.com/in/francisco-ortiz-tena/) | [:octocat:](https://github.com/FranciscoOrtizTena) |
  • [Project](https://github.com/FranciscoOrtizTena/ML_Zoomcamp)
  • | | | [Edidiong Esu](https://www.linkedin.com/in/edidiong-esu-1942a2129/) | [:octocat:](https://github.com/EdidiongEsu) |
  • [Project](https://github.com/EdidiongEsu/mlzoomcamp_capstone_one)
  • | | It has been an incredible couple of months of learning through the Machine Learning Zoomcamp. I'm grateful to Alexey and the team for teaching and assisting through all the student's difficulties. Will always look forward to partaking in a datatalks Course to pickup and get better with my data skills. | | [Abdeljebbar BOUBEKRI](https://ma.linkedin.com/in/abdeljebbar-boubekri-656b30192) | [:octocat:](https://github.com/dajebbar) |
  • [Project](https://github.com/dajebbar/hotel_booking_project)
  • |
  • [Kaggle](https://www.kaggle.com/dajebbar)
  • [Twitter](https://www.twitter.com/marokart/)
  • | It was a great pleasure to join MLZoomcamp! Many thanks to Alexey Grigorev and DataTalks Club. | | [Kiryl](https://www.linkedin.com/in/kiryl-miatselitsa) | [:octocat:](https://github.com/Kibzik) |
  • [Project](https://github.com/Kibzik/bike-sharing-analysis)
  • | | Be passion and honorable | | [Alena Kniazeva](https://www.linkedin.com/in/alena-n-kniazeva/) | [:octocat:](https://github.com/ElenaNKn) | |
  • [Course project 1](https://github.com/ElenaNKn/Udemy_course_popularity)
  • [Course project 2](https://github.com/ElenaNKn/mechanical-properties)
  • [Article](https://github.com/ElenaNKn/scaling_methods)
  • | Thanks to MLZoomCamp course I'm opened to new challenges in machine learning engineering! | | [Marilina Orihuela](https://www.linkedin.com/in/marilina-orihuela/?locale=en_US) | [:octocat:](https://github.com/mary435?tab=repositories) |
  • [Project](https://github.com/mary435/kitchenware_classification)
  • | [Cardiovascular disease risk model](https://github.com/mary435/cardiovascular_diseases_risk_model) | | [Javier Moraga](https://www.linkedin.com/in/francisco-javier-moraga-ortiz-091399106/) | [:octocat:](https://github.com/JavierMoraga1) | | | | [Asia Saeed](https://www.linkedin.com/in/asia-saeed-7608a17b/) | [:octocat:](https://github.com/AsMoh?tab=repositories) |
  • [Project](https://github.com/AsMoh/Plant-Diseases-Classification)
  • [Project](https://github.com/AsMoh/MLZoompcamp-Midterm-Project)
  • | | | [Martin Uribe](https://www.linkedin.com/in/martin-uribe/) | g[:octocat:](https://github.com/clamytoe) |
  • [Project](https://github.com/clamytoe/kitchenware_classifier)
  • | | This was a great course and an awesome journey. I made some good friends while going through it and well worth the time. Would highly recommend to others. | | [Manuel Alejandro Aponte](https://www.linkedin.com/in/manuelalejandroaponte/) | [:octocat:](https://github.com/alejomaar) |
  • [Project](https://github.com/alejomaar/Machine-Learning-Zoomcamp)
  • | | If you like ML as much as I do, I'd love to contact you :). | | [Rizdi Aprilian](https://www.linkedin.com/in/rizdi-aprilian-rar217935b1/) | [:octocat:](https://github.com/rizdiaprilian/) |
  • [Project](https://github.com/rizdiaprilian/MLZoomcamp_2022)
  • | | | [Roman Zabolotin](https://www.linkedin.com/in/rzabolotin/) | [:octocat:](https://github.com/rzabolotin) |
  • [Project](https://github.com/rzabolotin/ml_zoomcamp_2022_project_2)
  • | | | [Sergei Zemskov](https://www.linkedin.com/in/sergey-zemskov-a998756a/) | [:octocat:](https://github.com/brut0) | | | | [Christian Balanquit](https://www.linkedin.com/in/cbbalanquit) | [:octocat:](https://github.com/ChanTheDataExplorer) |
  • [Project](https://github.com/ChanTheDataExplorer/mlzoomcamp_capstone1_chan)
  • [Project](https://github.com/ChanTheDataExplorer/MLProject_Dota2)
  • | | | [Arun chakravarthi Dhanapalan](https://www.linkedin.com/in/arun-chakravarthi-dhanapalan-86054912) | [:octocat:](https://github.com/arundac23) |
  • [Project](https://github.com/arundac23/ML_Zoomcamp_2022/tree/master/12_project_2)
  • | | I really enjoyed this course. I can’t thank enough Alexey for creating this course. I gained lot from this course. I would recommend this course to both aspiring and experienced ML engineer. | | [Patrick Walukagga](https://www.linkedin.com/in/walukagga-patrick-53261382/) | [:octocat:](http://github.com/patrickCmd/) |
  • [Project](https://github.com/PatrickCmd/mlzoomcamp-capstone-project-1)
  • | | | [Memoona Tahira](https://www.linkedin.com/in/memoonatahira/) | [:octocat:](https://github.com/MemoonaTahira) |
  • [Project](https://github.com/MemoonaTahira/Traffic_Violation_Classification)
  • |
  • [MLZoomcamp 22 Notes](https://github.com/MemoonaTahira/MLZoomcamp2022)
  • [Medium](https://medium.com/@MemoonaTahira)
  • | A wonderful bootcamp, with good and clear teaching videos and awesome community support on Slack. I enjoyed learning here a lot. | | [Giovanni Pecoraro](https://it.linkedin.com/in/giovanni-pecoraro-078500155) | [:octocat:](https://github.com/Peco602) |
  • [Project](https://github.com/Peco602/brain-stroke-detector)
  • |
  • [Twitter](https://twitter.com/Peco602)
  • [Blog](https://www.peco602.com/)
  • | | [Tatsiana Shahava](https://www.linkedin.com/in/tatsiana-shahava-6a2123136/) | |
  • [Project](https://github.com/tanyashagova/roasted-coffee-been-classification)
  • | | | [Mani kanta Goli ](https://www.linkedin.com/in/manikanta-goli-697662170) | [:octocat:](https://github.com/Mani1213) | | | No | | [Esteban Encina](https://www.linkedin.com/in/encinaesteban/) | [:octocat:](https://github.com/eeeds) |
  • [Project](https://github.com/eeeds/kitchenware-classification)
  • | | | [Dzmitry Karpuk](https://www.linkedin.com/in/dzmitry-karpuk-8b0aa4213) | [:octocat:](https://github.com/DmitryKarpuk) |
  • [Project](https://github.com/DmitryKarpuk/LeafDiseaseClassifier)
  • | | | [Filipe do Vale Melo](https://www.linkedin.com/in/filipe-dvmelo/) | [:octocat:](https://github.com/lipinor) |
  • [Project](https://github.com/lipinor/churn_prediction)
  • | [CO2 Emission Prediction](https://github.com/lipinor/co2_emission) | | [Ivan Dmitrovich](https://www.linkedin.com/in/ivan-dmitrovich/) | |
  • [Project](https://github.com/Dmitrovich-Ivan/course-zoomcamp-homework/tree/main/midterm-project)
  • | | I would like to thank the DataTalks.Club team and Alexey Grigorev in particular for this journey! | | [Mohammed Arebi](https://www.linkedin.com/in/mohammedarebi/) | [:octocat:](https://github.com/arebimohammed) |
  • [Project](https://github.com/arebimohammed/Image-Classification-End-to-End-Machine-Learning-Project)
  • | | | [Luca Pugliese](https://www.linkedin.com/in/lucapug/) | [:octocat:](https://github.com/lucapug) | | | | [Arthur Minakhmetov](https://www.linkedin.com/in/arthur-minakhmetov-phd-90133349/) | [:octocat:](https://github.com/aminakhmetov) |
  • [Project](https://github.com/aminakhmetov/aminakhmetov/tree/main/ML-ZoomCamp/Capstone%20Project)
  • |
  • [homepage](https://minakhmetov.com/)
  • [Google Scholar Profile](https://scholar.google.com/citations?user=zDr-pXcAAAAJ&hl=en)
  • | You can reach me by: arthur@minakhmetov.com | | Kevin Careaga | [:octocat:](https://github.com/KevsDe) | | | | [Alfredo Oscar Carrion Gutierrez](https://www.linkedin.com/in/alfredocarriongutierrez/) | [:octocat:](https://github.com/carrionalfredo/carrionalfredo) | | | | [Benjamin Senst](https://www.linkedin.com/in/benjaminsenst/) | [:octocat:](https://github.com/bsenst) | |
  • [Midterm Project: Predicting Respiratory Disease from Age, Gender, Symptom](https://github.com/bsenst/midterm-resp)
  • [Capstone 1: Skin Lesion Classifier](https://github.com/bsenst/capstone1-skin-lesion-classifier)
  • [Capstone 2: Predict Emergency Department Service Utilisation](https://github.com/bsenst/capstone2-predict-service-utilisation)
  • | It was great to follow this online course program. Thanks 👍 | | Patricia Lee | |
  • [Project](https://github.com/ptrisha/ml-capstone2)
  • | | | [Katrin Lorenz](https://www.linkedin.com/in/katrinlorenz/) | [:octocat:](https://github.com/katrinlaura73) |
  • [Project](https://github.com/katrinlaura73/MLZoomcamp/tree/main/CapstoneProject)
  • | | | [Jocelyn C. Dumlao](https://www.linkedin.com/in/jocelyn-dumlao-168921a8/) | [:octocat:](https://github.com/jcdumlao14) |
  • [Project](https://github.com/jcdumlao14/Homework-ml-zoomcamp/blob/main/Midterm%20Project/README.md)
  • | | https://github.com/jcdumlao14/ML-zoomcamp-course-homework/blob/main/Capstone%20Project-1/README.md | | [Angel de Vicente](https://www.linkedin.com/in/angel-de-vicente-garrido-5082aa114/) | [:octocat:](https://github.com/angel-devicente/) | | | | [Zack Keller](https://www.linkedin.com/in/zrkeller/) | [:octocat:](https://github.com/zkeller89) | | | | [Venkata Naga Praveen Balijepalli](https://www.linkedin.com/in/praveenbalijepalli/) | [:octocat:](https://github.com/praveenbalijepalli) | | | All Hail, Alexey Grigorev!!! | | Albert Tuykin | [:octocat:](https://github.com/darkcorpd) | | | | [Don Avery](https://www.linkedin.com/in/donavery/) | | | | | Simon Ilishaev | |
  • [Project](https://github.com/SimonIlishaev/ml-zoomcamp-hw/tree/master/nlp_classic)
  • | | | [Lorenz Hertel](https://www.linkedin.com/in/lorenzhertel/) | [:octocat:](https://github.com/LoHertel) |
  • [Project](https://github.com/LoHertel/lost-in-cupboard)
  • | | | [Ekaterina Kutovaia](https://www.linkedin.com/in/katekut1/) | [:octocat:](https://github.com/KateK1) | | | Open for opportunities | | [Leonid Olenin](https://www.linkedin.com/in/leonid-olenin) | [:octocat:](https://github.com/avisprof) | | | | [José Victor S. Scursulim](https://www.linkedin.com/in/jvscursulim/) | [:octocat:](https://github.com/jvscursulim) | | | | [Nikolay Galkov](https://www.linkedin.com/in/nikolay-galkov-4b660656/) | [:octocat:](https://github.com/ngalkov) |
  • [Project](https://github.com/ngalkov/mlzoomcamp_capstone)
  • | | | Sergio Vechi | | | | | [Alexis Bautista ](https://www.linkedin.com/in/alexis-bautista-28ab8b14b) | [:octocat:](https://github.com/AEBU) |
  • [Project](https://github.com/AEBU/mlzoomcamp/tree/main/capstone-project)
  • |
  • [Project Time Series](https://github.com/AEBU/mlzoomcamp/tree/main/capstone-project2)
  • [Public Purchase](https://medium.com/@lexbul1020/datapipeline-con-apache-airflow-pyspark-y-neo4j-381f88842510)
  • | | [Vladimir Yesipov](https://www.linkedin.com/in/vladimiryesipov/) | [:octocat:](https://github.com/Vladimyr23) | | | Thank you very much it was really interesting to be part of the 2022 ML course. | | Hanna Zaretskaya | |
  • [Project](https://github.com/AZaretskaya/ml-zoomcamp-homeworks/tree/main/midterm_project)
  • | | | [Dheeraj Karra](https://www.linkedin.com/in/dheeraj-karra-62780253) | | | | | [Gabriel Orce](https://www.linkedin.com/in/gabriel-orce-0b240550/) | | | | | Aleksandr Chuprin | | | | | [Meriem Arab](https://www.linkedin.com/in/meriem-arab-0113861ab/) | [:octocat:](https://github.com/meriem2012arb) | | | | [Lizaveta Nazaruk](https://www.linkedin.com/in/lizaveta-nazaruk-b4aa80200/) | [:octocat:](https://github.com/xtbtds) |
  • [Project](https://github.com/xtbtds/brain_tumor_classification)
  • | | It's an adventure! | | [Gregory Morris](https://www.linkedin.com/in/gregorywaynemorris/) | [:octocat:](https://github.com/gregorywmorris) | | | | [Muhammad Awon](https://www.linkedin.com/in/muhammad-awon/) | [:octocat:](https://github.com/MuhammadAwon) | | [Twitter](https://twitter.com/Awon24) | | Mohd Faisal | [:octocat:](https://github.com/modfa) |
  • [Project](https://github.com/modfa/Capstone-Vegetable-Classification)
  • | | | [Gabriel Adeleke](https://www.linkedin.com/in/gabriel-adeleke/) | [:octocat:](https://www.github.com/tobi-ade) | | | | [Gabriel Adeleke](https://www.linkedin.com/in/gabriel-adeleke/) | [:octocat:](https://www.github.com/tobi-ade) | | | | [Hareesh Tummala](https://www.linkedin.com/in/tummala-hareesh) | [:octocat:](https://github.com/tummala-hareesh) | | | | [Taha Zafar](https://www.linkedin.com/in/tahazafar96) | [:octocat:](https://github.com/tahabinzafar) | | | This course on Machine Learning was by far the best one I've taken. It covered everything from the basics to the pro-level, and I highly recommend it to anyone who already has some prior knowledge of Data Science and wants to take their skills to the next level. | | [O J Bibby](https://www.linkedin.com/in/oliver-bibby-546471217/) | [:octocat:](https://github.com/De1iad) | | | | [Hemanthkumar Yegireddy ](https://www.linkedin.com/in/hemanth-yegireddy) | [:octocat:](https://github.com/yegireddihemanth) | | | | [Tatyana Ankudo](https://www.linkedin.com/in/ankudo/) | [:octocat:](https://github.com/tankudo) |
  • [Project](https://github.com/tankudo/ZoomCamb_2022_HomeWork)
  • | | Experienced Data Scientist with expertise in Retail, Biomedical, Pharmaceutical, and Bio-industrial applications, with project management skills. | ================================================ FILE: cohorts/2022/projects.md ================================================ # Projects See more information about projects [here](../../projects/) ## Evaluation * [Evaluation criteria](https://docs.google.com/spreadsheets/d/e/2PACX-1vQCwqAtkjl07MTW-SxWUK9GUvMQ3Pv_fF8UadcuIYLgHa0PlNu9BRWtfLgivI8xSCncQs82HDwGXSm3/pubhtml) * [Video with instructions](https://www.youtube.com/watch?v=jQ4KVYmatBU) ## Midterm Project * Project due date: 10 November 2022, 23:00 CET (Berlin time) * Submit your project here: https://forms.gle/Hnk267ue7LPyR5bs5 * Evaluation due date: 15 November 2022, 23:00 CET (Berlin time) * Evaluation assignments: [long link](https://docs.google.com/spreadsheets/d/e/2PACX-1vS5i0MbxxaPFPNX8OOP2njUkfbrt3uhiIzdxY8q-RHAl4O2RKNusaUJcVAkgCWgZdDjCBQYF1h1cVxx/pubhtml) ("midterm" tab) * Submit your evaluation here: https://forms.gle/nXcLbuCpJUbryjET8 * Feedback: [long link](https://docs.google.com/spreadsheets/d/e/2PACX-1vSvDvJu1uTSmDI0D6hnNVKdE7f447eVBxHrlJFj_iOapEarzxS0u3MAKHOQniTfIg4SrjIwT52e02XL/pubhtml) ("midterm" tab) ## Capstone 1 * Project due date: 22 December 2022, 16:00 CET (Berlin time) * Submit your project here: https://forms.gle/JvusCrgXhih1iqSt6 * Evaluation due date: 9 January 2023, 23:00 CET (Berlin time) * Evaluation assignments: [long link](https://docs.google.com/spreadsheets/d/e/2PACX-1vS5i0MbxxaPFPNX8OOP2njUkfbrt3uhiIzdxY8q-RHAl4O2RKNusaUJcVAkgCWgZdDjCBQYF1h1cVxx/pubhtml) ("capstone-1" tab) * Submit your evaluation here: https://forms.gle/1J4hJT12GiCN4p2X8 * Feedback: [long link](https://docs.google.com/spreadsheets/d/e/2PACX-1vSvDvJu1uTSmDI0D6hnNVKdE7f447eVBxHrlJFj_iOapEarzxS0u3MAKHOQniTfIg4SrjIwT52e02XL/pubhtml) ("capstone-01" tab) ## Capstone 2 * Project due date: 26 January 2023, 22:00 CET (Berlin time) * Submit your project here: https://forms.gle/rZ44sz2oHr4J178w9 * Evaluation due date: 30 January 2023, 23:00 CET (Berlin time) * Evaluation assignments: [long link](https://docs.google.com/spreadsheets/d/e/2PACX-1vS5i0MbxxaPFPNX8OOP2njUkfbrt3uhiIzdxY8q-RHAl4O2RKNusaUJcVAkgCWgZdDjCBQYF1h1cVxx/pubhtml) ("capstone-2" tab) * Submit your evaluation here: https://forms.gle/zvQ4qYkJe8c6wFAs5 * Feedback: [long link](https://docs.google.com/spreadsheets/d/e/2PACX-1vSvDvJu1uTSmDI0D6hnNVKdE7f447eVBxHrlJFj_iOapEarzxS0u3MAKHOQniTfIg4SrjIwT52e02XL/pubhtml) ("capstone-02" tab) ================================================ FILE: cohorts/2023/01-intro/homework.md ================================================ ## Homework ### Set up the environment You need to install Python, NumPy, Pandas, Matplotlib and Seaborn. For that, you can the instructions from [06-environment.md](https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/01-intro/06-environment.md). ### Question 1 What's the version of Pandas that you installed? You can get the version information using the `__version__` field: ```python pd.__version__ ``` ### Getting the data For this homework, we'll use the California Housing Prices dataset. Download it from [here](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv). You can do it with wget: ```bash wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv ``` Or just open it with your browser and click "Save as...". Now read it with Pandas. ### Question 2 How many columns are in the dataset? - 10 - 6560 - 10989 - 20640 ### Question 3 Which columns in the dataset have missing values? - `total_rooms` - `total_bedrooms` - both of the above - no empty columns in the dataset ### Question 4 How many unique values does the `ocean_proximity` column have? - 3 - 5 - 7 - 9 ### Question 5 What's the average value of the `median_house_value` for the houses located near the bay? - 49433 - 124805 - 259212 - 380440 ### Question 6 1. Calculate the average of `total_bedrooms` column in the dataset. 2. Use the `fillna` method to fill the missing values in `total_bedrooms` with the mean value from the previous step. 3. Now, calculate the average of `total_bedrooms` again. 4. Has it changed? Has it changed? > Hint: take into account only 3 digits after the decimal point. - Yes - No ### Question 7 1. Select all the options located on islands. 2. Select only columns `housing_median_age`, `total_rooms`, `total_bedrooms`. 3. Get the underlying NumPy array. Let's call it `X`. 4. Compute matrix-matrix multiplication between the transpose of `X` and `X`. To get the transpose, use `X.T`. Let's call the result `XTX`. 5. Compute the inverse of `XTX`. 6. Create an array `y` with values `[950, 1300, 800, 1000, 1300]`. 7. Multiply the inverse of `XTX` with the transpose of `X`, and then multiply the result by `y`. Call the result `w`. 8. What's the value of the last element of `w`? > **Note**: You just implemented linear regression. We'll talk about it in the next lesson. - -1.4812 - 0.001 - 5.6992 - 23.1233 ## Submit the results * Submit your results here: https://forms.gle/jneGM91mzDZ23i8HA * You can submit your solution multiple times. In this case, only the last submission will be used * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ## Deadline The deadline for submitting is 18 September 2023 (Monday), 23:00 CEST (Berlin time). After that, the form will be closed. ================================================ FILE: cohorts/2023/01-intro/homework_1.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "251d40a3", "metadata": { "id": "251d40a3" }, "source": [ "## Homework #1" ] }, { "cell_type": "markdown", "id": "b1cfc63c", "metadata": { "id": "b1cfc63c" }, "source": [ "### Set up the environment" ] }, { "cell_type": "markdown", "id": "545d3529", "metadata": { "id": "545d3529" }, "source": [ "You need to install Python, NumPy, Pandas, Matplotlib and Seaborn. For that, you can the instructions from 06-environment.md." ] }, { "cell_type": "code", "execution_count": 1, "id": "92a54c41", "metadata": { "executionInfo": { "elapsed": 706, "status": "ok", "timestamp": 1694208135401, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "92a54c41", "tags": [] }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "markdown", "id": "351c8283", "metadata": { "id": "351c8283" }, "source": [ "### Question 1" ] }, { "cell_type": "markdown", "id": "e8024830", "metadata": { "id": "e8024830" }, "source": [ "What's the version of Pandas that you installed?\n", "\n", "You can get the version information using the `__version__` field:" ] }, { "cell_type": "code", "execution_count": 2, "id": "cd014841", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 36 }, "executionInfo": { "elapsed": 8, "status": "ok", "timestamp": 1694208136053, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "cd014841", "outputId": "69d7c606-95a6-4a40-98a0-0f85927705e2", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "'2.0.3'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.__version__" ] }, { "cell_type": "markdown", "id": "4ceefa5c", "metadata": { "id": "4ceefa5c" }, "source": [ "### Getting the data" ] }, { "cell_type": "markdown", "id": "2cf7db9d", "metadata": { "id": "2cf7db9d" }, "source": [ "For this homework, we'll use the California Housing Prices dataset. Download it from here.\n", "\n", "You can do it with wget:\n", "```bash\n", "wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv\n", "```\n", "Or just open it with your browser and click \"Save as...\".\n", "\n", "Now read it with Pandas." ] }, { "cell_type": "code", "execution_count": 3, "id": "1fa83ea3", "metadata": { "executionInfo": { "elapsed": 284, "status": "ok", "timestamp": 1694208138879, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "1fa83ea3", "tags": [] }, "outputs": [], "source": [ "data = pd.read_csv(\"https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "cf2aa356", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "executionInfo": { "elapsed": 7, "status": "ok", "timestamp": 1694208139499, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "cf2aa356", "outputId": "319e25c2-3ce0-45bd-e707-8b124a62fd3d", "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_valueocean_proximity
    0-122.2337.8841.0880.0129.0322.0126.08.3252452600.0NEAR BAY
    1-122.2237.8621.07099.01106.02401.01138.08.3014358500.0NEAR BAY
    2-122.2437.8552.01467.0190.0496.0177.07.2574352100.0NEAR BAY
    3-122.2537.8552.01274.0235.0558.0219.05.6431341300.0NEAR BAY
    4-122.2537.8552.01627.0280.0565.0259.03.8462342200.0NEAR BAY
    \n", "
    " ], "text/plain": [ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n", "0 -122.23 37.88 41.0 880.0 129.0 \n", "1 -122.22 37.86 21.0 7099.0 1106.0 \n", "2 -122.24 37.85 52.0 1467.0 190.0 \n", "3 -122.25 37.85 52.0 1274.0 235.0 \n", "4 -122.25 37.85 52.0 1627.0 280.0 \n", "\n", " population households median_income median_house_value ocean_proximity \n", "0 322.0 126.0 8.3252 452600.0 NEAR BAY \n", "1 2401.0 1138.0 8.3014 358500.0 NEAR BAY \n", "2 496.0 177.0 7.2574 352100.0 NEAR BAY \n", "3 558.0 219.0 5.6431 341300.0 NEAR BAY \n", "4 565.0 259.0 3.8462 342200.0 NEAR BAY " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "markdown", "id": "aecac649", "metadata": { "id": "aecac649" }, "source": [ "### Question 2" ] }, { "cell_type": "markdown", "id": "ab65645c", "metadata": { "id": "ab65645c" }, "source": [ "How many columns are in the dataset?" ] }, { "cell_type": "code", "execution_count": 5, "id": "c73d4d30", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 286, "status": "ok", "timestamp": 1694208141779, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "c73d4d30", "outputId": "e16c4908-c136-49ff-b6a5-b9168e06f18c", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "10" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.shape[1]" ] }, { "cell_type": "markdown", "id": "b5d128d0", "metadata": { "id": "b5d128d0" }, "source": [ "### Question 3" ] }, { "cell_type": "markdown", "id": "e414e926", "metadata": { "id": "e414e926" }, "source": [ "Which columns in the dataset have missing values?" ] }, { "cell_type": "code", "execution_count": 6, "id": "7e6b2e07-871d-405c-a7aa-bc957ed4e530", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 301, "status": "ok", "timestamp": 1694208145679, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "7e6b2e07-871d-405c-a7aa-bc957ed4e530", "outputId": "6d9697ce-752f-4a9c-aebc-486be364ed88", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "longitude 0\n", "latitude 0\n", "housing_median_age 0\n", "total_rooms 0\n", "total_bedrooms 207\n", "population 0\n", "households 0\n", "median_income 0\n", "median_house_value 0\n", "ocean_proximity 0\n", "dtype: int64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.isna().sum()" ] }, { "cell_type": "markdown", "id": "ctux01eQsN2p", "metadata": { "id": "ctux01eQsN2p" }, "source": [ "`total_bedrooms`" ] }, { "cell_type": "markdown", "id": "90b3262c", "metadata": { "id": "90b3262c" }, "source": [ "### Question 4" ] }, { "cell_type": "markdown", "id": "JtB8acmV4jrf", "metadata": { "id": "JtB8acmV4jrf" }, "source": [ "How many unique values does the `ocean_proximity` column have?" ] }, { "cell_type": "code", "execution_count": 7, "id": "FYEvOXA4tM5H", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 239, "status": "ok", "timestamp": 1694208150475, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "FYEvOXA4tM5H", "outputId": "01f8a77f-adf5-43f7-cd83-92e3af063133" }, "outputs": [ { "data": { "text/plain": [ "ocean_proximity\n", "<1H OCEAN 9136\n", "INLAND 6551\n", "NEAR OCEAN 2658\n", "NEAR BAY 2290\n", "ISLAND 5\n", "Name: count, dtype: int64" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.ocean_proximity.value_counts()" ] }, { "cell_type": "code", "execution_count": 8, "id": "LCajFeoI48aU", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 238, "status": "ok", "timestamp": 1694208152021, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "LCajFeoI48aU", "outputId": "33e7c4fc-f98a-40de-9465-d10719acad05" }, "outputs": [ { "data": { "text/plain": [ "5" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.ocean_proximity.nunique()" ] }, { "cell_type": "markdown", "id": "987507a8", "metadata": { "id": "987507a8" }, "source": [ "### Question 5" ] }, { "cell_type": "markdown", "id": "n0kM9M3O3Zuz", "metadata": { "id": "n0kM9M3O3Zuz" }, "source": [ "What's the average value of the `median_house_value` for the house located near the bay?" ] }, { "cell_type": "code", "execution_count": 9, "id": "SgnkG0qUvJMd", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 237 }, "executionInfo": { "elapsed": 247, "status": "ok", "timestamp": 1694208167900, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "SgnkG0qUvJMd", "outputId": "110e64c6-859b-4a16-9f3f-3fd0b4163c6e" }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    minmeanmax
    ocean_proximity
    <1H OCEAN17500.0240084.285464500001.0
    INLAND14999.0124805.392001500001.0
    ISLAND287500.0380440.000000450000.0
    NEAR BAY22500.0259212.311790500001.0
    NEAR OCEAN22500.0249433.977427500001.0
    \n", "
    " ], "text/plain": [ " min mean max\n", "ocean_proximity \n", "<1H OCEAN 17500.0 240084.285464 500001.0\n", "INLAND 14999.0 124805.392001 500001.0\n", "ISLAND 287500.0 380440.000000 450000.0\n", "NEAR BAY 22500.0 259212.311790 500001.0\n", "NEAR OCEAN 22500.0 249433.977427 500001.0" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.groupby('ocean_proximity')['median_house_value'].agg(['min', 'mean', 'max'])" ] }, { "cell_type": "code", "execution_count": 10, "id": "McMWSfTPtqDR", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 272, "status": "ok", "timestamp": 1694208169667, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "McMWSfTPtqDR", "outputId": "a1782e85-9771-4e22-f882-85e1bcd4ab72" }, "outputs": [ { "data": { "text/plain": [ "259212.31179039303" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[data.ocean_proximity == 'NEAR BAY']['median_house_value'].mean()" ] }, { "cell_type": "markdown", "id": "a5758929", "metadata": { "id": "a5758929" }, "source": [ "### Question 6" ] }, { "cell_type": "markdown", "id": "0c359a2a", "metadata": { "id": "0c359a2a" }, "source": [ "\n", "\n", "1. Calculate the average of `total_bedrooms` column in the dataset\n", "2. Use the `fillna` method and to fill the missing values in `total_bedrooms` with the mean value from the previous step.\n", "3. Now, calcualte the average of `total_bedrooms` again.\n", "4. Has it changed?\n", "\n", "> **Note**: take into account only 3 digits after the decimal point" ] }, { "cell_type": "code", "execution_count": 11, "id": "h50zj0Na5p6y", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 277, "status": "ok", "timestamp": 1694210300971, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "h50zj0Na5p6y", "outputId": "07067b58-ce33-45f3-f784-ff689d336544" }, "outputs": [ { "data": { "text/plain": [ "537.8705525375618" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_bedrooms = data['total_bedrooms'].mean()\n", "mean_bedrooms" ] }, { "cell_type": "code", "execution_count": 12, "id": "lW-cYPtprtGX", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 246, "status": "ok", "timestamp": 1694208397959, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "lW-cYPtprtGX", "outputId": "1566f283-0337-463f-f5b2-7dc795f48114" }, "outputs": [ { "data": { "text/plain": [ "537.8705525375617" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['total_bedrooms'].fillna(mean_bedrooms).mean()" ] }, { "cell_type": "markdown", "id": "7b1263c0", "metadata": { "id": "7b1263c0" }, "source": [ "No, it's left the same." ] }, { "cell_type": "markdown", "id": "3f44769a", "metadata": { "id": "3f44769a" }, "source": [ "### Question 7" ] }, { "cell_type": "markdown", "id": "fe2faf20", "metadata": { "id": "fe2faf20" }, "source": [ "1. Select all the options located on islands.\n", "2. Select only columns `housing_median_age`, `total_rooms`, `total_bedrooms`.\n", "3. Get the underlying NumPy array. Let's call it `X`.\n", "4. Compute matrix-matrix multiplication between the transpose of `X` and `X`. To get the transpose, use `X.T`. Let's call the result `XTX`.\n", "5. Invert `XTX`.\n", "6. Create an array `y` with values `[950, 1300, 800, 1000, 1300]`.\n", "7. Multiply the inverse of `XTX` with the transpose of `X`, and then multiply the result by `y`. Call the result `w`.\n", "8. What's the value of the last element of `w`?" ] }, { "cell_type": "code", "execution_count": 14, "id": "HhziJLnz6azH", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "executionInfo": { "elapsed": 8, "status": "ok", "timestamp": 1694210142110, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "HhziJLnz6azH", "outputId": "0e8337e0-4942-4fba-c841-9d5999e5cf69" }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    housing_median_agetotal_roomstotal_bedrooms
    831427.01675.0521.0
    831552.02359.0591.0
    831652.02127.0512.0
    831752.0996.0264.0
    831829.0716.0214.0
    \n", "
    " ], "text/plain": [ " housing_median_age total_rooms total_bedrooms\n", "8314 27.0 1675.0 521.0\n", "8315 52.0 2359.0 591.0\n", "8316 52.0 2127.0 512.0\n", "8317 52.0 996.0 264.0\n", "8318 29.0 716.0 214.0" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "island_df = data[data.ocean_proximity == 'ISLAND']\n", "island_df = island_df[['housing_median_age', 'total_rooms', 'total_bedrooms']]\n", "island_df" ] }, { "cell_type": "code", "execution_count": 15, "id": "BMSgjlTV6a48", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 241, "status": "ok", "timestamp": 1694209443845, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "BMSgjlTV6a48", "outputId": "94d51bb0-019c-4180-97da-201c850da575" }, "outputs": [ { "data": { "text/plain": [ "array([[ 9.19403586e-04, -3.66412216e-05, 5.43072261e-05],\n", " [-3.66412216e-05, 8.23303633e-06, -2.77534485e-05],\n", " [ 5.43072261e-05, -2.77534485e-05, 1.00891325e-04]])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X = island_df.values\n", "XTX = X.T.dot(X)\n", "\n", "XTX_inv = np.linalg.inv(XTX)\n", "XTX_inv" ] }, { "cell_type": "code", "execution_count": 16, "id": "0AoSPilS6a7S", "metadata": { "executionInfo": { "elapsed": 5, "status": "ok", "timestamp": 1694209445937, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "0AoSPilS6a7S" }, "outputs": [], "source": [ "y = np.array([950, 1300, 800, 1000, 1300])" ] }, { "cell_type": "code", "execution_count": 17, "id": "dz3BmJfIvfdp", "metadata": { "executionInfo": { "elapsed": 3, "status": "ok", "timestamp": 1694209446791, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "dz3BmJfIvfdp" }, "outputs": [], "source": [ "w = (XTX_inv @ X.T) @ y" ] }, { "cell_type": "code", "execution_count": 18, "id": "5e62860c-4afe-4a33-942f-ec238924b027", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "array([23.12330961, -1.48124183, 5.69922946])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w" ] }, { "cell_type": "code", "execution_count": 19, "id": "ouoIQygN6bD3", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 5, "status": "ok", "timestamp": 1694209447851, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "ouoIQygN6bD3", "outputId": "895ebf5f-51b4-4ec5-ae5b-dce89abb2cb5" }, "outputs": [ { "data": { "text/plain": [ "5.6992294550655656" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w[2]" ] }, { "cell_type": "markdown", "id": "70e3eaa9", "metadata": { "id": "70e3eaa9" }, "source": [ "> **Note**: we just implemented normal equation\n", "\n", "\n", "$$w = (X^T X)^{-1} X^T y$$\n", "\n", "\n", "We'll talk about it more in the next week (Machine Learning for Regression)" ] } ], "metadata": { "colab": { "provenance": [] }, "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.10.12" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: cohorts/2023/02-regression/homework.md ================================================ ## Homework > Note: sometimes your answer doesn't match one of > the options exactly. That's fine. > Select the option that's closest to your solution. > If it's exactly in between two options, select the higher value. ### Dataset In this homework, we will use the California Housing Prices from [Kaggle](https://www.kaggle.com/datasets/camnugent/california-housing-prices). Here's a wget-able [link](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv): ```bash wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv ``` The goal of this homework is to create a regression model for predicting housing prices (column `'median_house_value'`). ### EDA * Load the data. * Look at the `median_house_value` variable. Does it have a long tail? ### Preparing the dataset For this homework, we only want to use a subset of data. First, keep only the records where `ocean_proximity` is either `'<1H OCEAN'` or `'INLAND'` Next, use only the following columns: * `'latitude'`, * `'longitude'`, * `'housing_median_age'`, * `'total_rooms'`, * `'total_bedrooms'`, * `'population'`, * `'households'`, * `'median_income'`, * `'median_house_value'` ### Question 1 There's one feature with missing values. What is it? * `total_rooms` * `total_bedrooms` * `population` * `households` ### Question 2 What's the median (50% percentile) for variable `'population'`? - 995 - 1095 - 1195 - 1295 ### Prepare and split the dataset * Shuffle the dataset (the filtered one you created above), use seed `42`. * Split your data in train/val/test sets, with 60%/20%/20% distribution. * Apply the log transformation to the `median_house_value` variable using the `np.log1p()` function. ### Question 3 * We need to deal with missing values for the column from Q1. * We have two options: fill it with 0 or with the mean of this variable. * Try both options. For each, train a linear regression model without regularization using the code from the lessons. * For computing the mean, use the training only! * Use the validation dataset to evaluate the models and compare the RMSE of each option. * Round the RMSE scores to 2 decimal digits using `round(score, 2)` * Which option gives better RMSE? Options: - With 0 - With mean - Both are equally good ### Question 4 * Now let's train a regularized linear regression. * For this question, fill the NAs with 0. * Try different values of `r` from this list: `[0, 0.000001, 0.0001, 0.001, 0.01, 0.1, 1, 5, 10]`. * Use RMSE to evaluate the model on the validation dataset. * Round the RMSE scores to 2 decimal digits. * Which `r` gives the best RMSE? If there are multiple options, select the smallest `r`. Options: - 0 - 0.000001 - 0.001 - 0.0001 ### Question 5 * We used seed 42 for splitting the data. Let's find out how selecting the seed influences our score. * Try different seed values: `[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]`. * For each seed, do the train/validation/test split with 60%/20%/20% distribution. * Fill the missing values with 0 and train a model without regularization. * For each seed, evaluate the model on the validation dataset and collect the RMSE scores. * What's the standard deviation of all the scores? To compute the standard deviation, use `np.std`. * Round the result to 3 decimal digits (`round(std, 3)`) What's the value of std? - 0.5 - 0.05 - 0.005 - 0.0005 > Note: Standard deviation shows how different the values are. > If it's low, then all values are approximately the same. > If it's high, the values are different. > If standard deviation of scores is low, then our model is *stable*. ### Question 6 * Split the dataset like previously, use seed 9. * Combine train and validation datasets. * Fill the missing values with 0 and train a model with `r=0.001`. * What's the RMSE on the test dataset? Options: - 0.13 - 0.23 - 0.33 - 0.43 ## Submit the results - Submit your results here: https://forms.gle/nNUTLzz3F9KiFHNp9 - If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. - You can submit your solution multiple times. In this case, only the last submission will be used ## Deadline The deadline for submitting is September 25 (Monday), 23:00 CET. After that the form will be closed. ================================================ FILE: cohorts/2023/03-classification/homework.md ================================================ ## Homework > Note: sometimes your answer doesn't match one of the options exactly. That's fine. Select the option that's closest to your solution. If it's exactly in between two options, select the higher value. Solution: [homework_3.ipynb](homework_3.ipynb) ### Dataset In this homework, we will use the Car price dataset. Download it from [here](https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv). Or you can do it with `wget`: ```bash wget https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv ``` We'll keep working with the `MSRP` variable, and we'll transform it to a classification task. ### Features For the rest of the homework, you'll need to use only these columns: * `Make`, * `Model`, * `Year`, * `Engine HP`, * `Engine Cylinders`, * `Transmission Type`, * `Vehicle Style`, * `highway MPG`, * `city mpg`, * `MSRP` ### Data preparation * Select only the features from above and transform their names using the next line: ``` data.columns = data.columns.str.replace(' ', '_').str.lower() ``` * Fill in the missing values of the selected features with 0. * Rename `MSRP` variable to `price`. ### Question 1 What is the most frequent observation (mode) for the column `transmission_type`? - `AUTOMATIC` - `MANUAL` - `AUTOMATED_MANUAL` - `DIRECT_DRIVE` ### Question 2 Create the [correlation matrix](https://www.google.com/search?q=correlation+matrix) for the numerical features of your dataset. In a correlation matrix, you compute the correlation coefficient between every pair of features in the dataset. What are the two features that have the biggest correlation in this dataset? - `engine_hp` and `year` - `engine_hp` and `engine_cylinders` - `highway_mpg` and `engine_cylinders` - `highway_mpg` and `city_mpg` ### Make `price` binary * Now we need to turn the `price` variable from numeric into a binary format. * Let's create a variable `above_average` which is `1` if the `price` is above its mean value and `0` otherwise. ### Split the data * Split your data in train/val/test sets with 60%/20%/20% distribution. * Use Scikit-Learn for that (the `train_test_split` function) and set the seed to `42`. * Make sure that the target value (`above_average`) is not in your dataframe. ### Question 3 * Calculate the mutual information score between `above_average` and other categorical variables in our dataset. Use the training set only. * Round the scores to 2 decimals using `round(score, 2)`. Which of these variables has the lowest mutual information score? - `make` - `model` - `transmission_type` - `vehicle_style` ### Question 4 * Now let's train a logistic regression. * Remember that we have several categorical variables in the dataset. Include them using one-hot encoding. * Fit the model on the training dataset. - To make sure the results are reproducible across different versions of Scikit-Learn, fit the model with these parameters: - `model = LogisticRegression(solver='liblinear', C=10, max_iter=1000, random_state=42)` * Calculate the accuracy on the validation dataset and round it to 2 decimal digits. What accuracy did you get? - 0.60 - 0.72 - 0.84 - 0.95 ### Question 5 * Let's find the least useful feature using the *feature elimination* technique. * Train a model with all these features (using the same parameters as in Q4). * Now exclude each feature from this set and train a model without it. Record the accuracy for each model. * For each feature, calculate the difference between the original accuracy and the accuracy without the feature. Which of following feature has the smallest difference? - `year` - `engine_hp` - `transmission_type` - `city_mpg` > **Note**: the difference doesn't have to be positive ### Question 6 * For this question, we'll see how to use a linear regression model from Scikit-Learn. * We'll need to use the original column `price`. Apply the logarithmic transformation to this column. * Fit the Ridge regression model on the training data with a solver `'sag'`. Set the seed to `42`. * This model also has a parameter `alpha`. Let's try the following values: `[0, 0.01, 0.1, 1, 10]`. * Round your RMSE scores to 3 decimal digits. Which of these alphas leads to the best RMSE on the validation set? - 0 - 0.01 - 0.1 - 1 - 10 > **Note**: If there are multiple options, select the smallest `alpha`. ## Submit the results * Submit your results here: https://forms.gle/FFfNjEP4jU4rxnL26 * You can submit your solution multiple times. In this case, only the last submission will be used * If your answer doesn't match options exactly, select the closest one ## Deadline The deadline for submitting is 2 October (Monday), 23:00 CEST. After that, the form will be closed. ================================================ FILE: cohorts/2023/03-classification/homework_3.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "fccbfd28", "metadata": {}, "source": [ "# Session #3 Homework" ] }, { "cell_type": "markdown", "id": "66c4c02f", "metadata": {}, "source": [ "## Dataset" ] }, { "cell_type": "markdown", "id": "90ef9b3e", "metadata": {}, "source": [ "In this homework, we will use the Car price dataset. Download it from [here](https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv).\n", "\n", "We'll keep working with the `MSRP` variable, and we'll transform it to a classification task. " ] }, { "cell_type": "code", "execution_count": 55, "id": "4c5da8b8", "metadata": { "tags": [] }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.linear_model import LogisticRegression, Ridge\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import mutual_info_score, accuracy_score, mean_squared_error\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 56, "id": "82357452-9412-4b80-8081-2ee3f03004c5", "metadata": {}, "outputs": [], "source": [ "import warnings\n", "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "code", "execution_count": 57, "id": "f77e0e23", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "(11914, 16)" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = pd.read_csv('https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv')\n", "data.shape" ] }, { "cell_type": "code", "execution_count": 58, "id": "184ee334-fda2-429a-a39e-39ce723bef09", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 11914 entries, 0 to 11913\n", "Data columns (total 16 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 Make 11914 non-null object \n", " 1 Model 11914 non-null object \n", " 2 Year 11914 non-null int64 \n", " 3 Engine Fuel Type 11911 non-null object \n", " 4 Engine HP 11845 non-null float64\n", " 5 Engine Cylinders 11884 non-null float64\n", " 6 Transmission Type 11914 non-null object \n", " 7 Driven_Wheels 11914 non-null object \n", " 8 Number of Doors 11908 non-null float64\n", " 9 Market Category 8172 non-null object \n", " 10 Vehicle Size 11914 non-null object \n", " 11 Vehicle Style 11914 non-null object \n", " 12 highway MPG 11914 non-null int64 \n", " 13 city mpg 11914 non-null int64 \n", " 14 Popularity 11914 non-null int64 \n", " 15 MSRP 11914 non-null int64 \n", "dtypes: float64(3), int64(5), object(8)\n", "memory usage: 1.5+ MB\n" ] } ], "source": [ "data.info()" ] }, { "cell_type": "code", "execution_count": 59, "id": "a85dbe79", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    MakeModelYearEngine Fuel TypeEngine HPEngine CylindersTransmission TypeDriven_WheelsNumber of DoorsMarket CategoryVehicle SizeVehicle Stylehighway MPGcity mpgPopularityMSRP
    0BMW1 Series M2011premium unleaded (required)335.06.0MANUALrear wheel drive2.0Factory Tuner,Luxury,High-PerformanceCompactCoupe2619391646135
    1BMW1 Series2011premium unleaded (required)300.06.0MANUALrear wheel drive2.0Luxury,PerformanceCompactConvertible2819391640650
    2BMW1 Series2011premium unleaded (required)300.06.0MANUALrear wheel drive2.0Luxury,High-PerformanceCompactCoupe2820391636350
    3BMW1 Series2011premium unleaded (required)230.06.0MANUALrear wheel drive2.0Luxury,PerformanceCompactCoupe2818391629450
    4BMW1 Series2011premium unleaded (required)230.06.0MANUALrear wheel drive2.0LuxuryCompactConvertible2818391634500
    \n", "
    " ], "text/plain": [ " Make Model Year Engine Fuel Type Engine HP \\\n", "0 BMW 1 Series M 2011 premium unleaded (required) 335.0 \n", "1 BMW 1 Series 2011 premium unleaded (required) 300.0 \n", "2 BMW 1 Series 2011 premium unleaded (required) 300.0 \n", "3 BMW 1 Series 2011 premium unleaded (required) 230.0 \n", "4 BMW 1 Series 2011 premium unleaded (required) 230.0 \n", "\n", " Engine Cylinders Transmission Type Driven_Wheels Number of Doors \\\n", "0 6.0 MANUAL rear wheel drive 2.0 \n", "1 6.0 MANUAL rear wheel drive 2.0 \n", "2 6.0 MANUAL rear wheel drive 2.0 \n", "3 6.0 MANUAL rear wheel drive 2.0 \n", "4 6.0 MANUAL rear wheel drive 2.0 \n", "\n", " Market Category Vehicle Size Vehicle Style \\\n", "0 Factory Tuner,Luxury,High-Performance Compact Coupe \n", "1 Luxury,Performance Compact Convertible \n", "2 Luxury,High-Performance Compact Coupe \n", "3 Luxury,Performance Compact Coupe \n", "4 Luxury Compact Convertible \n", "\n", " highway MPG city mpg Popularity MSRP \n", "0 26 19 3916 46135 \n", "1 28 19 3916 40650 \n", "2 28 20 3916 36350 \n", "3 28 18 3916 29450 \n", "4 28 18 3916 34500 " ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "markdown", "id": "c44cc1a3", "metadata": {}, "source": [ "## Features" ] }, { "cell_type": "markdown", "id": "71b1cb11", "metadata": {}, "source": [ "For the rest of the homework, you'll need to use only these columns:\n", "\n", "* `Make`,\n", "* `Model`,\n", "* `Year`,\n", "* `Engine HP`,\n", "* `Engine Cylinders`,\n", "* `Transmission Type`,\n", "* `Vehicle Style`,\n", "* `highway MPG`,\n", "* `city mpg`,\n", "* `MSRP`\n", "\n", "Select only them and fill in the missing values with 0." ] }, { "cell_type": "code", "execution_count": 60, "id": "a0d5f4a1", "metadata": { "tags": [] }, "outputs": [], "source": [ "features = [\n", " 'Make', 'Model', 'Year', 'Engine HP', 'Engine Cylinders',\n", " 'Transmission Type', 'Vehicle Style', 'highway MPG', 'city mpg', 'MSRP'\n", "]" ] }, { "cell_type": "code", "execution_count": 61, "id": "2309226b", "metadata": { "tags": [] }, "outputs": [], "source": [ "data = data[features]" ] }, { "cell_type": "code", "execution_count": 62, "id": "78c91ca8-2fc1-4490-a418-fd3ef9ab2545", "metadata": { "tags": [] }, "outputs": [], "source": [ "data = data.rename(columns={'MSRP': 'price'})\n", "data.columns = data.columns.str.replace(' ', '_').str.lower()" ] }, { "cell_type": "code", "execution_count": 63, "id": "bd1d6b40", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 11914 entries, 0 to 11913\n", "Data columns (total 10 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 make 11914 non-null object \n", " 1 model 11914 non-null object \n", " 2 year 11914 non-null int64 \n", " 3 engine_hp 11845 non-null float64\n", " 4 engine_cylinders 11884 non-null float64\n", " 5 transmission_type 11914 non-null object \n", " 6 vehicle_style 11914 non-null object \n", " 7 highway_mpg 11914 non-null int64 \n", " 8 city_mpg 11914 non-null int64 \n", " 9 price 11914 non-null int64 \n", "dtypes: float64(2), int64(4), object(4)\n", "memory usage: 930.9+ KB\n" ] } ], "source": [ "data.info()" ] }, { "cell_type": "code", "execution_count": 64, "id": "251aae25", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "make 48\n", "model 915\n", "year 28\n", "engine_hp 356\n", "engine_cylinders 9\n", "transmission_type 5\n", "vehicle_style 16\n", "highway_mpg 59\n", "city_mpg 69\n", "price 6049\n", "dtype: int64" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.nunique()" ] }, { "cell_type": "code", "execution_count": 65, "id": "d3c62b3c", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "make 0\n", "model 0\n", "year 0\n", "engine_hp 69\n", "engine_cylinders 30\n", "transmission_type 0\n", "vehicle_style 0\n", "highway_mpg 0\n", "city_mpg 0\n", "price 0\n", "dtype: int64" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.isna().sum()" ] }, { "cell_type": "code", "execution_count": 66, "id": "080ab3b7", "metadata": { "tags": [] }, "outputs": [], "source": [ "data['engine_hp'] = data['engine_hp'].fillna(0)\n", "data['engine_cylinders'] = data['engine_cylinders'].fillna(0)" ] }, { "cell_type": "code", "execution_count": 67, "id": "0c555045", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "make 0\n", "model 0\n", "year 0\n", "engine_hp 0\n", "engine_cylinders 0\n", "transmission_type 0\n", "vehicle_style 0\n", "highway_mpg 0\n", "city_mpg 0\n", "price 0\n", "dtype: int64" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.isnull().sum()" ] }, { "cell_type": "code", "execution_count": 68, "id": "5fda1369-8d77-4c1b-b73b-b21595e7db50", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    makemodelyearengine_hpengine_cylinderstransmission_typevehicle_stylehighway_mpgcity_mpgprice
    0BMW1 Series M2011335.06.0MANUALCoupe261946135
    1BMW1 Series2011300.06.0MANUALConvertible281940650
    2BMW1 Series2011300.06.0MANUALCoupe282036350
    3BMW1 Series2011230.06.0MANUALCoupe281829450
    4BMW1 Series2011230.06.0MANUALConvertible281834500
    .................................
    11909AcuraZDX2012300.06.0AUTOMATIC4dr Hatchback231646120
    11910AcuraZDX2012300.06.0AUTOMATIC4dr Hatchback231656670
    11911AcuraZDX2012300.06.0AUTOMATIC4dr Hatchback231650620
    11912AcuraZDX2013300.06.0AUTOMATIC4dr Hatchback231650920
    11913LincolnZephyr2006221.06.0AUTOMATICSedan261728995
    \n", "

    11914 rows × 10 columns

    \n", "
    " ], "text/plain": [ " make model year engine_hp engine_cylinders \\\n", "0 BMW 1 Series M 2011 335.0 6.0 \n", "1 BMW 1 Series 2011 300.0 6.0 \n", "2 BMW 1 Series 2011 300.0 6.0 \n", "3 BMW 1 Series 2011 230.0 6.0 \n", "4 BMW 1 Series 2011 230.0 6.0 \n", "... ... ... ... ... ... \n", "11909 Acura ZDX 2012 300.0 6.0 \n", "11910 Acura ZDX 2012 300.0 6.0 \n", "11911 Acura ZDX 2012 300.0 6.0 \n", "11912 Acura ZDX 2013 300.0 6.0 \n", "11913 Lincoln Zephyr 2006 221.0 6.0 \n", "\n", " transmission_type vehicle_style highway_mpg city_mpg price \n", "0 MANUAL Coupe 26 19 46135 \n", "1 MANUAL Convertible 28 19 40650 \n", "2 MANUAL Coupe 28 20 36350 \n", "3 MANUAL Coupe 28 18 29450 \n", "4 MANUAL Convertible 28 18 34500 \n", "... ... ... ... ... ... \n", "11909 AUTOMATIC 4dr Hatchback 23 16 46120 \n", "11910 AUTOMATIC 4dr Hatchback 23 16 56670 \n", "11911 AUTOMATIC 4dr Hatchback 23 16 50620 \n", "11912 AUTOMATIC 4dr Hatchback 23 16 50920 \n", "11913 AUTOMATIC Sedan 26 17 28995 \n", "\n", "[11914 rows x 10 columns]" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data" ] }, { "cell_type": "markdown", "id": "9578a57d", "metadata": {}, "source": [ "## Question 1" ] }, { "cell_type": "markdown", "id": "59dd9bb7", "metadata": {}, "source": [ "What is the most frequent observation (mode) for the column `transmission_type`?" ] }, { "cell_type": "code", "execution_count": 69, "id": "446d9b3c-234d-43e1-8d3b-9f153666b77a", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    makemodeltransmission_typevehicle_style
    count11914119141191411914
    unique48915516
    topChevroletSilverado 1500AUTOMATICSedan
    freq112315682663048
    \n", "
    " ], "text/plain": [ " make model transmission_type vehicle_style\n", "count 11914 11914 11914 11914\n", "unique 48 915 5 16\n", "top Chevrolet Silverado 1500 AUTOMATIC Sedan\n", "freq 1123 156 8266 3048" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.describe(include=[\"O\"])" ] }, { "cell_type": "code", "execution_count": 70, "id": "8b501721", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "transmission_type\n", "AUTOMATIC 8266\n", "MANUAL 2935\n", "AUTOMATED_MANUAL 626\n", "DIRECT_DRIVE 68\n", "UNKNOWN 19\n", "Name: count, dtype: int64" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['transmission_type'].value_counts()" ] }, { "cell_type": "markdown", "id": "b3bbb63e", "metadata": {}, "source": [ "## Question 2" ] }, { "cell_type": "markdown", "id": "f8110894", "metadata": {}, "source": [ "* Create the correlation matrix for the numerical features of your dataset\n", "* In a correlation matrix, you compute the correlation coefficient between every pair of features in the dataset\n", "* What are the two features that have the biggest correlation in this dataset?" ] }, { "cell_type": "code", "execution_count": 71, "id": "05efe7be-bb6f-4fc3-9a97-eca9a93ae42a", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    yearengine_hpengine_cylindershighway_mpgcity_mpg
    count11914.00000011914.00000011914.00000011914.00000011914.000000
    mean2010.384338247.9417495.61465526.63748519.733255
    std7.579740110.5076691.8005548.8630018.987798
    min1990.0000000.0000000.00000012.0000007.000000
    25%2007.000000170.0000004.00000022.00000016.000000
    50%2015.000000225.0000006.00000026.00000018.000000
    75%2016.000000300.0000006.00000030.00000022.000000
    max2017.0000001001.00000016.000000354.000000137.000000
    \n", "
    " ], "text/plain": [ " year engine_hp engine_cylinders highway_mpg \\\n", "count 11914.000000 11914.000000 11914.000000 11914.000000 \n", "mean 2010.384338 247.941749 5.614655 26.637485 \n", "std 7.579740 110.507669 1.800554 8.863001 \n", "min 1990.000000 0.000000 0.000000 12.000000 \n", "25% 2007.000000 170.000000 4.000000 22.000000 \n", "50% 2015.000000 225.000000 6.000000 26.000000 \n", "75% 2016.000000 300.000000 6.000000 30.000000 \n", "max 2017.000000 1001.000000 16.000000 354.000000 \n", "\n", " city_mpg \n", "count 11914.000000 \n", "mean 19.733255 \n", "std 8.987798 \n", "min 7.000000 \n", "25% 16.000000 \n", "50% 18.000000 \n", "75% 22.000000 \n", "max 137.000000 " ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_numeric = data.copy()\n", "data_numeric = data_numeric.drop(['make', 'model', 'transmission_type', 'vehicle_style', 'price'], axis=1)\n", "data_numeric.describe()" ] }, { "cell_type": "code", "execution_count": 72, "id": "d786b3f1", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    yearengine_hpengine_cylindershighway_mpgcity_mpg
    year1.0000000.338714-0.0407080.2582400.198171
    engine_hp0.3387141.0000000.774851-0.415707-0.424918
    engine_cylinders-0.0407080.7748511.000000-0.614541-0.587306
    highway_mpg0.258240-0.415707-0.6145411.0000000.886829
    city_mpg0.198171-0.424918-0.5873060.8868291.000000
    \n", "
    " ], "text/plain": [ " year engine_hp engine_cylinders highway_mpg city_mpg\n", "year 1.000000 0.338714 -0.040708 0.258240 0.198171\n", "engine_hp 0.338714 1.000000 0.774851 -0.415707 -0.424918\n", "engine_cylinders -0.040708 0.774851 1.000000 -0.614541 -0.587306\n", "highway_mpg 0.258240 -0.415707 -0.614541 1.000000 0.886829\n", "city_mpg 0.198171 -0.424918 -0.587306 0.886829 1.000000" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_numeric.corr()" ] }, { "cell_type": "code", "execution_count": 73, "id": "0229872d", "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "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9HQ7gIpBCRERERHRa27o0KEYOnSo2nWxsbGlbrtixQrtd+gpDEqIiIiIiLTsJUqUvBI40Z2IiIiIiHSKmRIiIiIiIi17meaUvAoYlBARERERaRljEs1w+BYREREREekUMyVERERERFrG4VuaYVBCZdp/Tdc9oGfV2kXXPaDn4VJJ1z2gZ3U1Q9c9oOdhwHEkRC8cgxIiIiIiIi1jokQz/C6AiIiIiIh0ipkSIiIiIiIt45wSzTBTQkREREREOsVMCRERERGRljFRohkGJUREREREWsbhW5rh8C0iIiIiItIpZkqIiIiIiLSMiRLNMFNCREREREQ6xUwJEREREZGWcU6JZpgpISIiIiIinWKmhIiIiIhIy5go0QwzJUREREREpFPMlBARERERaRnnlGiGQQkRERERkZYxJtEMh28REREREZFOMVNCRERERKRlHL6lGWZKiIiIiIhIp5gpISIiIiLSMiZKNMNMCRERERER6RQzJUREREREWsY5JZphpoSIiIiIiHSKmRIiIiIiIi1jokQzDEqIiIiIiLSMw7c0w+FbRERERESkU8yUEBERERFpGTMlmmGmhIiIiIiIdIqZEiIiIiIiLWOiRDPMlBARERERkU4xU0JEREREpGWcU6IZZkqIiIiIiEinmCkhIiIiItIyJko0w0wJERERERHpFDMlRERERERaxkyJZhiUEBERERFpGSe6a4bDt4iIiIiISKeYKSEiIiIi0jImSjTDTAkREREREenUSxmUhIaGolOnTrruRrk93d+goCB89tlnz9XmlStXIJPJkJCQ8FztEBEREdGLJ0TFLq+blzIomTdvHlasWKHrbjyz3377DZMmTdJ1N4iIiIiIAAALFy6Ek5MTFAoF/Pz8EBcXV2LdpUuXolmzZqhUqRIqVaqE4ODgUutrw0sZlFhaWsLKykrX3Xhm1tbWMDc313U3kJeXp+suEBEREb2RRAUvmli3bh0iIiIQFRWFEydOoGHDhggJCUFqaqra+rGxsejRowf27NmDw4cPw9HREW3atMGNGzc03HP5aRyUKJVKREdHo2bNmjA2NkbDhg3x66+/Anh8ADKZDDExMfD19YWJiQkCAgKQlJSk0sbkyZNhZ2cHc3NzDBgwAKNHj4anp6e0Xt1wqGHDhmHkyJGwtraGg4MDxo8fr9Jmeno6BgwYAFtbW1hYWKBly5Y4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lJQUAJCmEFQEjYISAJg0aRJsbW0RHR2NS5cuwcrKCt7e3vjyyy/LNRypV69euHTpEkaMGIGcnBx07doVoaGhz/WDLDKZDFu3bsWYMWMQFhaGO3fuwMHBAc2bNy82qUedoKAgrF+/HpMmTcK0adNgYWGB5s2bq9SpXbs2AgICkJaWBj8/v2fuqzpmZmb4888/8dFHH8HLywvu7u6YPn063n//falO1apVcfDgQYwaNQpt2rRBbm4uatSogbZt20JPr+SEl5WVFaZNm4aIiAgUFhaiQYMG+PPPP1G5cmWtHgMRERERvZy6deuGO3fuYNy4cUhJSYGnpye2bdsmfU6+du2ayufJ7777Dnl5ecWmK6ibSK8tMiF0/0P1rVu3hoODA3788Uddd6VEQgjUrl0bgwcPRkREhK6780L1+m2QrrtAz2hiC133gJ6HSyVd94CelWxC2XXo5WXwUv60NJVX/tjFuu4CAGDcnor9/DSxxctxnNqicabkeWVnZ2PRokUICQmBvr4+1q5dK03CflnduXMHP//8M1JSUjT6bRIiIiIiIirbCw9KioZaTZkyBTk5OXB1dcWGDRsq9L7H9erVw9WrV9WuW7x4MXr16lXq9nZ2drCxscGSJUtQqRK/uiQiIiKi0ul8KNIr5oUHJcbGxti1a9cL3efWrVuRn5+vdl155py8BCPciIiIiOgVwo+PmnnhQYkulOeuYEREREREpBtvRFBCRERERPQiMVGiGd5fgoiIiIiIdIqZEiIiIiIiLeOcEs0wU0JERERERDrFTAkRERERkZYxUaIZZkqIiIiIiEinmCkhIiIiItIyzinRDIMSIiIiIiItY0yiGQ7fIiIiIiIinWKmhIiIiIhIyzh8SzPMlBARERERkU4xU0JEREREpGVMlGiGmRIiIiIiItIpZkqIiIiIiLSMc0o0w0wJERERERHpFDMlRERERERaxkSJZhiUEBERERFpGYdvaYbDt4iIiIiISKeYKSEiIiIi0jImSjTDTAkREREREekUMyVERERERFrGOSWaYaaEiIiIiIh0ipkSIiIiIiItY6JEM8yUEBERERGRTjFTQkRERESkZZxTohkGJUREREREWsaYRDMcvkVERERERDrFTAkRERERkZZx+JZmmCkhIiIiIiKdYqaEiIiIiEjLmCnRDDMlRERERESkU8yUEBERERFpGRMl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CQmBXC7Hpk2boFAoyncQT+DwLSIiIiIiLXsVf6fEzc0Nbdu2RXh4OOLi4nDw4EEMHToU3bt3l+68dePGDdStWxdxcXEAHgckbdq0wcOHD/HDDz8gMzMTKSkpSElJQWFhYbn3zUwJEREREZGWvYq3BAaA1atXY+jQoWjVqhX09PTw/vvvY/78+dL6/Px8JCUlITs7GwBw4sQJ6c5ctWrVUmnr8uXLcHJyKtd+GZQQEREREREAwNraGmvWrClxvZOTE8QTqZqgoCCVx8+KQQkRERERkZZV9C2BXzecU0JERERERDrFTAkRERERkZYxUaIZZkqIiIiIiEinmCkhIiIiItIyzinRDDMlRERERESkU8yUEBERERFpGRMlmmFQQkRERESkZRy+pRkO3yIiIiIiIp1ipoSIiIiISMuYKNEMMyVERERERKRTzJQQEREREWkZ55RohpkSIiIiIiLSKWZKiIiIiIi0jIkSzTBTQkREREREOsVMCRERERGRlnFOiWYYlBARERERaRljEs1w+BYREREREekUMyVERERERFrG4VuaYaaEiIiIiIh0ipkSKlN2ga57QM+KX9K82gz4tdEr636OrntAz6OSQtc9oNcB/wdrhv/yiIiIiIhIp5gpISIiIiLSMs4p0QwzJUREREREpFPMlBARERERaRkTJZphpoSIiIiIiHSKmRIiIiIiIi3jnBLNMCghIiIiItIyxiSa4fAtIiIiIiLSKWZKiIiIiIi0jMO3NMNMCRERERER6RQzJUREREREWsZEiWaYKSEiIiIiIp1ipoSIiIiISMs4p0QzzJQQEREREZFOMVNCRERERKRlTJRohkEJEREREZGWcfiWZjh8i4iIiIiIdIqZEiIiIiIiLWOmRDPMlBARERERkU4xU0JEREREpGVMlGiGmRIiIiIiItIpZkqIiIiIiLSMmRLNMFNCREREREQ6xUwJEREREZGW8e5bmmFQQkRERESkZYxJNMPhW0REREREBABIS0tDr169YGFhASsrK/Tv3x9ZWVnl2lYIgXbt2kEmk+H333/XaL8MSoiIiIiItEyIil0qSq9evXD27Fns3LkTmzdvxr59+zBw4MBybTt37lzIZLJn2i+HbxERERERERITE7Ft2zYcO3YMvr6+AIAFCxagffv2mDlzJqpWrVritgkJCZg1axaOHz+OKlWqaLxvZkqI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fTpcXV1V1tWrVw9Xr15Vu93ixYvRq1evCutXSkoKxo0bh5SUFFSpUgVdunQp9svwRERERKR9HIukGQYlWvDkjyw+bevWrcjPz1e7zt7e/pn3WZ5RdyNHjsTIkSOfeR9ERERERC8Cg5IKVqNGDV13gYiIiIheMCZKNMO7bxERERERkU4xU0JEREREpGWcU6IZZkqIiIiIiEinmCkhIiIiItIyJko0w0wJERERERHpFDMlRERERERaxjklmmFQQkRERESkZYxJNMPhW0REREREpFPMlBARERERaRmHb2mGmRIiIiIiItIpZkqIiIiIiLSMiRLNMFNCREREREQ6xUwJEREREZGWcU6JZpgpISIiIiIinWKmhIiIiIhIy5go0QyDEiIiIiIiLePwLc1w+BYREREREekUMyVERERERFrGRIlmmCkhIiIiIiKdYqaEiIiIiEjLOKdEM8yUEBERERGRTjFTQkRERESkZUyUaIaZEiIiIiIi0ilmSoiIiIiItIxzSjTDTAkREREREekUMyVERERERFrGRIlmGJQQEREREWkZh29phsO3iIiIiIhIp5gpISIiIiLSMiZKNMNMCRERERERAQDS0tLQq1cvWFhYwMrKCv3790dWVlaZ2x0+fBgtW7aEqakpLCws0Lx5czx69Kjc+2VQQkRERESkZUJU7FJRevXqhbNnz2Lnzp3YvHkz9u3bh4EDB5a6zeHDh9G2bVu0adMGcXFxOHbsGIYOHQo9vfKHGhy+RURERERESExMxLZt23Ds2DH4+voCABYsWID27dtj5syZqFq1qtrthg8fjmHDhmH06NFSmaurq0b7ZqaEiIiIiEjLRAUvubm5yMzMVFlyc3Ofq8+HDx+GlZWVFJAAQHBwMPT09HD06FG126SmpuLo0aOws7NDQEAA7O3tERgYiAMHDmi0bwYlRERERESvmOjoaFhaWqos0dHRz9VmSkoK7OzsVMoMDAxgbW2NlJQUtdtcunQJADB+/HiEh4dj27Zt8Pb2RqtWrXDhwoVy75tBCRERERGRllX0nJLIyEhkZGSoLJGRkWr7Mnr0aMhkslKXc+fOPdNxKpVKAMCgQYMQFhYGLy8vzJkzB66urli2bFm52+GcEiIiIiIiLavoWwLL5XLI5fJy1f38888RGhpaah1nZ2c4ODggNTVVpbygoABpaWlwcHBQu12VKlUA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", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(9, 6))\n", "sns.heatmap(data_numeric.corr(), cmap=\"summer\", annot=True, fmt='.3f')\n", "plt.title('Heatmap showing correlations between numerical data')\n", "plt.show();" ] }, { "cell_type": "code", "execution_count": 74, "id": "aa29d7f1-8e5c-4669-95c6-68054735ebb8", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "year year 1.000000\n", "engine_hp engine_hp 1.000000\n", "highway_mpg highway_mpg 1.000000\n", "engine_cylinders engine_cylinders 1.000000\n", "city_mpg city_mpg 1.000000\n", " highway_mpg 0.886829\n", "highway_mpg city_mpg 0.886829\n", "engine_hp engine_cylinders 0.774851\n", "engine_cylinders engine_hp 0.774851\n", "engine_hp year 0.338714\n", "year engine_hp 0.338714\n", " highway_mpg 0.258240\n", "highway_mpg year 0.258240\n", "city_mpg year 0.198171\n", "year city_mpg 0.198171\n", " engine_cylinders -0.040708\n", "engine_cylinders year -0.040708\n", "highway_mpg engine_hp -0.415707\n", "engine_hp highway_mpg -0.415707\n", " city_mpg -0.424918\n", "city_mpg engine_hp -0.424918\n", " engine_cylinders -0.587306\n", "engine_cylinders city_mpg -0.587306\n", " highway_mpg -0.614541\n", "highway_mpg engine_cylinders -0.614541\n", "dtype: float64" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_numeric.corr().unstack().sort_values(ascending = False)" ] }, { "cell_type": "markdown", "id": "5fdd0cfe-6180-49bf-9ca6-9ce64126b005", "metadata": {}, "source": [ "`highway_mpg` and `city_mpg`" ] }, { "cell_type": "markdown", "id": "80bbe309", "metadata": {}, "source": [ "## Make price binary" ] }, { "cell_type": "markdown", "id": "3fb1e328", "metadata": {}, "source": [ "* Now we need to turn the `price` variable from numeric into binary format\n", "* Let's create a variable `above_average` which is `1` if the `price` is above its mean value and `0` otherwise" ] }, { "cell_type": "code", "execution_count": 75, "id": "de56543c-b7b6-45a0-a365-d888b1ef425a", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "40594.737032063116" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['price'].mean()" ] }, { "cell_type": "code", "execution_count": 76, "id": "0d3c6a46-1b79-49b5-abcc-a4ffffe8eefb", "metadata": { "tags": [] }, "outputs": [], "source": [ "data_class = data.copy()\n", "mean = data_class['price'].mean()\n", "\n", "data_class['above_average'] = np.where(data_class['price']>=mean,1,0)" ] }, { "cell_type": "code", "execution_count": 77, "id": "33330127-d726-4bdb-b36f-08e28e34ad22", "metadata": { "tags": [] }, "outputs": [], "source": [ "data_class = data_class.drop(['price'], axis=1)" ] }, { "cell_type": "code", "execution_count": 78, "id": "11b957ab", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    makemodelyearengine_hpengine_cylinderstransmission_typevehicle_stylehighway_mpgcity_mpgabove_average
    0BMW1 Series M2011335.06.0MANUALCoupe26191
    1BMW1 Series2011300.06.0MANUALConvertible28191
    2BMW1 Series2011300.06.0MANUALCoupe28200
    3BMW1 Series2011230.06.0MANUALCoupe28180
    4BMW1 Series2011230.06.0MANUALConvertible28180
    .................................
    11909AcuraZDX2012300.06.0AUTOMATIC4dr Hatchback23161
    11910AcuraZDX2012300.06.0AUTOMATIC4dr Hatchback23161
    11911AcuraZDX2012300.06.0AUTOMATIC4dr Hatchback23161
    11912AcuraZDX2013300.06.0AUTOMATIC4dr Hatchback23161
    11913LincolnZephyr2006221.06.0AUTOMATICSedan26170
    \n", "

    11914 rows × 10 columns

    \n", "
    " ], "text/plain": [ " make model year engine_hp engine_cylinders \\\n", "0 BMW 1 Series M 2011 335.0 6.0 \n", "1 BMW 1 Series 2011 300.0 6.0 \n", "2 BMW 1 Series 2011 300.0 6.0 \n", "3 BMW 1 Series 2011 230.0 6.0 \n", "4 BMW 1 Series 2011 230.0 6.0 \n", "... ... ... ... ... ... \n", "11909 Acura ZDX 2012 300.0 6.0 \n", "11910 Acura ZDX 2012 300.0 6.0 \n", "11911 Acura ZDX 2012 300.0 6.0 \n", "11912 Acura ZDX 2013 300.0 6.0 \n", "11913 Lincoln Zephyr 2006 221.0 6.0 \n", "\n", " transmission_type vehicle_style highway_mpg city_mpg above_average \n", "0 MANUAL Coupe 26 19 1 \n", "1 MANUAL Convertible 28 19 1 \n", "2 MANUAL Coupe 28 20 0 \n", "3 MANUAL Coupe 28 18 0 \n", "4 MANUAL Convertible 28 18 0 \n", "... ... ... ... ... ... \n", "11909 AUTOMATIC 4dr Hatchback 23 16 1 \n", "11910 AUTOMATIC 4dr Hatchback 23 16 1 \n", "11911 AUTOMATIC 4dr Hatchback 23 16 1 \n", "11912 AUTOMATIC 4dr Hatchback 23 16 1 \n", "11913 AUTOMATIC Sedan 26 17 0 \n", "\n", "[11914 rows x 10 columns]" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_class" ] }, { "cell_type": "markdown", "id": "ba84dbe0", "metadata": {}, "source": [ "## Split the data" ] }, { "cell_type": "markdown", "id": "98f7f6c0", "metadata": {}, "source": [ "* Split your data in train/val/test sets, with 60%/20%/20% distribution\n", "* Use Scikit-Learn for that (the `train_test_split` function) and set the seed to `42`\n", "* Make sure that the target value (`price`) is not in your dataframe" ] }, { "cell_type": "code", "execution_count": 79, "id": "495c470f", "metadata": { "tags": [] }, "outputs": [], "source": [ "SEED = 42" ] }, { "cell_type": "code", "execution_count": 80, "id": "3fde2573", "metadata": { "tags": [] }, "outputs": [], "source": [ "df_full_train, df_test = train_test_split(data_class, test_size=0.2, random_state=SEED)\n", "df_train, df_val = train_test_split(df_full_train, test_size=0.25, random_state=SEED)\n", "\n", "assert len(data_class) == (len(df_train) + len(df_val) + len(df_test))" ] }, { "cell_type": "code", "execution_count": 81, "id": "e5069dbd", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "(7148, 2383, 2383)" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(df_train), len(df_val), len(df_test)" ] }, { "cell_type": "code", "execution_count": 82, "id": "59b95252", "metadata": { "tags": [] }, "outputs": [], "source": [ "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 83, "id": "e68dca8f", "metadata": { "tags": [] }, "outputs": [], "source": [ "y_train = df_train.above_average.values\n", "y_val = df_val.above_average.values\n", "y_test = df_test.above_average.values" ] }, { "cell_type": "markdown", "id": "4d67ca7c", "metadata": {}, "source": [ "## Question 3" ] }, { "cell_type": "markdown", "id": "3fbb525e", "metadata": {}, "source": [ "* Calculate the *mutual information* score between `above_average` and other categorical variables in our dataset. Use the training set only\n", "* Round the scores to 2 decimals using round(score, 2)\n", "* Which of these variables has the lowest score?" ] }, { "cell_type": "code", "execution_count": 84, "id": "5292ca83-312d-4b23-9b5f-15b3e0445bd6", "metadata": { "tags": [] }, "outputs": [], "source": [ "def calculate_mi(series):\n", " return mutual_info_score(series, df_train.above_average)" ] }, { "cell_type": "code", "execution_count": 85, "id": "acd1cc6e-94f0-4815-8279-b8d18a003c4b", "metadata": {}, "outputs": [], "source": [ "cat = ['make', 'model', 'transmission_type', 'vehicle_style']" ] }, { "cell_type": "code", "execution_count": 86, "id": "627f9b28-468b-44e9-8c14-8f9c0b9aea55", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    MI
    model0.462344
    make0.239769
    vehicle_style0.084143
    transmission_type0.020958
    \n", "
    " ], "text/plain": [ " MI\n", "model 0.462344\n", "make 0.239769\n", "vehicle_style 0.084143\n", "transmission_type 0.020958" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_mi = df_train[cat].apply(calculate_mi)\n", "df_mi = df_mi.sort_values(ascending=False).to_frame(name='MI')\n", "df_mi" ] }, { "cell_type": "markdown", "id": "947fdc51", "metadata": {}, "source": [ "`transmission_type` has the lowest score." ] }, { "cell_type": "code", "execution_count": 87, "id": "da5f5e46-ea45-4900-886c-b5e2427a746b", "metadata": { "tags": [] }, "outputs": [], "source": [ "df_train = df_train.drop('above_average', axis=1)\n", "df_val = df_val.drop('above_average', axis=1)\n", "df_test = df_test.drop('above_average', axis=1)\n", "\n", "assert 'above_average' not in df_train.columns\n", "assert 'above_average' not in df_val.columns\n", "assert 'above_average' not in df_test.columns" ] }, { "cell_type": "markdown", "id": "ca07cea5", "metadata": {}, "source": [ "## Question 4" ] }, { "cell_type": "markdown", "id": "fc5e5c2c", "metadata": {}, "source": [ "* Now let's train a logistic regression\n", "* Remember that we have several categorical variables in the dataset. Include them using one-hot encoding\n", "* Fit the model on the training dataset:\n", " * To make sure the results are reproducible across different versions of Scikit-Learn, fit the model with these parameters:\n", " * `model = LogisticRegression(solver='liblinear', C=10, max_iter=1000, random_state=42)`\n", "* Calculate the accuracy on the validation dataset and rount it to 2 decimal digits" ] }, { "cell_type": "code", "execution_count": 88, "id": "06693716", "metadata": { "tags": [] }, "outputs": [], "source": [ "dv = DictVectorizer(sparse=False)\n", "train_dict = df_train.to_dict(orient='records')\n", "X_train = dv.fit_transform(train_dict)" ] }, { "cell_type": "code", "execution_count": 89, "id": "08b7eb06", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    LogisticRegression(C=10, max_iter=1000, random_state=42, solver='liblinear')
    In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
    On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
    " ], "text/plain": [ "LogisticRegression(C=10, max_iter=1000, random_state=42, solver='liblinear')" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = LogisticRegression(solver='liblinear', max_iter=1000, C=10, random_state=SEED)\n", "model.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 90, "id": "b967bda7-70bc-45b1-ac45-14f5f56ece42", "metadata": { "tags": [] }, "outputs": [], "source": [ "val_dict = df_val.to_dict(orient='records')\n", "X_val = dv.transform(val_dict)\n", "\n", "y_pred = model.predict(X_val)" ] }, { "cell_type": "code", "execution_count": 91, "id": "67e94265-f15e-418f-acd2-84d572c12730", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy = 0.95\n" ] } ], "source": [ "accuracy = np.round(accuracy_score(y_val, y_pred),2)\n", "print(f'Accuracy = {accuracy}')" ] }, { "cell_type": "markdown", "id": "d15fa7eb", "metadata": {}, "source": [ "## Question 5" ] }, { "cell_type": "markdown", "id": "3100fff9", "metadata": {}, "source": [ "* Let's find the least useful feature using the _feature elimination_ technique\n", "* Train a model with all these features (using the same parameters as in Q4)\n", "* Now exclude each feature from this set and train a model without it. Record the accuracy for each model\n", "* For each feature, calculate the difference between the original accuracy and the accuracy without the feature\n", "* Which of following feature has the smallest difference?\n", " * `neighbourhood_group`\n", " * `room_type`\n", " * `number_of_reviews`\n", " * `reviews_per_month`\n", "> **note:** the difference doesn't have to be positive" ] }, { "cell_type": "code", "execution_count": 92, "id": "72a82457", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "['make',\n", " 'model',\n", " 'year',\n", " 'engine_hp',\n", " 'engine_cylinders',\n", " 'transmission_type',\n", " 'vehicle_style',\n", " 'highway_mpg',\n", " 'city_mpg']" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features = df_train.columns.to_list()\n", "features" ] }, { "cell_type": "code", "execution_count": 93, "id": "f1b1f293", "metadata": { "tags": [] }, "outputs": [], "source": [ "original_score = accuracy\n", "scores = pd.DataFrame(columns=['eliminated_feature', 'accuracy', 'difference'])\n", "for feature in features:\n", " subset = features.copy()\n", " subset.remove(feature)\n", " \n", " dv = DictVectorizer(sparse=False)\n", " train_dict = df_train[subset].to_dict(orient='records')\n", " X_train = dv.fit_transform(train_dict)\n", "\n", " model = LogisticRegression(solver='liblinear', max_iter=1000, C=10, random_state=SEED)\n", " model.fit(X_train, y_train)\n", " \n", " val_dict = df_val[subset].to_dict(orient='records')\n", " X_val = dv.transform(val_dict)\n", " \n", " y_pred = model.predict(X_val)\n", " score = accuracy_score(y_val, y_pred)\n", " \n", " scores.loc[len(scores)] = [feature, score, original_score - score]" ] }, { "cell_type": "code", "execution_count": 94, "id": "c399013a", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    eliminated_featureaccuracydifference
    0make0.9467060.003294
    1model0.9240450.025955
    2year0.9479650.002035
    3engine_hp0.9278220.022178
    4engine_cylinders0.9458670.004133
    5transmission_type0.9450270.004973
    6vehicle_style0.9324380.017562
    7highway_mpg0.9467060.003294
    8city_mpg0.9324380.017562
    \n", "
    " ], "text/plain": [ " eliminated_feature accuracy difference\n", "0 make 0.946706 0.003294\n", "1 model 0.924045 0.025955\n", "2 year 0.947965 0.002035\n", "3 engine_hp 0.927822 0.022178\n", "4 engine_cylinders 0.945867 0.004133\n", "5 transmission_type 0.945027 0.004973\n", "6 vehicle_style 0.932438 0.017562\n", "7 highway_mpg 0.946706 0.003294\n", "8 city_mpg 0.932438 0.017562" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scores" ] }, { "cell_type": "code", "execution_count": 95, "id": "60f92815", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    eliminated_featureaccuracydifference
    2year0.9479650.002035
    \n", "
    " ], "text/plain": [ " eliminated_feature accuracy difference\n", "2 year 0.947965 0.002035" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "min_diff = scores.difference.min()\n", "scores[scores.difference == min_diff]" ] }, { "cell_type": "markdown", "id": "34e68460-40f8-45a5-8215-94453bee4bea", "metadata": {}, "source": [ "`year` feature is the least important" ] }, { "cell_type": "markdown", "id": "6b37f4a5", "metadata": {}, "source": [ "## Question 6" ] }, { "cell_type": "markdown", "id": "3895a729", "metadata": {}, "source": [ "* For this question, we'll see how to use a linear regression model from Scikit-Learn.\n", "* We'll need to use the original column `price`. Apply the logarithmic transformation to this column.\n", "* Fit the Ridge regression model on the training data:\n", " * To make sure the results are reproducible across different versions of Scikit-Learn, fit the model with these parameters:\n", " * `model = Ridge(alpha=a, solver=\"sag\", random_state=42)`\n", "* This model has a parameter `alpha`. Let's try the following values: `[0, 0.01, 0.1, 1, 10]`\n", "* Which of these alphas leads to the best RMSE on the validation set? Round your RMSE scores to 3 decimal digits.\n", "\n", "If there are multiple options, select the smallest `alpha`." ] }, { "cell_type": "code", "execution_count": 96, "id": "c619e999-0e93-40e9-9a97-574ee51def21", "metadata": { "tags": [] }, "outputs": [], "source": [ "data['price'] = np.log1p(data['price'])" ] }, { "cell_type": "code", "execution_count": 138, "id": "4154e07f", "metadata": { "tags": [] }, "outputs": [], "source": [ "df_full_train, df_test = train_test_split(data, test_size=0.2, random_state=SEED)\n", "df_train, df_val = train_test_split(df_full_train, test_size=0.25, random_state=SEED)" ] }, { "cell_type": "code", "execution_count": 139, "id": "068e1b01-f5fc-43ad-82e2-09d771e77e4f", "metadata": { "tags": [] }, "outputs": [], "source": [ "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 140, "id": "ef62df29-24b0-4aac-ba35-0e7931783fb6", "metadata": { "tags": [] }, "outputs": [], "source": [ "y_train = df_train.price.values\n", "y_val = df_val.price.values\n", "y_test = df_test.price.values" ] }, { "cell_type": "code", "execution_count": 141, "id": "3ae5a65f-a332-42f1-9e5f-bccf5d2a3878", "metadata": { "tags": [] }, "outputs": [], "source": [ "df_train = df_train.drop('price', axis=1)\n", "df_val = df_val.drop('price', axis=1)\n", "df_test = df_test.drop('price', axis=1)\n", "\n", "assert 'price' not in df_train.columns\n", "assert 'price' not in df_val.columns\n", "assert 'price' not in df_test.columns" ] }, { "cell_type": "code", "execution_count": 142, "id": "97e74e6d", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "((7148,), (2383,))" ] }, "execution_count": 142, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_train.shape, y_val.shape" ] }, { "cell_type": "code", "execution_count": 143, "id": "b3dcafaa-d714-4bbb-8910-bcd505ad6b75", "metadata": { "tags": [] }, "outputs": [], "source": [ "dv = DictVectorizer(sparse=False)\n", "train_dict = df_train.to_dict(orient='records')\n", "X_train = dv.fit_transform(train_dict)\n", "\n", "val_dict = df_val.to_dict(orient='records')\n", "X_val = dv.transform(val_dict)" ] }, { "cell_type": "code", "execution_count": 144, "id": "046a2f8c", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "alpha = 0:\t RMSE = 0.48679431324238925\n", "alpha = 0.01:\t RMSE = 0.48679455192752635\n", "alpha = 0.1:\t RMSE = 0.48679670001899783\n", "alpha = 1:\t RMSE = 0.4868181745432734\n", "alpha = 10:\t RMSE = 0.48703228329751214\n" ] } ], "source": [ "scores = {}\n", "for alpha in [0, 0.01, 0.1, 1, 10]:\n", " model = Ridge(alpha=alpha, solver='sag', random_state=SEED)\n", " model.fit(X_train, y_train)\n", " \n", " y_pred = model.predict(X_val)\n", " \n", " score = mean_squared_error(y_val, y_pred, squared=False)\n", " scores[alpha] = round(score, 3)\n", " print(f'alpha = {alpha}:\\t RMSE = {score}')" ] }, { "cell_type": "code", "execution_count": 155, "id": "204a33ea", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{0: 0.487, 0.01: 0.487, 0.1: 0.487, 1: 0.487, 10: 0.487}" ] }, "execution_count": 155, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scores" ] }, { "cell_type": "code", "execution_count": 156, "id": "5c14d339", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The smallest `alpha` is 0.\n" ] } ], "source": [ "print(f'The smallest `alpha` is {min(scores, key=scores.get)}.')" ] }, { "cell_type": "code", "execution_count": null, "id": "cb6ee1d6-1103-4c3a-965a-e5d794dec9f9", "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.10.12" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: cohorts/2023/04-evaluation/homework.md ================================================ ## Homework > Note: sometimes your answer doesn't match one of > the options exactly. That's fine. > Select the option that's closest to your solution. > If it's exactly in between two options, select the higher value. Solution: [homework.ipynb](homework.ipynb) In this homework, we will use the Car price dataset like last week. Download it from [here](https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv). Or you can do it with `wget`: ```bash wget https://raw.githubusercontent.com/alexeygrigorev/mlbookcamp-code/master/chapter-02-car-price/data.csv ``` We'll work with the `MSRP` variable, and we'll transform it to a classification task. For the rest of the homework, you'll need to use only these columns: * `Make`, * `Model`, * `Year`, * `Engine HP`, * `Engine Cylinders`, * `Transmission Type`, * `Vehicle Style`, * `highway MPG`, * `city mpg`, * `MSRP` ### Data preparation * Keep only the columns above * Lowercase the column names and replace spaces with underscores * Fill the missing values with 0 * Make the price binary (1 if above the average, 0 otherwise) - this will be our target variable `above_average` Split the data into 3 parts: train/validation/test with 60%/20%/20% distribution. Use `train_test_split` function for that with `random_state=1` ### Question 1: ROC AUC feature importance ROC AUC could also be used to evaluate feature importance of numerical variables. Let's do that * For each numerical variable, use it as score and compute AUC with the `above_average` variable * Use the training dataset for that If your AUC is < 0.5, invert this variable by putting "-" in front (e.g. `-df_train['engine_hp']`) AUC can go below 0.5 if the variable is negatively correlated with the target variable. You can change the direction of the correlation by negating this variable - then negative correlation becomes positive. Which numerical variable (among the following 4) has the highest AUC? - `engine_hp` - `engine_cylinders` - `highway_mpg` - `city_mpg` ### Question 2: Training the model Apply one-hot-encoding using `DictVectorizer` and train the logistic regression with these parameters: ```python LogisticRegression(solver='liblinear', C=1.0, max_iter=1000) ``` What's the AUC of this model on the validation dataset? (round to 3 digits) - 0.678 - 0.779 - 0.878 - 0.979 ### Question 3: Precision and Recall Now let's compute precision and recall for our model. * Evaluate the model on all thresholds from 0.0 to 1.0 with step 0.01 * For each threshold, compute precision and recall * Plot them At which threshold precision and recall curves intersect? * 0.28 * 0.48 * 0.68 * 0.88 ### Question 4: F1 score Precision and recall are conflicting - when one grows, the other goes down. That's why they are often combined into the F1 score - a metrics that takes into account both This is the formula for computing F1: $$F_1 = 2 \cdot \cfrac{P \cdot R}{P + R}$$ Where $P$ is precision and $R$ is recall. Let's compute F1 for all thresholds from 0.0 to 1.0 with increment 0.01 At which threshold F1 is maximal? - 0.12 - 0.32 - 0.52 - 0.72 ### Question 5: 5-Fold CV Use the `KFold` class from Scikit-Learn to evaluate our model on 5 different folds: ``` KFold(n_splits=5, shuffle=True, random_state=1) ``` * Iterate over different folds of `df_full_train` * Split the data into train and validation * Train the model on train with these parameters: `LogisticRegression(solver='liblinear', C=1.0, max_iter=1000)` * Use AUC to evaluate the model on validation How large is standard deviation of the scores across different folds? - 0.003 - 0.030 - 0.090 - 0.140 ### Question 6: Hyperparameter Tuning Now let's use 5-Fold cross-validation to find the best parameter `C` * Iterate over the following `C` values: `[0.01, 0.1, 0.5, 10]` * Initialize `KFold` with the same parameters as previously * Use these parameters for the model: `LogisticRegression(solver='liblinear', C=C, max_iter=1000)` * Compute the mean score as well as the std (round the mean and std to 3 decimal digits) Which `C` leads to the best mean score? - 0.01 - 0.1 - 0.5 - 10 If you have ties, select the score with the lowest std. If you still have ties, select the smallest `C`. ## Submit the results - Submit your results here: https://forms.gle/E7Fa3WuBw3HkPQYg6 - If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. - You can submit your solution multiple times. In this case, only the last submission will be used ## Deadline The deadline for submitting is October 9 (Monday), 23:00 CET. After that the form will be closed. ================================================ FILE: cohorts/2023/05-deployment/homework/Dockerfile ================================================ FROM svizor/zoomcamp-model:3.10.12-slim RUN pip install pipenv COPY ["Pipfile", "Pipfile.lock", "./"] RUN pipenv install --system --deploy COPY ["q6_predict.py", "./"] EXPOSE 9696 ENTRYPOINT ["waitress-serve", "--listen=0.0.0.0:9696", "q6_predict:app"] ================================================ FILE: cohorts/2023/05-deployment/homework/Pipfile ================================================ [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] scikit-learn = "==1.3.1" flask = "*" waitress = "*" [dev-packages] [requires] python_version = "3.10" ================================================ FILE: cohorts/2023/05-deployment/homework/q3_test.py ================================================ import pickle def load(filename: str): with open(filename, 'rb') as f_in: return pickle.load(f_in) dv = load('dv.bin') model = load('model1.bin') client = {"job": "retired", "duration": 445, "poutcome": "success"} X = dv.transform([client]) y_pred = model.predict_proba(X)[0, 1] print(y_pred) ================================================ FILE: cohorts/2023/05-deployment/homework/q4_predict.py ================================================ import pickle from flask import Flask from flask import request from flask import jsonify def load(filename: str): with open(filename, 'rb') as f_in: return pickle.load(f_in) dv = load('dv.bin') model = load('model1.bin') app = Flask('get-credit') @app.route('/predict', methods=['POST']) def predict(): client = request.get_json() X = dv.transform([client]) y_pred = model.predict_proba(X)[0, 1] get_credit = y_pred >= 0.5 result = { 'get_credit_probability': float(y_pred), 'get_credit': bool(get_credit) } return jsonify(result) if __name__ == "__main__": app.run(debug=True, host='0.0.0.0', port=9696) ================================================ FILE: cohorts/2023/05-deployment/homework/q4_test.py ================================================ import requests url = "http://localhost:9696/predict" client = {"job": "unknown", "duration": 270, "poutcome": "failure"} response = requests.post(url, json=client).json() print(response) ================================================ FILE: cohorts/2023/05-deployment/homework/q6_predict.py ================================================ import pickle from flask import Flask from flask import request from flask import jsonify def load(filename: str): with open(filename, 'rb') as f_in: return pickle.load(f_in) dv = load('dv.bin') model = load('model2.bin') app = Flask('get-credit') @app.route('/predict', methods=['POST']) def predict(): client = request.get_json() X = dv.transform([client]) y_pred = model.predict_proba(X)[0, 1] get_credit = y_pred >= 0.5 result = { 'get_credit_probability': float(y_pred), 'get_credit': bool(get_credit) } return jsonify(result) if __name__ == "__main__": app.run(debug=True, host='0.0.0.0', port=9696) ================================================ FILE: cohorts/2023/05-deployment/homework/q6_test.py ================================================ import requests url = "http://localhost:9696/predict" client = {"job": "retired", "duration": 445, "poutcome": "success"} response = requests.post(url, json=client).json() print(response) ================================================ FILE: cohorts/2023/05-deployment/homework.md ================================================ ## Homework In this homework, we will use Bank credit scoring dataset from [here](https://www.kaggle.com/datasets/kapturovalexander/bank-credit-scoring/data). > **Note**: sometimes your answer doesn't match one of the options exactly. That's fine. Select the option that's closest to your solution. If it's exactly in between two options, select the higher value. > **Note**: we recommend using python 3.10 in this homework. ## Question 1 * Install Pipenv * What's the version of pipenv you installed? * Use `--version` to find out ## Question 2 * Use Pipenv to install Scikit-Learn version 1.3.1 * What's the first hash for scikit-learn you get in Pipfile.lock? > **Note**: you should create an empty folder for homework and do it there. ## Models We've prepared a dictionary vectorizer and a model. They were trained (roughly) using this code: ```python features = ['job','duration', 'poutcome'] dicts = df[features].to_dict(orient='records') dv = DictVectorizer(sparse=False) X = dv.fit_transform(dicts) model = LogisticRegression().fit(X, y) ``` > **Note**: You don't need to train the model. This code is just for your reference. And then saved with Pickle. Download them: * [DictVectorizer](https://github.com/DataTalksClub/machine-learning-zoomcamp/tree/master/cohorts/2023/05-deployment/homework/dv.bin?raw=true) * [LogisticRegression](https://github.com/DataTalksClub/machine-learning-zoomcamp/tree/master/cohorts/2023/05-deployment/homework/model1.bin?raw=true) With `wget`: ```bash PREFIX=https://raw.githubusercontent.com/DataTalksClub/machine-learning-zoomcamp/master/cohorts/2023/05-deployment/homework wget $PREFIX/model1.bin wget $PREFIX/dv.bin ``` ## Question 3 Let's use these models! * Write a script for loading these models with pickle * Score this client: ```json {"job": "retired", "duration": 445, "poutcome": "success"} ``` What's the probability that this client will get a credit? * 0.162 * 0.392 * 0.652 * 0.902 If you're getting errors when unpickling the files, check their checksum: ```bash $ md5sum model1.bin dv.bin 8ebfdf20010cfc7f545c43e3b52fc8a1 model1.bin 924b496a89148b422c74a62dbc92a4fb dv.bin ``` ## Question 4 Now let's serve this model as a web service * Install Flask and gunicorn (or waitress, if you're on Windows) * Write Flask code for serving the model * Now score this client using `requests`: ```python url = "YOUR_URL" client = {"job": "unknown", "duration": 270, "poutcome": "failure"} requests.post(url, json=client).json() ``` What's the probability that this client will get a credit? * 0.140 * 0.440 * 0.645 * 0.845 ## Docker Install [Docker](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/05-deployment/06-docker.md). We will use it for the next two questions. For these questions, we prepared a base image: `svizor/zoomcamp-model:3.10.12-slim`. You'll need to use it (see Question 5 for an example). This image is based on `python:3.10.12-slim` and has a logistic regression model (a different one) as well a dictionary vectorizer inside. This is how the Dockerfile for this image looks like: ```docker FROM python:3.10.12-slim WORKDIR /app COPY ["model2.bin", "dv.bin", "./"] ``` We already built it and then pushed it to [`svizor/zoomcamp-model:3.10.12-slim`](https://hub.docker.com/r/svizor/zoomcamp-model). > **Note**: You don't need to build this docker image, it's just for your reference. ## Question 5 Download the base image `svizor/zoomcamp-model:3.10.12-slim`. You can easily make it by using [docker pull](https://docs.docker.com/engine/reference/commandline/pull/) command. So what's the size of this base image? * 47 MB * 147 MB * 374 MB * 574 MB You can get this information when running `docker images` - it'll be in the "SIZE" column. ## Dockerfile Now create your own Dockerfile based on the image we prepared. It should start like that: ```docker FROM svizor/zoomcamp-model:3.10.12-slim # add your stuff here ``` Now complete it: * Install all the dependencies form the Pipenv file * Copy your Flask script * Run it with Gunicorn After that, you can build your docker image. ## Question 6 Let's run your docker container! After running it, score this client once again: ```python url = "YOUR_URL" client = {"job": "retired", "duration": 445, "poutcome": "success"} requests.post(url, json=client).json() ``` What's the probability that this client will get a credit now? * 0.168 * 0.530 * 0.730 * 0.968 ## Submit the results - Submit your results here: https://forms.gle/gfruq6FGoLass3Ff9 - If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. - You can submit your solution multiple times. In this case, only the last submission will be used ## Deadline The deadline for submitting is October 16 (Monday), 23:00 CET. After that the form will be closed. ================================================ FILE: cohorts/2023/06-trees/homework.md ================================================ ## Homework > Note: sometimes your answer doesn't match one of > the options exactly. That's fine. > Select the option that's closest to your solution. > If it's exactly in between two options, select the higher value. Solution: [homework.ipynb](homework.ipynb) ### Dataset In this homework, we will use the California Housing Prices from [Kaggle](https://www.kaggle.com/datasets/camnugent/california-housing-prices). Here's a wget-able [link](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv): ```bash wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/housing.csv ``` The goal of this homework is to create a regression model for predicting housing prices (column `'median_house_value'`). ### Preparing the dataset For this homework, we only want to use a subset of data. This is the same subset we used in homework #2. But in contrast to homework #2, we are going to use all columns of the dataset. First, keep only the records where `ocean_proximity` is either `'<1H OCEAN'` or `'INLAND'` Preparation: * Fill missing values with zeros. * Apply the log transform to `median_house_value`. * Do train/validation/test split with 60%/20%/20% distribution. * Use the `train_test_split` function and set the `random_state` parameter to 1. * Use `DictVectorizer(sparse=True)` to turn the dataframes into matrices. ## Question 1 Let's train a decision tree regressor to predict the `median_house_value` variable. * Train a model with `max_depth=1`. Which feature is used for splitting the data? * `ocean_proximity` * `total_rooms` * `latitude` * `population` ## Question 2 Train a random forest model with these parameters: * `n_estimators=10` * `random_state=1` * `n_jobs=-1` (optional - to make training faster) What's the RMSE of this model on validation? * 0.045 * 0.245 * 0.545 * 0.845 ## Question 3 Now let's experiment with the `n_estimators` parameter * Try different values of this parameter from 10 to 200 with step 10. * Set `random_state` to `1`. * Evaluate the model on the validation dataset. After which value of `n_estimators` does RMSE stop improving? Consider 3 decimal places for calculating the answer. - 10 - 25 - 50 - 160 ## Question 4 Let's select the best `max_depth`: * Try different values of `max_depth`: `[10, 15, 20, 25]` * For each of these values, * try different values of `n_estimators` from 10 till 200 (with step 10) * calculate the mean RMSE * Fix the random seed: `random_state=1` What's the best `max_depth`, using the mean RMSE? * 10 * 15 * 20 * 25 # Question 5 We can extract feature importance information from tree-based models. At each step of the decision tree learning algorithm, it finds the best split. When doing it, we can calculate "gain" - the reduction in impurity before and after the split. This gain is quite useful in understanding what are the important features for tree-based models. In Scikit-Learn, tree-based models contain this information in the [`feature_importances_`](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html#sklearn.ensemble.RandomForestRegressor.feature_importances_) field. For this homework question, we'll find the most important feature: * Train the model with these parameters: * `n_estimators=10`, * `max_depth=20`, * `random_state=1`, * `n_jobs=-1` (optional) * Get the feature importance information from this model What's the most important feature (among these 4)? * `total_rooms` * `median_income` * `total_bedrooms` * `longitude` ## Question 6 Now let's train an XGBoost model! For this question, we'll tune the `eta` parameter: * Install XGBoost * Create DMatrix for train and validation * Create a watchlist * Train a model with these parameters for 100 rounds: ``` xgb_params = { 'eta': 0.3, 'max_depth': 6, 'min_child_weight': 1, 'objective': 'reg:squarederror', 'nthread': 8, 'seed': 1, 'verbosity': 1, } ``` Now change `eta` from `0.3` to `0.1`. Which eta leads to the best RMSE score on the validation dataset? * 0.3 * 0.1 * Both give equal value ## Submit the results - Submit your results here: https://forms.gle/Qa2SuzG7QGZNCaoV9 - If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. - You can submit your solution multiple times. In this case, only the last submission will be used ## Deadline The deadline for submitting is October 23 (Monday), 23:00 CET. After that the form will be closed. ================================================ FILE: cohorts/2023/08-deep-learning/homework.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 31, "metadata": { "id": "U19vNUrsczT4", "tags": [] }, "outputs": [], "source": [ "import os\n", "import shutil\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from tensorflow import keras\n", "\n", "from tensorflow.keras import layers\n", "from tensorflow.keras import models\n", "from tensorflow.keras import optimizers\n", "\n", "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n", "from tensorflow.keras.preprocessing import image" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 36 }, "id": "fAOIcGU3jWsy", "outputId": "e9a0384a-8105-4e7e-c4d5-97b5c2f0a49d", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "'2.14.0'" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import tensorflow\n", "tensorflow.__version__" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Oz0-kgShwGDI", "outputId": "ac491e71-7b40-4333-f94a-12ec5c28445f", "tags": [] }, "outputs": [], "source": [ "!wget https://github.com/SVizor42/ML_Zoomcamp/releases/download/bee-wasp-data/data.zip\n", "!unzip data.zip" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "id": "uCCnd0pik2hh", "tags": [] }, "outputs": [], "source": [ "train_dir = 'data/train'\n", "test_dir = 'data/test'" ] }, { "cell_type": "markdown", "metadata": { "id": "cvs750lpynUD" }, "source": [ "## Question 1" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "id": "EOtAG1Oblhm1", "tags": [] }, "outputs": [], "source": [ "model = models.Sequential()\n", "\n", "model.add(layers.Conv2D(32, (3, 3), activation='relu',\n", " input_shape=(150, 150, 3)))\n", "model.add(layers.MaxPooling2D((2, 2)))\n", "model.add(layers.Flatten())\n", "model.add(layers.Dense(64, activation='relu'))\n", "model.add(layers.Dense(1, activation='sigmoid'))" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "id": "HTOuSh11ln91", "tags": [] }, "outputs": [], "source": [ "model.compile(loss='binary_crossentropy',\\\n", " optimizer=optimizers.SGD(learning_rate=0.002, momentum=0.8),\\\n", " metrics=['acc'])" ] }, { "cell_type": "markdown", "metadata": { "id": "7XcouIUVmPK2" }, "source": [ "- Answer for Question1: `binary_crossentropy`." ] }, { "cell_type": "markdown", "metadata": { "id": "Xk6xJou7ynUF" }, "source": [ "## Question 2" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "i_UEvLG2mLCy", "outputId": "344c8296-e92e-4e21-c42f-317600bf09f7", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential_1\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " conv2d_1 (Conv2D) (None, 148, 148, 32) 896 \n", " \n", " max_pooling2d_1 (MaxPoolin (None, 74, 74, 32) 0 \n", " g2D) \n", " \n", " flatten_1 (Flatten) (None, 175232) 0 \n", " \n", " dense_2 (Dense) (None, 64) 11214912 \n", " \n", " dense_3 (Dense) (None, 1) 65 \n", " \n", "=================================================================\n", "Total params: 11215873 (42.79 MB)\n", "Trainable params: 11215873 (42.79 MB)\n", "Non-trainable params: 0 (0.00 Byte)\n", "_________________________________________________________________\n" ] } ], "source": [ "model.summary()" ] }, { "cell_type": "markdown", "metadata": { "id": "6fJl3C7hmlk1" }, "source": [ "- Answer for Question2: 896" ] }, { "cell_type": "markdown", "metadata": { "id": "QH-OavA2ynUG" }, "source": [ "## Question 3" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "id": "U7CL3rmomdtN", "tags": [] }, "outputs": [], "source": [ "train_datagen = ImageDataGenerator(rescale=1./255)\n", "val_datagen = ImageDataGenerator(rescale=1./255)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "NZRgtr_mnryc", "outputId": "ae5fb9c1-ea1d-477f-bce0-45acd9cbb121", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 3677 images belonging to 2 classes.\n" ] } ], "source": [ "train_generator = train_datagen.flow_from_directory(\n", " train_dir,\n", " target_size=(150, 150),\n", " batch_size=20,\n", " class_mode='binary'\n", ")" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "orvdanQ0n15D", "outputId": "c6353932-55c4-4d17-8aab-2212920d6974", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 918 images belonging to 2 classes.\n" ] } ], "source": [ "validation_generator = val_datagen.flow_from_directory(\n", " test_dir,\n", " target_size=(150, 150),\n", " batch_size=20,\n", " class_mode='binary'\n", ")" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "IB0Amcqzn7qu", "outputId": "905dcd08-7faa-4201-fc63-4050d389e240", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "data batch shape: (20, 150, 150, 3)\n", "labels batch shape: (20,)\n" ] } ], "source": [ "for data_batch, labels_batch in train_generator:\n", " print('data batch shape:', data_batch.shape)\n", " print('labels batch shape:', labels_batch.shape)\n", " break" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XHilosW_oFF_", "outputId": "742e3d82-08dc-4273-9d59-a0bd896dc521", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/10\n", "184/184 [==============================] - 33s 176ms/step - loss: 0.6847 - acc: 0.5491 - val_loss: 0.6579 - val_acc: 0.6166\n", "Epoch 2/10\n", "184/184 [==============================] - 32s 177ms/step - loss: 0.6550 - acc: 0.5983 - val_loss: 0.6196 - val_acc: 0.6394\n", "Epoch 3/10\n", "184/184 [==============================] - 32s 176ms/step - loss: 0.6267 - acc: 0.6484 - val_loss: 0.6283 - val_acc: 0.5599\n", "Epoch 4/10\n", "184/184 [==============================] - 33s 177ms/step - loss: 0.5863 - acc: 0.6881 - val_loss: 0.5532 - val_acc: 0.7048\n", "Epoch 5/10\n", "184/184 [==============================] - 32s 176ms/step - loss: 0.5440 - acc: 0.7299 - val_loss: 0.5451 - val_acc: 0.7222\n", "Epoch 6/10\n", "184/184 [==============================] - 32s 174ms/step - loss: 0.5083 - acc: 0.7609 - val_loss: 0.5546 - val_acc: 0.7081\n", "Epoch 7/10\n", "184/184 [==============================] - 32s 174ms/step - loss: 0.4931 - acc: 0.7707 - val_loss: 0.5129 - val_acc: 0.7516\n", "Epoch 8/10\n", "184/184 [==============================] - 32s 176ms/step - loss: 0.4629 - acc: 0.7909 - val_loss: 0.5856 - val_acc: 0.7168\n", "Epoch 9/10\n", "184/184 [==============================] - 33s 178ms/step - loss: 0.4297 - acc: 0.8151 - val_loss: 0.5045 - val_acc: 0.7527\n", "Epoch 10/10\n", "184/184 [==============================] - 33s 177ms/step - loss: 0.4064 - acc: 0.8298 - val_loss: 0.5789 - val_acc: 0.7179\n" ] } ], "source": [ "history = model.fit(\n", " train_generator,\n", " epochs=10,\n", " validation_data=validation_generator\n", ")" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 887 }, "id": "Bl5GyCf-oSac", "outputId": "d9b7ed1b-b7ef-4173-e57c-d6f877127e0f", "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "acc = history.history['acc']\n", "val_acc = history.history['val_acc']\n", "loss = history.history['loss']\n", "val_loss = history.history['val_loss']\n", "\n", "epochs = range(1, len(acc) + 1)\n", "\n", "plt.plot(epochs, acc, 'bo', label='Training acc')\n", "plt.plot(epochs, val_acc, 'b', label='Validation acc')\n", "plt.title('Training and Validation Accuracy')\n", "plt.legend()\n", "\n", "plt.figure()\n", "\n", "plt.plot(epochs, loss, 'bo', label='Training loss')\n", "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n", "plt.title('Training and Validation Loss')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "vRuMJA9PqX3i", "outputId": "f291c8a1-dd8f-4150-97d1-8358131abf87", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "0.7454446852207184" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "acc_median = np.median(acc)\n", "acc_median" ] }, { "cell_type": "markdown", "metadata": { "id": "Q8vZhkPIqtQF" }, "source": [ "- Answer for Question3: 0.8" ] }, { "cell_type": "markdown", "metadata": { "id": "2vy-Mhq4ynUI" }, "source": [ "## Question 4" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "SXikKVSSqoLV", "outputId": "f3e52e07-14c6-461b-e77f-e687f601bec4", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "0.09108764981572035" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "loss_std = np.std(loss)\n", "loss_std" ] }, { "cell_type": "markdown", "metadata": { "id": "Ei1wrvvvrXkH" }, "source": [ "- Answer for Question4: 0.091" ] }, { "cell_type": "markdown", "metadata": { "id": "9yDg2NV7ynUJ" }, "source": [ "## Question 5" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "id": "S5S4ImLNrUFt", "tags": [] }, "outputs": [], "source": [ "datagen = ImageDataGenerator(\n", " rotation_range=50,\n", " width_shift_range=0.1,\n", " height_shift_range=0.1,\n", " # shear_range=0.2,\n", " zoom_range=0.1,\n", " horizontal_flip=True,\n", " fill_mode='nearest')" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "YDx3pQb5rm5b", "outputId": "7ff44f69-29e3-4631-f1e4-bef601298d73", "tags": [] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAakAAAGhCAYAAADbf0s2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9Taxs2XbXC/7G/FhrRcTe+3xk3szra1/jxwMMPFRQAmMEJVRC1qOL6NBEtDESmA7QACGVZNGjSkAPQQuBkOghUQ0aNJARKiNV44EfxUNQxvbNmx8nz9l7R8Raa845XmOMuSL2ycx7rxHgm/KZR3H23vG5Yq055xjjP/7jP0RVlXfj3Xg33o134934IRzhN/oA3o134914N96Nd+Orxjsj9W68G+/Gu/Fu/NCOd0bq3Xg33o134934oR3vjNS78W68G+/Gu/FDO94ZqXfj3Xg33o1344d2vDNS78a78W68G+/GD+14Z6TejXfj3Xg33o0f2vHOSL0b78a78W68Gz+0452RejfejXfj3Xg3fmjHOyP1brwb78a78W780I7fMCP1t//23+YnfuInmKaJn/7pn+Zf/+t//Rt1KO/Gu/FuvBvvxg/p+A0xUv/oH/0jfu7nfo6/9tf+Gv/m3/wbfu/v/b388T/+x/nud7/7G3E478a78W68G+/GD+mQ3wiB2Z/+6Z/mp37qp/hbf+tvAdBa49vf/jZ/7s/9Of7SX/pL3/f1rTV+9Vd/ldvbW0Tkv/fhvhvvxrvxbrwb/42HqnJ/f8+3vvUtQvjqeCn9DzwmAJZl4Rd/8Rf5y3/5L2/3hRD4mZ/5GX7hF37hS18zzzPzPG9//8qv/Aq/+3f/7v/ux/puvBvvxrvxbvz3Hb/8y7/Mj/3Yj33l4//DjdQnn3xCrZUPP/zwyf0ffvghv/RLv/Slr/n5n/95/vpf/+tfuP9v/D//LLtdRtAn/2pTmipNG7VVmjaWcqa0FREhCeSU+dH3P+T5zTNupokXN3cEEcp6ptYVtKJaEYQYEkEiIWVCHiBAjAoCkgYkTkgYSMMLJGQejgvH08zrh8/4//2X/42H42s++ew/8Or1L6MoqKJYRNi0oU3RWgkh8vLuG9yMt/zPP/Hb+Onf+9NMw0BZztRaAAVRP6aMSCREkAB4RKkiBBmRMCIykPJzggyIKih2LmplXs/8m3/3L/h3//H/w1pmHufXKI19GslpYBwyh/2eIWXeP7zHzXggSiBKRIAefwcCUQRBQBOGIDfQBqKo2DFXbTStIELMEQmBaTowjnvu59f8x0/+PcflkYfjGx7P99CAVfwrR39/uwWEIU3kMJDixD7fkPOOD9/7rRx2L3h2+w3ee/FtokRCiCCC1pVWZ2gNXRdojaagTe2j7KiZy8q5FMq6cHy8p5TCel6o60JKmf20I4bEMO3JaWJZZx4fHyll5XR6zTyfUP/62mBZV1ptLGXmtB5Rraxtpmnlg/ff41sffsB+3PHBy2+yG3e0KrRiM7ppQ4E0JGLMSBBiiijw8Pia0+mB4/nEdz97xVoqUiK0yJj27KcXoPB4fMO8HDme3/Dq8WOb262i2pjyxGG4IRJIOhE0MuvMqc0UXXmsbyhtITOQSSQduKu3RE1orbRSaQJLgCZQgtACRCKjJESFta3UWvnV1x/x//0v/5bTckYoiFbubl/wwTd+lN2059vf/Ame3b7gMO65291Ry8LHn/wKx9MbogZiM09b8HleG602ggSGYSTGyN033uf2/ZeoKq1WtFVOrx85PxyppbKeZrQ2al1ovp4azSayRFQCDaVKAxEkZkQCiqAIiBJiQ4JS6sxSjpyWmf/yya9xPB/54Pk3+OaLDxjiwD7fkkKiroVaKtqUulZs0oGoreOwfR+151Tbv0SE3bMdwzQSp4HxZg8SqD6v2lJp84pq4ywrlcbKwqozpRQeH46UpXBaZk7nM6WunOY31Fa4G+64GW4Y08SL6SU5JiIRkUBACBIREaL/rfjS831Xsb1P/Z7++OUefCe+er5dvMsQOM9n/tr/6//B7e3tl+77ffwPN1L/NeMv/+W/zM/93M9tf79584Zvf/vbpDGSx4jQUFWUiqoQ1eZCU6GqoBqQlEgqBBFyiuSU2B8mDoeJw7Tj9maHAOsKtSW0VbStAKSQCBKQmAlpQALEbhxiRmJAQiCOdt8wHLi7fcb+MHIsR+6PrzktH/Pq4Zf9SjebqDSCgvpmHqRR28pcZwjK4TCxGyfKEmh1pWlFWYFAjANBEiFACIKIQuyTJ4DY/cMwEMIITVGzj+yAZR043Nww7g+0GdoMtTVUKjEURBpNClUyGkYIgoSBIU2IBNAIBILgRioACSGiVKACCsGOqWmlabDJP3QjFRkGocTA/iajc2ZugdgEqh9sA1QRN05REjFEbvfPmYY903DD7f4lY97zIx/8BLeHl0zDDfvdDYKgzRZIKxVdzSgp1TZqCSARiZk4vUBipgShinA+n/j00++wzGce37zhfHxkGidePHvBkAdubl4wTTccT0deff6KdZ15/VqJR7u8VKApaxlpVTmvEc6VppWMgDRub3bc3R7YjTtubw5Mwx5tQmvBnKxWzUjlQMyREAIxDwQRnt+OiL7k/nhkt99xXlYeXp84HRfGnDnsdwiRnIR1nZjGgRih1pX5/EApC2MamVIkSmTPSCZx0kQks7aFUhZEA5nMwMCgA/u2J2umlkIrhYoSRKkCg5iTlCUwhQFBmEtgjZUhJdSnjW2JkfdefIPf+dt/NzeHO37Lt34rz+5e0tZKORfm+cT48AmlZqIGUndUfGhptFKJMTLtdqSc2R32jLsdYE6fNkWakEOirIWzRFqt1DXQSkFpKMWWpCRwI9UEd0ATItGnoH22xAahEZsScqVJI6dAjIEYQKSBNGKEFIREQlOCprSkqKrNbTdWAVsmGt159SkvMbC/PTDsBuIwknY7EKFWN1KhoESaNgKBQiUBkUZJgVIKIQqrLsjSEG2IKEFgN4y82D1jSjte7l+Sw2D7p3ajo0+MDJgPLO4nbhkWP09+araf/f7tvqv7r5/Src/3S9n8DzdS77//PjFGPvrooyf3f/TRR3zzm9/80teM48g4jl+4X1lR9ThKFdXqkVSjNkVpVDUD1rTSWoUgZsBa8Pv1coHEvQbFPVlFsA0W1Dx6bdCEZo6VGUgaATdqbiREoi2gaU9tlWGYSDHTWqXUap/tE9V+N/s1L4VWZ04n84BAoFakQaPRtNh9BDNuTdAQbBKhSAClmGEgUOvsximCBo/gKq0VJAg5DyzrTGtCLbCGRtBCI5CK+ZBrmVliRhMkze4F+oJU88DMkVKgotsujZ0v7cdur6M1BCh1JTSh1IVWG1qVVqCtglaBotCE4OczhESOAzFmxrxnGg7sxht24y1D3pHTSAyZIMEiJsScDVW0FrQVtDW0VWjmLbuXYF5kiOaQxEjNypAnUJjziRAsKhMJSIjElMnDyNiUabcQUmI471jrgq7VIhbBvNEgxGBGRoCcRiTCbtqxGyfGYSTEhISIhLTNs1Ys4sPPraqirdFE/PwLEgIpJ7KaM1BqpcZKq802FbXXixgigEIMA0RBJFFVEN95zJMOZE2gjaSJqo1IIhDN75dgEYDvWtpnozsSCCQRoq/RVhtLXSm10nzjE0lEEcZh4vbwjNubO/a7A7tpx8JCWRqEvrv1Ndlf29d+Q7XZWgviG52dH8UjWbM+ECISGiEGO4IqW2RgTgs+Z9Xv77svhga4TZEOITRoTWnV1rB9jlJaYV5nUKWmgp0p+3fZ9i8/7fr0R319iBBiRGIgpkhMkRDsu/nLNoPpf5gT1x+UHvLYfKhaWdtCbQX16C1JYkgDKSU0CC180UD5O1x+vmVsvvDzygBdP7cfjrz1Grl+/fcZ/8ON1DAM/P7f//v55//8n/Mn/sSfAAz2+uf//J/zsz/7s7/OdzvRaOZ9aqPVgmpjbdVhvg6ZKEUN9gsaQSKITaqqlaqNigNVPheaGzab+NBjhaaJIEJsYoahFaQ1tDWIEdHkUUxgHBLfeP4hN7tnfPTJe3y8u2VZZmaHgNSspXlG1TaU8/GI1oX3n7/io08+5WZ/YJ9HhpioulLbIwAxFIMgJRHIhABptK+GFJAFpNBaQsIAckBlD1pp9UQpMyklbg7PKKVRlsiyrLSlcJTCNAEiDCnykDLKytgOqARiiKQQsS1tQFsCxJwEBSgoxTw3tcXoAZHN1uIbaFgpcuK8HFnPK2WulJOwHhNaoa1mQMY0EGMkx4mb8Y4hjbw4fMB+d8d+uuPZzfvkNHIYnzOlPYGIltVhn5XWGtQVLYvBuMVgEgn4xgwxZGIYkGFHGHakOLEuC8typiyFdVlJw2iQb8xMuwM3d88Ypj1h2LOsC42KpMR6OnJaX0GFlAZEE6qVOZ0IEQ53O4Yx88HLF3zj5XukODKMB0IYiGkipIlaVurpNa0U84aqbcBVVzMKCTRASJH9fiKmwGefvmFeZgKZJc6EEG0dUAkSGNOeKhUZE7UWWmsstdGI5u2TGTQSW2LVyNzOhBa3eRZJDgVFYlCLHFRJvtaymnEKIqRoa2heZt4sRx6XM0XNFMQ4MoSBZ7fv8+Pf+glub+5478UH7KYD9+GB81ygRAgBJKAKRZsbQ9n2jKaVQCT4ho4qpayA0KqYYZOIpGwQ+ViRWmzDbsUMjZtOM3jdKEZANgfrEtArUm3rXmtjKY2yNlozg3leTrx+hClPTGkCJiJ23tQNkbozIRtcZv8XrVStpJQZd4mYEsM0MI4TKmKfAYarNqC6o9UqUitoMUMgAVoAhyeXduahfA4Vg02J7PKOZ7tnSIi0DIvUS+QDXzRCT3/9gm0JX/o8+RIbdP1EIUr8wjO+bPyGwH0/93M/x5/+03+aP/AH/gB/8A/+Qf7m3/ybPD4+8mf+zJ/5db2PwXsGI6l6fkcbrRVqu0RVHd9vKKLQmpjH1b3T/n56+dmjKa4iKlozGAwhtOAeQ/OfHp0IiMNlQSCngdaUnAdSzNRQQC2ac0xy+7zWoKyVUuA8LxzPJ6IEMpHgoX1t1ZdSsUiqR1UqhM0BdbdGCiqrzbwwQXBPvNlCFYEYPW+jYp/flIrBFWUVAspaCmtZiWGlaoXWPSMFmnuC7rU77ArFP9ejUcQ9wI5niC34ahFVq8080wKtBDNSxTw/YkAsc0KOIykN5DQx9FvekdJAig7Lgl/f5rCtLWZt7SoiUYNIr+FyEY+YEjFkchpRVXvvlIlbtBMIKRFTJqmQRyAE8jCSh4m2LHbcYvmZDlGGEDYIdhoHxmFkyBYZhpAsior2vgqEEGmh+kbpEVXfrNScJkSI0aJ2UGor1OqoAeJrwuId6fBscKcCm7N2BW1jC54ladpIJKrNdn8k9DNl8YEEgrYtrxKApB47eN6l1sZaK7XnYCQQQyKlgSGN7MaJaZzIKZNiQoJDbtpjm6sFiU8d8O9kW/8GRfX79folFm1KCAbLE22R+BrZDJT0+WkIRd9hev74sk/4/01tzvZ5pnbu17IQQ6S2YkZUwhad9H+Cw2Ae8XgctTnUBq2LHW/cvth2SB4zPt2wmkPrPH1fpdlaVyGJOZYxJFJMEAJVuBQifQlE9wUk7okV+1J7ts2Qt+/vkTfbHvWDhVK/IUbqT/2pP8XHH3/MX/2rf5XvfOc7/L7f9/v4Z//sn32BTPH9RlugRoeYtKFqkVStC2tZLAnaJ5B7TFWC5Zy0sJSFUlePumzumt3Q7YaaYQKltZWmMyJCIxJENtKCxIC0ahtqKpAWtEWSZDQ29uPI7eEOkcibh6PN/9YhqECrkdaEdRHWFT799A3//t//Bw67Pd/6xofc7m9IqTAMi0VyCdssqUSaO1DB81OCpaUUCY8gyfJVwRZOrSfWutDqicBClEKOQomR+bywrIVlgXVRhhyIeqZVKEUQEjEmhjh5rk4JYhtpbYtvigVwIxgsD4VEJMSnEEtd4Vw4nRce7o/MS2E5Ku2c0IZ5jSIkmRhiZhoO7KcbhjQy5h05GskjxUgKPcXrSermxqhcQXy1OzG2qJtUkIVWhVCPxNCgZkIdiRLYT3cMeY88V3Z5JEggJfv+KWXLQ+bEhEFut7cviSHz0CLLqwdAeTE+Y5cmPg7Km/qGmALPDjfc7nfc7nakFAgxEocRiRM570nDgVAXSpuJJVHmE+u8uDviRBDF0oLayCmiGim6cFzuAWEqt26MDH6tWg2aaoCYsY1SIUaiBqrCoo2MkCUhQTiEPVkGd9jM4G7+sYWhhBAYxKDz0BRpZhCrKkWVpTWW1ggh8WL/jKaNF4cX7McDz27u0Fop88zp8Q1lmXn9+jM++ew7zOcTD8d7zvOJqEJU+2QHHd3xaB5dNgLmgEkxMxYIjn4FA04AzQMtVIJv0KrBnFdtFyMUgmOFYYtMFKhu9Rrm6MzlxHk9cl5OzKvdmq6sZWEtlbvpiCqMSRlCcN9M3TgZPKfajOChStFie5RCbGlLUVzAwSv4EnMSVK4MWIeCg32fWg2OpAqpZZIk7nZ3DHHgsDuQhuxwt8Nx8L2NRn+s43RvWSe9ul/feq8NolUuQ6DVH2IjBfCzP/uz/xXw3tNRi16wd88NmeewWp5Dm8F8116MBGoroI1SF2qHBv1SXZ7b3Hu1XJdZlZUmAdGA5aHCFroTAF0hCuSGtBWRgSg3SFSmcWC/v6FURST7++OePmiLaBNKMfLG558/8J/+83/msNsTNbA+L+wmuD0IIQpJlRADQqOKEpqgYtCH5SrM3wqeayAC0aDNtc4WvbQZYSVIJUYhBeGhKKdTZQnKem7kHNiPCzFatJZTtM0vCS1CkEYIK4pSyskWllaD+xBiTB5BZINCwRejsrYzRc+cz4XT8cyyNNYztLl77JYDiQzkaKSN3XAg54EhT6Q4EEPySCIg0hxybJY4V4VSfQEbPLIZKbVoCxQNgdjOaFVC3aHNru00HiySUmWXLblcWrVjitmjmMQYhVQzN4dnRMm048obRoIoz4YDd8OBUzsicyTmyM1ux/ObA9M4kmLw/MOApJE47MjjnlATQzlSolDXefOG1TfrLdoXJadI00htK+f1SJDEXM6kaDCwwa3tkj+RaA6ERALN0IVVKKokAlnMAdvFidQsCmra6PkVGzbxA5A9WjBcvPmma1F5acralCCRu+kGRHjv2Xsc9rfc7G/QWqnrwvn0SFlnHu5f8fnnn7AsZx7Pj6zrjAPaHrGZ0ZDmG7NaLqeqQ+7VmXmON5gjacZVk1KlbPk/2upRW9871KEybC41DBLTjnYoVQtNG2uZmcvZbzNLmT2SWlGF83o2oouYo2p7Sx+txziUtppR0cselLRYCsBfYdFe3+TdpFzv726oNsRILcJr1YgjsUWGNHAz3jDlHbtpRxryJYq8Mh5PYqS3DY5c32c3latj6Y+/dd91Cu06ItQfDO37erD7vmpYFNStRMeW3wqu1SCp6jkpgykigrKUhXmdWevOIT2PoJrDvYbJwebLNPDNV1QdIvH4O4h7YYLKgvk6lQhGia8rPeEcYzRIQCJKRAk0h9s81KDWwvl8JgAPx3tyDsDANIyeDxOHDgSVQhNBpSFV3AN0f1KqeYOhQbSocWlmpJblSC0z2goxQIjYT2cLVoVQlWWtnOeVEALzOpNiI8iKejQZWkS1staZ1lYUM1JBBJUB0UBE6chF82tUamWtjVoUVfORc8xItmnZja1BpclLAcIG6dnascitKdS6mENRFa3NwuLaIVXbRM1I1S3pDmIbZS0g0SHLDUiyhHkLxBYdinHoSDpGon6skGJmHCbGYcdu3BMaDOMNaTygc2YpKwQlpsAwZGIUaquE0CzHF9OFnCGRmAZ/7weaNptbtfoctm1VorEro5Nn+pGXZgSbgM2VpgYf9oihQ1d9Dm3wiz9XsSgkBmwxaN/28fNz+dm9aInmEDXwTVMMuhIhxcSUJ0IQpnFyAx3t3JdCDaEvOnKItM6oFY9CLAS09xaDEqUbqVJowRh7ra4W5QX1iFM2uPRCjlCQq02d6uzT5nsDIAZxQkdWcCel0GistXjUtFDKSikrVZo5fJKY14UUEmOcthOl15ZFv2SvwvNuQbbiVnXTZcOuj0gAaQYJqufG6WUL5nSrz/UcMjfjDWMaudvdMuWJIY/mTCNXaY2rY5PLL3p19zbRt2v+9tALjtnfUq/e+0k+hc6t+r7ja22kTuURWSshJBCjwj5l0fQNzKKmta19dbKWgfvjG3IayHlkrY0WZKtTsNxN9RPr76erRQgqNDIBuRizIHhoga6FlmazX/o5tTXW9ZEoQgqRMQ3QYHZWW0NY6+W9RJV1PvP555XTmNntEqflNe8tz8jpfXKKTKqkFIGGiG1IsrAxumzCi2HwYlFWk0DVylysbuLx8WOW+Z5aZ1JqDE0YhsBagufHbHHeH2cqhaWuSKzklGgtMiTt2yCqlaW8puoZoYIURAJDm4w11yaSTr7xmzd8ngvnpVALaBsRAvvxlpgPPZBCBMaxkZOx7WLMREkXA0Wh6gxt5VzP5m03IXhZGTWwubCbcVw8DxHQEGw/W86k1si5QHbISuz7SwmkOUMU8uTMK4keOYjDmsbWG9OE3Bbq3QPS4HD3DabxAMfvcn8+sSORx8Tt3Y5SC2udiRLZpUzKezNMEokRxvGWllZOj59TdIUmyGp5VWpDQiWNiWE3kaMSo8E3do1nVqnEZnmeqIGcB1sdtTjExbZxSLD6GFVh9U0khkRQJWqjcpXP47LPwMVIxWwwIc3qlFoDidGj3eA0+MDzmzv2hwPTMFDX1QgKpRJDgLWyD0aXP8aBEitaC6WubjwiwdMvoopUYZ3PaCmsIRAj5m3l7GtSzLg7SaKJ1e8RQKWxstJasYimVWeRZjNSQTEK+qXucq2Wlz3ORx5OD8zrmdN85LSc0CbQArUobw4P1NYY4shN3qOYwTSjaeey6RVxg2ZrOSgpBVIKiKg7TWZQzIewsgmNCtGMbnA2pbbGqivFkaTaCvthz7N4xy5P/MjLbzDliZqEFjsf8FIH9QVIj+uLfI3VXd3vf9pyvLg/T197/dPnryqylB9gl/+aG6lWO0FCLpDbVTTlf108ptaT0BCkUKrnpUqhNtvUrynpl0Xs76WdRGFREhqMIeQ4vJUGCU2EJh1SUgu9N4PnEYIxLKxWB58sV6Fwa411tbzOeT4znCPzbmJdbffN1Wnn7hXCxQFSh9xsYlu00CSgIlStLMWKg2uxBapajYkXlBCwzU6tXgjMaJfSKKVSakFEKK0S/TsFhKZ9oa8gFXEjVVokovZ3T+b7aa3VsfMWELEoIstEins3UlbbkWIhBEtC98igXw/t3nQzCrQCUvvm5LBQu7h91wQbRbzu2GDjGqpvrtULO+2aiEJoHhV05hdyWbi+wGMIhCjkmBnSiDRIaSTGwfJxfry2z/hnO6SMBKeoX6BOI7QYRG3ru2N8bBud5Td6ECQWBTsxQIJBXSHEjbCgakw5qvo8DAQVY8lp8DmLzx3xCEovRZ1vbVDXuQhDE/q1sQcl+PcSIcRASNGjYovCjZVrTk5Ty2lFCXYuJdKLabdykE6dUKO9N7WoWcUh3uoQmTrLbeOaX82X/k/6/tA8kqoeKRoOJY68KE413/aRtqUJSvV0QaueWzaEoNRKadWYpViOyzNRfSI+iaG6A2BkpuDwtWx72La65eq2zUS7VuJRUbv6rilERpkY88iQBoacWYOyhn5S3BhtZCsuxurauFw2F56MK0dnM0K8dd/bhq47GO2t9/qK8bU2Up8/nJhbNew3CkM2D7vUQml9MqkrOtjC7BOtFHh4fIAWGMLI/d09OSXwfJVo9b3fioHN+ImTKYRq1Zrb5EYFKbYxtJbQmrYcRm2NeTmzrgYNqFbQ6hfPQ24VmspmHJfVvNG0KsOrB46z5djGMTIOiaJ7xsFUJyTYZVRnB9W6Ur0QeZvMYtXH5g0agWJdT1bbpYUQCiFWhkEsv1GFmAxWkiBUhbUq57lQK6Qwo03ccASMiDJT2wxUN1RWIR9CJEYlFYNIm2ZUA+dZOc+RKBNjfo8YRvbpJVN8RtNC1SNKReQBkTMpGfMuSLT8Ul2pJbLOpjzARlOG0MsGavINwqjY2hplXdHWiCmS4gAlsBwLhIbyhiJephBHUCGvhdQ39XrFXuN6/akZFQJTnni2e4402MU9OUzs8p7bw40VL7fCaT6Zg9OLzfUCL9G96m64HAq08MY/uxNSEDP2rZFiZjfu2E23vLh7n5RGhvGWlCakQShQy8onn33MejoyjRP7/Wjnabb5Synoulp5xGrOi2DR/TahOubnhIQN+ZTN6TfICmE3ZBoTjUaR6jCWWM6lQF3UIpZQidKQJkzJCpZ3eaS1xqlWztW87ir2vkkDUS1q09LlPSqSChqFtTUrHm54BKP2mU1ZqxUhV49jqiirFkpdzKBjjkEAQki+6RvkWNrquaeZeT2bkk0p1NpsSbdILY15XQlxpZQFLStNIo1kW3gnYThb9+I4WXHy3c0NKQ+2rj2/ZntQtyLqDnPzeZcwaL8h1da95baVZ/uBl/s7hpiIUXw9CTF0J87eo1dyPYH9rsLl7fo/MT5vGyJFvsQgXd7Pn+NOhpTfBEbqYZ6poRqMFgNNR/fOins/ljy0Yk5c6MESljQ4zSfQyGF65HQ+UnMmCgRRRNtWDX4xJJcJ37gqEqZAp3+rOJOsUtGtZmstC6UWanW22eZTOUXVPU/1aKBUi1xiUd48nFjKyjBEnt0NTOtAyqDYRA4hYxGPTfhSF4O0UPvSwlbfYkhRZwAtHnU5ZT40UoZBhdriRr4QL/arFdbVFtOSCiKrq0CYkTKIYWGDLpxyGkL0ol2AaNIuGplnWBZhSAN5es4Q9xzG99kPz2g6s5RE0wXVhdYWy9tItGhG1bzv0iirejrdjRRe6aKCtrB54BU799UZf1bTY5vQWt2I5RM1GeQTU0OIxEK3G1Zx4F7rJcK2OSIeCeU0cBhukAY5TgQyQxrYjRMpm5LEvM4OlUZ6HLwZqS26wmEnuxkEYIFzj8YFr6FpjRQj4zCy2+24e/aMnCd2+/fI+QCloUtlWWY+v7+H05k8jNzePTP4OjR0bZRlpjT7olJ6nsSOtHHJfdjmCYh6DvTKeLkFD8Hq7BqZQtvYmlYy4QWxRanB1FbE33OIGcDIMrFy5sRSO8lFiP0YNBJ63lGN2SdrtcJ0KlXYDIynJC2SdKKUEUjVWcCFoivSmnEYJZDESzN8r25beUuhtJ6Tsjxvrf79XNpoKZW4FkoxeSZT9IqXiJguJHAxUKoG2e72O4t4Cr5mbF71nNY1OgRKkJ7uKO6wNmoR6qqkmLk97KyoXLBvLVYg3JobH4fpLIXUI/WLAZEvue8S0V+m6hdyTldjM31X64b6m8BIDcMdiCfstSHzatXZYjtKZ83YRLDQuzmrromyriuiZ87zieP8QGkDQwrEYFtH7BfOP+8CL3WWj1LbQq2LOZhVPf+TUEk0lNWhgWU9u6FaN2PVNxfwTScoIWLYdrB6LgmeeWmNtayclxmkMa+ZEBohZsPhuRQur7VYxGZxFeCGIvjmoJYMNg+8E0U84uzzSztMgRM6hHVVzmclxkZkoVYlRduIzEgVjyo9IR9AmuU/bGMRVCO1Rv+sRBDLMSUygURthbmc3Eg9oqxEUSu0DQFCRQM0iU5eKajOBpt21h6W9+rXTlSorDRdXR/NvN6NEhwCKWRUAst55VhembpFOhsMVncMbbRNqPqq7ISMDnNtG7Tnd7xuqd+fY+Jm2hFSI4aIKh4pWWSoTWml8rS+0TYxI9wkVBqNrhygXjLh5xVlHEduDrfc3NxxuLkl5x273S1DPlDnldLOaK3G6nOGYnJqfRRBKsyPkXM1yaGCX8uNbHLJ9xphx9M7Pcl/ndPw7x2iGZXWnGwkWA6oBGrMtFKQoLi+F710TZrJJyXJpGA3EWXKiRQDmcRAIkswZUFHCmpTmiux4BAoHV53Knht0aA9LxZGhOpRkkgnUJjbE7RejFRrLPVMqYV5PXJejpRSECCFSM4jKZiCyH4cmcZMSnHL93SIX6JAiBZ51c4mxFGL6NedzUGhKlrsvFdpdg5rL5wX7PQHpAlSLFU1xkxMkENyIo48uS7aLXfVzVCp6jaN+/y7msLb33zF3xdD9FY+i6vH+l/KJer6PuNrbaQOhx9lLq84ns4EGstcCKKkDDHh3lKvnTIGl10bBWmc2olZCuMw8NnDx4x54DCNDCmRQmQI6cnJ7QbKILMzrVXWcjLYDEWle8AZSDRgqVZQfDzdczofOc8Ly+p5MDdUKMTgnmkWYjCjUZ2pV2msTTmtM28eH5hLIg9KaQMpjaRU+3UHlLWcWcsZ3Dgr6jRwZx+6J7uUQilurDrLruqWK9FmBq62QMVkk5ZzI0pjnR8ZBmEcAvu9EThaO7PJNmlnoK2W73JIsbVEWUCbbTw5TuQwkZlIjKxlYakLtZ1Y62cglZtxx5j2xAQaF5NyIaNYEt2uicFVRs7LqJo3rjKDqBuohVahzgktgZgbqWE08ukOJPHq9a/x3dNHREns0t6OcfcjHKb3AUVXW9CteKQRwrY5d7BEQiDkbDCWm8rdMPD+3XMnnmTb5iUR40iQwSJCWQnNoGbwoEONnJLCYKUVbaG1Sg+sLPoGRLm9uUPDwOHwkvff/xEzUuNzct4zPxw5ls8JFYY4kCST88S4vyPHyD4OJIk8fPY51EaZF+pptuR+ra51d7W5dZaliLMtXW5MumttP0OCHILVMDmDpVZT/lhFKHmyDTvljR0rGggNMgNTCMxhYUwnYhBubyaGnBjjwBgHe95q8K45aNWPQ9AApExIFoHHYEXS1TNboa1ICFb60VaWYnNFMbgv62LOQf9urXFaTqx15eH4OW8eP7NToZkhDtwd7rg7PCPnbNBuSgxDprmhDMFEbGO0otp1DcxlQVslJSPLpBwvTp4YzNtKRRdzsEqv+PQNXgCCRUZhFcLSSE24TTs0TuzztElz9ZooxYhhWhtSqjnXzdmwV+Np9LNtME8f+7LnX/+lT+/7ik/4nuNrbaT20y0sC6f0YDkkVrrYrMmmePWD6hYxsJEfsISnCOu6MC8z0BiSONyn1J6QxJFg7YaqbfUIlkAtW9Si2wI1le3acC1Bj+Q8euoEjT7Ec86eu7aIzBOpPRlam1XvxyKenC0gydh9V7UJnajR1TdsczFc2zBxixEvz1GHQi6Eka2iv4f0vlC9zpFSDJ6J0eANnIl0UTfoCWcMLqwe6bVGKRa1hSQkz1Gg6rp01W5a3MkVU5jIe2JqljsLIGTLTUmgOelFug7dVpypaPDcYStYsbe4bqM46aUZYYSESEKrsswLUSqhBlqolOwySs2ZgqFPBt6CQPw/j6YuSXslhsCYBwhlizw61XxL6vTk+ZPk9CXS5rrm5KompUvtpJSZBhgHoxnnPJByJqVMTUZWsPKHsCmNiNcR5TyQYyIP9hpaI3RFAsHm9GUyXJzyJ6O7SReCwvZkLq+1OSe+DqrPzbadrw45mSJ3IMXIkDIxBaZxZBi6kTJyiuWy1HLRtRqMpzbnLWgxEkZKprSxrpEaraaw0+47fNYdWLQR2ooG9bWC57jduXTEQDB6fZTEmAemcSSnxJASOaWrYnZx4k3XP7SfQQy/jUlIySNw2S6yQcC9rKJ5PZds7pA9t7P//F+UgETTaUx+jberJf0aXC6J+JqXSyHXZV/64uX9PuNLDI9+xeNfzmP/wvhaG6n/y2/7Qzwsn/HJ61+lrEeOx+9SypnT6TXn84NJsszVDYpelcaZMTF2yWKCOyEyDpmXz2/Y70amPLCfdgQJZK/Z6ECHNjMQJt5YWFrZckHuA4EKDVNhb01Z19kYdU7qqPVSRBcEgtOHUwygwSKb1J1W80DW0jieVmppTMOZVgopVfJQNzUECWZ01zI7rGJtIbaNhgDBiguX0iilsRRnKTnbrnr0V4oRQgLRC0kv9Vyns7Ks9jxkJQTISTbDYXkHiwa1qilq1EBrgXVOaEsc9pEwWXb7UV4bth4KhMI0Drz37CU5Dzy//RaH3UtanSnrA6gy5D0xZsp8ZHl8BdpIveBTQdSabzQ5o1JALVWuNVDVIsl5nWnlgXGEm9uBnHeElqjHRpVGC4UcEnM6UfJKzBDzaKQMF3rvvoHZItOARIAx2cayGGlnGjPfiC/QUAhjgaiEOBLS3lTqpUMkzbV/LtEIVFSq/R0jKoK4+KgENRKPwuHwjN0+MU3PuDncEeNgBc8iaEq0cURUuT3c0GphzAO1VlJM7G4OHHY7z6s25vOZss6QzNDXK9Vugyq5OEWYWrvB3wapF/UiVYqvv9WdBHccJVI1W45HTH3AnCBxRRIliUAU4t2em5eRlBPPn98yDgNjsEhKm1LnQquNTz77jM8/f3XxHVS4mw7cHG5JaWA33SAi3N8PHI+PhEfl8fTaap9UqW31OknL47ZYCRiDt7ig7HlRalGiZJ7tn5Fi5mZ6Tk4jt4cbbg8HYoiMeTA1jjARwwiSCGFCiISqhGoKHjpkkMjN3Y7dzsphiJGGR5UNZFWYTSNUxESsJJo0V3dmCwbp7/KIiJHIQhDG7BJI0tUy3InAEIHg+2JnxvoW+da4NixfvR/r9zRQcvU2PyDO5+NrbaS+/eH/zP3ygjxMnOc3fBYry/LAspyp9YGyKMvJoxdRT152IwW0FW3CYziSkhmpnEEptFaIEWKISBpt83XvxXJdFxpqp6CutdDbK4BDvgSPgtYt+rqWYgF7W1NXMswaFaftdijLt6qqLIttSMtsuZpaQfVS/BdCMGp+MRbSssxOJLlQnYkZCJTqkV7XzWu+yfRI1D+4sxzZojFYxfJZITbSUkh+rkK0ZHPfxaq30KmrUFbbjJY5oC0wpEAbAhVllpMxBcNq2oe7W25ubtiNB148+yaH/Yes85HHh89AG+N4Q04Tx/opx/UebcVyS91r14YBOwuN1e6jQQu+WINtpG0musRTTgOhBdpic6RJpYXIui7UWky5oGHYv+3KT3D1DqOIgPQ6l1KsQDUl7vKBKitrPNNCVz7Iptm3rWA7dvvrmq1h0ZJ65CkpIymCdG1xGIc9Me0YxxvGYWdag97iIoVAzolWM9M4sk4TIUUTOlYlTwPTYU9ZV9Z5JqTA/W5grQthdcUSnwfGdb0crxVn4z3DGtWZlJYjNVmmXhZhKIflUVrrzzNGaatesOwefRBrdzHsBsLNwDAkXrx4zjiODJIZg+liLstKKZXPTvfMr+t2PgSjvI/TxDBM3B6sk3et5sCs5ewMuuhoS3WY3c93K0g0YSljC8Nao8loSWQ37BnSwIubF4zDjsN+4rA3xzY57V/ICImA9wQjEGpzBzkwJKu7O+wnDjc7RFyyyZEBDwuNQdGNlOBF7bbGCuYgiFj5QwyB/TSSU9xyXXptoPQyXy/r22KxLYh/Mq+/R8SjF6j7+44eAPLreA1fcyN1e5M5xPfYHxLzfM/z28C8PHKYdny223E6nvmMz1iXleP5aCrfrSscqF80oS4r6JlxKIxj3mohco5buJx9MkPcDMeFmuq31nNW/hNx2BFqqZ4Xa5uXB37dHCYygrbr7wEkY/uVDY6zaArgeC7UpgyDSdBEb3CVYrBeP7VdRHSbK7ipeePBKfXdSJXSrtqbPHV+7O9mkMOlGG2jT68F1mITPycTbbWbXEFrUGuiVtskaQO0TFngdFwIobDERgyB2xujUd/s7nh590120w03N++xm+4oaSSJhZfDsDMpIVWW4wOtrFAXr0frkZMZ3H52UTPEZV1otSJNkVqRmFnWmRAyOWRuxzvr67U8gEKrRtuXlDaEpTdgvEAtXOATESRasW/x875i8lUqmBfcFSbiQAjZ1SZCz+NvuRHFVMPH8ZaWGyk5VOpwndUXLQCktCelyfJcoUNKeFjhTgrtUs6karVyxc6piJCGzHjYQ4Dd7R6C0trC+UxHMn3YjqN93mMRVXOD1H/vJRqqdWO1xoDLdRmLVbQZAWTDu60qK0ZFpDFNmelZ8tYVFWT2uWlkozQUJFV2h8DN3UQpleN5oVVlXQvzvIAG1rxYblYgZ9NbjK5k0usJFcsNgiKrEJpYDd1qxclGmAnspj23uxtyytztn5HzYFFLSJ6nM+cgZxNDFgJBk82XRaFWkzAbBnAHz9ac1zaqWP3XqrS1eBNHh/oEqyFsJoy7wXwhkJPLkJl0jF33zka5tkDbQvd9qE+Rq/GDonu/rrhoWyjwvWzf9fhaG6lvvL/n2bPnIIHzcuSzNz/CeTnyy7/6H/nok//Cq1efs6z/B8fjkddvFt68OlKWxnI0vTyCoqKMu8bxVBnHiEQ4L7Opfmchp2QEgJQJkglh9Iij54nYCnp7HqxTvFWV4hHKuq6sqylUd4PTNqAIehfgEBoxmKcZfROQNWx02vPcWFdFWMgpMI4r47qSvVVBTsm70HYxWTuWtVWTyhHrDARCsUJ/01irbWP9AZbrkO7PVwy89BwKtrn0fFNcGjVCToavS3DBKA20lmktUMvAupqB0jpBy5yPlWU+eqHniRgjt4f3uTvc8d7dh/zYB7+D/f6OPDwjpj1alXowdfWYMjEGxjhR55V1OXN6/Jx1OdHFhnFmZ8/1GLOvcl5MaV7rGWqkAqfTA6KRKYx8cPiQ8/LIp2crei5rYS4zIUXPNwX3cgWa/05H54zoQIo0GrOcWHS1BpJ+rUNMBteF0VpzSLbvE7LjiM33EDvuPOwIcTAj4W0YbN7JBukqMOYdaTAyjXVuDk7Q9IgMK46OYj2fSmuUubKGaNAPME4jkiL5PHJeHkn7zFrP8PA5qrpVcpnN76oJ3TmzcgwD/Faj/etK1eJCz1brFIOVjAAsxURRxwjJ68UCEZFGDg2Nldvbifc+vEVFvffZbMW7mLDyMFpHgNsXkYUDx+PCw3llXRun80KKJ2ppDHHwXJwyTZlxzqY2U4rPa6Our3K263iORBVKqaxroXN9g0Tudrf82Af/EymlTUkDbVcFqmY4dtOO3f4GaWKdpqtSTpVWFKIw7nZIgtylwBBT0GlCWSttrtR5oS2WFyU6bBYEqut0upRTioEQRysITl5C4o50d3kuFPMLmqydfPNl1uYJ0vclT/gqQ/OF+38dr31rfK2NVBT1C5OBgf20JwbhZn/L8fCMdansDwcaXIrjtFAWV4kIBrLH1FiXigjM80oeA9OysiwrqFIcX7Y6B9d/c6/8WjG93y4swC74eBVd6VW04hNIumez5SAuE/3J6BsDsK6+AbtOWWuNMRf3iC6EiFpNg6+6QbVo2ype6pUU0yUShI3B1ceWgOiFheJJf7AYbWu5dhWh9kVh38O+74VM0D+iVXU4Qj1KsUR0cqXxFLPJ87hig2mOeYsRp1HnYQcIy/lICQVYcWLiZpz6z9bMcSgV1/jTjfzSWiWGyDSMqFaGOFFlNUHdKyqzOGQhV9/HXEq9XLrtEvbXOZ34wno2+FCumin28/zWZRevcdnCOO0pKzOIQbJBxuGib/h0d+lz8qJSsd2PkQRMKb4bUevPlHImDdmaBTpxQq9zcN3Bku23C2FF2/azk4XU9fe29eHwsmgzgoL2GWbfMyaBJMRoEVOPBMHlzoh+Duw7xCSMY2L1fmWoOSXruhJDpKzFjE9ol7YW/dJxtZm33noDMxa1GtVcAilajjaHbAr8yQSOQxQsNdgnHtt8jtFgt65IswmwbvPp8p2v19oG0/Qwx+dX/27amkdLenk/2BRH+oW6orBcf2WftrKRs753RPT0fH3h/i9LR30fQ6XyvT+xj6+1kVrO9yxzJiSD6PbTxDgkfvTDH+P57S2vXr4iTgP3j/cEx4Zff3bPq+8+UJZCyCZjo1gxY14qeTxymheWxcgQ45hBYT+NBLGeSjZ3bNEtxSjlTStr6ZpodYuqitciLaWyrM2htW6sHEzrng0mWdNaX/L2X2sBmmywIpjoKyghGiySU+T+9syQEzEqMWJkDj8mGz2xYB6taehZbYnp9NnC7OtCXDwvSCZIQnRAGAEhYgXEKSdytgjQVJ2tbUK7mrzmHQoxsnnZHYaULU9YEKnkGDhME9OQSBSirkbJbpYwjsFgK4sULXJ87+U3WcuCSCQeH5jnV6yno12DYsSF5u3Ga22cjovBppoQTaR4YimPDDVxmA68uHnOvMzs80SplcPhljQdiOOEZM8FOV2aBhTfEHrBeG3Wd1KVMUdSGKmhUOIdKhVNxplO6UDON9ZU0GGiayN1yRW48n6p1Hl2IorlT0JKTONkDL1hJObsPa88Ct6MszE+WytWXFqrnfcArVTW85nleERThBwJKbG/uyGNkdeffmxRuDaSb4Q922Rue5dTatBcT7GtviaWiwKMWjQyl8TSIBXrWZZj4iCjzV3vNRWSku8qYYrEoXE6PRgE6n3i1rqytKPlZ6zPIXnIvP/BLfnzIx9//IpaK8v8QFnPLHlHKDZf8hhJSShLuYLmK4Vi82o2qbBjsRKRUirL0shh4Ed273GTbrmLN4xhcIjWvIZeT2YmxxyFDsFJ81LtCiGvlFQhdjRF3Nn0fGOPyGuFsiKtELDr1cTr4tpKXUw8mn7Nk0XwPQ9lO4XnA7sR2nJC0j0dj8x424ZcNqWvHD8o0Kdf8fuX0Am/ZHytjVQrM7WcaWJSHzklMglunrEbbcG+KQ/sHnd89Guf8OrVG44Ps026tZCxJH8JAWaLJI6nhSaVlITdlKi1MR8WUgzEoFy3QFH31IoTJ6wvlevCbZGMtTrohbPVo5V2cd3svQBcdumJT9ND8nbBjs34dUFMIwjkbEWDw5DJOZCHsB0fTeltv21cksuKR1n1aZ5tOwKxep7ttrURt4WQohJiIYiz55x6L82bCrqHKD2C6DVYdOpxXyyXerGcrGDT5HiqwSgdjwj9AO2cxxhJ+1tyWXl8PFKrUuoR9Qr91vCGio22mgbhuhTWakZewAusZ2pbGPIdd7tb5jxSK5RSSNNATOYMWSM6J9H0KKqz8TZUzb1chRSCN5gd0DCiUq0bRGimahGHjZK8bSAb08//9r1Em9CW6vkJb+KIkHaJEJO15rBGY1eRLVvk0lGALaLCjtkKiQtlXT3KS0gM5HEw6DZHJ5u43iHmbHQqtNVuCuZ16Aa39k27lA4BWg1dadWifRGQxT5/9HY44jJaSRmmRNwrGhulLCBdWcTWUXVZna4Csjtkpt3IsqxY2ZW9TpcVqcqcJmoy1AU1+aIe+W35s2YagK1VljJ7FNVY1gYxMDBwCHsmGTb9wb6eet7TZ72vEfE8mPXEAlBjZJm0IJdrrl1ReQsaG9SKtHqFVfiUUDU5qBCQFOlqJRJky2le4l2H+QRbb90R2iK6i6H6Yjz1/QzRD2aoLu+rX3Lf9x5fayM1n04s80jQbJMhdbFWq6WZxpFvPPsGN+Mtjz8+s0s3/PL0X/jk4884Ph6tIV6tDt8EmirzbAnfGAN5OLOsldubHSEIKTZy7PG2xyStdvEBbCqZllprxdlAPaJSL5y9mijeUdg2CUB1axqKf4KCRQM9j+WbTmcLiqu/r1QejmfivBCTQyWw9UzKIZFcBUHEvnOIzgpU2OrB9Ok0wot6VQSTTnLnOUZvO2ItvAVAI47ouJTSpX0E28alqEZadX08zz8gqxmttqJ1gToj9Yy0hOgMGCNRCH4sdTOU5swHdtOBoBGDdB+sHGFZnUHmxd3iWngqdNZVkECr1dottEYTi1D2Nzc0VUJOhBQtKR2vOrt2o78Zk74xXEVDwdvTx4Sm3aYY0XTFRHU9aa+XDaXDcWazLqonJgO1mkqDX6/gOYkNMuy9vN3odwc5ijHlNJkaeVsnWhDGKOSckdao89nETdVyj2MeSAGrL3LSZt1QpL7DKkaRdzvlWKa6UdrqijDWnwK1PdL0TA4jOJJapVGDEpOiuaFZCaMQh0iLStu6zva1Yw6R3WfrvtZKKQsijbu7HTlHTg+F86kSglCqEYDWaLWDPUdsJKOL23YB3KxHWUqWy5rijmnaMQ07hjiQvaixeU7Hzr/VRg1psiLxvDN9yGqOgNbmUXBz9Ss/jx5JqYo5lkWpa6Et9hrtqF6fe0o/4WyVnN4uSDdX4tpB8Xu3B3j7l6vfvyryeXvo933Gl73X5VN+Exip8+M9530kVKsPitm8UYmJkAKHsGPMP0YplUO647d86w13d/+O//TRf+bzzyPnV69ZHhe8ZQ2tKadT4by6p9Yau93A7e0EAcZU2Q2GUXVceW2V1aOj6oak1EZZDUpYPd+zrKZTZ0bGqdyqBuMVaLNNWkcOzCP16roeffUoClXvglu9MNOaJZ7m2bxbK1OiS+eICFMemHJGBFI0JtcwBovA1AsLYcs9XEI43xzBGWjejTVnN3oNZDFPrtPvw9VSdyOlrbqhqlYT0yK4KgShIrJYiVA90+oJrSekPpqga5uwhokZZLfh7kbb9w0lRm72z9kNSgxCXc8sy5Hz8UjT1ZyI7uXGTKARxdvphUgphWVxfUUg5MTd4WCKBMHUC6y4tKuq2mp/kpfqZQWXANKld0DSCEMyMouXESCZEAfE4ZvrjfLKx/bvqNAqdTlTS9na2ZukUTI4tnsQAkLb7Gjv66TJ1Bz2u52RcmKE1NtrVJbzkTFngpqxy+MO1UQeMxrFxOT9+4VNd7DSZLZN0IV5jXRj0OKTLtliDtt5ObLWyphukMnO5yqVGqHlhk4VBgg7Ie2iGTdt5typtRNRFzGGi95lrSvrahHU++8dWNcdn4YjrZ4JBEppNCmoQCqNZV6tl1VvXeIRx8X9sPAi55E8HNjFHYf9Lft8YJcnBg2ma+uRvkh0lffMzf7OiqsnK5WorbCUlbZWi+BatXXX54/DplqgrsV0FOeFdrYIUnxNyRUkaGhMX+xmoAx67eutG6e2zaareOzKx7pa79/DqPAlf11e/1Xjy57/1Y992fhaG6larB6IZG0arCGdNRbs0EkMAZIwTSOHsudwsNu6zpTHE2Ve7XUdugDzjpzxtrWTqI0WO1QivU2Ned7tQqboCeGNVOFGSttF4fyJDeiCtQ4V9dqkLQTvUAp9yVhzQ1Nrtu8Xk7tZah6s9j400r37Hn253pvoE1kde2+5bKy+GW2qAdqLNb2CFTz66VyvvhtaJCn+vTYPTy7f9dpwdWUOi9DUczK+gFu1/EAtJl/TVj+4xvaGbw3Ty8MUKoYdqkpMIzGOtArNmyP2yEddY6w3syveK6hhCu4SrbW7WtBLV2++uKN9yPZT9MrZV90MBRsLS/3nNVni6m2+bN2qRaJdeNY2RHHixcZZf/r8HkIpdHW/LmGUYqSlhMaIhrgZwY0wsyXoOwRl54IOFYo5S0E75Ne/o0cDTbaaqU4cIgghZkSN/i2hMeTBbilbPaJ0jT026GmD0fDVqX1pXF+DyxzvtYfWa01IOZKy6dpZTynLz1W/PjFY65De7XlplWKt4KwPmgg5jUzDninuGfJkGn0xYX2NdVM6MSdGXPXf3nfrlP2EJEFfEGwKLT1QdLhELfT3cytoZ/X1dfZkXl0ie+USaG3Mc/eadHv9tUnqhkif/H59Xp/+9sW/vn9MdPXoFfjwm4I4cTq9YTpCUm/sVlxMMWckJfdsrFnd/mYkTZEfuf8Gv+O3/FZePfuc/0MjH0tAm3X0tJ5K0Xv/BNZFWWOjOOEhRzdI4O0umjeuMzHXLjO0rJV1tZxUKZ5DWgJtlY2ivnncYKonrsxQjTntXrj9zNkghOAG2Cim5jjlHBm8FXRVaz2wlJWlLG78unyL58MCSPfYfbGL9xoCWDG2VXW9QxPT7c0iK6lFlOQGTnFKk7+fmVH1jcQ8attxWouo9/cJUXxjrARRQmjkQckJhEJZZ9b5zHJ+JKqSJBG0ImFHyAGIm5STQYtmkNOQQQN7nqEBlvlIqZWc33D/5lMeHz+iNVcB6cffKovMvDm+4VxWxps7du0ZmUZKkyWig1PvVS/lRp3R5pGqjUu/IEeg2JiA0rUTIzFORvII1rXYLwTqka8RXKx2zQKoQlsL1JVERUMj5oEw3hKSyUMFFxi1MHA7HDzpRMDERmMKHPZ7V5swGNo++YzlCVeoxSJ8ccadRNIwQhDW5WS5UD8XIsGp+cHqyDTR2sy5LJQyM9eFooUhHTjcvGfsw2TrdQwT+3RDksRhuGWII0OKplwSG7WuzGuxOSa9iafN2SbepLFvtW50qveTGqdEbsrhdnBikDAfLZ83l4Ks5qzd3t6x0z2aFw53t3z++Uf82vk1DWHKO6Ikbg/f4OXdjzLGiffG99jHHWNMTCGbinpTahNCsu825Mw4TeSciUNCktHrwzigIXKO582hrSY2CdqIraFF0aXB2nzdBhgiHJJ9R4f/aBd4T1JEUqLF6JBhj5zcKG9GXhwF6rWdzUsDrhzSL4mkeOveLzz+ts/2FeMHM0lfHF9rI1XWxaVbep8a9Q3Foa6o9M60eYgGAR72vHj2HBSm/Z443lsLKbU+LHLVunmrh3LPRt0Nt8VQvADWVSa0t8rQrTDWiBN48t4jnQZaLxOiIyjNocJqOeUtaAhByMm0x4IX6/ZixBjFdMzGAUQpPtHiYm0grG/W6knT4puQf7JepkxvlgdCaC6TAubRdYhOldAirS1Yx1AjSvSpJ50E4ZGE9h18CyssHDH6OhCsUFO8riom9TyaY/a1UNeFGhNSZnBRTm3FDETXIaRHLAaFBDGW29RukBAZxjtKUUJ8cIkqyyGYI+u1btVYmiqBpa4ULQSSbfYRjxDEjIBb4Gtfs0ehVwHV0/EkkjKquF37ThX3udANmsc+Hleax+3Rukjz/kvRYMuQ2WjbFu5un7eF7HpRKZAAOVlX6SINqpFYKg4vqxWJstXYuIGN0RiGYtmlfkwW0XtNFgmCETdqa56vNcdJQmQcDqQ0MIwjKScGGdjLjiiRzEiU6M6YHX7TaqoPXt+F8EQdQaRHBbpFgq3ZXIjR3icPkWEyWaD57DqVXnoQc2QYRhKJfbtFsnA637tzBTGacOx+PHC3f8kYR3b5hjGOZCCpUFFiC6gYBNqZmjGmTabMHCnryq0BU5z32dPXYujXziakCT2rOQEaIgzZ5l296GOCbOrxuEbgdYR0HR0BGyX8eu52wWzeeu6XGaDvaWT+KwzVDyjd9zU3UnVhKWfaYpTbqIttVpoIGpGaiXoDEo1urcIwjHzrRz/g5m7Hm/mRPGUe79/w6uOPN7aYRCFFKziMEqmrssyNKMVkk1SpdTF5/1o3KaHqvatqEWoNW12OMcAvsNp1otw2px6yQ6/D6RBNlMjN7oZpGpmGkcO0M+OUAjFAHoxSiwgaLB9wXhbmZfHC1dnaXyyPzOujGZx2QrZ6r+JMPE94e6deoyqXDYrUhjWHC9byPkqkNfNyRa3hkuhqm1yFGH0hGfXKdPuw65QGE/rs6swhwJCF7N8rR1N1Rp1pVWekOK8rJJAEHEAGh4d80Yuxz0K0PAIi3N69ZBgm5vlMfPUpsEIzBmevNQqYDlrIiThk0jAQsxupnuNzGMqQyg2/7KHSZvTsV/VISl0RwF5vG340RYhofcAukKA1TIQuYSVIyASPZGtZzZOJgx1HHgjZ2pxvOYjSp5RYbgIu3o8fq4psJETAEVuLbtWZarWcPL91iVQkCq00HucH1vVML76bpj13Ny/Jw4jKgEpGHiuvjgOilTwmYlL2+1ue3b0k5dHyaSESWyBXy26FZj3cLiKnFymoDgurFzdIf5x+6h028y7doXf1Rcg5Mu2MnHM+m+LKWquruIgZhxAYhz0hRR6mN4zDC2opTMOBIQ3c7N/nvWcfkmNmIpOIxFKRUgiqJHDIz6DREAIhR2RwbT3s+rRlRVcj8UhKSPS9AEFW/z5zg+NqXz9lSBGGQHNCBN412/B6g1MkJyQmF8P1LJR6DNX3mQ1qvNRFbeeuT+AnP7ct6786AroePZZ7On4wK/W1NlJrWViWQMUjoGoeb9BAaIKEiVgFJKMMQGIcR779W36U0/nErIX93Q0ff+c7zPcPrGUluAhxioGcTIOrrjCfGjEoebBimLVaBXiHTIwwcR0NhU052YpJw+ZsB7w40qaTs4LccwouKgmIJ/dvD894dnPD3c0N7z17QYqBMQpRhDgE4mCeVMgjhMiyFOalsNbCw+mBta58fv8Jrx8+NcbbefFcWfXIyIplUXFWYkGr35qiLdKaGY1VZy+YVVJJFrH2FiVOFw/BolhgK5q0KMKYdTlZfYmRPkwJeoiJHANDDuRkuYDOhJIymwyMrjRpiGRCGpAwXhn3vvAaEgLDuCOlAZ4J637h4eGBlH4NdDE4Vd1D1+qQVSYOA2kcSdNITHnzgv2iedhk3vvG8O10cdgM1UZe6RFN93gdh0t5ssjAQ05V2LorG9kbcAi2wdKOtNWLgdLokPaE5MH37y61pQb35WA1Mw6BbdRQx5AvShFYbyNwIxVAC6WcPHoaeqxvRorKw/k15/OjGxQlDLC/27Pf30EY0ZDRVImfjUirrh8nHG6f8+LlB+Q0WpRKQJaCzIupXTjkdZ20la2OR7drq9qjd+9pRScGGJJh+VDruCwSGMYIMSGh8Hi057ZztRIEF24ORKbxhinueXg4Mg3vUUJhmm4Y08izmw/58OW3iCFSF6udCuczrCuiSm5CwuoOG96Yc8jIaKr62iynvc4LuhgJSXLyvcad10WRtcK5oI+zGZPbCaYdLYJGh+Q8N4gkEBOnlZy9LMJyxqq9j57tVd0UbAXh24/ezNVznT9o1PR9xtPXesx4/ebbfYEfZHytjVTzWhmqeTJNzBNrQZ3s0mhkv5gFyLS2OnU6ME4jh/3EwzSSBytO7YKdWxU4solOliKsxUCY2nX6rph3bw/h8oC25sn7DqFhsM22h5mn3fu+mAMpxBDJ0XDuaRjYT5MVCAZXSMmCJFc06Pp9ybrfIsKQrdBzyJP9LsqyDrbvSrjASvYC0ykrasdafRJXa1oH3kVVqxXGwoURiHnCfQPxkOOCGgQcUuzR4iWJ/AX/6u07e4JZPVpzgkV/3tvzf0Pdgnh7BvP4b26esS4zs4hp/a0FtDDkHYebW8bdgXHaEbMx/tiO9/p95a3j7cANl5/X+8D2BtevkL71f8mBd/aWPFntHeAJwfM/oYN8W1p8yy0YI7JdXri9fd/Ue9R3BfHIlYfdrLGkbV4Gn/ecaI9pxK+HQXkuiJwMgsx5IA8TTZUYLGe22x0YhpEcB2OzNs/hrhYhRhft1daFnB2iDHI5TxuEfDm7HfLb5p026MzZ7r97L7UYAy2a0dtEoqtlbFK2xydvHNlq5Xa6Zcwj+2l3KY7GDMDGnlQsx6vNmLm9z1aw+X1NDpBtacimPmL0W+36arBWdLGSjyC4s9ENiF/pjdIavlAOoVdG/voa2/y4OHPaHap+/1tz93reffX46khoI2lcPfcC732Z4frq8bU2Ums9My84E1XBJyDrCdJsmH3eY4WoB4SR2oRSLGp4fndDTEJbZz75zjPO5zPzfKbUdVuUgjDPprdXFUrD8ygOR3RsHDZWoWlk9gYGzh4rlWVuHorbrEgpeIsOQYZk8IMEWrQFGxSmnLnd7Xm2v+HF7TO+8fI5MQSr3ler6WmbQrYBOSHCMERii0gcPJkspJCZl0dEC2uZMXyoWFv4shqddjGiiDYThd0iQxVagFa9+3E1Q2/rRMzrda8tBPPM4TLJc7LEujV2NzXoC3SGqSh4DGFkJaval57HaoAUtB6BFZHVpXKgb/t2HMGXpPXmmXYTysiH3/wxxmHHcj7x+qPvspyOrOcz5XTm8OyO/+kn/xcOz5+R094EQdWYlD0Y2tZcX80bdfhqQoYr2Dbotc3x92jb0dq86UZCrr5HIIo7TFe5KNOpS6Q8mKd+1ZCzw13WrbUSmhMNxLNbcjlwUdk0DPsWhlzYgmA1eBZhWggZo1iRbB2REOwq+yZX1SBNgjCME3k8UFrlvfd/lGVd2A17xjyyG294cfcSIfDw+g3rPLOcHjm9eoU0ZUrRCriHkYG9zaukxIxrFPbQNFydVIBKkJVN5dsjU+uYaxB2jIk8wLRLxCA8vJlZ67rRzmNMPN/dst9NfPjeB4zBcocvD8/YDRNohFopbeVYHllL4dCUMZrT2eZCK5WcJ7KYlFdy+Bg1cdiIEz1EWKODlh4MgSJvTvBolPP1/oSGSH75nDglRBvRjWn1vJPRzb2fmjvUza+ttj5vXNi361qo/XyiNeo6oxfWYZ/oX2ZEvmhovnj/2+OtNbLdbemJH2R8rY1UU1N52Dx3bZb8lTOqR6QlIgUkEqQisqNpRnUCTJ1hpyPTNDKMg1fHL7QWLpGUWnHuKhAWcEfWSBmiW07l+iI/2dh8dKbdtjFo96TNY8I7vGp09Wq1NtAxJnLKxhgaMrtxRIJQmtj3VzNMGxyCGQ2jrAqJRAgw5ol12AONnOz7mwSSQSzWUl2pq93MKe2RlP1ObDTXWAuh+k8zyj2PBqDbbz2QFOIThWtXWNg84I7bXyJPufp/C0jVu9YqXGh2/rwtqnq6IkKyhbDfH6BZAXi9nzlrYmmJuQSm6Ya75y+5efECbUahpmEK6bB5sdfv/aUeZo+g5DIH6JvKdn7eiqo2D7lDH30Tbm/BX/78EJx6fplvl3Pt0JI0QnHyw6ZAcDnAJ/kI270uhkyNFEOPpARHHqKJqPbcpXjW9CqcDTGSUiYPI+N0IKSBw3TDNFgB7DhOzgi0coBaVpblDK2R3HFpzfQxzYiz3SwEuKzJC9JxLa3ToynfpP3FwUk1KQZa8kjKxR2lmERYEFM62Y075O45QYT3bp6zGybO55WHB+s6XerKWlcqYSNp0Rpamre8D0QuXYs3UsvVz+LwvgjmWCvm/c7F4MC5osmvUhRvtmkOhgEkHl1eTo4vJb0YanRj+fXpo/3c6JXG6NVMfmKU5MsMlTx5zN7z6X1X7/b0NddDeOu533t8rY2Utm6kfMG1Bi4ThOu9VV1BAiIFkSNNR1q7MRJNO4MWQlCGnKjFYR6sg6t1VbbJExbhNCvhUZ36bQZrmhK7KTkLrysPJwyuMA+wNWEaLe1ryujFPVgjKViexsgEmmyTTEQGiYw5M02JlCHGhrLaZJfOemoOs102HxFbKDGY+K7VYt0SY+Q8DyzrmWU9MS9HlnJCZUXryQ0Vl/2xQ5lNfP0Hz5cJNM95tAujyNaM0+iD2jmsDkF4W/TmOoMaI1Esf1MV1qqkEFnWhdIWb0RnOL+pPQeD+sIJ0UStJzSc2QRWCYhYM8cncwQ7ppQzu/0NOQ3Ih43lfObx8Z6HhzdMNzeuWu4K7iF4pSRPoaTNyMjTT7h6Tt8ytu66W73adV0ZT99nW/QepnVv2No6AwZ72dt4VNVzfnKJ5Du7SxRj7alFZpZshw4bdTfBYjv/Tl5Qair4DWliwISYKndOIzlN5Lwn58p4GBhz5u7mOdPuljzsjVKP5YP2u1tqrdzsbtmNO1LIpDhYtOyQ9hIW7uUNSEPDxBBMgeMQ1E+VUzzUSA691kmaMRHNl2hUEio+RyRu7ppoB6SNZDTuPA8U2qYtWJ3dJhhFP087DjkjKgySkQrrWnhcTixl5fPTPfO6ME43jIc76lw4fX6irJWhVKSYgyClETwftVX5B3MeRYWgBgXGapHNelpp92czHDkbGUIMtu0djMGjVpzJ51OoP9Zcnm1ri9KNkP+s1Ri1dctJegGzNOhF6gYDvDUvr6ftlxmtt56j179+0Wx1q3nRFP3e42ttpKr21u0da+9JVU8gSoW22qqVM8iA6oTpywWqkx+CNPJg/Y7MSBmTrDrlfF2tPUTzjrohwDhZu+dnd641l7yIL9imoBj01NJgkdkYyTGY6OU6o1pZ25Gqs9GmR2eqqdUSDSGzTyNjSkw7F3GNDZXF39tzZ7SruOUqihPjTyfJgHnB4zgxnEfmeWZezqCvqTXSONPayRof1h456Waktli+GYPJIKMLNt461t0dOzUavfVuMqjdoIZKyuoK7magYlBaVerSiBKYl4W1Lk7nF2NlVttogjYkHhGNUI9oOJnSgmCLLLwdSTn8C6ScyWlCp8qUR1opvLr/HH0zMk4jxGQ5FNeOdfTI90mFbUF9iZHqzsGTn/rUrl09TqfhwxaZ9HeiXZ37Wk2sVnXL520ipnqljOCV2ZfoH7TaZk5vY381Qm9bfnFr/OhkoyT3/JNg8zqlkZQnUt6TB+Xu2R3Pbm/ZTbeMuzvysPO6r0gOA4fdHa01bg937Mb9hf2mxdZHUNYwcx/eoFQ0VEYZGMOIhA4/mbdkdtPKN6i6ISZNLOaqkiwWdbV80WYKHr42BEPGpl0kJpDYKG0BglPwLTObY2KII1Oy/lrlcaWuhXUtPMwnzuvCq9M95/nMy2liPOwoLjhd14qujbAqsiqhKlIa4g0O1WFR7dGtGoISTAqF+bQw358IQybuJmTM/nin8XemXk9YXyjnXS+0M3Kbl4w86WagFmFbzWLvzFDdqe8RtRsoeQuG+1Jb9BUG6mpW2RK4itr7454rq10x/vuMr7eRaoWqyTcU9wh6GGCdzx06UNvcxT0OTaiGrVW6avVSA7kkPK89AI+Ze9F/wwRZ7RicWkxkygdyTigDSqJporY9pmmXoCVnBFoh8FqPlDbbRhrM2yplpdVKjpF9GsgxMgzdCPomhWzfC6D3jbkQ0MThJV8QCC1aqwvDywdaM02ylAZaLZhwrNrmJbaJXDZa37A61ZtuBMN2DP2ndsZaU2c3Wm1SWRsiK61Z7qHWSAqu4tKUslRCMAHY3r6+esO8ixEWVKMZ8lbRtpi6RugbroeB2/Yt9GWyHbnI1hcqjwPTbs8wZKsDun7dtmi7BX4yGa5m4TUcdxVBdVxrG5c5dUlif3HZX7zN/oe+9Xh7+5kbNKobIaUbRPMgNipyF75F/Tn984NfT1DpbNS+ueCkg7S1TAkS2U0Hnt29xzjsmaYD2XtYRYnUZmK3TczArMWcPBrUsjIvZ+b1xFJmal1QbZS2EsUYhNZCR2jOvtSel3Q4a/OKAsSQyNMNEr2QXwKtrZT5wdltfqbE8qShE4Ba9cChE04uRa39fAZLriKwdeC+SFf5XJKwtZUJ4hF4bVZ0G8REYL21wNawsF8nVaTYzU60r9fsiuZ93uklyGniBgU31j4lDSlvT77HZVpePKWeE++CAt2YddX0tz2rLTIXfTLrwZCSy2v6R12Zpav5q/7Z14brN0UktZQjca3mSYpC8JB4tWpYA/4MHqlyorGiZJTXqEbWNVNboumJPAi1RetouUnA8NQbcIdaGywoISjrYgSDNB34xosf57C7YTe9YJqeE+LEML1HCINh8tk6puacEeC8nFnXhePpns8+/zWW9cTn99/hdH5NCsKYDE+foomDxgylzdvmpggSg3X1FNdWoxsKm+MxWQ4jtUDN5p2dphvmkGlqRZaByFEeUCIh7NA40Df9XhXf+t/Y4raiRQ85HJLpU7GVSlksEio10lpgnRearqQYOO1HUooMOVlL82b03BACD8eVea6c08q5nC0hnyJJLA+jOjmR4ozUz1HJaNsRghW2AhilfrCjaVZfYptPBYE4ZqJmbnNgPOxNi3AYNgmbfm4t+QgXA6wWFl5HST1pBzyhem/IXq9/anSyRXckNIQvGKo+zKTZuZUtZ6Rs6uJau+715pSEnkzXZh66KlqKXTv1yKwp2opFGBIIYoWuRhW1DbZ5Kxd12C2kxDDuyMtCCCMxVj54/9v8jt/2O4lhIMe9GYd1NWJNDKxFKbWyrAvH84y2asX3deHTz3+Nh8dXPJxecVregCpJlBZHlraHrEhqVKx5p9bu5Fm9nTjUHFUYxzve/+b/wjA9M0NSG/N8z6vP/v+s68lRggWJQh4EglIpzMuJELLlqZp3zS7Fzng0ybGcE5Iy8hg4LwvndTF0xTUEBesjtdsfSCRSHNDFhXVfndBhQYMYzb9qf5lF0hos4joWWCvSjDwVpkw8DIScvLvzJatlAaXSgm/uTqZoLveEti2qUu+MTJdZ8/mkWH8sU5MxRxB1aacncEjHA9wAtauI6MqTujJPT3NfXPlu18++ek6pv0kiqabR8yO6ha5WT+ERj3sYRVYqM2a2AA3UNhn1WgsSXa6nM7Qc+ujOwBPdPaB5bZTVSgoiiWm44bC74+bwHof9e6S0Yzp8QIwjh92eaZhI0RQiRITzPLOsK/cPrwiizPMjqkdiWEkBcsTyKdoIWNtvm4CXKEEcn/ag6eox3yt74twVJbpWWY2VnDKpGhspSCKIEtOOEHc+0awFwVIXSqto174T2+DEYdGrmWc/HLIypQ3xInpT6WgxEKO1SegySq1aK4QYcKV4F/jV6vUe/boKSvRamAZtsXRKSO5Jeo7PoSx5AoT62KBQSOKtNwRvTCeb87pFUtvvXAxx9+gvlmrzYDYlD71cI7qR8MhTuqG6eEGX8RZRYjts6XdfPq+3X+BirmyP2aQFdMthWa1OvfK01M+FXME83bO92p6kR1KRGE1qDImM05672xeIREQHUGH11RWbElNCEebVulzXat2TS1k4L0fO85FlPVGbNxatxeoHtZpXH3pk0CER3ZyvS4QgBElMwx3T7gVrKRTvfB3j6IjFajXQOBIQPB51UdjLhqrbrY/QOzCLdzaozZ2/rQgOwUglmrIRlhy+09XFlpM/14OTJ8irKqwKxeaqRKtvs1s3Gk/n7vYe2rZIpncBv5Al3v4ulwjGAlGXY9oi5qs5vDlN6j7YlYP2pfddP7sviye7wpOhX/H79xpfayN1Xj8nrDtvU+CYt0N1XcuruHFZvb5hu4AES+q3ilLIOaAamfZ50+RbFsebXSS2NqNnw6Xdha6C1MwUbvjR936C9198g8PhPQ67F4Q4kqcXVjsSEymYkkJMNvETmZKULAHaakaqvSHKbNhymwHoeYKqYnpucjGk0mVwYFM56F6NamNdu0SSIxFlMYxeAjlmdsOEVOXu5gVC5Cd/6x/kR7/5OwAzLsuy8O//4//ORx9/h7UcmZfPPeFsLTAM1jLvvrazJW4b3mID+gerV/hXhdPJatVKUWs+6N8RMfi0VCObdAbTtjAahC6K1xoqxWAhDdZqop58kYwmiGoxn/mhcoHPN5hBxOcOXJhSffQFq0/Rw17soheHaGMavtWuHiw3p5tn2o2ezVNxncjNcBpVzCKo1mh1vZJD8gjP65+0rjRmTDYnuT2s27GFZq+t5UxrK1oLbdNzdFA07ZDx1h0cm1MV+1y2DQ/yNHEbnpvadzRiQoqZaZqMVq3WGDRGpSYh5oZKZlkL98d77o/3nM+PvHnzGet65tWrX+Z4/IzaZpb6YMXcMhJaMIgvgySlBovcgwSc13aFbnjPp+WB168/4ng+ohppBGo5W6sMER6X2chPrTtAjZQTu/1EjCNDOjDkkd1uzzRO5OiEIy42W7WhxZRZbqYdIsJ+nOyaBYgpQTZDILXa5XXOhgYuLFmH3ao6/bs21lLRUpEUSbuRMEZrixKgakFr2MpMrvX1lItxukB3PYpSy9V3Z6obM3feaysUdXkScZYjljMGo6c/cdL7+vN18XbEdD2+0vB8ATB4e7199fhaG6nT+pq4FlI0eZiAVZk3h2p6p1lV63jbq7Cb9qS8bBhuHixhOE2Jpo15hlKLFevi3ke1Lp3mpZs4aitAyQzhhm++/HG+9cGPctg/Z797hoSM5BskJNtc1Gqr1CdGCwnVyJgSOQrz8sj59Gu08oa1nDnPxkBy38iaJ26Yue+rzRvBdUPV8WrfZOo60w2OqvXcscAqkJPpgUkT6uEFQ5r4A//X/xu///f+323Ba+Lh8ZEQ/t9o+984z59z/5gpdeE0P7DW2SZ5CKgWSlGTSmoRNJkBdVjBEEFL2q6rbYK9CaSIkJIZ8NpMUqo2z5HAJbpQwJU7tDUkFAsKMCJJbWf6i6w2zmqyrrMvT5eWF6Fegs+noycCunHaZCacRardQDnM7LJQzeGWrY6Ijt9fGSkEpBspo29bgaeFxFb87c0B3cO98CirqYHojEr0+sAetQGYrBW1sC4P1PWMlpW2nCz6j1buEAUSB4P9OulEG1pX/yQjJ+Rx5DBljuuChERTK5LeTbZRN2+fEaNSoxCrQhhJy0rVxsPxgYeHz/nou7/Cshx58+aXOZ0+I0aIWYkhUWRPVHMQg9ffq3P3wNqRGFnIhpEDFpblyOvX3yWmB0KcCGFERJ2NmDjX17TVyhZ6+52YEuNuIsXJpI/ywG6aGMeJJJCut1onzbRSEW3c7A7knNkN4+YsxhQhe5qhFru8VZHIlh5Q3zV6Tqi05v2vmrE4YyRlgRxsV45qtZDVYPwWurPWD+taK7S6kaqb4WqtNzb1km8142h7oSEUdkS9KL75PmFzthupbQ1y9eHX933Z6GzTL3/we73yS8fX2kiVYu2pWzMpHHGPU/GaI5/IqpWiJhxqxsmSsbVZV9BScOHRBkEJpqRCTEZ7bdU9+iq01L05906asf9KKSYK2TA1hmXxgs6zbUZ+zMY36NGDRXKtrbS2mAfbWpcqMwZOM5HYWguaE7HXZHUvJFpU1L1M661zCfcvvai6mGo1+m1rqLr2XhBy3jEMe4Ik23sFYgwMQ+bly5d865vf4nQ+sL8PlLJwnO9Zy0zVhdLOlLrwQGNdgyl0hMv3dfm+K+PaDY7BUSFGgyGDJefFGwFeGuhdwQ3+UunZ4tAp+BVtK42ISKS1AROwvcr7dMz9K5bYtSHjye9OvsHPmTaLWnqPLG+trnWxvA/XHq0xrdAeSclGOpEQobeNby7D5JCPGanFnBs3OKp4TgzA8yMEdI2XLyBAWdH5hLbCen5NWU+0slDno32jmKxYlAB5RwimMymizKcHHt+8Jg0j4+EFsV84MTncWqrN92qFoCLyJAEeQjDl+iDU2MgxmRq4974yg2hEAxFz9qzo1mSzzNO3HI0Gv2bXG5tzdQxutrxojwKCNEutiSASfU+1cOYCzSspZXbTjhhGM2Z5cCdBnvglftlIMbGfJhRlP03klBiylZ30nJNEgeJxsFpe1lKQidYbUZrH5UiP2qEltmJonBm8PUsb1EILwqZY6NFt25ztqwjKHSTUC+NV6VCwf7SvJW+5sjmzSnCij/bnfwnkvDlC7hPpW6umP+eLQdPT+7aSiRDefuaXjq+1kXo4HWmhbN5wiOHK++3hqsEnq54pumzwnapQykJtkVoDS4nWbykW0qhGIBMzUCEaNGgF3uIwCqDKUgv3D0ceH06s55U6F+bySDsttgkNkxUSJm9BHoU02MVppVFqY12OLKfX1gZhWWBVtFjb7VpXHo+PrOuZcRxoOm4brwBjGonZZo2G5Ma5s+vU1L2bTeSGtRxZFlNwLyxUVmKauLn7gDHfgGbOj2fSkJkOif0u8bt/8if5sR/5Fo+Pr/ns1XdZy8Lj+Z6lzDye7nnz8Irz/MivfvQfeHj8nDkcqfpoBhclWtrPCIyGaNFhKS1WJ7bLE+M4MuQdIU5INB1ClYh1oDDjfWlj4l6gArKARhpHV+IwEc8gmRiFENQ3wXhZU1drUNWX8lUU2qM3Mwy9XXtB2xmrQ1mhFXMwVruvLWdaXeh1UqY0slrn1w3uC6ZcLsEEZIPpr8U0GPw3JMKYaK2yzgaf0uomcxTcSqvObisbdSkWqbp6SVtnyvGeVlbO8yvKeqQsZ5bzAwAx75GYmW7e51ALEqP18wI++/QjPvroV9kd7rh78SHjzR1VGgkhoZxOZ+4fTpxPC2WpSNAtzxLEumM7akkAbvZ7nt08o5aVlEdqq+ymAylarVKpMxCJMhDDgKqwrAuNAIN4DkzYuoF2hyckI+/ETIyFGBZynMipO2wG/YkOiGarmVyt+eVhf0DfmxAyojvrJzWMxqiDTUezow+7/Z4fef8bAExjJqXILmTLRSGEwZiztVijU2qlnWZkDsh+sLDQ4AtH3yotVFpW2Ivl1D1/qR0iBOvC3FYTBXbj1dxo11YpDulpq5tRqz5ve0TVCTLdp7NIrjyJpPqsN/fWzttTKO7q96soSb7kOXL1+AU5sP/k6rkiQgy/CYgTFkkVqyERTFS25xf6RXfpmdIKlertN2zyrQVj9rToMiEY/CXG3Au+c5l6h02UGIUmwT0W8ziqs2WaJ1ebFqOoR893hHCBajTQ/P7WTDKllYVWF1pZLpGUuz4GMxbWUogpUFoiSKOXY7ZQvRjxgiF3A9XapVW1GanqpAQzUlbEZ8WrKVokJRKptZqkkighCreHG3LMjIMVKa9lZTxPLGUmO+yR88D+zTNLXKtSykxtjdCMXWZRDZ6I7ovChijeYbZToWXb1Pup2Oir1/0GfEGKKogn2VuhyYqoMbWCVlTjRpboQ91kvJUr3j7t6kMukVGXmVE3WLpa9NYWtBVqdSOlXrjdlLouHrUa5GIb7mCEg1DQ4EQPdaZl9LqaarmhVj3M94LTfmjW8tyUDtpi+acWjDhR15lyeqTVheX8wLo+UtYzy8mMVKqNEAdi3lHWI6FGj1pgOR85PT4QYnJI9RKggZcGeDPQVt1x8EBuU1mQXkIrpJgYBmtumL3coeQR1RmpQmuec5K4KZc3d6pM9eoCt9q1Ulc4sXPZox+R5sFI2NDhS9lyuFobpuIyDN4ZumVSSJtX/3bgpkAMkd04AjAOiRgD2Y+1N8bdlPL79PS+c9KuWp9cjy6cm8QDdV8Rcsk69aapGrp2Jmgw2a+2zcc+Pzud3KP+nhcVd7bo0dlVlLahBNBJPYpeHH2u1sYTQ+U/tgevzM9mpL7MsF2eb/PkN0Ek9epeOS4FxApss7Wyeaq5GO1iFBZLRHKBwEoRahVaS9Q2Wj2Ps8taMzVvUFJ0fyMHF8FUYopoU/IgxGREirqcWY+PqATzRoKgOUEQ1mg9ZkKK5NE29qWYTuCynDk9vjE9vVLIEqkhkWMC3xRrXVgWVxh30kOQwCqVGIoncf2Lt2hwYaus62pdZ9vK2gq1Nk6zQUfTcMM+PWMan/H87ttMww03+x2hv59Wo8CPAzlFpjFxc9jRWuW8zpRWOZ2P3D/es64zv+XHfyvn+ZGPvvtf+JVf+0+cz0c+/vg7nM9HUlgowWpiWutF1JdOytoM95/PC4/HM0MaOC8rEiIxJKPZO6QJXK2vzmBTCAtQtqJrkYxmIcSRpDtSihv02ZPYG4LR95eNUXYF45XiLUMKZT1irbnPaDPnoi6PaC2U+ZG2zk8iqeoaca1WymqeYwrJxX0jKjZpJY+I1/zknQmczqej6fG5ksC2f6qyrCtlLaQQmGIChVevH3h4PBnkuC5oW1mPn1KXR6xo4owIxHwkxOzsNwgxkYdMCIHHN5/y8PlnCIY0NM/lVjVnJ4p3BiiV4/FETJE4OFQWzRmopXI+ztTSuNvdMOSJ290dYz4wzyc++eQ/8/D4KfNy5HR6jSDc5DvGOJKCaU1KDfQOvBYF2GYq4m1hpOdaLPcsTQweDsl9CzvXQSJJRqquzlBt5JxgF8y61sGLm4392OSCqPaU45gzz25vASV6w85QzZFQmqmrBIWMER86WzJ0o9Mjc3fQ3DkkQsgO07ewRe7Ny1+0G5jmzQkxY6Vi3QpqLW6ALrVRHQ7sSjDGIO2ECVsnpRZK2/q6bEZeJHopx7ShDldxE9uv3dy8HTVdbPTFIMnl9+2nvy79ZtDuu39QzktBKaYCMTisG9Ta6QSrt1BRmvH7vNLaLlpXQ2iaXc08bPmp3ufHdPW6MycEomHx3jsqJnEdv0ZdZsp8dtjWrlhLfvGi95mJmTLuQAKLF/Muy8z5eG+TrhYSkRSitfluwY3Uikhjnq17MMm81CKVNXgtTcRgJF9crVbWslJqYa4zS5sptTGvRhzZDS+Y4nNupxd88OKb7KYD+90IYnqHaEUkMg0ZGJD9DuQZChSvWp+XhdP5TG2F83pkrSv/8T/974QwcX//OafHmVahSrRizVZdKqmj7GrCvLXRQmVZFk6nM7txYlkLKVVq6hj6pdFhh33U83aIQF1ArOcQrSKSkZCJKCKJqBPgNGE8OgPzyLVHa5Zv0lbRasoglOqN6FbqejJSgp5AF1qZKcs9Wgvr+Z62zpfozqEVpbEuC8t5RlSp0c5F1UDzHkTkEUJiXF+ixYzSfHr0CL1sWnMdijyfZ+ZlYcoD+eYGFD7/9Lt88snn9pVUoVXa48fo8kBMlTQs5hTkmRCT1RUhxJSYpj0xJs4PrznevyHlkVJXGhaFV9/grcWKRdvn82zNC4O1SQ+CQbO1sJyOtKocdjfc3U3c7O+YxjvO85mAkuLI+fxAICGq7OKOISRysLXYXNap7+9NTWW/F+SLx0jay01UaERjOmp3XAwujCE7NdxwtBSzGRONUBOBTsax8pRNj9BtSU6RnPZ+/j0PtFo374YpOWhokIQw9lyYOYzWeLltG7r2aN3tmGSHFVzlBQUtfS5aJNR6KQZYIb9ctdRxI9VRl0upTIc9L5/bmqEu5rR2I9Whu0YIDVVDNMKV6sRFoPhLIqYryE/eeszu65HuF18bfzPkpNbiFdjNIqnmkkUpWj2uRCU0kOCXUZwR7ZTQDUnZ8GdlA4UdLutkhA4FmQL6pcZzGBK7YWIcMk0rpawOXXSqtG71cYrSRKilgIh3oFVa0Y0FhF68m4g1XUwhk3yhzfOCSKBEazw4DpXWDOZIORuM5F+o1LIZqbUsLHVBCIx5JErixe0LXt59yM3+OS+fv8847NntbsjDREzZN/zuIV2+B7ApvqcYGYeB2iISYWiFF89e8uEH3+KwO3A83rPfH5jPj8znB2qrrMvRjJXn3GKwpDlNWBfb/E6nM6fTGRFhlwdk7KKiYVsNG5qx/eH0bzFyTBDXZxQltgTssBd3DrbjNNrhPwVdLzDe+miw3jKj62qNLpdH2yDKI63NtlGtJ9vg1sWo3k29E7NuZQ/zeeV0XECNqh0kuAEIhBAZWiPEBpxo9ZUpksxnV6p2o+lzUFWZ55VlKUhrPMbo66F+IQqopVmjPSoSq8GtsdgeXFdj/rXEKkKNiVoWS6K3wvx4z/HNK07LwnGZefXZK5Z5ptZCWVfmZUFRa7oZDEJqKn68jS4YLKjlcQ47Qg5Muz3jaUdti117VXJMjMGgt0jsYPYVLGzXVfodHcJSJyL0qMBzsp0kIxvw2Iuq5Sqn66QHxOsJLz5/P4mbUekOjXbYvkNj7vC4M/tEhAU8qnoSYvjbXCC5njlX6a1//CaXnLqKGykRh/sqVa8iqQ7x+YfYuZHtWJoqxedi05Wm1p+sd4c2lN3OX/DGjfB29HMNWV5Jez39ak/+cIG4JyelBwBPT9RXj//mRurnf/7n+Sf/5J/wS7/0S+x2O/7wH/7D/I2/8Tf4yZ/8ye055/OZv/gX/yL/8B/+Q+Z55o//8T/O3/k7f4cPP/zw1/VZj+dGWIzKCY0gVkk/DEJOVo80TL1Hk7ku1hvKw+rmGnQE07VSo9uIJktIry4E2/MfVEQaUbw1vcDtYeS9m2fc3exprXCeT5BGQrSW7kKzDaEvCm2szS74WopRUYvSelTnMjaiQvaE65T2tKHxeH7k9cOjs8XMlB2mHTe7Ayll9u4No+YlllZ4XI6UWjgvJ+b1zG7c88Hzb7CbDvzWb/92fuybv53ddMfLFz9KSt7srxe2drmhHpptw7ufEojjwDgMPvlvUFVyNOHRh+M9z+5ecH//Oa9ff8rr15+yrjOPD6+NIfh4z+n4AHiBaxVOjzOveAMVPr37jHnec7MbCWnv56/3G/JIpUc/gkE8YnBJFbU2H7USNBJCY2R0T6V/nYiSUNTaW6iCzsCM1jPl9DGtzrTzPe18pNWZ9fyG1grz6Q3retycFxCnQCeWtXH2VuXeBZyHhzOfv35EEUIase7CtpHklHhxGBiT0uQzmnyHLYQANrFQVW+boqyLshblnBKn+YwiPJwWSvMkucNR5dyop5U8FBBr6okYe5BwNHZhiJT5iEiknB7JVKScefPRr1DnE5/cP/Dx/T1vHk7cv/6c9bxyPB55c//Abjcy7TIxiLcKaZS6Uje2q5E+xjGTn+1ZysLrh5esdUakcXz4DGmNQ57Yx5F9ygwMDmuuHkFfbZIdnsUNsaizDDscesH6xSOpQPYrNGCUa+8IzSUPmlx3M/Qo2Nm+l3Pf6yPdYbtqvmgyTtgtAeo6g/h93pGgq5B0p6qz8WzFt00ZpJVenGtM0SaFJgtNlBqsNUdrhVIXN8/XcmA9gkp2HN6qo6myuKZf1ZmqMyaFNoIEV4oXd/KTaWJuDurVz20H4OKxas94cZmzmwHqRv3ye99OrbP39x//zY3Uv/gX/4I/+2f/LD/1Uz9FKYW/8lf+Cv/r//q/8m//7b/lcDgA8Bf+wl/gn/7Tf8o//sf/mGfPnvGzP/uz/Mk/+Sf5l//yX/66PstKGGzhwtVlEt3OSyjG7pKIhd8NLoX3Fg5bywF/094nSC+h8uXBC/VbXMkhJlMwjzFusEhr1tJCto1GDQcRd/gpoL6ovajvIuja8yUuVYJ5NtE759baLHnt0EAKiZysqj7FQm5dI87IIqVUSpd9qQ1tNglzGthNOw77G6bxwDTuiNHxUrk6H3YCriZdPxPbGXHR5LA5kdO44/bmGSFEnj97jxS995EqyzojwLrO0LxGxGase3GekHYYz+Rb+gKRp5uVH9t2sXuCqXuv/fENwit2TnvU6t6rqKJW2e1GakHLmVaOtDJTlwfa8kirM3V9oNWVsjxQlpN/Rqe5m7feanOKNlS1qH2tsLr6BmrnrOfXmirr2ghqUkDVc0cbc9mb6mm76gJtyLDNleif65I92h2xamzOWioSHbITIbaGhLbl2cRfJ/g5chrlOh9ZjgPnx3tO9/ecTzOtFGe3dvZp4lqBYJu/b92CCDEnVNSIFMNkzRFTRqpT1WMiijW7MCDvyg8XXEnjqaG6+u9qhsqTm7z19/XT5MnNt2HlEiFtG2vb5vAXIzh/Ude3E720uPiSj70+1qcREOj1v34uQ4f0oBdYbxT0zUjZvLdjtPpPNHgBb3Hl8676XtzIyhbk2T7jNxwp2aIoLr9fn7urI7a7+m9XkefVhdK3DJjqteP71eO/uZH6Z//snz35++///b/PBx98wC/+4i/yR//oH+X169f83b/7d/kH/+Af8Mf+2B8D4O/9vb/H7/pdv4t/9a/+FX/oD/2hH/izQsJhtWi3FkFNxWAtSijK2oylZ8wfM1JdyqhTgo0lZAtdHMcTnN2nnpAVJWjfiDDYTyDHkZRG86BL4bSebTGpeNsHm7zS62rcu1OEdbVNp9TCvBrdeC2L9avRYlXjzn5KMRNihphQrSy12AakK2s5E8PK46l6nZEViao2ljrb+1arbamDELaWCzuGbFJNVFPeAMG/OHYm1AtKveLfp7Q5jp7/8UJAcS26MWee3TxjP+0Zc2ZdFk6nB07He5blzKvPvsO8nLh//YrH+8/NSBfzHHLKVpdyGHnv8IxpGhjjiKiLmwYrzu25CVW11yKkvEdkgDCh0SIva7OoxFVoyyvTTGvmJTYpaDBShM5ntFaEGdGZuh45P3yHWs7U0yP1fKS1lVpPli9aV6uN00BVq/NJDUKKrCVxdmHdVqz1SpWJsL8xg6WRqoKRMypLg/JmJspMSkrOkSCQopd/1mIadtqoZXWJI1flMFlvIFhheYV1Kdw/PFLLSrl/oJ6OTKWioZCiXb/UKs3ns7EKXaBVC0NWos4cX/0K6+OnnI8LepyRpZLKiaSwLkfuH9+ANFp97hvjxSh10WNqhcWUQUKpZIVnt88QhN2YicZW4qZGRg0MOTKJ9ZRaaFTKRmrpCiSyzUO7z5AFl6TakCXfZFU2W0mf0Wr5G1Ca2CxW20wuDqm2i+QiPcfl96uTLPrN12lzB9VOqxEoJEVCushzPTVI3SG2v+yQFQ2msWiqLqbTqOJFwLWYgmarrLr6l/U12DqTsXtAQmkLtc00rSz17MbLEKQYhJgCMWTGNJHT6MXQwJUB8bf6wvE/MbXdEPndF+POdvJ7nq0/stTlK/f26/HfPSf1+vVrAF6+fAnAL/7iL7KuKz/zMz+zPed3/s7fyY//+I/zC7/wC19qpOZ5Zp7n7e83b94AWOIxGJnBonGTbCmlUFsl1N52wCLuGNw4dSXWbqAkuIZb937spAYR87T7hPeQd3uaQAgDMVouqNTCUlaSJKJEpPW5ajCShNXXgC2yZbU1XKqJb1b1wl1XXG7OqDKMOHrr8IgKrLWwVmfwLTMhBM5zJYZIiLbpQPeaGl2+vzXxYx5JcSBHU662ZEYvQnrqCakbqUvjA9sobBpfjFvAqLxDTORoAq93h1uMkr5Q14X5fOSTT15yPh+5//xT7t+8otVKXYqrclhEOU2J293AMCSGMJhxwc8BHXNvvkaNxh11JMgeCXuIzwhA1tVo6OsZnR8w0zraYg4niCdaLdTjo6kF6BlhpixHlvtfMyr98Uidz15fYtJCazUJp9qE0kyWqAQrrF5bZNVo+ZkaTb8QkNFObSlYRNQK1m24cjwfoVb2U2SvVrQ9NJPeaqWZwkSrpiDSlJ47bQoSChDREkCFshrzrqwL5XimzTMqlTxUWjaihDnKK0Fmc5pSp8I3clSElfn+U5YQWecGc0OKElslEqhl5jwfGYbsGz5syV1fm5vmXi2EGkz0VqxOSUIkCtR5RtfCdCykUskxOCjXWFlsTtIDZTNSulExe34Geo7IA1U/nM4Gle3w7NbhtA6HcVnQvi3QggMqF2RDOyHDGaC9f1Pb1ldXcujwXtiagm6fvx2Onxt9qi+pYvC6ipWMtA4Eeu6ptkLBPqf0WidpVzqQF2hSVbw325nWCmt9QFu12jEGAokolvfOYWSIO0S6SbgyUh4NPdHq2yC+t++7unczVl98vpnWH4I6qdYaf/7P/3n+yB/5I/ye3/N7APjOd77DMAw8f/78yXM//PBDvvOd73zp+/z8z/88f/2v//Uv3L+1JZAOn9jJDEnR2muddHvOBt915wXZ2huY/upVeKuA9Pom+9Ngtx72ev8eT9RWrSx1ZSkLSTz1KxCa+3yxIL14TcSNqdVslVq97YhNwloLVYvBdE4bb009Ge7RYFHqWonx/yTvX2Jl2ZL0PPCztZa7x2M/zjn3mcmsJKukVpMtkGiAExI9IQQCBJozcsiJAA2rCEHUiEMBBKiZNKEEQSA4KwjQQBAgDQmwCRKkwFajAVFiV3dLLCarsirzPs45e++IcPf1sB6YLY84N2/Wo0WKuihP7Nznxo4dO8Ld1zKz3377/0hI0W60NJJiZBhsLiUEIUXHm11A9+7wyGevPzMh3PGOgZGowZhxzWR9qO3qfePQW4fcVIJ/b5612byQrTlnqkmyrw4RGGIBYv2Xu+MD0zgxxMh+fzA/qexMJb9G4xg53pta+v7uyLQz6/LQ+2R1RbUYc7CZPmGMAzEOEAc02fsUbT6btbf5JFVMacPIAVIXpKy09R2aV9ALojM5z+T5mVpWyrpSnSTQNdRqFUpVmorN3Qm03ChaKQ2KD2h2A7vk1itVQdZGqSZqm9yyXdQ8ogZpDNLQsrJe3hrFvWR3S1ZXYHJ4slWkKRULTudzZT7bwO3p5b1VXWuGpqQqrNk29BhNXzElQZvJMQ2qhHjDTPP125fFmIQisEviFL6V+XJmGgbWdSWl5ExX+4WYolOoGy0XJAY0ZyQIUxoJh4jUSn2YaetK0AthXglRO+WWq0rHh1DSVlV5+tgcHtkCGbKhIH2QtUsF1WbrqrVKCMnv5T7sbvuH8W+8gul9oU36qssOXRmP3PzdDwLeRpi4bvI90HVPpx64rE3qn8H7553Apajb1jRKXcla7B31ILVxiXoUFlecsLVRqjkQ1GoV1RgGhjAwxIHdOLmS/UAMZmHUesC/6TVtwehnAo89eBVy+fD5H/7/h9+vIle/8/EvNUj98i//Mv/4H/9j/t7f+3v/q17nr/7Vv8pf+St/Zfvvp6cnfuEXfgHEPV96ViJddl6JyWjZ35yh27IcoInJJ3V1ZGOvOcQSxCwBwIOVkKLRwvtzbNg1WQVUK5f1jGBQQEnFwETxgOY09Zs/75WNycBkn6cpDveVllnrStWrDE0tzTapDHWplKUwTpP5QkniMJqu2HG/57g/MA4Dr473DMPA4XhgfziwGw68efgeU9rzePyUHXvQiuSTL8gzyGpDg87wQ804EXHrcsTVIALaVrQZ7dqTaIMMwg5TCxhQgumhhcAw7diNn9nCq+7RoxawbX+0vxNjJO0mpzz389hAM2ilLU9omSlrIBcTWh3TjjQeqWmipuF6vbURZAfsUVZa+y1UF+TlQphf0OVEffnnlPWMtjNaL5ScmV9O1FLMjmX1i5ls41yKUrzHVNTuHa0FDYvZh4QEUUjHHTLt2E1HpsMDTYXlYmSZ/eGR4/E1cUiMxx0hRerLC+X5mcvLO378T/9HLst71mUhr82o277vGZPQmaTLQmvw9Vcnnp8uXC4r79+faK0xJhfiXiFdhBSVVlZSEtJg1VWMkd2+mSJKiEiwKrzWCrURY2LYJ0JpPFSYKmi+8P7dlwjK6XwGiez2A1McCBHCboDaqOdKmVfQSkqBkBL3dwfCNHG323Mc99RlYeVLSjjTWKl1to2uXefibBPUm03SZrIaYqrjzsQTX6sSI0F6dWjM35xXastuqlmIYYCuHdgmpCWCk5dQg9IVS9y6cHBzgk0f4Ne63fQb7K0im/qHiKmEbFVYw3vKnTpvAaE4iUIEJHniQoVqe0QuNu84lwtrWzHKUPVYmHxTuZZtzcWOc5sp9ULTzFrMY2uajkzjxDTsuT/cM8QJGEEHSlN3xfbA/c1AtcWqm4CzBaibYHZ96FsfA6X8q66kfuVXfoX/5r/5b/i7f/fv8oMf/GB7/PPPP2ddV969e/dBNfWTn/yEzz///Ftfa5omJp/4/pnDe0OeqAMO0/VKxpuJwW/eDhFcKyluMh6HE7ZK6vpYt8TYvjY1LbYLak7BdSNPiFi2sf3V3p+6wXe9MPd3gzOPDAqJqDmdokhM7ErjsCsMsVCyMMbCfjpw3N8xpMTxcGBIHqR2B8Zh5P5wzziMHI537I9HpmHHYXdkiDvXT3Pg3d4RvcKwOSlXQpDOqLuej+t/30KDN5flg8/Vh//6NbFBwZh6fwBSvQYpkWg+WeN4c64VqD6db5JChOoSQ1fDu+DXr3kGK2rJhL3tntAYkQJXqNCWrTIrM63NaJ1N4qZmVxGxasmyGN8EqtmPNMSzcNeEbF1w1zTpbLrLoB8JycjQye6BlAZiGokpEYfJqo+4WJCQtFVptVoQD3LNmntWLmqNcXNBXsh5ca1H712FSAv2Orl0VZWGxZ+AUogR0mBwr0YhuoMrvgEFrjODKZj9jWi1Cq9kaqk2GNwSZgDq1UBfSH2DrtV6U2L2FikOppvXoMaESkS9Ktw2PbXEcVP07rdcvxVvzgW9CpROeu5r3u9Sh+SampyVoSCVpuEKkfX/30ggrkqPE3y4Ehq0dYr6t62E7c1tAbTT8q86ez3u+t/rlVzPjTtSA5tqTPUqEHERY/r6CNdzjW5B6vqZr/p+djtGdxI3vczmxpK3n685xPhhZXQbZm6qq58pBj6soj781+/v+BcepFSVv/yX/zL/1X/1X/F3/s7f4Rd/8Rc/+Pmf/JN/kmEY+Nt/+2/zF//iXwTg137t1/jRj37En/7Tf/r3+dcyXS7fIDXLJkK06f0YI8MwmRVAijcTznYBlrxYI7LZfJPdyH4v3mzE3ZNJgkKofi/YjZdzZiYQNHBZZwSTURkYttaOhcyrTpZ00zJveIeYmMYdgrAPBplJtKzTIqxtFq0Wim8+tVjvJg0D4zheIUyBUWzAMqWR+7tHUhoZ9weG3Z4QEkM0i4WY9iYbFiLEO7vZsyJuL9F8U44hITF5AA8e1H3DjxMw+bnyaouEyGBQSqfE3t6iPZnwx4KaoO8G14g4MWXBlkLfNNjkqAg7SAkhMngyF0NAdCU0DMLUhrSLwXpcEC7QFsjv0HpGL0+wvNCWE3U9UdcztVxo5WKK7kVoLVJKZcmt33IoxgXIRakaWGuwKxxBQ0ZlpMUCYSBJIqyFsUDRwQJV3CExcV4vPJ9/E4Dk2nmsM7rOLJcTL6dnlmVmWVaWpRGlMSUX+1Fvkjc1mnytlHJB2xmRyjD4XFUQKpHz2jhdbIAzYijDOFT2UyUNkVevhWk3kIbIMFqiNI2TQYAe04PCPlYTj2Wh5BN1nbjML4QYbLB33CEaCNHvEZcs01Yp80wribDf2b3dGiEkNLjMV59rUiNObIOo226uzmp1qN2ZDeFm099SouBgoETA6NjFxZCzninMJN0hVUhaUdkjYfRqyd9vNRNHu49cgqgYFNnqtTLq35uoD+8bNxENSCugxqzNq0lkldqsJylXZnHbwC/dNPaIRuTS6ntVy+S2UHQ1DN0WqidhfR7MTD5bW31w16pH628LaCTIaISvMBnVXCI02aTUSmtep7lxIjcB6VuC0YcPyjf+dR3YlW9EsqD/iiqpX/7lX+ZXf/VX+a//6/+a+/v7rc/0+PjIfr/n8fGRf+ff+Xf4K3/lr/DmzRseHh74y3/5L/On//Sf/n0x++yoN/CZeKYuxGEyKZw0spsOhGCqCUPX0sPmH+L8Qs4ra163DbAP9+IvCfQeqN0MOP7qFPBSKyuFFDJrzaQaDfPu7BgPUqrNvZ/UtLzEl5NDlsMwIRJJgw3SxmFkmvZIDAxDMBaOZ7JBxDY/CdZrSoYjz+tCrY3QIDRIcWR/tCAVpgNhNMWF24yzLwbSANIIXBAxIzrx6kGCBVIvCa8T+Z1Z6ZUMMm6B10xxPqyodPu/D2/rn4VkAYp/1X6qLaP0LFvCgJDMEjzZnIiIVQNCIaptDtSL9doooMVwu+Vsj6+zU81nWllMQzGvJkTaQF1eqlalOFXePoO686yJUaxFTAYrDc5naFQBYqUOM0EFlQFJCyEp02FPSJF1ufDycoLakLwgtRK0ErSwLheWdWbNmTVXM4UU3cZubPy5W6RkI5+0FdWM0EjJ72UiDSVXZb5UV16w/tc0KPNOGcdImgYqwtAqDVMzGQar/Eyr0M77ECzhWrRQykIrC3ldWAeTQTISqLiyt2fYYkldzTb31IqxFVEbarY+Z7jel9vQEVty0suO1udNpLnIsFoPS5zd129S6dCfEW7sJWyItepM5QIKse28Wql0b6UeeFozir6V7/WmIlS20STXydTmqIgHZXyfaRu3p5KzJRNV+/YRXIvvpkh09MWCkPfURJ2dm6kUzDnZUQ+xitWGlXX7qpvQctkIWKqyqebEYD2o4MLLvWpsXkFVGlW6SdDPD1DyIezkT+tQ0Tcfkw8f66KPv8vxLzxI/af/6X8KwJ/5M3/mg8f/1t/6W/zb//a/DcB/9B/9R4QQ+It/8S9+MMz7+z3uDvdMuxEQYhyYfJj1eHzFbndns0D7O4fPrD9VaybnmVozzy8j83JmXmaexfTeig9LWnPU4Sphg4zUy63mM0fSDFsKEpi9kprixJRGUMPCwYNLgBDDppM2jkfSMBHDwJgsmI7TzhxQU0QGtzOQGdxhdC32txBjkkmMtCZUbeTFPK8ChoMjisQRSTtCtMB9e6N0zS+jZXdoZKT7XV2z0T3my6RbtbndavLhNP/PHt8o8oVOnvwdjv6EhG3HPkip6lmzIi1bsNcZmOkwpcEzR3/PwTeShuoMbXZo7wJ1QetCqwtaV8PUWqWVRs2mnCC3UK0PRNbWiRN9+JpNUgvJKG4wGWxplWVGqtKKyXCFkDg/n5CQWOeV+WLzYqFmsxypBVqmrAvnF0uicl4oudBEkWY+ZpFMFPebctsMbX22rLAuqw8TV5pG1tw4X0xgmWJJ2n40UkwuynRSSqtMY6CUQEoVkcwwNIaUSMnYcH1+ZvDB1UGMxFKLWcT36qYFY4w2T4RMNLduFRXBArupwbvqR7WKIMhg17kValvsb0axnb369+AVFh3CxP2ZMn3mZzMJdHzdlMNNeT232WDZYGMEa54toNVAbPEK0W0brgfJbcCXTSFmCw3SNwu2r66+UUuh5MX18xxbkWZVo/Zqyn/tZhl1OLP3wMxyKBvsG5tDmz0V9LtVG62ZpFepK6WuYJiDQ3wTMUyEMNJn+3qA2lDTXtVKJ6qwJZ0/e9w86nuLfONxpa/7a8Kq39wbfs7xLwXu+92O3W7H3/gbf4O/8Tf+xv+qv/Xx46fsjnsIkd20582bz5imPZ9+/D1eP37COI7cHR4IIVA8MM3zifdPX7Lmma+//gmn03ueT08I5gm1FqX0srd+qDLMTfAqpRgrTRorpoD+dH6h1GzSLtGzcJ//STGRYmAcJ4aDVUuH+4/Z7x8YwsgU74ghsttNpCFRpLFKRTVT1zOtnahFWLNBi8RGkghxgGTZ/jIbrCDBdbjCCGlHnI4Et4UHh9RQWjM4IxAIxTyvGgebvVHcByoYtCYD6jMbtnS9eqEz+Xr221foh/eB3H6Xbz5qh/2G4/8W7v0ZFdvSijMQe4W0IjqDvIBWh2YqohGRR8ze1DezaudQa0Hz2fyZ8gtaTrRyMaO/Umm5UNYCeJUqQpBGcN3HnO17aQaH1tpoufkGYedNRWkxQq3U8ozKjHKiyXuM3B1oKq50bsE3ed+tlJVaVmopzPPZh5mr97gamYLQiFKIYgErBds4q1fwOWcup5PZwLSBqpFlFV4uUJuxELUph0lYc2QcBGJlugi7SdlNMA4KbWEcA7tdYjeZEG5MAzFEYlKmQRhCpeUzeTF1D9FoUHGwirt6T4VWkXW1e29IZhc/TMT9nfWiKsZgjIGQJksK2kqpJ+vZpdFuixyM4apq7EEawSupkgvLMlvPq7NA1YRTm0BpK2udWfOZtbwgg6BppSlc5hPLXBjCwC7szRVE9RqkMEixVnMuoM9+K3QauQbPRGHTTas5U9aVUgrzYnJg4rOMhkQYjN403AwAywcro3vKrTWz1IXSViT5xKYYqG7Bye51xVyqm2t+1pKJYWScjqS4Y0x3DOlICiMwoBq3HpRzRvwV4837+Gbw+ZYQoz8v8NwgKTe/+a8sSP1veUzTnv3uSIgmkHl/98g07Xm4e8Xj/SNDGjke7gkiLGuk5AXVwjAMqFbPEBMpRRty9AltmriKhZe+zQfg0K2S6uoQ1TOurpO3huDBzd5j8D6Y0cIHxmlimvYMw8A47RmnHUlGhjCZTt8wmUqzGvelaaNJ9GBgwo/di0hCsn6SmOyPKWt76f1tpfmNDUC/ZTYb+u0Oska8LRMbjjaarli1YE8COrV7wzb4Zjl/fe7PvJPrz/Sbt7CbCjrsswUubcZW6IQHNfjOhGo7rugQpOJzX/Z7XXfQSsPgr2tdws3ufZt/sWtLn4/rTf5kUTvaRbGqxzP5/n67VYiKERIsj8/0RnbFBmhXNSUKfKxA1EjOgtoAblmNLp1tZu4Wxmm9qpSrjmSXsOrD1OCN9tqpzq6e7eZ/Vhfaxth8GDlXCNlnbjBYdb/aBhiDIQHmO2WSWdH8VXz20AdauzzVdk+4QkhXnoXrua4VjTc47k1yGyS46GskYAmQX5KtZPGteOtzqLJVkbqNjjgJwO+vTh7o8021Zu/xQtNkvxOVYXBZpn7f9IpJr6/BzXyTfuPL7vC+0tTnnK73F64GYfdOh9J8LXTSx23pslU31/cQHDK0K2RWPVfdv6s9j3bTU6DbofQvcRFZe6fyM59DtmV5u6Zv081vWdvfErn0Z37YEZk/AEHqs4//MG8+esNuf2C/O/LJx5+zm/a8enjDw90jsskJKS/ARZUkprqMmu1FSjAMwn5ng5ljswVRW6CUSG2N89mgkNqz33b11TEjPKXUlUFhSiP7eMerQ2RMI3d3RgH/+OOPeP3q0WwRdmZwl8YjIU2EFkjF+jq7nbHuYplhbYZfx09o8oZxmNgfdoQgDFOwQWEqgUIrhYkTLWeKZLIUUhJqPZNzY4iVKPZe1zWjqqRhT0rTVbSzVZjfwvIWwoCkA4TBbYq7J5PfMgqWTjrz72YG7cPlenvoTdlPT0Mt6LSM7QYraMZS0cFf291uW6HV2aomPYNaZh7jiBFQnCqvQH12mHABCsQDpNc+G/UeZQFZUX1Ha0qujZLbtf+TAmMcCDGSpiN3Esmlcj4vlFJ4enoxdZHamYJCWy80yViXsqAEShtQDZQqmyzS4pp+ri5nm09xe5A+uKlmoqeqTsO3jblqtaAb1aweYmTaDwjKumRqbaxrl9uqdAe9KEawseBkM4PDMBDGCRXhvMKcG3Ky+2kYAus8sJsCx33i7pBIQ2B/n4lD4rC/Z78P6AC1zOZ5pJkg1SsCJwWlAcZmdGxv0EQNhIL1EOcC2aSZAkZSiikQwsghfESUPWtZWPIFVAkFaEohU3QmyojIniiJdZk5y5P1eJM5HpdiqgxWaWarpsrMks/kXJlnda3OHbTEcf/Am3slhsjoQdiGzVeH7TJaG9KNpARLSpwssbWiPTg2n6XqIrBWkXl1L9Ebsn3tGDzdh6NdzY+qxrA1x+nmkOa1kgoOz1/V4022yqpNAUmEMDIOB8a0Z0wHhrgnSDeGvOIXH+YM6gnHtS/V1+6Hq/sm2fwg8Pyciskrrq2/+Lsc3+kgdX94zauHTzje3XPYH/nkzefsph33x0eOe9MJNJy+sixnspMN+ubYSWoxWqAK1QpcC1L2eCnCEoQCW+JjWZv6l89LtMpZAzUWci6g5sC6390xTTvevP6UTz/92LLdwSRTNIw0SUiFsJoWQhpH0mB9oVLMdiOEIzasumMa7pAoDPtGSErQldBmdM3EYaWpsvrUegi4lI+Q9Io9lzrTGu4GGzxDtVRVywXWJzROVu5Hbxr3m3Rr0PaqyrvjPXve7sefX/bbP3tGqVYVNZulsf7S6n/HLEW6mKf1kwxrVxaUbHb3MtmsCAeEAdoM7ezv2+i6EkaID9bziQVaABn8mhpbqzaD31pT61uHYNb24444TKRs/YucM+fT2QeF7at/lKb1OvqpwQazmxjBItsGtPYg1Rlqqhup4DoOwTaDIzGi/bx3+DlYhiwipDQYPXwwW3Yz/rtWh+LjGDFFAu51Jjb8LGlCUdbi3lm10urKmIQpKSVHpDUSjWEMDDuQ4EzDIVAjzGpq9ibw6zYaXf9SgrEwVSHEbbA7NGy+ySafbT2CQ3UCITLIgUY0aLUudr94VWPqDqudL/eMq7WwrotBfWpakLV2xYpeYVRqM4p+acpaBdVIywtarWo77h8YYjLfL4yU1Nd47zFtBWOfkeubul5HVPUb/9u2656YBTzJ86qq/6Z/a736a2ys1+afvWs+2+MWGbvpqjr7sKnLU0UzlYxhIEVTyIniM5DIFpwQuX0XPxN09Pb9f3NF6zfW9jfW+/XHN89rN//+HY7vdJD6wfd/iU8++ZT9/sg4jDweHkhpYIo7k0ryC9rUWHjWhLav4o6pfSo9hMFK3lZt+E4cdpCbjLdZ9BcJ3B8eCBKZholp2DGlgY+O9+yGiT/02S/yvU9+gTFN3O/vGdLA3f2RMLj9hbj+nG/0Dbr+7NaYriq2vyoMqVkPSBtLXpCitLoSQiVoIzj0FqaRNO6AQqC6JtsEEm1o2K1B8FkWQ8MMt6cVg6pQlG7uuAAVXd+DLhYAXDVZuiBiv61VMSUH9Y3KF6XDVb2pa9ln2haIQZMJogctIrCz52GqFeINcGmFEDxIqaBqG1ctVn21ukIzyCtgc0lxvEdixJiHO1QXZ3EagSYvZ/I6s64reS3M88J8PpOGhAIxJYapEsfswasRBcYhsZtGZlbOl5naGrkG21ApZMybp7REa6HzMoxU0fsHtp2jzejJWhthCMQh3QRxfP6qw0OeMLRGCw1tmRgyIlBqNrhqStzdH8lr5TK7jiXXzDuOB8Srz+JJW1T1Pkw1FKEJazEll1216stknhpaxZAIjIwU4kBIpl0eq1V5LRmjTl3xAe2rSLeZxVYbbTbRWmnmrBu7SkoM3I2PTKlx4IF73lDqyulsSvpGajHiQVN73VoL4oPoBocGbuerxIkalmQaY7HVjLbKMtvsYQyJ0/6FMY2ksCeEgbWszOeTmRyaFhkpjqRks5vahWU3CLAnE50x51DfB0h4n9mDazjrpAp7vE9oqVhlGZwoYTll3QJwh3i7I7c2pbh6e5KR1EaCTkzxkV28I8mOK3nqSoa6kiaUrjbRD0Vv/vNnK6Of8x/fnqv+To9/y/GdDlL/xi/9cT756FPGYdqapb06Mii52SR3U2+qLqzLwjLP5GyUWdSqgxhs0aouNKoh4sFlk/ymMffYwjhMvL57w3468PHjJ3zy6lMOuz3f//gT9rs9H735Aa9ffZ8ogUGcxptmb9JGGqM3Wy17bZgfG6iJ4Ir1DKQaV2rcFYbUmJcX5nmGVsj1RGzZ5m7CQBp2HB5/QBoPpC6qSaNpxuwMoOTijCSjomoDLeq9lBnr8SiI2VdYRQLKYsJ07BDurPG7uzdiBnhwaaArHThQccmYngG7CLBIgnRHZ+4Zhd2ybDtuMe8rY1DARXqt4motoO1sM03re1qtrPNKzY043DMMbwhpx3j4lDgerYekDW0vDtUahLRcXsjLzGVeycvK+XTm8vxETImSs83a7ReGyWw4YhpJAXZTQnRnmXlZyLmwZMhVaQxUjOlXW6Jp9GrKs26J3uPzzag2lnmmlcrIiMku6jabU1tX87gG/xoqWSrrqs4atMpPUmDaD7x6/cqcgN++0E6me6koEgP74wPDdORSKy9584ghNmgaKdWGrc+r1aKHIrQWXDC3UQNIbSRtBBGGYSSOE3sJpFppIaA+49dC8OFfq642NXsCWho5n2nZTCWjQIyBNEQkRcbdIwwJGQIyRi7rM7+R/ydqeWvrXAGG7dxQM6oXaohA2wa8RaJXPl2A1eTHWlUbyi7Cy6lwuVjVMo1HpnHH6KMfyzLz/PRkCaoTXabdgV0asIHtRkcWDO3usJ57gXl1rfTe6LVn1/f+ps1nE6FxpaXbKwVCGs3dIZiMU9VijEpuKh8FVfE+ukH6OxIDA1EP7MNHHNIDwxakxMkhXIO53gTMrefKzV/59uNbWuDf+PnNM/R3e7UPj+90kBqHPeMwMaRxK7+9bcyHp0Ho5nHdHuN6UbqaRLSJfsLWPKYZJBgd4w5qRoRD2nGYjuymI4f9HcfDHYfdnsPhjv1uzzCYPXwffN1uNu+1V2fP4HOxV6qrUGpDKWgp1pOgeNVXmJeZeT57Nm9VS3DYJsTRMto4WEbnQQr/Lm7BsUlFCVaF1AWbH7Lgp7Vsn3tbR2rZo+CCqCoGeWgHMGwpedQz+EENalPNxuwSk9qxD1y5GirK7WWiBye7euH2B9jGI1sFss1jyeBkEkViM1JJHJE4GKQn8aYyKT78OtNKppZGK04yqLpZUIAxM61VZwaNGnG1fLto32w1b4oCBLpJnd5URHgvqKttb7BMMzV0dXqzzRDhRBHdslyn7nCV5fLL6OQdEyIGDWJOuc2SnhDF577U6fjq0KRDQkAcRlIa0BCsBxLsytYmVDWVidBuexd2zc0PtxG0sp5feNavKCEyD8nu9ecL9bJYv1Z94LopDI1afSjdGbDdKqPXXFuAkUiQRJKRGEZSHKlAaV4t+XluPnQLRjcP0gguGdRdby3Z7PCd9Z5NjSOTc2VZV+ZlBrqmZnN5oBvFBv9bzecdr+wKv750VOAK9PXb+Kpxd3Nv0Icc7PevA7RyFd/o1RIdHbpq92134o14trjaxhh37Mc7dsOeIZjwdR82uc6V9Vv4turs79F/uFV8N8dN8NKb//udCiv6nqFQ878iP6n/LQ/TpxuvLrjfVO/GspCmYsoQlzPrutCKzcOIBgIDkcIQJioRjY0aAlpMLkeAx8MB3UdSGElhxxh3vDp+zjQcePP6kTevXjNNE/evjNyw1Mrl7RfEEJjG0ZSGk/e4qrKudlOOe2EYg0uSROtXnE9Gc51n6vMTpWXetq+Z25k6z5SXM+Mw8AuffI/D8YFp/8j+8IoQR+LugZBGy8a8XO+iJt33EZTBbafX9cSyzEhZkPm9kQqy9QhkSMTd6BuqyREJKyILohWte7YqyLeuyIU+gKtiw7RaT/b7YULizgKeJAvEmAyOdJWKb1RPujEsmmfNJlwobuFNCwQ5MKQDmiDYaBoh7gmDz8d5v6a1mbY+U5d35JcfUy5fsD6/I79U8tpYl0peKvNl4ezneEwDQSHLTK0mSFqSKcWvy0rOheaBzNDgag3rIKZMgtrALVg1lF1fLlp1vcwL54v5a9lgpVDXmUu1x0KzzSpEE4FV8IFyGIbANCZPqOz6jqNVIStKniGoMEyJXWucF1gvi83mDBeyRuZcWXNlGAbuPv+c43HP+eXEy/OTVSXri/V5inDOjVECYzNDzaZKIBOZifoMeeaf/ZMf8fVXF15OF37yxdeUXIhqfbDXr17xR374Q3bTjofHV+z2B0QSEkarsmpzBFjQTrpoYmMQVaAEog4cp9fEMHBaTygvxlpsUKhIyxQxlmttxS1uRmIYTOYqGz9nXVbm+WIwbBkoBZ5OF16ebXC6NOGwO3DY7UkpkVslRKuYSss0LUiNkG3v6bJct3JOOJOvattgu7qlGYpiDOBWi+cvzjbFoSAC6vZBJvPVaFJZy8KcLzRdqSweF7pUV0BrIEjiMNwzxJHvPf5hvvf6D5MkMYadqY2gW4L5oQdY83sWD5PbVnqNNTeed63dJGff+hheTfbHOoyI7z//O7Hq+Jd5DGk0J9rbwNSzlO1Ru/Bd+qiWssmsiMNeRnU1C4wQop/UPpsSGIeBICPTcGQ/3jPEHff710xpz93+nuPhyDhOTNOBlAbW88JlPhOjybvEGBg0klo0e53VNLfiEImpU6ENP19zoawX6rJQ1pVcF94vz5zqC3qZ0dOJ/bRHPzYixTAc2O0eTbZo2FnV0M+FL3c7C/1MeDNVK8tSKOWE5JmwPCG1QE3Qoi0+7XFfr8GomTeQun5Yz6YNQa9btWUVlxEizEgvgHpWS/F30ntV8aYy0mtyenMldcs1bcnbIjOasvVXxPtkwQeYD9feFKYyTl3QcqHlF+r6TF1n6qrUbBl9rY2aK2XNNgxaGy0289oSaEGxoV1xbT+ryreBR4d3LKJ3Gv2Wvhvtul8NEVrO5PliPdHJ7z0XFO1bdQ+AYSs6/YzFQEpdlcEq5BiEGE2S6GrK6fCZO1grYj5YOZsfWW6mLrE/sHt8JEsglgJ5RVfzODNmohKaUlXMPwsQKqIF0RXVytPXP+HHv/5Tnt4986N/+husSza/sjQwf/45r/c78vFIFNCSzS5mPCCeKnbK/3bH9nuvkwTUUIxGY6mVIAuIGcW01mf31BAMeu8rIBq24XubXWxkJ8F0NXuroBZEEmk40Zqy5JVSfQDaUQWzz6iu01loEl2Oyy/Fh9jbVkn171t95TBb3XpXHVnwEQpROpJw27GqasoTzZUntEMyGlAfGpegpHFkDHuO0wNv7j6xfuNarr0mr6C3/tPN49uhNx/oJrhsQan1wNS2x9rNd/z7Nx/rgWrNfwCC1IeHfvCv3hxdy+zSRxfWfCEX1+tzwzKtdoKve4lrh9VIy4lx2PHZJ3+Y+8Mr7g6veTx+bBBEHUAD0y6RBqMqV89GQhqYdsYcK9Wa5qsuiBbrDZUeMibW4vAczsiqC9IKQ0pMj28oNbM+FcZloo5ncjGdvzAc0GGPxokmA0J0to/6HtjHELdt8ea7sQtjOpLGAGG2Hk+tiMceGQaCw5YSbCO2+RYTYKVeQCwEGCQDGhSC0lqhqTWkazmhWgijEkeQWAlhcqizz2r0JrggJCAZxVcGo9D23eWGJNvEAZYQEbklc3hm69Tr5sOvNZ+p83vy+T3nd1+xvnzF5Xnhcpkpa+blkim5UhkYd/eA8vW7Z0QgTSNxTEhIpMFUO9bVTCdLa8QwoCki5G0RN2d5aVtsMyzNG90GDanDy0MykkQthSbFbFdSNOmr6LKhWzJgfVIRaDWT1+JkA088iF6RNmM3J0ij0DQSV1AMvjpfTrAWsgpLE9aW+Y3f+A3GL7/kcj5zfjlBq6T1TNDC0gKlBfa7yDCCluZ090qIButKEF69ekR/MHF5vfDm8AllrWR3kj4cD6xrBs7EmCjryjDu2O8bIUQ0mK+ZRoUxmHRPNccBE7i1+b2oA4PsGCQzyEqRwlpnnyezjT4gaLPqJmggxmA9N40EHdAWTVy3mfecuRdbVZzXzPnlDBXWNfs1LhRZzcY9ZBoZjTu0w/ViCEDb4N4rxGtKEbbfrHW+zi/5/dHl09Q1O1G/n9X+jQT3jjL6fOmzXdQNWOtrO8lAHCamtOej+0/Yj0eOwx2aLTB0w8ywzQt2aLUnsA4pVxvaX5fVNE23gMsWjD/A8W7+GQDEHCP6D2+hwOv7lT8YldTPa9epY/+1NpsuzzPL8sK8nFjXiyk310ItrmlVvVmkYO6+oCXR1oE0HPmFz/51Pv/0B7x59RmfvPkBrVbev3tnF1FXSlsJIVLwQbu0Y5cmamnM537zz5T8gkFXNiybyx1x3PV3jQBjCqQgDOOR3eG1ZeZZObYDi75wbgPDOBKne3Q4onHvQSq4Z6F2t4ubnsk3DyMsxOGeMRxM4YAdWivRBTEJCRm6CrkHhnai1q+hZbQ+Q1sRBqLsIETauKPF5BIwGXMaPlO1MOwbCSXEwhj3xpOI2OtrzzHhSskdN7dk6DT4ukG6PWRJSMS0B4nXvpuKL3Injmihri+U8zvy6WtOX3/B5eknnOfG+WKkmtNppebKJCO7wwPz5cKXX/6EnFemw8SwG23GbZyAYEEqN4ZxZLc/eD/zYmMJNLMhUOt3GdvKKjW8skMiEWVKNvsyrza4O4WJMUZCEKYUCEHMqbkVBBf7FSNbrLWRorMBe6XKiEgjRNsshylAgDTbfVBb43J6oeiZGhI1GPHgq3fvbV4sF9Y1IyhjMibjZY2si81KHUegDOQl02oxYgCFECIfffSGV8cJzYL+oUjLyruXJ14uZ9a8cppPLPNKq5X5/MJ+f4SqxJjQweTAWmxQAkETWgJBGko040pVEiMikUEqQ8hoW2n1TK3ZSQfWm2vicF/v9dRG0ETUAW2JWq26KiVTsgWpWipLW6jrC60oy2xBKrdCZqGFgsYFlYLGAvHaUhCCO+b2asF6tJYQG0V/Lubq3I1IjdrVfCeLRtFn8H5ctOupwT3KVkpbyHUlVyMouZUmjpIyxIFDOnKY7vjs8XPu9o+MHGiLkaNqyQ63C2FrTHc27JVe3lyCaT6fmed5S7zAe4r++90mKQT3rHMdUpGeTPl/h2B/KbiNiti6vzWy/Z2O73aQ0spmYGcPsNE+mzFcSlnNXbV1wcUuYd+2RvXtJPh1er7nZJEUJ4a0I7mbbdXiUvcBKWKznCjSvOEbup2H/EygMNbg9UILcsWF8QTMMR4Jpnad0kAdRmobSW7st+l1ucZZ7+0obMKz/fgwlItDboIENfHTqMS0Q0MltExoxX2F4vY5ACRkJO4wGaTqhIVolHqxhm9rq1G6z7YgsxutSYjEcbSKsWa6xUBXZBAsSRCZgGFL2a59Zr35NNZQJxiDi342tlPt17IVyvyeVi/U09fUyzvy+Yn1srBcCnl1mK80ajVVhhYDGhIaE5IS0hqtCWWtTkC0QJjXRikGC8dkzK12M93fEZRa2iYqan1qY9KJq+q6bB3BiQod1gu+wEMQgpMXlD4CYVJNoFa9cpOQ+OxJn5WK0bThYmpIFNPQK0ZaaOq0B1WKk0dKsQ3KKO32+rkGltJIa+OyFGIU5qWw5op4j06CEIeE6GDNV0ZahZ2ADiNDXgnjCCiHw8g4JLPpcBmhXDKlVhgSo3aAjA97JvST29E3vzO7kkTPMx3y22A1PydR4geiqpZ4mZxUrW3TvYwxmbs2kaCWtBbfa7qlx5V00mkLrn3nwFwnkHeCRW2NrjLeehBDN1jb3qMFnhBcZkurV32myF7a9e9rY9MWbU6kicPIcf+K/XBgiBOR5Ambazh1OBGMxeWBpUN5RsTR7ebd5KVU3QD1GqS2AMRN8Amy/TtsQcr3Qr+n+79BNur873Z8p4NUbc8GsW3mWXZjl2ImgfN65nz+ytSklye3YZgxoz4bWjTYzzTsqlZKPpHritaBKJNBC/GOId4TdEfJYhua2m1YciOfCzEmpmaOpDEFQjKpoSR205FMfTjFwN4FZpuMqAzUWlhW26zN48eaxk2tmTwej+atdE4ULHsOKJSVJmcKStcBMxv1gRQGvwlhuzk7Zc8zoEhy1Y2RYdzZjewOvb2PIyqIjEAipCNxeLVlidarKlRZaW1lnX9CKy88f/UF73/zt2xC36GFV599xJAqknZAhDhSUzFLCzy2SCDFT0jxFT2Y9gBkRwCZDAJKEbQavNUjVKnQXNA0NOryzPOP/x8sL7+FXp5pL++Zzye++q2vOb9cTKs0CLVAXiOtRmJU0thAIrtXjSFnlpcT56eZEAthvIDAuiRyMbmkZTGaXV6b9QZa94FqzC8zec1IChb0JBBT8TmfK3yng8kUDUOw6igGq5iDMVOzG9Et64KqMg7BnHWDejKBwauuLp5SIkRjfjaFyzIz7TIqlTYbWaTFZioqCq1UalVTZHcpqeqo1ctqvZ5zbsTQOO4Cx1dH7l8fuWuB+8+EOCUkTYT9AXRC2h1o5HURHmuferOsfxoaKSjz5cLz0xOlFJ6fn1nWlUeUw+MDfcjZPLFs02wORWlTQrXXs6Hpq7N1UzXCjA8wt9qoLp+0SwcCgV3cM8QdrV5Yc7bqcVlYlsK0O/I4veJud8cx3LPnyKrvuNQLrWVCcyHg1unoDdUVCNvslqmGmMVHrpmcDRrNpWzDwE3doyvavEwrPqQbBIkLENFoCuiX9cxpeSaXi1fU5i+2XtqWFEHke4+f8K//4P/MIAOpRCQHJ9pc7P1FmztUFVqx5ILoXFkPLlUb1IzUym4c2Q3DFmzg2jK0/uHP//fWXuj7z/bvrWnHN+gZP/f4TgcpK5tX9CZIAW65Xql1IeeZUkxctnk1pc1uMr2l/mrzwFVsKFSNTBGc/hrEJHeaq19vGXNTWlGCqs01iQ1AdtKBOJ4eHLtOMbq1e6CSqBp8UNPevvb+1M3njC7xkvJIjKM1xsFkZqrh5LaBm3xKaB36gds75kr5djw6XDX7DHxS5y4YxdydUBAGr5oSKuP1dYHGQuOMVmc/1ZV1PnF5emuVRTB4pjweoJgas5bFzresXknhze7oqtTXxbDVUhtd1t+7qLM6w7V6qqDV6NPQ0LqSz1+yPv2YdjnTzi8s54XlvDCfCwyCpuDX1AaejSARICpp2iEhsbws1GxZcJBsASlDzkYgESm20Xgqryr2mhVKrtY70mS9I7F7xTLZbgKpdk3V550cDrHM07NU7Jp0uZsW1PoYPshqgbptmbaEQFQnTyCkIZKSEIudz9YaTa6K3t2NdtNC7DR1cWJBMQ+q02xN/vOcmZfCWHolZbqSTbuX2A7B4DUhMkhkHweCCGPIRGk8x3ecz2ezu8krl/nCoeQP9jFT6e9VFTh1FSM+QW/EX40E22Yf0SupTpKK4ioSIRKdqNGNBKtrHQrClCamuGMII4kBUaFooWkhajOtxY3J5j1tura5vfGrcWD7gDyg/e038VvZqpHex7RrWf1+qqgzFTvM1+3q+77TPMlAYIh7Ho4fEYmUl8V6zAZC+mY00OFzbc2kqlwxo4vUCmwbXOpokRgh53p8Wwvh246f/7xrdfy7H9/pILWuT6ZD14nWfiMs68q6Fpb1wuX0jjUv5OVEzbPJ5ZeLyd5n02HLdWXOplC8uhHiEIXdbmKaBmqtLMvCmFby5C6XYpnJuN+TBlOG3k9HYoyWvZWVWjL5cjZKuRrslYElZSQEb65H0wBUQ5djHM2kME6MMtjnuZxYl5l1ybTq0/ol0GJwKOBsTeLkUNzoGnZbUMKXT9gWPtxmOb3noyAZyM5Xd4p4VzoPvYLywV11VfJaIC+00zva+UvK5ZlcbdB4d299t3GcCLnYCBVPtJjQNsG0NxHeOIEkVEdKs8WVVEEqWp/Q+oyEPRJeW/9J3DpEFW0226V5hVwhRWSMBC0ECoFMqSvLPLMsC/OysKwrUQdjdTbHyYMHhRCIKTJNQksFHipDMImjJc9ueGfss5wbORsV2GjCypIzp8XmrtalUTMkMRlEgjqdvW1JgyHN9lnKWqjFNOzKUhCx8YlSLDPvc03aZYdUXHzVCP2CzUYNkvzyW4Py/i7w5o1yuVTO68mgcA2sLp8TsPdO6KJOJtOFKqXBUqxCfX8pLFV497Ly7v1MHA5oCURNrEXIxSSThuj+Xj7Pp6IU9Rkdn7cqzcYvSoPn85mnp/ccHx+JKZKSs2y1Glri1UetVjGVbLByKYtLGq0ulVQhDFRGCJGQTLRZW0CkoJhSu82NBU9CG0kSSYSH4yM//P4POe7uedi/YpQ9UUe0RFf+yIhWYjCH7G2debCxFRWIrkYRmRiDBakyGOSnrsxvRpEDCMzrhTWvVEzpvjZlzi/kppyX97ycn8xipGbfKyJREmMcef3wCbvpyCcP32MIe8szUzVN36qeiKu3Rnr3Sen+IJv6uovI7KbJ96ZbOO6bAUW/9VHgdw0+nfDRfo/B7jsdpPL6jmXJIP0GNrroPM8s68qyzpxP74zdt7xQ8oWaF0q+mAnZalbbS1mY1xfT+MuGT48H2O8mpnGkVbMAGIdMLi4dJCa7Mx4Gg2dCYEo7IoH5dCYvM3VdWS9no72HiooHo5S9Z1Ctamq24eBzHeOwZ0wjg4y0VsiXzOXlbCK3xSm1xeAAC3v2esMkprXXjEiAyM1tELgO+fqjG0TdsPmmZkFKMsYsmoCISrJA1Qd2KUhbodnMlNRslOWXt7SXn1IvJ9ZSSFNivL9nOt4xJog5I254ZxDVR0h6QGQihgcIidJsoDn6kKgArbynlS8I8TVxeOUViJccNdPaaoFyPcG6IkyEYW9BSjMmwLuwzBeTPVpm5mVhJDCGyaoRscAgwSqBEBtpl0AbSaEMiXnOrG+j0e+dYFJKY16yBY/BeoHnWXk6rbYRFqUP8A5d0UjKzQbg16STfYqRJADMmRg6WUToVdbWNtiqINmeY70EiQ7TpNFIPXeJN28Cl0vh3UslZ1hWKLn3H6z0l+DNfO09H4MuF4z8oVoZM7x9tiC122cjOrRIy5BXRUNjGPw9xYoGu+8NjusVuClwVA2Uqjy/vPD1u7d89OlnpBRIMZJLczmvRovWu7WKplHzSp4X06Es5gtWtXiQUlqfHwuJYZhoLQCFho2VmLSTS6KJVbmDBF4dX/GHv/9HOOyO7OMDg0xEJrQmQ2KaJXQpVFryGbktQDk8LUKKoyc8ggzGJKzFGafF1nyIkXGaQODl9J6LnFjazJLfU1rmvLxwyQuX5Ymn83taK6DZq55ElJHdcOT7H/0ir+8/4s3Dp4xhDzTamM3HbK12H6JW2sstxCYdZ9+GgIMIu2m0tslWAbqY9ge7rwcpvX3k5z/2bUf7g1BJnS/PpMGmvrcgpY15XljWhXVdWdeLM3hW81ZxP5hODb2yb4o1OGumtsaaF+blTJCB8+XEMJ6YpqOddLHmqgQhuG5XbTgrCuZ1YV0X8prdnt7N+MTkUdpsjXPZpIGsarGhUyv7cyks62JVXF5ZS0aCMI4jMZroai5qPa/tVhDfvKHfHtIbpb6AXKDNH1Ms3erjhj5B789VrqQJbgKbtmaEhPU9Zc2Uy0zLZ1peEA2M4567V4k47tjfv2bc35H0AnqmT9EjEJoixajFjRlCpOpA04ikgCazyVZ3GVVXscAzQnsz2ed0CtouJkCbZ5q8UJYnajY2p7HWirPyKqUYfTpEU9CozYLEuthQrm32naFXt0Z5R5u6coi59loV1E91be7bVLuihBIH3SoeqXzQuDY4xUgqrYmJr24wrWxByrJfh3u0N+JBNXnA8ud4kxqHDEMIPlcVialZEEiBXBp96BQcikQYXKIq8CEpxYRUrYrsOnGIkHY7xv2BKnuQyXq5YTL4Lwoa2GzKBUzEVu2Os0QpbNR7RZmXhaEprdeGnsMprkrhiq7aDR9LNZ8wXC1fOmPOHKXTMJh4R4vEZp+tQ3BOWmM37ojHwGF3YEwDQxw2kkCKA7vhjlwja1lsxAJzQhaShyjTpOw2GNFhxSvB2yp1bf5dnUjgbQNTjkkEjX6emvfaVpc48rlNT2iGOJH29+ynI8f9HfvdkSGNG/J9JWN1WM3klK4xwzHCzb3AYdGbHlKPNj2x/TCm6If/0v5v/XnP+JbjD0CQ+u0f/785nx4IwSRYzLZdWRYTDC2lcJkNbltcbSLnzLyYgsC8nK1xWheWPFO1suSZUgtLzjyfZ3bTPcPwyNPpTIiRjz/93IYf4x7EpteXZbW/cX5Pq4X1PLPOM+oUV1WDUBQ3pasrimHIKdhAch9MjoPRued14f3LM7UUnp6fWC4XHh/u+OTNK6Ayz++YLwu7YFP7aUjEcKOCHbznEbxc8ozJ8P3boTrD1cF190TplvCEZHCfKlZpWUXQysq73/7HzO/+F9bTE5f3b4kEHg9vmIY9rz954KNffEUYDqTHXyAMB9r7/xl9+z/TQiCnCY2RVBrpZaYys/BEE0HkgSBH2pSJko31Vs9WuciKtovDNp7514VYT7S6sq5fUNYT9XKi1CfKeuHl3Y9ZT8+8PL3w7t2ZeV55Oc3M80IpSsmG+zdPFp6frVoOAkOy3tcQKzFU1pxZvN+5lEpZG2tpzIsxy8T4z8wrrFmoVVkXm8cjCNNuQJpa0uJD3jEFUkoc9iPJ9e5sU7syBbt8lt3HNmBbVamr0hhJYyKpkAYlaiWSiNGqzRCj2Y0MiWk30AT2h4F5NVozp3JNfVUZY2IfrQrvOXep1Zh3qpYj0FXjFUkjd599zuMnn3A87ajnEeoAyx40UKJSQ093LLiUMhuLsJmWYBgih7sDud7TpPHTr79kGCd29w+kaTQV73jN9IM6M2/J1LxQLxerqGJz5xij5EtMTLsDd8dHSl1YY0GCCb2uZSWXQilmZ/LZm8/ZvXng+x9/n/vdkXGYTE9S4NAe+az9Ekt54avTzDnP1LYyr+8JkhjCwaqxdCDGHTEkduORGBIURQqmt9fceqOpQava0GJ7QQxiqI00hrLDBAgya30mtxNVZ+sXVpAWuT++4dOHX2Q/3fG9j3/I3eGRKMmJGZaE9TnQ6/Vt13urB3zxG0xla//2IGUahzeO1FtQ+b32pL556Df+/QeAOHG+PDMMQkyj0Whr8yC1sObVjAjXebOVvlZM3fSsV1PVm6dWWZWawQkNrQkv5xdiPDAvF2rL1txWY2r1v1uLbWK1ZFZXWqdd8eDm/yu1MGdjaGlyBk+D4Jtka42q19crpXggteb8MCZQ4Xyp5LIwRJfa97RUuqDbVvnIzfebzMnSra2C6qoR14rLv/fnonTShWolz++YX37K8vyey/svSXHifnpAxsQ4Hdi9eoMMB+T4CuKect6RHVJqIdBCJBbQau+htExDCCFbXyRkg8qSY+lbL6zcINqK6Aq6Im3xSupMLU/k5UvKulDyTM6FvBbWtZJXW8ClNERcCUOCK1kLy5KZ54UQYExGZGijMgy6wR9VrYKpN1/N47hEIxnWZg4Udm9YtdVcE7HV3iQ3+i5q1N40xI00odsn7KddCBlKDgbj1Gt116uoW+UA/xW6qWWvpq5f4iay14a/AlGEIdq9WL16ab3c6LdB/3teScVxJE07Qt7RymgzhmWw9RPalSav0H2VWt/0nL6eUmKcbC5vzRkNwkDzz6B+S3qg67e4EyhaNcKTVVwdvgxbdRLTAFRKjMamw/3gnBYewOSahgcO04EhRmKItODAWhzZDXcOH5pOpGqjakalmaeV7/Cdmm0jKtGXkfXk7Mvfo1/b1lqvaYgiRLFB5v43tGVDCTalFYP7hzhx3D+YhujuyG7cW1+z9XuibQoPdu36X+nnvVkC2i8q+sFz7Feuv3utyG72lp9z/M7M8utr/4EgTnz57ksqhWmcHO4z6GJdLRsutZpWX23kdTHYpxSWbDDaXBbWklnywstij50uC2suDiVkxiET+XXeHt5S6syaT4jL16jCtNuzc6fdh7sHDvHIMkbyZPMpVCvt58Uao6KrSfRoI5BIEohisKFN1gMBcis8n19sAUolDgGoZiWvlcuyMq+FOCr7GEwypSxIqKRpoA/F2gDpdchug4IwZpp2GR+qbwbdCt5vVtsNXBgz09pCy+9o5zPteSWUkXH4lGHcMb36jOn+FenhI8LxYwgjohGqEsKONL22+aP9a1ockXqEuicoHFoXZE2gkagLevkKDRWJGYkV0Qvoe5C4LVp73xmVFfOiOiNtJtQVSmY+F84vjZeT8nKGZYHzIiwrzOuKMBsjMo0IgWXJLIt7O7WM0BgmIQ3WZG5V0GbN/qq4pI5lmlUqDWXOjefZ+qO12kxLXCrxZXH4Dbq7chTzFKsMBE0MQ2SYos0dJZ9T69PZCq+cYLEsC3k1RXitxbL0PhZws1mF0GxDUquSLQgaqWEcA3f3401wwyuvgKqQ1dhjuLNvDDCNiTEJEoWshfPlwpe/+VPKpVLWAzXviJoY6x4QmliwC2KDyKCUvJi4b7XNNwTheHcgJnj15iM++97nxGEgHg7IkLbksR+CMu0m7l89EuaAXgK5dMM/ZRyF+/sHdrt7xtGqkm1ySUxPr2pjLYXTZSaFgf2rIx8/fML94d4SRsWQD2mEENjFO0QDu/ApVQZyO7HUk89c7VAJTMmsPgKBVszEU1e1L1WjfW9C1801+byP5aSFgF2z0G5mB9Ukn4LAfrpnCDsejm94PL5hGvcMcbA+JX3+qm4oiXK9ttcOdU9Ir5CtDZjfSDMh1n6gB50ezODbgtRtwFH99ud8EwDsahu/2/GdDlJfP71FYuOwtyyi4/+5VMtga2VdzTeqZpuQ34JUqyxlZa2ZS145XVZyqTy9rCxLQavQykKKC7X8iN2057I883J+CypcLiutNj799HM+/exzHu4f+eijR+4OB4YhsIymp0UdbfCOSGknQhPAmFpRoonPepCS7ggnkGvmNJ9ptTJFISYBqUb+aJV5zZyXyi402uRGjXVBSibUOxLRmV9ty1hjz6x7kHLWlElfti1jRQLi80Yqal5PojS90Oo7anlPu5zR04qEHePwmnG3Z3r1MeOrV4TDR8jxjQWoNUBRokzI9AriSNx9hMaJWo/UeiCoKWSLKqUslLIQNKOXL2iyEvejKZs3D1Ia8caOO48K9CClM6ILoVmQWi6V86ly8iC1rnBZjTRgJJqZECLTuEcksq5WddVayPMZ1UqaImmINgs37hAJpiCh5ra7ZKuU1tYoCnOuvMwFX//+9owRGYMwTiMpRuKQ0DChEi1IkWzIdT8QY2C3nwgxOJNxIITIOEyICOeXF+bLhXU58/z+S1Mm6fBtV1EJ8uFm1XtbXtEOg3B3Z/JdwanVBnGZO/VSxaCpZs7CKQrTLjIOYhVjK8yXC1/91hfkl5WVezIHxpC4j3ui2MyfihiBIe0A0yzUWjfYUwQOxwPTLvHRR2/47LNPCSmRY6CJMK8zdS6eM9nGPe4mJD3QUqN9FcjalWMagcD93T37wyNjnIymjdCk698Z7TyXzHmeGaOyn/Z89Oojm6WSaNRsLHEKITClI6KRnXxCYSTrb7PUrwkSSRgRyCpi06FspZha+aKu+OAlN80JEKajuN2/JCR6JR2MwCI3QcGClDGI9+mB+8NrHo6vGZIN+Pfn2YxWu17zLVDdBCm5fdwhwAYi1gMU94nrWIp4ovrh8Y1qi5t+1Lc99i3HH4xK6qtnIDAvzoYCUIdYfO4hl2yN/mx9o1wKF+9JnS7GApzXzOVcqLVRFqFlg+BahUpjWW0O6fnlhWn6GhSTd2mKJGNrPZ/ek9LA8XDHbtyxGyfvU52ppXGeL8zL7DBN84opmOuqQC5moc1lJjexnkm2wb1hGpmGgSGZ8GtDzV0zASFR1WZvNvinNVNxF9mKoo0A0Sv63uzVLtPTocCOFTdv1iotW7O4rifK/DV1uRDTPdPD95Fhj4z3pGki7l8RhqNZZKBYAyOzMQIdxtJqFh5az6hTq2u1IcmyGAOzcSLJOyQUguxQHWFoSNqhGtHoamPq4pokCDtCKmhVQirEYWXYK2NZ2JU9h7on5UId9wbN5oW6muJ4cmHe4TKzxIWaM5RCbc4Ga4FKYFlt8ea1mVBpcfiv13baITpxQ0C7Zkgjt0ZRoSyWLc9aOLeZlBKrBtKQWMpIriYgu2QhhmiwD8W7OhcA5vMLy3yxwfRi+oTaJXkcVpbWXNWkM1+NWDCOicNh4jIX1rw6dMf1+kvzpKdZL0KvNt+2CeJ925VlNR+uMhWq94SsSlmIIuD6jDZ/5WxBt2C32cV6JaoEodZirscxkMV172sml9VRgODsRpNTCjGZ7E53I+52KD3fwgZRa7PgVLT6Eujwt+2ptbmEUbDPHjpJBEWc1BRDZBr2lvSWMxkbOh7ijiQjIaQNTm+uB9q6MsRGx8SukVO8t1DgUjOipq1ncGVPYhNJdgSJ7IYjh/GeadgTQySKQbPambsdmusBSnt1ZT+Xvgk4icIu+Q079ANGsCe1/v57sPvwuCVUfDMk/d6C0O92fKeD1P/zH/+ITz554PHhYEoOu+ST0VcMVT3DzMV6VGvOnC4Xcq68f3/mcl4oWVkWxWT/B7QNNDG7idqU55czp7hwulz48u2XANRitOPpJyYmOw17Xj9+n/3ujj/+b/5x/k9/9I9xmS/89m/9NstskGNrSgyJcTjYAhsicTeRV3N3bdrQywqSLGAWt1F488DD/R2DVhIFQmOcIm0w2GZphdYCYxOkCmXNyOWMpEiYbBDYhjM8MDmkJ36X9ul+aG7FbRluc3+p5esvyKcXlucXzl9+iUjk+Okf4e6TP0HYH0j3j2ZpPzRi6AvAfKTQF/u3XCyzp1HnM41Aywu1LFAXyvoOrSvldKKcZ2IotMF6QzzcE/d7ZHdv7z+Nrls4oS3aNdMRGT4mcg/xAvEBHSsP31sYXxWmjwu7l0xtyuJMzpaLf2Xq6ZlWMpd3XzM/vWOZZ95JJOdMrpCrULOpZzftYp2mbGKEHYP/KoBYkEECY1fGz4XzstjfL66g7S7BMUUe7g4M48D93Y77ux0xBkZXJilZKRVKzlxOL8ZAzaaecncY+PzTI7spUqcRRlPKXttqFYzukJpYc2Mt9j4fHo/sj3d8/dUzp+eL+2lFpAmECqFRmrKs2T5fl6ESU0UoCqcFvn7OTNOe8/sTEyN6f0RHIdfC8/KCqDLGieR9nCIWYLt6fC2FXJwQIEadP59O/Hj5TRRlLStVK2FIpmgRhDTZORl3e8Zpz5An0pgIOfrInhk00gQxCUpihFwbS12Z6+pBKCFEWrNx18uy8HI+IbuB49gcIrSB54glC5ISb46fUHZv2Oc947oDVe8jCUMwM0FtSs3mtqAumyZgw/eqnvy5RUfv/16/kZzlOsaRMe0sCatmFfTm/gc87D/ifv/IlHY2Y+i9cyuaO2OzS8AZpG/ya06QiP68XnmJ+eTJ5pmwdaa3rnT31PpXcXyng9Tz6cJuPxCC+euoGj37ShzosiXK6vTzpWSWnN2pd2VZMiVDXi0bkY0fLVuWUapbymOKyKhaVqqNXITLahYCuUR24ws/fP4B83rmspx5Pr01N10fnBvSRHDn21ILpVVytYy2tuYN/E5LF1D1pnciVGxwVYUQE1EUwSbhewPdSBRmC2HBwoZ4xW9ghZtKqldPDv91bLrDAG630cpKWxfqMlMuq5krDncMx4+IhyPp/sE2Gb1gUGZG1SzdpS30wV/tSurNjRPrjNYL1BktTzaQub7QlgsSPduMguYJHRJSfE6l+efSCCSUhNIgTMYEU0GSEqik3cggjSkUshjZYPDKR3Ol5UpbV3IcrKpaM7KuiAppMG+u0uOu1s26YbOCdyhpg0kJ1l+I9t8xJUIakKo2E9Qaa7FNs9RGqZkUGyFkxmyQSwhm/5BX6x/mYtp6eV15eXq2wd46o20hsKOWHTqErZLqenS9ag1BXFfQNt8QhJRMxHZrYDsvxW4Nu/5d17IzFbYsHP8bxc9Hre5ybRW5ESOskosbkT3gpHO6OWRt2au7az+21kIpF+u7ZRuAT9PAICMSg90XMdoguFz14mKItI1c4ZuxygZXKbhGX+/XdLHTa+XTCVTXnkrv51znz4ZoDrmT7pnq0eDK/vNtWJ4N0ejrayPS9mqnn1ev1eSG+GKfQPw+iKQwMIRGiqZwvhsOjHHahF07kHfLkbhqHrZrBdQLIf87ttdcIcVtz+zvyStN+5X/P6qi35lBcY2Av8vxnQ5SLcGlLui5kqKwFKuk4qbKC11nNbeVosXmZaopTtv8bLBsqw/Ugl2YgJvXiTOhzO1U3MMn+hkWwwFoMbCowYi/9uv/A29PPyYvK++//toUwb2wmMY9j3efkNLIfndkHHcusWIN2sfHR3a7PdMwst8fSEF4Ob1jWWaSwOgwIdPEOA4MREYGYoCmgVqEEjIiL4QSrUkeIy1YQ1xophyBGiRYCypuOHcDCZhA5w5iIz58H/aZ8KoyfroiIbJ/fEOaDoQhmDiFNjTP0Ba0nkwlXQtSX8yipKgx+dRkXloTWlt9ODJAOpgB3hQt+ze9IPus4xsY72G8g/QphAHhDtGR1sRmvVSpYUcbGpoKOhZojf2QGUpjWDLDZdmUshXMbK9BWzPL1+9oy8Jp91tc9j/h5fSec12Q5UzIMFQl5wqn4Oy8yVEQYXK4JWug+MxVaX1j9M0nCtGFQAZRpCqhAKvBgbUoq1bmS7btUyCGs20Y7rhaqyUMooX9bmAaRg6HRAo2JlByYZ4X05R0HbiRyWS6ohKiUlrh3bv3nE4r5xd3YlY8+AdiEsbRRqnTaFDyvMIlKykoY4gMAe7jyJs0cZ8m6jCwjIk0JuIYwQkHYCMdeZltw+vsPF9nXXPPErHubxQsoVE2eZ5aMrrY52manKEHCLScOU73CJG6t8Hjw+GR5OortQlrUS5L5v3TM6fLE/NifWpx+Cz5qMVaCrn6rJVbvVieWO16NoEiSBNSG9nHe1e5WBzODF7J6I12WocUHdVBN4KLA8MWGprbuKgpzw8xcj89EEM0BuleSWHk1d3H3O0eGdNo4q8iWyDqYgGdkdlcw83+XjA2JgJ+bdQrKdRmA23MxMR3u2zu5ibdJ8h/t0O+9Z+/21N/x+M7HaQ0KXPNlNka0rmYanSKkRSjZz6GYWddqRQXn3U2FBi1F7H+TnfWVLVejjENCIPPnDirycgHXUPOb5QQWHUhl5V/+uN3/Ppv/hO0ForPS+XV5lr2uzs+fvU9hmEiDTvrLcXEME0Mw0AcM8P0gMQjh/2EIJwvT5R8YoiJabCZqLvdjjGZJlry1pPSqA1CLmZtEG2gMMSERtAoRswItiC0+iblHA/Tf+v5ssOCQYh3tgkMIRHi1b7D8POCsNpiKGYqqOWZlr8CLQQuDjkEVAOtBaP/N9kavCCEuIOghDGBTrbgiWhIkD6B4RFNRzR8ZGoK7BEG0O7Po7RoauFOkwJVxqkwtsawLAzz7IvZtBGTRJIk2pJZhvfUeWEfRs5xIE07vnj5KXWGUJRUlLga/FtLMz0M7TBYQhFysyCliJkDtsb58mKsTvd3olndJ9E+dytWZxgLsLFI6ekuNJtdC15d0QrUFZHGbjpwf9wxjUL0odBaKusKjUaVhsTA4APaEiAEBa08P73l669faCWhbYQWtiw+BAtSiDAFY3vJqVBKts0zRAaBQxh4jCP7ONBSJA/R4OvBZKaqm2TWvCLlQ5gohLRRrHvKoNWZrc36jBaYXQmvNIpmCNA0uqmjzYC1WtiPR2IYaJJoRKbpQIwTIskEm6uyLMVg+8vJpNTUxj6mYU8U6yVlt4vXLYDYpqyq3uMTqAlpkBiY5EiVYtJS5O251wDVKzHxQOAIRf/MfR9TfJ7JVGmiy3MdpiMxjaAR1UQKA/f71+ynw5aIA1TxgeyuJqE+rFzrNWhulO/+5YHNsciufmPOr/05v9cw4od88O1f2PGdDlJgF+b21N/8BLiZHelzNj6vGjBIJia5yoYo4JkFQTf1BmNkumpxABHdYAK4EQFVC2B2X7giwCYYa5hRqY3T5UxcVmJabI4jJoZlIqXEEJXT6Yn9tOPtV18zpInHux+wmx44HPY83D+QUmJ3d7TMVQ3wErVBToMlGrhIpbbqcJRh+leSjm4NUfSGWCHB3ahdesjL/kAn8l5ZVqKKQXkL1BUtZzRfaOVMWxcEW3SynVs7fyn4hIYalm561nuDZ4YG2WxS+vR92D0iwxEJoy+kfk2AaA1mFEKHkUqhlhVaRcsCrVDWlbrYfJqrE5kZZYO2ZPLb99Rl5eXpK56e33NeFuJ4YCIQcqHGioRCLcmGdAuUJn6eTPGB4rDZBt2AVvVmlZ/v5hUckRQFmRyWkqvFQe8PNr9nm6rrxSlTSsSAKeEHO58xCiEKIQVX1fbJp2Cq1uI9OKQRIhyOO2qF5SJcTjjDzOZvxtRNFLGxBwnktbJGSBGmFBiTME2RcRpISYwlOZ+RywuaBnTNRsGuFWkFaXVbK31tBunwn0tfoS7IfDv+UL3iwM+BCSerBx7rC1dSiDCMaBggDAzDzubPRLyP5r2XbWzBjhgS07AnBbe/6Qlnf5euUE8z6LNVaHNBC9RQIHovjQAhIdWVL5re3APiSYAHhY4HOjS6we7ikCBdukyIMjBEM7IMYWdEif4+cQUJ2IKP3rzWtiNqX8Gynda+F9n3vhvoFug65N9zpW1jlVtHgt/h+JZg9a012B8EuE88c+hUzv7VO5CGGHiJXZqxnVozRjXiVgfW6Aztw36NaDTjNa55T4hmk9GRqI0R16IHKWvY2jBn85iYPHsHgjXNL199YZmcdIMwc3wNQfjNf+4eQhKIJB7uHvkz/5f/K7/0hz/ik4/f8MMf/hFiSuAS/1obze0ZKO43Uy7W6wG0ZlqtBK+K7D3beROjHt0slmBdZodTNhV3D94WeDN9HkNo0BYoJ7Nmv3xJW1+o64m2PoNAcnuKDjcRzaGXCDVEWkgoE01egQwM7IlYs5gaHW4wOr2GRtNi2XbyakQGYthZ8jcvBK3U+cTy9itaWSG/R9viRoym+7Y6I6+eZ8p5RtdMff9EW1d+6+kdP31+b7pqh4+Z7gLrcvKhcNgdrOp5OmXOS9nOmzaQeYHs9OLmw8hroy0FLRZ8AYIr1A/DwLAf7dL1Xolelflbte91rdRc2e8GXt8dmcbIblJSbAzJNBtTCoxTYtiZNUfvduRWyEsxGa4QGCb47LM3vHkN775a+Ek+oQ2GmIxRFgsxFmIKHO5M6DW2gqxKisLdPjEOgYe7HXePe8Ypsp7e0+pKbJW4npGmxGxBOZSyVVLi0hkx+vvZEh8IXsGb44AFF9UZpdDUbFREE1p3iA6UtQInCMJuHCEEwrgnDHskDNYHlOBrt1Ld9r0HqYCZRe7GHVFGpvFIiM7Q68PDISDRWY61UNfK8m6mXAqyi8ghGlI9DWhIJlxdss/T2TKTKkh1hQwjwG8J7KZ0j8G5KkaTV8fch3AgSWQYdkzTve8XPUDZ54Etz+Qmo6bTk3uK2Vl74rJRV2X0HpIrjT6S7EmFdpV92zrat0aaf/nHdzpIAdeYv3UNb6cLvpG5NP0gpEuwyrZtUBeeYWADdC662F/RWiTeUrxK5H0jZfDBPTfAa8oNhGZleM7dVNGOGJNJxIiw9gDSVa4blLwiQIqR3W5HTGnTM2ulUv0OaiI2LKjrJhjZHTWvFVN/J57Meba1ZY8SLT3v0ICKVUQdmmveXVfDtMUJEubWu6LuR6W1WHYo0arS0Gmuvo4CprYRAuaqOwITIRyIcrBAVE2Is1WfgXFavLU1RroSA8GIIaalaNdOSzXySF2hLu6TVI3m76wHrRktqw2WlsU8xdyXSEjENBJidM3HDovYxhVW23x6H0VFQczM0WJN7ws0uuleV5cIfk/GENyU8GZ0APpNs92TnfUVBFK0gBRCdbKBD+gGNir2rcV33xRFjbslIgzJKM7DkImuqhCjeVuZyK4SAwzRZqPGZF8pCtMQGIfIMJhSvASo2SxY2nCiIAQVYrP3Easlh7YhW9Jh6+6a7Uv/f2WrDq6Q1JV8YKw1HApUt9YwlX5L9sK1gvJEqntMlZpdl9OElC3RNEPTFAZ3PI70Zr/envhtpapZ+eRi0G2192VBwGtCJzBpX/fXguZ2R/IH/V/SxynEd5sesK1Ci2Fwwdr++nqzK7E9/+aVt+fJNfO2Z2yf7+awnMBrsV46+c76QSXF7+v4ZgvrmzHu98rF+E4HKS2KBvVixnoFGjDWUh9Yk+bMGadkevYmrvAQ/GI0v6G61JUCH1gti1Vew9AZQ/76rW70z9psCLKbLprni/dLiqBVfHYugm9MHXKTZo6rGtkyySBG2Z7nEy8vb1nn19D8xuuOl8k2J3svCdVGCZnG4htlNYYjzTBO2BaiyE0QL8omWBfMUJBqC1rr2Zh3ZCqLQZ9RrEfQVoJ2Bt8FdEVbh5eE4rbnieQbCLSSoCbv6xhHOIxYxhCtmtNW0WyafS2/oGWmpkoZMyKRGL6PxMl3b/sMITVEKsMuMt0d0ZqQdgKtBJkQ2dMUVteda2ulro11mXl6+yV5nfnsNPP6MlNaZS4ztRXWNZCbb44JpAnD7sguRoIq0aue5XSmLgs5ryzz2cWBF4oWxt3AYX+HtsblcqHk7Ows20yqVguOahVrDMK4m1yeSRiTwW2HqRHDSpTqQXcAHSyhkYjKaDJEnkH1e0g1k8sMqtQc0SoEXZnGhdaEYbD7KEU1RlkKTAligvtjZAgTKQbu7iaGIXI47JA0UHPj6adfW0JWf8tymJiI04TEyHQ4WL81Jfa7vav/B//s1+Je3N9Jm9BCrzwcJcENARvUspqXFqaCIdHGHiSa3aC0TCNQsYry+fLMaT7xcn7LT776pyzrmXl9AqmklDiOj6SwYzfeMw57UhzphIIOPYYoyDQQVMh4/65WWNX6cLL3eceVrPFmA+l9KNPtNOFb/5IesHw/0mTJGoKI0cJFkqvym3qMQYFuu9Guw/eWfgRUsxu4lhv/ql4dOfrTUZ0e2LZqyiSXbiFR1esOaX+/I1ffHl0+fFR+zuPXx+rvMep9p4NUv94+qkaLHnBao8nNRaErhvVSWl1q5Gaqumc9robdf8uYVtFZg0K6Jlv2FsSz1SauBYZ/dwv7Wq1HVYP3K2DDjZ3uamKdja4GsVm/i72Hdb0wX05kk+h2NMIp4xJdMadnPkprA1LitjDUMfmtlNqU0e28qWI9k34Otg9oCuVGE7+gutD0BGJnJtKZWO4tpYtVUXqVZala3euou4QKrVkjuNVozfEUupanK0UHJwm4i3L+Gs3PKI06FkRGNHzs4rmeUQpIbAgmITXsJiwuD1YVxSPD8ApFWGtXKbdKbV5m5imhy4X9pTAshXk58cW732ZZFUKgNrmiKUFI444xTEQagxZqzsbVKIW6riwXUwbJLVO1sRv2HB/undZdWbcSvIuNepXqlOYgwjQOpBS4P0buDsHktOrZEghXLTA41LN3gleubM3vrcNSlVpn65dU0GIVcooFjUIcXDE8wBDNHXiI1p8Ku8A0DNcglSLjONog+Vq4PD1R10p+thk3xgG5PxKGgcPHb9jdP7CbJlJ0tXeNG1xt6JT4hutyV71q174W+70oRm3fUAZzsJbUDPUQBTKVwFoDtSlv3/+Udy9vOV3e8e7pJ+QyU+rq1WJgN9yR4o4h7UlxIoR07Sf1/SE4aSqpBVYFakOzJWJREiEMZJ8/NIShV1S+P2yL37+c5t+3cAfV6NgNvu9cv7zK8tfsO1uH8yxIsemSXu+JziEUts0OPKnpAao/1Px1boPRpiDZdwv/2c8e18e+pVr7med8+8+/7fhOBym57voOC1k53IJvyaLet1I3qrPqpd5AchsM5htzCD5nQ9iw3BiN2m6DwnLd9FWp1ZIqm5kJ/rrNe1L+N5oa/NZuFx3gG/d2A9H3KgtYImryTcvM5XxinWfrebh8iZFxbm40r66sqhNaVfK8WAM77IjJ6OPdZVNVzY4b+44ITNEZqtkqGa2oLsCKSDXqvZhJHl3wVTsAn5zunJBxsh0ojUiI6DBQYwIZ3ENq2EgFEgdCOmxZo4hVwOZt5dUcIDKQ4p3h/0tD1xMiI15IGsTYFEomyAzBfbGYaHr1J1pXY3HlpZLnyrzMvHz51hQcLhd0nlnzwtuXZ3JZOc2FpfQuj204a8lm2tdTIBH2Dw+EcaTklfv5wWzRX96zrjMpBpNZao26Fh/u7puK2phC6/CdBZcYrbAdBmEYoxFVSgINFqOaQ4h9U3CmY2se6hSy24UsS+N8rqbG0YJVJVXYHd2OYhJCNDfWFBJRAmNKrnhhgroGNx8YUmKa7hjHAyUVah4psZhayyIQIkEHWossc6XKhVoaKSRSiug0MRAdXrSV3CuKK9RkjxsL8Bo0tDnsSvLPqEhxpf7QIASamnpMboXL5T3Pz18y5xdqOxsUrt679fRWCEQJJPGpru5V1pM2oEX7wklUuC4nlSsByUk0iLseqCfGvWrqgaYFaB2qFKSF69YfMPZqMCmpEN3VYCNHtO253XlDxSFTbZuCxwcwnT/HBGplaxXcQoY9IH/wa3qF+zqZ4/bnPwPffWN37vuZvcDt8zzt+D02ub7TQSqYBr5LkASqKBoCWQOaqhWonU7pFY3JzjfvFznkhrh0jbGudAtQRmNPQ9qw+p5ZdO+qWhu1GGW2tv7dlLY3uK+BOEa/YdVgtOJe3Hiyos1o5CKgQcl55fn5Pe/efsH56Q/RzitaI1rEqV3NWEZB6JRxVZvTyWvl5fmJuq4o1kOIcXTDwWiQQLHp/1ayQQxjQ5L1cXR+BioSZkQyIkoKtqxFs5/TQqtm+S1hRNJEiIkwjha0xnsIIy1EcrRFNxxeE+KA1AutLkasCKMvWkAVkQLBYUSxRq7IgWH4HCUxP8+Uy08Z4oFdqkDYTC+RmRierOLTAWWk1mAEhFpZThdqLpzenzi9O7FcLnz5099mWS48n77mdH5HacpcTRMx10ipwQc+V19zAWNCGSEhhsCr732f/TTaRloyeV34yW/8Oi/v33E+v/D87i21NtbV3G5zNpPNHlxQJUXzehJgHIRpDOx2kf3BaNK6Atqoa6AVE20VemJiPTglUiVRVTidlHmtvDwVvvxiRZuySyMpJO4ehNcfBWKC3VFIAwSNRCZEo1m/a/D7JZFi4jDdkeLAfveG3fSKdS0gz+7dNlFW22CVCFWYnxbqy8x+t6NkZRgSj4/KnskcDBDvV/Xq/sq+k615ee2JaltBunDyeGXeRl9XalbvSzuRy8K7d7/Bb//kR6is1HBCMZsTY+CZ3Jn4KMIoAykk0+ETQRy1aFGpyckQUR1eFsiOfFRFqmkGhjCZZp8uhih0ooKoq6rHzstANBDUrp+p5FcYTVmCGAhpb8LHPgtFT9421AQvOC1Rba1SqkF+txWP+ppSH0dwuGSr4a44zDVdoKcMqtvQeuNaV90e16AmP/Oza3zqiUZ/L7YP/16O73SQskO3bwo3J8KzB+3oVa9ze82rHoicah6SP95VwMNWZsfo0/nizpZ6M+GtN++il+I3qcZtJsLtv/3nH6CyNxcU/yytmSfVmlfXPPMB3NDt4Y2UYGvbF0/P2MSgx+q22q0Vx7dv359uGDeCwUhNjQRRFqAgyem2epPtakXENo9Ote3sLWQAHSEMECYkDtYvIaAMFkx9vsjs6sN1Efk56SZvG9NIbNMS9YlYp3pvMyk0z2idauyszlYNBsm5kteVVirL6UTNmeX5hfnpmXm+MJ+erWI9vXC+vNAIZEYa0ZBQgiUl3mM0Xw7fYDUgakZ1Qa6bRle2D36+Wi2u1B2uUNB2/uzmMHmg6xxziFeKOS2g0WHjENAQTbPOL2a/lk2t3jMjzsY6N5a5scy66U3WqOyK055Ftr8V1D8P/fvVdiIGU88I0dhzMY1EDQzTHkJiurtn3/xa+dA7zXqUErzXuX13dqr0jbH3Z3xhfaBWcP2Z9VB749j+WEceaIo4nKq1mDmh90ctUPj9dHvf+2bfsZMNDbvu7h/AZh2p/2A9u+q8oWS+v2zVh+9D3aajP8NJEpvCjcr2M3OeNruODs3rTTVya14o29vsVXTdEp7+eqp9ZOYajL6x7Vw/tNw80vezHhCvH/lbf//bVCmus1lcYcTtNf9ABCnZYDFjdskGy3XJkBQ6ztsgGNMndpHJMCBi2X1KBk8FGaGX/NuysIyotoVcL079dIypS7M0o7PTbDMNEs3CWp3dVZvRTLdaW27vBceWuS4C2JQDzpcnnp4nXp6/4vLyNa0cSbsHJI1I8hs9YDbdwc7FsB9QycguoEHIunBenhnHyiCPxirDbpxOeYaGrBckVNpyYn3+CqhMxz1pGmh1ptZnQElpcFFPodYeFAMSLRApO++XWSNYWjYNsZoQybZRFRNxbfSpfbP0CDKiutLaAlqQoITJgqueTNtwGiamcSKEkRit0c66IjWTl5XlbIOk87t3lHnhfDrx8vJCXQvz0wtlzZyf33N6emItK+/PL6wlM+fMUlbCcGC8+5wUdzYkKol1OXNZMq0UtMxQO+PO4OV3bxvPQVnnmcvpiVoKp9OJnFfW6nJQ2zW2PlxfgFHsPh2GyDhExjGwmwLjFEjOpHNWEKhVzsGH1xGr+Eo1PcJcKpelkIvy1VcXTqfM5bLy/Gwb6RIaIUCuNlw9TvCqRHZ7IzREMahxP4mNXEQz1iQM1HGCMFKHRBvNlfej1/dIiPzC7t8kjgdDA0qllsrXX37J89MTaTewvzdNwilWU91gQfVsWuOt0cAIIcEZfZtad6VpBoRABbFeopoHCHHBkAR1ZEUz2i6EVjikA6/vPmOtzzwvZ5NiwjbKqoXcVkQG6KMpFWqx89uqkRM6AqOlWn9qTD52ab+Q5xVqpTQfWm/NK48bAhcOVSpIM+NGaeJuA318xhIPtmrONAGvoaW/lu99TmpoNaOq5DKT68Wdjw0mbxocn/iZ2soeazeJsQePdvO9c7ta6wryXh3evkbP0LkGqlvvqavobQ+e9tial9/TLv/dDlK+4kNnum1fYYMQgiQjtbkUkDgdF4SY9sQ4EuPIMB6cIDEaruxHU6U0UwFfi1LautE6u2Zbh68taBo7z+ALtSxc6Vfag1T4mQDVS4gtf3QqfNPGkmcu84l5ObEuJ1MYSDtiz7YcNlS3MQ8CaYjUGpHBIl6lsOYLEtM2vKnCdgNZGliRMsO6ossz5fwWaEyDK23UmbY8WZNbDxBtGr61ATD6s3nSRGBAb3n6WpC6IC2AbzRmymSU+VKNGBHjHRoOKIVKASopOTTaQBf73eE4IqOxn4i2cau6e+9SKItS5srl6/esL888P73j3duvKGvm8v6ZsmQup3ecX96RW+W5rleVchXSFJiOiRhsdkZDpKyRlislZ3TJUKpVS8ECfF5PtLJwOZ94fveVVbGY3YSGhEY7Tx3fldBVGo2QE0QYhsA4BMbRaN4pCTE5tRyu4wGqvWDe1Lw6fJtXYb5U1lV5eVp5elpZc2Uxch8Z3axhUlSmnXiAiq4TCUlhtwdJ4oxLd2qOg822pUiLMEyJw8MjaZp49fkPuf/oc1pp5MtKXjPTr/9zpi++JIyR8W6wIeF8ItTFXAbyBbz6s229qyeAdIjvpqJuGHtOtbo9iVcgjgzaYreRCGmVMU4cd4/IUnm+GHW9V0VNG0UL0XtUwUud1vSKGmxVi+3WEgSJ4RpAxYbH1YMseN/5ppJCrlUualWUfdlcpWDnuK9LYxEZ8uCFKbdByv+M7T+qWwVlvlvZNQPdeqXXoIqzPvWG5t/X/82Gqtdgdms/f608DZnh5jnX79/22M1rfMPnqtT1Wzb1nz2+00FqSAMxGXQSfApfXLsvhrjJ3YuIX7DOvTGILw2Hnw1SMmyQWK80pPjgqWZKtVNmdOpGreIEDZCbi7/dob0/q0acsEVg6UvH4W2zucEC/KZyZijzunC6nHg6v+fd6UvWOnMfhLGupLhD1r1tYsVstlWFqMKYB+7Ca0o6bv1edKBHVhuyjR5kA6qF+eUrSv5yI05IELTsLHMFZHywhTTcQ5xotVFwZYCiJsfECq54XVffaPIFXS8IgRwmzMIhgSRX1vZ8MRSCzCgrqi9AobDQJKNtdE1AoT4Xgxs3QgoU99Cai3BeIjVn1hrIOjCv8PKysq4rT08zeVnJc6OsA4VEIdnlSebrw3CkSrQ5tXUxYdjLyRTcs2XO1ArRWZZASAmJwqhwcPJMVxKvmFSSgAkDByzA+b0z+L17G6BCvCpQGKTle3CXTBHx28bh52KV/DI3zi/FlM+XbAocm+QPnrC5YePcaDXw/uvAfG6EaIy/NETqCuNYCKkSUkHiwDiaE/bucGR/vyOlkWE0aa86X7i8+9og6lyptTHsEw8fPRJSIu7MwqWdQdeIjXg43Vyaz5baZisSPPns1GtbVqYx19BmhA7BYE1RfIwClOYqE8oQBw67AOHIodyRS2SpC7lluy+1eNXRoa5rFdC92AQ1lF+t502KRnzo67ZvFlwDUYf9jKzl8GRn5pZAaH1Q3T5fQ2gxGPkJtr+7QdmbpIBt8ldWn3oPzOB8I4VYgFV/ngXTm+3Ft6P+SrdQov2ss/ucUemv3WiUZvJyvSLavn8jON0+dn1e2/ZUUErL376xf+P4bgepYWQYDbYSwTWvjIVkMF+woMMV/hNxoVgJjOM9KU0WpIaDN/CTldGK4/sVCZHi1OpSF0SEppG6UWXVBoLbh6WvBSnbOOgGuE3R4puF98M6imPB1KszLLBqg9P5hGrly6ef8OO3v879/p6gBZnuQF4TZLCJ+32C6BshgYEdQ/g+OiiXemKuZ6Tt6LMPEhMhjUCGkGlFOf34Rzz/5NcYx4Hj8UAaBjRHWi5oOiK7TyGMkD6CsKeVE3l9j9ZMzGekFO/FZNBKXV9oLdPmE3V+RjVQ64QSGfYPDLsHyxg9c6wsCGZgGNrXoCulPEE7WxXaAtSCPn0Bl2faWmnnjJIoh+/Thgfm8TXn/edm4Z4DVXe8XODrtxfmy8xPv3risqzEJiSdrL8z2bljt0P2E8jAyoBUuLycWM8nynImP7+jlWyzOaLeVxshCCFNBBHitGe6e6CWytP79yzzYrpwq/mDpdiM4OLL1sg5tilPY2QcB2IUlz7y57ViiVD08imIBVN8o1HIa6A2OJ0K795eWNfK+bSwLpXclFybM8xMbWDN8PJiVhPzi81HhQhxgGGMnF8Xxl1EhkAYhBAHxsNMGkc++vRj7j+6t0HTsLfk4+WZ5f2TufF6U21/f8f9m1cWjMKI1sa5RXJ9hlYp0hVZ3GW4K7hIYJBpI0/YZzR1d5NIigSqtSRrz+jYILhOMNgNE8MuMS5Q+IglX3i6vKUs1oOtbaVJsudH37yrberFe7kR00ekKZoCTAmpzYcqfak7GeNa8Ii9b5fpEoVY7G1KC0izGroRXDkp0qKdsx5IRJuJDWwbCNtwfnCzVFUxFfqWaS1TW7YqW3uz4jocfNP+2rYnCxrXJED63+qD0x7IazPblLVeKMbe+QYK07UAr5WT/Y2fX1nlfHVb/p2O73SQStEpslgVEzqS4jhIh/4Cbuvcq6tosEZKEylOm8irwYQ+6+BNbdSgpqDNf+7SJHJztWVbI37o9X89EfI7QptTLxXXyOODpmRvqor0JjJm51Eyl2Xm+fyCAPPuxCgBCXtiWM38rUUf7HUVB2yja0AkEykm+8LNbFEIDpn0hnOm5cUQyVpNFcLnv2xzTNbLCwlCJ0R41niLRgRubvz+wWzhEiMQIUTLTBFXWahWZbaGWcXbcDDFbClwHUQbcvITqMo2H9S/gikAGB0+mKbdkIjDSGzKsD9Qw8AgA0MY7M8P1lOsQ6AGO3d4r05rppUVrdmpw/bBNnjZlR6uVTvYopWtyoFeLKv/zs31Fj4YbA39vXf4t2+Afk5v/772M+xJt+2dSq0+FByVcVQrvCYz2Iy9f+smWMZStUy/X7NAY12cVVkboQohgQwZRFhyZs4rYzIR5xgiJa/kvNp5DMYKTFoR8XPR6vbVWvcn6gvjJvve8vsrhCT9mQ47fcgj8w1w6xPptrY67B9jZIgjTSvB/a3E4bK+1psqQa8K6Ns78t4MqttG30kzCLeExOtNv+0D/eb36779t/zM/dGrsmvF459LbvtJ3JwXtkevfR/bZKRX19v5BG7+1gevKDcvtH2G60yW0qs1kyVrXq1dq6UOy1raZdWdXs/hN4OU/27RPwBB6u7wSBzMnMxYUp5F0IOU9RRiiOynB6Z0IIRISmYBHoeREHpf5zpvAtBpwaKNoU0EidS6sobJXhuDLgSDbZr4IqlX/LWpmkVFwa0qms/E2BzDkIzW2wsugwydiK04Pl+5zBdyWfjNL3+bf/y//BoPhyPlexfe3D3ysD/x+qikcc8hfkYaJ8zVzLP7wTa9gyamdvTeRrR5GTEjt1Zm6vyelk9Ezew8qzcXByEsA5omYtzZuQuD406FQCV2hlqINpYUByQNiCppTFZRHR6oNRvjb3i07zKCDFBm2ulLtCys56/JlyekrcT6jFAIZEQqxJ39bhqJH/0QCUcQU4JHAm3coTEyNGVoSquVsldaCUj6hOG4o1Tl+8Wgt+PhgePxnlJWXl6+Iq8zX/3kN/j6i9+iVmVZnqw/Mb8QysWGaYcAOthnDIk0DoyHvVXp7nV1WU+8f/9CKZl5vtjGjdqwsRjV2yy6b3uTzdlhNicWwCqLJtbIxxh4MvSK26JYV8AD05jLuQ+GK3FQPnktjFNgOA7sXu1BhHnO5Nw4fVV495umhThG7aL/9rercnlaWLwHE5KQpoRKpJbCj37jxzzNlY9ef8yf+D9+wrQ/cpq/5Hl9sfflL5bLQowD2nyesDXm04vbd5xAZyxzt+FkIZkKB+bwq61YtRkcLt/WqK/Z1iXILOAqvqmbBpSvx0Iicn94za4dmUtmKYUYRtu2W2NdFs7tzBAT47BDQp+L6rJcLqWl2jFXawtsvaabLNSNBpsHixgiQYXkyY/kYKxTxGYrweXBjJHb2YtmzugRsFc/nqh0QO7aQ7JKs7XV31PY9kHHZa4RqQdbeqJjQzeWOYUN2m9qGpelGcGktsJaz+S23ARFboIU2NA1dNZqZ5uiV9iz+eMlXx2ff6fjX3qQ+g//w/+Qv/pX/yr/7r/77/If/8f/MQDzPPPv//v/Pv/Ff/FfsCwLf+7P/Tn+k//kP+Gzzz77fb32mPbEwUgB2gwD33pBjtlaM3hgTHumyeCJIe23fkxw7bJOItgi/ZViR3RiQpRkhoVitQkaN8qwZTA39Nb+Os3mK7yXaeoStVdSsjXCt9xIxSX4NxyBXDJVhafTM7/99Rdc5jOfHo9EClF2HKZXaFJaMJNAiNtuIyPGjiMy+HsqPTPvVYAoWhZavpigTPQFZOuNViOtDgRNZrMQfbDUYYGgJp2pEpxlaJiRUSiCI+7Y78SRuH8DcaRVG8DWVWBuTnt/os5fIm2Fcjb4IVoiYJOtAZEROXyPMH2KDCMy7iwSR1ddX88wP9GqUCTScqNyRNPONoV4AEncP77h4dUb1uXC2y/+GcvlhXL5mtMXhdzMxZnakHomtJmmmIcPEZKx3cIwkoa9BZ2cwSGoeVkoOZOzeZfR+1Cd6u3zZr1qr9UHlukw4vU+N8gI639tiifXDbtnzcbNaVs1EQWOd8Ldg3B4lXj8/h4Enp5gnjOhCs8/sSQqBuiscbAXy7NTAdxLrVUY14wEePf+iZcSUEYUIaWRhrJWt3lX2xhbNlms1pSaTYllWWdyXolhIYWyQUy3o6J9PVbPzF2M5RuHXDdvbgJVuAYS001sbkGyJ7TEkHbEOBJ8ZglMQLZoRhKkUG3oNfQqBVvA2/CpQ/IBzy6dtefXb6t81ftsXmGbG7BsLF/bqjoB6/bD9crNiVZy8zk/gNE+PBu9PYF6kkOXOeo09tt9hRsgyKtCf9yGpLscVa+iClULpWVyXfpTvxXew3uoHxAuVG+UMP53BPf9o3/0j/jP/rP/jD/xJ/7EB4//e//ev8d/+9/+t/yX/+V/yePjI7/yK7/CX/gLf4G///f//u/r9Yc00EWLmwiKMVtsZsWG4sZ0Z7h5OpLSzr15wrVUB/p2YUNztsDRvmFYcJIQGNLENBwodaC01dxAXYZEtDK31QZKS7PEMENdFZrw8ZtPeXx4wziO3B3vAeGnv/0V794+U+rCJT8DjTT4vFZfBAI2wS7M68Lb9+8pa+and+9MRYMDu+mBiZXd+sZ0xuKApNFRBvVxErlBKC3A5PUJXZ+pl69Yvv6n1PVEuTzb84eI7PZI2hGObwjHj5HdDg1HbGNNfiMPSNhb1ReKL6xgA86iiJhCV3O3YKVRz1+iCDUbTVnzhfb8BVpm8pJRVwlX9z9a5sVmjGSmPr2FcGK8i8TpK4ZpZDru/LNmlMp6uTCfXmyBswcGprgnvjLSR4tOHqknXr54Yj6/8MWP/r9cTs+8fPUFrXrzOUZXo9+jMdGaULMlL5Z0NOoyc85nQGnZLB3my9nNBNsGA3ZYpBsYqsgm5Groim1aMbrJZoQQmiUYIbgC9pYTX+HojUHp1X9rprd3PxBC4+4oHHaVOEQWDTRV5gZzUzTB/iGiGcLKdRP2ewUfQO8zRBRlfV6pSwGNBKm8+6Lyf/8f/jt2u72JuLZsCvLjYP05ifb5t16sJ121kkKG1GyWzDv5ljDaBt/EVBk2IEuwwWIFEUuYmrNmjfXSIURXdfjgfhcXaQ2M6cA0LAQmog5EEolIQghV4VJMhD8rLdpWH8T7T05+sr34CrfeiFOAuJguvVru6hIOI/f3JTebPD1g9TaDpR6hyk38kmtu0l9ar5WVUeuvRZ145NyksTCUyZJwf+J2fq5zaJ1g3tTNVLRSWqbUzLLOLGW2+90Lgk4w4RtB6RqcrpDqdS5TKeVfcSX18vLCX/pLf4n//D//z/lrf+2vbY+/f/+ev/k3/ya/+qu/yr/1b/1bAPytv/W3+GN/7I/xD//hP+RP/ak/9TOvtSwLy3Ll1D89PQEwjhNhUEoTc3vVFRUh6kjQgSHu2Q2PpDgwjfdOjjB2lR1CBwc99YKbi2cdEGNdqShND5iaw4pSKW2h1pVaV6StaC3UvNIyaBbaCnUxlbs/9Pkv8H/4N/4Yr1+94Zd+6V8HhL/3f/vv+J/+x1/j+fyWp8sTrVXGGBlS73Xg+Lq9n9N8Jn/ZeN6duRsPnOaFSmS/Hzm2M3fza2JoxN3RSSRyNZOL0SodwKhKlbx8zfr8Y/LLT7n81v9IW89E9aHGaSAc7gjTkfjwOen+++ZV5KrdBsWYQ60EIeDDkmLwSs3F3FmdxdZyRYspSK9PP6XmQl4ulHVGS6YtLzZHNUZTq8B6Xq1VLpfCfLpQimnqIYHd3ZcMU2J/HHh4vTeIaJmhZuaXhZf3J5Ad0/2/Rpxesf/4nt2nnyIx0KItxa//+Y/46jf+GS/v3/Eb/+R/4vT0RBGhijW0w2CU8WGYCGoyU2UFrUqZz9S8kucLy+WtUYCLV8p6tW+PHmBMDQPvm1xp0ynZ9iDVglRKwcReRQmxWG9S0gYDu5COVSbOMJPkTqoOcQ6DcHc/EhM83K/sdoV1TFw0UlQ5VWVpik5w9yagq7C+hTrrtvnBzVAvEFTR3Li8vVhcrAuJ9/z0/W/z//rR/4caAp998hlvXr9hGAaOxyMxBoYQ7RwoxGrrzpXCGKNRzoPYRhRFHAKz7TqokRusTveqLkZExUZF4nhDYKhe7BjUZcigVVFGJw8kSQQZ2Q0PHHZYD7fuiJoYiQwEJCut2F5TYqMGsyiR1JOE6O/pphXlBYqKISPScMX3a2lq/ah03WN8bEG1ulDGtf/VhRhCuQYdqfYaNqsQkKQ2J4CyxWkrJD1abnSJXqt5sLutfOzFe68Ue0ebEs+mIK+ZUhdyXZmXM5f1RBca0B6kel/P3/ytp1bvwTfv8fceX/2GGebPO/6lBalf/uVf5s//+T/Pn/2zf/aDIPXf//f/PTln/uyf/bPbY3/0j/5RfvjDH/IP/sE/+NYg9df/+l/nP/gP/oOfeTwQCHSdu46vWlmdGElxIEUzNLPek2zN6X5Zbua8t0zIC5CbWr//PW84E7bvbcttHeu1JBDtbD5XYhjSwH6353g48vj4iiCRTz75lM8/f2L/PJHVhC+nqKQIiAl/IpZRNqfV1lqt17EunOaZy7Kw5JU0LKz5wpAnG2sJmFxPTN7YNwy9ZzwGcSyU9UxdT9T1jK4XQtpBHL0a29tXMLabIRBO9y6NVqrPZ6gPNzq80hStFaFSpdDEgpMFqUxdF/vvdfn/kfcnO7JsWXom+O1ORLSx5jS38eZ6MILBiGCSWVUgsgYBJFADPkI8AcExQSAmBJ+CE8Y78BUIggCLo0wQZA1YOSBZEYxw93C/957GGlWVZnerBmuLqJ3rHg2RRBIO1wu9ZqZHTU1VZMtea/3rX/8PaVG2Xlmb6EqCWG0WFULcaWUB2NIWttgmlFqVEm6k2XI0y5CctGqKqjtYlok8XRSltRmhkudHSnwixxMlK+aO7zA+qI2DCQqVFFgH3gz6u6vIay1Jad61kLOSYlaYRANRy5xl3f3bWjHaY3LrvtU2Or+ZDmqVtcJcnyB87aU0U26KIwLWC86DDxA6Hcg1uvsrg6zWbfMpogxD2yvxyDo2RwHaGNBWuW0okWiPp4IVCEYHxQfvqLaZOLbAUGpGUE29KhqkVkWGtQIpovEFg/q6yXpVyqZ3x1ZpyKfQ2DZTpOtc6ev6RxpS1sRX9DetlW1GymLwG9FmnWlsLMKrdpnqWjaFEMUwjX7wKwTzYtN4CdeZ63HbHrHX56wHd913WmW1fsZ1z9l4JSvh7sUS2mIMa8Vzhdz4BH6rW3IqWy9KNsTIvGw1sFZStSULtYllK9Snc1h5sxparWVeQnub2sW6F8ras7sGp/W91P+RihP/4l/8C/7Df/gP/Lt/9+9+4d++/vpruq7j/v7+k8e/+OILvv7661/6ev/0n/5T/vAP/3D7+fn5ma+++orVx2WFJEwLHLvuwN7f4V3P0N3irMcFrxetaf0N2oayShythfsmU1PZJHeag5mR2rJZVNOsDeVRG6NLjBYpUcWqawaT1b69D3uO+1vu7l7z5RffYxh2HHb3/D//l9/n/Yf3/Jf/+l+4jGfeffNnPD+/J5WZJZ0okhmXSafKq1BNJkb49uGB0zgRuoG7+9eMpRCGH7OPH5pAZUcIO27uviCEHWF3IIQOEIzNCJE0fmD88GPy5T3x8VsoEf/6B4TDEXt8g7/5DUx3AHdHrZ3CdVE35MvpTFyUirpi4B3gBEqcKMtZm971ovMbJbfmc4ZlhFpwOdLlSMVgQ49gka6DELR3lisYQ3f3ffrbniKVfWkKGcsJ0oyVRJkXqimavVoBW3C2o1ZLPD0Dkcv5gfrNf0VMocgFIbGMT8zjE2mqmF7wHJDdEYYjzlh6GwA4n2emcSHVhZwmSIk6nyjLxDRGPjxGci5EqeQXTCeDwTnbHFA6hrDT9ecqzgv9Dg7Htt+2GZrgheAb3dxqlltYiTWCON3AjRd8e451BTAQhOEAzlW6rugI0g6WYIm2kuJErkLMC0tN+L6jCzskgo8RY8uWZJmqFSDSBIdF03Up2l/buR1vjrfsbo68+dEPCP3AOSamnCkipJqoGWJjy1pjsfiWAGqDvlQBKTjDVY0MKKz2Mi3At21TYTXFN6ppEktGsJ3VvmhcIAoihZi0+jK+KGGlGu1dN1LK4D1SHdV4LGpxkkyPsUVn/UqlTJGaMtU7at+UZQbbzDbh07SWLfBoQeU2UGZD1baopZvWWlGu8JpAi9zth3wNVLIyqxqqYgpgdaNPJWnCWdLWkzItSq8ojIKHLXKvf22Nt1vcl3buNMlaciTlxJIn5tjEli9nzpcR1goJ2RKzLSB9clTMdnhe/sOKBvx1bv/dg9RPfvIT/vE//sf8q3/1rxiG4b/La/Z9T9/3v/C42TKWa9ZiMATXqS206+l8rwum0W5Xqjq8wG9f5hIiv+Ret9WyJbPtPJs2oNmSWn2playU2SbLnfV4H+i7nv3+wOFw5LC7pxbDt+/eIcZxOj8jZUYkM6cLMqlgpE25pZzKdiqmMM4zqVTO88QYF4yzXJYTYpJmiDj6/ki/u8MYh6s7/ZQGhftMoeSJND9T2oZLTZowdp26nPZ3mHAA2yPitAdTNHgsc2Kelq02cEYlqKyBGhN1Xqg1kdJEaZJIUjJGCrYs2FpwNWFrVpV02yHGUW2g2tD6IxWMw3evcO4WLxUvGamZXC0lO4xM1BwbFLKOByjbD4xWbbkQlxPLuVLJ1PpElUiVhVpnanYYv1fH3GEHuwPeWnYuYAVSrKQ5U4zRY1QiUhZqnskpM8+FmCuRTG7SL+uh9k181gAE3zaDJvWkrudYI7ja5tucqkBs8My2sUmrOBqJwKEGnEawDfYJFnwwWFvpfAELyVuKtxTRWatSmpZjLSoi0XvECbYz0DUWKrQsuyVhGzJkaBZreOvZhYG7w5Hf+OJLhsOOnz888v50IuZCWnLLlnVTrLBdd2vpYCvkYhEr22atc8raa1tHQLaeTdO/UxacBisN+tpnMbYZbYrZoL9VUd5SIa+fS/DGUV84HmAs1VitSl3b4JuzsojV4OB0SW709hd7kbS9ZzUVNGvE/e4T15/tekzb4V0hw+0BDUSmvKiaDBs6I6s6htDQjBeafW3Gad0Pa8N7PimZ1vfREvyV5q6VWWmsvkQqUQd4qwbBFFVJ5BM4b63a1vfeXnvt+9vr5sw6HnSl1f/Vt//uQerf//t/z7fffsvf+3t/b3uslMK//bf/ln/+z/85//Jf/ktijDw+Pn5STX3zzTd8+eWX/01/azNOw4DxdG4AgeB2dG6PswFnOiyW67CS5dMBpRVSKC9OsGLFaj2v5S6iX6VmpCZEkvZeSiKnpFplRbToWuX765pwCY8PH/jJj/8r83xhd+g5Hm94df8Zx8Mt/eD4zd/6ITFG3r49cj498XR65Jt3P2deZt59+JrzeCbGC/P0hEglFkglcp4mni8nfSzd0QWdAbGWZhmykKsnELWCqpGSTtQ8QV40MfN7/N2PMMBw/zcJd19ihreY7i3GDWAHpR5LJmcNUmlOpDniEFVQMFBdk1pKC5Ij1Iht1vJ1nTWqRY3rGoyQa1G1C7cgxqg55Nw2RFEIpiwXrNmRlpHp8kFfa0pIKgyHjsPrveovGoOzSptNRUVk53GkpEpyEL2AFZwrWqVYj/FHjHH4bmhDnR4y7AbPm9dHvDFcHh+Ynj6S54lyfqLkRI0jtS46O9I2UWutVjeszXZDcNqT8U6pzACubTApW6bR4j0cD6ZBfbn1oizO9YoWVK3iMddJCeOlIVRtU23fUi0rMVX/zYEzlFyYcyKVqorbAojFodVIDR567X9KUjamC0p6kVypuWJF6PumfOEzqSykNLNMZ4wp9A7eHPcsORO8JdfKkoRU1n33mskbUC+2dq9tZKPl+w25sG2TbVoFW4Klj7ZyApzXBNEVVSk3WfnuW3TQCqFUHQWopmyZv17jkOyMGD1XIajygxt8E/ptZIMKNWZM0wzE2Q2G1UrlGmBe3rbiwqz6Dyu+p3uRQXRmDVFUprF/XdPdK9aQnVJDTRcwwbYgDUUKS7oQ04Vaxo2CTlO1EV/xRkNobYxLZfTaF+9PdEgenclccla1lDQS80JMC0tcSDlpwLP6WdYAt+Ue68d88b+XrExzPVh6LFZ6/V9x++8epP7+3//7/Mf/+B8/eewf/IN/wO/93u/xT/7JP+Grr74ihMC//tf/mj/4gz8A4D/9p//Ej3/8Y37/93//v+lvGWubW4Uy9mzDlXu3p3N77U2ZJnVPRiio+6Rri6lFlHW2oem/rSraq+9MrQlEoY5aUoOvElISJSdSiqSUqbkFqaolu6nrxlH58O4bhMKHj98S88zNzQ2/93t/hx/+4DfY7Xd87/u/ibWOWv4OtRq+/uYb/ssf/zHn85k//cn/j4fHDzw+vePbdz8h5YXLeCKXyPM48nh+okplXiJ9GHBOA3KplVwWbLFU9mATUmfy8khNFyTP6iwbDvjXr7GuY3jzN+nuvkTCDbX/QjXnbLMnEUvKlRwLcU7Ey4K3FWNrC1JGyU9p0l5TXbDxhKkTxBlJs8IoKW0UXar2Rsw2J7IgJK2qXIegEjJGLNPpPQ/f/BdKShg5YOg5vv2ScP87eB+wpsMaKBI1m48Ll8sH0jyRgyF3Busc+/1BrUL8gAkDzjq6YQCnTsGShb1zfPH2li5YfvbHienhW8qyUE7P1JIpqDxMqSruKpgmY+RwBoJpxoVezQJLtZrtGt18wLJEj1RPPxhuXzn6PRg7gy1tnk/XMHmGvGjgaJWU+HY3OnqAoa1/hZ8prX/jtUFZysKYNClQOEcrfG+8Kp70WS8DW7SiMQYXCs4IOWbdnA10zfzTBHX6XZbAdH6Cmtjt99zeHphzoQvq3/U0LYxLgwBLaR2hytr/EauSSMXozB147TyJU51NpeRsQUqNLbmWGUbnIcFpzCoWKRFsgmqaTl1VhlpZNBld11ozJxUK0YwUEYLpcd0OUy0uB6x3ykps1jsSFXi0wWk/0RpVKjHy3d0J+LRaWKkMa5Ksn1MperY2XdGihAmExkK2VO8og0esxQ0O6xUqq0XItTLFE/PyiCFhpM1JFU26gylbz3LFU53pVEFD1vdF69cZUlat0Fwyc7wQs3qrzctILrpHGnsNtht9/QVsCGvFtH7/6df18JSXIw9/ye2/e5C6ubnh7/7dv/vJY4fDgTdv3myP/8N/+A/5wz/8Q16/fs3t7S3/6B/9I37/93//l5Im/rLbSpZYD4hOkV+H2Nb/m5c6IIYttZEtMKk2lS7mNTCVrYISaQKSTXqkliYTUiKlJErJlJIVm70ig9f3CTrxHgJd19P3A10/NJUL0zYkj3NerRiwSrC4vcN7z5vLG2VKeYNIIufItNyQS+LV/Rt2u1tCtyMXmGOm62yzs64Nz1/nUNaGf3qhnmAwrsN391g/YMIRcQNiO15i7auygm137xzBe4wkDd5UUtavkmdqnEEiplGxZd1kbFvAVtrwZW2wxcoKikBUJQsBlUpq1h7e0x3eKB09KfRUa2J6/oDzgdp7vLfEy4U4T5Ss6gg2eGyzmFdoQ3UDSxaWnEhZL3hEZ97MSgNvR8AHTz8MZANmCZQMS8ro+JMoG9OCCXbt5bP647l2vK6sNXNFkI00+BSWRTNU14Hv1iZ+KzzaQK2BRoDh6mtkeEki3q8YRAABAABJREFU0zNmYR2C0VxAP1+tyhxzKC28cx2DGwDBdmilbDPJ5BYQ2+VioZiKd45+p6aHu/0Nw/4GHwZSqpg5UrHkIsRaKDFRq1Zf3mpAFBP0OFSnPRZW3plVCKtVB1cIviEb7b+X7LQrv65eN0Gr/V8HeN8j4pWQYddB10awbiMZCnYYJQ/IyrQrjXChPSjTpEDWLWTbQ5rRob6WzsCtlh0NM7s+X9ovGXkRqIyuxxcv/PJ7TCtu2ldVSW+ffoMF6yd7lVm111bmViMnrLT8jST2om+0hVFjMOJZVV/0rq9bmkLIKsmkg+jXOtWsM3/fCULmxV+BT/5s+/mvB/j9D1Gc+Gf/7J9hreUP/uAPPhnm/W+9WQzOoJWREarZulQtUlisogO6ZowGptqgvVKXRl3Paq0t0qqn9UStAStqJpYXYppJJTGOZ2KOLEtmXhI5CXEulIQKfb7EkS3c3b/mBz/8G7z9/HN++2/9HY43R16/fkvoBnzo1ChwnfIUw6tXt4Tut0gp8v0vP2OcRi6XZx6fP+qiawOfpgq2VGrJnMcnTpdn7l/vebWH4hzFLjhjgaiZVp2py4m6XBQSkYDrXzN87+9guwM1HEh+QN1VVX/P2w7rHY4OV3dUGzDHRPKB5fLM+HxC8sI4fUDyBK3/ZE2lCwvOFqw1uH5Q6MomqIUaZyTmpjTfJvTrGWRCJCCyQ/Ck3Z7Sd/Sf/ZDv/9b/CsD4/j+znL5h+viRn/x//t9QhZvjPX23Y84zl3TBOsfh/jP2/WumZabOFywB748433P6eObdhw9gOlynhnX90dHtLcNOIKnB5N39Pd//m79JHM+c33fEeWb++gPplLAG7m51bVnvdeg1Q23zVK6xShWtaVtCUWNLcVCcIWUhFiVT3L5y3L1WSwtxBedE7d1drxtJo6eKLQpbGZTq3xqiBlX5d1YnUXOupEWIsRAXhdsObk8XAq/6ez4/fgFiWEIiZxWGjTGRS+EynnUYuRTmJXEcBj7/0W9yc7zl/vYVd8c7cpp5fPhIKSPQNPOcwQy6lv1w5BAGxHVIOFCxnMbMHLWC0gRG2YZG1qDVqgopL9hnCrnZRputZAypJT5a+YXQYawG3f3hBqikOpLrzJyeuIwfVKtvDY5iEdFqxdYI6NByWYO/o81Fmc20VPtm2gwqUft+ps1krSjKloSsAY2WlK0BobYyQpTar7+wAoaizuIGln4zYt4IEJR0TYJFGpqzkPIMJisKgUBtx64000pWyw5NjnAtCbD1OraDJrolP5FLUoJNmokNLSpVR0pceMleNFtAWuHOTwNp613xXZafNOPKv/r2f0mQ+jf/5t988vMwDPzRH/0Rf/RHf/R/6nXXSkl7kNqfYj0VK8VyLUrXg9ayMKUJa4BaKySRayUlLZNQUUsVly01Uuqs0+llJudEzoWcs9KPsy7UFavd3qeBru/YHw4cDjfc3t1zPN7Q97tmTa/STKviMwa6LnDnbnTo0TmWZWGcbjje3CAIPniMNcyXiek8EueRj+cTMRZSKVRTrxuZWuBppiUFKZFa1KXVYDG+x+1f4/ojEU81blt0qlmouDwrpb1CFwK2VLK1SClqIjhfqOmysSKdrVirm5ASCDRiq2ROI1kY3ZBqSw5EJ6D1Ki/aLymSSSbQ9zt2r3+EMYa8vKPWJy4fEucPP4dScEui9AciiSgLrlOX4DDsSKViZFEYyQSwgZyE8RIxDva2YELFWsEHpW/rwIqh63uOd7fM3pCn56Yc4anZYDz0QftDPugml60htQb3KmpMbfkHsr7sugopVUhVyRTdznLIrm0cutuZNnxujNEek0Gz8kavXrNs0zYDu2bdogzWkuvWLzVAcI7BBHau5xBUHNaTKUVIORM6VduYUyRXff1MVbr54cj+5p7DzSsOx1dM44nHjx+Ic6LUhVoitrN46XDe47sd3ur7Nl1HER1UxmR0KFyvkdVU0rSr00DT0VuvdFoQW2uRxt5rldTKqHOsRqXt4mtsOVvHVuA0+5w19G3EjoJZof614mkV/9qDEZTYwVrRVA0u0prP2+jJyyBllaz1Cfmh9SSVmLLuZW3+zdQNOisWkoNVgcSYK83b6CGAdu3UmhGTqSvTohYNqnLt9dHA1nbAt7+jW47FEjA41hmojZBRS6Oiy7afrSjW+vP6mlewSrZz+QnzbyVbVP7Hsfv+r7zVkprkUN5miMCQzUCxHkNQ6SGxDZpTg70sSZdlibo51qK6ckgbRhNKO0FIaUEqkxslM+Vmg5BUKy1FDVCSoVkgbSwc205mXBbOpxM3N7c6tIrQt8Dlvd8uoJezKQoFWoZ+wDtP13XsdnsAXNCLMd1G0hxJceH+9khaJlyIWJswplMpJ2uRNJEu70nTifH5I3mZVEXj9hX+eAf9AekPeHdlo63Jmypv15b9QK2GLI4ijlwtsUAVgzhtlEhOSMrUEonLB5CF0IRIDarQbgRcrbjapjKsbsxSDJLWqqApz4+JuDxxPl+o758wAsv5p6Tlken8hHSDpio3rzC7W1zJhJIwzrNkT5kqMQHiEALJ7rBuoH/leONvoQo2gqkJpkzMZ8LNHfLmS+yw4waPOR6Znvc4mZkvFx4+XjidJqrR9YSIivgaza6r0wzctjk1qtFMW7QXovGnble1NL+Jy2OFXPDBsLs1uAD93hB2tqlQ6BrJLfXQSmpVZVhnhJozrQhTUubhkrOa9olRhqUtWF9wUavcm34H1pFrIZfMEiMxRYyxfHw+8eFcmOvCzbuP3E6ZbDv84Rb6njc/+BFSMtP4rIkKhWySKrKfF8YxM+yP3IQBbxxdLqRUcaa0jbVSWTC2KX03RMSJwTTgdFWeUBVxoz1hFsQK1kZNeBrZRtb+iwFjBrz39CIc9180pprOi6W0MC0XRLK2Ru2CAM4dqOLwqLSUmMrqR7chJNuma2A1/VyJUw0GFEGHgJ2FeiVsGPFN1Ea+s9G3xWDXRESDWV0hOgOYgqWSio5DpDyT8qwq6JIoJF72pLTg0hlJb3osDoyavXrvOfR7nPMEd8S7HWH0XJYnMIZxOVNyk3Frdd4arNZABiuMJzpmsM2j6rxPaMPsGNUw1L1NIfCcC3/C41+5z/9KB6lSEqagcF0tpKQmWtn2FOcw0iFOq5TSPGSKJLLMCArjCa0hum4cbRHWWihyhfsEpYPHpEEqpUJKQkyqQvALQUoaItcy4BgXzudnpum+9b+Erus4HA6smWIVwa21s1HqprGW3TBc8dv2emo3Yjb8uOTE5e0bUlx4Pr3j6fkbVDom4KxF0kguz8TxxPj0kRwXdvt7+rs73P4eGQ5It8d3Fuc1wzNtfL2UdhxEKNW0u6WII4klVmUOWadViqxYdp4YT99Q8jPBGbpGLOicGjZ2rqNzgdXozRgV3iwJjKk4p9peeRxZcmSJP+X59B81TbWa8cYoSLdT9YGb15jDPS5VuqiKD0u2zLVCNhpACWS3w/g9/as73rx2yLyQvv4amWfiFFlOkc446HrM4Zab/YE9lfFxD+nCdOr59usH+scTOUdq1P6eNwVvFbMvzVJDP56HohTnVRlAGmTUQBdWRfBLKkxPhdAZDrPB94bja+EQdM8KVntRWUSrHECNJtWssYoKzS5Je0JzLqSsTrmSM4jF1ow1DucLbin4zjPc7PD9oJk3hXFeOI8zVQyxOt6fMuc4E775wPE8093cc/N5Yd/3vP38M4K1PD285/z8QIwzp8sjpSSWs+r03RXh9d0d1gldzqRUFZ6yUYkTqFWHUtVNC0orFeTqCGDanZqoLFgRbImaGFSHSmo1t2hjsH7ANQuMg9HrvxSd9Rt54jSe9GebmjK9w/sFwavUmjEaoJw0hKTtEUW7vQhQGgsxN0FpuapGONOUYxCV20JoQix6Odu1nFkv7620oUVDLYzaHzYoYSSlkWl+IJeZmMYmSRWVwSiiLGRZoUcNGqXN7BlrsNYT/J5j/wVd19N1A6HrcM7ycHrXWmqenNWvS5qOUy1VvclKIaVPtfi8CwTfYa1VpMU5gl0fc4TQ46zD+0BwHSln4D/9lfv8r3SQ0oxxNeVayQ+QayTmCXGVWDzWOHKJbZagSc1Tm+aU7hqylp4rprzJ/tSt5E15vVdyrpRcqaktzJUkKC9oG21mAyDFyDSNXC5nHh8eADgebxgGJVB0Xb+xZEyDBMSsjf72gbd5sBcwktW/Ya0ldMpk3OUDpdzhnSW4gMNQ48KST6R5VkgCjw073HCDCQHJkyL9pVBtxdiAtXvAUGJUskjeJlaanlem5ERJEzXPkEZMHcnTSBrPqq6+ZEoGF5RVKaL02Wo1sNU2zS+NiaW0czUbTE1DT4pgq1Hl6Gq1k7xWms4Sdg7rAvgdYjtVuGjQV8mV2loCpqkM1FKhFFVPoFJjJKdITQnrHUN/oN/vcMFhXRs6LGpr7jtD6Bxd7+g6Dawp6zFRDyg1KrS+qRkEtQJP2cLSWFlrG2KtppA2vCo0GQ1qNuTFImKIs8VNFqctRIyDQqUY2aAjDXSiNh2yZrx1+1pl9baFpaoW3ZyzBjMsIRWszUpBd0ri6LrAvvS8urnle68/w3vPEALOGMZ54t3DB+4OR14djwTnCV3Pbn/Edx14Q8mZk3ne3uMyjRjjmM6R6VwwvmJCwThV8jC+IQmygs21zfjomtcqar0cMiKxzW7PFKlYE7Cu1029ZZsaLPSadlYrCWM8thZCSHT+QDGJ2vzPtDRtf6gplK/wKrTN2rBR5/WybHtG+297viiQCErc+GTvohFBzCeNges1z4qDanti7fqkEkEiS5xY0khuQ7ylpE1HVHtS6y4U9HPbji6owHbfHen9sQUNtSgSqeQcdZ8seQvkpQl3r+vIoLC9sx1DcNv7BnDO413AGksIHdZYVf3x+phvAWxTAjK/BqaHOSUqQqmJIoVcZkQqZ6nEfMHbjiVftNysZls0VUqDRhqu3ZqQQNP+agNtJVOkMMdILurndJlmcq5M50xOlRwhz22RpivW3NIn5RqKcDo9kSWT0kK/67m9vWeZZ5Zl5ni84fPPv8Q3fTC4Qn2KY8u1kpIXGDBoZKRgLOwOe0SEw3HHZ2+/UB+k5RnJkfHhT5ne/TFCAH+D93vCzffpPvsBNUXS+SdITdT4RM0X7P5z/OvfBRPITyfqtGC7QBh2YCsxTczzyDx+ZD59jaQRN/4cky7Ml2em54cmkaQVTN3tqLtBZ3aMXuyZAE0Ljbp+nIBhT0qR8fxMLRXjA50dKNkS8Y2yriQFN+zY7W9R+eqOaDzFTJR6oZZCzDO1FnwfCLs9WE9eEhRRfcFUyMvC+eNHSk58/qOvePuD7zMcb9nf7HC9JV8WUroAE7uj9uVu7jvunnvmKW+DlEPf0/ce33m6faeMvC5gnGOcKqdT1QriQb2aSqykqNiwkYJFcCZhzYIphrk6cJaUOi5TwQ+wq6YN3gripTX99diluo4dFJaslVTMmVwquYIq0lVySQSBwkwnZ4YQMdYzDAkZDLI3EIRXr47c3h54dXjN//S9v8WSE+/GB5ac+Obbn/Nfv/0p33/7BW9ubwn+juPNrc4+NoJHKZmf/uTP+PD+W2peePfzn5FT5t3XI+fniN97urse31nu7gPDYJUwgkUlvJyCTGJ1neu0gkotlYwwg3HMecYYz83RMOyOzWZF5bpqjFSJOOcZhnuMNVRUmcG7A1L35Lxwmd6zxDOmekwpW8UkreNtzMvrcK0eNKitSWXD7PUaXWnfoq7IYrjahzRavCad8rKQ2uKbfq3aW2rSV7VmTpePxHhmSSfm+JFSE7mcldxVC7Wo6ry3A9Z4On/Hfnir6jOHz/FBRbL7sMNZnc0zCHMcSUUr4PP8xDSPTMvYnKUzS4oIMIQ9IfQc97e8uf+8efr5Rku/Qnu2+XVpr13h21V0VxNsS4y/BvbxK0x3pUtq8FnnIaotbeDXYavVmYQNu2/055YFmXVNyVWPar3nUsjlWkmVXBWrzVDTtYra5oWvud+2AFOKmMlyOZ94+PiRnDNPT4/cv3qF974NFfqGPa+/1zKqF/3FLYjBFljXi8i6hvkGr46eaWZJF+0dx4V4PmH8Dn+4w5gO43fY/qAXXJ6oaSJPHynxGUugHicwlTLP1GnGI/ihRwecG6RXEjUvSJox7V6WkbyMOpjIgMEj2VFraExL/UxaSZkNigfaOfIo1b5SS6WzDmc7MB67zk45p5TjsMcNd2Asqa6k5CuspoSBiu0AqyK7tShMUWNWdYylqdfXiguB3fFGPaK8bWSHSi2aaTtvcMHS9Y6+99Ti8F4VDoI3BG8JnWO31yBK5zHeUSksST+n8wabDGWrnBrBRzSDN6aAWEoErJDmQvWFgsFFdYk1TlRYQ66bnIrOfqeKEqWer2o7YFgam3IqmTkmEEOOmWKz+mW1fk7XqdL9DvUHuywzY5kQKh8vIx/GE4dhR4yRXApdF+j6XnscfUethf3HD5zOJ+KYGeeFuESmy5npPBPokUGo4vRaqr7ZytB6MUqMWCEr02byzVZjAaZQRGelqmSd2VulzqSRo0puoxNBZ4+wWArBC13IGBNwy0mTA9SGxqyVU7vmNjWhNVBtwUXYLtAXFZeR6/eqVm/YhPegVUysPYHt11+w1fW6bvuUEr+UYbzEmZhnlrQgkq5kr1XSDUUNjNEqyvs93u/ouiMhDPRhRxcGrKmoC/baytDXTFnFZEtplVStysQz2ttyNtCHHTeHe8JaKbUp86uyRft+3Qd5+Vj7Wv96g1K/2kFqm2/QGYfStKuWvKj6NxYrT1qi4tV2wTplxq2NyW1zBN2OdAMrUsjtBE1pJpXCErOaymUoySibLysWrZFNK5/NwFCuOHaKiVqFJ2P56Y//TK0NYuInP/4zfvSj36ALjsPxhv1wQ98NvJz/qu0zbhYjXBe1bf0cuD4udaaWmThfeP7wU+J0ZjmdyFE3e9MdccMRY3dIDVA8NjskOvKpslwS+fEd8et/D8bjGyTf373CBsvK27HO4kKP627Ad/T7Dkck3J4Y7p4oOTOfF3IuJAs5ZVyF3qg7LKFux2il4q6Aou13HL/YgfX0uy/x/WuyeJY6NAhwhLrCkMpWzMtCzpkSIznNOiNis9JsfUGcMjnnhxMlV3q/Y/A7zLDj1W9/HxsCx89e4W/vwVnm5QzREJcLNSucYlDzurv7I1ISy9RzPGoPM7jmDt057K5Bsd42KrZhqBbbVaYlU63auadLBIGATviJrIOrjVUmlrJ4qtGmvO+NzlIdwO8UmktBN8qlRHJNrW+g1ar2aBROtDVTS2UcIyVZnJvp/cghFO58ZChNnfaoQUp82+yfIzzMdBZ+4/VbkqmUr3/Kw3RimSf+5M//jA9PD3x2/5r74x37w57PdgPBe15/9hlhCDw/PLDERGHCdyM+FIxN1BopVQk4qUrrKzXWqcQWxC1SVf08tOb7Crfpda/KE+P0ALYNddub5sTtKM3HKS2LbrRtiK0WDRzWem5vP+eG15giuNJ8oDKNFLFdWi2Jvc5uYWA1N2QFUBrEL9dos+VhV/jw+v1LWH/tuRkDprTEhUJe1W3qRJGZajLGGyyB3vXaxxOHaZ5vfbjFucB+uGM/3OKcank6FzR5MpUiiSVfqDXx8PwNz+ePnKcT75/escSF5/Gia7UKObcZSTq87QluR2/3Wkk1F/BPSsJPQMzvfvdykvWvvv2KB6k1c9BNvBRV6p3HhWWJ1AJ50U3Q24Czni507Hc73fDtqvF2lbWvTeW6rArAUplyIte6kSVqFko2asmxEiZWg5jt3misoplfiqlR1TPLsuCc4+HhI/v9ntPzAz/6G1/xKi/YO4czAWMNzivmq/Bk03Oz/pqtCJ+U0SvRlJqp+UJaHjk9/Iz5/EQ9X5Dkoeuw3RHb34AbqCUgxWOSwyZLOlXmx8QU3/F0/jEC3NzcMvQDIolwc9fs39VIzvkO1x8x7Bh2rwgB6nShjifSslDefUuZJ3KayXFqCj6Ka692DFZoUjBCdehcUN9zePUKFwb6298l7H5ANoGZQc/1+A01PpFOD8zv/5yaF8r4TIqzwltJ+dbSiU7W+gI+UZfM8vhMmhLdzWd0tzcMwy1vfut36I431E4oHUiJzMtJg2DSAW4pRX2PrOP2/kDXQ5oHbo9GB4zzjJREdhA7tPfWmu++t/TWYWIljJFMxYxCKkmZjjZgaOoV0gZ7BZBKiYVaKjVbFq9Byq7or9feVDVCypFU41VIRZqvEgYjGdfU5qe5Ms8Ga2eCG4mhEnudXWOngzliFZ4SUJmrp5luN/D59z7HDYFvT494DMsy82c/+ym7YccyJ/Jr4ZUIn33+GaHveP32DbevbvCh5927Z1LxuO6dSi4504bjC7k6cqUxHgWwGiCadBCiqiPGdrhVrdw2K4mi1dY0P1HFEsKB40FZa+rhVKkCKTb2XlAliVqba4IN7A43dF1HXkbS5QlKxRaFYoU1YWxq31uAWvtOa/ljNk0+PeZbvNLbxt1ef9ZA+4m33XcCle5zmSqTMhNlpjAjJqtjsrEMw1ErGrPD2wPWBobhDud6+tAzhF4rIBeuA8pGxQnmPJLzzMfnd7z/+HPGZeTj0wdiTkyLCvVeZdodhoA3PcH2dG6HX/ejX7Y/v4SAfunt1yFIrX0lWaXiFXYrBXKCkoU4Kx3UmYo1heQTpaiZnUrxqHaWWUt1m/UEijagqwgxF3JVzbrSmHwlVQ1SVbOxzRbDmOssg9Do29faR6pQklpRp3lhsZbT8xPffP0zlnnCSgfiCSHQ71RUV9UsKuI9zrp2SeiFc10IV1iwpESeRpZxZLqMTONIEEsYDhg/kFKh2oUQE5SkgW53gODpXn9O7XrMslCHZ6QKw7Aj+IDv+007bjUVVkdXDZo1LuRUKNOZcnkmxUjNi6pO5KIacNZow99CNoXVlGO16hCTdeo/Z8y0YJNA/aCq8jiy8drknd9R44k0ncjzAzmrErQyMlfqragRYVbyRYpZvxeL9R3dYc/x9R398YZ+vyfsdtQAEiBnR8mjsj5XlteLu7V60VeXcErpa6SQ5inSdpnWfWiCnc2HywriwA2O3W0PFXxtGH4GVg8wDKudd8E0sVHdNGyFUA25gMwapFQYySnZh9yWQ6ebu9iWacu2VHIVRsl0NgNKEZbqqIvOsrmwVgoOcdpbKw21OOx3fO/N6zYoKuQUWZaJcb4wzD1LVOHglRnW7/a8/fIL9pcjl9MHLuMZvKUCWYQlKmkj9B5xTR2hmgb/bpOQFFr0NC8qE81vKCUR0wRY8uYe26znRfvD0h4rpc1BFq2KcsoYhNJ0ONsgj0J/Ituc5Xf/W6/tX9yOr4FnJVh8ittff3ND7dvesZIwrjAwIKoi3/u9XjGmUtF2xi7sGhFhwJmdzgZ2e6wNjawQGi38KnSgpoORaT4T08i4XJjTxJIWclEd0vWuabde+OsojHf+02po+2grxPnpEfllAeu7ZJK/6PYrHaSqtAZ4k+0oBUoxxMUwjYa0GC7PFVXmKUjNOJfousQqe7IlQBaMFXxfsL4N5xld/Dlb7Z8kQSLUIixToWalXTrvcT5wvDninWOeJuZ53thnYFQCqMkm5TlSjGEUSMvMT//sT/nf/7d/y+3dPf/z31344Q8ih+MNb968wRjDMk+UnBl2qjN3rQK5XgtXuhjz+ZnL+2+4PD/w7c+/YRpPvH39A45vvqQIXE4Tcl7w/R3Dbo/xAf/FD8Ba7r7/m9zWSpkvxMd3auQYE5ILrh/oOpUrKq5iaqXzsOssNVbS43uW+UK8fGR+fq+q6dU0+5JCXQpiIWaHNSCdis0q7083CUJbzlNGpqgQT/wWnywqbKYQUMpPlDqSxbBUS8WymD2ZQBWrYrFFSFOklsI8R+ZxwYeO29dv6A87Xv3w+/zwd34b1+/p7j7HhAHrHdY75uVMThOVWSu8doyN1RkXH4YG0FViDDoK4TqdwGw0NA0ERhv5uTLlrBBf0CRoH3pu7gZqqcSpOTrPGZkS0tiMVQw5W6LoZtfnjDgINbAvnjlVxlQogBsCvgtEmVjk3HqtHZaAiFXVhCLbWhmrkPJFyWzGsXcDKXbEh05VqIaKdUKRgboL0FmmkiBlfvDZGz7//DVPlwt/8vOfMc9nnp8/QBt8f/vwPfY7wQWw3nH/+jO++I3fYJomzmnmYW5GelmVT9L5gpmE3WHgxux15kY0gTLWbS7JIgVbLc50eLotIRSBOV4gznTdhAs7gh/owp4QBhwG12aolhS16mxKCiKVkhdNDEqGtGCk4rNgN7p404Ooa2Lcetrt37avLynkYrYApQPC6/Pt9bGVLbgiMdJa242g0Wo9rASMCdwf921fcTivLYzOBNWTMB5jPFhLDQGsGlc2gJRmjdlgw5lxfuLbjz9hWk58ePyWx9NHUq7MS1F5q0WIsSWibh2H2XF7c2TXD9ckWVZI89qfu5oqvgxQV3YwAqVcjWz/stuvdpCqSnyorbFXS6uist5TghgNJYtuAFXNz3KWpoGmC8Taa5DqKLi6Tn3rEslZKyZJIA0VqU3vTXXTlInXdR0hBDUmTKVBdtr/KlGNwxCamCOUrIOU0zjy8PGjUnafn7jcn3HOa3bXht5KgwpLa/rbjTXTbkYrS6RScibNM3HRRnVcMhWLCQPkQilTuzAzNWesc4jvMM7j+sbO8Q6T1AYjMlFIGtSrfgYjBVNVFNS1C7CmSFlm8jyTl6lxQFq3pWXwKh8oWlGVijHNmht1oV0l2aRWas76/VQoS8WYhLUz2uh9ptSZbALF9lTjqb5TQdx2QFYKekmFOCam00zoheO9AeNxXU9/POC6HbZrn997rPf43G1KIE1w8MVdhxbFeiVwuKYZWa9ZPy3BUc8gJTOkUsm1UqhUK3jr6ILTtVSFYluP07W/U40yRV/YZWxqdwJWWnUV24yda3pzXCV2dMG1ikRs20O0aq0ixFqJ0swcjMVUg0nNXdavvUI2/bpSlZ3SDR2HPlBrVW0+hFIzKekQcIqZ5FTM1TRY+Hh7i+87+t0e1+0ouar+ImolLqViu8yQC9ZWfNNHMEbaKK/FSmP/iWtM3OumqOMlagWjMkHgXddU4td+LtvzN4NO0UQXBFMzZpUU2qoaw3UbvjL8aJiGQvEtML3oQbEpgjQ4cNuu1xX6Qjm9lWOKAFw3/LVa2YZjvRq4Ou/xocNg8eLURdlasB4xhuJ11MO2OWQDjSix0skLZXXanUeWOJNyanNRV53HdStc9SGds/gm/7V+lO0zvKguV01OeHGOtiC9Httfg0rqdJlUrXdeyLkyT4WShfEcmcdMTjCPTaWnrKyc2nxnrqrRtumqWaeBL/TrjiDUakkz6l1UBPJ64a920urSOwwDP/j+DzkcjlxOkekc6Xzg9nDAGvjp13/CN+9/qhuXDbSlBwXiFHl494H5MvPHN/+Z0/nCl198v4nKBmop1CrEOTKeR7z3HG9v6PqA9w7vnQadNFNLZhyfeXh+YB5HsnRavdTAmEV7FF6lcOa58vjhgvEL9jlhnMVZFVldLh+5fPtjSpyJl2fKMhH6nt3xqEPERelzaRqR8QQpUnJU07+wxx++xNCGGYGQEv0uIbWSiwr25txUDah4s2i2Z1rQa+6+COQmSGoN2KqNkhI9kgPFeXIIiA2Y7ojtDkgWSlLb63FcWKaJ0/PM8+OE7zIlPLEbM29/FKnVqXV7TEobXoVDS8EZj7eBbBIZWsmt8K7rBqztKVT8cIEScdZTc8ZJxVUdEk8ls+TKac58OI/kUpmaNt6x6wn9gNiKKWrQJzlR5hljHMH2W4B3UgkD9L3BB50rizPERZifC7lW/EkHsXGOXdgjVkh9JfsRisOkgMngUsG1JKvUSqzwJIn3stAJdChJQZJVckEE2wY3y1ioCVIu5LhgcuLz+ztSOeJDwHuLd5V5voBUBvaIdHCJyLsHYowM3Z7PPv+S8+WRzELKkfOkDtNjLowp45zh0HuCMzhvm16cxbWqwbsB71Vvb/UOW8VUS0qkp4JzgcPwhl13h3MDQ3/bqg1LcB0i4L0SYmJaKDkqwaQkDQ5V25mC3RpElXV8Zd2QV7r1Gpja5rTqNLbHxDStQmjPbAlDa1qVNUC9fIaxBO/onMUEbSX41RdPLBQHVSjTTM0Vs+8whwFpTsXaF9PemDUG7z3GCEstTGXkPJ94//At5/GZuMyUWMlJyFMLVBE1XrRqCVKsw1pD11mcU+3TauwLaG8FU9mqq08eexHqEVEk7K9x+5UOUpd5Zp4i5/OkAems1foyZtJSlDiRVtVpPUCVQtEtByuulcnKpHJecKHNRDRdk1oMy8VRklG2TV3VqnXQc5Uw6ruOzz/7Ql1ynwvjqbLver64f401wjQ/8eHxJ9RqwTgNcvqGSHPi6eMz02XmJ7s/5XQ5k1Piszef0/crrGSZqvbfQhcIweLsHmsCxjt9rzlS0sI8XZT2u0SyBMQ6snjmrAvfua7NKQi5TNqXcwsYCK7gbWV8fsfHn/8peRmJp4+U+UK/23G8u1WGZGva1phhiQoLFrVkwA84e1RHWioWIXQLXRsUnEaFL5dYiTFhyDgWDIWuZsLa+S/aV8mupzjVFbMEjDiIHlKmek8xTllpbo/1R6Xk5qSkl3lhPI+cTgsPjxO+K0h/ZrcI45g0SFULSbXzNuJsEbWQtwqprHp4a5AyXmEVLxnX75HssVis0UBsU8agldOSK5el8HieybUQc6ZIJXhLdb2WRb0GKaZENVFtZlzf+giCoxB6Sx9aIKqGHCHNQjwVcq6tv23xnWXYD+ArxURwEak9Jg2YbLAZFSWuqiaQKpxq5lEit2IZJGCqpWYFiEwSbFYVd2btLZYiKl/lDK9vbxADWYoO1brKErWStr7Duo4yJmLSecM+DLx+9Rac8Dh9IElljJXLFPEpc4lRj81NYOgdvoJvXkjq7mvxLuNzaVWFrudVLaOmmTKfwFhSSqQh04UDzg3ojLXHOacmmt7pZ1kKOUdMVWderYm1jlGNQLvtHy8rBrj2m1eW+XWw98VthfvM9XcUddUqWfvffPI7LnQY5/B9oNsNGmja9SRRiVslV+YxIktCPJib0Ojzpo3dqLq6NUrEMhbKUlnKxBgvPD5/5HR5whSLFUNJkKO2TpoxhI6oiVCdkqV80O5ekcgnzJBPAhOffC+/9LHCX+f2Kx2kpktingvLqBBeWoxmh22+Rqq5DvGuDSZakGCVxm8HT9s5lGRIjfoLojDfqoDPiwXZfocGG5RcmKeFvpsZwg03b47s+4EvX73BWvji/Q94eP5ITInLOG2qB0hRaCsVMpnL8wmw3N3c8/jwgWG3Z9cf8L7Tua2myRWXiPea2UgX2mBhRiS3gOtwxeNDYDWKK0V18mrz6QnOa4/FoiZ6QFwuzHFiuTxTFrXP1mvLUXNluYz6+uvF0uR2aimUZVR7jBWyW2FBZJtbUlFJVWFQ40GHMRUxakteasFo6Ysx2g/C2TbfgmaGBmy/x3Y91XlMGKjWkbJQ6kyKkWWaFeqcEykqxi5GG/U6ADmrdmPNmOqacaO0AEf7HHWD2GgQzwoxaW8wYHOHc0E3ZFPaBpG3NVoEkkCqtRFwKqmRCeYkXJqDbZqVweeto78dWpO80xm/UrFV+0Mi2qtKtVAqxKUiuUJuhixGNb6zV+jUTBZXdcTAodZHAQUEhKYWBSwlM6ZIbz3F1G1odlM/aDCWFaOjFlWFcVupq0hiG5UoKTNPZ0pKzTW3YL3FF6uqBQa64Nn3A/c390xdz3mammtwZp4T2RmGThAcvZgGqZorPd14jAkKtVXdfNdKaoVXBcMcz0i19N2Ccx3eD/TdLSHsceLwLjQ4bYUWASnNxqNtDeY6Y1mqsn/NaiDY5Jt06Nhs+7Sse0rbKBQmrJ9WW7AFv+vPa0Wm0O0qf7aOZ9TVXiiBzKLnvtTtXBnXGMsN1s05UlJUKPb5QqmJ8/LAZXnk6fmBeU6kqL03U1trRO3zrvOfplHUSm2oTsE04eoXdEZeQnuf1oSfVlcrlFnqr0El9fHDzDJWpnNpAUYx5JpVYHOT0BGDqh+tRIkG1bUNFFq2gGEZDTma66weLUiJZkG1uQG3pEkJEamQpoXHDw/UWPnd3/wBv/3V/8R+t+fLN5+pmKKA717zfPrAT3/6n5iXC/M8klKiZsgjFFP4Jv0M232LpMzdzS3H4w1ffv4Vx8MtpVRSyoTg2e87pCpU1vdetbrqAnXGWaEbOrCWPoJLAtaRUlYMvsEZdK1n5gU/BKRWnr79hvO7r5G8INOlNeDUxiIvC8v5GakZ0gnqopeo0QswZxXrbSk+UitLynqB2Rtwt2A7bPca5wLOH/BU9Y7yA4IliZAEbI24fMZIxttZJVQkIWXEGBhubvFdT7GBaAdyqZwfnpnmB+I4Mp2fSalwflxYlkyMQm1kkyVfkLiwpDMpTRgrBNNhnSXlhVwmSpO0V8uIim1jCakqBOl8h3c7ilS6eMTaSEpgi8VUNW6sQBRhrsKYCqc5kes1UapTZc4ztQjTqPNN37vvefP5rQYrr+Z08zyyzCNSLGU2lCrkRa0iSsrUqaj9hzQFlmCp0ryt5o7eGYx32MFSjLC8AJZSC9xPccZPDuscRzMQjGOQihN1xi1Nj8hVh0Nh74r2caVJ8azuZUsaeVh+jnWeZTkz7A6E0NEPe30NDIdhIPhX7Pcd0zKTcsWZwMPpkfcfH5qtycAwOI4H9YkyRjdSvex0QNla1diz1bF6JNdaiSlRRViWGeQb+u7AlE50Yc9nr3+bYXcEGxiMoeREnL3OPtbaYCg9gwbt6RRRWCsXJVp4Gwg2NFKDugasuuxaIun73HiAUrcZzOrs1VaoulavrbNGsKbDxlts8yiTose4lEUFqs8V86jSXka0Z2etw3aDbndZXQXG8YHn8zvOl0f+7Mf/X8bxSc+SKcSl8PwUyVkgKy+pVr18ZU0qBU1yS8FZowaveUGM4Nzq3LBG5is5ZGVCXmvKBqNDO1JC+nUIUmkp5KgCryJsCsSr/t5a6SAgL9KX61Q0L6J7C2TlWittOc6WSLaexFqyr5WU6IWxzAtzmLEY9rsdh92e4+GIs5bbm1fc375FaqHvB2pNxDi3l9f+gDGFEjWIjOPI5XxSdt8yM/Q7JWqsShglU7LT+Z16HWgW0YpEJ+x107Er1FmaHmHWxRFyJJUFR8Eki5RKWibVWCsJu1UTetHVKuSkLEnijJQZawRn1z5OVlg1L5Dn9re0N4PfQZsJMa7DuB5HpdgKJiB+rxt3bZp6xVFLbJlqU+3d1CkMrhsIuwOgQsKgQ4clJp1rSomaVFg1l4axt1UgUhBMY3yW1sBVXEPn7QqrISZypSGvabCA2me4oCZ7rb9h3YK1BUzWYlKg1Cv9PDdFCM2MIRtBkp7PpVm0Z4xuYtYgrs1ZOdHmv6wMM81qczFtTcjmMSSAKW09SbMALeolZNsm4de70V6FNaYRO9oAu9RtsJimKSiNUr+OPqhqQ7PSqC35a5ur1EpOEVsKcZlUhb/WFmgUgrJW6cx9p8PZfejpQtdo8Dr+kXLBZsjZkGtpvRi97mpVIpJUcDW3xr5+vq2iqoqo1OaNMi9nqlRiHkllag4KWp2sYwWIXbdZVhafEk+EdRaz1orxOtS9Eic2koXQ1mk7X0Z05GB9TkMy6laHNe1N5EWQWpNpsxkMri+u10aFXCApiQnXSGDNa2ytUmrJxDwxxTPj/Mzp8pHL5RHT9CVTMipMkLWVwdWk/MVnkasargjr8LR1ba95kfAI63phI0W0M8Lah2p4hAZcuSIOf9ntVzpIzWMiL06xc9ELF4CqI+VXYtQWsfTft8B/RUrXMrtkodY2aNrikVul5rdZA00uRNMnpAjLvPDu2284P5/4re99IC1n6D37XaDvev7GVz+i3+34+ttXjPMHnk8PZMksaWosGrUZMUmgGk5PT/zZn/0Jh8MRZzxxWRh2e46HW0Kw1FrIKZLjRJktIpkcT5S8IGRlqFVDcNpHk1zVrbao71ORwtP5AeOt7qaxZeOXkbLMbRhMqbjOKmkBAWPUhr7YCxX1frJRn2eSpl+mOky9103aQHUG17/CD69xw4H9mx/h+h1LSSw143xgtztgjGF6/MByemQZE8/nR2qa6Znwq/pAzfjQ8fZH3+P+ix/wdFl4/nhmKbPCevOMERiGA8YkUl0Yl8icM1POBOO48Tu6DiCzLLNuSj7gXFKYSKQlAar7R864Zq9tfa99n+GWEG6154JV1QvTY/xEHJ+YpgtTyZxT4TRn5gbHrbCHwZBSYaZl/FIoVvjmNDKliDOG3gbU2DNiTcTj2RvfbMvbXBkgomMB16n/ulk1KOwlCtFIohrojMV0hs46ehcIzuFNUfO8ODNPI8V4rBO8cbrBBjDW0HWdfvVOIeiWpBSE2CrOWrWqLhTOz4+MlxN9v+cQC856ZY5au22IplpudkcNTrVymbSSLTkxjhWDqoZ4i/bkLJQyYckY4zWAWYWQrXGN7avqMylHJejkiSmNWOt5On+g729wpieYI84GjsNrdsMbUjojov5yuarkkKuaAJdcGc8XUkwc9jvCEYxxyqXCqbyTeMgFOy6a4PUB0/smVK2GhJlMNlXp4aJ7la2dWnhYjwvh6jJsA1bAVaPX58kg0cBcNBl0FntzhL5Deock3VO+fv+njNMzj6d3fHz+lpRUm896Q98NdN3ANBae8khe6kawkKqkHDa8kq2f5b0l55lpfqb4DtPlVkmxbqgtsK9BqiXwXL9fYUsRRYX+Ordf6SC1zAXJykBqSV+7XQ/cGrVhJUS8KE3l09czqAab4rt6nqxR1aF1EM63LGerwKpQDaSYeXp8ZAoj4/mZkmaQRN859rueLz7/jN3hiPfwpz/9DIzh4el9UzGXDd+3RXPU8XLh229+zuFw5PWrt8rMsXB3d69KFFKbysFCiQZQa4xSFpCiFZQzeKfpfMqJMmdSXhjHs2p11UiWRF0S5emCKcIQejoXEMmolbsQnFWihHUE12NQ+rWIEoPVq6RCatg2HYYDmig4qrH48Aq3e03Y37B/8z38cMDKgq1RDR6PR5yBJztxqY9KrEgn0jJRZaYTlQ/SiBLoD6+5ffsVs3kiPVQWUW+vkhKu2QLUaslVmFNiKZklR4z3WNfjPQjN3sUYXFwovilIA7UmDTxtrsFVhXKMaxtIt8N1B51XEaHkxFwqGYdJC4sY5gJTKkwpE0ttfkfr8hFyrcTaglS7lB/mwumyYDF0OKwx7IfK0Ak7B0NfcaDYDC1bl9BqxDYaLVl3/0ID4OyWIos1+KCzfZ139EGtXByC1ExJkbQsiC34zlKtXzM19QPytq0twGkRhW25cqs8c43EoscuRXW8Tn3C0uN9oBt2+NCpL1ERjFh23R4RmJaF4/5AzJHLonYQxhaML01h3rX+asRIwhpPFYs1WtE6G1jNS1V3cyGVuelSPgOGh+dv21o+cug+p/NHhi/uudnfglRSapBYVXk0ZZpCyZnpMhHnSLCGug9Y4ynY9jehiINccNOMyRljdiovJZo4VCrFRopV9XnwGHHIxsKzeNfmwqzHGKdBqq19mQ11RJuKJSHOYXceOaqbds2ZOE98+Pgzns7veTi95+Pze5SclLAOQtcx9AdyikiZKLk5OoOe0Gp5uTUaQ2NtWkpNxDQCWc/HFqTaZ9yqyuss2dXOY1UIWoPUrwFxQq+J9cNfA9CG7H43Cv2FtzUDffnbaBN8ndL+zjOuZmUr/KEnqdbC8+mRr7/5c0qOfPnZl6RjAnEc+h33xzu+ePMlfegYp5NaXuRCXNQpV+EEhbaWecFg+PjwobXVKrv9gaHv2PW3qkuWI/OkGmiXy0dynhnHzGVM1CykXBVnrpVUsorkJp25UiHJBWJBUsFUIUtu3jyJWhYMFXGW6gzeddigKp8lo4O6eAg9m8fTygfJkXXpK2klQHWYWqA+tXkrNWqryZHGqOoDlyfKeILphI/PkCacKRjTrBj6ARc6xvGJjx9+xulpJE1napwwHswQiKlwHidizNQMXjyud+xuO/aHnh/88Etu7/bc3d218wYlFWo1YHV2q5RESjMlZ+LlQhonbNfhb26xNhBMUMWJWhHfAYZqA9U6YjWc58y4JMYlMS+xee9sDPfWaIe13LftMSurDKnZ0M1UNSYZhLkUlUFyAl2LeDkh2TTpJqMkkMI2R6eKKoKtTT3BCcboJmyqqq+bJqC7zPCUC85YJhNwxhF8RwgaYJz1BFFbBuc81hjwCkuaRsooNRO6bqtoSs0EP+g4gojKIBl9vBSdcbRG4b9dP3B7uFXlg5o3yGmJQnEQnCq/OG9xzmBNQeqCMSr7ZK3X49wq4lIzubZjX5txIqnBYZaSnuh84vHyHuM6Sh7JUauwIko4X9m/xgrWVawr2ovDgHEEd8CaDrEBTKC6hfR4oWbBRnWnTpKZ0oSOXWewSjoojTlo8cpctDr8bJvckKkguZKXrOSYlJRJWxNJFOpP8zPVzGQKmco4nxnnB5Z4UvYuqmzs7YC3jvvjF7y5/4Kn/sLpI1ycohBr0KjbTrcm9wbnrJJgqO28GVJZdI1tdjEvYL5PAtYamF7+XJvm4l99+5UOUiUr1FZbM/vaX9Lb9YD8BbcVwnrxgHnx3frfNkW+ASovYL/V9t2gjKec+OabP+f/8J4vP/sed4c7Xt2/4fPPv+Ltq7fYCpff/p95Pj8RusDh5qYZIp7IKXE6PTNPM7Vmzk/PTJcL1lvef/yay/iMD57j4cjd7YBzAymeeZ5OpDjz8eFr5mUipkBMHUYMTgJUw5LVDjwtC9O4kFMiLmdSvGAL2KTMuWoEY5LadywjRiq7oIaFXdhhegemEgUKBhs6GByYtYFeiVMiXi4Ka7WejpQZU54h3yJ5h5Tj5gOWxDCPBlMqy4evSR8+Ui8f6C4/w6UZ3/U4H3C9pz/eYHzHxw8/5+H0jjkapovRYcwefLfj+f0zXz88kJdKXaArPYc3HTffG7i7v+Hv/t//Nq/e3NMN9xhjkSrEOUFzq7W+qmvrqNJOp5+9Z3z3yOH+FZ//zVd0vqe3A8EPZJT6bGyi+hPJLVwKvD8tXOaZh+eR8zSp8WDD+q+eZWDEYUXwjX1qAbupFEBBmCssCWIFbzOdtfQBQmcwUVmdJCFdKikLXjyCUpbVybcqG9PogLkvVZOsqkFN14kmJ+fLiUuqOm6xqEHfzc09t7f39P0OZwNlgH3XEfyAcZauV5KOhEB1KltVG8EgxUmNIdGkBhFlm5WslWRWmxNrPX0n3B1usNYwL4syPXHEmrlcCs5WSo4EV+g6S9+r4oexbaSkXYsG1fgDiFlp78qKdC1RUJeEkmficsG7HlzPeTnjMXSiqiHSFXX+NYJ1CtW4kHE1Y1zT9LOBff+G4I/4XpOh+Hzm488+EueqvlUxk8rM0/LAIol9NQzGIMaqOauxeBN0etr1hE7NASkWyVDnTD2N2oeaI8TMLAsXiaRcOT89ky6VOZ2Z0zMxLzye3zdV8xlhwZmO3r2i8zt++Pnf5rf/xu/x4eNH5pPj6fmZjw9PPKULK9FD15/CdNZZQu8IwSr6UCJCRmjKPU0f8kqMWFGqX/x63ZdRfc2/xu1XOkitMwa/gNv9dW6teb0OoZuX/7Q9xbBqP77UgFyfs1ZQG00X/bKkhct44nQ+8PT8gLWWm+Mr0uEOqBx2BzBwf/eKMV5YlhnvPCknlHGtJo1LQhucOTMtE9M8MU4XvLPknKhV54FIMylOmz9VLlCq03miRpddTQAFlXWqpTbLkdJsRlpG1ILvalNipCLVNgkXUH8Ii7VDOwiJKrPCjy9KfZ0CbBisgJGEEQ8SkTJTs1dyQi3UirrxlkrNOnNlRHSynQ4XeqwPWN+p3QZGTQolkYtXGw9AyR2qSReTWqoYUQqvD57dvme3H9jtd+z3B4zToeqtQVw/hSZWO5KcIimqwvraTzJtUZimqSXWNLKEqKRMLsSk1i65tJEIua7ZTxrttMb8d9f3dlHr+SlGPaMM2id0rSlvGiJng8EVroaY6/ptTXhnXBsIVUo/xungp9Uh0VUmbGNo1aYIUQo1FYprBnhFLxzXZsXEOLV8Nw7TgpRtkI44daEuVZOY2prrqmhwhX8M6wyfp/MdpSqDzhnVGyxFq/TU6NHWgnetymkHrprakkaHRXu8K4lCNlsYs23EpZY2uwXjfMH7E6GppqsCTcb41lFpv7cJkDRpMmNVddxZ3/QcXXOo1uCzqYIUHVPJklWculhFHmyrqhud+LrPGDYefFHI/kUZrgQQyaRamNNMrIUlXpiWE6nExlJNrdetvmPB9/RhxxD27LoDQzczdD1z16knFGZbg7Li0u2+rqO1n6TBvrRelrCxGbe9+GU75Zd9v2H3f+XtVzpINVWkLT68LFJhheRWCPCFfEm7/F9WUFvB1G6qQmE2kQHLFf7jBfPGGNOUK0DVLAzn8cTP3gnP4xNzHjnsDvyN3/htvv/lV9ze3PODH/wWPnzJZ198xmW+MMeZ58sTS4p8++5nnE5PTPPE8/mZmBbeP33DuJx5//gRfvzH3N7ccH8bQEZsfMbER1KMnD8+sCwR01tMf1C4LSmmXgHbBUzWIecShRgL86Iwnyta5A++I1gPRpo/lcU1PNoPR/ztZ/jQs7/524S+4/ndf+bDT/69Mv3shDGJIIVdY16lpFp6RpQNZWshPn3EnM/MJTKXhK2GnBymGuqyYIOl79/Svf2ybX6aHcdl4nJ61ECmZQb7w47PPv+ClDN/8qdnTg8L41MiXpoHjs3QC29vbnnz+Wtubm7o+h3GqsWtyFotX+Gx9bZi6tkVlpAJLrFIhpJwUnAUqqnbPjKlxHmaOY0TT5cL4zQxNQ8lVSTXtbaOF12DlLzsU2+Xrm0BjLYHxArPUnDGMHiht0JwjsPdoLDc2w5PoMyV+JyQKnh06LoLhv3gsM5qH8o58B7TqRdQ3wW8c00xyegHuhTtfbR5Q5Mt41KIJnEMA/v7N+RalOiQC4aCEdXXU3Sj6viCTmZRjUaYVBJZiorxmsDaLzYCwXt2/Q6wDGFPDEppX+YFQVhmlQjaDbAbwDohhIx1jYJtdQZyPZHVpEb9Rok+GILvcK4npcLprOaQy/LnhO4jnRV2Xod871/dMAw9yXWIG/QFu57gPf3xjsPNW5ztdATDLKRiSLOllER3OKibQaqYJJjcTmBVoQGZi/aQQo+1npvB4L06B0vU90vS+TeTCwGjyWFQCfxTHHlcTiyy8Dg9MstMijNpmdUJQmayWnDjTGDf7fn+Zz/kZrjj7nCPqYZgHMfDnlozz88XlfqSqlXSFlWuwWedP8tFF+tKJlwFjK877y/eVn8u/V6f+ZJz8ZfdfqWDlLQo/t2O0VVpi20QTvchs4WnqynZJ9vSVj1ds4drNro9B15salfVCU2/YF5mSk2M85lpPtP3HbFOjMsTP/rB3+Rv/97/jZubV7z9/EsEmNLM4+WJJS28+uYVT88fOZ0vfHh4YJzOPM3PpPGZ8zRSP3xLTBPPpy847hw2PuPmR1JMLOcLS8x4c8T3uhJKaZWSAdu8jaRRlHMWYlahWFsyFgjWqaq5kU0Hbs0QXehxu1t8v+fmzVfs93fMz0+M50xNM95fsDbindD5ioglF9uqNJrTsJDHM2IcMS/kvECxlBQwYnHWqgXI7oh/832M75QAIEJ5fMfyrKQKTQ7MtpmkmKFa5nMijkXniKQiIYOruJ3leHNkf9zjfPNgb9I0YlRdYDvHaxBplWGxGqiyKaRasOvMS5PIqQ2WS7kwx8QcI9O8MC0LMakEkv6tNiC+Bad1Hb9cgSsM2C5506ovlCk5y9pPqmQr7AfL3S7Q+cChPzD4geUUOaczNVc8Hoej7xyHfY9zliG0gOQ9pgWs/aD+T7RKhAL0BUmV+TIzX2aolpgrOVdwge5wROJCGUdyKdhcMI2kUdtYhF51TgMYFUNBROE+rCqrr1evAZy1BN9RitC5jmA7YCFlTUpXfycljwnOCYISW2yjVq9BXw2yS5MoUkduMBg34HxAgGVZSKkwzg8Y+0TnCrsu0gWPDV8i3GD8jtA15RHvccYT+h3doMxbVafPighUkFpwfY/FI5eIxKSBPleoVR3FUwKnI/G2WaJY24gvSanexIJpvWK3Km443WNqEsYyMZeJU3xgKqPqg86ZSiW5TDVK9ddj2nN/vOfu8IZ9t1NtRmMYuo409E0T0CqZpa39l/vq2vNXhMVQTX3RU11X7rYF/8LNfOcxBSL+egjYr3SQslZa+d6awxiM+Q5sssaha3m1Ba2XOOkKc60BacsSXryAWbP6DU7RQGV/4aToLlRKYYkLtVaeT898eHzP7c0rxvGJEBy232F8hwuO/c1AVxyfm8843u0Yp4n71/fMy8zupuP5/Mgw9Oz3e4a+47M3rxn6nun8wPOH98SYeHpaiKkymFt2w0ortVtoflFxY8Rwc3PPzf0dkjNlnkAqwXlCm2upucFuVmEVcYZstSo4n74hTU/k+MDxYJESdIrf9oR2xBDN1lw1uNAhxkPbxFbKtHGd2pxYtZRYraVTyYzv/xzBkJZIyYVaYtNx6+mGHtd5umGg1ELKmZQyKVWF19Bz0/UeH4QuqJwObaq+pAquYJyKiZaamoqAKjbU2jJz5/F9wB8CZrAkEzF1JpaMK6q6UEVV2GMuzCkyp4UlL8pwa5/1JRz86eL8xaWzVlSaR7XV3dLP2jaGRJtjSoanqdL5gg9C74Th2HHwbzHFYKPBFIXzupYAdF5lgXBayVgMrnpMdtt8Xds1dYfYObwdoO/wb15jdwM3b95yePUat0yMMWLiQsyVtKQWkNJ2HWiAyJs/22qTAQZjU/ushW0A1ChEYpwSFQzSSFIgVSulGJuRo7OU2uGsJmHO6fCrC1yhuRXSNyhCYME6i/eW0HvUl6ox2qwSB6pAyollmelMD6bDWFWosNbi/AFjhzb3ZTbIUY8bmL4DozN/FMHbjpt8pK8dNUSqS+A8NEuNjh2+eJxYrLRrt83U2VXLVdbEGxXttSoAXCmUpoPnbJN6E10ffRjo+4Gb/o4h7Ol8r3NrbcZphSyLiA5AFz1H2k9ek/xP720E7BeIar/4w3V9/7KOzF+3S/MrHaSMmo5u8lFb/4g1DskL2+f2HNZa6Ir36yJuFuxGszH7SdBq1ZcxV3dcq6oV1jY5t5f4rUib+ciMRT1fvnn/DbFG+mHg8ekbnK3s3Fu6PtD1jq67ASu8+uKGagppyczjTCmFcfl/EHNi6Hv2ux01Z84fvyaOZ57nP+XPf/xjYkyMZ7UVuTW3cMg46+jRRbs2QbXhBBbH27efc/f2NWmeOT+qCnutRTXa2nyQkUooM04SEgyLm0Bm4vt32JRx+Rte3VusGRi6nU6lZ0eKqifYdzq+bvtBrSyETQ7KuID1AxaHN51aMVTtEcXLE++//rFCfOcz8zRx8+oVX/zoR3TDnv3tHf1ujzWOlBNznJmXxLwk7UeJqoIf955h59j1HVYcVEuOlegyNli8sa1PpAOdyiNma+b7AN2hZzADrrMsZqJU8HnGxNQUoBxFHFOKnOaRyzwyLiNzXFhH92RdbNuF+QnY/GkSwYvf2X63bZ7NcrsImAJztSw10wVhty8cvXBzc+SHr74g4JGnTB0rNRbKnDGCKr1bVQSsbRe32W4sLu9UpcV4i/GGofeYm4DdD3Q/+AJ/2PH2R19x/8MfqBV8Tthp4vLxiafLGWcLvUt6/b2gIleUJFGy2pKvLEPM1bBTWNl0mkCobY66EtfSTBzFMOfCMikk342uGXCC8wYXKvubjAsV52iUfcC2Td8bXNAAtTsEfKosqZknmhZiBaZlBiq9Uxdr6zq67oh3nc7IuUPbH1S5xpSWRTiLOVgYNHEWgS7DW/OGUjPTEJl9woYOtztirWcvR7rUa4WTilaVTgOUWIM0FBMLVMF6CA6SCJVIkoVgAsF1GlyyB4Eb/4qb42sOuxtuhlt2/R5nncp/IVgXsLajlMq8zFv/E2hJG5gW9DRArUFK97htE/ykEoDvruZPErXtsV+DnpS1ZpOQh/WyX6uerWD6pNYUuf4brfLanrLSyT/Bfcz276ZZNBirMJNp5XLf9WguuDYpzRYpS8mIqJDqNM9M48jp9EwXevzxlt5qVqTok8GqAQ/WqBJ1rRXXeUqpdH3Hfhh0iPcyIFlVoFNKpJjJ2aow5CoSIdrIB1GTNCOfLIyVMCAvtsO1MboeQ0BN/7BreYTagczUGDGysIZ9VllO48F2NDkATFWFh1L0vZimpClt7sVuNgqq86b6i4kUp8YOmylloUrGOov1zUvHqWfUEhPLkkipkRRq+xzm6rujd7dZDFRRAoKwpoW6HtbDI43woR/LYJxmI0UKRsqmEbcGF5FKqUXpubU0OwRpDffWV2pV0RZ1XkYmeQFHb1X/lkptR/hlQSbtc+SqG2SqVTUKMXgf8NYjwVCDklPElPayCsGBMrOusPYL5QLMdk503Vs99k6rS+t8895Sa5PV4sR6135dw3etGpDUX0vnhCr1enybWoUY++KztnViRPUdzQvoSdpIA9evpWiisZ1GazQ5qGZzML5ew3q9WWt0ZigYUO0MfRwd3tcgLi/0ANd5Sz0eq2bdSqjgxVVkjAYWBBVLdGot4p1WrclA2CbhOizNaqMVkdcSw3xamRiak29TNbeeYD2dCfQm0JmOzvb6Ol7P8r4/sB+ODP1Bpciakvm611mrowSge82a8ZsX622F/1bITxp6tZIrdE/9NM36RVb1d+dS5dcjSPUHyJNRtV64sv3+sttWWZkNknrJgrINEjFtI1l7KdZYQujZDQPOe4bdDh8CX/3gh/zohz8il8Lj84mYEtOspofzdOHDu69ZUsQ+jCxTwZef8L/v/zdev37D//K//r+4+/IzRcDWANAWj/ceu1OTtl6G5hdk23wI3NzfMQyeP+93TFMhp0qVrhECAhhPKaLZYCmNlCekGFWmxVYeH97xfPpILYkcL43Rpvp71jq8D1igs40RhsVXo0EqnmA+U9IzS5ywBrp+wDuL8T0mHPT1xCJGjRPLfNbt0WkQ9p2n6/cKLaQCNTGfHpnPJ+b5QpyfyCXR7R3heMP+/kh33BG6HoyjFjg/T3z89onLOPPx4cR5nJljZCmVznv8cGA4Duxvbzi+PhJCwHRQbZNZyroWpFUosnoAUXXQWXQIF9tRMcQ0q25c8zEQqaRciWkmpjMxnUh53uRm1iAlWzRr6/CTr23afw1ibYOoL9hPL0VNt0VsRE0R2wV/GjPeJCyZy50wODSzbzYR2TStNHGqR1kESdo3WgfW6Vc/K5R5pmk5a/82xwlxSu1OVIoDv+/pHNxZS388UnMizxM1Z+bLO1V6MBXrm+xUXai1eUBkZQZW36SgpIUxiXhf6DuhCwbvVQA2FXO9fq1Wgbk2H6z2WUM12M7iS23rmK2CstbQ9Y5+aNryJaj/XHGUapGSqGVulQxUk0kyMcUnSh0Y/A4kUEskpRFrNNVRjlaTOQINTkags8jgMckQsqgtvYWdCFQLOYC1reeUm4DySuZRmru04ATSZm2F4Hte9a85ugNdsixM9NYxGI9xDrfbYbyn++wt3Wdv8c4x+B5vLM4HvPd03cDx5gaaP1XORa/PNsCtZAlVw0m5Uo1RIe/cFHg82GoU1jQvZZBoye91oW9IwotH8q9DkPId1GRYNQ63yunlzbzMcbgWR62U/QQj3Jhk8EnnGp2/WJUMlM58IHQdn33+PX7zt36HmBLDu4/My8LT8xOn8wnBIfKOlIV5itRcefCP/OSnP+Z8ufB701khy09i61UbzvtWRjc4eH1f1gj9rsdZaYtLSFk0O7aelRQgUskxIaXoJuSglrbhGGGaLuScEMkYdK5FagapOOcRdo3IELSZvh4oESQv1HRB4ozMOi8hImRn8IMjdL1CPEaleHLRGS1jLD5oVu5wSmKoBUlqWJeXkeXyRIwTJS9UKepTNAx0uw7XBWxQDTipsMyZh4cz4zgzTgtLzDqTJI3R6Dt8N9ANA/2+U9q0AzG1sdBMg5vqlg9LkyotLfMXlF4tYlQFu1g9Tqi+Xy2ZUiKlRlVXr7lJXZntfALXQAUvT/g1eMl1mOHTp10z6+srylYFl5aczalyWSo3UUgZtjNmlJ5djM4T2vWNNMaZweo6tAbZdgSj9ML12BhB8Lp+GixcROF04x1OPIOx+H4gLZFZLMlG6sWQSlITw6aRqFBTE4AWrXirtWs3sFVaythzXhSyM2a7BmR9f8ZuVWoFJXso3k7ekg+NtqaRCKw1OGfwHrrOsNtZSjGUGhDx5GxIizITzQuNuVTmtsabg7RkaknaK7TwUhXdmNXWRdEC8bbBrF27flvyIgrf6t6tx8a0z/XdJbKuilXmzTnP3u3JEnAuk92OHstOLMYH3P4G23XYu7e412/1PcfYdBMdpgWmruvpc8FYS6lVySFcGyIGHV8pojNzRUwTnjWbYLddE7ntnbb3+qJ0uo5TXOvlUn8NgpQNOgW9mdVttytk8ovTJ79YbK0Du8ao4OQaoAyaPahApTDsdnz2+WcMw463n3/Jbr/nb/3O7/Hbv/O75Jx589kTS4wscWaJC+enZ3785gvmy9ggq8huNxC6HcY6lf6ZZ63UmqkZK84rbNnJdjGiF2lKmQ/vP3A5PfL48ETOgogj7A64sMN3gwYqo8GO2hxwoQ1QLjpnlRM1v2igYlU9wRhs19MdbnDO0a9zNMYgOSNZCQolgaHHdnc6N7I7YL2n2kAsSTec5tFhw8AQBg2+XY+xDjGwjCdqiuTxmZoTMT4BI84XhuOAGEN/94qwPzIcb+hvFMOPY6HExOl84vHhkWlaWKa59dUyW/N9hVON3byINJvX6uIqJ9pgDdO0vEVVAqoUUppIadZjWlVBYBovOHMilshlPjPHiefzey7TI/Ny2YLkL1mS2ze/jNy0vo/t+5dQ1xa+rhuCEYOvtilDeLqhY7cfuL870vvAbGfinNVryCRNJAq6WQWtOARDtahza28h1K2iN+jx0wAmiMmAKh7kvChLz6DVgDcbQiUFfPJc5j0h7RGyKnhjEBr9vypTUIBcM9UqCaCSVG2CpAoPXvCNjZPSegh0U1//4Nr7Ad0IU9SeSeorIRfwai+jRACdzwsh8OpeRYqhA+NZlolpVJh+mSe9TliIRdECkYRO2Aal8hnTtD7Xs9Lm7FpvVVAlFmxFfIPFWjItApJLS1Jrm5Wyn7CL18+z9TObNLnLhq50+GJxZUepDt8SQNMFOByQoacGj+TWM6s6WO9WmHqF75Bm77Oebz1Ozluch9BbhkPr+QVNXio6j2jW+TGzrvFrgNpA0Bdw4fYMUUulv87tVzpIuc7iAo2GSsNUeVEBfZqH/sLNGNbRp3VFrMSBVWBWf7tgxXK4OfLVV19xc3PHb/zm73B794rf/d3f4fd+7/copfL8fCbnjHWarT1/fOZP/4//yni68PHha56eP1AkE8uMcZ4UM9NlJIRAb6z2PTaMvirMAgge1CABiyGmzJ//7M95/+3P+fbde1KsWNfRH27pdjeE3RGs1+zOOrCC5qkKt8xpIsWISRWbqway0OjHfkBCh9sdGF69wXtHZyrBVso8kS5P1BSJSyUtBh8GQn9UTbfDHtd5UhsuFqk6JS/Cbn9gvz8qFNF1YA3j6QPT80fyMjI/fUPNS/NkKrjOc+gOGB/Yf/Yl/e0bumFgf3dHrXA6f+B8vvDx8ZF3375jniPjOJNialIzVTddQ8ugVd/N0Koh02bmWpNYWiIiRjP5IoWlRKrosOSSox59EzAmcHFP5NQxpTOP0zvmZeTD05/zeP6Gy7yQa215U2ueb4tOvrMg12HI6z/rF7n2E68dgu+sZoMVi8+OgKMLPf1+4Hh75LO39/S+4xt3ZrkskAymV1X7lFTRPhShK8pnNEazdOuK2tBjNgsK4wxtCYLJCJGalzaTU5p+n2r7uWCoweN9R8mZy3Kr0GBamCftUakYrJp0xjiqBYpJFFOpRIpZGsV/wbqC95WuU+gxukZFb7UurKMDLYkSq3rJi5BTpesLXafOAF1T4Ve6eGI3DNzfvsW7gA891gXG8YnHx0yMCx8eLpRpoZqRJZ80aS0RKxlTsxKAMIi4bcupRvegtUjYgpQXDf4WlV0sqG9a1A1fbAtSzqn0mH2xZoQ2vyZKYy+Cjw6XBvVzK6IOBN5Qg0WGQLm7Qw49xVtqSsrSrVqrliqqRSnr4Lr241xQSMpSMAZ8FwidodtbDreuwaXN9w1RrhFQTKO9yLpm2cQD2ALhi/54+5sl/4U78ye3X+kgZVbMHNnS0i3P/CXYn3xnI/gFaFBkIxOsENy6PQg09pPDeUcIga4L2qD2HmuF3X6glLLpXNUk3L+6pw8dmEwXLFkyc5m0HzP0L97OWh6/yJI/eZOaGeaiDqIpLsRlUtl8o1PvodmRex+ak2yDL1cmImCMw1lPsWUbRtZGcIMJt56WKjuI0OZPHASP6XuqNeRhAClNwqctxmbNgaCVmVhspyi97wZs6HWToD23FJXIyZFaIrUkzeJUyA7jbGvGd+pS6n3LxCspJeIyk+Ki1VMpWKNCmF1QeZph13M87tnvd4SgxoRGVnJIm/Jv2a769TRdMmlCoORm+aBq2Iam4mErKc2IPakUTTwxp6lVqGVTUleDvpUMYT6NL+sabCdZXixK+e7zXizUrXe5PqgfSi/6kokpk7Jq4lWnGbGxFpxDnFbXKop8vVs0Vltok+tyfW0xrTelVV2VCrVQSlLVjzUxbAPtW9aPHl9jrap516qO0LbqmmmkCDEeNRnMWiSYtZpa7Wfq9tyVQv7dEnQjQwGqwqrXSlOa2mDWFks/CWpuG9pXpqFp5pemERTW/HX93TXhocHb+gbWiNQCi8BmgNiSn+sbkC0RvZ7y6+e5Xu4vBAeuLCho+otavWiFi1PfvOoNEqzenUMabGikbq2CdTerbb3My8w0K0RtnCbBK2rig9l64GpQqlD4SuOple11LVdixfr627FY/+1lhSXfAb/+ktuvdJByvrb2i0qmvExIvxuAXgaorex8ucbadPaq5LxSzddN3NqVFabT9Gs2lvPMPI8479nfDC1T09e0rxw/+p2vKDFR56+oMakY505nOg53t/jBY51tpf6aMq0Ncj09q6LFEkfGyyOX0xOX03um80ckZ/rulq7f8+rVl+xu7qk+UJzXDDl0iHU4DM7AUDw3x0juInnKZJtVqdzq86wLKm1TLWkcEWfZHztCcHS7G4Yv3iC1ML65JU0j89MHxnc/Q2JhjhcMhm5/ZHdzj/Oe/nBQY8WmgVZSZDo9kOPCdHpkvjxR80zNM1Jzk65p2XvokK7HDDvM7kA1MMdIiomnj+95+Po954cLJU7YWjkeAtb3fPa9N/zwt75H33fc3b+i73ucd0hR5fGMDjyKyVSjAS7FiVoy43RmnC644OiPA8YZlqLyM86qgSBSebr8lOXy5yz5wvPyniVFns4j57EyL0VhIYRa3XY+DRY+uTBb48KsCdV6YbdNqLb+5NaQXJ+jO5xpqyVXZRt+fHjkNF7YCXz7+ecchoFaPbsQyBRi0ZmyYiZSTYiojLnFqDJF64dsyhvrJrSS2aiYtGBq4fz8hH3XqyVMf8AYR85JBZJLISfV3rPeMeyP1FrphuMWTKUWMBNL8kjJUM6IRL2myFQyWSIFNe9zrlA2yjq/EBivJnu66a9jICrrBFS12nH2yoqzqJo6Ush5BGCeR2KctpkhxOLwDL6n9wO7Ya82MGLUD0lECSiC+jyVRshpHUErzZdOaD0+thzDSKuqeCFlBfoaDUIVY5spmSISJrdAhcEEqN4QvbIZS2cpnXLTjVOUyNWywZzGeYw1VCnEVDmdn/nxT/6Mp/Mz5/GZ0BuCdxyGoCStzrQWd6baqQWeNkOFbbJrL4Lgiz31JSJw/Z5PgIS/Jm/iVztIrRm3/rAehBcZ6zUV0R9fpqgrdfQvOqhr/f7Jfb0g6maYV0om54ixqN23V9ZZKUJHx+2rGygVny2uGEzvsLcenCGWpJTmlqoJ18+zotxruAKoJRGXC3G5kOJITrNK37iOEAaG4cBudyBhiA1Gqk3rToWFLM4JfdjhcJASkhPVOKrpW2nqm/y+UHJW7TFRbbLQBfa3t2hTOROHDolnJgq1JMWYq9D1e4LrcV3PcLjDdeoiXItm3iUl8rKQo96lRN205KrMoHuQQ3T4BZomXCqZlBLzNDFdzsR5RkoCMXTBEvrAq1dHvvrqc7qhZzccca7TyitGqlwdZCuF2tS4U1KvrXF65nx+xncB01VccJRGQbargRiwpAvnHFnKhTF9IKasIrDrvA0rZXmjbrIGluvaWteuWVfetpavWfZaMV3X+PXV9LdUM9Ewz4v2Qm9HxnHCYgje4qyntqFN4FqxiKppSGOl6Sjzle4ua0zd6MUCNWOAtCws04gPPS7sNdGqqk9X60okUZkwH4JOI7he+0VJg5lLYKxablBnkNJgoUb7bnNVULbqhgbhCqYNrLYM/XrRXo9xS0jX/tA2B/mCILXqCdaqVXPOC7kFWi0K1I7CWYd3Du883vtmpb6aIq52HuomoOe7GTy+6Cdv0Mg6NlPNVt3YF+97VeqgalAWqde5knrVKsS1FoWDjKEEQ+kNOINfq0ARXFViRINSNFGoKjTwdHri6fmJmBes1+qpHwLeGUwHxuuRLTQj0G2jlBdDzLXBfS8W5ndu8kse+2XP+2W3X/kg9XKYtn5SOOvtk8i+Hsd1A9iO90smimy/J42eTltsl8vIz37+c/ZPT+RcORyOPD1+5P03Pyf0HTevbgghMAx7hn6Pt46d3+GNyp84sZhSsKlqlmy1YWkNNCMmrsFQ/27TdsFgyLkyzZFpjuSUVRHCgAseF1yDJYSu6+i6npIzI+qDs8IG1vUM5hU1F8IQSXOilMqSGrvPzCBCMI5d5/He0HeG3ltIC5cP7yk58fzuG5bLiXh+Ii4VYzy7mwM+BPqbW/ztHuscWRZKI0ak8Zm0TJw+fE1aJtJ8Ii9ndBMy2u85HHHDDroBc7zXStB7Bd/SwnI5E6eF8enM9DSyjIms/WtccITBYUIlMenEfupx1eqmwrqh5e2uMi+FZBaKicwxcTkXXFepvuKCxXU7XBgAQ5IFEYh1IpdIlagwkFGrjJx0zsuagFK/W2X4cmWuj63w1csFuj6FxhATuWbYv+R2rb1VssZUGOeFD6cnlpy43Rt2nVK7nfVgDb0ZcFW1Em1r+osYmm7slVK9FnAvKynVqCLNF8Ynh+8GiqhLsazzY1UTN6kVqVE3N5FNfaM2OSnjjJJoiiObRYeo64ApHQZlUIoomjUEsAhLpxt3zpDyWlXJLxyT9fqtxZKTIXigBatcEiZXMAk7lxZI9BeneWEaZ3IqpLlSIoixuOBwouso59zuaaukjAimqMTYyvBbK7qNMWxXLHfdV/R3qOqDVnNRiLvTisd6r1A90o6/yiJZDOINBM1mbAJbK8U0gqNYSl2gJHY+0LkBY68D08+XE6fLmQ+PH3k4PXAazxQiYdB8kKC+Y2sRsCVbXIFp03Bp4cXaXtfyy+X6Mj6/TMS2M/VX337Fg9Q1UG2l4y9EqXXRrpjpJ/+kX0Uag2/FoM2GmdqVWmoMz6cT+SeJLgQ+vP9A13X8+E9f8eb1K/qh4/Vnr+iHns/efsGbN5+xH2743tsf0nfq42KdxRSLSwWqxfftsU+ClL5JMZZGyVLRTiDlwjguTNOinjdZ6bChD/jgm5Ow0PUd/e2N+kaJsgGrKGxi6djtb0AMZVwoSyIvI+PzB0pOlKy6g53t2PUHQrDsOssQLMs08fzhiTTPfPzpTxifn5p2or6H7v4tu5sjYdcTDjtECimekZiYn79h+vANaZ44ffhGK6gaoSaMs/hBddzM8R736g34DjMcFHrsAoXMEidODx9ZLhPnj09cPp6JWVlGzhlcZ+l2DhsqyShxo6Sdyv0Y0YvbqNCokJq9eKMYm4lsF6a4cDplbKgs5owLcHf3BV13i1BZZKJSWMqsskeUTYy4lEyMiVIM1qgQKHKdIbni0ea7K5DWPl9XoK7F7wSnXxas1iAFgpSKNGfbbx8fGJcFZwKhGQU6H7D4lqR3Td28Ofe2C8OIbILKtARKLFs15apWrXFSkpALA0sG6wPO62hBlcbkq5XafKqqKBlFnVqbxZ6zdMOO0vylyFYZnnVo1ZWyEb2BXSd4IyxDwTrDNAuxyC/f52SleEPJjhyFHJRUQRVKiTq7Vx2ljm2YXJkh0xi5nGdyrsTJUJJFrMXvHE4cJaujbEwLMWlCtwI6vgi+6iiIcbZVR9Lu64bVcD4LJiuhSaSSx5k0Rlzn6A6DDgADxmvyiWuJmPcqazQY6kFPvp0CNgG5aLATIdcZQQj+Dut3YAQxWg09np752bc/5+H5gQ9PH7jMF7oddDuDd2A6VV8RK9cWhGy13pbwsq3ZF0HqBbL1i49ddU/1cPw6BClaRF+bnKYVHi/LpV9yE7lmBPrziwzWrCfiu+mAMqJyVkbPNM2UXDh5j7M0Tx2hGzoQS86F436kdzuGYc9uGOj6Hocj5F6b1cU0ewRZ39QVt14DlxjEaLanthGJFCNxUVsO9eZJ5BxZ5lFdY/uevihEoC91nXuQ5nklVchxJs8LOc1KtS2J1WZB9cM0M1Q7jaao7AP0wv7mDm+16Y1kXPBtrqtSyqK055pJ04maI8vlRJou5PU9pwhNocMaA13AdKrKjVddOW38GqRkFcSNC8s4sYwzJanh26augeq1hcFgg6DqBqpppmSHNfloliJGBxXXrHvdRKst4Au4FbIzpJpYyqQAoWkCns2nSF0K9Tw6b/HekMvaiP/F9Yph6xivIem7KIl5+egveRH59Mftl9ftItXCZVnAGOa0EHPEOY+3ytbb3FSNQaxqF64N75cEJNrs2LqCXrIURYoOvlqngcgYnO90BkcaXcSWDfQUaMoj69t9KdSs50b7wGpzgVFoaVUzcNZQXBtor2Bs5eWRuB6xbYpMK6kqlGKoxWjy4Fr1WNuQbBtFMO3v6PMrJQu1rrR2g8Xp569q1ldKVvr9WmeszzPt3G/pg8VIK/V5UXm0UYfrfBRbD1xaYJO1ub2KDVirEJ+1GrSaRrJ+Jq2mzPb3r73OKxlcXzOXzJJn7UvaqlYvXucolcyi8lAbqrTulX/RlvoSEVir7/XvXnOu7yzY73z/l9x+pYOUXReFrRtsZpq21QbtrTd5uR1cNwi4LvD1AjbWNAM1s8EeoDNUMRZyEspywhrD+enE+288Pnj2tzt88AyDDo/e3t7xW7/1OxyPt3z/+z/k88++ZBgG7uw9IXiFQ7JKxhi1XsU4/fuKIWtG45y+l7icuZw+cn564OP7b3h493O1AlgK1nWkrKZ/n8cf0YWBIgI5bcEGEfKyMH54pMTI9HxmHkdWa2uAXW/pg8XWCnFCiiM38oDreu6++BJrHV/9xu/gjSWnM2l5IueZ56dvictHxvOFadTgFE/P1BSRZaLOIyUX5suorMTOYYLD9z3u81e4oYfDgbpTIVoRxeWZz5QlcvnwzPuf/JzlsjCdL83vSXvKNhj294b7LyzDbUVs1DBVAQm42uGtDhgnkzWIiUWwJDHEnEhlQfoJ90qVBFQ1Hp7jRx7qo66eZq0dSyHXiu88/WHAe8fhGMjV4M6FKWYkCzTWoGkD4RoQRSnv9joT8+KbbVVeVaJ/EcZ+eYFvBKD/P3n/EmtbmuV3ob/vNedca7/OMyIjMrOqssj0k3sBXSN0nW5gYak6lqADsuSGoQESNCxwA8vIlnHJMrJbljuF7IZVlrvIFh3ToUEL8ZDQFb7WxUAZiqrKjIzXOWfvvdaa83sMGmN8c859IspOcwusoFZox95n7bXWno/vG4//+I//cI4WPI954Vc//wmHcSDFiEjhOF3x7PqZ1lfcgBdBPISkBqw2Vc/wtSiRAUHH0FuI43teoISAVheF42j4ZURaYZoOTOOt7p+gAcHp8lZrqGXRv9FnInVX4hp4IUQVu40yEOpAVy2vdQbvSJPDFc+hRHwQllzoTtRv1L7tejVHczZ/StQAX06eWhyOhHdGGw8WxonOA8sZLhcxEWKngrYSGfxARNtGpJ5Z6pmlPgKifgNHDCMxTBosS1ELJYaVrtFzr/vZwEbRICEm9TguqBETdBYWVQhelWbwIKOnxgAjuFGzuFRNHQP9uTlt6BVjIgqXdd2V1jjnR95evuRUT8QrmKZATNo47ZwgPhuEbNnTe+WQJ4zq9evpmnySMn3douWpPf6HPb7RTsqZ216jhzVqeO8h2zt+swuzmobOsnE9onUbjdf1BS0UE4FUZthMiIEimRADD+mREAPn+cLNs+dcyszNsztulme44Km1EbwOHmxdsMsVo4kHEL9Gts45mtdO9J4x5TxzuZw4n0+EKoQi+NoQ7gmXhfn5SRmFoDWNbhBEkFLJlxPlMnM53XN+fKR3uXvvYBjUQNMNrBgpwhHGiTRNxDRwd7xjSiN5fst89syXR04PP2auF/LlnvO7z2g5s9y/pS0L1IIvWcVFO3MqqtyUhICbRvxxhCFql744pGqRuNUF5EK+nLk8nJhPCyXnHYSrBiAOkA4QBladuiazGQxwEgzaaluEL6bgJzbKIVT8WAwCUshlaQtzKVrobircWUTjYNe2KDclzzgG5sXGRohY0PR+QGQRda/mW4TkvsbYrtDIk9x/+3VPwMHiMBy5VR4uF6pUzsuZS54Y0rCupy7do+VOdSa6QpTZqtC5MbWcGHzWj36vRdigaQaO17pp6CrhSdWfszWx16563jfkysZTI+edqk70oYVagTLKu1N1fB9QAdwmpq23M3rvXbtuU3sQU4qjFM14W1MhY/x7bDRT+G5VTANToRlV5w9453VEimgzc23WWeywzCOtiuV6jvvJs9vxakajmWBvJnfBE4QnPBuxNeaxrNyjklXRrVmUMwdMU2WONSvtAy0B7WpilTgqLWu7hBR8MiHbuOkkbm3o68raX6Sny9OOS9iS/vct7JP7tL8eP52P+mY7KV1Euyf2Hn3NPtddTqf4ODDj3d/3frOkyqdE64d6+eIlh8OB6+trbu+eEULgYCOej8eJw2EkDYnbZzfEITEdJ8ZpYjocePHqFeM48ezZC25vn5FC4jAdCM5DKyAVqVWpsAhhHJQu7ZxF2yg92CuF9jBOLGmk5cpyupBQQ18p1PM9uDNfvvmUeHWt7LrrZwxx4vHxkfPpTKtCunlGPDbS9XNuc0VaoeYLThqH2Bh9IzphDMqqoqmywHLKUE84HGejLC/nL5gffoOSZ84Pn5KXM8vljFxOpk5xUVmmpo7We48b1YC52wl/M+GnEfHKOCp50UZ+CjYaCLm/Ry4PPL55pFwybamUDLk40hh5/XwgTZ44VGq9UEok1wbe0dBov6B0XDCmEmK9OY7SZkpbqC0TgmM8jGqY2oCII7JQ8YhX9XFBM3aHOqFmXmg6KgtxOFxzuD5QivD4cGFZMvNl5vR4UsFg720pqvHr/SVb3836v75Ad9/l6VP9R4vme8/n0gquOB7LzEM+k+pAwwg0FiGvOgkmnCx4gy/ViTTJVpiFXvRtBk11B+Nrpi4O3wbCeaKFQIwDo1wrlE0ixitKhdYeqHVj0rWmorzqJPVzgw+kONl57oI165NSJ6X78ytxumO18GLXodemcob7e1Wu0F46bOZV3X2OM60/FYwuoq9xyRPHgeCTMnqbSmDVulhwrNa6SiaT7br2zLM/vAYlq+3R4EYsQ3Je0QBxXd1JnVEIToM214NWrP8RvAREBO8qBFHleL9sgTYeIVKbp7TCablnKQuX+gAx410h2PRfZ7WnrcFB7/YKG9LB1H6tbe304r39uDOq/VSfLtZ1vfY3/KMf/6c4qV//9V/nT/7JP8nf+Tt/h9PpxPe//33++l//6/y+3/f7AN2Qf/bP/ln+2l/7a7x584Yf/vCH/NIv/RI/+MEP/rH+zhpFr2DdbgP3TOi9yHS3jteXSndevWsPwXtPionDNPH69Wvu7u54/cGHfPTxtxmGgbvbW8Zh5O7ulmfPbhkPEy9ev2ScRq5vb7i6uWZTlLa/pNQp7atojfz4SJ0LtVTyZd7OQ6B5dcIKY3oz8I5pPHBOA20pzI8XXErWqNpYllknBbw5UMeR49UtH9++ZBiP3N+fOJ9mfIiMN+pokx+IPlGXC/nxc6RmhnoitpnQCkmlpNWIF6HOlfJW6bmnx0etjT3+hMvbX8VJIQaVDKpVtAu+aeamEI+xkrzXSNCDv5vwL1SFonlBWuG8OC4oEy0lB03I7+4pb94w38/U81MnNd0mXn90JI6OlDKlnAl1IJtDKrbtnBQ8s2UFCllVaRRptHYxpl7GR8c0jEgLSE5IcwSTHlKNA1WrwKY2E7T51DmYjgPDIYC74wP3IbU6vvjyHafzhTdvvmSuZygOF6xJ2kU8USnB2QYFIu/v9vceHTayf+2MQo/PGgpHiodTvnCfE1MdqWS8E5zJQ63EZ6fHItA7ANQYi+o4GiXvibFSdmTF1Rm3FHxJkEaK86ThiPhBx0C4gRQTS640cdQmT9Ti1WHJei4hBJJMFs2rbpzbyYMFy7KD7Yl+Ldx+4/c9zc5JLY537xoxOq6Ogeujt5pUsRHu+l7vIimBc01nNJWGT540DQQXWS5V+8BMq9EhqhSDo0imyLJe230bCULvRNtclwNJmob4rugumIq/ws0SlMAgHWYzRrD2KUVrM1HIUAc8dielGamIp7TIUirvTm+45BNzfYC04Hwhopp8zUg3dCu0BkpW+3OsZ/P+epT1tV/jmOTr1rF92E/Zzftb7qS+/PJLfvjDH/IH/+Af5O/8nb/D69ev+R//x/+R58+fr6/5S3/pL/FX/spf4Zd/+Zf53ve+x5/5M3+GX/iFX+Dv/b2/xzRNP/0f6+f4JM3cZ076wxPn3r33zpPvWVN9C3rvGYbEOE3c3t7y/PkLXr16xbe+9SHDMHJzc82QBq5vrvXnceDq+po0DIzjpI4DiziF7WfQWlRVdYZqVPJqomQueo0qUyTEYZ2OC+BNLSI4bUxtuVCdo1pkrlRfqPlMfnzHpVXe/uQ3SMPE48Mjy+mRGBMpCi5EGEUHR4ZMszl31GYiqgttPoNUFleoNO2RyZlWK/PpUbOey+MqSiu+rcahE1mcKcqr71cD7QctALsx4qKD4GimD5dzZa6NGBrBBXwT6lLIl0Jd6gqT6B+xMRO2cVUEFSqN0rSu0lxETDRzBZjsOpWmk3ZFCqonJwQfcSGaKK5BM7VstaRuDk0TcFXN9xAxqoXX61oqDJOjiGc6Rq5uRloTXLPhj81DC7TauJxnhUJr3QlvuqdGwfUV6nY/PwVl1jzCUolcC3POXJaZ83KmhsTgJoIz9Q7ZKW1jNqXDV87t1nDfbJ3Ir5OJHeDqoo62LNSScW5hXma8r0SrFfeRNT1rbLJBrGvG0w1eH8chfdZXf4+xzMyK2qDn7ex3BnGFnkQs0BfEpvrWAiV3e+C2C+c6AcYacUuhGrOxq+P3XdwhtT1BptfRnGvGyPU4Ch1g7R1RmkU1I0H0+6ydjIIj2nn0CoOjbZkUOycnuxh8PXWDMKUhTbM7RFjKhUs+c1lO5DKbIEFlqw++t8y+wiTtf7MvkP0b9NqvpLOe2m8f9t7n22v9PyHtvr/4F/8i3/3ud/nrf/2vr89973vfW38WEf7yX/7L/Ok//af5l//lfxmAv/E3/gYffvghf/tv/23+yB/5Iz/131LdPTUKHRfteg27V+3+L0/TTLeTNunHZ9+HYeD27o5nz57x/R/8gI8//pif+7nv8YPf+TtIw8B0GE0iKZoskicO0QxWH8OsMkadrQMCRWhzoZXK8nCinM6UMnO5PCA0wnzBRc/x9pbrmxtcCKt5TWFkGo4MYaJdMsvDCcZB+zMcOFdwrlHuP+F8ueexwSd/97+jNRiub0nHG4ZxxF/uSENieHGNGw+EIPihIrUxz2dyfqCeHilvlJZ+Xk4sdVaWXb5Aq/h8hpZJURgHWc9bacuyOo8opgzjnc7YGSLp2REZIi4FSCrXk0c1mvenM2/fzRxiYjwWXIPLmxOnzy9ILlCLKTmrUgcBWsg072gBCNpfU5ZHnI/4NOF8IgDBxGVLUfr5nBfmPFs96RbvA1O6ZUzXLHXmnXyB1JlaF81MRFWgcY6YPHHQgvYwKdmFIOArzmd8PCvM4htpDky3V1y/VGM0hWuCH8iXRj435nnh008+53Ke1VlZc/IOXOH9ja4ah9tvepKzBqeiNc+H8xlVay8MUZjSwOub1xyHI1IDrWow1YLbGF3Bm703J2pZjxrJqrvMZcRlEE+rM85FfLzCuYllnjnNDecC4xAZQmDOOmK+2nyp2n+u2XhOqjKvsKBHWqBJoBGscb7QmqM2RxOPd0IM0pWC1gCrOyq/2lKdBKw7MBCC43RqjMkxHRzToZtAdUwpRa6uPKWawLBBaUWqzVWzV4dICEegIW5GQeTM3GFtZ2xAlKyj/MCqzigkQoirZJRzDgkDeGVgTj4BUJeZVnUPtFIN4rP5bG1fS2Q3zgMLGPTYZ8uIL8uJz97+mMvyyMPyjlzOymYVDR7WgB23Znx0CroFPD1W0cR2c+46n8oapW3My7py90BS/8/p9/rVkeZf+/gtd1L/6X/6n/ILv/AL/Kv/6r/Kf/Ff/Bd8+9vf5t/5d/4d/s1/898E4B/8g3/Aj3/8Y/7QH/pD63vu7u74F/6Ff4H/8r/8L7/WSc3zzDzP67/fvXsH7FCPffTHPqLce/MtkXI759Qpn+8/dFRGJKWB4/HI1fU1N7e3PH/+jJgSwzTgQ1jxX5Ud2dJdbRJVumqn0Wo012jWuFdzpuai/UlZVcPFCa5564HS+Kr26AhVDwg+aHd/LtQQKKXhvRBCwSO0cqHURlkK918+UEvjmF9zFIE6UkaHqwN1EdXaq1ocpjVqVWJGyReWy0lljOYH5jwjNVPzDFJJ9YyXjB8Tqv4JnWbbISmHOi7vxGALB8njDwkZk94zy6Ca196Z0lSXLwGSLYNZKnVp0Dv86U5QMxicMtXEqaFtaLaqjadWUsEyA9FYeFWdENFeODfhfSL4K4K/IUjE+XvLsnQ8gb63R4vKxFJdQ733LorN7Wq4WLQXblBHLd5DGHAucExHkh9ZhsolVHzQrL1kFSfeuBSrC1o3vvTLvEEFTyNfeRppl1KYs2NeFs7zCaRRWja1910mJWbk+meboF83zGJ9MXvadP9305n2K7EHD01UNd6TIEVVcWjNMiiTMerDBMUa8cXy3d217gP2mvSWATPLlkmtSd6aSO0zTf13s5Sj6f+oVZShO7B+fj9t5/1aE9YJC84+Q1sy+jrSTCqirQ4dKWmWtTlbcY6mgmSWyXfqfwPfrGFX752LXnujfLAxOWLXY7v/2/np94767B/SnQmqJFKaslbncmbOZxWXNuHk1rpixuag+n+4p5+9xvW7pHp9ibgdYcPWqttdU/thVdW3ZuevMbtf+/gtd1K/8iu/wi/90i/xJ/7En+A/+A/+A/6b/+a/4Y//8T/OMAz8sT/2x/jxj38MwIcffvjkfR9++OH6u/cf/9F/9B/x5/7cn/vK83kW6qJDD1t96rR2a/TpzbQru/lwefoaM7ZLWWwmlPA//cr/xJu3b3jz9ks+f/Pp6qRCCAxpYBgGYkxcX9+YTt0+9e3fVbuu5Up5nJFSVWF5yUjL1HrSZWw1i1aLKpWHgAzJpntqo24aB1pt5NkwC1ERyHFquCioxHLGhcowQg3C8vAFl/t3hOB5O4744BmvR4ZjAvE4w/tqviibrmT8fEGaCtrWfpFNMLOZKnuunnkRgocUzXB0WMQ5XHTa7zQEZLDMKXkdh+3UcVXXuNSZBgwp8OLmhliFel6ouSKlGinAIy4gHtKVJzhPuvYwOmRw1KjZVIwDMd3ifWJIN3g/EJy+3nmPvxm0nyxMuDgqNTdrdrVcHnhY3rC0C2c5UVjI3tHisEFODjt+wQXBx6YGLXqd5iGZkh8p1XG5ZC6XSs6Fecl4FwlDoIUMLTAMSue6vk2EoeJSQfysxrMqPFBrn72zBWH7UKz2ZdwDYrXqSqmulVAcp3zh3cWR28JdvSVJIjAQbE6YW3un+q5wRhvD+u16QyeonGgxx61RO1RO92+ZTw0/HAjXDRci5Sy4Eyo9ZQ2+uS4qLiyZ0mYNGpoa5FoVqq3tQpfhUSmrZg5FN3oahOOVozUVBhdx5EWdjzbnd1dttbcuGusV3ZgzhAKlapBEEFXN96q6IDR8ELxvzPXCF49fEP3AMdwQ06AEIK8Uc2kmN9UqS804MM0+a4j1gmAqEi6YzBdb/PEkFc6UWhSFWWZaydbDZa+zoE6D3n59FmXt1UKujdIac5upCOfyyKU+cskn7pcvmfOJXLWH0Ykehji/NdaKNYXLpgkpHaICgjRjvgq9RSd4RRJC0Facfbak5+ffs4VWM6MBP/mKXX//8VvupFpr/L7f9/v4C3/hLwDwz/1z/xx/9+/+Xf7j//g/5o/9sT/2f+gz/9Sf+lP8iT/xJ9Z/v3v3ju9+97saDWVoRenK3ccAT5GSJ5CePP29dE9vkYktnJwzD4/35LLwD/6XX+HTz37Cp1/8hB99+iNiCoyTipYepyNXxyum8cDrD77FOE6EENZx28nmRHnbJG0pLPdnpNqYjKY6eA5l92kkDvP5zP2bt6bCcMQNA9fHI89ubxiGpLN4FoWFpHlicsSkjX3iqtKLQyONgg9w//mX3H/5qM2L1jMVkiMEwAdc0DlS0bKD5B1TDCsdvRNoV9mxEMB7cgO/QPAqARPNePfshhRwXqeTylVCgofUGUu6iAvCuS40gWM6cOtH6nlhefuOthQkW5MiHkGVvNMx4AZHunLqpKKjRiA4fBzw8YYQBob4jOBHVbt2QogDh9sXxDRxuH7F4eY1OWfeffkZy3Lm08//Pg+n36DIzMyF4jIlQGuDZV5ZM+JOFfZCWJ2UUZxrptQTOQvzZeFyLuSlMs+Z4CKxJiRWYhwZ0gTOcbxNxFEQt1DEazyQtd+HXGilrfWafe1lg/e2r1X6DTXIucJlEe4vlSKZczkzycgARJcwCVQaO0flQKQblz4AsGFmjda8An+m1ycNlvoWqWfi1TWHQ8S5RJ4Xai7rhyoEnrXHjUxjQRBF6oBqjL8qs9WrhE5F19pZRZwQkzDRZY7cOhalicZStQki3Rg6cA3nC85DaY65QCyO0rTByIXWy0PWPqAkIOeFpV748vFLhjiRbg7ENOpIDR8R8biqs7FqU6erwq4WCOtyJfimdUAH4tvGouzcFXNSrVVKqfp52eA+p/PC+ow4zfj0viAK5dZWzElVSq1cyoUshcfylsfyljmfNfgqFxUstnsd9AavWU5rjUJVZY5SybU7qe50LIt1KLxt2ZP3nhgiQ5y2a74GP70fcBe4O8dTiv5v/vgtd1IfffQRv+f3/J4nz/3u3/27+U/+k/8EgG9961sAfPLJJ3z00Ufraz755BP+2X/2n/3azxzHkXEcv/oL62NYKZ3wfs8uAPvMsqfiwIqdGP9rTU87bFVbpZTM6fSokVXUiCvGoJNxY+AwThymA+M4cV5mxvFgSslHQvCkIaEjAQzGKZV2npEqRDFJFVcJzii4ztJupxtEWkPyAjRqdJQlKOQGOBOP7cPDcja4pN9V6fCFI42J6TAqBFl084fQMWS3VmnV9xiEtVLzV/xlx5rSjaZipbp2WzSj6dVg43UAmwseGSMuaYNhMZipiM6iaTii0zqImytlntVJnRfqUrYG6qZkBJwQ0eyN6PApEpInTkfCmBiGOw7jnWZSYcK7tBIcQhoYh1viMBHTER8GXKmUtpDrWY2jy0ZPNxmf1szoCdWMoc/9AjuCBQeuqrFZinBZoBRhyQtLrjo6o2nDdikqp6P1gEIplSYzzRUIlZD0+jesKdV09RRGZrsXe8igL+s9dsX2XYAqQmmVx/mEP3kmyRTRSa1xmLYG1367xcA11+tVGyVcXA8YNsPVJ+qWOnOZH6AGyrKYdqRTthliNcGKuErFSBc236g2haBzy1RTQFG6eie9bBJS3tafRzd4SI3YdP270Lf5RgUXM5YijqLlTVWh8Brk9Ay1k3OUnKuq4XO50KTxeHlHqZnooyqu0JB2AgquqJSTlnLWyo6tPU8IEe8DPgSbjuu7t7FjVR0/VTxXB7ROZ3DrYHo6bK3Q2+YM9BapduKcH5nLwqWemJuOkWmm8IJzW4+eLROPsVWxtggrTzhRIVk1lc5QIvR7sEZqq0crOmFz6dZMapel7w0yrst0/CMfv+VO6oc//CH/w//wPzx57u///b/Pz/7szwJKovjWt77Ff/6f/+erU3r37h3/1X/1X/Fv/9v/9j/W32oF9fBGM3UGmD45dffk29c+uSdarEZbhGVZKCVTPv0RIXh+9Gli+FXVKJuOIzHqiPeQAimO3N68ZkgHPvzgZ/jg9ceEEBnGwRZo0gwLIYlGWWOMJB+IXhhjwzsY8KoK5BvRVWiQTzPNeWIZGdoj88PnOBxxPFJzYbksOO+oooPJhkEYxkYMjkOKRO+4cYHj8YpaG8tlobVOdnA8aS50mM6dzmlbp4cI2s+VdaGrHp1oL0d1tKCyQOKdzg+aAi4G/NWkBIkx4sZIlsalZHJtnFrmLIUpJF4erkkELiclSeRT5uGzR2pu1IvQskbZuTYIcKCSIqQxkW4mhnHi+fOf5TA9Z0hHpnSLwxmBBVxIuKCj5K9vv02ariAFiJGWzzwuX3A6f8G5fknxDxQpNNGm45wr86zKEcUIBLkKPggxOS5F6wu9frMUOM9CrcLpVFhy02jdxEdPrWhh3TZ2n5bbEPzQmK49Uh1t0VEaLjbc7E2WS3Q0fQVp1pzrFTtSGRoBp6NfutGBQBOVS5Is/MaXnxDffcZVOHIbbxjiyMu7V0zjQe2ijb1vPYd2HvFRPVd1dv8HmgdxqvohToOfJpm6zLx7+6DkxbrQ7HxjUEJAqRoAaFO19kzl2qhNnVGrmlEs+UypxcgWe3adOsYQt2REBHxopNHYhwbhKwnDU4snLwnEUbLQigZpl7NKJoWgKIJO6lEWqXfal5XLzGnRzsDz+Z06KJeIIeEdpKAzsgbvGJwn4HHodGwd8zNo79jhSPA6+y34aFmI4X7dOdUCZTFofQYpYO0BjZ5Eq71rRQMVL8oW9eGCT4VWz3z57kc8nB+Y/cziNCutUpTCjhB6VGPZTVeG17JJpDWIeUEk7309KWnQu8W1Vk/zHj8kwuFgdSm3ZU+usza3euMaUP0Uj99yJ/Xv/Xv/Hr//9/9+/sJf+Av8a//av8Z//V//1/zVv/pX+at/9a8CelL/7r/77/Ln//yf5wc/+MFKQf/444/5V/6Vf+Uf7481gza6MV0fPTJR/O+r3P73H7s8yyIDaWIpPMxLU4NeZs6zGuOljCaoqWOVYxyZFyGlA8NwzTReE2JkWLT+E8NIiImAYAxsWhuoIZK6eKR3ChN4jXQaCsu1pgreNUPJjpJnDUR8oKKq24hA9hrFecv68DDo4gvRRnWUZpCfrFGRWFSvTkqJs05EVcTXK2QBQC98uK4F1qM5VoNG8BDUSdHn26QIMUKrtFpMsVm0TwnRY8NBrpTLQp4zea6U3KzmqJBOscZD3bB6r3wM+JgY0hXTeEMKB8Z4AFDoRBrOJ/ADIQz4MOB90syi6OiPOZ+ZlxNLuVBapjTNfvZfTYTa4ScEb3UfZ5pnXYV/KcK8aL9YLpVSRdUnBBxVG1pdUdildQkct2ZGPljkatKIW8YLvuN7oo3FPfPfowCbg1qfpJv4Ko3LMut6jo4kkUYj15nUosHHljXtlLNljfZVQkMMxpGeVTlQvT3NfHLJKtDRdEaU9xEdPe+ozcR9aZax6nWqTddmtfXZmsJeq7LIuhI3jHNfoPdoE/rmzDaHDo5WnNWq7PmmDqpVtyNrmDsQWe2BZnqFaqMpggtEF0l+UBp8VIPtbZSHZ3Mm2Cw65/2WRVmAYjjftsM6UmEz7TZGyHskiR1BrN+TjqBpbamS68KcL2S/kENG6E3Te5vX2XbsCGCs5QlvELtz2JqyFhIjLHmbINkDtJ5RbQfD+n3N+tYMkH9ymdQ//8//8/ytv/W3+FN/6k/xi7/4i3zve9/jL//lv8wf/aN/dH3Nv//v//s8Pj7yb/1b/xZv3rzhD/yBP8B/9p/9Z/94PVJAvqyiDRpVrj00CoPRYTN4UpbaNjA8decaha6Lx283rWPBoAspl0xtXkcqizZPLqVouhsK5/yGGBOHw7VlVFcM6aD0aVHK+GEcGWLkMA08v70ixUgOI4OPuuGKbhil6TZKO5PzPe/evYFQma4irWUup4I0yE3AO5ZFmGdI0eNFSDEQUcUKCUIYvDog1zdzW9eLnb0qNXXcR6fG4ULDWj51+rDTkdNpCvjoiXcjYQz4QyRcDeqsDgNEr6OtbbXFIeEkkGTgVrSA7U6ZvAinN2fuvzyRZ+E0Qy1+hWYIAkNTRtTk8ZMqTkxxYogTo58Y3EgrwuP8iHOONA742K0I5Lrw6We/TnWeLx/e8uXDGy6XB37yxT/gMj9wWb7kkt8YtKjGMhcVjV0zSCcGi6reWToby9AuXm3CUlVeqBSHVGfXWHeozhDDcFJ1BLWZrl8NiP0sriBeCEkYnenLGdGidB6LiFGsRQ3EqgDu1xEiOmxR51x5gS7I/FAvLBRSTeQ3lSmMjPHAlI6a+aSDZmkNOr1R4fTOxIusFsg3GFCWI01VEGg2i0uQtlCLwtQ6O8zgPbFzKEUzKYM0O8zalTia9EbTbfNai+uToHxl0bqKQ9ECoqOlRgxVDaV9fhxUcaI2FZ/V2pY5SIPDFMLSwFT/pqfhqE7wKPs0a3JP816zJz8wpmuGMDIOV6Rh0qwrBJwPqzNAtIEdoBaDNFulmp5hNeesDhi71qzGv9eIvAQQRwyRFAcldgRVYte1pY31JZuALlreCMEzDDr3yvdj6gKzXhjHQIxeGbMG4Q3JacDruj4j5KqBRS6CXyp9isTqCC1Li0H/VvBB23fs3P9Rj/9TFCf+8B/+w/zhP/yHf9PfO+f4xV/8RX7xF3/x/6+/k2c1pgq1mpPqXtoW80oHdZYA/EOSqie/cxYVYHiC9QJoEVcjdG+aeooWZ07tAcXmZ87zG1IauLp6ps5qesY4Xlsjb92c1JC4ub4iTDBKWllqropFzYKUBaQo7HQpnB7vcb4xTJH57GgGhxTRTRtyY5mFYfCM0dOGhkRdtHjw0a0d5TriXP+O5V5dB3ON5sQMjnOiaskOUgya+Q2BMEX8EAjXE36K+OOAuxo0XRyiRuRBF744R0T5YQOJgUg9ZeYv31FPmcu7C49vL5TiucwKOyxFDb8yr4SQgAH84IgpqDEIkypouIG5LpzPFy3mjrphxSsEVmrmi3dvueTMr33ya/xvP/415nLh7ePn5DqzlDO5dkHOThlJaAVclF7uVNAzePBBmWbObaSXTjHQoFgZek/FZra+FMz51KqNq9IcyjgRhKJGKFrDME6PQ9T5aU2lcVkUvtW5GgZ/1x5gWU2mG39sSYuQ68JDO6tQ8JIZXeL6cMvdUQghcQhR3dATeKZnVx7MOKqMktZQXQTXCr7Y1NqV+FBMg7Gta23re9Jm39ad1PrV1q+9wOmmgffUUfU9rPUUXa/eqN4ijhaqOleDNGOyhmJzUrU7Kcu0ekOzCx4fw1qP683B1TTxvIhq/jFo5hQiw3DFGCeGNBHjYJqGWpPakB29bn0IYa2WozttRen3y6Fxgt/BZ132CDSfBe3dilF7sNQhqkZhh1DLos6q0xVidAxDNDFtdfDeNdUKbYJPgZQc4gIVhSeHpNColjC8ZsFngxOrkLNqNLaV0WMOzel+DSEQ/MAQBlz4J+ik/i979H0OK+7Zkx6RNfFZHdXuiV081p3Z7s09Y2KXRfVXu90SM5y1M4v0myOXwnk+K9UTrdHMS2EYHnWh2wiNyzgxpEQuZ2LUYYWXfGEaR2IMTGPCIbR8QdpCdI3BVea84KMyDOdxZhijLvDSo1AdJ10KXOamddgBnbTJ/nR6NsW67Xf7QEc69LQ8qXFWsUtHSsZgHALhoI254TioisSoEN/awOu2rhoRWa//pgJdcVVwFaQ6alGDkW1cQhXtownBEaZASFC8YxbH20uhfvFAjJk35x8xDA82KgJijMjoGZl0rlYT5lz4yZt7TvPMZ2++4Mv7t+SaebwslFopTSimCdkhuL6+tpEwgk1exwf6NIUtm8JtIqFdkd9UCywR2TAqg9F67QwbjaIBROsYFN0U9UDMmSCwIMS4U2pA+91ah258D76MZCDYeAqFaBweEc/ciqrmuwvCI9FHcnHEkNbhiOBWIyu+WfBihAm0plSN5FA6EUKUPt8b0rujc9j1FbfBedIzKNk5KTHofce+fc8xrVhIV2UQurdShl8nV1mB1ZnSgy5vPc5cHeQerslaIlpF29e9v8FXazD3lSNxCuuF+MQxiehomR7Y7h2/QukGl1LorEaxLKSTLdTkNKDTxns9WdUuSstUKdaoa72aRWiVNfvuhylNyLHSgtb3QnDrjDVEjOwVwUdCGPHOM02JGAPB+kgFGFOh1EaKI8N4tWZ5CiX6dbJEiqo+n2IkhsgyZ36axzfaSUl1axQg6MbUxtldVrxmUhtu3w2Irq/+en21MplsIVlHdG8Ydb5/8G6DNHDFHKCKanGZL8xlRll9XyjGa5GNW5eoYxwm1Qc8HPns7QuGNHB7e8thUjHbFy9eEDzUi469GFxj9EJdFtI4cPvsVmWMLrNGMOdCLo1StWdEI+1M8HB9TNSDLrwh6TUL/Tq4NVFcHVRwjhSSxu4+4dEeqGB4tItB8ekx4a4G7RG6VpKERIeYakE3TwUdE6CwlP2dprOoXK1aKytCWxx5jiwFThdlpKl0EoQxMDyL+ARzbMxV+MmbEw8/OtHE4cJvgA+8vL7ho+cvmKaR1/7CMR84zZnH88LpMvOrP/6Uh9OZL+/f8uX9W+2Tqt0f1O6q10xBCQ5sBgqF+vpomKA83jWg8R5iUEumcE61zFw/1oUeDW9redVKawVpunmlrz8siBJnDkwL7iHpbCUf1lga8FprKdi9A/w+MheoWttSxYOENOF+Xmi18facSeFE9JGr4YEYEoFIcJHgPcMwmNKKwj4qGdToc4q03qTQTzM2YTO4uFdW+ggIjdecwXnaNaMwq9apSumsv7YOJV3rMW6D/rrSgnpvCytsYCjNYZdMBVidiRx7jfCr2HWZHUvZDIOgk39bk7U/z9l1986Z8oNVId16A0G0lpPiyJAOxDAQw4BmF4ZIiNYTvfN4F+1tTVU1pFDkYuejzd8uRGIcjWTjFLYNllkhpvxRye3CXE7M5UyumdIUfVmWRi2Ny2nnpARCaLQyq6jypD17Io1mY3tiiiQ/EeJImm4IIXJzfcU0jKSYGMdRM3UbiDgME+N4xPvAaALc3mt/4lo37evdweVy4ad5fKOd1PrYkJT1Z7d7rl+etfa7vm5zXt1gyBbcWkota8D7/qMDDysSYa9vTcx7Qe3yNaUbpl6MVGprrglxwvCYSEm1+krJ+txhUILFfELqQvUOF6GVoj1YQyKlSEoaYYW5Up2ziLEPaRSdq1Oabjqjl+vYGiVKPE1JsXPuG5l18qz3ms0453BJnZQbI36IEL1mT0kHDMrKGhTLoLRQrlVTMzjScZ2mgrRWx1khCmPkeruh4lHPGqDa+V1y491Z4c7mZkWfHFyPI7lVDucTzcPpsvBwunC6zNw/PvBwOnO6nLkssx2GGoA1krFoxlmxvIsxuB6gWH3GdfGFdY3ocTrZSClrNirdyXXm03bJV5KuZQ3bmnb7laarWWSNop1npTr3lztL15Tot9eWs6xO+s+yQnnan2REhuYovuFlJvpG8JXgKt57moPQPEG8asw5TL1CqLVQqkbwpdQ1u1IH03Xaeg7UnVQnOGh9qkrX9dsrU+z2mK1Vqzx95ZltLbvVb+zf1zPhfv0FXW+9T6vfjC2jW3PA3cPtvralLLvfu97s2yOT9e5J5x3Z/eq/E2M86hcoy3a1GetnYfewZ6Zt/bm2Sq6FXIvNWtuxJav1j9Ut+XMWuOh3b/11SpV3eGIcSXEkpokxHQgxMg0HpnEkxYFxGC1JiFavGtVJhcCYRiWReE+w+SVPIFsRVtzxH/H4Rjspty58+7el+PsUfF1O3SjsPNJawIQN9rI11bsxNGy2i7vTCNwW6J5JtV+pTxfyfo+JrdAlZ4WYaiGXBe89n7/5lOADcYhM00jwjil6kne8uLnhw+fPSc4xHY4cxiNSGuV8YVkWHSQYGr6Y8kHTuVdFhIf7zHLO+nkp4L1jiOsQXIbUMwAheLEaEjTnlMEEWtdRfjzxOOFTwg0BpgTeUbxG9KpunRW4ECV9ZArZGYOwX9bsCdlTHgqX+zP5saqQrMnD2ehDmlOH0MQzF72mi0ARxyV7cvVUEeaWKVIpX9zz7m1mGBIv395zOIzkUplzZcmVL94+MC+ZOc+02o1g6y5gu7e7TdWDjieGwpl22pq6O4vUUSexnq29zxQcGr3G59as0tsaVKKD/d0uMrE277qeQuzqqxpodABMTDXBRXOG/WA7661nDk4MQGxrkbsXvJfaQDKn8739PRU/1QxBC/9dn7HvlK+Y8nWPNfPkZnQBka1uoXUYoaFObVMj7sQQvQ9iZKMtk5LVyfQ/27e+OMGHbo03KrSziy10BqNeC4Da+lRd6Ch3bjby3gW7FY7mVP3EN6dyWnb/vbO6Vu8V7HOxnKBVoN4v5PBR60DKytMJBrkVLvlEo1DlAs4xpoEYNJNyXkkHYgMRpTVa1msmkhGp3D8+8pPPP+d0OfPu8cTjZWaetZG81Z61diaiUvDDGrRGvEscD0dev/yAIY0cxhvGdMCHREwjznuGGK2u5BUKxkSWnYoXBJOKC1SVMWueuhpIWe+XoCjPT/P4RjupNW9dH273k6yR6pPI1QzKXvl8Xfy28cTeu1JJd1+aYcmTjGt1VMK6MZ6GtduhSk+9nPaLUGHJC5dZU181lkKfsRO859n1NYdxIL96zdU0cUgD19MVh5go5xPzcSQEOJ/9mg2IUwbYMqOY9FKZaUTnyCmqsxo8KTlStOECXovALiiUpb1UrBtUHDqgMOqI+jAMmjkNWyd9RaiiYw6aVHLTJkJ1UroouyhFWiIyR9q5sJwW8rlSFhu61zblGMXmdavnqg2hl6p09Ll4SvMUES5lIbfG6XTm88uJGD1vLyemaVizslobp0s24d99T02zVWPGdT9ioBmM5CyadXqf9rBvv9fOa6+NBsGONUdyAdcSoPUa0WTVmqZVscPby5Uk0S3ve8t9l+XJusa7YZdtLYbuTIU+zqZTs5vYWa7KrN2hubWGVKtwuczUIlY3MtqGZSKdJr1n3jlrWnXOEaMprQSHD5rr+e5gViPVKMUYuV4vmjLpupeS9ZywNbM6MVkvw5Pro/5h955d8LA6OCNAbGN+1CEao1rrjChdv2LtH64HMCa0IAEv2hHlvDJnqygJRCvO3ohXoMro6uh1jQR1Ongc2mdQpbLUmUamMuOcJzmhQxnO25RDtnNoVWelNVTR/DxfePPunvOsiMFlzmTTvVQqvtUsnTopH6zR2HVB3MA0XvPBq++qks7hljEd136+7SKLOiV6ULZR4DdDZwGc1CdB/ZPl3P4JKU78X/lYAyuLKvfRZb8wawy6OidMNFLf3H3K+iFOdh+qL1uFHTf7sB1BlwDaH9hqoOwIZPc31uBcto9wfc6M9RmhFqw7qb6AvIuEMBDjxOFww9UwMN8/EoaBUNuaGUYtRJC8xvGtaTOsFI3Ug7f6UtTmvJg8aVT9v2lU1k+MnnFKCvklpeG6EPBDUqmm6YBLycYNeKsLZDQyF5O9MXaWbaRm1OsuROkbBCNJ+AquavNAtOPu2awkjyRBnGfODqlKgtChdIL3lSBNoVHnNOMLWnMppTEvmS5W2ovyvVN/Ff18Eol0Z7VFgFr4fgr6yHvfHcryUpYdrDy0NTCprIKeArTNybVmDC4PIeyyeramyXWprlX7/od3rrJnD3ZkduTbe987/hUCpAdpHV5SZymhNw43y7s6jKaGeM+uc8ZOdM4hRbbtVNtKh9elb47BMinAxmhoFtqKe3JOaqfdmilp9rJdebfequ3f263qTDi3nlvrbUhsfUMeJej4NTJVpQU1xAEvUZ20KLUdgwOxPEkzu0BMIzEOCoOtgSpr9iuoikMncnjf94vW84TKNibFvkvXbrRQQ5w6dU2/TSlEj/88Z87zwrxUlqxwn7PrGs3u6f7W2V3TpNMcjocrpmni6nCl42p09o0dtzGnzS6uzsjtg5+ND/B0X+0W25PH+xHGb/74hjsp6wHpPsdv7DH9vawRcTeOq3I2+8Wtr16vW6ftGBtrHQC8d1K+s42+jmfkjWFmL97vmh0+0Q2Yd0pUoEcl2wxqvPMEN+BIBD9qw+p05O75a+4OV+TzzLvPP6U1sd4ldTx+sC7164QgzCfHcuoRqUJEaUiMh8gweK5uB2J0HI+RcfTElJiujkpbTwPEgHhVaMB5mo9mRS2qpoGcQLI13RaDLjIN1YwrbcF7xxgDAUesibg42gJ+AZ+FAeEQlb4QxK79EGgpUBycLwryFvS785UYMx5IFRCvLO1Bb+ycC7kU63nzxnzsm6gbWlizItnRme1O+TX70IZoZNtfTxMdNT6Cshq3AAjUeXf9ve2yiRWy13jT2YwvtzmnYEZFA6y+vtvur29B195B9T2wnUl/pRkX2fIU6WveqO7BOVJSgkiRSjNqcYebFFPU4KRDcvsYbC12dcfS9x9ggk/0fi69FkqXXFmQTjN65xsxwpAMNu1sRa/XygE+tG0p9iPogYiJwOreCjhnMGLrMKVG880Yc15Us1yP2xFdwLeIR6f1NpkRqg1v1JypGlmCkJiON4zxSHARJ1u1sNffEGg2pj34RkqOhk77LfWs6zAEVKdSe7I0rdNG6GbqOt7YeM47DRYdLAJvH0+c5gv3p4UlZ6LzJOfVSSlD3hwUDClye31NSom7mxdcH28ZhwNDHPFEPVYbPdLWAMH1SEivtXOWNfXn+qu2rG9zRTsbKEB7z5H9Jo9vtJOi1wLYnMCK4rnt4ugmcdsmWfFy3gsvO4xnm9r1i254vcF866v3lOL9YdF90YbB/mYxg9sdqB5bb6xTaCkEz2hK6+MwMQwjQ9LCZYiJ2L9SIsZIjIE+yRenMJI4R0tOp4DSnZQ6s5Q8aQjEFGxGUrCvpE23wSMpIUEbYiVEo8UGmjWJahSFZSusxmI1gpu90rJes2J/EdrSaFlpr1Lt2HpspsKGFtB1RYctL9jyZegRnnddIcHukRXgO2VXZHsHvP/ze07H7e5lf6Xs3rK78e87KzHj0iPLbWfaPe8GfVewFzF41YLWhn73XVnF77Kz/mnv+amvnokRab4ukt1M+nY6Fg131Yq9gIB85f37c+v3RXbnJev7NjUDM2PbSauz6tJbfc3016O/02vi1tesLSP7o3Kbi+7Z06b2oE2kzm1Bp4DVwrZL1p9367Htzlb2Z73dzzVD6lCe6yze/bXa33OrHWKEDelEB8UcRRxePNVgQKGoakGXqcKtIrEiKD3fGUzbCSeY7doF5kF7jbW/MWhDfoxKCU8xklLSGth2a1biT2eX7m73ds2c7lt5sgjf2zzbAtPPk/d+9w95fLOdVL/5bM5EN6U+rQU8vVHBdd4+K5XcbWtHP8M5K0LDulzXa20rtBd/+3vdtiGeokH6/k7U6huuH7eDnVijV5p15zP7wDCO3ByvGdPAx68/4OZ4xbdefcD3vv1dhhg5ppHgPFfHK169esl8PuJa4XI+cXo8cTo94pwQozLApujhWnW1YlTixOGQGKZETJ7pEPHRM4zqsEKKxGkE5yle22/xm1SOMvaqnaWRGwTA0/A02Sa/Ip4Bx+ACocFh9vgCyycLjz85kefG45tMzQ2ZK6kplNGiozjHOTceL+CnxHA3gIcsi9YMmlhDqKOPzugBQr8Pahia9dpYD5MZvG1D7kg4a/CzkSTYfdrT+FD2f0rXRIO2DqLcYC4zuRvdxza2k95rp1F+92vr+mzaL+YtCtZMYkf68d3qOlvPT83Fk4jtvZ+3TIrV4CBFjzuKGR/Rey8oC2x9k5jEzXaBurvaxvE9NdWr5doZu7XG1XZZFUJTmqT2fTWbAmwBegjBZnkJzusctRgjISrteRg0WAvBKznABYIfAUUU8iwUySztbGouli2Ls/ElqirTasFR8CyKeHS1Badaf/2sV9uy2hhrbsaa55xm7yJGLKoVKYV2nmmSeTh9yWW5B+dpUeG2Io6Yz3iXiH7Eu8CQjoSQEAZEBmotvH33lku+cP/4oBJsQ2Q4DLjkSE6/vEeFkD3EGFQkexi4OmgbzDh4UmgEb+l9c/q9O6nq9uZ23Sbd8uI0AF1XurNK9vsRwO7h60/npb7RTmoPtAHsbMFqIHoG5XdZVHcOuwCHHmCv2Pwu+nVr1G4OceUj797Tb4/Y79coq5pBdFu09eQAbeP1Y9KiBGkYubq64TBNfPDqA17c3vH6+UtevXhNdA6fC9TKMIxcX18zxMByuWUcVCrpdK44GyMRPNqv4ZNJoagq+HRIpCEQoidNOlU4DCpx5GNSarmzmTnsQmrMcNpVsV5JtkzKrxtSBy9BIBEJBIE0g89wfnfh8bOzqoWfrT5RG1EaBWjBU+mq4sKQAlNUKSolJwhSIBe/GsU16neoEdWbYPfCzHfoDUusUd2aU/RA5L0ofaMY77OPXThJj/D1ew9O/D546mvz6WpizYhk/2mratJ67H0gojeEu2cbnUm4Ra7m/Hb7Yf3gdZnu1uvqrHpgpt/7eHadr2S1nGobpm5/aw3i9oewhX67g3Bbo+16XNu1UbjUm+q2qmboXipIl5KyPS3NEcVDEJ1S68C5QAjabHqYdK1H05rzLpGYEPGE3IhVWJoqJTQqlQLStA7ler+QUukd6iCVwTaAD70cZJfg/QvtNue7O/cuQFxFdQprmVmWe2rNzMuJUmZFPTBI3UV8zQSfSH7B+6QNwsGwBnHUCg+PjzycH7jMs/YuiopeS1ADH2ENcLyHlHSa+JAGhhStudbhfcObhI/CsMaqlGBxhVvLGG6/v+wOrpVc2f69Pt6r5wL42r7y3Nc9vtFO6km4aJtVr2YvkrI6BXVU3Un595yUrJgr9E27NyQ9Bu6hQg87939ethvRrY7rv5HdsWgegh2H9440JI7HI8Mw8tHHP8PdsxfcXN3w+vlLpmHgg7s7rqaJm+ORZ9c3UBuXt28puQBtHQlyc3vDdBjAqbSK98I0GmsPxbmdV1KEc55h0h4rHxxhVOooySPe0/ymf9jcdqFXQ7YapzVntFco/9k5PQ4v6qiDZFKrkBv5oSKXxnIqlGziz5YNOavDiIe5CNnpEMOrELi+vuKD5x+QUtRxFsHx9vGRn3z5hlwLpzqzdO2zHgUadtbHTqysTiesAsXIyiTropndmayWqGdJTtZ7urvZ26231z51WM56XmyNOnMAJiix+n63h0vd+r1VC3I6Ec7Y7Epu6PXMfizvG4PNGW3H+XTjyO74n/yjB8+W4Gtwt69lWRa5Ywn2z1hhN3NK297aGTbbE4jbIafyxJ45NEhyFuyYbdYTl6CG0qkKefBdFsjRa4z9PkUfOA63eCIHPHXwlJa55IspZvR7qwddWuZt/ZxzO+F8A19Mrw68a2upWY9J/1HawuPlkRwyVEfy0UgatmaMiKBEKI+0Qi0XRApZysokLLWiiETA+0oKQkyDXbOAc0kJVMMBFwbubl8yTleU4LhI5lIutIfGnGciEAze72N4kjmmVdqs10/NKWldfyfsa+zWXaj1ZGn1YKv35uliWPsnni6MJz//NnBSskbM9oRjdUhaunM6jdVZM6oDZ5pT+nq3Oqkt6mHl/GgtVuEYkbZd8jU47rvVDFzfFs5wY9aYds2YnN0chQQiLgQOh5HXr15ze3PHH/gD/xI/+MHv5u7mhm+9+oDoPaFlvFRq1TEIy+XCJ4/vuNQZaDoyJIwcDq+AxuF65HAz4j0cRk8IjpIrtdQe5gCo7l4M1lej4XmXy9nGeW/0XbFjF1bAz67X5rZ0xlDC+SNQCRKAylCEsS6UufL4+SPlsXB+J0qRb45cPU0UiggRaq2cciED0/HA9XDg1YuX/OCjn+c4HXjx/DnH45H/7Se/wX//K/8/Huczn53f8Zgv5FJwZPrU2GaOyq3bzI5bxGSL+nczyN5u8A7tUxVwDWZgM35sl3O3MNUBNWf1JGdZj73Y92tpaBYYe80W1+bwFP5qaN3cOShZA54+sDJEt2ZYW3qzRWAru3R/bPsNxG4J27+esAHdNmNMBNVfFJ0DVj0qoVNXr0U3Y32QIru/r0GerNfBOUfsMCLW9SjgDPvsrDXXIm63V/XQNZDyXlX7gxdtPk3J6miyXVwaMUaeXb0ihQPh6oCvA6U2lkX14xT2jix55jyfmJcLPgd8+xKJM5JOGmBKtw226l2vH8NSLnzx8AbnPJ+5tzgcOc+UsqgGL3rOx+mKw3DAoeNw1DHPWleSwlIWBEeoBe8GpiQM4cqa6gdCmIjpimG6BQfj8RqRynh9xE+B0/xAi5nHC0+mGQS75mOKjKujUlavBh9G7qGqAoi0td61OeUebLHrQLfVpguk543bgtsvvv7dCT9tN+//PZwU3VDs8p41urR/w5OIbq07uO2d4vYXtFsj2f2zv3YzUE8s1N5Z9uPqn79/zp7vzW/jOPH82XPu7p7z8vkLXjx7we31Nbc3twQHspyhLuTcaMWtMk195feaRO9RSTbe3jtIYzANroLzZTUUgI4aib13Yx/NshoEkS170FPU/7oOX7dNOxulC9X1vgqFDZw4XHOqz1eElkVVJhrrTeyXuEfKIWhda0qD0mPHiUMa9WuYOA4HrsYjN4crvPdcpOCCZ84Z5zy1NRbU4fUx2Ptb1iN56ffJKNhP7ud6z2S9gZ22/dUFsFsCuyXSWedPHu8HOj1t6R+5cyD7LGiDmNaV9CS6XeHB9yNe+Zqf33/iN1nWu6W/Habv5+XYRo/vPvuJbeooxFcNlhbm3fq9v68jHuAsY7TXsyM37V7bz33LStleT6dhR4XOGIh+IvqGN3WHMQ3EIRJQ1XcvnuN4TSmF6gMlWONsrV9dQx1+pVGaDngsdnC5zJS8qJNAyw6pJmILq1KI/r+tF9o5JS+oBJNq9nkfVmr43mE7nCk6qM7ikBK5prVJ90llwuxfH8LYe/R2l2s9nvfMJ08XEO/dy/57x9dnR9u9W/9tgf9P8/hGO6n1anZmn13Arrrb+z02Z2Qr2PfMYHNy2+V639vrBXVsbCeFcNRIrx9tbJt+WN3wdXaUygrpi7Vx1nM4XDGOB773c9/nD/2Lf4gXz1/yvZ/7Xbx+9SHRe51W2yrL+YEyn8hFZ8SUZYFYiQdU0iVHpFVKK0hrxClxGzTKWoc4loyrxc5Lo8AnMJMtYNWas94NlFpam3W623N6dfrW2o9R0GXoQ9Bjl4pkHS3OEqnnQDtX5OJgBpfBtYYXT7JLWBxkJ/hx4MNnV/iQeHn3ipvjDcera27HK1Ia0FlacHtzy+/62e+z1Myb8z2XMvPu/MgXj++Yc+bzd2+4zBdOy8xpnteF45wWyLVxdNumUpt2ysPTjbhu1L51945qv3KMbtw/tSta2Ge4J59gV8ztAyTPmq49+WRZA5uNlu6tIRNb55qaqcisCdIam66rpjgwEWI2iy7gZNVu5+se63Fb7OFcMJksCE6FYDsbThrWBIwpO9hZ2Dppovp1TaBI1WOpNuCRqLI8TuuyPgQIFedVEb7ZMWrQUekZmbfsV6So4zTpMWjraBAvgUBkigdGf6Q1qEmPKSZVUpjcyNEfqGPldroht4W358/47OHXyHXmNL8l11lJEcFCBCsvqHLEgoijSUZEpyWUWvHOMfhIwJFbJZQZBxTbh8lGWEQ/cpiUJJHCtbadxAOH8Y7gI8lHbYkoC8vlnSJD3tYzwjFN1LKoJWpN+yKD344T1lpdMOKJD0qu0h5KdXreBxsE2R1xJ0jUbQHva++2N3bmeN0f7zun/lyTvh//4Y9vvpOCLXxkc1Tr7/eR1T7U2qU160h0tkv+9DO2EHyNvt/PVB1GMNi9zW29LtZWYpGMFmdTGhjHAy9evOQH3/+dvHzxkpfPv8X18RZplVaVwVbywjKfKTWTy0wtC/im0jfR6bwmm30kNFVIDyM4g+9AiRmtk7t3KpMYHsWWUejl6Km/GtwG1pjbw1e/W56yXUOnv/M+qAYfQRsBq0OyfmGaqzRZMexggXF2KkYboufmeCSmkZc3tzy7uiNNB6Y44G0uTXMwDRMfPH9JbZXry4FLmfnydI+PgfNyYc6zGY+q8hs8NSyK8Tuw0ek6KXZbDdv20jTma5UgvuYJsc9oIn2ShelwfnV9yv49K2nDXrLP5hxWT+2D59wWDff39UbiNevTD3Hrh9nnrfJh/YM3KOtpXL2d34ZO9CZXv0JAvq32xybrsov8zIF0I9UzcNOV0wvvcNINrg4H7G0V+KIJuUkMCUqyKcYOW7MLlHHa2XQKdfb1qcfhCESfGMKgjcrmdLucT4yRgQFBuD7egBPSu8BleWDOZ5blTKWo8zddRG89QRVrYhd00rKw0sI93dg63dOtWDmhj34ZCDbBe0pXeJ8Y4g0xTKQwMtqMr2DKDyKFUgw96eoeQLKx9uo/LLCxtd6Dsx4wd4HkVcvQrlBnL64yUQ4L0mW3Zvp6skzVirB9uX4d03lzWP3rt4MskqVJ+723prXOjBEdI9+5r91e1D3X3f+Ox+dQCEy6zInBW60v+t7YsbVL4pTN1enpeqO172m02VF3t7d89zvf5TAdePbsFVdXt/zcd3+Gl89ecj1d41shX+5prdDKQq2ZPD9SlhO5ZnJZqCXTyFrwSODHCNVp02UFal0LoA2FR1ortFbsOFWCpksw6erqunK90z0QbGx1r69575RqzjbrpjYdD6A2WT+vFZWTkVZgfoC64E8z4WGmnSs1g1SN7mLQbK0z70SE3BQKrA2COCKByUW8OBWh9apk4bqWhQ3HG2JS6MM7Qopc8kL0gdPlzNvTI1eP95RSeDidKKWi472DRZuqQ1bEkQ2eamIGsbWtmTdqwzSd9LAPbWS3tCxKcbtosydfeyi6/7hBeWY57APF1pR3DhccoTdkJkeMJgDcP84GO+6ba9clv4PSpMpaHF8zxK9hX331sblsp9Z5FUHtGVQfqeGrvlrHVERc0Nlf3jumUWnP3keiT7aHE10myLtkDlf/WmlncjshVKosiDQL2Dw6eLJH8MrIE9Ol8g6CMdZaq9S6UNyFGhYao/Vf9XPamtNarztZOhzdyDE9J7qJpSx4P5rjzJstkD3tfrvnTnTYpcMr9dw1zkUzKO8c0VnjdBjwbiT5A4d0S/CJ4I94P6qunu1BkbY6f+eqXm/pEbDaG3V2qq+nvrshYmhJb6BGg/NWC4hXXWifULFYb1lXQ5mNDWcp9L7WtJLFuh2RHo7ARqJgC47YswG/oknxmz6+2U5KzQb95NdkqTumNRJwT762d2/fm0XJSh3W32i9QheT1tfF5PYtKlg3uL7eh81JqpPyOuIgeK6Pt1xf3/BzP/Nz/Ev/4r/Ei+cvef3qW9zdPWcaBu6OR5yDZX7gMj8gNVPLTKuZ+fyWPKuTmvOiEiqyIKHgBocnQfHqnJxTcdeq8E1B9b10DLe5IEvduzaZk4A3pbzeAIgLRJIa1T7Xx4RnG8KSNVQsrXApsy1SrXmVMpPLBVrGzW9xZcG/a/g3FVk8bYlQg6peRL1/K7zYGnNtSG2UCqE6BgJXLtHEU2qjOW1yxKncUmkVJ8IUVZD3OlzxKr4kl8LzqxvO84UvH+759P5LTucLv/rJj3g8neyGaXR6iNp3dlaXoKK4VispLVOqTeENiuWv6SVdNqKvkb4Qt6x7c2KdNGDBlWM1xE660+uqDn1oiBC8J4WAixAO4AKkZONABJ3FhVO5qhBMeXynmdZVNExgVOrG4HL+H1UXeA9V6N9dV9BHG0v3GZTTfi+8I/pEDEpoOB6PpJh4+eIV11c3jMPE8XirdReSZrMmrdRa4zQ/kmvmdHnL4+VzWsuUdqK1TC6RJUddO4YMSMuUrP1JzYZkpqjXqdTCUs8qBNuuaTLRlc4Bqo2beKJTKCaq6yZux9csYaY0iOVE46xfUslVqeyOAs6GPdIhxn5vK8WQiUUaNIXEh5CI3nNMI9FfMcZrroeXRJ8QNwJxzWT0wrYnLS54oUlYqeHB61iV6HVmk2pa6Vpodo6tNYODG7VkxHtIjuAGHcvjTBDANTTb8ZgglskjNat1NYtvqjnC3WrZ0fK7be5ZQU8avPttUJPa0IonIN/moJ686unPW/7Tf9oolrLfmPvPky1t3vIrtUbrf84GntlQsOPxSIyJF89ecnt7x6sXr3j+7AXP7p5zd3vLzdU10Tsc1RpOM1IXdTQt01pBmmVGNhBvzeLs4FZaffCadnulkavawj6us0jecJnVSRlcoTh+xGEZBgnQSL0hSBAkmphMXXSkgGSKOUSRglD1mEUjsBiiRvux4WOjFZVvaXsimv3Y0HJMo9PeLX4U96Q/o0tX9QmmW9ai5+B7FhyEKQ0gwjxmbvKRgOf2eIV3OlRxqY0hBJ4drxlC4lIyl5KV0j6fdbZRFSoNb3WOjWSxX02dxdnXj2wrbOeo1nesyfu2s1dIpjsfrycbgyd6DxF00mzP1J6u7q88nAVQzu36k2RlKjp28KV92Pv6hD02Xs/1yXc9Q60HWV2kacDnjdU0xEnrKsPAcTwSU+IwHpnGA0M6MKaDRe4JR1Dkojlqq8RWEKdEoFQGVWeoUZ2QaD+d9ADKqoCreoV5/Z5lllqpJVNc0Yxmx2ZR42r3zJyU7E8RtF4UIkOczC3aRGHROnD1OqbdSbX3bWtgBSv67VgvoDeHENW5+IR3Wo/b5JVhhclELBvaWyqDMkWviZ5bXUsNgKXWbs3MWbM/Ry8y6hDN90aLSN+VbCfgtG/DrRenv0bWI32CXrn13evprMnEP3Txbo9vtJMCOpy+ZVL9Sfu+z6TWx/tw3/Zp9OBWYB171J/zYVMDrlYk9l0Ze/d5h+nIdDhwd3vHz//897m+vubbH32b168/4OWLl/zge7+D4/HIYUwMQ6DmM/PprWZIlj3pRM26whS1FWrVL035xch9DoKm9cOUqC2w+EpxlSqFXKpGlbaeFLJUGCtbdBd94BAHgo8MbiT5iJNAaJr6+yHpCPboaIOjSuWNf8t5uXDKn3N/+lKH3ckDjcwQPEP0DHHg1d0zxhDxU8NPjcvbCz/+9FOWy2JqAapbd5FGQbgEz4InxAHnEl4SLntkVuMdBw+Dw8WCeLHBi16zBVNEd8UyEHFcDRNjiBzSwIvjNUvNvHr2nHNe+PVPPuHXf/wJL69u+OHv+n/y8uYZsxNmhLcP9/zPv/oPeDid+OTLL/mi3aO2QwuLwRV8MMzTtACr8zTnqFXn+jgR7fbv0El3DNYnwzqeoi9eIXotbHvviKkXxAMBT3ON4mbL7t/bBLCDogXnFG/zPbjyHu+jFvPJGpqss6ZkNcx0o7fbKG5nXbpzVOfQ8N6TUi/0j0Q/4AkEJryLTPFKZxLFgcN4IITI4XDDkCaFtBj13kmwtgfT1ROnChEx6tqXQm0LPkOVRZta60xrlVwXNdClC9Yq+QUHpTR8aEideefvmVLl4O6YfNHrIlaLbHVlrHYEsNqZC40hOmIcSPGVOYNFEYM288Z/xlwvuHI25ZMCkpHatkGTAmKirR5PIDGExPVwTQqRq/GG43DNECZaRzXEVJd5r17oVEmnBwfVRgif5zPvzm84L484X0gJK4yJEZysS7MtlMVBjIyDOsghjkzDgZVwImgG1jW6vBImxAY9ihEt1PhqZu6MMeScJ/o+jmS3ftY1ZW7a/XSA3zfcSZnlNTe9em/77dd67B69sqtlrW5+k7zZyBS2Ud1WdARWvkGniIJGMs5BSonDeODm+paPPvyIu7tn/Mx3f5aPvvURN9c3PH/2nHEYiEG0MbA0ajlRa0Zqz56s/lVtEJrBdR222059gzF9NIZUDEgMVph2T5UL6A62kaVRrLgiNoQo+FElWJrWpJzzpDARhkSLDhk9pVXSUsnNA+/IWSewqpjsgneJEaXMHqZrjmnE54bPFTdHnHyudZF+KR1khOKgOG1ibF5p7M4FEG+6ftpMSQDpMJX3OLo4qRJavGMttySvNacUAsc0KLNqHLiUzP39Az92jkMa+M6L13z04gPmAIuHz958yZsvvyTiuX88c+/PNl8LnFcYx8u29lRuyVuWolOGxZZVh6B5/6sbg/3rbFRFCJ5h0vYBLx6P9pFJ1Q61jVnl1vuKbI5qW8vb+vU+IKJjFsTo9n1AZn//uldk++z+0FPd9oVVn7QG4gNDGnQ4nksMXtW0p3TNECdiSIzDgeADKR2JcUDZENGyT7/+WbHo3Llo9cKBGEacc9Q2IE0I6Pj62hyVYg2nHjGn0//XlIpLcpU5LzgJ2pLQFEHw/bpJr0FaTeq9hNLbOI4hHABnWdnIXC+cyiNVhOCL9XaZUxJ1cCuSIRvRIrhAdJEUBoaQSEEHDHqXsHZ/ek9iP5fNTjnr09qyX63TFeY8k+sCrm2ZVP8My7i6nqUyL92qaxh81M/s7Q8i6pR63+B6YTeyVU8314zc/t2JF/u88f2H/7onv+bxjXZST2G5r26qtQfD/tvDMxtRYnu/W5/RBsG2fmbvyhdqEVNtGJRGPl1zOFyxwSKOV69eKVPv5St+5+/43dzd3fHh6w94/vw50zAypqgBuShe7JrGbB6vY8wLNl5Dp5pKFiggRaMidT7qrGrToYkiYllTIzdZy52YAxXpXxg2rtKaRdRRZiXDUm2QnxbFNUt01pEew0AYj8qQHg7ctMJ49YzheKeRLmfEFeq8UC4z1IVPfvwFrs5MZ2E6C8uDDiaU4KhBkAiXJnxehEWES3QsIXA1Hnj98gVXw8Q0jEgEGZpSkfH4KvjiDZ5pVsdQjUEnvVapMKqHVXQzOM8xDuq8mqjO4XRmbpUsjblkzlLwrvGd1x/w6vaWYRi4ORwpXph9pUrj4f5LzudHTbFjh4oyiBCcMClSSrAC/r6nbK+W09VPfDA9uBQZohINfDAKVlMIS5zDBZ3j0w2TIjAW74v18qzZkKO3VtYGrWj3TrWx6NJYg67VyX3dXlqzLWvetf3hCYx+5GZ6xhBHrg53HKdrgkukoGy06Ke1zhF80swwDBpYGLQku33Yg3PVSNFrE10ihQnvAq3NawTepFnrhNY3N8REMzPwCp8DOTfO80yrjssyswyZ4JTSrcfQ7+E2gkPr0xqIeI091H2IQ2hK/yYxDde4kAhhJPmJpczUueFkZnGZEjKI0yZlcRzSyPV0yxhH7g63xBA5pMPaB1UNZrO5iJvDlC0LF0wRRpQtKAiXfOLh8oalXChlUci9z/pyquGnzdHVnCp4H/EuIlKp5aLICXG7/96tDb39OqzB/+qAelf61vqzLZ/9WnrP8/+Uj2+0k9IduksfeS9rojsy3cQ98PWiL1xT6DUi7gzep/3SzQqHremI5hAih2kgpoFndy948eIDek3K+8B3v/sdPv74Y16/fsU/80//M9zd3XJ9fcXxcEBTdys01gptAak6HkA8FIcsagxqtgxqEVX5KSBZjVMr6sCyQUtNhFyrfW/mpDy4YIwvc2qCiWk2slNHlV0jo5u50lYBVo9N3FybhEemwx0uRq7TACHwfH7kxeuf08/3Smb44tMv+MmPf8L54TN+/df+Z073P+aZeJ6Joy2OIgmCp8ZGicJjgZ+UxrkZpTYkwnjkww9eczsdiKJzmCQ1cMpQjDUQiqeJo0oAMW05iUYCCWr+JBgcrPFpcI6bNCk1vAoP9w88TtfMtTIjnPPMKZ+IPvBzH3+EE8fN8YqXN7csUrlvmbkU/pc5c39/hiT4qOuw5QVaJXpPisaWtAGHzUG16NPJvu/OGbQXTbImMQzJHNi22Xti49FIvVVT0ujSTiJUy8Jha6YWK2Dp2lV1hdbZaE57Zfpj3UVdHHQXifcMo1a9F0MYSD4xhQPPp5eM45Hnt6+4uX6uhfuotSZpAVmFY3tA76xM4p6EhghraKE+Vg1yCqOuXZ9pbdFsRcSURDzezYh4Niq6ZmjrXDNpLK3xyJkchfPxwjzOpADRj2odejZl4+57UNezAumDKHuR14o+wScO/pYklSkv5LhwmU/M7gLiKKHR/KIwWNN88TgceXV8zphGbg93xBCNwRdo4shSFRa0taE+y7Iea/BtRCNCyEqUuSyPvDt9TmkLpancktYe9bqOprTTnA6cVFQg4n2itUopZ5Vs8oPeG7F7Z4oT+kF2nW2t7O4e6wDEdS39H3NK7z++0U6qD5BTm/qet179jxqFTU1hl8paFovbXk+PBHbxnbfNJDhreLMep2Hk+vqW589eEoIWVoMPvHz5mufPnnN7c8dhnLSb3TmcTVuTljUKLgvSMi0XpDSVl6maYlPFFBlkpfau9LG2z4y2rya9yZEnTna9XiuQ0jFqG0gohSwL0hqLuxDwiNeosG/83qEeglcWWYq4EKkykZtGcn5wOO9oOVJmz3lI5Lc/w2WcOOaF47JQfGV2C42Gi5F08ISl0s6iYwaqRqsiMA0Dh2mk5QWpBWe9MuCgKsy3h6A099U+mf4MlqPa9KmtRglcHa54/fIVz549w8fQc5D1OmGfnVLgeBhJIjhG5lK4mo5Mw5HmM0VmXYfSDYmqZTig2YwzHclg0WbvdQre6NNurUN5796LRM1FuN2RiVKae6NmCoOu1U4GcBacCOTSdAKuFHLN23phV1hnC+565oDr/b8W4FnkrJRxOAxHpnTkMF5xGG+YhgNjOpLCiHdGLXcW8Rus2SxQrLLbo27/Q8cx+j+7Eex9d43gI0Il+KjG2jU21+Ys+OzOz5CUpuum1kZxlaUoSxbxTHFTGXlaizMyhjnz9bL0uFhgnWeF1z4/H2leyUIpJmpLLC6sptw7zQ6jD6rYHsIWiKzXfzsQ2+p0Q9V/19l9PfuttVrNuq7BaL/Pe6u4NlM3MVMj9j5PbZnaIrhGcwovdzvi3HZ33JN/f93DqBPSf9r+/lde+RWSztc/vtFOSlklfaeJ/tzhV8N/dXFpnirOIvXm13LAnnili9DZXfAE5xDXpVMdQTwtBMZx5MXzl1wdr/n+P/U7+Z2/459mGEdub24ZUuLm5prr6yPHaeT59TVDjPhloc5nFZWs2mBaso4CkFIpS0Zao83671YrLReNxBeLmIvoV1PyQ59Bo308TetCliXtzW1DHYB+NYPmKkUWcsvk5lnaIw7PJTww+JHr+JI43TGExJAiIQXSEJgmVUkPY8KFyDgOXB3VyF/d3ZHGgfPHFx5//kydz8y/9/9Fvdxz+vGvcvrR/8qbzz7n73723/F4esv17S3HD19QHxfc8pZ6zuRLps4n6l3j+bNbXtze8nj/lvP5BFFo0YZznydcmXBxwY8X3bg+4yzTElFBToUuRO//ip3oZ/zgn/p5Xn3nI4Y4cri5ZpZK7ZEzjVM54YDxEHk9PMOFiB8nZTNmiBx4vNzz+f2PKC0rXGMBzOGgY1G0hqhDIJeimUyIfcR6J0coWUIdqBouodcNVECVoASYVhTaHfxICgPH4ZpX199iiCPH8Y5pOGIfSKmFX/vk13jz7g33D/fcnz5T4k13QsrAXx29GqCuRCKmbmF7xAkxRK4OV6SQeHX7Mc+vP2RMB55dvSTFgZQGYtK+J2WZaH0U1MHUbkBrUWYom+O2g9AMPrjV34qIOabRMohMaGnNwnyZmblQzWmEgDXCN8uudfIzDS6tUIrjzcM7aIGb6Y5jutGZad1u0AO9DT7F6nwex9g8wWjylAYe0pj0WkbLPn3j5uaKsXjapTLPi3aA+Uh0keNw4DAdVTXFQ3PaKOtdM0kmzSRb9bTmVTy31w4FrVPjED9QW+U0n1jywmW5aD+kIQ/QAxzM3jQLZB2teRqVh/M7UgiadbVM9BFi0f62MGim5bzVB7sQgWVN+ywfrPzQb6Xp/7uNQfr+/9tvB+0+ffQrZBFff0q258Vovmq8LAzaZVRbktXhGIvInLPO/a2ZRftWIuMwMk0Hbm/vePnyNYdp4sWLlwzDwGEamKbBGG6R6JwurDIj0pWPGzUXWlEGjRQjRdT+vWdSJvJYt4yq4+ZrxKRbyeouWxaw69+kn7VGxfqvPt7dUVUs3OKj0jLJX1FRhhPe2GFdSiWofIoPil/HkAhp4ObqjvFw4DAVrq6KZopXN8hy5ksGvjhnyuxwIdIQwjAwXV8xSMSnCy47pBXK0qA5hmFgGgfmS8QvHvHNolenfWFzVMpvRBU4unQLg91hu3dOM4+1sdYCmNubW65fvQDx+KK1gP4+EaHaJgrR61DIODAebyhNuLu+5fbqAtJ4e59AdBS4C0KKA0PSQr+YBpHrhAf7PO+8SRuZk1qZvzuoWXYRvdF8+z33zhN9YowTN4c7pnTk7uo1x+kW62JlKZk37x45nzJnv6jRqx7pzdyWY+6bLVclAnNkncrcM5ohjoxp4upwx93VK4Y4cTU9I4a0KqmI62GAsyGAQXvgXOn5LI7tevSMx9IT1oy371QjfSBCEA06tNk10Xy1jFoza++6mJeZAMFGeYiRhJRAcZ4vjPFAH+qnCUtXW9mue5OOPci2icTpfKXq0Om7zhquTWMvBIYh6dTorMxMjye6QLTfxz5E1EGfRvx0tyok2kQ2rU6U9djtWP8qpZJLpra6okvvuwRBA9TWdE5XbQ5Xm4rZiqeUgRoiToTqk77H95qvrsrOBP26HEpWL79zjvbKjmJtJBA7ot8W2n092rKL19sj1l/bmn9ChFqx5m0D7H615mXKmrNIkqBxlJh2WIPT/SMtNz775Ef8+u2vcLy6QtrC4XBgmQbyNHIYEzf+BmKgzSfackakItY1bxjQmgRCQ4IaoeIKsyjF9lIv2oyYZy7LSetJVpMQ7xCv03LTOOmZOKWJtpZZFlWvYBhBqkJ7ddBCaWs6+VM2yaN5uZDrwuP8hk+WX2EME859m+ieUXOjzAu+VEpWxYbz48LD25kQIudXHzAdjwx31wzPb2hUHvMD5fxArmd8bAxj4ObZMwR48dHHvPjudxhOCw/xlodz5vzukcvDhY++9ZLqMudyplGJ0fQDm1Lsai6U5QReh9Kpgka3rm01PCudts8XR7ZhkzEiIVFr45xnaml4KThjaXq3TXJtTlRCJ6hS+/f/qe/zne9+n6VkTsuJUguX8z1Lvtg91Wz48XRPXmYW010UJzbgEkpbWNpFs+Ay06qp1K99J904qpNqTZREI44xjdyka55Nz/ng2ccchisO4zPG4agUaVlILvDxi29xM17x5voFV/GKJS+clkdVLqGSJWvNJi/WqO6MzQW1qrFPQ2IaIsfpiu+++hmO4xV3h29xc3ipenJxslqEetrgA2MaNKscEiFGLucT98sbVTiwrMSx6WCvO7LXmTsxZHf+oJmm9xDDhOAJYUCco7aF03zPZX5EJCPMuq6rQ6pNhPKN5grvHt+xzFlrQM+LzSGBFcTaC94i5iwsI64CzRFzJM2BFhwtWXO8AVyOQApXOBI3Q1GYH6fBkFdHJbU+UQ1vvlGsdlik1wC7u9V+KoczEoq2wohTKaa5zpzzmVyV/KTzGJ4GO621tR0l50YunhQcoTVS8ES54JoOjhQywQeaDMQQiS3SGA3GTip46zTQ6vDqWp0y5EpcsyCtYzmwNfyqDb7k5acy899sJ0Vn3XUf1HHbna/vWdHuXV/V6tPPWuFBZ22kJrbXB5qLVamlwunhgeUy8+knP+IwDVxf3zBE4erqinyYKOOIHA/UySEpIpcH2nyyG1Z4mvN4w16Utdd8o7rC0i6UVjnXE7lk5nzhtDzoQi7QGoRhIAwquJrGyZSedWx8rZnoodWF4FUfr0mh1gmhrTWUagSM0gqftk845UdK/pLz5YHRT9xMN1wPz6i5UpeZ5j3F5GPe/OQtn/yvnxJ8ZH79luPxiuff/w7HD6/JUrks91xOb6j1TAjqpG6fPcPHgZcffZvXP/s9ri8L4eoZlzlz//aR0/2ZF9dHKplzPoFrxKjkCCNEcs6ZvCz41IgYIcAMTK/Qr5TdtcYoBnM5K9soZDnXrIyvJTM6x2C6eMFqR80L1TVlwgVtMfgd3/ked3cfEtJAGq+prfH5Jz/i4d1b5suZ07u3LMuFzz7/MY+P98zlwmV5VFmpqDDR/eUdb05vKCWTF3WSW5OwmC5Pj1Itmy4KSY+M3KQbnh2e8+Hdt5VVF4+EMFLrzLI80EIhvfiIcvcBb2/ecjPcclkufP72Ux4vD8zlwmN51ABo0ZoGlhFolK49OmFMHIcjzw7P+M6rn+Hu+IzB35HcHTjVhlUjpE4q+oHDdKWCrceRYUy8c/Duy89oLVvGY3XeNfvve2ELMLTVQiuoGskL3mDEGDzODwiVNIw0UQOdSzGY0BlcClLMTjgl9pR8z708MqUD0qp99pY6imVLT4y8NKRByXqIcfbEi0Mi1AmK08BGvAOJRH8kuBGGwmTAVjZkJvhAaxUvgm86br6JIE4h0cWM+YrLSiSsKhAR7yPORctYhaUsXPKFpRSkDxzFb/ZKrC5ZGqUK8wzzXM1JBRWblTO0TIoB5xaC9zRRtfbgE7UdNXuPkzECvekIah+fdxqk+K7naJF/a6YO04kuGIwtjcvy20C7b03nd65m+yV0x6ONZuzzzvU9a7T9lffufnYGHTntq/D6oUirzPOFh/t3tFb54ovPuFxOLFdHlsOBWhde3R0RGdXpxdGyHGVveQxi6PBHE7wI1ZiHfqiEVrUhtBZcGnDDoBFiUwpqTCNxnNRJDaNFOSpZU/PMyVVKmQnOnFTL5CyW0aFZiVNtruADx3TUPi2vBdZgWk+tKSzZmhp7MUUB5zxpiFporZmyXJjfvOH+139MWWbOX7xhfrynvHukPJ7JS2U8XtFCYhgGaNq6OA1Jk8mrA8l7juOIC+6JogS7JEMz3a2vbbVsPRqn0TXN9Pb6VWljXTuqAEqrlWXJzMtCQ5XYow8wQPAeiQ4Xd0rS3mmNbkzEYWI6XiEC8+mkkFgacQ3SPHE+n0E8KQ9ErxOEJVbEVBNKreSw0HJmQeV1quyDmJUCoHWsoK2gU0ocUmIMkYiuG9caOI3QtcXB5JScYxxGrg4HUgyUNjMMkXM+4WfHkhfmy0wtBYTNWaJZTWtCLaqR2PeGs+heDA4Uh8kj7QRMO8u8zxW332Ofu5E49m5KMwf9d7Fsqqm6iAibOHJb9/bK9GPNhZ7Q0VdoXyNOIxpUSskqeSVJs6AOj3d70AkYnThhh9/z3B76uCZ4688L/VTRe61suaj5jQW8YGvPjtHZcYmTtQ7Xl7K5168E1LI+LztYVmFRJ+C8tmNIK7RmmQ3WgdW1MUWY50b1cPGV4BRijLkQbfpvbZ7gVftPiSoQRbMp5wbLmrpwtc1IELMXiGosGmGnmVpOsxr6PJevmO2ve3zjnVQf0w0bmr8XnO2yEco4kZ2ECzTvWcmU7/sp6V3ebktrHU9oua1V3r79nJzPpGHg089/zDAMPHt2x+3tDa9evGAYA3c3t9zd3HJ9+0wXpU4ZW3FpWoNOgji9oS4nYqlM04IgHG1ha8+S0otjOuJ9JI0Tw3hUA+aj9dAUaJX58sAXn/wKy+WRQMPTKOXM6fETSp2puVBNx61aZnRMA1leM+eF+9ODqgckqPVCLp6ctbnPmQWaDkdevEZHXMwz8/2ZT/+/n/Lp/+e/p0lhrmeqZOb7L7ncf4FLkecff5cXQyKMHnk8E4FnhxE5jLTbGxoQEIIJu/pqTaeC0vCrBgohBS1Wu27MO6vJ+PrOgxsQZw7GpKJqK1q3kIovjXm+8PbdWx4vZ4Vga2MKiVeHW1JIpOuJcBgIMeJDIsREHBPhEBmPB26fvcA5dU7Leeb0+Mibqy/J80Iarjk/PrJcHllOb7Ux22cajfPxxMPVA0u+8EW44jKfeZjveTe/o2Fabzv8OvrAdFBFkJfXt3x4fcf1NJFqJmQ9dnEL3sNoc8Ki11pb9NeMMVJb5cP6gtIK9+d3fHn/OY/nE3UpSG5ccuacZ5yDYVCHs8yZE44xzsxLYRkqKXl8SBAcIWF9dWpwQ/SkoeGDaIO5V8xdWlQVBregQlPqXDZ6Tzd1RhxpxSCvuor9NtMfxDnrfyss84XSlITkjYkaY8A5oQTZDILBePmyUJbC6ebEY7nXVpCQcOZ0xYfV+Wkg1lZRYWPTK/TbmZmLqMhEABe09WNxQQMeP0Ca8AhRmqE6gY7s+mZakR7VxkQDjdUoOYzGLxrYrCo4Ak6NfoiONHgGBiY52LUc9LsJS2dXyVx0X5RCXTKlCeey4BAu143TMTKOXhveoyN6DXZjCIwpEULgMB5JaWAIE87dmIzTRhMVo/xfFpUUO88nHi8PBjdmC8wKtRXV//wpHt9oJ7UGzbtoc403dt9cz3w6vGBZVs+ovpJJ9Y+XzXk5c2z+SXAmlJy5XM7kklcoyGkfIdM0cs4LYylcO49LNss9KD3XB53MS6tQC64VfLngpBJ8JVqvi/fRejJ0PLY6p2tCSAzDxDAd1WjjFc5vBWmFSxyY332OjnKreCo5O8o8qMNqDi/FanFqGHxUKCn4C0vL0DQqblRETGLJCb4LWobIMI1IKeR5oZVMvn8gf/kOcY2SKuIal8czl9NCOnqupiPxONFEX++8YwhRnUoMirfXiswXeqGxi/1uYazK+tCzrN097/UM1yNOy4Q1G25rvw7NaPulkXNmyYv2puVCi43FZRV1HQfS6JQV2sNWDfiVlp9Uf22cDgQXaA2mQyb4hcPhBM0T0UmrIpWKUfDtuGcXmYdHQnPkupByoooqKfRWdIeuvRgDyUfGqFJPgw94aVDVMYtF52GFlvS6pBiZxhERYSQh0vBeKE3nGo0xaVHf2fwvTfP1Gjbtj1q/WicUWMDn3TqPyGNEC9fMeDWgq/L3ZFcdj/RmCIO6tFbRgVmVR5b1tdqI3LX1MGQD0R6hZv1bvcD/VFQaew8W5Tdq1Sb40jSb8r1JeoWH2ZJzMxdu7RcydRNbB66ZbBpK4XCuDyIUHEFTSiPr9NoNzZCI1lem2aXOcV9tTLdsPevs8G9f59v5erMR0qkjTmhW/RPvCa5obxQNxKukVNbrPyyNGFX6aM6FKI5qCvK1eXCV0IJONXcN7zzVEBcvXZxaz6G2Si4LuWQuy5nTfKI1pf7Xpgr2paoY8E/z+EY7qQ3uW5/hKVa3IUBrym+KHsqQstc0gU57ZVsbfQ6L79L1HmWQeRs7EDw3tzfc3N4yDBPPXrxkGEeePX/Bs7tnPLu749mLj7i5uma6fkacrrUZzvfMTOEofIQQ8dI4eEeartkrNPfOfO880ensmBCV7hxiIthGXB9e+UZxGDjcvCANB6TMSFkAR4yjGgqlBCIoNV8NNxQqYxi4Ha8NmcksvMXRCOWAb4m4zmFypGPU0RtekDxqlHfJiFS8qbCHwy2HYcJFbcJ1J2XqeZMaIjTwqvjtg2JILcUVknMi1vlu2UVQg6F2yrBTMzP6sCnERIX96D041qSIyUvRVIGhNFpuvL1/4N3DI8cwwlQ5xJEPWuToDlArS5qpl8a7+BntXDhdv2FZzoQYadkozyIM1wN+dKTzRJFCbTNyVgeGJByNBBx9YExH4k2kHBfu8itelQcu+cwnD7/BXC7kciGXmeA9U0hMYeQ6TdykAylEpMzUWnGhgNMmz2xZwcoLrObIwGZ3OQ7DxPPrO6Y08p0PT9web8hNNR1bq8zLSbPOpk20pVXePr5RB3s1MoQjwQWSjCrdZAoHIjA3cw6mynF+eID2BZ5MXQeKdRLTfgfLOnGgEyeEahtXcF3JHSUx6fE9mvL/mdZmpbi3qhqVXZzZaONq1DVALLXx5uGeuRZujjdM42QXTKPflc7tel1sU+hoAVpUfxLw2qyL2ozm1HM158gkMoP1JVacQHSRSCC2QKzqHDsVHe/IsUOidO+HqMlQQE2M8StaR26SgUL0MMZoRsxCdl+QNlB9JV0nSmsMYeYwaA323b2K7zZxnBfItVBbxgcY0qYiP+RC8I7TUrTPKzyS0j3eB8Y0EUM0W6viwOfLmVKy6nteToZg9ECkQ92/HZwUrFHmV/B7dtgu0I1UQ//nXK+5bOSL1dC7LUB33Vl5q4F4JQMNUyLGwN3dLa8++JDpcOT1B99mOhx5/vwFd3fPub664u75BxymA+PxmjgdtvrKVx46FuOQJlYitGHqxnHCiyNaBzhWBN7zEbdvauRDHDhcPaOOV9TLI2U+KTwQxrWXRLwNibPPacYiG/xAHNSYLyWT2wWHJ5RbghPEDdolPzjiqLRgnxSWIBfa/QWplVCVyejTiIsabZVcabnigoDNRFKmIviYiAnwjpaibsai1HyC2NhyYRW87LWOZhmz3niFPM2QoWYOJ54uk8VqCLXJU51U5d3DiR998SVXfiAOOun0drghjGrol7jgYuFd+5z87pHx9sgij4SU8OGI9wMxTgxX1/jiGR4GchvxOdEMbkSiic9GUhjBC1fxSq+1zCzM3F/ecq5nHi5vQSq1zgTnmELiEBNXUZ0ULiBloZJxreK9OilxponXp1Cb0KgDy/QdUxqJyXMYDywfZJ5d36lYcQgseeHzN59yns88nt7xcM6UVnh3ektpmTHccDXekdzAKEkza8NipQplVrZoaQtVjInZvsTptEs2B8W6c9cMynrL2hqBmoPq+D4gog5ExZh1fIe0M9JmpFUdW9N1Lg1y6XRqHcoJpTXePj6w1MIUE1OKJl1k2V3LJr0k6igsnfW4dWCiF0ewYbVOVK6reQdeAc1EJDKoQ7WiVxDFNmLz6qTE4Xyj+o2hLM5t29KQGYVC9Wq1lqmiwtMiGagEB2OwyQXdLkhFfEWicEgTrTWGcGFKifO8sOTMkjNV4LJoBnxZZpwTDgfPOHhCgLF2JOmyQucueJOGO5CiSSk5HQVyPl8opbBkrfWuiJa9RnUYnyYUv9njm+2kdnAfsDqrzVF1SG97dOe1fcbXwH3vXTtVHTdII2jz3osXz5mOB7714cd8+NHHTNORFy8/YBwP3NzccnV9w2GamKaJYRjWyZ9PDmTFJA2L7k91h/lERbgXsi0Ctehy+8gNh1z7gTyEGNWY50CfxNlVDToJYD0MhD7JUxATg7IGRQTxhcYF7Z7yCi9Vp0wDwUbXCNWBjDotWLJXWM2K6D2p7Q3WGCyhl8PR5aL0itQVutOprFZAdxpZqufuRWQ7d+nrwjpyDC7q6hRa4NcotRftnYMYAiklGy2i1qGICue20pCsRQR3FoiemhZla50cvH2HiwEfzzgf1UmNF1oVTqd3zPOFnC9rc+gK+zjofVzeRRAhWp/PGA/cHZ8RY8A/gtTKEJIqLXhzQGsWYlGXwWetMwF7pd85053zG7LQXLcXeOcZ04RM6LiXGBhSpNQ7pmlimhKHy6DXKHiV9WoLrZ6prpIXY3qJjZux1azRc6ZKppZiTaRKkW4dvuqOyvbDKqLMFkSoY7fWDNOpLJKpTeG6Wi6WURk8KBvxwxlM1yHavq2c14j/8Xym1sbVMCljzTliMJHarmTiNnvSpcL60EdNeJSG7e1vOSdEg6gTA2O/L9ZYPkpikKjwmRhEb/1lwWHIyEaW2BNDBK1nNsnUtui1tdE+W4/Ubk9ZDQzb280LKRRSjJSqtcWGxzXTKnTWE+lEa7h23Zp0hrTV5oVV+SbnupZQBEWmSqk6+83ODbNg/TNW6PeneHyjnRR0JwVPHdX23Nr8ZstMkBX27em1W+HAdTWukTaoXh8IQwqkFLm9O/J7/x+/h1cffMDP/uz3+bnv/YAhDRwPNyZ3EtfJmCkONiahU536sZpxoWPui/7NGpCq3tBFg6l8VzgrCHm3kdW4daOlBm+DCrxzpONEbA3amVaEUMHHgG8BX11nOZtzVwYgTRW3a9Wpoj4KQRq4M5lPcQSaHHBE/DLiloNmKNXmAYVGez5ALbRLgdK2xkSsR8atFSME3ZzqTNXw4IQWjPVlDK/mtIf3SQ+I75iIOSfLpKjFsHNVhMYPiA99G9nC0XqJ93A8TrjgOE4HpnQg4plp0ArLstBOM252uDMQHUtulOuR9viO8u4z8NBiQ3wjxAMp3ugduxTN0hads4WgxWZvZI7W603R7nHEM5CmkZ//KJDbwm/85Ff5RH6d4Lyq5/uIQ2sKKsdu0ak5oSZCzdab4vvajjhGlEXa14hB1y5yd3PH9dWN1maC0pdfvHxhSiYztS0s85l3n31CXWYo7yiXgRaCQrzOMCljfHoz9LlkclP4LbeAiBI5VALP1r50uWNlfXXFh2LNqbLq6VWW2gcNXljqxWodM9X6/vq0AEfFeSF4DZD6ROlVVDd6LsvCj37yKSlE8py5PT5wdZx4dntj4r69nGQwoei1Cs4TYticUwv4FVLW6dXBxfX7wU0ma6bjU2LTLIrm8K1nFg0fPc5Xamg0p+6oAq02lmp07ZZBdFxJFVWYmPOjQnQuGpMQfO/1s9lw4JQtC8jQoUk4XgWCCQ63tmVwzilihMHxdWdb+5BLsbQv12ULwK3m3zUedQ1ubmYnncAe5/qHPb7RTqoHDd2v6GPnpr6SEa1o0Pq+p5Bgf932nPopAyQc+KANirfP7njx8iUvX73i1avXpKjD3EII63Hs09v1CLtxNBhjLQqbGKSqS9iiauZNe2ZFW2GsVW2iy/2IRV+9QGyRqVsX3d4xypND6k5z76v7r1WzTda/31jUSeHxrlLF4VoC8SbXpHRX6ar/3lhJVmPzsKqqy4rXbVmwVV7X93XmV4c812PcH+Q+h16jlmaXwKoy0gOC7XzXNeGcqgBE1VRLMRFxONv0VnlXbcUmUKEthbZ4atXBic0LLRZaqISwaBEaj1hfDaU7xn3dTOijMlZ6O14L0R4O4YqBgcNwxRiNHGOKBSuRRIxWbBlZr7eKtZauGVMP+/dbo99gIIVECKJq7MGiepJd94EmmUsInMKnWkOUQmszEFQ/33mjvmmjabARHLVmlfgyByG4Xl56GmxID0i2rEm6xJcJqOrImmJ6c4tlEJXaFqM1P92rbiUV0MXkV+vsrI9qXhaqr5zOF6LTeuhVPegML99bjretotvJb9Ay+nmIW9X3fVeQcEJcFcVFnTg28Xdd93oNlEHce8H26ILe42bTn8UcXZVMaTp4tInaDzHi1JoBrglkX1tqm4JNow7Bq5oKqpLvmmU9LlgAs9mJbcVu+631eK8X5Prasr3+ZK/uLPS2A38bOKmnXmifQ7n1t+sz4rYL1iEG2Tkq+crupRv54AMeuLq64tmraz741gf8/M//gO9892d5/vwl0zhowd9ly3b0M3r/084Eo4ZSHVJrizUhVhoz0qCeAy17lf2POkFWhy06hAUdyafUUpGmdY6qoU9vdOwnov0tupGXyxcsyxtyfqTWC7XO1DZTZWadL8Ou0I7QQi8Y60wjXbCiI8cTRp9H4blWySc1FlILUjKSC/n8FslZN7B4QoqM19eEGMmFtXgqdm/c/uq/f0sceC8b+6z7/dX/7wrxDnVMdQa3IO1Cq5rNCknZWSYRI3jC4Ek+8OL1Hf5qZIgTL65eM4SBV5KIBFgK7f4RsiBnxfpV7qeqmsFVoY2V5oRiGUyrqP5ew4YxeoIfNbptDdeUBZeCqja0av1ICEEGPJEXVx+R/BUiFalKGY7DQPFNdd1wJqLsER9xUkgdBaADyQVsHEsfcNiqWIZh2Y9FcK0TDfooDbEMhIFpuiGECCEwy4yrnmAGVCWCPK45gmhEr5CPUJuo5qHI6usVttqg3U6U6KMn1kGErZkxrtZr08/q/a+++8UkmgIkCF4V8kPWLLMsTo/BphostfHpF1/wxZt33FwfeLicGIbE8+fXHI4jBvKtS845A0XiFu2KoDVP+kh73etOGqGhWVONtrl2Rtuylj4nzXvUSUDHz2mUtTtMFWIapc6Uerb9WQxmrPTewc3yOLpwUzDtrRgDSQLJ2HpeJxiqMK8p4ItDIT8swDXH28srnV8CovAk2ylpVLTZ4n32tD2+6rh+s8f/DZzU/kT3jgq+9iKYxevOaQWc3/9EuwEOiE6jqsNh4vb5Hc9fvuTb3/kZfuZnfp4hJaWdI3jK7hO6o3S7T7YI12SRSpuVlUShsSBVyLOnzZ4UDvjkEBe01yR4NbZOnVRrC2AMPYdlTNq93imqrVXycqHVSl7eUfI9pZxpu/H01WRxaqt2aZRx2HpUbq62L2R80++TQ+Us0MynNMrlREVZfZRKLQvz5R1tmbVQ7CLOjYR0Qxwi2Vda3m6Z+sC+veDJNFJzPIpqihWy3e7qdoruGt7ppmoLuF6tESBAuFZHBWawddBgCoG74Zrp+Q2H6ZYPX36PMU6kt/fE+xPt8UL78hEpjXaxgnSr0Ap4QUKmmePSmkt3nBqlKrPYE6WtM3yQijfr5H1Ux9E0Cxwk4RzcTa+4Or6g1oXL5R5phegWiisEHKEz5RyICzjXiE3os4S6weygzT6L6ZfYBXVUDRsP44CeBahHwTEwjEeFwkRYZNG1UbVG2e+dc44o3cHpV6tNIcjupEDXnVHQO8Gl8/k6A6wZC3N1UvYla2a8vuPJNveW6aQYVielcYusM9mkdTq68PB4puTG/enAXBYOh4Hh4IijI7iAcwn2GY43lMP+stZCPU60/kOrWmowSE81grUo2yz3XdfzyhwG54VVwqva59BszpuQRdsXSruQ61kDFhvIqESqfWhstu09lnL0nhjUaamTsuBWmSF0+vpqt6we7Nj2l15GC8fdWvHdbeQdqPHk8dM5pv3jG+2keoe4k72peo+OzdNsqjdH9mR7zab46uXrt1phY+H65o7vfOfn+OCDDzlMk/agkHX0hsY5VvC0FScG+fWUGNEoULSuVOus03il0lhM7kioGaRUXFEYQHzAe6fOzGXdmJI1U+g6dM6ZmGfvBdNIdMnqpJbziXy5UPJMrUWZfQbPPXGq0q+jGfn1OQ0fnQ+4EAlxwqeJ4Caiu6KVBnUkp4X53T2nRTOokjNSFF2vUpDgKU03kmwXersHZks1auznYfBB2+752kvy5L4Jq2ilW5/ROpmYPIsLOJfVyZkhVQ9SgUIMCXxinBLj8cAQJ/LDA5e24CnE0eOjNmxKVgwpFKF5wV+0H0WM3aXXcxMndU0DhzkbLNoM5nUeF844F6hZKfFDiNxdaY2zBTUezgWi18mt3o4Xu0/rzZOeB1svj/3tNUB6L3jqeoerZKCzyFegOc28Wis2q8oyJheM8p1Rt9t6rK6abuiML2efL81ZUX6HbWyWff2+EUG2L0W7v/r8Rqiwr52TcruwXlm5fm00lqbEhCFpllsG08tb1FkdDgNXx4MJxHoTYHY0V+1YjLyDMid1bWmWEVYZJz0mtw+a2CE59FKAbFuv/1oXPiKNfJpZlgsSHTL4FULsa7pPYRYUygzrubPuri4YrAogdpdsEq93nh6sP812zGG5nim2bV10aJm+YPpPTz3SnnOtOOuTX+p76j+hTKrWyn/4H/6H/M2/+Tf58Y9/zMcff8y//q//6/zpP/2n1+KaiPBn/+yf5a/9tb/Gmzdv+OEPf8gv/dIv8YMf/OAf86/Jez9107fd9Q7jbZejXzy3FtptD7O9Uhe2szkG1QvNw7e+811+///7D3J3d8uLZ89IQRA5UcoJh6zFRVw0Y6jGRT9+k3XpLKS86ARNhTEUKltOmXIphBbJVWVHogT6pOAmfZOqMfLWSImxcnQxWQG6VZaixdWynCj5TKuZshiWX0Ga79venJJtPDSQ65kUTov7Po74ODBMz4nDFdP0jOvja1qFd8dH5vPCJ8v/zOcPn8ByIZ7P+Dyv82smGlNryvQy2KQ7QhFoxdEWTyuNOmvE62g412jeUQe9yBana4RI11tr6Jx5Z79d20UpbSbni7LvnEq66PIPwALMODLjOHA4TByP19y+eE4ME7/x5U/4rLzl6B0f3I7E5qizRy4elxvxIjrO3ntc8RAddTCD4stqtKSJRuufXVjOVSnOdaaKcKqFImJNpo3rqxu+/3Pf5+p4jXdJC+IuMaSjCuA2DVQMSdJrJAVfM7i6EUxWaLvu4uB+fbYmHGlmiDRNsGh9scyqUEXZcxqoJHKeKaWL6erOGsJANAFUMRxLnXE3eqrv0rkcuoYtIlnhuq9xOgjO9fyjO6hmxfm2hux9zMh+v/veYus8DiWcODdovVEitITb8byDl7U2F5OjWFFRs9JII9NEg5HmLVNszcRiNWNS51nWoEG6M7LalV9Zc1smtmYu1s/WSub0k7c83r8jHkfG50ft5UyirRhFqKYq5L1m0T5ud7a7FO8DMShZJEV1TJWBihBz1myytq05GccKN0p3ir2BekdtN5ix294t/MGyRVtn4lYV4X5b+51tP50q0m+9k/qLf/Ev8ku/9Ev88i//Mr/39/5e/tv/9r/l3/g3/g3u7u7443/8jwPwl/7SX+Kv/JW/wi//8i/zve99jz/zZ/4Mv/ALv8Df+3t/j2ma/rH/pjL4eqq5ZQVPXsP+6R1M9HQ/7D7jq++NMXE8XjFNkxZHrUdB60Tm/hzooo7bTcexNo9KW51UrXnNpDRSbVYQLjrkr1TN/qzQqlGbHpEtHZplUgpsa91InZlCJLnMamTKQs3ZuvN3mcl7+mTbRdoAlLUXCeuPcMpW9CES40AaJlqFNApNEmE44OKgcjO2IdUJQnOOIhDMuHVOQr8NphClx7ioYV+VJeIW8ZnpXTPi7RO2IxfpjleNmsJr0KRop79loHpvtNahjEB1iqpyoAMhz+1CkEAJev5iQaVK2+g5+OIIRYMJH9V5eOx7t1OCSgPlqtN1a6FII9dMkUqpldIqOSeDYO1ei65aHR8OWltz2/kaWxKjX3dntNdisVTpSfDWnXl3DvuQrjsAZZP2GUW7AGAlOCg8WXZN57igCEfbKUQ8WU/9Lu4CTSe75+2vuO1e7lbJ7l4/PQu3XgtnfkEn2XoC3qv0UfCjOn4CnhHwO3kfq/F4Hb2yHqXIGmhqNtXtzf9O3p+F2rZled3or/VijDHnqnZxijgniowwvszUm+bVD+QK6vd0E0Q/JC1eEnwQfVAUhERQUrBAUAQVsXgQ9ElBBV8UfBHEFxETFa+KdXUj04zIOFGcs/dexZxzjNF7b/ehtT7m3JFpGnnxu95DzsiVa5+195rFGL331tq//f//ttV2dJhyO4m/83Dp1ZwnZ+d65+KT9I9XMVh5qejQNnrdtg68du1VWg8h4pWsiJOUzjji9uft6vTrJHK+7LLF/MsDbXuNTSoAfl/1rbcuF/flZ9xiPT93rwS/m8f/9CD1j//xP+aHf/iH+T//z/8TgC9+8Yv8zb/5N/mn//Sf+ptT/tyf+3P8oT/0h/jhH/5hAP7aX/trvP/++/ydv/N3+JEf+ZGf3wtun/O8GbtVyNsLxBd2p/tgm3g73vTt2PTWz8SytMfHV3z1p/4zd7dX5PCG65sdKVZSqnR9EZwzEr14ns0WZtvwzbJRZz+VapXUOq/UUglFWBZj68Q1EWo4vzEUpMMK59dqjv9vB7NnwzaMbKG5sLYWh8B8XLXNszFGzzbXxhuxlkVZx8AouD6hV0zTE1hRtQrl+mbPfh9J8v3cXL/D/PSab/+3f83p8ROmFIkpQBh4IvA0F3ahMQVjOmq1AFyWSnlqUJR2tL+TpIgL6Sl22quf+k2B4NfCfdq6ruSyVyFUYlIaK8f5ExpCDDti3FF1YS33VF2Y24l2fMXTw7c5Pn2CSOKb3/4pPjl+gydGVp6TGbiLt1xNe8LayM2ycKlCO0EaDFrRgPs0dl2m6VSG/cCaqhm7rjMalJc7hQjH5chxPjFNe/IgEMw3LvZo3iEjEczh0Po2NoyiAG5JrnHbFV1z0avvnhX3QAa6ERhUfSSKE116Wd2p3VtCIeas0LSylIPpeDSYoDUGhpQRCdsE3Ut2WetkS3l7r3xnsnGGLk16YR2shebJQ+/u9BbOJg+UyJB2BEkM6ZocdsSYyGlHkEiMIzG44aB3U7qeyvbnapZeYaZKgaq0YhT0WhuhFeqUaNEnCRR1KNcqB7XNuH0M0wIL0QOF9gIW97EQDAVBiUSyi713TObFKNMWTPt5FNJADDsAoo/NSGkkZxu2mcX0fmetGRQ/Q9YirKWhLTAOewiJuRTWUs+XHi4YjGfQEpfj4KCFgvfRfG1eECbsFnridHEYbjHrZ29a/YzH//Qg9at+1a/iL//lv8x/+k//ie/7vu/jX/2rf8U/+kf/iD/7Z/8sAF/5ylf46KOP+KEf+qHtd+7u7viVv/JX8uM//uM/a5Ca55l5nrf/vr+/tz/0xG57nBf5ZdB5O2Apb+mJeirERQaxPS6zFDgeH/j421+jLFc8f9YQ9oxjZBptE0Yx49italBnKvWswYOUbXilFOsP1WrK7PO03gYFZLXYmuZE8HkI54/bDxUc87cJpBak/N1LcyJD21iEqkqrF7CPuHAx9M5+20oD8W5/b5mCbDHepoV6ya8rIQjD7gaRkWm45u7uQx7vP+bp8E3W1BinzG7KrKvw+l4oSyUOjSnZhbd1rLS1UucGq8KsJhic/BaJWkYZfKEH+1m7pN0H0NaotZNY7D6KmOFpa5W5nCi1kmLBnJcWaj1QdWEpR1YM7n16/BYKvDp8m4flNUe5ooTGIBNTyNzEgYiQDFtDGtTVJ/tmgWBjDCSy8cNUIE+ZmhrHZeEpZEKG/fNIHODxlHk4mnVVcvPcnhUjcvFZ7aQ7k0XA+p7FgoGGi0PjzHzrSc6W70qzwKTV/9VFRa39q98jX2+9Mgo25mWui6MCdobFEBiGgRACQxpIMXsSZ0GqI3RG13ZCQrdUuOyviR1wm57Kg5OyohvfrYvc2Yg2AWNLxjCwy3eM6ZaUMtNw5fDXdPG6eMw3qyZ1F4uqlUMTtM1AQ0u1fbY2EyTHhk5eGlT1A/vcf+zWSuc6BJu5JXJOsHoM8Ire/hhIasLuUQaajJhZ7HA+t3z/JX+egCcEaSDnyYJ0HAkEc3ovxk6qzcTxpQq12r3M7ida24myVYrbrvHqqVfWeobsql7AeN8RpC7P5HOWzsZZ3/7uf1GQ+rEf+zHu7+/5xb/4FxNjpNbKn/gTf4Lf+lt/KwAfffQRAO+///5bv/f+++9vf/edjz/5J/8kf+yP/bGf+Rd+h7cw0ht94E1aekto+/llJfUWBOH/ddmHtf2s9BEEjw9P/PTXPuLxYcduajzc7bm92XF7O9nsnGEkxOijl90clj6p1Md/t+Z9qHYOUq2a5kNtITUfidDfnYoS8GqtWy14lrmRCriopLQHIfXmd4f/HL7pwa1X6+IBS/36aNjy894Ybhh23VpFmtDaidqEtQgyRyRkUoUQJmoJlCZUmQmjEHeZYT+y202ERZGDWTJZ38v6bKsz4poYa8ssDf0wTI2W6FIgTJPCOblweKvh8J5XDrUUjo+P1oPLK21YaAqrB3WRSuobr0VEo0GvWkCEtZgLfS3r1vxtarTtloQWEkSlZJCmrimz1Rj9DE3BstwQzG5IFTQLISrESMjZp/lCiMqULfkIcXBmmh1I0OG2i4NQz4cHfu1Ch/T6jX0L/hbeunC0LTCoBwlj2p2r0YaLPC/X1sa2K9v3qpW1NkpRQggUKiLBLXb8Goj1hlJIDrtFP4A8SPX34Gu3+pottbD4yPm1WlLSYW8JQg5mBdSayTFy2nE1vCDFkTHfMqQrM2eOg7+XPs/q3Prv/THteiss6dSQvWqzIzuFRBazNWLxtVitF7XhMpdr0/dbE6VosX/TfJt5D1D1nNhKNdg41cgu70n7gA42dLCf84qJk6uJDgkhA5GUMjEMvt6ye30GJGYPmBaEJEbysCPXhZom1lqI4YkUT5RWmBdzRzGyk5VLW6LvSbGcD9Yt4dksqLaHXY9OZJEob/29/K8KUn/rb/0t/vpf/+v8jb/xN/iBH/gB/uW//Jf86I/+KB9++CG/7bf9tv+vnvMP/sE/yO/7fb9v++/7+3s+//nPO55qP5Pt/59tji54Cxf10Ibf8ZbYVt++vJYAaF9NSINvf/Rtjk/3XF9PPDx8g7u7Pe9/8IIPPnjBOAw8f/aMYRgYhz1D2Pn7szfQHOarZeV0eqI1m/NU3cSyuK2JJztvZTTBy/xo48U2SxKami+aGsuqj7JurWttoG4HuGzWJlvw075JPDuWznZ0OFAjYDqXpkqNjVoWoLKWBzSeWNsTx/UekUzKT4S4g5bRNrLwRLyJjGni+vqaZ9fXPD0VvvXmibYWiqwsXm2epNBC20aKhBjIOxOELgnW0EzM6veiIxFNm420QKniuhpn65U6862f/ikeX79G9wW9XpCUGaaXxDRB2JGiw19tMIFnPbjDQmFej5ZUePMdCdTaqKGxpsgSM0HUmV9Krp3Up+him3MkETUiQ7JJwEDMdk333iNQGi0sqFSGPHLNlS3ckL16OvemtFc1fS2reNNa6aQRS2Yb5xEKPgBvS9QuD5OLnxOoGqiluvjapwF7EOuMUSNRLKazawtrWyh15bBW5rX43rO9WIoxSQPBR75Hrq9uGceJFBKjFvpsKpFNiYSiLD72YV5XTvPsAcvoz8k8mb1qG4khomWCOjDma55ff46cduQ0kcKAp2yejHrC0VMbbcZW1DMRAIQkZqRcZaGoEglMeWJigCbIwd5txPpvm8DaD+ye5PZ+9GKR7Ky6EqGFTtXHzpkipNkq4Wl6YVIPOSMzR62U1qhJqNnWpKQd4oMIe7Um0VxNOjxv+Y2dCSEIEgNrWdmfnljrysPTG56OjxyXA6/uv8laF07lkVJtSkEInn41o9Wj5mbB9old26aXB6nT4UX8Ofza92QuXFT4P8fjf3qQ+v2///fzYz/2Yxts94M/+IP85E/+JH/yT/5Jfttv+2185jOfAeAb3/gGH3zwwfZ73/jGN/jlv/yX/6zPOY4j4zj+jJ9vgelngfw6nvoWHdUDzhaokC2gXT7ecmbuVZXCWirHwwkR5eHhCaSxvx64uRkpU2GaJlSVGEeGnsj+bB+oB6HelL6wOeqVnLUCthzFoWEFddhPLROpW4UEwRvbzUkC5ywNO2S+4+ptn3Lr0cHbAEVngPlB5gVcZw52DN7GYmPsLwpmj2OfR0IkxOzzp5w16ZNvLy4vHbTSoL2d4s7PavDImVS03eOtCtyqwfOWQewa11JY1xVdV3SdiQo6tvO93T5t8Gvrjgg+nqK15k4FdtCrFKsgqLQ+jdU33Wax1ZqxtAJ0hwrTGYWOkvkatYa90igGthDE9GRGIe+f5+1+UF8T/T/EKx/1flzX8mz/5vKW9t/x69YdTaD3Iy9WnfYD95y0dUeI1tetniEiO6Q4r2uUshbrsYpXhaGR1hUkUaMTQiQQffyDQdAWEFcfC7IsK/NsSVy3SorBJgDHaC7yZjs2gYwMaU+OO3K0AJVC8orwEgL+GVtyWz3nNWH/6+MuAiZ8DS4voZ6JB4K85fZwvkueWIgd5DjJS+Xyxly+Zg+iNpfL7Kas8yiiRHExiwjNzURDiJtGUvrEBrEgKD51wejw5nYSormWKIExN0LILMO6uZQPeWe9s00kzMY67+4hcvmG+3l6cWT2hXd5/uJrWmBDkr+bx//0IHU4HAghvPWzGONmkPilL32Jz3zmM/yDf/APtqB0f3/PP/kn/4Tf/bt/98/z1eRi43klINBnyEhwtwavms5UZf9tjwYbuwW2BdUanrGrTd4UKMWomo2Vr37tDdPHB17fH/nmt16x3+/47OeeuNrv+exnhXF3ZWdl68CtN8BDIOeB2JJlpv5+jPGnhhV7o9oYeGcWlTSMlaaCVK+oKr5ZlCC2qJp2Vb65BthLWHNfLwLzFpSEjRloppIewnrjukVETeBZmiIF2ulEqEIedoxj9uuZEZ2gDdBGYlMGeUELE+Uwc//0xLo2pqDEyQSfTaOJctUYdfVaKdkJrLLY8nd4T2ugrD2LM1/B7vjQobBzHuzD76aJvN+j6YjWlRQjU9yR8977JQI1Emqm1UiuK6lVtAWarhQKRSuVlURFQqGFgTnumWMgy0BqVwjGdowSqfOJcjzZ/V2K9Waud0zTcFG944fuuuX4DQ/STnypzhqt2igd0usyMC3gHnWWxNj9UqnurlLp49xtdVjCodJtlNpWT3QkwSyNAiF5QBQ3qy3VA3ahVBOg13qiuI+esT09k6ex1srhsBhTUyOtvw9fsDZM80hKgWkwWvSQEknMM9J+D+bVEIH5OHM6HA1OagUR+PznPs87736ecZi4vX5BTgN1DbTV9WRp3A7svv9Uiwfxy+PDUzjx/Ed7cFffu43UhMxI1EBcE9Kiado94e2ECGKzXpWoSRJEzei3cVH9Kq1PnA6KZE/cmq/zGOiuERqMfNNQilgXbo2wugNVkeYBrW0pqAWnfj76WdD1bX2/a/OkCfajJdZTyqxXdyzrzLP9M7OeatabW8rM0+mBtSy8fvyY4/xo72tjXlrEUcS1Tz0ACxpdr6dQard0s/dWy8+eMHzn4396kPoNv+E38Cf+xJ/gC1/4Aj/wAz/Av/gX/4I/+2f/LL/jd/wOwALIj/7oj/LH//gf53u/93s3CvqHH37Ib/yNv/Hn9VpnKmX/gZdOwauoEAgpsqmtt2qglytbB3d7XOY32hRCx+HNWr4VE4a+en0kpYXTMvN0eOT6ek8aBm5uFp49f4k7t3F2JlZ/a0KKmSrVelchujrdN2fXLWykC8OyW6fS+DkcNNlUzxYI1fQnMfo8H6p9qYERfUR9v0badRAXVxJ3RscDvMr5/QfxhS2Nqg1pSl1XCywhMYw9hUru45dAE0EHolyTJNLmwvF0ojXIEohZzEG9WorWM9I6CXUQ+rA7FMYaSU3QFWrz00SVrv05N9n9AnmmIQghJeI4YKLrQGyBHDI5jqSQfDggqCakNULLxJYpTVGNBnPKan0qKlFWRDIlPLCGPYErkCuEYBCLJFiMoanNGu5BhDjmt6oYgLPHWdv6aeei1T5/U6Vi/YFzUtP1MGyuEuIHblOzSmrqDvkat8Tr3Ivtt70HNz3/XVCvKkHUYEzER343k090t5KmC90522je7ltXYZmFUpWzA3b/TI2ynGgVUhLG0ZzHdzmTQrAitEJrymk1eG8+zJwej5boUQgCn3s/czN+ht10xYub98l5pCxKXb3vW9fzGurUn9ZTgb7Xe6avb12Tc1PaE1TtUHsklIgUSxCNt+B2Q85UbF5kbTZC/bX60wItWKIQgpjA1uEw1DhL0WGDGnrSAlXMuNZzUuuLYkl08B7suarpa0h9n/gW97aB0qjNeodDzAjCmAYUWMvCLk9UPV+np9MTn9x/k3k98XQySBC5QDy8RdE6s/ECqeoSF8WsscyDEEc5/hcFqb/4F/8if/gP/2F+z+/5PXzzm9/kww8/5Hf9rt/FH/kjf2T7N3/gD/wBnp6e+J2/83fy+vVrfs2v+TX8vb/3937+Gql+Leg4rAUkcyI3fDZl0z9sCmtVDwKNVoz+jbPfRI3F3LGjrYRXwa6tvWBTKLNlmEdjGFOWEx+Nr3mzP6E18+bNyXz3xKCJ589uuL3Z05l2rTWWslDKQnEHiObvrfWJsc4CtOZ0u4BbxNyzFWKLhJYskxLLCNW1VW9pikLzLFq2YL5BgEG3ANUdtc/X2AOIOutvG0BXoSrrXDm0IzkF9s9GduMNUUYiE8syMz8+EVZlZWCtyQ6aPlTOCRk9s6I35VsfR2J7r2fX3WPwXANunRpQ28jKOQBLFK5u3yMNtyCrVWYxM4zPCcEG9bEKUtWCoAqTJqRNDJoQNQJAkdWoyMFZghJpNTEvJqCtWuxKt+ju5mprTbwKacp6nJmfjkgUahIXgp6z6z6Ztm3Ej77EFZvBtNo1c/uqDgv19r8fCecA5T0CVwv1VWDffGaLOPxkKXavQo2CbiSWzhZt/tkhkghBWVsGv5/moKKeGNqdm+eVdW0euO31mweAamOnWNWSniBQViWJOIpga2KpuiVuKY7klHj57I7dOPGZdz/P7fVLhjz4mBNLpGwq9dnbcpNz98/XIUxfd20Lnz4pWHUjGIVqMLw4DU+l0XKlxE6mNzBQxdGY2GjRRrp0Bp+RELuI2W6qwWfew3Khnc8G2BB96MFOtmC3iWO3w88+hLZGozoK0rZk/L83cXyLnD5EtD+XYD58Q8qOfPn5kRt194w5nzjOTwiB0hbmZtVtFTB9odAlINtL+L5V7233695rhO/mIfrdktX//+hxf3/P3d0d777zjpldIoQQiW5lMg4jOWdijOTBRmWkkIjBYMdarNewzAfKutDKQlkOCDCl4GaxkRjSuQnpB3h3d4ieAcUMcTA19/XNjpQju/3Ibj+YyjvDkCO/9Ae/zP/25c/7+AA7hNdSbOBeq/6elFKaO/o3N5NUszJq1aC/Tu8p9j2WRFqTVWgheNXDtphbXxGxWaMyONsnBNdGBQiBEB2K6lnhdux1HZV6hea8+HBCpVCrUFZhN93xfV/+P3jx7POMeceY95yOR37qK1/h8f6B4/03ON5/RG2Fpc3u27ZQsR5P0dk0N3VlrQX6tlajeMdqlVddcCrraifdRn3toIcfytqd5E0PE0IixmyuD4uJmstypC4HRBuxeLJSGq2av9zSXFc5KDUpRQrHcERRBtmRGNjLjhfhGZnMddwxhoH1tHB8OtBKZX06UteVtB8ZbvcQIzJlSHHrzakozbVeKl4FSzO3CmkUThQ5X5+mze6bQ9hRbGxEkmwEBCJRupNCDxIX/ddU6fO53D3P5mZpo2qikFE15qY2jF5eFq9CFlQrT8dPOJxeUerCcXk0o9YSWUvk/n7mJ3/yNcvSSGkixgw0VDyYeeO90FjVRlD0d9vhXcUzc4QsmUEG7q7v+L//kh/k5bMXvHzxLi9fvAuIOU80ZV1OrKu5qazr6i4a2MFJperiKY0FrKo+LVadBdsTBS8N4lyR2ogIGWMEJhm2uVPRiQDBCUkamh/64KUMYU7InOw+aUQE2lDR1MxBYnDfotgTHFNuCRuhlBVl0WoEo7LavaIzHIP1fCUaMSUa9d9MqcP5vUgH/C6/Oy0eQ3h6Nde9P/HPVVplLgtrXfno9UfcH97wON/zyeM3baZXXfx8Kmgzp43a6hbwtwTbYeYtgBXla//8wJs3b7i9vf3vnvefau++M7VPjJ7sTcIQIzEl/56tokrGLNKmhOhQjGcfVaDV2SmR5+xjS1rUc1IvZTsioOBec5bVL0ulNlAWSm2EAHkIDDnxdFg4nBab6js4pMYZM7eb3CE/30peWdR2AbdU6xe0YhszlkIpDlvFbCwcF1XCOWm6RMMkeHkS2luLtxc0W5J2iYPSydWe7TULBlqgLdAiGCKm5ubcN68v9Iskli2d2t5fD4rud9jJLf7vtDbUgxTaGVRs5Jj+T9mOOXc8IBBSJpAIvoG1NWwfWcXYm8Di0NdZcmWTnZRtZByFePZpa9ngH7f6EfFyj4b1iuSt9wcYfHxZGnLRP7hgjm8/29LHM/ykbq5qMJ9DTGKwUwvG6DMiRW9eOc0cpw0LF438S6BLL15J+6+w3TxwR/4BQVnr3phfcjIWpFdlZ1jr4gU6eUd71Xu+j51K3mnflnPYG+y95CEPXA/XXF1ds9/Z1zBMxOCO483mL2296LcKCL9u239efELV7T1tGT56Ro+3q+FVlAQPRHi/yCpE7Z9RQINLVr6j3rWNdg4S5yV+3gGdgdklIeft4mfB5f+2G9Svt57f71aq+HvY3k5/T3p+e+o+hMJ2/gmAk0FQEwvnaK72uzxRRms/nIZrSluZ10BpK60KpfXKUrdFrT3a6neeKd/d49MdpAhozxhiRHIkxEjaTeRpR4rJLIyCaZhyGrZ9p0AplgEcH++5f5WopaDrTGnFrf77urLMK4r5vnVmiukpLRPSEKktoTXS5sCyeuN+GEk58dMfLUh6xdV+5J13bxlyYhx25HGgng6c5lebHZI2r6qa/XkpJxdLFtay0GrleDyylmKj1UsjhczN/s7IANhXCJHBgzQNpEXLoNsKAiEly7hULRsPwZ2Xw3ljgVO6rSlvDXmllkSrgbpG6imxLhNP334ird9mN93S9sp8OrEeD9T5SCkzay3ODLRDqbnH21mP1QgayVrRWmjzDK3RFqtwbM5NNqgqJafJdSBEtsBkh3/yAGkaEpG47c2WlBZMm3WS6my81WETSwaCRgaZiBrZa2aoiQYUufPzxjU/BMZqXQTVhVWL0f9FIQpxNyBDImabqovIptQ3WMezXA92Kk6UdkjIm032c620dkK1IEUJpdEksvRrMl0RYrADzeEaE2RHj41hey0L0N2f0YJcEEW0mTMJvr4FukVEziPPn7/LkEeWZWZZFx6fPuYnf/rfcqwPtLKyzJVWhDGPBFH6gMfWGmvtBCDbQCJh679ECUQ3cgyqSAhM00TMic+++3m++OGX2I173n3+HtOwY8wD6pTxGHUbcRHiQK19ACLm7tIzJI9Ul+zDThU36A8213Z1FAKDs1qw3iJRbQqxWIJiSVtHHbD1KBC8OdXXZT9FrOJSE6Q7tbyTGUx/JE408UClsGplbqYkXFuxfpHYGkfO1YlopbbiiW90mPJcQYfvjOAK6j9rtVdu575ScjupKEJMGY2J9Px93q3vcCoLT/MXWcrCtx8/4rA88HR4w5uHj2la3Z9QkWpnhrZmXoPdCkl98X0Xj093kJLzJu5WvxKjNctzJqVMHkdiSAzjxJhHulU92GyW3mA+Hh+RdbFF0Oo5i7zIJO1I9JsezgeJhD6nKKAaKMXhlRCpJIom7h8q0ydH1iLc3JlJ5yh7Ut4jM2bLU5pDIaYIt1k8lXU1F+pSFpb1RKmFh8Mjy2I+f7Ws5DhAFMa2Y5DKIMaqDDE6HOEdXTHiB94rUzFiRFDP8N/Kr/0zdgumYNWXKrRVLFAtiXYaaJqYnxZO8UComcSOdVmoxdyymx8c1pO7LKY8G8UosXbJfYDi6lXUvKKlQkjI4N51RCMpXGS7IqlnDq0PeQEAAQAASURBVHSYSzSxAUlbWYmxk6Kaxqo12raRjFqesJFZIsJAYt8Gu8fdk9HdtUXVpqCiUO2Q2KxuwMfKG024H2rV1N3b+xBgm3em3ivqjNO31mFnqK1QKqzWyyihQYg0nc7ZuLaLX1Svaq3C62wsr/u4fBkuDvB+2fqxFkLianfHNO2pxZioQTI5foUTs1+/gqo4xKf0J7Hi4jurGrbqx8KVqbWFs2vFMGRePH/O5z/7eYY0MKYrg+6jfcbtCBAjHNiawLVBVmmyQQRcLLyt5NvWj103NVPc/j59/RffJzEE77tdVMEi21NZsDgTWy5Lu21n9SqqBylRuph+MwXuwRKD22orBk9io2DsqS056+zOLsC+ZDP3QCQO4fcu5rYPLgPsxWewnzmpKQjJE6YhDyDC2pSbVZnLTGUlniK1FB7k9Zbg9B5fF+3Kljxx+UL/w8enO0g5tCcpmDfXMBJTYtrtubq6JqXENO7cDWJiSNYn6kGqaFfUV2qZWeYTn6wzZT5CDKQUiTGx31+Rc2a325srdQjkwaZ45jEzjJmUMzfXt+ScyXkkp5GQEuNkbhTPX+y5vZ0Yx4Fnz25sCmwciDFR20QeTojM1HpEdTVyxrpQG8xroZSV2qxfU2s1rWcKzvqBVQoP6wPHeiTLxMBICImp7Aghum5kNN+9ZAPumhqX1cSsPXCZ+M/x0y2wnasVCE4Fpla0WCBpi3J8fIO0ynpaWE5GCjkeHpjnA6UsTqfXc+MUz1i50Hs5tg2K5GRJR8yWdUkygSuO41uaj8Fr9h4vV/55W3rlIPZ6Neo2BkRUnUFlY9VrNpp9UyUWZdHGoR0JOpNJ7GUiSmQXR3JI/n49cFfdgkMPVMTz95Ys6GtUC05Bt2qlb93NcXCzexJ0C5mK6AgaOfM17e+VYD0kcamDn4SyBS3O8E9TzA6rN877MaV+4NlPmv/7YcjshoFpumK/3zMNe4w1aLOaPv/h93M8PTIXZSnw8cdv+A/Hn+B4NAeD1upWOcFFf8KJPvTErx+qagHweDx5tfbEw+HAboRpuCEPAzEGUuryErvnsdlQRJFIXgshVN8vfc5TcNlJxJhQlmDYAW0VrIglLKiTWZzOr5TNNaK1SqVQdOm5A6LiHot4z8p6jpY8273dYmKvpIJDc/0O9Io62AapzftmUlh13aBmcGgzdF2UIQXmpJE8b/cI2iHQn+383OCg7Qd2LzpEj/XyWhPWXhVGe49KI8TCGOG9d97lWXtGCMq3X30dXE5jTx9IIpakhtXOmW2D/gKopIJXTWEwS5Bx2pFS5urqhtvbO1KMjOPkgr+RnLJTwC1jL2K8qewZ2+n4xOvXnzDXSsiZkBPDOPLO++9xfXXNs2fPefHyHVKK7PYDMUV2+4ndfmKcdrz37vuM08TN9R1X+1tyjuyvRmca5i3L64yXZVkppaD6TV5PByQcodxT2gltytIOlArHZWVdTlRdqc0a2BpxeM6rrlaY50/Qpg73ZTPYzGYJczU9Yz/dkWPiKu0NgmiBPlO7ejUgQyIky6Ik9Em/wQ9Fo8221sAn72opsCq1Ljy++hbL4yNp2JHHVzStzMuTwZTLbMw0vbBxalhgUCh9oB0rymommePgXg+JSPKxD0aprrXT8jvcBxd4Dj2oWmM40MQ+ahWbT+szde0QV6UFo7evKiwCoVrWSlPu68LTunItIx8E2EkmM7FLA62slNk2ZamdrXZBK84BSYJGq9xsOGI/uHpgkD620KEpb+CDZdQkr7aC66O6BipucgEF5gJLLcQojKln0501Vs8yhjqgGraDjn4d/NIZdb2/tjDt9lzvb5mGPbfXt4x5T4oTMUzcXt8x7XaUshLynhBH/t9f+Qk++qkTbX6F1gdqOwLijEeobft0XS3i7zOw9V9a4/R0QGm8un/g1f0D5Up451linCzxTG491nt/2la0VWJYKaWZ28VaNuaeuGRBtKBarVbQulU/BtnaRAL6+/D5b32tqS5WkbrjS++ZojCEzBgzOWSmwdoMRLv3516dM//iOeCc/z8WuN0juFUjSSytMOuCKmdnDkdwRM7u7hakegV73hdCL+a20u/iew9Sfe/IxkJUt8Wy6s6JOio2IDNUUl4IMfLy7nPkcUctJ/7LT/w7h+7VquIQyCFQg7AuDaScX+8XQpAyIeplxiBn4oSTJ2JKNuTLf2Ylu1cE2K0Zhky8vmIYIp/54DNc7SemaeT66ophHHnv3fe4urri9vaOZ89eEFNknDIxBnb7iWk3Mo4Td3fPGMeR66tb9rsbUg7sdoOPbbb50K0pqzP5wMZz9IyVXlm420HxYXPm79d90loHt+x/EoiS0KBOBXWoAK9QPKtZykxYDqwh0lrZnJNNO2HPEXzxq5iFScJ6HUF6L8OyIHPcjohUqxm8SVrLyko0bUyIXFJ/RSCEeNEDcEzeYZmksatZ7KAEcIq86S96VSTbLb/EKHo23HE02cjF1aEz74P5gdUnwXqdhfVkIAQlRoOfLEgb2zOFDkh5deP3qQuuL0fXK+6I35fnBbxDv0d92f6MA8MJFZxdI4LDQkFspLxqJcTk05Ihh06Yq9Y3xA6JHrjDduA2F1Ya6caqlzN93QCarm3hAvIy9mwI1vM73wexBHDYkdJAyntCssD17rvvMwwjh+WapRyZ1yNPp9fUWph1ppWyva7I+T6iHaCETmywXuxq2idXoYqfvBuk5nsCYbPxCU6ksr5N3+1KrzPfrhz93m32RpYU0KupvuT8HjeXYfRRJdoMrE7iwdiPdxNU+dpsHoz6WtiSEkNzmjajkav1c9ZWWbU6/7J5/8g/psjWWzw7TZxZnBvtYjsiZfv77SGXP/Nw5AvWOBbtXP2h/n8WkLVV2/8BHzmzurBbty/drreDCSFCbBdrX4Gzcfh/7/GpDlKNTrH2DNB7MHkYGHYTKSbGYbSNlDLZdVTRLXlMNajc3d3y/NlnGcfMe7/2/8n11Z5xGNhPBpUNw0AMyQNdYqvxUVJK5GzBcL/bk6JRnWNIBq1p6FwDW2i1UJYTtRaeHu45ng4cHt9QlpWyFubTkXl54DTf8/T0MaUuzPM9tR7tPW82NpFAZpTMEK8AT65xrVUXBLdC1ZX59ESrjdIKp8WcAlIaCDEx5omb/XOGNPLs9l2ud7eMww03wxUxDozDDTmNlHJimW18eU4QJVN0obQZVWVen5iXE6nuGFo1aDVHuz5hIqdo1G8XWtae3UtGZPLTyfD1uRTuT+ZWvp5WyrowxMTeIR6zZTKBrcExum0gHP5AxF04AmvrPb7Gihn8ijZSy9s2agg5C5qCjf0OESo8CzskNqImxjoSiLRVOZYZSkUXz7KTdka/meMGcWjPDosW2CosCbIZnZrtzmCSAF02OC9IP9AaSYzePHCFosQpETRaBZig0TjOT8zlBD4DywgxfVp0cycS63F0lVlnNyZ/b4QIIaOqrF7xarPeE5qoC0aASCua7Mpd7Y0+HFImxsSXv/RFXr58l1IqT8cT87ry9Y++yr/+d/8vHp/u+eibX+XN/ScgzWtIW7fQnCti90KdYbauM/dPnyChsbbZqm2HktCLYNq7bKLEZCSV4OPiQTdMNUj03+kVqZFStqGKBCOQSABNiHRh/LnqqbpSq/fhlmI2WnGghoExF3bDFTZxWTZKvdEwFU3VnCm0oW69dTjcc5oPrp6wpKRkoQYxX75oDhoh+MDG7cvIIqYVC/0QMJZvh/08mG8u7NuKF6Ikr7TPQuczt6JtiQJ9LdTF+sRS7M+Lcn+6p6G8fvN1YixkbRSqB/IIzbCY/e5qe35BrAfP0//wnP9UBylgy/i2lME1AjFa4EgpES4qKRFI0TLhqmatM00jL1485+bmih/4v/0S3n//XYY8sBtNXNy93Lpxqw0nXJ3OLt7HCQzZXJa3oNnzZMNt6B59zYcdlvXIMh9Y19mEu954LsUO5bXMNgSxLdS20j3CDBwxeMTo1e4l7RXiKiuFPkTxZOMplgPLfGRZZ14fXlNqIQ0DMQ/shisqjTHvyNNEzBlJIy1YphzzSE5XvlFPgBjEAC5gXGlVKWU1e6cQkTgbJJO9Egs+GTWIZfxeBYmqk1l85tCG2C2oLpTWmEtjXVZIwhTPThiqdiD1zdUPYQm6NZWd90TTRmk+sbjTuP1KqorTyeUc4JogPuR312BU0GbECZtkq6xakdKQ6sQJ1XMj3+9Fd2Tv2aN6D0U6M9EPZSN6RIP6evUZesVgYlrrISVHARLBuP60ZHnw2lbvmSi19d3RvIZwsTi6TUlWLINHBI1W/VmBYod4e8sv0PqTrXookEaVYo7aadgQjBAC07Tnvfc/CwSejgvzUpimPV/7+tcIkvnk1cc2tqN/tr6THQUwIsUZdmqtsqwn2w/a9Uxtu36dcn1ZZUnwGrnPT1fok4G3qq2vELVeVIc6jWsh4L55vPVbul2bqsZWrc3PArzdFALVKQ5BGhK7aNpfN/R+l58Jap9vPj3RpNFiQwNUTbQUSGny+VyyrRdxIkN3dTfnGoflwAPamalH72FBxys4TysWTKTfsVf/pHpGKdQ1LM2hUpUzunMoB9a2cpofCdIIwZw6RNQPT3ufOWaH363aq3LRn/o5Hp/qINUV2RI7TOUFdC/5/WbGGBiGzDRkdruJ589uiTGRklVeN9d73nnnOdM08ez2hjFlOzQRL20tQ2+1UVY74EpxNXqA4urxpdg4jc6YCWCjymE7GC04LdRazbMsD7C7gmcGa1xf71nLkfn0yNPTu9S6MJ/uqWWmD0z0088vgLHZNsNalFLXrVopTq1edzPrsrCUmWn/mlJXc6/WlRgzazGh5cPhY6rOnNYnmig5TVQKu2khxsj+7iWC0uqMtsp8fOAYPjGn62qwRyNwagutKp88vaZuE4cXrBt0QqmUNtuIcr2EJRtraRxPhVefnCil2VC5qrz/8l2ef+kZQ87ocXXItFNwjZVl7O/mRBDZxMlrgXX17dkrFMUCDrJ9bRR29UsclVOGJfoZ07AKxe1yQmnEkyU7JvDGGMed/dlhnQ770QMGhE7rD0LKAULyNofDfX6Aa++piEFVYAhCF0nWcnaXSDGzajXWolaKLmxQlh+wS2tOVPGxJJhxqR3uAxJHfw0L8ad5Yl6ukaQwum2S7w2a0pq58CsR1eAHuIKYzVEMcHO143s+9z28fPaclODFs+fUurCsB2otPD49sayLuRBUq+6mbEnlzf6au90NN+OerAEpXgeGsyvCGSPsiaubAzdLCCUEcrZrt66rCYA9QG2wm68J9eqsNfO9M8Fqn8e2+nM7C7ip+e25TpMotKgc64mVZvZlmk2R4GHX+qkW4NZqwvIaCmHA+1gmczmosm4TnFeCNFKciaERcyAPo+m2QnXo1RLzi6tgSVmtW+V46WBjlk5mi6QecAwK75PDF/oU8Wb8cWAFKqUtrPVo3oplobTKw/Ge2k6WAEpzSy31XOK8/jo0+79s6OH/Tx89O/BsqTfHz9kUhGiV1TQNXO12vHj+jC9+8QvsppHb22t20+h9pD0xRoY8ELujsG6nih2+pVG8tC/FvuuF3qFr1nojIkpgDOYGYU1dYwYtPiE3hMg4TAx55Gq68Y1hQWWZj5wODzba4+neXCfKSiknPxi6hYv3RrTZLCrP7Gwir2PnqA9XrKxl4W5+zVpmXh++zePxNWhjWWZWmVFZOCyfMI3XzO3AMOzRBCWs3Ozf4dnzd4mSwF//6f5b9pq1kNQW9OG0cjzOzMvMN779bY7zibUcWdYjSEXSEaQw1wNLPVDqytPpiVILb44rT/PK/Ki8+ajRVriOE2PM/JIvfx8/+L2/lN20o6yPlLX7+3kfpnZJj+IDfhzfh3VNLKsdeiGauaf1ujo5xLH4c/1L8zEeS4QC7u5glVxqFqji2hhCNc81dbp/wA1Gcajv7c3YQSOfqGVs0TEiOWOGrNlhlj7Y0kki+J5XtXusZgFU6+qHbCDFgdJWpy2vtHaitXX7dKrKqa5eVa5UnR0mNcgyxJEQpi2jFoH9vON0uiGM4s172xumFzYI2wpJM5PVulCXGSSQ00CMmWc3V3zvF7/M8XTian/Fq9cfM88HHh9fMS8nvvbRV7l/vLderJgmaRptptbdzS0vrm+5mq4YNBJWu6YmXhZnel5cX9UNSu57IYXMMDh9uthokX6Q94rMfvf8PB1SXuvqs8Uqrc122DtJwxIDrw5igAhVGk/1SGiL93qTg/ORoFBLcXZg5agGPafk2swQiSnSFJ5OJ5a1ECSwzosHWiHEwhQiKTYIFUIxiDMmpphRxYOfBZfFSUtzOVIdbi/NnjelweFzC0hVC2s9ufTlQCkzqoVabfhjCAWRxrIeOc4P1FZZi1XuVmH3jrm73/h6twkUvU/Vf3pBR/85Hp/uIIWXvttXL9V5q5EtAjlnpmlit99xdbVnN03sd3t200AeMkO2UjRcOifTMyrr8dRqUFyrzexXqmlqrKnJli3bXJcIIdCiTwDVM0QRg2mqJES6BUmHLFrLFsBE0FIpsrCGE5VCkEYkXlQCXo6LNW17fyHgZAqMN9azRPEeyeD49i5fWZaFGu1bIMe+58UyyLIwL0/WGE8D8/JIigMp2AyfmAbysCPUlWU9+jBDO4CXsvLm8Z6HpyefPXQixEaeFiRU1npkbSdK6QdBZS0ry1pYVihFaQUWLdBgXhdO65GUjY1oxCSf9dQztItT5i0omO/QuhuGsf1ZL35smhPo4zGadyuMMm3DIJuYzZQENdaeWHA0mEjPce+yctt+1vyw78WIUHVFmry1hZFzgSCcM/wOOfXv2t/4d348MEimLXSTZTxIxwA0swUS7Z6IfS07DNOas/FWSl0onlnXVul8vLdecKvY+p/PfpMhCOM0IgJ3t7cgyjLvGIfEPJ84nI6EEDmcDtw/Phj9JVgSmpL1lodhcKTC9UDulhA2zdIZTcATtOPpyJuHB1KKnGb7/XlZWdfiDhr2GfoIdBNMLy4+Nsf3UmeWakhGY/GkyCDe0NEcCRslHLEeYYdKg3Y6jwWzigdQJ/DYNbdKmhCQkAy5QYyCXivaFkQCpVm11Qi0kLyveTI4jSNZjtZPrIu5568r69IHRvowQ7VhhiFEb1EIpr+zCq//u2U9OIJTaOZHRogVCY3STlRdNo6s/d9ZStDh/PO+bOfDeUMxfgEEqeC9oBQSKcStN2QuDYth/zoSRXjx/I7PvPceL18853MffsA4jkzDQE5uQOvZ0OW+aw4ZLMtMKYXj8cjT4YlSVg5Pj+ZYUVZqXQCI3hDfDSO7wTRQ0SnwkpKJjFNmN17bnKXugu430e6bwYjHw4H7kJlPR54e3rCuxfQHTuOutThFVOgzfLqru23buJXaqhdU1CCE4Q7VxnW6o16bT5x5xzXm+oalHmxDrIVWn/j41Vd48/BTXF+9w2l5zThc897zL3O1e8m0v2aIH7AsM9/+5Oss88paTRl/f3zkX//X/8hH3/omwwDjoIyT8M47kWEUmq40VorrQRqCloTMQqymZ2sRltZYa+HV8Z6vvvoJbua9QbI5EjQSdQA1dmHDnLt7fwHPtC1wnzdTh2O3joj2e979286+btVdMZBqAxAFVCo1NAPftJlTdvUn6htU2HQym8bYXwOM8m5TnyOcTKwcYyamwe5h947smxzdRrpc9mQ2r7vqMGDtn1FZ25GlPBKTjcMIIbAbRkLMzEvjeBL3jBSaRkKElKxXsri27bQ88Hh6hapyPN2DCjkONuk2Qky9RwLuIUUfHaGtUZodiHd3V6juuH5+RamFulaWU2GeT3zmp/4rr958zFd+6iv8m//4bwwpkIikzO7qmhfvvsOYRiQFilZ34m/YZN7kWbtVpganGgX9v331J/gvP/FfsZG3KxLg6uqKcZzIw8DVfm/nSLI5ZzaMdLFDuhwpdaW2mbUeLGnxKb1jSue2QI5WMYVICAlVWFqho10d7op0PZ8zKANuMSkgA2BBSmM2iF5n5jozzycen+5RhehOFzElYh5QhbLaOVUWpSz22ZfmHo9W3mB0cGPjpRxIgwX/3W5PjIEoEIN6ADOZy7ocKHW2il4XBCVnY7+qNGQoNgBoyAbztkCpwT7/aqzXzZBahG1a6aa9/AUQpLZhY3QapniwdjxZk3MphHEcubrac3W1Z3+1twAVMzG8Tcs883fOtOLaymZJtKwzZV05zU/uqDBT1pnuZBFEyNXGaUtMxuhqkRBGVAWhkzksYIXYXRO8+d9ZebWS8kgt1oNqtW1ZyUbAaO675QeS/bUdDh2yki6i8esUJSJOHMnRF0yAlsxslLmia3eGqNQKp/kBWQxaGccral0ot58HsN7euAcXFWr3b0MptfD64Z5vvfqE/S6w3wd2GrgpA5ICPnjALWi8l1eDDwk09psKVKy/NpeFx9MDEgsh3BLjBCIEDWgLQKVz1sSzOfEDoccrLq7Ouca6KEO8MunUYg8N9GNXnY3WpPeJTBxsDg5ekZi/Dl6QXlRVeCunZ/u9knNvwhZAJhu/skU106hZ9ulZd2ddbe97gw/sYLj4OFWrVWlqWjEJkZiFnC0bX6v1jRQxfkYMBENzwacFVC2UZpVU8R6PZfBtc3boH88qQNneQ0cIREwUjMAYJhNPF6gLXkk9knLkW68+ZiMsuKtHyolpnMgp+3VuZknoqEXnKG49Jk/WtDUenx749iffQlmpHAgBntcXXF1fM7WRmKtJVrAA3tGDDo+VZkGq1JOvAxcBBxgkuWegV1HuPIMjCRu5R02H1uiQrUkbzDYp+rqMiGRjV7rdUVOhNlhK4TDPtKZsIgB312lNmWfrcc+nldPRgtPqNko2rdvkFe4rzbhLDGMi50yVhRQjKZqrhL1z67ut5WgMRq2gq/VEA0b+Cabn6kmUYCYoQb0vvMET/cwSD9Yd7uquKP/jx6c6SEWwkh1xrN6axUIjBthNA+++85Kr/Z73332H9955h5vra8aYiRJ9Ifc+Tu/xdE+vHqAqx9ORshaOpwPH08EHwDkrLQ0ba2V0yHCXB3ZuH1IL1tguJzSeSGmgrK5zicknitrigXNGf3x64nR6YpmPW2a3uTxo23pStefU2gnF/pkuKi4uPs95BIhfwZ6BqoEPQUai3GBWSMUWbTvQtHGaD7x+8w1OwxM3u88gGpiGHVe7a3IM7G/vIEfSPJCPgVpnvufD98hZkbAQ4krOeI9O3BMQ1lW5f1NZFuX0GJmPiboq62o+f+aSkVh15psPP8VTHVnlXa7DNaNk9rKzzZLUxcZ28ELfInaBow+A7Cdq8IrLLrlfE48sXZCrQHHxtY0h8MNHqkGpHpCjiEOB0d5vT56c2n2G+nT73gOONqjr7BqmhVYXQkgM6coyc5rdDzUorgdDVYzB6Xqdql2ijCVBNGIYkDCA2N8HEXbXI/urK97fveT6xq5dc5nE4ThzOBxZ18LD4xPrWrgaX3A13THGK+IgNtzPByLS7Do2JzxYonTuE3YqNJiriLNRDBbzxDol4fndMzNiPh64f3pt6MViwWJK5u4RCVRWSus9DyclLb6MN+jcLMFyyuScSDlCVPJolR+7Ss1HZllhnW0+1NJhKt8fGOmoObTnK8aXh6+YVi2FaMECi3ZHFBtAquGcVBprs9sMGWU8RDMhEIlk2REZLImI2Xwu2z3rcmBZYFlsYkLw5KdrplShuAt8VWMb26Ts4LmvBYdt/Xl1L0lMW9lW9+T0cn+Dqq3HFpyibq0UJSWDiiX2INUDFc6qbduoleDvr22JsxNdNnfd78Co/zuPT3eQkovDABzvsMmWISi7aeC9d19ye33LZ957j/ffeZdxGBhiNupxs01dmhu3elBq24FuvajD6cB6EaTUPegQIaeRIZqGaucWTENMDCGbcPF0sGalrsakS5llWQwaiK5z8AnC4LAJwul44HR8dKjRWTYW8S42Ep2L4xvUvmozPz/7dw4P+els9GT/797Ew9T4SENkIIVs8AgFpTA3OzhPpwPzPDMOe+72n7FR2s/e43Z6ibTMvtwRp8x4SuwyCJXv+ez77PaReb3nVB4QaYRgVkLd2qiUxps3K6cTlEOinLJVcWUGUWJOpBxYOPHNh59iWhMyFurwnH3cYV6z0VxCjLtLK37g+FrZCDZedfT+jiUbHR7fopTT0S1z6FoWgwH90PIhiKJKEyfzSaJRndHpVbwfJht5YiNRGNuq05htQm+j1ZmWZmIYDMoMwwYXKpXWgxTdscOeQ7VtLhoqEEL2YDUQwgBSqLoQRdndTNw9v+bDD9/ny1/+AimlzTX/G9/8hJ/++jc5zTOffHzPfFoZ8x1TuiOxc0PYc0KHWkIgAq04i1GbaRBFyEOw85vmg/Skm+/b5RAhpcDzu+fcXN1gn2LhcDzw0U//NIenJ6Y0MojpnpY2U7QSNBBbhKY22kWae1QKQRI57iFDzpE8BBgi8XaEpEiqlHikoMyLB5zutMvFfW+9h5xIMft2iaZfw4kVuDapRVQySgaxgYKqHSHpmkUbSyJxJITRdJx5R5BIZE9kREIgpsEcXeo3WebAMsM8F+sfezahPehDx7WtxorBqfDRqpWqli9cBCkJbAzU4r1QgtlcCcbGBCHECMFmo0WfGBxDI4TmpDRDV3oiEqoSYrPpvE2oYoNia+091MsAFdgyyf/B41MdpACL+BtpwnsO/St43yp2x4EOB3C+Yci5qYwJ+Lp2oh9mlrUFUkwMefTy3RZqjmkLUuM0EUMkuZNDw7Lc0lbWcmJtC8EDjkjXlfjk4Ogbw7fvfDpxOj5ZNllWX5zNm/MdS+nQUbfVdvhKtyJ7O4w36/+Ocyl0jVE3p9ye44x+gmLBiLhdN23Ksh44za95PATyvYk/D8d703ytNjo9BOH6as9SbzgujbwWp/SeMPPM4jRhtUWrbP3BoA6jSCMPSh4aKatHA8Prl3IgqnJQy7JtfH2wXMWHVIbgLujnK0D30d0qJ2XLPM+5nWfWsK2PM0TX51b5utNeizn1WtX/henMBOs9yQXGeL4/fpCJ319dqdV0WKIHgqx28ETZzEjtvuhW3b3FHryAe7uexhyphd4gqa1RSmWeZx6fHsk5bWhAiGpWXjmwLIVhKAxxxxBHgmZSgdDUbYHOjn/9gBe8kJo9gKtsBIx2maWHvhh9kUWDd6dp5PbmhiEl1rsD+zhwPeyIBRuD4eu1K+BAXdTd0E7mcFhCsD2bc0azIMH8Kbfl3deA9mc6/3xbAnq5GXpwPTNADZI1d/7gTD67FKaHM0jLvsTHphjE59IR/+pNy+7DJ2JTr60vGbe31RE0++7X3xOsbglrr2D+KGaGbJdkyLaOhhzJnTYvW2OA3se177auwoWDhOn7LrSA/exlu63n74KtPYXmbZltZbpmTN6+tP/dx6c6SHUsOMToVHMhmszg/JUs0pe6cpyPrvB3mx4J28UOXuqHWrYxGUtZCCoMYSDnzBhHrnfX9Om/wb/nZOMI0mBi1VpWWinUQ+X0cGRZjhyP98ynpw12A6xhGcL5zgJr8VEWtVEXqzjaeoK2WkZfynaYi2etVRdAiGoDIAGHjsRte6BFmwZLk04DMCPNUGwLlb4FbHjGBp2qknWwY16UJvaz+4evMp++zcevB772jQnxzSoIQ9wxxT0xRL7w4Wd5/92XPM7f5vF0xTyf+OT1x8zLzPG0sC4rdQ2gJoQehgFJ2Q+yikhj3BXSWNntAsMuEhIcyxvq8cCjZB5kMsi3BjfHTAQSMWSudu8wxB0iaXOnKdWqZfEBgSJC6hNkW4cA3fJIrVltAsfeb2t+UJyhUjB9Wq2N0GAp5po9DIMJojUQsfvT24QNMyoFV/BLc4rwCW3C03oPLZCyia5DGsjTjbG72upwrB0c4IHD35IdBsYyjTEaTBhApXE8zUg8UvTr3B++zTBknj+/ZZomxmHHZz54Tq3Ks2c3rGsjsCOwo62R5U2grQ2doS22do0h6P0siehcqN86GDv1KsAU0CiUbIzXNDVCtnHlOALIYAf03Ys7xuF7qMvCF+7eYT0ujCUwPlVaaKxTRWLbEvLaGst6Mhp3iCSJfqhZP2va7bh9dkuVE3NcUFE7JPuk7a1X0vMVPzmlBxOvhnvwD/7fGBUCEiHsifGKGDMpWsLWpPg+r/QZYOqJnoTB+k+S0JZQiWhMIBlCIqSJKIk87BiGPWlZzr1ehww3DqWqEyeUSCBhCdWYetIRCTmScuT6ZiLmgOQCqTiKtIA2Y0j6Gdj7aMbksz3YnUu6NtoKgHh5dCFi5AvB4NYNHr1ALqy8d8gy/gKA+8CP5J6dySWMANB7CI1SC8u6kNNZuNpnRtlN6c/Xn+ecLUWniscQAbv5OVujNaVE8qmaYegqeoeFglGAS7MxG+t6sh5C8Tk47jHW378qrKVSXHRgOkslUI1u6x5h9j57Sm6fcaMC6HmT2RWQbUl3t4OtfMAyc8vGfNnLueLAqzZRMQseurMCrOsJdIU1wMkOmJQmw7AHyGJ04/1uYhyTaaPCEzHAw6NBoWdFvC34PhE5EA1acIghj0oaGmnAXO+D0aKXUg3sFOsNiLPlAokkA4nR/36rW+iQnfW6fN0QvFoC7bxw9dPeKyXvJngGfJG3Ku4k3sk2LmiuJiOIzVytRZONQxFrInfhOarb74O7QjRFq1CWQmtiFlY0okIabIbU+aDSi0WPp8HqS0PPG0TOe6JWG/9yOC40DgxDIg9C02JJ1xBJDWodyEMDzUhL1CCUZD1P9Yx6ex0u3kpTWCq6Vkg29qbFQNMEMdIGI8xcVgRmmor1kHY7WsqMM9S4ok8LejLdX1DL7tt2TBudujVz1mjBkQOPYjEmhjywUlilU8H9fW6kIn/7crkzzlVT32e9Utz+RRfTi42NEUkIGRH3OZHz+zBSjxEibL0Fuii6C0fOfaHoAcHMBjqtXbf32f/D97uK9/esGo0SGYInR84YTUNkP+5IOdDSQguz9zKrX5PtwLhYQ1450Supy4qpk5HeCu3bOrustpCL6+1rc6PvfxePT3WQ2iaf9n6ML6hlXXg8PBFi5Ce++t/YTTs+uX/NzdU1Yx642V+7aahZ4YzZfPpSjNzc3DCMo9sc2UHbITl7Ufuyn7HdgNYap4OJ5U6HR07HJ5bjgfnwRJlnWqnuYq1bYGlNtyBhQcpEwtWdG6pTmtW1TuKoEIAZp+Lu5SZILf43qoGgxjwi9WatjRHQ0LM8/NSK/l4M6xasN6W1UNbFxKLzQisVsiBjJEQh5J63icMrYlAeyloOzAKdwRQI5DAy5StEA7fXO8ZR2O2E2zIwz5FpHFlLIIhPUNbFQ2JxiM+orz1Yl8V4JIRGyg0kMCQjR6SQGcKeKIMlEAK06r24RqmzTUI2R16EQFwHhEhKIymOGFSX7WL7WGxzMDE4RiViFDOHm1RBF3eQqKj7y61ibupJxAZ0XmTqNvKhblWriUVdlF1tfLtNOy1IORLTyCJqh04ebBAdzan8ro3xpGipJ1orLOuRpZ6QuIIU0MBpNnfxtRoUnWahtgfyEBmHPbvxGjACigIp7ohxR1sD8+tMWyNT+DxjvGJjawG1D3xMFb1LUALxsBAeCi0K5IJmdzsPtm4DCdXG+mSEpLCspHlFSiXcz7AYs7Y51CvREjuzRrL+oCGH9j4UnH6+ompIx9X+irnBWkab5UVPKngrSH3nYwsKF39qagCfNmcTXtgbQXB4WbeZVHhAUroAUQnhDA3GaCN1UhyIIZvBrN1V7y/qFku7ww690sdcxq+v9kRJvLh9wXt375HTwPXu2iFcC3QISLR9dCqPnMoTa1l4mN9Q6srCiYL3gN1WLITeSrE66+JW2xL2ANxZ1s2vT1UjG5Vq/anWK/u38+fv+vGpDlIheP2w4fD2WNaVw8ksO5oqOWe+8fG3mKaJJEZsCBIYQiKGyO3+hnefvWSaJj73uc9yd3tnwt/JspHsrL2e8MAZH67VGpqtFg6HJ9Z14enhNU8Pb2jrzPz0RKsG1fXehOFvjaaFTR/ln6MWn1fT1Iw87egywW6NxNrx6Y0SYJseH/cguO+ZjXcgG8U9bBM8G+umfQ0+2NM93LQRaZbtl0qbTbi8HBfqUghjJklCUkSmXvHIFsBrs4N2LYpQfCNeIyRyGJjyFUGE6+sdYxFsDtKOeYnsdhOlBEIyeKrqkaWstLa4A7abeJYKFWoJVATJjRrU2UbWhB9iZoo7ogc8wQ6uLkRd65HmB6oJUyOiI0JkN90iIRMk+shsg7dCAwk2rdSSZ7EYrIrWHmgiKoUWVk8rGqtbG7Ue4HoGijkTGNOy0qiozyqy+w+lWpCq1Y6skAaGoMQ0sA/PmfLk7CmTC5Q2u+h2ZSlHqtr3tc4IhZjMxmdZTKwZ68LaZiQoj0ezXRJs3EOQQM6TVSLjnmHao2tkfRjQknm+u2PcfbDtOgsObvobG3KXkNLIb2bSx8XcOxLoENB9hElB/FCujfXhkfV4JK9KmhWpjXAwA9+WFE1qM7hiPxQVXLMksgFL/j50C1I5JvbTFaE2jpodzu2O3ZyLpJ/l0dNeK1jO8JrtVfODbOIIh7o+UbIllFZSskkgRDsfwxlzkRgyKY7uMmEm1ipOVtd2fk0PVJfHe0dIYoCr/Z5pmPj8Zz7L937he5mGiWdXz01X5oShWguH+UCtK2+eXvPw9IbTaqbVczFHirWeCEEJ0XtRvWe1oQ1nx3jx0s6QJ3dtUevLNjUT49KM9dnnosUg/fj8eT0+1UHqfLqzVVOdsVVKJYTCaT7ZmHVgLStRwib+S95oPR2PLPPMNI4ojdc3b3j58gXD9AEqZnez9YC8vN2gFjU1eKszdTlS1oVWFmPLObbLprvsi8xxZQ1eKVn46HTNsy/bpeeWMcDW+jZ0FckkBsBcoxVBfW6Pgo0YB2Rb8LABGZ6eifrhSyAGm5HbUiCNgjZlihNalDgNpKuJEAO7nYlp8Wyy0aCWC/rujPhcKCGy1iOlzTarx4Wp2gN1a16xutZKAuiMQSQXDKB+rxGnHydSGBjSRIqRHDM5RFLYEcPogbrfu+aQsGd07QJ/xx0MCCwFE30SmBmAgJZGq2p6rGDVY3BRpfZRK16ZSjCSifUfxEaRGE+bqoWN0ECHYbtbQq9K7ZpKVCR5Rts/f4TKTNPKqSTa4gFOF1QrSz25+LRQ6smYg+7JFn0RyuaU4SwtaQR30jBUqVfTeNBUSpmRRWglMC8zWhOn/IZTfU0gk2WPbK/gr+NkgRaw4NSzcLU0W+dqnndJCU1JmONCcmp/v+Gbzsq3Xrh4du3rwXtGlwnTVrCKEEO0ce6c9XEda7w0UbUfnV0/ugThrRi2IX0X8K5WM14VExeLCoTk66tr+Nr2PGEjR1g1FbC1FCSYS4RW1mrJ2VpXnxQuEC60RaLWc4yRIWWmNDDlgSllhmhrqGpBmjmyNO8bigpZElMaAWU/7EkxUlarpEQqQZYzvOctgjPEd2EM0EkX/ZooZsLcTFBeixpcXb2P1YXIYsL6Khd7++d4fMqDlFqPppkYslU7iNaloAjrWpmX1UdGJGONic18QUFX0x2FLatJvPPiJVe7PT/4S38pN8+u2e32hGwLvHuPAwbn0GjtSF0PlOXE6fHbzKcTtRSCWkaMExf6je2Hdj8O+qyk6j5tnbJpGbXBba2YCeWpHTm0R4PnsLWxkxuuuNsWvUighkSLRs8Npdm4gj7fJSgh25RaM0xVIpEYDdrMMXjGY96DIoEpT6SQSdPIcG3C3R5A1zqbfUpbOSwPrHWhlAOn8uh5wytQMSgIE4K2toAWajmxridqM7IGARqR2qJXdkattnTMY1uzrG5IEzlM7IY9dzszDM5xIEoihpEcd2zOG4gdzlL98HJbBM5ZdRdrHo8NPTa0CWVNqAbGfMMQr6yqUGNwDnki6+iVlFOVRZBkLhERQBpNCkillsq82vC/6Jm0IK6DAsEm5YpaZ1piJYXjJpOoaqSVk9zTtPF0eg3HhGDjOEBNeOr9meLGoEVnF/MqKdi8opQLeRBiKqRU3IUAdw53Y1vfW7War9s6P1GK8vhUvIodWUUZwh13+ReRJBnduVmjvUXro9bc4MrvW7Wg247mNScZwmRu+ldxgDGiLOh6upCB2FiRHqB6r71P30D9sAznRsg2rbdBioExJ0pzX0XXvG1ffXBhP1M6LVi2esGTSKw32Vs3ao7gVVbWdkQajOzduSagbbDKolmVzBb8ld6TiiGTZPJ+bCbGyFpmnuZH5vXE0/zI0/zEXFcI0dMap6GLaZhSGribrrkbr3mxu+JuGpEQKfXEUk5+1rgm1A0BdnFkHCNr3jGlzNIW4lHQE8CJhieI3j/qE4dF+qnlXTTXHXZdVGuBWgKlKutcWVej9teipJCYdjtyzExpZMoTa6zAV/+Hx/ynO0jBVj1trDm1rLjWRmuCYiMuaisEn8gbvcZvvdeiAhrI0eyV1mXh6XhwuPDsP7aV3z2DwkadaytoXanrQnUrGdRdgH9GKsaWjxhjpyvm4ezW0F/DszV3Y27NNkTX/ygwyEijbpWInXimVhdVYm10zrUAEg0yCZ7V9rHXSZzl5gP+QrDrESSyH6/MeHccGXZ7SwSKVU0INNd/hBDcf665q3mzgws3wKVt/ZvuKN5toDp0YxuqV5pbjcnZ2smCVAqZFAdyHMlxMi2LiyRjyATJZ2Bta9j2dL67OfTKVlHMt6zqat8rrGtA9Zz1NipShHpBDdZmm7/HPqt6DDI9w0Qu29Xzfej+iLggtR+ISLBApRWJi/Vh1A4HfHJx1e6MLQRxB3O8J0R1LZw7Xrvz9XkR9vfQOGfFykY8uoB0zMFBfD1XalHWslArLOWRudxDTNRYCKELVv21/L62oEgXffa3UBusnjhU19pgvc0m5zrqUlN2CZNurPuLfdX/7nw/deuhbJOSrXR6C3np58dbT4Sen60Hpcvn97JLfQ+pV6zqwcgOdv/Q5xJyq/LOshdfW56wgCes3lesm7FwO48esWhJH/AaQ2RIA2Me/PyyALvUSlU9f2bYzqOASSOQzMhIaIFhGclxoOlKZ7deXuStotqutV9T7cR3hwRJBE+cWr/uAVJI5DAyREM+xrwj0qf0/tyPT3WQ6vg9xdZBW8uWdbOquRIP0WjhtePEupEX1sNKXSpZEmNI5P3IL/rCF/nwww/5Rd/zJa6vbxiGwVwhFKeAm0HjuhytxzGfaMtCOa3UY6PN/UCCuhoea9NO3eplU2HCZmCqPUDplqcowWA71JzW1Q7C7OPTcbsT65EYO7E6FFZ0pbSAVCXOFakw1cBUrXk/DCaMJIEGIbp2IvjMl5SSKd9T9sx7QGJGVVgWoz1X13uVeqKuC01XaFZBhtYMZmyVshytxxJsdDtAZCIEjHbbRgoLi74xcVPwiZ/9INnGdEMMA7vdFTEM3O3eZzfcMqSB3bB3SK/3yAxSgL4/u+bKHUpkRN2ZGqJR8WOkUZC6sLaFGBUZDYKtbeEwv0Y1UKtVq0OayDGfq/ntIdYTPZwAJTlh5fbmhpcvntuUaOmQocE9wNn7rmv0WrXg1QraZlRnh2o72OWibvXMH1zoa2ytov3yOYBXA3UFrcLpqbGeVvKkTHvTy1gTHp+95hMAWtiSLPWEIkiliTKfvsXrpbIf3uXq9gWkW2xYo4nkjdniHdWs5hIfPEFrFV0M6tS4GkztxJ1WnCjRqvWgkiCGnJ77R179iCc7luaxkU/6oW5JwgyxQCgUtS/VPoW00625zFe2QHUOetCNUy8jo/1XZSkHmhaGdeK0TqQ4MeWXRBmowQwBbA32Hpo9h1VPgyU7rqmsLNTwRIsz05VyExLpONJCo9bKMgdqKc7aG7gadrx88Q7vXD3jen9ttmoY+9XEvhYE7T5aKAxaiVoJKINEQoCr4YZVlKVGHuZvU70v3lCbSh0suQsYGhUlk6JJT4KMhuLogGC9XXlhnyuG7MljZIijQ32m4prnBfhH/8Nz/lMdpDrU0tT2qRbPHpt4c9v7SJ0NJL7bmmWb81OhzI1dbAxJiFPgs5/5LN//fd/Pe++/x36/d74/fhh15lVhPcwGw60LbVkpc6HNjbqcobhatv20VWvWAvHN33o11TUQct4aHXbwjK2J+dKlZgsutAREHxZoFUdTI4nPqswNpChxacQCwxpJa0RCIg5uZDkKOpjwb8zeLI87s2qJNjpCxDzCCHYUlMWskupm4b8YMURXCzJakdaMhVgrbTlS60qNgeIOzylOiCQICYkD6BH0EXUiSc+gZbt2dpDEmJnGW3KcuLt+j6vxBVEiSQaHZ5wyv5Wvdr+7997Z6zEj3gdAEkKxNUJFOVGtK0dIdqjMx5V1ObEWOJzs7QxpIMW0Ve9bQFDh8Wnm1SdPaINdTGSJfO5zIy+fX/mwSHGMPvuXu3ELVtHhBIRqFYyxWxbOtPjm16qiBKom+9TB/q7hv3qxploL5sIhMNdmSYJCzIEQreEt0QaCGj1avKLDqsXWq1nrEy7zK+byBNPKuvsiURoiO0RGq/qXGZqv5uRC0RA8+WiwKioVTZZhdjuyWqpVgc3gX0mWifcAvlU+nuhv8JP3cr1uN5NhoLEisaKh0Lxa7utpq6bgZ5RKxlo8917gXEFcnEAolVKPNF1Y1j1LsUmzcYzOEt1wEhDTxNmcsGoVfzB9YMU88iorVU60ODPslX2KSFLWNlJW6+GsPpJlSCP7ac+zu+e8uHnBGBOt2uvVWqi4f79UZ+K5TktNAhDAjQeE/bCnROG4LjwuHQ2xa2oFY9yqv4AQw8gQrxBx+y4ZyGFiCFekmLnePydn091NwxVn0phYol8qp9PpuzrnP9VByipZP4ia96TAFiGWKdRiK62P1DAJnpIkcPfiJWOaSCoMatnuNAwm+K2F0/GwBSmDGZSo3i+qLrp1BoutdWtSip6b6b0stkz0DC9sUN7m69Uz6LYdfFuE8+cJkkhhtCAl5q6QZCBjxpvZm8MDMGGU9aQ2knsfI4Oa9FycJKGuxYpgY2nAJmo6pKC1Bwy1AEvnwJ81Wx2u20aa+FiTVts2f6uWhRKhJJCQLUiIEmRgTFfAQI6PQKDI7EQANn86kWiElzgyDXuGtCOniRQGOzS6IDP0Q6SnCZ79ygX3S9zXDPV7FRwiDHZoSkJlQMTdvYGBRgk2jDGw0lSJ0k1gZRN3dpbTEFcG2YPCFAdyiNzd3JGTsQ37u+mu2fbO7D1XLRRmq1L1ZNAjJ5rauJazxRVufxQ8Gw/EYU9IgWVp1CdruNdypPaeWcQTGj98FoGDV1AJJJjLdc4G4MQ+Asb7gbVZsEM7W9IG3x2WN9QGKVRS8HWzrFYZtWBj2BFz/Pb3bmioSx+kM0Otz9M8EOMU6K0Z1ZMMEU+CbP/YhNi2SYYE2SYPl7qw1nkjlFStG1zYq+y+weVS4MP5Gl8GKoNQdUPybJ1a73mtR+b1AVVzZFEVc0GRvPV3DFqtDq+G7TWFAZVECAdCKsS2knOjCdQq5GzVclg8aRTxoGzEkJyynVuqG9vTGIwGH5+9KExEbr0+2wV96m7o8L8mApkUqoukTXdo+qvRp05MjOnaRMdxb1WhjOSwI4ZE0IS0gBalyrpBgwKbxZiegd2f8/GpDlI2IRNs2qBS1kisAZId9uawYHOSqhaqNnIw7cQ0ZX7Z938/X/jwC8ynE8eHR8Zx4Pb2miiwnE68+vjbzrqxlZpDJMdzE1Kb0lalFWg1IJKJAbMxqjYDKThW2wfU2ZdTlnuvSZvBOhidGTVfH2mW9dn6DiQZSXlnC6mZ31rSTG6ZqIFxte+XWWbCC7IIDDg91IN7sZ5RaGrwVoQQ1Q4IH6yItU2c6aRnVpM39PtgNfMLdOHyUqhLYV1WTo9Hq0LySskLMY60UUhxx9X0kqvxA07LPcuyssgjT/UVi8/zqdX0XFF2pDSwH+94fvseOU3s4x1DvLJKenV3aT9fNoaWmqsEbklkRbVBm6pCKys1mLuzGJGPtC6kspJjZr+7MgH3ArraPKvXhzc2UHBdac1gl5xdV5dGUoxO5jHJwTTsSDETkxmpvgUhhYEQjVFa6slowO3ArPfmul+P7r34hOrB7l05V+okIeTMfn9NTAPX1y8YpxseHo4s5RXLMnOav8WyLCZeFpt/VZuJNOcC7cn7DU7tHkdlGhsxCrtRiB2lblaV1RKNVFJWalk5kvj4/ifJ8Yar+D5TfGkEiVIJKoQ0GGsvRDR4wtd67lXNQgvcf1DRYhWPBLU+jARCgBbcaqpZ4GQVKLZflvnJtGQp2JcINdh6nZcHjvMjp/WJpc4G5Wo0j0dRJDgU57rHfnB3yO+c/dida2pzrMQrkOaBUIDj/JraZoZ0Q+SKMZ2YxhemD7yEEMNq0J84qYGAyM6TpQNDPBL0AGll8Kp3WSPLKixrpjSLkL3SycPAtNuha6GuxaUWNhQzeGC3KQXJD4MOizoTGJBWiaXaiByd7KO7ti6HkTHeECWxz3duk7VjN9y5VGO0ESKkMzLQAqxCLYXTUizp60RW34xV5+/qnP9UB6nLcr1n9Q3MeUDE4DQrQ7Zx2U1NSEhTckxM4witsWazViplZZ5PvoDxEvcySCUPUl4NrSttsXHU61I2h/RLL7z+h055PkNE/d/1UsyPn8uf9eehwzCWrYfgVUCz3pSo4cVRA8EYz1bO+8Jo4j0hhaB9tIHj+sYWdkaUupZEN6dl7OXPAYpOHLmoqPTyz57te7+meWA2j7VoQQ0bHxHDRAyLGaqGAfFM/bLZbyp6I0oYWcKnJzshuXcHLt6qPUcHaGT7qW9Ygy40NILDSiEYrBSDO4HE7IMdk0FOGFyyGxYzJJZovYGYGPJEdPF3itY4Dlhze8w7YswG4+myfTaFt4TdtdlIjdIWSruspCqoRcl2+Zm2gYCRPGRyHtjtrtntn1HrwDRVRE7My4O5g2DEmz7SW9CtXwoG+YoIWiPaorsaWO9suxVqJq7dJa+JAMksvCiUVih1JTir1A7BCO7YopxdKnoB0ydH92TtUmi7wXxb8uEBtZNovIK2hNHuox0A9mVVxdmWiG0FdDTB0xm5WB1vVVHnteU/OcON9mn8p66F8+Bw+YXaOJNt7WEfzMyOLYVVOrQfvcIyw+cQG1GUmDDLt2awsATXN26PTg4HY/52CYvB/90jpRP4W78efjN0O6i8xyfJtXLYGgsG5UXJ5LBniDty3HnVFEnBpkoINmbkjJqe1zdiSY5nio6AKN/N49MdpGh0GyBtakQFEVpL1GjQ1uaG4ELWKo1Ttaz/3/6Hf8tXv/pVp3mbJcy3X32bm5sbxmlif7W3i+vsOK1nOGueZ4O01kJdVnbjxAfvvsdu6nOrJlsk1Rq1zanXJt5c3FPP+jiqzhLUhpdlhk97dVXFdPWXG6iYSo6EkNR4NUWKM/Ugq82eGZupwbTrjwQjlPhDEQhCc+hEl2IHWQAtfVGpI2p9Jk6jYAMGq65Gc/Y5PMXHVtvrRBuPECxzb8Ew+ePpDciRXV6QNhAYSeGaFiGUN04usTgtErja3XI1vWDKN+ziFVEGz8YXQM14Fjb23Bl6FTqLL4hslkfdYDb0fqMo6jCehkqIdv2fnk4Iwi5OxkrK8CLuPe8wFqI4ffhS/4QHfwANJrQutTGvdv9nT2oqPrCSSgsPqKys+sDCPVBo7YhSCbISMFPiOJpAc5j25GFkt7vmxcv3Gccr3nn5vdzdfMjhUPnwg5nT6cRP/Ld/w8cff43T6RWPj19DtRCbTQnIQ2Y3TqSY2O+vSXlgGib2097E7tF6knVVSlHLm0IwN4UoaBMCAzncIZrgqXCaH4w4s1aiCPn2FvY2KgNPfBTHynCCEIrWxQkNdOqj95L9+PTgLu5gkiSjUUAj2Uvd1myPqet6mpgwdcyZ0iau0i1FrBcUQ6K2A0t55VVF8DvXzmifxm2XdJ/E0INoP1971BWIKZOzwWGqhdpmJFSyG5ecf8f1gCTQDAQqxZibnLC5Bj4x2587RCE0IQ/RqtrSw6RyPB24f7w3irxC0zM70Nh9zVl26YIAIg5V2udamGlhJiTYjzc03ZNjMogv7bnKz4ghM6arLXnLMW/hUcDOlx6itOvldBsvsvmtdEagfnfS3k95kOrVhwepYplWw/QmEgxs76U2grk31Ma6rvzkf/tvxjYJgRwjKSXePLxmt9sxTiP7/ZX9TjEoYlkWlnmh1MrhcKCs1crrpfD89o5f/gO/lBd3z3jv3ZdMY8Z6N07FbjaeWV2Vr70h5EQO9ZEaOMRnmaXhxlbde9a7QRKWMjbtVE8oYj23wTdo0kBU00FtxA0xtpQ9zLYIsb6aqKKlbtklLsLs48+bU6At2C/GJuv6p1apzszSZuyqEIWUDY9vrBQCtSrzckCZzcNQE8JAChNNK4F0rkAtdWY3XnGzf77BDEJ0/VnxkQGeqNS2WbCcvzqcwuYVKI6Jm/BWnBGndkhiGWwrxRq7TUm7a4a4J8fMMPpohbAzaMPqVQBzHvHxA4oFzbUZzFyasqyFUgtPxxPLulJqZakVZIV8j8aFJo9UHkEKyAmRSgzNJ6cm0iCEmJj2gWk3cXV9xYt3n7Gbbvjgvc/z/O5LrIvw7svA8Xhkno/UCq/fwKvXX6c1JWPZ+UBkHCZyHri5ec407piGa67GW6utdAANrKKsNBOlygDNHDpgsAVSA7TGcvom6/0nSK3EUqgitLyDXLcKzggqVjmoE0GsMnfizeZfJz6PqZOKti0MalozdXf3yGAUgU4FD3YuqJquKafEUAamcEXRShpGQkysRVnbq7fYmVZ0e5nSutu9oltwOv9Ee4UljriE6PZGCRP5r4g0ei7UNlTF1qVp45If2itNVuvH+pQ4vXhTFqQgpUDLnnJXQz/m5cThdCCFQA7Rksdme9OyPYP2AtYLU98T1rm34F9Y0VAQTO+lwBj2ZBkZ8xU300tiyOQwGjtV2M5VVRuSiPTr1e9V93j3Cs3380bVPNdcP+fjUx2kziwuXzbqlVXF/ru1fmXYNBfijBfMU00w0eoaIrEEwr1wPB3Jw8D4+Ah4o6811mJ9ltYaZbWgcjPtubm+5fntHe88e8az2zt2k7F6urltc2Fv7Y4MPo/KiAbnIYbgpIxejnvqJdKtVWTbqH0Aq3oOptpYy4yWCmtB10powrDYiPUXty+4u37x9rLoTekL2EObmo4lyAV0cgHzvQUO9EzPGhdCJIrNVxKHCmLagSSSwqBCiz6nRiI5T0AlCAx5QoISTxlt4llWsJlKkhniaBkcrk/yFYA6qRDsEHVoFIdFjSLmENl3Qjf+T+1vO5ki0AfFIeamcVofKe1ACplpuDIKbZgIMlzwW5RSbEJqqYVlMQrwvJhh8LIunBYjMRw90SmtWUUcKmk6IakQ0owkc4GI2W5DkGDELLHKi6aU2lhLZVlW5tMRITLPb1iWV6hmxmmPBOWd967R+A7Xt5U8PFDLuu2b3XTDzdVzch65u3nJOBghZUxG+qirwdqIZfnq8J6IkDSR+nWywVYMMVPHPdKU6C7wUxhJGmwSSXAo2cfidPcTRemDp7cVpt5DE8XkG8F7sV4BVEGK9T5SMOKQBjto1UlSirEwQxBybOT0jNYUccf7h0Pi6fgNWinb2SmxnysO82s4r3MUnGUbgo0B6bKNECLjcM04XBODQdIpJGdRGoEhBuvXiO+pWmFZZ1sn9Z6lHVi5Z3ad49Kw5KZAqdZLNEgyEIKa/ZRYorrWBSERQ5eydFje7LYA63eLhY7WhbgeeGszwwBQguu2kkQj+ogzX1VoavZIPQjZuVu2s7dfJ7m0exM7a2w4bUccXA/4XTw+3UFKemfFoRVnltIqFI/UPlumM3+Mil63jaBYHIsOmd0/vHHxX2eBQXOWXa2NUm266ZQyKUY++NJzfsmXvsiz22f8b1/4AjfXN1TtQrxmMJ9Wc0EvyxaQ+kBC03qdg1WtZSvBrQckiDpd2gPU1u/xEFVYWdvC6/kV8zLzdJh5fDoZqeO+EVvgf/+eH+CX3r5joEbPHGOA5Bh/H6bWCROxN1z9mqHn76g3bTHbn2iVWtQBMw81hlwLFSXZRNi2J7UTEiIhXxMkM+U7kEKMwvXujtJ2vDnuoRmUFlQIkhnjnl2+ITKSw+Sv4eytpqxLB+gdUOhN4i2rs+89S+7QLyJ+iAiq0b+b4Nhm3jRUVl4fPmZZH8lp4Gp34zj8RJDsjuKLTXCeD6x15nA88vr+NaU0Hh8ry6yUahOIW7Mx200d1RSICXY3kTzAtAvs90KKym5vXoQhmu+ZSvCptCBLoeiMErm/f80yz9xc/TRDVsbplpubz3CF8L3ju3zutOPh4SXf+tZzylqYn8ygdz+84Gb6gJwmbq/eYcgWnESFUgpPj29Yl4VQjjQ5eOC2tXOllSuHnM1aQNE8oTfOOq0GBbXU0OLWWbUaFBcCEuQiKEEJamSHhiWPokRZCaESNBPaAE0IJdqFWwUt5rk0hj0pVPOdC3Z3C4ZCjMMVIe5IeWSY7gghmdC/Kl/75n/k6x/9Z8oyn3s92OA+a52YK3+n9INVZkIlxciQDfbaDbekOLAbb9mNtxawUvfkEx82OfjPkpkKBOG0HHk8fcxSTjzOX+e4fkKVhSVYb31ppnebl8Zc+8Rbo4ETlJiEmITSFub1iDAaS9XZew11aywjKATf9hXx47Gnmpg4vFUjQoixRXMYHPLD4EvH4GsLHqDO1WXvnVvFzMXZ0ftUZ8eeSDQbrF8IldTlRXb59/nvjLvsB7K8FaSadKP/foGtamiA1t7ePDdRO9RQmwnqYggMwQZWDSlxNe3ZTzuGnMkpoaVQqnt6tXMl1arruPSCsq3nquqyUqG/h14WbwftVkNgcdb874oW5jJzLCcO68xhnd3EwagWHva47Lde1hS90OxkDunl2ncGKfFr1jke0q99V5x3bN8/gTsqhGC01hAyKe5tYqyY+a0dCNGbrz1rtkw8hEgf3xG6fme7Cmf4x3Nf/+FFx92rrd5nuLS62Z7lLMjyitBwfHWxeGkLS5lRGrmYfY2x5QzeXMpMa42lmrP0Ug4s9cBaGktpLEUpBdbVKqHiWtINxhUhF+vXxKQsS6QlJS3KRX/bqqpgjLQOG8ewbpOe1/XEWo+kOgCrEyuEYYxM68T1/payVlJTSlB2+c4PWNO8DGFnSYr6+EDNnvmZT6KihkToOUF8qyL1ii+0SHIvwiLrxkbUi2t87pn39SxOS/eEk+6WUXGTqW3N98km0nzVuZ6wOzgEzm4aQZINPowD07C3IFUaLTbzfAwjgQU8Sek2Ztv5ebGYz4FLXIhrQtWcpo3UE6PLDKLJJiT0z3iBP7hjuiuaPKgU66lJNSMAxJzEtduk6QWUfX4YAaaTwnoCphd7uW3klL75q4MkfnCyEaE88T2jC/6eRR2KVz8SOmGpHwJsCXTfTpfXTy/JKGplxTaA9rt4fKqDVPOMSzeIp1OP2TbB+QL5dxfSWQVqh7EoNkKZc1NdtmzgrH+xabpCzom7uzv208S7L97lMy8/w243oU2Z5xPzemCpR2orrMXGdyzLiXWd7dZq18SsqBaaV2ngh7pEuHBNaFxucD/hsN5VrTOn5chhPvKt+495Oh7QNaBLZDfs+eCLH7IfrrjbP+ekqwNgfi2amjOHQuhMqc5MFFyb4i7sNIiKpr7ZTNQpzRUA2NDFgPv6eVg0w8yCYELhECaG8B4hTKCRVt1KJmLBpka0ZGIM7MeRlDJD2FmPUc/BqUNyogbX2n334KRiB6tc3He1ytTaIr5W1CytmlZqW7CxF4vl4e3E8fSGtSzMy5NBqVoJ0e2fxB3S1RIXVSOGSK5MMfNyfG6C8WdCKbCslXmu1NpY1mJjQ8DZdbgDJyynxumwIAIpqvfSlBCx6x0qIsL+qjLtTtzczKgG9vsjV9d35CEyrzPqDLanp3uW5YSsAzd8CCFQh4AGQWRA2oRoYH58ZBG3AnPI8vD0RCkri1f3trUUgnLSRok4y9AYr3FdCUWJVGg+WDP0bo5rn0QN9gtifnTefB+WZpqa3KjZKDpLPVHbAhFSGqEKsijShFCUsNj6zClYWywkNI6ms8JMpVNw8EoxqYKIC8AzV8Nz3r37MofxkTdPn3Ccn8yW6WRMz2kspGTvWYLNk7sabshpZBqu2E+3pJDZDTfEmMkpMyQbfBp9DlSMggQTwM+r07579dgKKgshNoY0gN5wKieeToWiwrGszO7lWVYLnq2o6btrRaqNaCnlyBKEFATVwdax98BrWyj1iGL0fXTbuQ5V9/6bM31DMMd5CVRfc60VJ0z1RFQudF+dDejsYkcw+pgPW7jxLVLRuq4c68pp/gVAQe91gR2b56z5ImG7rDv8T340iJfu0hkn9tWabs8pHpjErd7EL35Kid1ux9V+z831DXdXt+Qhoc1uwFoW1jJ7kFpM/7IurGuvZ3pVs1oW5QsR8EzMMHNxyxy6wPFCKW8j7o0BuNaZuZx4PD3xcHgkt4mh7cgh8e7Ld7m9umNfM2szF+6NN2EiMwtQTljQahmX0qBa5VQxmMZ6VD1lahs2ra1XUtGrHONBSYfPtJmOQiJRJlK4Icie5owsy879ZrWA1kgImSnvyWkghUyfXQNsjXRzl7bzTrW3aS1IbRXoxe3vjLvzdmlb01d19l5gwejaC8t6ZF0XSllotVBoLAWnD1/kmp3JJHZo5xwZphEQdiVY72EpHI8LtTVO80wpbVu3rcGyGoQ6r43Tsfoalos1fL7mIcD1TWN3tVKKcvtspGnlcHzkcNrRgJR2iAQOh0fW08zIC654ZiLwZHqZ0pTV4d3VxzVU753WWpnnE6WUbZd1CBpVFlHW6MshWOWbiq2tTCOpyUebbp0LtlTeMiVLTHK0RGOx9RjUiD0VpRWj5KcwuoehvlVNBSPlWdIl5mMXQ7KD1V8z+iwkUczNPjTbYxIZ056b3XtE9jwejrR6tB6QWjEeY3eLN1Zf751O+YrdeMvV+JwYMtNwTYrJ5Avdp9B1ZyFgWixtBvd7pXrumlkSkmICnVhqo5ZofcwCi1dRtQ9VcBGz9QErKkKtdp1qG840/s0goHoyrLaflW2fNMWSYz07WYo2Y2AG861s/rNWOwZxUSR59ZyCOkHtvN/sswdP8i9ZfzYIdl5PzMsvhCAlrsUAi0+9eqJXHv1y+uF0AQmqWuJtbB3ZTgI9/3N/TssspQZyzuSceXZ1yy/+4vfxzvMXfP79D9jtJiRAqTNaK3M9staTzS5arSe1rJVlqcZ6S7a7VYMvKrFGKMbcEtcASRfaedOxNaHWSG3K43FmKTNFK1UjWfZ8ePs51l0h6UhmYpd3XLFjWANBz9VYczxafEE3DWZlhJuJdrjDv8vFCM1zie4HqMN9Kt1TTrdyHtRYWGCkhziaz5eC2euYT59t15XG6odDJqWBnCxIRRkQslVeF8iJ9vuo25vjbBFg/71BttshaRALPr+pMy4vmZedJWbVtl9/OU8NDr7J1V9zk+CETt6xasMCpmWeMVTy0Jz+HZz4Es5BqpiDyTjAbgpWXRc7SJalsC5mIhyT9afGKbLbJaYpMAxKzo1anjgeB2ot4Pq59VioayVIpYYJNIPatW/0yrlthJ3WyhakjOhj3Z26fUg7WkWrK3yhC85tlpZVetrJLSl4gqf9FHTCpaeLRT3oCEHNNik00/fYWWvvr6oRFsTtzloCHXx9JnEo1GaRGbGimqtGWD1xsiGVhp7Y84zjxItn77LfX1NYGMeR03Lk4XSPudOYf51pswKBgSFOjGnHkHYMaSIEcyuxhNYL4p78CvT5u0pnJNIjDR24VlwILoGmwtWwstSVxWcyaSvUZXEARaEZLzCE8wDIhts+YX3vouanWZvPzkIIqXtGDoj4xfN9XNdCK4bOlNn2ZYzmUmIeuRs09Z2n8LmPG4TmOqnmqIzQEB+yWprdk4fjI/eHB+Zl5bt5fLqDFGA+Zl2QdpFp9z9w3htc/Ax6M9SeSXpvRS9haHui5i4QU97xbLjlw+cf8H/877+KL33+Cya6o7CsM68fX7OUE6vONjupKWux4Xqn08qymBZrSqMz9gyPtpk3lnXEmA0+2YA5BR/FoERqDZxq5ZtvHnk8PDIOI7tpYgxXfO69LzLFyUSxYfDBcQU5uldbbJsg13N4oBnLpjrzpjn0KZ5e4ewyAZ8aZQezb71OqMTfoUj1JqtVjVkyiUyM18R0fa7jdEVYEVlBKkVPVFZChGEYGQZTtBtL6gpxunOt54RC5CJIqVpP4SLLMLi2/7nj/w226mn1as48CFWrjxIpNJ97ZfZA5hgdJZIw2nm/is0r4c6kclW0v+w5SKWkhOg2MMGdBpxu3ZqyepCqNdMa1AqnxfRJD29OPNRKjDBMkZSE65vEzc3A9XVkv1emaWVZX3N/PxPjyOH+DYFEqBPSEhLfZT9coZIRuQdZqc2u52Yt1AqlrOYm0SqlzCZO9yCBKOL0bGODFb/u9rMkkBKoJKaQsDLHIXMaYjoHSBEN0KpS1oY0IVUXpDesklYbbqlVqdFmqYkGny4rRohKlqFHsdWcUjKoqi60UiitevXlAUGK9TWDQdf7qys+N36JtazsdhP3j6948/gxH33yVda6sOjBxMlEJGQiE1O+YT/dMg3X7MabLYEEF4E7mbSPtvDZmEBAo61h0WVL53o9PcQrRIUUJ5oG5rKwFHOeb/XEcjqZwa/a2goRopNqNFSqrFSZKSTDaNqTucA0G9USJZGyTQsY0o377UViGEGFp8cnTocDZZk5PrwBGik1G+HSzwLp56fQ0z5UTdfVGbSSCQSK9uBuyUzTxnGdKbXyzftP+Mabj1nXXwhB6rJTp+cL17+24lT9AO3JgG4hqD9Bf0Y2hX0nCFxAR0PM7Kc9V9Oem/0NN/sbSjmxrkcQWGthWVeWtrDqYlNt1+rKd8y3LiZCzE4dXUHLVhLLxfee4bz1DhU/iAWqODYtxGpu6AMDo4ymFg/ZF0fdGsHqpADrzVwQNBo+a6b3c/rV6dnvxRfbpb64fn596Q3Y/tuyQZYiyTRQm/7dYQmxrdq9xsB6PuZrF12A6P5j/v46J+atKuo73uAWoLYEsBvN1u/46s1fPTeanXXZf7bBvt1pHavWxC9C2FiPeBp9saKkUz0MGlE/vNiEJuL8Htky8NYsfmW1XkgeA+MYCRHGMRBTYBgCwyDk7FW4qAeZ2TLYajY1ppUTg8u6NkfDdh3fouqI9xE2dmvshZIzw5pvpzMAuKUu2msPaNJovWKRfq/0vIgvS+GOTunF/XRCBP3KOdlIwGnp4QwZvnX7z0C6+dp1yKv7dp4vewgQJTBIJgSYxom1TJyW0chPVNbqtHeJPhomE2NyWDFejAC5eAsi22ucDY17oDZdV9i89BpBbecEF+vHEEkx0VozD7zus+mwn7z1ka031MHD1ocvOpFCtbOY7c2FDXKP3keKG30/hUwMAxoaOWaUdp575j6V589x3vUXR6c/fP+7XKY1tWSkWZBaS+GwnDguM8v/VUHqH/7Df8if/tN/mn/+z/85X//61/nbf/tv8xt/4288v21V/ugf/aP8lb/yV3j9+jW/+lf/av7SX/pLfO/3fu/2bz755BN+7+/9vfzdv/t3CSHwW37Lb+HP//k/z/X19c/vzVxeILk4dPshKrLRLjdCwMUvdvuiHhzASczaz2pjmO3yRIqZD975DF/+ni/zwbvv886z97i9es7j8Q1zWZgrfHL/yNPxgcPyyGF5otbGbKNeee+9z/LinfeIITPkHQIcj69Y5kdziUjnQwphW3BgsJzQkBoIayStmdu2Z1BhKpn9KZMkI3OlykKMlRzNQaF7om1nAyBV3RxTUE2wNuphNUPaaKMaiKAeU1pw+EqU5pFew/l775fVunoVhZmKSkDi3j3JRoJMgG4iQ5WChoVaV+b1idJWELVKKo+kNNp4bTGoj61quqiWt9PKDoHuHH+Ool6F6oKyGJSnR8v+KMBq11Yr0irrfGKeD5RaWOeZps20MO5SkMNolaUTHaoqIbStqt/cS92grg/v46KC7b2IczKlnoGrHwhCjBAH+43dPlDesfEmORvcd7UXpkkYRyFQoFRWrZQl+hp+RZTM1fghY7K+6m43IAwcjyOl2NpYZbEKKSQSiRATMY00baRhb2vI9VxNK9U9BpflibasFmf0HNBNSF+ZwQOkjWVQig+AhM6mpShxtoBpmjG7sdJs7+YwIElBgk96juRNjB62A1M8Sai6MJcja1spujpEaM8f1NCE6D3DnLJJQ2qjhcDz6x273Agy83S84rQmOFZOBa6GK57d3DDmkatpz26cyDHaZGNkC1YpmnZKcDq7mITC/Oy8aiFQFZ+uU6lq8JzhYzY2Z58nUojs8sSyrsyslNWYwhrFjWTPZ1SpRxZZSKE6OcMmY3epi5GIMokdmYHYBqQED1gWiHYJ0jQg4w1y9cxWZlY0uug9nMljvaOrnggYtOgSmrZ4YmH15dO8cD/PzGXlk8cHTsvCq8cHXj0+UMv/RQazT09P/LJf9sv4Hb/jd/Cbf/Nv/hl//6f+1J/iL/yFv8Bf/at/lS996Uv84T/8h/m1v/bX8u/+3b9jmiYAfutv/a18/etf5+///b/Puq789t/+2/mdv/N38jf+xt/4eb0XR/0v8bnzWSyXf2DbRG/9vruYm5GlV1Hf8QoC5JgY08jt1S3vvniXl89ecrW7Zhp2HJcDDWtCH+eFx+ORh+MTj/MDpTTmuRBC5OV7kXF/66ptM3Bc5hkRN1+Ml+/egtLWkPfM1YiJJmAcdSCijC2yW52evarNRgrNoKWAMfLC9nHYroj2ICVoFViqiTCHaM3xbkkjWHAK56ypO1BcQodbX6OZA0ZzZo9NHh2cDZewNHn1771H5Ma01YJUSokYzSE8dI++M6b4HfdRLBj697cx8/7evAeFBVFloY+66D2x7pXYajHdk/dkVJWQrBcVJRElW0M4iK2bdiZNn7P7/nqmPztXK/5dLdOXi/cYxA74ENwyRkw/RVDGyROoIGSbmsI0KkNWcnIoU6H0TW+RgyiZMb4gh2tElJTtcxyPiVoT1SseRDd39i4UVVWCjcuiNJvu3FphWRRpBSknel/OHP/7vVSXPFhyZjOfzGF+Gxfu1XpsEKpAE4ofeFK9AA427oKQrCfWrCelMdv1CecUZfMirBfeeeoGyNqo6g4jHYLzmVnBq+Qmwm4wF+/DaWQcjCF3XBKpJnIa2I1XjHlgyAM59T5UZ1/K9j1cVtydGSxmn2U9oYA28zNsqq7BZMu+7B5bHzeHbEJhsZHstVoVKfHsSWr0dRt1UlugtkAfnGjDRN0jUAORbP1dTcZDjyaW75qomJORQ5Jd10Vniq4g4kM+nd0nwatTp7/Xvof6XhOfDwZzOfEwP3FaVz5+fMNxmbl/OnB/eKKVS0HMf//x8w5Sv+7X/Tp+3a/7dT/r36kqf+7P/Tn+0B/6Q/zwD/8wAH/tr/013n//ff7O3/k7/MiP/Aj//t//e/7e3/t7/LN/9s/4Fb/iVwDwF//iX+TX//pfz5/5M3+GDz/88Of1fvQ7vl/+XOiQXV8H9tMev86+ro4f4VUBwhADYx7YT3u+7wvfx8u7l3zPF77E9335+5mmiYflyPytr/PT3/gaX/vGV3l8uucnf/orHE6PHJcDp/VAiIlx2JOHRCMSfKQCvUpLgZQTQRQc6upahXbBAlFX2bNCmCuUxo5EjUqWQHLjWfFsvCVhjUIT08WaA4RuMFRHXnovB1EY7LVqxoh+sXklpbTgsNwG1/T3aWBPVWOFzacDtSyszcr7EAemfSLmSo6T9xDM/0+pLCwUPTKvJ+6f7n2sgjmqB5JDledBdvZ+eyByWK1DVLD1Rgw/cialzn5XF1qf2eNTVGs7W1TZXKxO3TWSbvRJxylEh3lsSOEZmpUzVs/5bZlg2Cq4FtxRRNXhTIVuVwP+C05zpjuUeFKiwZmW53UQ8OSidUhYqD4nqnmP044lRaXxdPyYZTkxxXdY6xti2COhEVMiBLNHAja3bO0CXWFrrDQRGsFZqjfUVkgPZi3UamFdnuyzVZsx1lCWtlAQigpBhVpNP4aqmQlLImtlwAZrWo/Q3rNs0Gxn85ltGBJsAI8UYKBD8r0amduBtR0oas/RtVI9yWm1GrmgFjQ6ScZNcZ+OTzydHnjzeM/j0yNLXYlB2E0D+2lkP40+agWM9BAIUjlPrPUD3CH1GLqUpItZLdDYNO+LCltxAaz4fVCbRoBBuUMJDENkGAdCMWSlqd2vHCAHIcdAisESnWYjUsyGpfl9tXZA9v8FsvUr6VOnjQFJM8az1uB7K22DKsV7q8G1jOraqf6z3rcsZbGemfkt8frxnm+8es28Fu6PB+ZSWNeVPrbju3n8T+1JfeUrX+Gjjz7ih37oh7af3d3d8St/5a/kx3/8x/mRH/kRfvzHf5xnz55tAQrgh37ohwgh8E/+yT/hN/2m3/QznneeZ+YLTv39/T3wMwPT+dEPUui07S379sNV9Qz3KUYDVYTOgNungbvxmnfuXvKrf9n/gy99/kt8+NnP84Uv/iIO85F//5P/mVffeM1//C//iX//n/4Dx9MT3/rk68xLnwFU2O+v+OAzn+UqTKhkYh7tSPLMMw6RUUa0FtM/+GG2ier8k2gVayLPSjiYQeggg1OJ/VaLINF6DzVDSw5HuRCsqVqvQiE6i2qrG4PCZEdCTUpLioaG5h6c6hnK8t/p2q2mzRiGZeXx8Z5lPjKvhdOykvLE3YuBYaroaJi4iaktEMz1xKk8cVwOfHL/Meu6mBpfxIJUXY0lpgbNaQtOO/eqid7T6UGq+OFmMJ7Rb2eDmtTYg+qwZNc3FTcArq6DamWBZlh5cqp5jjZBNYTk8E3YMuYYoPs+9yClmGDcDhTLMju1u6n/3daA7r0pqy6VGeWEBSDXYjmRrk+bDUGowwCaaE0oq2X1tRZzNwh4hQX389fQKkzpBXP9mCwrkiaSJCRFGEYPBN7+97UpQYhjJKSAxAwpowprUVptDOOeGAdqmTkdks0MK0IpB5pWjnVBtBHU5AXr6cTh4TXalCnsSDIwDhV2e2dOGslBxQJJr7J7kGr15Nep+eFfQEYalVM9UrUytydmPVpokl7VmDRCG9S6WrAqKxqS7dNqTjBvHl/z6v4TPrn/mFf3r2k0bm727MeR6/2Om/2OGBMpCMZKDYRQfC30IBWtOsesmoIkmkSaN8/6XK/ahbO9R4zvRZHNizICQ47sWmQ35v8Pef8Watu27vWhv6+UUmu79N7HGHPMuddca233UnOO5+Ah52zBEBHysEUfNA8hURFDHiQBhcAOCT4kCAmoCAr64gXiY17Mq5CEIEi2IAcSyd4bOTlgON7wst1rrXkZY/RLa63WWkr5zsP3lVJr62PMteYibszUOmcfrfd2qa3Wcvmu/+//cdjvWHJkWhZDG4uwCxae36XIkCyoakS9eJ2aEjCvL0lklJGRPdbi3ZqmWvNR9yrdU1MPpYZkRfgtei1q9V/GwlEpBCqVLIkqylwWTsvZuDuzQlU+e/Ml/+iffZ+lVOaqFh5HnEP466mpf65K6vvf/z4An3766dXzn376aX/t+9//Pt/61reuLyIlXr9+3d/z/PjTf/pP8yf+xJ947/nmwpun9OEb3iqyFaq8ebUbMbbMhpQIIXBzOPLy9gUv717y4u4lL+9eMg47Si5M08zbd2/5/M3nvHn3hvvHB6bpzGWamfPiMwpgrdeHwaxOeqX2GqoQacJtzSBrW7CEftGmQj1p3Io7Q+ghOQRjhRbjx7OQAE4fZCEV405rMTz8GtxD8pCgelFJi3eD5aLW626eaVP2ldYKodMNqaEhrVB5ptaBXBJLsXBfYaZSmPLEJU9M88SyLMx5Iam1TDGhXiiSPbwoPXeoGzCL0Dwohe5xte93aDmb69PrnzVb3/KTjmbE1tQKP3cIeg/nhJ7H7EuveVIfXIvtetdH7T8+rO3HyQ8F6RB/AaeJCt5w0ZLfos0Oa6wEliep1T5jFEAwzU88nn9IimfKckTLQBgioUbjofO8yVovY2FEaYZe6+xZ1QSgWr62Nh9iMz/ohj3FlVTWQq4Fiv0ukr1ZYXGnWN3bt7DfmsNzr70DcmbbF54nNU9+cWNAadRYMRi7eJTRgURt/0nPs5VamPPCvMycL0bSepkuzHnxaEZBiZtQXlsVDgppe7LNassdi49XsEYZjdi4RQPE155FerbLp1d7+ph6xD6I97GD4swkQwzsh9jzYDEEghbE89g9ShR8zwYbmxYa334nzYD1OkgTXS2VssmlbBa7NUd0+VSFK0yS2pptQapanF2nqoMqcK/zX4CS+rU6/tgf+2P80T/6R/vf9/f3/MzP/AzQrFGu5EJHn7WY1qoXXAh4DMVlm4hVSg8p8emrj7k9HPjOx9/iX/vu93j18iN+42/4v/Lpt77L/dMT/9vf+d/54u3n/L9/+W/y/c/+GV++e8cXb99aKKQaQ/j+sGe/2/HqxSu+++l3ubt9wd3xBUYt04RnU0YVpFDFGQ+C35UEolgXXmuEqDBWuPHV10JMHv1SaVkQXHgG2+ie65IsBrzILQaI+eRiwBFNVuvUlVTYFAXWlijQ7k01MVTU+hRVFkKqRIUUlF2sSFyovLUQzGXkPI1UVSYtFK08Te94mh9Y8szD5Z5SCuMweOPAwC7es0t7xsMLhnGgaqTQimN8CnWmlDNW9+S5rprBUU6lw82rKyyF0ppJFoK/VhEnC90RB+9/5Gsmpj0x7iyvEEfb6Mb86mvPBbL/Wbo3bILQWrG4gAevuXGMnE9nzkZ7U3Oklh2duBchxkCKYi01xgMxRvYpMYZIrQvL/Ih6e4ZaMyUYawci1GIhwR+++aec5r+KMJLnO2rZsRtfcDh8zDjs+OjuU/aj5V12g3WnNp44U5q1ijFoLAulVubzE0xnQlmI1ZRZlQhxNNYGnV15Wuh10eIt7RXJi7U2DxdKPkFMxOSgFynuuWtfZaVklnmiaGEuZuBIGggpucqwejMJA7t4i4iVPIgkJOwI7tWEtEO8iLnOE+f5xP3jl1zmM//0B7/C529+yNPlibdP94QA406AQj4crK9TMFCIlW14eA8xL0TE82/F157VDIXhSAzJw2OL753FUHh+nm6GKv28AWtYOqAcYuTlYc+SKwM75qx8cnvkZz55QQziXY0rmp/Q5dFQxZeCZgM+ECd0HNBdQGOjInOi3GxAh7oU6lwIuFcVhBqVOq42t6haQbARd5DE2obIBViUUIWULZ/GENAAKe4YohkM2fOzzVD7F+JJffvb3wbgBz/4Ad/5znf68z/4wQ/4Lb/lt/T3/PCHP7z6XM6ZL7/8sn/++bHb7djtdl/9xT3BstH5W/hxe27rDGx+FxdQKSRuD0c+ur3jp159zHe/9R1evnjFyxcfcXN7x5cPD3z2xRf88Isf8iu/8k/4Zz/8p5ymmZOHIiVaMj1IZBhG9rs9t8c77m7vGAdjIOjQ36sLcCtfqlsubkmLWU8SxARcqOjQam2gNyUMGzDwqkfsXNEUmtVXtKSUOAjNQ02tDiI04b8m+FeLtiW93evAmqu1Wi91nLJEdcJeRUJBmVxQz2hNFIVzqRRVHqcnnqYnclmY5tlyMWJjk4JZuKIB3TfUW0SJJsA9VGIN3rxVAAviHlRrg6LeWtysWL+n6iGtBlBxC1axuQvRwr7VC+mSJK+VSkblI62SXtaxaUbDKnK6B1DdKGrhtPZdqwvVlADWcLA0T86FYDDvKcnAGC3sNISGmnPyAQcBVa2gwTNTgjp0/zQ9cJ7fohpZ5hfUsuew+5jb6cJuvGFMe7+2g5cfOVxH1FqcZfM+5tlYM+oyW+foVoukYI0QLcRWoQNr1kZ8tnyKz4MVEC8Owx5sTTugZv2sOijAconzcrI+Sdo6wUZwQtTI6MCWHSneWBmGDCAWHWn1h8XrwuZl5uly4nw58fD4wLuHey75wrRMxCAseSGXSK3FPSea30v3qGgeZ/NO1JlNZoxJZbf5nEPhtRK0ePabFpzwz62w9aBOyiHCLiYClWw6hsNww93hJVGES7b6I6MvMiJgyQqLGUaqCnFlOGkWuhVOO91RrU6bVK2rblA34JvM8Lv2Al28zQ0qVsa5AFUIxaM7Q4QgXuwcvbFCdTttjSR8neOfq5L6jb/xN/Ltb3+b/+l/+p+6Urq/v+dv/a2/xX/8H//HAPz23/7befv2Lb/0S7/Eb/2tvxWAX/iFX6DWym/7bb/tJ/9SUVTb8mjHxj19Ng5t4UPzqoC4Qfy48NkfD3z0rZ/ieLzhcTmT337GP/7BP+Xv/qP/H2/efcm7h3dM00RZMs78CMFc2MNux6sXL3hxe8fNfs9xHIlS0eWCtYafwfMfjT4/xYMtiOgbD48AaiUX7zETiiGxu6VunnbzsOumqLnVhIkT5oYF4qLWMkHdim/xRgkmgF3pvL92muBdwzgudjzcYiixGgLV+0tINEGenUk+xcQ47iiKFYrWSp0q5/ligikY9xcu+HPNxqVWCvmYcVOCJGY9WxixWP6oTDau7eq0oM7FZyCJhpQ0RWWFxpvaJmAltV2RYzaI1qVXLEAPXUG1wFj1WigXsE0YNeu2NqWJKSPVld1BLVcoEnlx8xFBErv4gl14aWE9bzq41vYIKTpqLMwgC1kmYrql4g3u+tyZojXmk2wGRDBrPRfb9pmFS36gSuE0vUMEcp1YykSUwC5GYhCkBoIGC9mUxRWvUVrZvdnY5jwz5YklXzidH6iaGYIV+arAcBhB1TsOAKkyxzMlRGqwbsvagTXaQS1LmR1Snn3FeYdgtY4EKVpdYAxWsiAyImIIIMvxZnIpFC8pmOeJnA0s8cXbL7jMBty5LBNFMzFF59yDFj4uZUZotUPBQnbFBHztUPgWAi5GL0bwyISBYapOPTyOhwkDzpChjXA1IBr9fNfe2oDw6rhHZOBmv6dkqKLkXD2Umq2RqqMWjaDZ8S8otZ4ptatSJ+T14F9QwqBeUO3GskPdRcUN5Y0BXE3hVK3EGhm8x1TwaIy6AfViPPLx3SuWWjjnTK5qYXwn3P46x0+spB4fH/l7f+/v9b//4T/8h/ztv/23ef36Nd/73vf4z/6z/4w/9af+FL/pN/2mDkH/7ne/22upfvNv/s387t/9u/nDf/gP85f/8l9mWRZ+/ud/nj/4B//gT4zsg1UdrQWm+sF39fd1BWWWZ0tndPSW1zccbm/45Ke/Q0oD99MTn5/u+fu/8g/43/7u/5en0wNv3r3hfDkbhL2ZRM7UcNzvef3yFa9evODueOBmt2dAYTmvArSakqplIaSBYXc0WpdxT0wjWgp1WSzUVk/kMKM1eGpADfZZlaLGlNKssW2+qbWRFxXiosaPpkADjwjWrbYtVKCF+MyMaiuyKTbtAqR1Di1aKBjct6RICYJBCWzTLdVE9zAkdru94fpKRmqh3FdO89n57qzvT/Pcclk4TY/OgDDb/UggyIACS5mgZqTMaD7j8UusmV4m18nDfU0hbZSUXqknWs5O1CiLDF7M2hxSEtYGPaChhVKbx3u9vkDZ5ul6kbJ7slZLsni9ll3ZEA+8vP2E/XjLR8ffyEeH30iKA/vxQAiRkgs5m+eRs9UpTfkNS3kgh5lBHlCUIR1Icex8jrUunJc3zOXJ7RCDKs/lRGEhM3Oa35HrxON0R6WQlh3neU8MkX20ep0xDOzC4ErKPF4tM1oXhznbmlmWhfPlxDSfePvwllozt4cd+91IFBhvdh6cqzQmlYlHC8FFY0OwtYaNXbb6m6VcrDie4uvPIwbVFHyMIzHuSHFPCgcsSDZg7VdMuc35zNPlC3KZeXx64Hy58Hg+8/mXb5mXhfvTOy7zmZAgDVYwbVNtSq6UCaGY8hIxT7CUvm8EMyJaCFi9PYa1BXJwTjWDrBf7khAswtJ6zIk3JDR7I3ieMBAVoggv727Z7Q5EFVNSWllqMe+yLEidQekAnyhCEBtzrU9WVkFCvZg3Nth8MqUYtBJqW9vRPcQVyapF7acqWmw/pWqUUUkCqUVjxHzHV7tbpldmlJ5LJqtymSbnr/w1UlK/+Iu/yO/4Hb+j/91yRX/oD/0h/pv/5r/hP//P/3Oenp74I3/kj/D27Vv+rX/r3+Kv/bW/1mukAP7KX/kr/PzP/zy/83f+zl7M+xf+wl/4SS8Fd5Kd9HIb6oOet+neqq6v4Q5nyxDjm6IW5sXYeR+envjizRfEmHg4n5mXzJdvvrAFfj4Z8WZLBHpM2ri0AjFG4/lLiRQiKTiRTs9PFA83meBNMTJ6t9A07glpNHJNhVp8RdP1i/9I//tKQfk7uyfVQ3u1D1BtzERRHGyhdIZqtQzoCoBQK7qVtapdm7LSZtd6KAehNbRrSAwRq60XSRhlSqU1swtBmmNC4wZryB8Lv0aSRLdkL1ac6UbGspyodabUs/fLqdhyFov51wZBLw7nr6yeVlspTeCs6aVW+b9GzJun6eEJi8u49+7hKGk1Iy5AfZ7rRkmJWtv1yors6su1507VocMFJ5bsdkKHWGgLM1nZQWAgepF0DHtiGBEKaKRKdm9jMK8gGrJsjgFVa08haiivWt0aZwEPf0utZAloGJE42jprdT22en0NRy8Ox86TC9NsBMuH3WhGULACV7NDMq32r7FX1OZtYmsb9X7J6lyBzasIcbXsWy62miIQMY5CCFSM1mopk7VaWU5c5gdymTlNT5wvF86XC5f54tRlec1D9o3l+4VKLtnt0GrF2w4OMaOqxXq1r5EW0tUO5Mm0zgWrIBIPlzRA1YcP8xaNFNgQhsk8mdr4Jo2nT1q7eIw2STGkoPWv8u9QD6dq9TVdadjEtge1gSfQzpzefqQjMtqxgj2CrxuEHioeUuKw25G1EupAUSUF29tL/jVinPi5n/u5qw32/BAR/uSf/JP8yT/5J7/yPa9fv/6JC3e/+miKiq5wTOrguX6PrTZAQnchfIuJwXfzYqG3z958wbuHeyYtfPnwDgQen55YloU3b9/w+eefkb3RXWsVjpiVMwyRNAwcD3vujkduDweO48B+MM/C6kjMCgUlxUgYEvvjLXevPyGlgbg7ENLAMp05Pz6wLDOX+dGLS6snwrHcRQeFtHqShjJS96BADOyDOtRag5BH8WaFrqgoPSy2MPcWIlomO7dY3VDre2PhOLOoo0RiHLCwR1wNBEfKjdEswyHcEsIdqpkglllKQ2S3t7BA8EaDSUZGBsY48mJ3ZxQtyxMPD/+UmiEv1fMUxiAvsiBx9u8dABPOBdsAdbtWuzK3STOvKZmGSq5Uuy2zeqR4Yt5alLswduXXWQOo/ZqKZpZq9VnF2xxoFa93c1Z5LDkdg4V25vmCFhjrZww5kOKOMr4khsFyQI4Iqw7OQQvRe2yFNPr9DIgkUoR9chtfv4u431ukkGtm5A2X5WyAhDwTCOQFJi5McrG9gxKLGQXHeOQYD6Sw4+DM34ag88JvKUgpVL1nXjJP5zOfv/nSlNR+z118YQjCZEg5rVYWgJrhBoVSq7fLWcddPdFuuY295b6GvRsGmSKZqvB4uUc1cNhV9juw1WVQ7NN0z2V65LI88ebh+wY3f5c5PRUuy8y788m/25GhxU0s1Y6sKyXzeHlkSMZLJ3Hn5o4H49zCaY04LHzm9FlUUC8er2fQ4sYcCINDvqMbHBF1xd8pxmohxYG7mxeIRPbDLSnsKPpI0XsDziz35DIRdCawIDEwHP36JTkcPjpUPntjSdM6qsVlpysyVfP8bAKguOBsrXE20Rm/SvDoRPCi3ypKjgYCuznuSTeD37Plk6dlYZoX5nnhf+F/+bES/huB7vuqY/Wctm6UXj2KdJm0oinFnhAzA21feIz1Mk3kZeHLN2/M0lDl8fRooYzziaenpy7oWokSfv7gea0hxt4AMQVzuVdWg8YX5+9PiTSM7PcH4jCQdnskDUBlni/GWSYNbOGnUHGDrNV1rdZbB0RsUI2W23LPS6DGjYIKlifJ7iXNFOtq6r2WwJK810rK8mRFi1HXBC/KcS9Eu+klntwOiAy2KbvN5THzJDTJL+rbVSzGvUs7hpBAC3k5kXNhviyej7NamhArUawFibo3VSlGwUOz89h4mdAoOAxFFd3S9xzTFg3qHlVt8Gqf9xUU4RX3TYHgxaLq3ZVV6c3oKlbn1SfFFGELL9darMtyvrCEJ7RmEiM15H5+D4R2I9HyFq1gNHgu05rtGYOEgS2CRAqFRTNZMlMsaB1YuFgbdjFjLherh6vN088zUgsSCzFWaqrs0ssuRpslGMTWEYqT5Bamefawppr348AFWyYOatHqHjpY8XXLpbbSi2YxSM/Ttp6wNgRWVzjnhVohpolYZ7yUGVWY8xOX5YHL/Mh5vmeZZ06XytNZmUpmWixPlUSaKPA9pn31VK0sxY2eoXgIz5sWioFTpHuSXhDbZc+aD23s5209Nv4+WrmJbOzsjSgLITAMRl9kBkJy9bBQmaj1Qq0XWtIo4gCm0ELk0Qt3m1pZvbemZGSzLteAjIGMBOfLdNlis98M/L4SqEgP2TfygJQi0VvD4MbsbsnMQ2YaZr7O8Y1WUu1QX7XurAI9qme/C2u7CVdQzetowr3ZyqixWl8uJ96+sWmclsmszsUhzn4iVfMcwRbD8bBnv9/x4u6Wl3d3HPd7CyP1Oh4lpYG0vyHEyPHmlt1uz7jbcbi9RUJEJdgSCoGURrSqMVWEgajW2tqs8eobokHZgeqhkapItuRyyoJUIYdCHhZKVJaoBnXvYapMrieqZmYeyXppNdC2WauzJzjcfBWyLQ5vcOfgBKrqYSGrEXHesrQjpj21TOSpumDJZh0LDMEaJh7TkUO8YZd23KRbhpAYw8AQEjVUdqF4Xsmh5ZIxmiVQXWtjzKlbAQ49dNcsdcXpsBwFJ80ybAuKvluDNMsXR2Sp1w0Zkq7TS/l528ZflTU0qhxEiNF6PcU0EAdDpI3xligDKd1YoSmBotnO54qz13mxybF6eBGR7olUYO65V78vMWXbaGwCgUEGJJpgC9U+abmqBWqxXJ8WQq2EmkllAkZi2CEOxLCwpHn1MUQO+xtKLbx++VNULdwePmI33JKIJEY3JXY2b7G491kp1cAv6uwpdnhNT1jBRBZmVqYZzvPCvCy8e3zDUjLH4wP7w2eWx5EDIEzLmSVfmPLk6LdKzpllseS9aGsz0kJUgZAMbWCduBdrWpnNIJxzJhBJISBSqV1tupILrKH/rXHjni5EVkkVTYGprFyYGPtJqdXXbXJ6MFvbOBCkU5DVpkyFzoQSIiEa7D6K0T01xvPgIVNw7j5nksDXcLeEwZSqW/jS1FiIrmA3kYYg0BS11zQSvd9cFLcJte+eGIWdpPV7fszxDVdSuvnt2gRZx8+h101JeahPnimp3lCtWoO/y/nEdDkDeHjGaXmaN+YLs4UQYwjcHA4cbw68uL3l1Ys7xjQQm4nlvGVxGLh5+YphHHn56mOOt3dmZASz/qZ5oeZqrb+HwTZ/HAnBeYuoXnNjRcMqrWq9eQAVSkW8BULMkaCw7ArzOFNCZYrZ0HhYoWslk/VkoQN9S+YRrYmqe1Bx+qDGzbeAYPcWonmJYfDN4Si37tgGQtwZo3ncE+IeamXJlvsrxemHCOxiIkridrzhJr1gjDtu0x0pRIY4kIK3YRjNg7FWKMbVlsvkesXCCRbiSJ44juvmdXFxLfS1C/CmUrqO6rqqKSn3nFCr5XGwhSkqq3NqmqorO6ULKRFjdh+HG2IYSMPeADMkUjj44w6VARVXUrW6QSW02rqr/1S92BpacXKpldm9mKU4BN4Fl3lvyQuCk3NGOgrSjZCsF1QzZXlCdYG4QJqIsqPURJIdMUGKmFWve0z4RI77GwT4+NW3qFq5O75iP9wSNJGKgQSqTCgFlYXA5N5nQ715+CsEBBPMIeyskzMKWEuVXBZOJ+E8ZT5784ZpOXG4CIdjIIRECreIRFoRd84tP2ignHlZHArvoGw1Q0UkGGliNPRgzpUlaldSS16sHIFIiK3AXlYPxCBuxuQvYS0AFiHK4GvDDQ21lhbmXXmPOc/pFWeQDeJt6tMeVShLQVs9XGleWjPEY1dS4koqyEiUveV4ZeeGY2M1D1aasinwt9XrRrUaXL4Zd4I4u72TzfreaMAr02euNIMbhJ5zNnvPvMYUg7Gd6K8RcOL/XIdc/bX1pLavarc0aLqFtnAQ6WVCQEfe2OdXYdOUQMtxiHUvYxgSwzBw9E69N8cj+92OIUVSCr1SvXpCMcbEMO4ZdjvSuCMNI1pbHyNlnhaWnMnLwjzNLPPMPM/Mi3PL5W0PH19OKy6Utrjw+geN3jUqFm+hYErJWsJnQxm2xn+dALQxKqxhiwYysZYJLnBjcuJJrx1qElnb51ayTcAh17WHw0xASLfyhpAYwp4h7r2PlDGPR6+1WMNsFRUnvJSNYjTsKyE6u7Os1Dhtk10vjoB44ruXkPnvfSW5la0eEhPRNezRwRQt6OHWLMYGYS1Roi+5RGAkhMgQ98QwEOOeKDu3/C2cYzgs+95Sq1/X2rMIv5MPGmXdCq6b0jeDBFtS3JLkTbCVZaHMFxtPb3GusRCDjQPSSkqhlAIhU/QCFEeyAhqRsqAqBhGvZnjsRxOqQ9wRGTzc1MKs3hCRitHRqocCLacmjJilbywRgje9pIXSCrUK05KNgmupXBYlZmEo3vnAgUktVLqUypxNWZW6KUBow9giLG0q23P+e61GZ5VrZinZUKZx9WebP9Pt12eH+Eayh+a1G1ihg3BaaNDnMUgkRUPqBZLv8MLatiRQCb4H1fdpW4PdNNrcRrO61nVDbTfonhSsArCNkctPDeJ+unlOXd7qug/XCigPYaraV/g+QtcozNc9vuFK6tmhzx7Z6CT/TaQpp56Osg3t8tVc9PXzjdYDp5wpzptlPG6Bu9sbXn/0ipubI9/76V/Hzc2Rb71+zd3RYLyD17WEEFAJjIdb7l5/i3F/6Artcnri4d1b8rLw+HRmmhaWZWGaJpZl5osvv+B0emRaZi6XMyEIN4eBcQiO3vGwVJv9WqiL0frrTYYoLDKRmSksLPXs3mHr4VQt/KIVkUTkYGEXLyaujftvNmFlzAx79uORIRwI4eAC25VkR+wFYtwTQqSqMC8TS55YypmlnB1EIaQwchw/Yox7bsfX3A4vGULkkPZEsdqgED2G7ujCVEdHS2ovlm3UOWtobxVE2xBZC9GKW5NNEWwt4a20KdrEe7UK+4bsqramKq2NgSfWJRHCzr/DBG0MIynuXfDsvVfWYLx4BKQhE1WYPfSWMYPAUI5WPDlIy/utFm8LL+KeVwBGMdESx0iVVqpgbelrrlCF88M9j19+iWolxkIIyu72wP7lESRQ4tHQm2Xhki/EsEAsxBiIRYjF9ka+eM8yDyPFeODju08IYeCQDuwYjXFhaONmiELV4A0jk3WBTSOBPVGOPp5ugJSRWkY38iyqMeUv+OLxntPlwg/vK5dF0DgyjubVL06RlbPBn3MunKaFnCuXJdv6byHaK83k6kPwTr+WdyvFjKrTfCHXikpgGHeromiyorKGQWlorRbub1/lnn1fq9WjFV6QXezaxrhniAlLIBsze9EZyIgoMQ0EDYbka6TFnsMOxK6ggq8jWrG8E9wG9ba7GrD4fzBDNYYe+THZgDHQSPOXis1htc8GBOpazyeiVLVOyEUVvDVQ6TrQvP9SP6DNP3D8y6WkoKnrzZJb1dRqISmrhbH93WLKQehWhbCGbLbQ4SbPdsPAzc2R25sbbo9Hbo437HejCdYNW/bK0ya2mYOFpqonrOdpYp5nLqcLl2lelVSeuUwGlZ3mifN8tvbhOyVqpHV+NUPQN0VP1orBzQdZk/vuyWgLsTRAB9Wh/CZk6Z6CLzwft1ZELBKtul+Svb9bR9pHXHqozZWdx9Ebp16z0IK4EO8/LZQYvQGihSda7q3BbCumTKJ7Odr65zQbzz03b1DEKijaegg9VNEM6d5atRuTnvdTtxI37xePY5iCE6ypoGJegJ0wOCdeCiMpWt1TDBYCtUKs1oU5st4Zm3Wm1lo9bIwn7X4brblcC9T0cu7m6IhYb7BGy+ReBlWoS2a5XEzZJzUPaj+04gEaz5tB+g3lWZk8imB7rdTKkifLjzq6MITBwsFxzyAjgcHABl5QaC1OfJ16/kl6MehAkN1qmQsUHRAvQLaEveVj52VhypnLokxZWLKQy4qOAwst59JCzIVSLBxau1exhuyfywl3eGzItKIavAYtGB2YNoBA1zbuqbKGIHwNmTjp8bT+dwN4tFIJs7dsB1mbGqv3qiWuy1fXfWN7IprCxXKYW5CzbP/oxoyuqfXq6ZC+beTZow1OSyv0otC1xsWieH7f3ZPq/YHq5tvVd8d631/n+MYrKbOGrhXRVui0NdQSg00R+YdNLilEmjeyus0gUG2xUE1QVq9ZuLu7ZRxHfsNv+A383/9vv4lxGDh6M7TdeKCqeU4SjCHh7eMjj6cz9Yef8f/5+38fCYGXty84Hg7kZeJyfqCUzPk8MS+Z2mHuhWl6S8kXhywHUgqkoZAGgVCs1xNihaYqhIN7VwFkUIhKqI2uyMCuQtyAIi1EYAsnunB3ZgSsl08uCzlbHJwQrNiqJoySZvSlaYqnY1Q87yEE6xeVZ5ZyQnVGpBCTsNORFAIqF7JWLjkhWhjCAOONVbOTSB4WaiAUbfmfvsF8vnpMt7blYKqwayGMGaR5I83L6k0x1e6P9f3qSkA3G1kc2dQUqgKDB1FpygPxsWkhyyZ8DUChBAtRiq28dfPbZi5O6qpiodJEIx1tnqDfbjR72ViH7Xqd0clruJpBb6HKqJGggVwju2xezX7ckYZITKBlMloib3cxkhjDjiDKDvPUbJ0ERCcqFyoLpefZM1VfEVSpkqiyAzHLfc3tOrAmJizE6SAURtQ7OMc4ICHSGupVzcz5kVxnHi/3PJ1PnOfFDJ9aeXi6GIs9FuYEjwD4el68u22uLYilfW7F80cxGFdidLLmLkd9XZU6Y8ovMWfLlYawN0MspA7GKY7IXUqlFvdg3KMqXpScS+EyT17KYAwZIe4Z0gsLdao1+9RaKeWEkfWWXjqDWu6y1zaq8VOiau1K1NdVCASSAYokInUgVAMqSUkbEx0XmOKKyddVSzI7ClE82rCVkajVGKobalmVRiDrWVyK+Jh7H7P8a8U48X+mYw3t0B0myxXYU80S64JsY1C3ucAfAxturpagwGhFQkioKkGsP0tKA7e3dxyPB379977H/+tf/9dBYXo6UXIhpGgs1BIoIVEV3j6d+MHnn3P/+MA/+We/Qs6Zj199zO3NLSEowcMY85wp2eojqkPAU5oIIXM47Lm9uSEm69EUh0AVY3ywDeUufkywa23bbTsGgegJ0kjoqLrKRtjRDC1D8i0oUqt1Zi3Z+cGK5VlKgJqQYMlZHy3bSO5WdSUlQq0n5uWRXM8oC0ghJUFlIBKoOpO1MGVBy8IQd0gwJVDDSJXkRkXLCYUN1L6tgrAxI7feUPvTN1ZrcdI8r+qw3LYZu80TuhJbT+RrpgGxo3l6PtgupIN7CILIDrDmjUEG+7h/b1OlqtItp8YlCLUn9qtaw8CqlplpUP8GVrFFqn2uVXGFsbXw1Tn2hEGFqIGlRnY5IkG4HW4Z9jtyPLGUJ9aCGBi4YZAbQqgMTIhWsg4UkuWh5ELh7ECWjAQo9YkQhCo3XuANAS9qbmZ8sPVhJQ2GlEMHFPPOJRwsrB7PwIlSZk7TO+Z85vFyz+lyZsoG6qFWnp4yT48FEYi+DlqxONIMMShFVwNlGxkBr/WxMHp/0veHhaishnDJkSUPaBwYNJlAD2p0YHRODZZSWGZnaREDZTWap3mZeTw/UGo1RRcGDrtXvHrxMSGMaBkw7sVMqWcalN1URwSx1w0A1aDiDVhUfL9YSDsFM2KFSNBE0NFChTU2wemGw1Zw2lw19F8bUHFvmI2S0uoKTF1W1uq5VfOa7MqdPs3LFkqrM/0xxzdaSbVDNzKkucpXyqv9Ko7GQldltU1A0Z5r52lCq53EF4k4zc84EiRQsgm4pVh7CWuuZhOzvHug1MIPPvuMz778kqenJx4fHiklEyUwTxfj10o2YUZ/o7RWEyEoh4MyDKZUUhJSlJ4Ixz0/aDm2NUzSfIp++KIKK9/P9Y2vPr/VjTnHVqmZUooDBwyhJmIFiI3GpSXzm8di19DxdBgKyog6jTA1Ul1AidEGoChZJ1OSUkg1UUje52bceMUQepjTE7RXd9JG38N9bp20sKtsqu2tIHsbjLjSUps1pj1ashnQay+uKUFtYBG3RNsm33iYQuPlkL42EU9ei48JG+/OjSfN5k2K56iIpiiNtqpSg2M9Q+3zYUaYj5dCrIFYhV0cOB5vCEE4HG4Y9iNLsLBey0mIQmJnrTxYa+aij3kV650kPsatjYpx3U0MQSFao7wgLa9oXZHNUwPF8xmeE5VgnmYLFC01c3Eo+Xl+ZFpOzPlinJG1cQe2dScuGH0ffzCktE5km+k2ztosWFgtN6EbBW0OzTMzaiuZLsw5M4WZJBd6/Z2KU1o5r6R7UnNZDIDh/IFVKylWYtwxpIWWw66lrZ9wFTGQzVpr4UX1yEdxvkM2SgrEkICTKahDfMEh7BG1dIOo1VV1Q2ejnGl7WNdH2j5qJBaiECqqLTpj190aQIaOQFx9tg9Oy1cc32wlpevNXi3Gqz88+dqFgXsPz+SQ9nXZFkOzeM1BtwXcFMfA7fHIyxcvCESe7i+oKuf5Qi6Zp8uF0+XC6Xzh+198zmWa+OLLN7x7eGf9qGZ7/5ef/9C4s4J4Nb7BeI1l24T6MEQ+/fSOYRhJUTnsDTUYQwWsiDW6+x+9a6bVQtgAqVvjHsUmSCJJo/JxUqMtx533+MklM81nK8ycJuZlIkhiSDtSHElxRwx7guwIjF3oKtX5wlYFZZulIGEhSmEMI5VAKpFck5HIqjF4LDqhVUk6MMsjKSRe8ArlxpKzxTZdZ1tw+qSmL/yuafDy6mzowZF+NreGTiuleiM6Vneyex7t32adbhQV7v0otDohC4F4q3uciJaA6qrEm1Ek/r7YrVXb6Pad7kmpAQps9VminwU4GytCREgCkpz5IcJTqswUaqjUZLVjUaPlLhFCFaQI4xKIi7Ab73jx7RtCiuzvbojjyGV54DztbMc03jaiK46Klog6/VCSQpSIDnfUumeRmRxmRBKX8ztimBnitxjHwXJxyTxuyongdW7V29YkEarBET18KeYf1MLj9MC7px8wLyfePP4K0/zEw+kdOU9mjXs3YaPT8rBwR6r6HpC26W1f47ydWi2sJd7rKqoAhQZuIKx0Z7Y8bP3NJVMvJxMi6k0qe85VO81SA2FYhMbCW0tWcoFcmiyA4+6O3XAkhl3vH1Vqomq0vZkb+s6LfsXq0qiKlmLh9DKxLE9moHlt4yITiURdhOX+SzQHfvr1b+Duo1coBqnXqqQoDfcCycKTFro0ZSt13WBVbd11W9flJKXlxtzTQ5xlRShSKSJXkYKve3yjlZSLkGulpNsHV1DPrV8Pg3S/Qdenn59o/deK0wz1IwxDYhysgnqZrUhwXhZyLZwvF55OJx5PJ968fcvpfOHtu3c8PD6g3fpTshQC6krKwmIpJUKM5nHEisWkj7QCwRTFmKk3d9MsyNW3uL6d9bb8dVkBzc2h74rZId7VWYpLzX3jgYe3ZG07vYW7bvw4WsivW61ehW4hFUfVaSS2MJuYYmltqNHKUgOVxFwmEoMleYttmiEkByF462u1kMUasdsg39q/HuLsVrNz69FGb6PoVgNoVVCrx759o90LKhaClGb5xjUcspmX9bvCVQiqYhat0eJUh/valTfWbREfS7eyRL2HjwbvquLAHFrIWzuFTdDgPxCqGPlwioRhIMTIOOyIw0AtI1nGboWbY9yuU6jqrVLEjLYgXv8ThBCsEy8q1JLB27qbxDM0I2B8ga3wvIfbWsp9/c+Kb2EuM9NyZs5npsV+lkZ0W1dDrG+IHrPyGdS2T1bh0HJR/Q2sP9IU2iaidZWndsMlF6c4KtUEsXtIqpXsbPEhtAiHIl1JCbmIM3NMgDDEmSDJCoxFrE5MQq996nUQ0sbJb1fwvFt1T6o1/mx8aHYvtcBlAs2hI5TpO8QNpH57fcA23x36dl73WdtpDWC1ytUePcCAGWY6VxrLhvbB/fHHN1pJyWYhCo4I7q9tfrtSQLqu47bg/LMbY6uv2b7tRRjHkf0xcXu85ebulsPtDUstfP72S3LNPJwemPPCm3fveHd/z2Wa+PzNW+Zl5nQ6M00XmgMPdKi2bWrbHBmr8B8GYUiBcYwcDnuOxyP73Z4hDZ7YbXVA0T0oIag9rv31Gump3XUT4G3sugDXSi3mQc3LmVJm5jxxuTwaism9jRgTu/GWFHek1JrJrUqqWU/r2FstFhREqvPUOTgD6B1yRc0CDnh4zryHy/IECE8PE+SBWoSczap9dXvHcbd3wMrB7qeYwAoheu0IBt12RRabcMm2LedSmD152yzkmIwgWLHaGFsbrqAcqRhFvEhbPPw5sqJxcIkW1kfMIie4GSGbvKnvfNEummn5o0b0ab5MIASFvU+u9/5JBA6TzXteBmtyGZIVpAKSA1IsxDeUaHDgywxzJuySkY+KUqfF2ktkZVDPfDWB6BtGRSgkC1sJFFe4kYI4c10gUquy5BlFycuFZbmgQBrN2BI1T1OqKWVUKV7AupQL08XYT87Lo7Phv+Hh/BnLMnP/9I5pmTidFi4XcxjKYoAICepQ6VW5dC94szJVG0iohYMdW2lTREoGnriSobKeVH0dGcGrNaxsutjsFzEQhZpH18EinZBaekhvHJ3uSQCt3hblQORI2lk+UwTm5eJ9rRaMXmAmM1HqzKXeM+czSz4zLydE1NrcizHXINE7dHu+Uq1WzFrkuNCLaihQ73hsRqWvXbyX2oadYskT53xvMsTzU5EjQ3VYezUwEgWk2BqLDBAUDZ6X4usd32glBasyeh573uoaee/9137ItgjPBMTmE81AExiGgf3xyPHmyOHmyP54INfC24d3zMvMm0d7/PzLL/nyzRuWZeHxdHIaluw1RkIKrW+VX0JtAAbFUDrGeZViYkiR/W7HYb9ntxt7e/vgnkyURHJOvOAWfvEN2BiOrYi23e9zP4vuUdSayXliWS7My4VpPjmE2+DSISTG4WChvjg6J1vcjGZwKHa3zTCySq/rCNYrB4mW3dOG3PJ8hWhnrbC2FAZtfnz3yOVkIZJLhhgi3+UTXskdB3YwmACqWdGipDgyDIHo/ZeCSCfcRdU9xMpSK1ODpDngY9TUR6cU98eakBMhJEMrBpqlOyDR2y1opTHiu2WzIgVbornlNtzbaTZxK87e+hLd+leAgISK7EzIkRVKJRRlPwVEA1NJ5GjfHxrT/WJjMmhgJEKxfkplLmat79waXwpirXNJrqTitgmmKymbu1bS2VgLKmghuReSNaP5YsjQZaaUmRAHWoEwjkLtdWrV+5LVzJRPPE1vWOqFx/NnzOXEZX7kNN+Tc+bxfGFeCuepME9YzY8bJ9Vro0TwuoSNYabbEV29IePGxIWyXZoh/Bo4YLNluswQ9/gtf2ysHuqNFRsXZIOMF//+0tvstHNYGNHCkxYN8Nyp7ggcSMOOkAycEs+DF962MCaUaopqLiem8sScJ+Z8JojAYC3lawPABJvH1sOsoR41uFtp1SxIqBBaKK4hTgO2yZqpF8hl4nF+okpBhoBE8aD/kd55oQJFCIu4p+2X7us+fM2Q3zdeScEalln/Xq35jszSjWju8X/pC7drM4XW+sPfsrHAlJyti+z9/b0rHSNvXHLm3dM9y7JwenxiniZr55EzWo1eRGo1IdyS4rUlh60YVQKkwXJOh8PIixcH9vuR42FkvxsYU3Sx0MJ2m2vDvSc1/6XqCgO49jnp4Q3LSZU1vFcN+JGzFRa2IGIICULyGqY9Key8nsUEdrNSG2jFLNkVE2eX6CEMbRDLqxf7Q6t36jEawb0QSz1koKpwWgrxMrNUaKjGPFdqVkJciHExg8CdGPG+X1Urc3Z6HDUEXQyB42C9k4JYfN6GyOueWsLXa8NansaaNMaewL7yIrdm+DZm5Kuu1+q5Emj1NsY4ULuHRXv0OavBxiY7+iyIcK4zsQagsCs29lJ9TRTQKt1gXofVBUlZz01o37uuLaGREuh2S/iUagciCStCUtX6XqkG5uWRNL/z0sCPDPFHsLBhqRT/byon5jxxnt/xePmSXCfO8wO5nJmXM3mZWXJlmQvLUsjZirjt69u4br1U2ViwbIyD9XZBWcE9zuGozftq47JqKZHAEEczEBGMDgvKENw7srq+Wmv3fFRnVBc0BEpohkxjNVHWUgn1NvSWv4ViXb57J+jG3uLdhRejUMtlNrRgXUxJhxZls7Bzb5EThXEfIEZCimSyFVgHZ35xRW3TWn1ENrKzgSU81A8RdXCLelsckYUUZgLRxsj3Lc2r81BXFeze6maP/Ijjm62ktJfkbVSU/dVc8sY7fR2EkubANFuho/16zWeXKWbxKN5R9nxmXhb+iVaGNNLQN6UUTucz2Ylo58U7mDZ+rVoJtVreAjtvMcephwhiEG5vB47Hkdevb/l1v+41+93IJ6/vOB73DCGSfFM5jzhr+AGPz3uQTVpOph3i2Q66cqqaKdr47xYrVFwW5tmazaFWOzKkPSmN7Ic7DsMrYhgZwo1R+rTv9+/oatFDRc0TaXBjKtYtuFOptPugC+mOuAsu+mOAZBHty2KeRHiaeJwLYxrYj8bdN10yOVuBqGo0RZQNkKFVnevMksVVlSEaI8jNuOdnPv4pbsY91D1DazniyfLgbQxa0XHzpJxvyD0MN4Q71xmrcmqLqbucDZUpXZaG0PjcSg95bmWsyeJCDlaWUCKIKlPN5FiJNXBzDryYQ3e+FMgSOvMNql4r5XVyJSCTj3OtZu06WrApQNsDtfkDm8iCN9IzX53WPkTVmNzPl3vzLtKvUOpCiN9hSJ+SUmBeAhTzEJY8s9SJh+mHnKZHHs9f8ObhVyllJucT1WmIliWzLMrTY2GelemilGw3Gny9hW44WKjULQtPsQgt0N4Ua6CxjYCJZFM2tVZCN9LWz4YwcNzdMsYdu7RnH413UTjSeAbRwJzPvLn/Pks+k+sTWa056uJgnqITirV3aazoyesYg1SQBZHF2GSGZGSxwfLflqtS8gXePVhJx7meyPVk0xOh8w9KgrBDwoE0JPYf3SA1EXc7zmo92GpaEEeFtrJyc6QMwylOHGvAkQgMWH3W0H2hqUzkulBCRGRHJDHEIzGk1RhSiEUJBYrHj0OjoPgxxzdaSfXQyjMV5a/SginN11iV1eo2NTtw/dTqe+izMewx7AKXy4UlZtrCLKVwuVx6TVHxXEcLAVki2q9IYZvkb96bEhxEERiHyH4/st+N1qcqGhps+9+V3PBQpdlm9n1rVfv790Fz97VePdb+9yYsIdG7Fg/GOeftH5pyUQcttHHbXBVNQHeexCas1d/tgvBDOVQR6WEmC3MLxUOXU7F8V6m+6BUuU6ZkdeUbrcWCF0SXYkrKGD4suT3GxC4mRIPVzjT0VIf5thySmwTeJVUk9LzK6lY0g32jjGDz+uplbtQO62C00IcizQ3azlxf5565ciy+CMwxWy9kGfr4S0NZuQHUzrfOkl9k9TXZErpC4zrlvSnZLiRp/CnvrS6al255m5lSTpRytpYSCr1rcW1GknUSXoqBI+Z8opRsXYCdSNUIjtXmMWtvONr1/tWAv/dwdQhscBayebxyvfxWmnfh/nNIpDQyxh374UBgIMitKSk1WRCI7NLePeIFajZ1Hg0YRJ0pLg9a1CeESGJwlgkfw54LdeVEdOYRC7vUatRCnTlmawy1/UZ0Dy8ZjRIDEj0M6MYq1DVCo+uYdA9+dZ1ZzXqbfUs7GdipSKZgLXKSk18TLIRP83ibHNQuMn7s8Y1WUnb8iDtt3tHmPd3T3zw227dNTfDPBnd4azFLvIfRqnKpZySY5YXXG+SlrIK+eviGZkas26n5f+sWbwJH2O0ix8PA7c3eWkWPA+OwMzdfgls30oWIsTznfh9djDVlI9t27x7Oc8FdHW5eHX7bQmLt2orHn4d0y2G8YRdfsAu3xszMDnGIdC/O7CSz1VsPtJCWxbJbEtmMRw+BqtdpYPsqhWYFAkEpBeZSeDwXTrPycLK+X/NUjE0ZIcjZNkA1j7KhkregrapWlGx7xVqi5Kwwz9zGAy/2L3l9+4LDcGBMe0SCgwrarK1BIahGLiqNANaeja2YdqOY1rUm6+LbwqN7NZCHfKVuVkU7n59HK0LxkKlZ4QXhiZkQhDLsOctAqpF9NYW15mqlC7w4JudCdEFRQZdiHuFg7zHqueBMW02iuNDCB7iFpdzMs55ciTjuORzvzCOOE0v5jMfTxA8+uxDjzoS67JjLwimfmcvE/ekLTtM95+meuUyobuufWAXiAnlWNK8AJHmuUbeb3P9u5huNoaajCllluxhyN8bYGSf6xioWejumW467W/bhhkO8sz2gBzA+EIRIkh31xhTvlB+Y8oOBkvKFqpnLnJmXs5sKFjZ/cfgux90n3Bw+BiK5FMrlDLOxadzcvATUwDMCl/LE7ukOyZEl31M129qRSpRAitamI8WR6CS/aRgJJAhKDXO/JstJR2rd8EMSEJcrQQ1wY9LHLGstVjBeFBbJLCyInIn1HVEGVCDKjphGy1+rEHL0XJUiiyJfr53UN1tJ9RyIHx/yqZqR39z6VukP22JK3Sgq6Z/pSq7WNf7t7y0OOwXzJCzc9kwhqlkS/eI2MfEVwtksORN6QwrsdpHDfuTmaOi1GIy41OpuzHpvAnjlc5YrJdUKjxsha2/LoYW8LK541+ZzUvtF+fktd9AIUcd4wxiPDHJwdmoLb3RSWZ8RTGfTrHzpbpIpKmvv3Ty1rXGwwtNTsHbkra1QroXzUjnPlfNUKBWWWK29STVgAEAKyYqEa6t/EpI3Xayq3TggWgO4UjK6FGqBm+HIi/2LzrzehFWfsPZZNwFrUIv2Ie4EraZ7k22NnV5ZrUaV7flM2azZQx+Tjbd19Zp4B1lVGqFoUQvtKkJNwizKTkdiGa1XkNcyt2tTBRmsFYYl+TyPVOwiDW3sedOoz6IJm2tqRdJNQQFIQGIiqDLujw6Jnih64jKfqW8fiGFgN36bIb1gKplTWVjKwvlyz2m6Ny+qGnQ99O9rA6rUrBRvadbRYdJyKit/3EY7r5e+9U7acm0X7z+Neixsyjxsqgw9u0sHjsMtO7lhL3cYUe6OBigQscaEqpVcZ9IyEJdEqQsxRqrO1HJPzXadgUgMI3eH17y4+WmGwch1a62UeaJSGNLIbn90oIVd0u5yyzAcrZ29DoTqTQ2ldcht0Y9EDKO1ZQnJGWCg4h4sE5VK0ATVGmYGktNKRQQzFoIaI0gfOovuGjhGqpXT6MxcT8ZXGUaSryVksJYgISBVkLkSckG+HivSN1tJ2bEqgSurFbpraXLX1YcLYFAPibRPbe3X61BfCCZkVwXnSklW/jd0kwJ19IzICvv0y7lSS+LfGUMgDRbiO+xHbg57duNgBKvOLNDyN6HXN9hRtQcHNuJsLdKtni8wQkxTTmhLeK9KtaGac1HmRcm1MuVMjIqQGNKBJDuLwXuBao/aN7K+HsBQQjAh1ggutwAWj/lYsXTrAtss2Q7fbkAQI91cirWobsqvK7qtMHLFr7qOb1sYPfcldEEVfOyDiIVOciUN2sOqV4oJvGTALrTfsq73ppv4RYOPr+wF9rN9Tl17yWZorj7TFLl43qctNPlAaFaVooVFC1IXLtX4+ZI6ErGPh5+/GU/Rx6q9FKUDVQzpyhoR2NxKC/2YYWGdgWMz9YKgyQyiuSxOO5VZ8pkimSGZeRjjwD4OxDKzHw9GsaRLBy+0spD2rS3yYPfsCqkZBU2xi1mYzw3WZhv053Uz6Fdu2OZPlykiwRsPJgcMGV8lwXgP236wIcrUulDKxZoXLmfKckEpHWKkWcgXLNpRrJbqND4yhHfUqozjS6LQ0YIhrNDvdg9j2nN78xHDkljkCzTPqFq37D4/6sZG9TlRWY1xz6UamGmVZeYfN/O5SZaVMzDX2Q3DQtBIxML/kYIo5DoTKMw8kWUhhcIQrPh+dOUZBuM/TfFfAe6+rchvf33oN1uY68JtlG8NQhE2k/c+MtC5vALd+u+KiVXxWJjJniwu8VvYDVhj6A7jbV6GiDAMkeMhsdsNvHpxy+uPXnB3c2QIidSKZl1BNZ44L5p3FeSLqSnF/mw11I9Wa+VdvRamtFhY7fdZ1Izqy6I8TUrOmfN8YYgj8vGOw/iKqAdCNeBAbcWFYStY7UpCUF+AKz2RVvwzrpxKQUuGYhQ5QUxrBK/JqGoQcUplyXZdS1EkVMKVgLGjhba6bd9qWpoQEqttUrQXXA548XQI5KUyz4UxesjRQRwWV1/jQeIhwCb2Dfic0f6fL6ReDLoxjtqltLXYwn6yepYr8nQT5mtesVSKGJNBZ6HYODW5LJRi95eXQtTAQUYGMQt5aEjEruxWd0RcWRPEFFVnJfE1rNcuWQttWYv6aGWaIVkLDCmkMKAsyDIxlzO5zJzOT4QwchgLgYFdSuzHseekUkrUuvBWve4J3OqXVhFLrRZi6rdAI6hQL0lbNdGH8pyqeE0a3ZkV6QunC4xrcGYkxR1D3JPCkSQ3hHBAw44tiXLJMznP5HJhnu/J2R6X+bEjd1WFehGmeyHnwnSZERFS/ZyaldubhcPxW0gYGGKy9iV+ful0OXDYveDT19/jku9Z3r2FqXKZH5jni60d9SLz2jguxVB1sppvyur5KoacDW6UGBilyccMdUFqoeZCKMaCMVS7/yxHRCK1XlgcwDEvF4TIEF8wxEwKIzoaOnK3H9mnPTJ9YII+cHyzlZRriK3F9Nx6as/J1aN2L+bqM7L51CpR+ordnmO7EZqSkq78xIUBBG3FwmtOIGy6VtrfEKOxmzcmi5QSrauwGYey3lC79X7vTaDVjaX57KfRwGizitWVVyHXwrxkf2wtDWrrjk5r4icO9e5ugY9TM2IboXe3eR3z3P3PjUbfKvzr+fKd5GCIHkr90KT2pzaGSgN8+Pw0q1nkAx+WtWDVWN/dy+zvcmi1Ns/Iuefat+rGQ2wSTjbnf3ahq7Gv69/X7kkjFeiv9NHW99dxB0f0yv7g+cqtd32dkW1Kb3Ug3CzblsRsLkC5nqG1gWTocyy0ZoTOJ+CUPaa4ohWZK9ZyXiz82hpStiLuMY7ktCOG5PNuOdrtt7+nPbb+0sb7+T90tG12paQaFNz3gaxghO5vaPGmj9Y111qvF3pbDSy0p2LACtFGaWRzXlvjUy3dApa+PmHL/ahqYfEhjRR2pNhC1C1A2t63dTOFhkRex6lFF2rfK+2nIZ+RJmd8Ran1VGvrJrinHiT0CJUZNhmhUupMCLMZUXWyzxXbY5c8fa0p+UYrqdXmvP5ps9SFib//av160mn9nIvXRmvTJtUtC7r1ZZsnhoZMaxv3Whi3ZdFoRtv7qkL2cy1eEDgOwvEI+73w8sWR169esBt23pQsQFlrOBqDRKnPLG5V7xPlLBPVufmq1QQZpdAAWqlYTcWbxyfuTw9MS+bhdGYphYfLzHlZOOwGPrrbcxgOpLDHSvWSxZgVYINMqBUJrco9eE8uY3XXtum0bjTrZsOI0aSERukT7F6LCnNWpmxUKjHa67GsdVlXhoSpky7MbS5buwsQDQ2L2Oei9aoiwqVcOOWBg0ZEBrMm/ZoNLGOXXRx2Xt3zuM4nrarhKra7kaVt04t7VFdyV1jh7H6PCmj1sFoVtEBQJdTAoBXRiNQdooGoNkeBShJjA08SPVuiRsujzqDhXprRL3lhKdARmG0HqYsyiX6vwRS2VJtjMaVk92zQ6khrwSEUeQllz05G7m6PBBkYh4+QOPZQUyLw8via2/0LLpcntBioR9JgoBtfcxIgxkhK4uAY5epSr+246+OZUXn1fDMUg3llLcoRooFn0jAy7o6Mww0pHUnpyDjestu9oOSF+/vPmecLZTlRlhN4S40hRMLwgn24o/FyqiqXoZL3gSVNCO9AYBz3DGm0BpdkkmZCMaYWu3ELcYrBMYkS2cUDqoVdumUezsx56gpm8TlOEiAa8CoGa7bZOj5EirF0dBJmG6DaWGTEojcabM0EUWoHrAhRY19jKtYNO4s3Z6zVFfcTuiyggdP5C6iBx/PC42kmz/mrZuvq+JdASW2saLoRsnnTxrL2o69rWT2q1VLv5iRdSdW6fldzgqK3hvefNdltCz0AUbx6oluNgaLK7IrjUjJLVYYBdqOwG4MDJo6dLFZqU554zW+zaFaluFrHhbW5YetaWzyyF5Fq1o5inGhP04U3Dw9c5oU3DyeWUjhNxRTDHXzy4s7af4tBVxHnbcM9ltZx1HNcQYTYSCppC79ace7mSl0as0poz5jIWhSrQK7GcQbGAlCruMW2mclnztEVWYg2WMnGExEP1bmVGjyMlOvCXCaqHkwwmIjd5L10pbxxaG/1eTcd2eZje6/6AYl4/We7+yYsm+FrZzLJ2qmEXAlbrZM9F+pA0gOikYjlDAOZIBfEP2tRsKY4myJlA+8346IpSHk2pvRrdLSjWNgViRtwiCIs5tVJQKPtociRQXbEeGS3+wQrRl1Jd0VBJHAcb0CE3bDvQKXgY9KuydB3YWUu0O14b+adZw5Xuwf5gHxo+1lsjUk3PrEQaDSFm9JIcqRaDDtS2jPuD8yTMOeZ8+WJmh8pyyNBhH0cHWU3gNc4RYmoVvbpicMwE8SQjSqVlJyENwgBZ5tXtdB8bKmCjUktQpKRwcOQQ9hbSyFTYzirIJUA0lrqDC5X/DwiBDJrMUHt664b1W19B4vG4OtGqjiYS63VjggiEZVE9X5ZBjabqHWiFmGaoGTlB18+8oMvH1Zy5x9zfMOV1PZfW5VXC3HjUfWcdhcC7urSanc87xNDBysEgiNvBasuN4EbQmC3G41DL3iDNKA15EvB+reIKrGYJd/AD9Ezn1Wt1kUq7HaJm8Oe/X7HmFLPd2ywzP0mlOoSd4UuN6+p1NytmFKKV74vxi6+KHmprogmcsl8/u6Jt08Ly5I5XQwplkJi2AdeHG/56MXHHPcHhjR270AdNWdKJSJSiNFpj6J5VKa8GsTZ8ZO9XgxotUYSHcAhhF7IixfhFqa5MC2VXHSFlPdDrn/feiubX43hwy3jLWILY5y4lEKcL3xxuudSF4oUzmWiw5dQhpR8rqO1Z3GPMWjwAljp36mbf5s/FNgoT7fSr+6gSVX3DM3esWJHVSArwfnhoncJFxy+7/2BLJhkgkyaMm3mixtN74VY20XVlYdOQjL4uag/QuMdRMQqCRAIZuU7rtDCc16TY92CLf0eJDox8o4h3SCSKG5AtdXd87PBxjjGRO3Kp5ryDmJrK1RTkH4T18CJ6/l/rqe2/u5KA7CZO1fiVd2z14bg1T5vISRiHExpxR2aKuMQKWMga4AiRKcrCxIRHaDRlnnJxnG8pR4Lc9lb41Kp3O1fcRhv2YcjoXhYWTI1Lr5+fVzjCgiy6RMDL7BDajQOUJQSDI5egnYUs8m2ZGuHVljsMfpmzGMGWDfSCb1OkYBxQ6p7/FZRbkXu/t7Wtp5g4KnWqp5oulqjsj8O3C4H8vKvjJL6Sd/rEHO3DJvnJN6tNaZk9Dg4Fx50i6+WTC2ZFBM3dweHhwdS9EXl9PhjigwxQK7U89QzvQ0dmByoESosGjgedrx+ccduv2M/mgVmzNoO+WxlNd6eo20zRNGaDUqtljCv1diZG73R49PZOM8uF54uFy5z5vN3Z6al8jQXLnNzyzNB4JOPDry83fPJq4/56Z/6Gfa7PeNwBCxnU0tBCAwx2eJMhThajUaMGQkNcRYsxOjmwKqgTGxbWMoYvKyuKqFaWfLCtGQuU+HplJmWwrJ4y5QG1rg6moJaFVXPo4TWxsRERJBugqMKc1m4lIWlFsK7z9idBj47veFmt/cTZQLw6ubI3f7AYRx5He5IMRKrW9spEuJgVifiiLReOebWr6MyG/hCmje6WZnNUXcPSQroJFAgTsCEJcGzt07A66nEFUgQZBQkWZin+YLta9ewpAuYVVqbIJkWQ5rJYLU4EdhjQjEEQogWGkxhHU8XdqVmv9eIMALZG9qZQTcEGNKR3fAKkcRcnyh1vqqRiyEg0ch9m1HUCk4N2h6QqEgoEKzVitVlrcwdP6o6tPlcLXPbIiMu5+kmRqcIax1vV2VvXQpGhmHPOOzZD0cCymE3IJqYNTAXE9SDeE2SDAiWz41WhMbLPRyGG4rOTPUVSmU/HhnSjhh3SA5QoOpixbBDtZxYCEhI3bvEVV9kz8ANoY6Uxe5ySQUNhayV7FGOEE3BSrVaO8N3xavIRAPErErKi3aDz1Xy/GMJiCZXaY5yJKFYqDymiIZKWSrZvcKUjAHolgOSRvLyr0K470dpqQ+8pi2cwjaEsM0tWUdOY802JdVsC4vLgzpp6TgMBnCIgdiVlLnSQ4qMKaKxWJfdYFBT9W6V0QwzBu8rNI4Du3FkN4zEsBGkXnzY82HVQnq2QL2+xUMjVZv3ZMi8JReWnJnmmWXJnKfJfubMeVqYc2FZDHIODveNkGJkNwzshtFi5Gn0pGzsVjuY99BBb6hb8BsGgo3r0P5rMabnY04X1oJqtqLNquRiXmHdtna/OuTZ44d1WNNjX7VMilbmsqCihLmxlJiSEjGyXwmBrJWUjEppDEZgOzAgKXjSWrpBGtqXdgG4CjtznJqieu5VuYffpGo1RWW/O9NFA9M41GvVdbr5bzsG21zds31jLgS1FDQXK+Bt3ksbzNXd2QxmD0nQIN/t2VaasBILKdINwuaFb69ZrD1Lb6zp4+nowrauRBQJakjbQEcANi9nvaHNxfT7fPa8rrK+3d52TLY9xGo1RZzLwpIvTMupC/wlW9eAWq14y/JsawsbcWFvhq49xpAYGAkKGnYo1Ypuw+AlHs3DrRjhpKMr20RLiwDZhQdJHpJPBE02pcXysb2GyYmrNxPaBu76743Eu37O5llbLZ0/NiOhkw33nGV7H4bcFfXaKyUlGIdNnduPOb7ZSqr9czX4X/Fe6duFFmiQGC28INLDORZyG2xpNWSOWDFtCsZgPqTEi9sjY3Il1Rqi+aofUmRIgbJk5ocTNWeWy0yeZyc2NfDD0fDO3N4c+eSTjxmHxH4YLXGsBdXFBI6HIVQyKtmv3jbCUjI5GzLvPM/kUjjNE6fLzLwsvHl4ZM6Z0+XCeZrJRTlNRqeCCkMAFWvrHGPk5d0d33r9mhe3LxmHI0PccTjcMQ6W9B7iAVVlmZ8oebHRrCYEg6O2tqjCREQ98q1ux0YG9yhC97wM4FEpZWKeM9OcuUyTeVK5FVOvIY5ncn/1pq6WwgZcQlM8rGhBt0yrCA/LTMgLp3lhkDPgmwv44nwhDtF4DKNB2T86HLjZjbw43vDt1x8zpMTYoN7JygkMKONhFQq5o7YSXnTlMl9IYlZpUMsdUoQ6g2Z60aMGKCk05L9jf2rPC1VAq0BdlUZwwX4V63KvtJNIFOVyOpOnmXF3ZL9r7AmOxAuGKBCh8wBuopMYP2YhOMgkiJjFj7JsarlUJ0zjWjRAxaDmVTPnxyeWMvM0PRCHSI0JI9wxZSwoMSnjaGHPJfRNv8rQrkg3LzX+HcUInteVYJGTEBCnIktDC93bjdZsIeFzPSPlc57iA3le2KUjQxwY0mhw9mzh4TGMjHFvolqTP8buHbdWNkPYGfpRBw+T6abQNlkYGcyTqxlqgDJjrBaDe5C2AEJIHIZbRIXb4TW38ROWnDk/LpQykeMD5ygc90cO460Z4C1jQEBlwGJxBWpxZWrX3FIUuJeqQJFCceZ07bWQkeh0+lVMsUoUiM1o9dIULJSfdpm9ZJZ/JYATWwXVwiU/QlG1t3W5JuLEieK5pUBKiWEcaK2PTYAYV92YEvuUGFLi9nhkHJLR+vs5rFmhL3hXUrFAybnbJrVWWjYy7UbSLnFzPHJ3c0tKkRjxjsBKaRu81cnUgrKY9eQ0LLUUsv9M82I5p8vMw/nMtCy8O52YloXzNHOZFyMZyGb1Wwddt4oCxAj73Y6bw5HD7uDsCwND2jOOB1Ia2Y0HtFZOXFCdTSA2SKqu+ZSWpG9J2hYcamG3xpxhImhlragq7kWV7g3W2kIxZpU24disYdp3rrGb/lSz61vbEvoV4YrSoNJzzaCweNFiy1giYoWSEU8GW1j007tbXu73zFRu727ZUyEMDBK8c7Jv8OpbVK3EuiNggNavx7F7tEyowZPNg5Lc3w6iVGcBrf1OldYOomD1bh4s7nq76fK1yJ2urFt6My+ZZZ6JYUSHdp2r4dXKJbYOFD7cDWjC1rNptEuFDpxRJ1NtaFl8VkqtXOYTl/nEkidvrGm1eIFmUZiyjd4qq1aoDihYL6Tta1Yjpj9niETtT7mP48Cn3p5DpF9e6wSw6MK5npjDhJZiDTfFQskxRHZxRwqJML5kv7thy+/YfAwT/m5eiimw6shWY8yIm1XXBrlNVKN32Kxx90hDCKS4Y4yVMR7ZhVtg4nFemOeChpkcT4gGSi7o4GPmZQprysO8n+bJX0U+Ar1QXZ3yTKpyTZTskRa2Xl4lBtC4gp2CQkwGKGuNfX/c8Y1WUsAH4jsfPjZzawpF3CtyT2iMkRjt7xTMKzAhHhg95HWz3/PieCTGyMH7tcSWkJdATMnp9QWJkIOQ9wMsQsjZYsG1wGILMw6RNCZiir4roBcjdp9vDd5UQNWYL+ZiYbHzvHCaJpacuT+fmXPm6TLxNF1YcuHxbN7VnKvV8DYkOKYEi9g6ja6ogxcnGpGm8Qbe3t5xc/OK1mSxlIXTqVB1MiRZYytXNovbx119I3rdk2hTVHGdkCoUR8ctuXCaZs7Twnn2sGQ2nrCq4tiUZ2GIH2uYrNazFc7a9TUv6+rTQq9JU2mkWbjCbYlhOM8F6kzhEQmfM6aB22FkFxNjihx21ip9yZlSCyEmQkxIiOyGvY1viIzRGsExiMPvPVEdoQ5ikH9Hjago1WPFLfxlcsSs8dKS1FXdPvd/XId0A24T9raHyO52TxwD4zASRkESkBSN1YUUtNCQjZhZzDZrwYV6IZcLRRfmy5N5kcEWWJVCWA6IpA5/z2XhMl/IeeH+9Jbz/MTT9GDM9Zo93LeZZYE00AEgPi3U2nKez+qq2jrs8j7YODbzU1h3VwtD4jGqKmiRHnpeaqZKZWGCmBm95YXx2TlsQAyRGLqXKo3e0C80s7rBbflb7qt3BJDgiFPLM7YIkNQKUqhlMbBOsEiQqBmAQQKH4ZZXN59S9oXb3beoRUlpTxqsWepud+zK0NZHQIP0aE1DO6PbUO329zZeVlgu4vnxUCzBTjHFJS0EaOjPIBsxrU2i6Zaa8Uce32wldVUY8dWCaov+aUZhEGFIkd3gwiJZK/IxBYYglntIiRgih92eFAdev3zJT330kdHmlMra+tqKFoed1X5ULEc0p8iyLJAisRaCVDRnLNwhxF1i3I+kFN1g8slzK2SFQm9iWhrItXKaZpZcuD+feft4YsqZN49W83SezWsqtbJ476QumFU6gCNroVAZiIxhYAjRUUnG9zWkHbvxwEevPubVq5+ilIU5zyyzwLuFXM8MQYmtiLc7RDbgoi2XtBaZtlQviLFHiFKksBQL7VyWzON55uky8zTNzLlQaqCqw+dLc5kTDcUmfWY/sET6InCBvg17bd4lbomvuSRTGk2RGaLOjBYUHi+FR828Pc98/nghhcCrw4HjMJBCYIxmTFwcSXnYHbm7eUGKAy/2d+zSyDGNhDGQksCtf5+YEKsIdR9Wo6Kqh2VrN2TEN796cXhdqo1PtTUkitXYVYwzzZGW0jidnP4oqnAIR7TsOoCICIwOf44GXtjg8Twn4evV+yrlsniL90fuT79K0YVhvycNA0OdEDkSwojEhMTItJx5vNwzLxe+fPyMp/M9U3liyRdj44i1e23NyBxGBxoGg8FrFYsMqHW3rlW6l6jr9LIy3G8UnK+LrfEqrS7RgTAazNMvWswoVaXGSNwl4jA6dVn0oHYhYuhKG2+xUO3stUhlsfuI0YqyRJDoYW8vvA1i3pl0RKXffDW0ZC4zRSrDsCMFa7YZgqnJm90r0ktjgRiihRTjbiDuR8qSOT0+kJeWLrAFEkKkM9a7srS6PAc1NQ/QYX0qi7eSyQRmG79QkGjPiRYD8TjKz6D9Nt617dRgnrZ8TQfjm62krqzpNvCb35+/uy1EtyTXv9fn1/c2NuTIMAyMKTEOkcEbD5qzs4n9B89NhdAtPQGbsBb66ddn1kSt1byckLnMs3fc9dCWOEiC1sCwJXDt52my0N7D+cLjZWLODRCRmZfSlVOpm5DIVRHROoIGEU4MaTD2ZOcLu8oxeVPEWoxeyRi560ZsredtSqOPgkuMNTxr49Fg0qpG2FtyZVkK82zAD3MgxFF9vKdY1htrErnlHX/cWnn+DvvU8xXTa+Nc4G3THc2gyKUyL5kSAue4gJpXOge7b1NShVIjypkhZRIjdYBEpLbQVaU3RO16VNz4r3j7bw+7yHp1QDc6zMDxai2x/kSm4MwzWMNFTcGpy21FUhOKsrHkNjD0DtJo4+FYOXWKKy3UvFCXBc3Ze5s5Ws7r9kpdfBzNvVvqzJwvzOXCUiZydQ8K78H2AbBMCKDR6vGsqNcVdCvZqxuvWT8026u1up1Ps0uExoQhvicMRGVB5iDiPd2C0QcVBzFpcY/XV3y/blOiKBYeK1sbzsJojR0EWWVEDw1We17x+VBovelQtT53ioOnTFbEYJ2oU8u3x0SKA6IQ49Ciix5Cblalf68bYNKsn7ZHt7Jxo/m1h/s2JMmyfZP0tYbfWT8/1/L2Rx3faCUVPOnZjh+F8GlKKYgQ0roQfQVCQwyhFCpjiuyOB4Yh8er2lsM4crPbMyR/ewid8qQv7mgeQqnVPPvq8d0W94Ue1atVeThf0OmChMAPwwNgjN9VK0vJXMpM1cqUFxd0tTfuy8WU11IqczZBkHPpbULqlSm5jsEqAemKaD/uePXyJYfdjrubO477G3bD3jyeAufHe6RWSpmZF0MzSbmwi86L7KEWauiLu1uttfHLWY2VibqG67HE+bJkHp9OXOaZN28f+eLNA7mqW8iOaGsL3MM1fZ77ptgaK9fPKL4xW8PJLui3y6T5TG0zKqqln0G1raHQPwEmL6bZvORSztzHiaC2sQxgsnj1/ROqXzAOI9/5+FNuDzd85+XH3Ix3WKM8QxmKr0v1HJYpJgPSIG6NNmHl+cqW02v/tTyjIIwLyLwhAxaQVE0BYQzWBKVGz5O5l0Lj9Wu5KD9agK/UhaIL5AynJzRnlnkiLxM1FFLaE8Kuz3SpC9PyDiRRJaIh8HR54M3TZyx55mn+kimfKbp05pTGbt9CcSjEFAgRUjKGllohL7bMpnNl0tZ3qtkwW0OmNbHUriy7sRpMaQwpchj3xJi4Od4xDiPJUwNBK0kXghbIEzxdqAQWUaokVGbivimnxcApZUAy1uhzNuUTkxKSKduyCyv/EIYoDtXut+vpCDpgQIVlAS2kIXGIwqLKl8uJp/M9ATWSXwkeHjcoe1wsB3azv0V3kJeFkgulFmq+2HV6DVcfENZrQlrDQxAyQkFFKZJBmrHa1uuzvei0SRZPadVp8ty/+JHHN1pJPfd+7Dn4gARaxz60BSlOKNHCa7BudHtPHBLDMLDfjxzGHUOKRpuCwWBFpXO/rYpotfp1E/qys/uPvzYvmYUCCBWjNJlyNu+qLJyWqaP25pLd86rXoTs/Z/eM1n3dxFL3FlePqttO4BbjfrfjsN8zDqN5VN5VE4W8zEyXkyupk7X4qLmPBaqbxenKpFuz0u+3C402R37xtVbmeWGaZi7TzOUyU1RQGsOFrOfrU+Ubqn3txsJj+5QnwrtVty6S9WjeXVdU/q9u/ZX1+reWobrCqFhDRrInh32i82LztuTCtGR2w8jx8AKVxEfHjLVSt1CVrdMW3l2zkXXjIXUoiv9jYZqyWtvBvKiCo+4qaJa+NlvLr3bj6uhAbYaaKNul/Lz2qLYi0DpTdEbzDNMj5EyZFupS0AQheThWioUptZLLDJLJEo2BYDlxWZ684eGFrJN5Zk0VbtZrWzOtKJvoa6ta1LIWa+GxhHWe2hJZj40XRUv4983QvagWVTiMB/a7A0mEIQREKzGfoSyUvLDMTqIsmSKgpW72Q8vDVgu/esqmIV7EvanQZZV0Zdx4h8l078zqVgRqRYq1zkjubNWSyXkmSQutKVUXRKN3GjBYv3USF9+Tiy+DsBqZsoEyyBoJ6fKtj5n0tdOYZRp36HaY0TWvZftH+tr+SbTUN1pJvXfIs0f/3dfDujh8uzfknKoLGFn3r1ZFc6YKLHNmEmOfiL5RDERsizoGi8lYvsnazFf/6QSuJTPlmZwzF1c4l7qwaDE+v2rFdUsu5FpZqr2/aHUItq1XratHZr9srZZVQHP1sm7c+PZmYRgSaUzc3dzwycuPuNnveXlzy3F3sAS6ClRlvkxoydQ6o+Vsid6ixBrRGqz9hy9kWQcZPM5ddS2f7MISC/EteeF8nvny4Ymny4Wni8Hkm9DdqBa28lWvXrle7M8cyGdK7Ecdq+/VwQHvvX41ulfPtTBvNYJGggTujnfW4n7Yc7O/YUwDP/XiNcfdnrvDDUMyBouqgmYL4TTEuOWBQNX6YbU122/JXACQtCpfsTx2XNSs9yVANiRciW0v2Bqu/R6UJhm7ObWxfMybs9BdceqtrJMRhjrAgaDUwZL9YRDiHjRCDq1ZzIWSJyqw1EBBuExn5vxELpnq/bFWIivt99QAO1ez2yw1gRShijCMQi3CkmFZdH1vM4qeyYIQMCRmDBz3R/a7A4dxz8vDrSF4D7eMw44gakzruhYSxwApmSE3kIgSGMc9ihfbRrVC3FGJwYwXJSA1WB4qsoFoaw+tdwukKiy2jsigixkf1Vk+5oeZh/uztea4zOyIVM3MxfLdWgs9XIfQ+lyJg4GGNBBEyCUjEqhlXVvP17Vb9pvnbRB1tdbWfdjSKWxzxasqXs2ur6eg4F9yJSWbx/X3VhxYu4KqavUsomH9vFZqXigo87zYkDvENgA1OEIwpm6Jt8aIpRXXqimoXDOXvHBaDGl3WRZKLVzKwlwzS61clux0QB6uUFNUrTfVaj2D6vUEd737XBrLKmT6LwqNhXo3juyPe17e3vHt159wsz/w0e1LbvY3REnO9afM9cw8KUFnAsYJlzQhJAs7LpbgDslCF9K9G+2FxpYqkC7+FahLYb4snE4Xfvj2nsfzmcfzxVpybHKF2xsNIl1BP3OeUJ49/3xN/BhFtb7ciGOfneK9fXVtEfbeTrlSl8oQA69uXvHy5gWffvQJv/7TX8cYE7dpxyCBpRpNVcs3diXUvtrRXZXYYexWy6JeZuWSNkQXFF4sukCclZBB5grZ7qbEakCJlmv0OWr+WbeEVa+Gqncl00rGvJ2lXsjVurqqZJv00YrTGSAdjaUgl4VabQ2d8j21VqYs5AJL9nVfq7ErOGKwwb5aKL+VedgceVmGWWw2+jFYSKz6GEzK+dQX+2aK1JWTyYAYhXE0z+nmeMfxcMfteOT14SVDTBwOI2mIWJA1o1oosVoH23GH6Asiys4du5QOKIPl3IIV98ZQSbWiORrkvG7q4wLWd03UQBnBjONSqjFyTQVm81JqcE7OZaKWwiUKcxI0CeFW2A+Rc81WlN5nsqFhQbx5qUhkGEbGYUfOgSUXa6/i49mFxHZ9S1NS0AqJG8/jRkPRvNGef6cprHAdlfDQ1b8iwImtQPZnNmN2NYCbgW/T0JsTusWPYpZJwWuPjHEgl0wstoiWEnqIrzUgbHu9evvy4nFxAzqYZ9Q8qlzssWglV/spG2aF/qhrN+DqoYvVuNX3FFW7xZ53aO+V7cLwq9XNUlRLCI8xsUuNgLLflStF69yr68ihq8ZcQ6xmcpsiWuN7mzCfej7NcixP04WH0xMPpzPTvBgAoepmpuRqiq/2Dtt5Xt9wNS79fR+E0Xzw1+3XrJpNrsLIHxx72nqqJuCSsXa8ON5xd7zjuD8yppEhODDFPfMrb62NX8/ryWaiNhbs1T1pX3/9JC7rqVieNSpEpXouqnj+RSmoF9Zumfv7mZuhIeqdjZtX3Dxj/6+xlLfcRcQBQ5WgrfbLPNNKcVj3WujcL70l7FmDRCYLV8HZDBcr7JYe1kZdmUWsUecG5o0zvUtoOanamStMzwu7ccfN/oZD2nvJic/RlZVzXWMXHVQRkV6u0grGt2vGjAm8T9dqNLcibF88q5HT9k0DkKBI8eaguRpgQ8VKD0QQtbqtXhvXzie2d42sV6wMIGyMKTFkIIiHjD1055yV2jOKzTRve6HNZxO6PNdVrL7UFswk61rWtsB+/PHNVlJRn3FrtG27FS+895wlpU2ZaLUiyFrUWiFoIUqgkkEyQxqIKbDoyFIGljLbonYUzRBi96a2vY+qwrwsnOcz85J5mi48ThOlFKZlplQDRMyutCYvWi3NG9NWzItDyJto8jvVZw5zSy4LDhndjsmz5eLKq5ZCKZmA8HJ3w93+xlpfFzyEk1lzOm5t+3kLVqCsLUcAtnGKvbdoMfu7tkIRq61YysK7p3umZeYf//AH/MrnnzHNmYenkwM/bEO02huEPqbPbbz1cP/sAy7UhxXUVx/XzlazJNfzdS9O+7D3fJ/ROBVev/qI/8t3fj3H3YHvfvRtXhxuSUSiDmgRJoRFOkjLv6ktZId660qx1Px3g327d2EjZEZWMYCHITAVWQSyWCHxWNB9paRMHoxxu8hsuSJdqHUmCOx1JGIhoRhGEM8/iVFmtZxDdvSd2d9W2MkQIEEMO0IY0ahoBJFKRFEJtl6i1frkCZZFyNWUlcmrSPcF/b6daAqhQrXmgDE6PFsCWjY5V5+LkHxNDtfchiFYeNtQ3dlHGmKoDFH41kc/xaef/AyxCoOvYWTxsFl1tK211ilaicH4OQORJDZ2QSJBF7sPX8ex8YISiDsBbU0zGwDFlFKpSmmUWH5UzVQKkispG2VUWeyawpgIY7BaPolUhCSGPKyqLBQaD2EuC8FJn40g25B/IOx2BxRIeaBk62e1ZPOQq3s/KsmZKQCZEYy/01rVNMXsRk5H2fr+2xhP0mWkYGULV8L7K49vtJLahvFWJM9qca5v9Pf4v028101Gv9RKFatwryKkLCzZkiJLWQjZrbaAkYtGazPerRKwQe8CVcg1s+TMUtafUqp5Us5NZ56V8+5po4lxm0ZdoXYY+RZGsL0n1g15ZZ3IZihWRdIc73btAowhMcYB7c3L2qDq+iXd6utnoFlW23B2p8HZel7+X9XKZVk4TxPvTic+u7+nlkqevC2GBCRE+t1uwCHdoejftTVD1nHYMsm9p8z0+ci9d4rNKtqmfdc36eaj17/bfQ9p4OWdhU1f3b3kxf6WulTKbMrESEds3V17be9d2caJat7NxtBgIwTMsrGTF7GwUlXqUNFUKbGwDNZHLHNxBN1M1YmoQtDKQPL6quiGlntMwloGQWsF4yEl91QAvHvnpkOuM917o8OGibeQuFoeDvcc3eNQXZP0wYtCG1RaMMu/Qa/bWm9fH6ONT0zS0Xo9tBaFmMLqeSHNHCAEYT8euDvcWXvq2Uossofbt2HzljFDvKZJnP1FkvMqVhqPXUP+2tvFclF9TTZrdvVY264KUs1jbtyFqlbMW52CrHctvg6tNfY83ZSGgIeSgzgoRTrfp0jsiGRTMkKpC7laB2HD9Xd31FdpcA8u9P3BxrC4NqTXvSb4fDlIoxn0X+f4Riup7XEliD9oRW8ErAuHol7nUddzZLcQlpKZcqBo5emSWEomzUaNZCwUTokk0dqN+zcqeJhPmZeFd4/Gnffu/MTTdDEltZhAtkLV1lpDe9Gt6SNZC0jrqlpl+01b5btxuVch2zZXU0ziYARb3OMQOYyRXbTuqaEEaisoFWihqC3cuYcwrsKH5sXksvSQV/EaL0IBUZY8c1pOnKYLX7x7w+ly4el8sXyge2SKhWS69bFVHrr5s2/qdl+rwlz9RfW5poGRNuvgq3yrFUGom7VztZm+cmOtwRG0MueJsQzOHJ6sx5iHWhbPK4ho72fVj/a3wIo80z7f1gSvhYCboPOWJ3O2wtEpM18sJ1KPFT0oRRYWuVApLPVEYaHoTKkXRIWZC5HIqAfGmA2sQHI4fJvi2r+3gHu9BgIQxOhvggu02sJDC8bBF8gqhgMo9rNGCBTLRTk1jwtZ68MGIskevchevHi5EV5JI7gVkGLNN1sovps3FRfMDZFrjOuHNHIY9ySio+kaWq1XphtAT7wdiRelB/W2FxLsVjElEut6O6JiRavBi9ldK1WfS7Uk2pXB6eazKcHByldCVaQkUCWWAdGKpIiMCaKgndptIEnxdvDReBTjsBZoawOKeVPJoETnZ4wpEVOi1ATBwn/zMpMbEONqlXtnYTfKmwdly1V9J7W9GGhqRrDaveJGzq+Zkvqbf/Nv8mf/7J/ll37pl/jVX/1V/upf/av8u//uvwvAsiz8l//lf8n/+D/+j/yDf/APePnyJb/rd/0u/syf+TN897vf7ef48ssv+U/+k/+E//6//+8JIfD7ft/v48//+T/P7e3tT3o5m2NrPW89iO3rqwchOMAB72WEE2P641wgLIZgC5fAlBdPbhpD8y6l/ntv8WyympytTcacF+4fn5ye6MLpMjsk2K3J0jwny01BE4gmGKSaAuiwcoBtHHvrq0jjwtLNv+ux1SmtRmxIkeMY2adIrAEp3rEwtKI+C5mo96nSbgh8IOmpSskzpRbPdJjwGIIJ2HmZeDw/8Xg+8fmbNzxdzjxeJooLG/XvbPhn6UmFK0divTdd77/jejfbXa7e3H4Jm9/fV1Rte62HM07odsyvj+33NFZ4tLDkiSUPljcZBkIKhBQpJTMtE0vJRMcMr7VXtu9X49gNk7BRVrF5NA76Vwg5QFGrx7lUdJqZLo8QKiUJeoRaF0PXaWHiicxM1pmlnu3aq/Gu7eLEgUIMiVEORPeu2mgb/6CFACsbBgvZKCkNSNm5wJpBFqpGMqaklmpKqhUEb5VwUyoBA3g0BoYUggENkntIjjjr4UCUxi+XIo5ia4k5yzf3Tr6hoXJHjrtb9sOeQROyaL/Ljc+0RgZUwZk7rINSMu8vQJGWhzUFxWJ7RGrzoNY5VQdtdQmvm3UONCUVnYB63XOQXMD3sE6A6qjNGAYGzCRQojU+FK8t6JZaa0WSfTeY4o5pJIRkbVdiMGSyKrlaiYy6t2WDH4GIVJM4wfeipSDqZtc2JRXbNLsnLZ6z/3pa6idWUk9PT/zsz/4s/9F/9B/xe3/v77167XQ68cu//Mv8V//Vf8XP/uzP8ubNG/7T//Q/5d/5d/4dfvEXf7G/7z/4D/4DfvVXf5W//tf/Osuy8B/+h/8hf+SP/BH+2//2v/2JruUq3NcET1fPKyIf5SoKthrW2r3u1sW1VLPqc4ElGHfXtCyUqk5EaRunevPDxt23vYrstU5Lzsx5MVi5h/O0ruE7m6hV6KpfqF5d8Fagfg1h+cEXmpulPi72OI4DN4cbdrs9DXnXPmIf6ytr47ms5+vV8u2T/l1uS5sdnU3BnaaJx/OZp8uFabGeUaUUKJVGVH313WzrhVZF1QTzOsub3zfhs3Y93enyd7YNpO+No6wX0b7o6j3PBcnWcvBx8/xHrpXzNIFEvnx4Q6nVhFWx9ZmXCa2FUQZ2yRrirY0QpZcNSLtfH6AOIti4eM1CF7AcbbJmroxYvijSz2fKvPQBlJY41wa+aICI2o2Sa/ZI92BEPJ9Qu0FhoacBZETwgmSM3T7XhVwzOevqQfVhXcfYcp7qFFC+Etq5gxiQEfcKuiGz7gkbR2NAeJ4KsJ+WlzEwSJDIYXfDYTyQ4sD12bZrZzPdG3DHdl3YmpF1q9R2HzZ32rxgv8YV0PTerltPuXIA0AxXa9ei/Z6aDm5KS7zN0Kow3OjbrNy+t69+2onWUKIp8mRGh7ZdaUZVnx+aN7VVUG02NkebD5FOj/YjpNbV8RMrqd/ze34Pv+f3/J4Pvvby5Uv++l//61fP/aW/9Jf4N//Nf5N//I//Md/73vf4O3/n7/DX/tpf43/9X/9X/o1/498A4C/+xb/Iv/1v/9v8uT/35648rh9/vOcvAC1Y4F7IlXR79hE3wKsojV2guGDLxeCZQYTznJ141axG4/1L68bxAroWFssl995O02yPSzaWCC1QltqtsjURv4r7brW0w+9hVbTbjQlbPN7V8cE1YEoyiPDqxUd877vf4Xa8QWIwZKNEpxXbKKdWidiTnW3FBb9ve1+wi3GyAmEphXeXR6Y884N3X/Crbz9jWma+eHhgWhbyXAiz1XME6UVRG/1g1/BB+pRumqpvIO317Outekiov/f9RG0XSP09q5JcWb1lfZM8++DmesSZoM9L5p998QUxvOUHn39Oismog3JmSImf+ug1x/2Bl3d3vN6/srXVchiBbvRsvd/mWEpo8X0fGyC0/hk7IAlkoex0fQ5AKhJmghaCNraWgZSM4LQss7GVh0IVY9qvrnSbjl+Np6YoPRzlDTBDuCHEA1AQmVEtLNOZU37HaTnxcLEuy7k64MLvQ4DWdUCr0WNVEUIYsQUl5h2FQAqDKcHWl49m6ClRbUuHUAhxIcSGuLWCVYsIrHO3u9nz6Sff47g7crO/JUbpCN12i80fMAShESNrsLB0A7FIp6wRJ5RVmBVKtaakSZFoBoHlppwVxBmO+mS3Fsqe01uDCb7LFSQrWuynLMUMBg/JyhBJ0bhDc21Keb2DlY0dpLhSqQ3Jh3Py+T5GSHEEb4poDB7q+UpFasI6DVthsZmS5VoBX+0yD8FGoWAtTEKvWv7Rx695Turdu3eICK9evQLgf/6f/2devXrVFRTA7/pdv4sQAn/rb/0t/r1/79977xzTNDFNU//7/v4e+LBPsRo+zTo0C/mZ+NkYo9ofBXq/HH8S6wkErW7HIhtCrtVp/q3uAhqMXSnFuuVW9dh7Neu2AyFaHuyZY9TzUevVb0yp50rrWgf9SAzbVxgtYxo4Ho7s0q4LoS2NKFuPZaM0rs77HkgCR7uZ0p6XhcsyWQ6qeVE5W32QD4oITtEg3VPqZuwmoaTa1ZLvXReajdn82TB1pefzdzWuzwaofeUaU3/2DlnXTjuuYQ/rIJdaOc8TgnC+nMzyLZmaF3bjyOEwECIc6w4LjEYPVZkQaczX/UI+YGQ3H4ee68C8pqbMWkK+W+Mbn0g2ostBL0akyhX2phcLo1032fCte8rCatEBEgMiI7AgYXZwRd54UrjwbKfSdZ59sZlN5PPu2nHde+KelDUXNRup0joNr7aEg5w64MHGSJsi9BB6kMh+PLLfHUkxIVsj5L2Z3SikjUGzVQLNk3LosHs5agJAgk3KJjXQfzo35WoAmA2oLZZmb7yKaqs5P6JoFZ8SaVg7Vi6L9q+PIxuQg3LlSa3yx64xuMFa62oAdk+K1hBG7VEV6bTmV0J0fUak78UPsQV91fFrqqQulwv/xX/xX/Dv//v/Pi9evADg+9//Pt/61reuLyIlXr9+zfe///0PnudP/+k/zZ/4E3/ivec/pKSQpng2YaLng9b3hPY1gmxDVmaFaLApLw3AIOsGyC5cQ7QutetGU2qp1NLg42HjTa9u+nu2xlZZfUiObu7vw+b8VvU+G6WNu7DG1+2apbh17gLNAuqlq/OWnsbretpmLSV366tWq7HIdUG1MGVrs3FZJn717Rc8TRe+eLjn3cPZKJ9mA5a0cIhs4nfNKl1nr1nv6+3Js3t9f6jkAy9sFd4zhdO0X/+sv+cDiuGrv3N9ptbCkmcTSIbjNTboGJEYCUkJqUCYqVz8fo0NALfS2zRvoyrb7+kBnAga/QpzQYu1TZBoOC+NTksUKqLRKJsoHvGzubZ87AAyEMMdQ3xlPY/CDuNss7Vt69ILtxGrg8IYMqRacWwMkUUvnPI9uV44LU9cshEgUwUp0dkz2pr3PeFdH6obdVajXEmpMAw7duPOwk/R6pdKydZNGHrYr3H2GSLfw4GNTkrVyyEgSvQ2O8ms0mKoRJrg1etB78pYFDFQvReVu29SvMHhEpE5WueK7FspNsFdLYfXxk6BzkuJKypxxVY9imYFb6aTwjpmW2NXFb0U+3hpfdqUGJ3J3Dap5528iWWM5iFLoMoK8w+uQILYa+OueVEVmQtaK5lCLZbrqoJdb1fS6/28VwLVjRHpI/v1AOi/hkpqWRb+wB/4A6gq//V//V//HzrXH/tjf4w/+kf/aP/7/v6en/mZn/nge7uiaRuAjeXC5sWmKZrpvjGE+u9a/dPesdKtOcBcJDGWhdY+3nSdKSl1qiCakeTfZ+zZsiKz+kU/F3wfUDr9Rj6gwdoiuLJOnr2vCwdj2rDst19HUFdWzVxbPQvZ/NeOXHMvVi7qNRxqNP5PlxPvzobk+8GbNzxeztyfTjycLsbM7iwLW0ZvXHAaalg2l76536bIujUpdo4+aet9d//Cx8T00Kqo9PnYfkhR9Vi+PHvrV1kQdlS1jQz0/ldDDKQhISkgCavjCQtVL4hEr4GKtLxCM4a2Frf6um3GghBMSSUPBc8FFqtJa9cdaqVqNnBQsARVZDbliaJkay4oI0gkxlvS8JoGZl4LADYQWBfSrSC5dXqNThG2lMo53zPXM+d8YirGtNKh8RpojRpxA85es1Yb6mztpqSEYQiMw8F49YLd2aLK4kn9JhEtcmFGZQvNtnnWNhdioc4kiUB0qP5WbIb1nC7waf1zu92yeqXW1iJa0fISkTmY4ZfVvNnBvRRwT6pLCj/P+n1btn+Dvhc3uunX1VSK7WEnk872qDViBWtCHIPhn2qlFrvnSDL0bP8RS2+IErX17jLaJgvf2vtzLqALpVRqyU6Dtin07a53G7+2ZvqOudpXjg/8F6ukmoL6R//oH/ELv/AL3YsC+Pa3v80Pf/jDq/fnnPnyyy/59re//cHz7XY7drvde89fhVu6c7EVKBuxujWOu1DTVeBsjezNmFqdwgo2WEV4E0JGWWLnbZ7SGn5qn+uJzu33r5d5JWDb67r5nuf0QPbKh4J8evWeq+elrXgXUNXbLFTP4vngSIsVb6+pWWX9mTV0BGbVTctMrpnH84m3jw+c55mn6cJ5nlmK0T71pHmzVpu3cjX2WyWiV/OxXk17v/TPNEdpG9z9kDJShOu4+ebEm2/YzrO1Flm/p3kBV0O9UaxtuoILgcMYubvZsR9Hbg4jh93AOCZSig7AcRHklD20GqGNktraKM0gQui5M6MociAKG8OpzZX/WHhOMJLRNoeWT1v7BDdFuF2c2i+mtzvq61yY8wL6xDk/cb6cmcuZeV5YcrZ87HoJVx5B38lXhokYL2QVZwNvgI4WJmp5FCslqdVolualkrMV57eQ+jpXdj+7dOA4HjjubhnjzlpZbJVT86A6Kwjm8V9Ndu3nVEfpUiq4J6htneDKTdyDslWxRvH6CQ01aISw/p3q2r9FPlz+qIrl0R31GYqFIGuJ6GQLRbLPq1rOKETWfKYjMe077Fr7tfU9ZJ9v3ctTGhAp5CU6cGIzd93zdNRvE7J+whYKbbtFCN7a6Ov15v3nrqSagvq7f/fv8jf+xt/g448/vnr9t//2387bt2/5pV/6JX7rb/2tAPzCL/wCtVZ+22/7bf98LuKr6Da2C0OboHWb0we3bXzZGI+24K4Ldz2S0Koe3H23D4hDXhU6kk+N1aShYftlvCeAnym3Zxf+wVv6iru9dqqaJS7V2AZQSl7I04zG1JuTSWc27rfDBiLm1+fwXLHzoZVSF94+3XO6nPnBu7f8ypefM5fM/eXCUgqlKCU/t6ia1XV11X0MttXqV5pJsBbW3eJYN/qVYdLve6tuPjRqysZMXk91payuzQbxPNiHxr41DQ+ijKkSpfLJq5HvfvoRu3Hkk1cvOOx3jMOO/W7H1ke1OijzhHp9i2yMlJ4bswUqRYmzmhdi3CkmyGoym1XnfvdFsp9jbwJRFtAJU2nRZyQ697wS1AhUDenXtKNda4zRkF9YvVStyuPlntN04rLc8+Xph+QykXU2lgoFrW47uwdvRcFlleSuHluBas2JTGARyGnxHLC93ohWiypTVkpRns6Zx6fMtCjz7EjCxkmnFkoMMfLR8af45NW3eHn7itvDS8Y0WglsUWtvIYONrc+h4qCoVXt7/sWaTJaLcTXKHGBeQ7WIWilRMDBColUNDVaXpW1eA7FGpCRnAiloUOqYURYqwRjnm0JGCWFAxpFQA6OOhBwps5If3Fhxwt4QMhKL8SpqglGQQyQM0dHMJr9MZ7kycRRkA7WkmEiHZF0YciGXCjlYDr4aRVNw4MfqDZoQ7R4/0MgOYogMYbxiBPtRx0+spB4fH/l7f+/v9b//4T/8h/ztv/23ef36Nd/5znf4/b//9/PLv/zL/A//w/9AKaXnmV6/fs04jvzm3/yb+d2/+3fzh//wH+Yv/+W/zLIs/PzP/zx/8A/+wZ8Q2bceXZ5sj40cuqozeu9Yrfb2b1cNugp63QjMNbXhYbu6+UA3Oj1Qos0K3J7jR6mdD9/Ee4aX/y7vvf/5m97/NmkKRuuGyl97eEmasu4f1839rIJa0e4dlVqZ88JlnjlNF56mC3MphuJz67Ap863Ftt6Edl3UX/7ggLlZ0ay9fiKfPXn+kfUJ3UzoVyn2945+ndsx1Pe+6xrQ1DwWGKIwxMh+l7g57NiNA7txYBySNdB0PrkmENaLa5DzzTk3T7RVIXjCWm0OVRosvSnsDlDf2EQNjbahn3rmSW0Rbfg5u2Us0MASfY3jPdCWE5flwjx7E0MydRN/WD3f67G8mkfPz1SPEFqeyc5R1QzKVmdj4WNDzuZsKNqSdTUIexLYQ1hExmFv9VHjkSGODrN2K7JrImj1W/rMGpE24Q1yXiqa1dm/tN8C7QfL54WmfNHtiPiduxeifVZNiUtjkTeaokx1vtHmk0SiOv9eAc0YWKN409RQkFg871cMSFMioQElwnpXPYd1NS946Nm0s63XFnrcTuR7G88AKvL8dRMwluP7egG/n1hJ/eIv/iK/43f8jv53yxX9oT/0h/jjf/yP89/9d/8dAL/lt/yWq8/9jb/xN/i5n/s5AP7KX/kr/PzP/zy/83f+zl7M+xf+wl/4SS/FNtSVsyHr776uugH61SdxJNCHX16RYV//aAiyDpigbRiuBHG/7A9f1uaiN/Dz59b+B0+gm2tf7wPxBP6QSNGET66Z2mDJTUGLb4AWiEf6xasTUS51NoKdZeJxPjPNMz94eMfj+cSb84nHZTZ2DdXeEmerc9oef//62wC1N2xu2QVlA8Z0a/W9jdA8IN1spM1AfGA+r00BMz4aC3fPHzYl/hXD3k5bdWFZntgNA59+66f5+OVL7o4HXt/dkmJgn0br7hrEE+sebFqrZvsYia+jrbCzsXEjQ63mh6CdRse6+G57MgWERFTribQs1jIm14klnxASu/gJKeyJckD0gLDhVtso6a7E1PIfuSw8nu9ZysL90xc8Xt6S6+T5XEOIhW0+xcEHBnqTTlzcG3S40tEsnCcLJR0PymWqxCDsd5EYhGmuTHMhF+U8WTjxfKlcLq7UsuscCpAZ0p4Xx5fsxgPf+uQ7fPrxr2M3jAxp53WPz+ZU1LxNrLFn6GaZRSEorpyWSr3M6FxNR3mKK0ulCgzOSBObx4Qpy4qHLbVaMGJW6gVqCJSY0FgMICiVEpSsxkU/MZOxCMWXj49QhF0ZiTVyIy+4Sx85uXCGUinLRM4X6iAsOqBDYLg9MFz2DOOO25evSMk8uyCprRpUlZwXSinEODAMgxuxft2t27gYOUBQK67G6+daGFHbvugCrf/xtY+fWEn93M/93I9MHP+4pDKYV/WTFu5++Gg3/BUuStvsHxgT/dAbPzh48lVy7dnHTZJoF7LShcQ2H6XPP/L+ia4v5blSgmuz/UpJPztV0y1XsltI0dgmRKDU3AVK7F4NjvLBLcV2vRZGMIYMgxU/zRfenh45zzNfnB54PJ14N505L4tD7ulGw/NL/moFtX6uASCujBHBLNYgG9tENy9u37h9fD6gX/VMm8vNRfa19BULYWMM1ZqZlydS2vPx61d87zs/zS5EDh5WDR6qNAahVvwc1rpp4JokWP1/7dfUvCfFlJRuPqxS0dC4EMHqBZMxktRC1SdyuTAvZ6b5kRh27PeBFPdEdojuno2K0nqfryImgCZKmXm6PDHlM4+Xtzxd3rrKKTQKou1ZFIEQV6Ro5wdsLUvMKyoFLpdKzsI8K0uuxBg4LIbMu0yVy2RNQM8XU1LLImRXTlpa1rSCFFIK3N294Li/5aNXP8XHH31q/mRfnxY67Fx4PezfPEd7o7UsKYZqy4oulWVaqHMhJyUPpsYuFCqwl4GdDAwSGMRqvooUMwhFgGo57wwym5Kqg4+4WjqhSCFLpkjhwomZhc/mz/kHb/8ZtVRGNSXzrf13+ekbIdRAnG19TPMT0/mREuFchDIEDvmGfT5yvLnlxcsXjE6UK0QCxu7YOUMRlMAwuJHSDLWeL3Wfu1v69nPlkXW5tVkLP15N9OObz91XN6LkSgN84OjG9GqqXgHVN3UVzz/WxdbWq92EaN5TeU05bV65ttSalX79ylUIaWNYXwHenh/6gde6stm8zQXjWjra7sM+oLrxprR5EKuitR5ZxnD+dDlzyRPvzk98/viOaVl4vFw4Lcbs/rwMrOuR9nB1YW1cbaS3SqxlDd8DQGz0Tv+O/iXNL3o+MFuB2YGzV4OoV2+9nt33YSr2XSJt/JrXY4zb4+AtFLQHcNq+9q1ssfyr8+rGBnELQ9r1bpRxy0nZWD7T7N0qcgQYa1+vUgulGvt5rdnQX2po1CqKRr/TLVCEgMhgynTjXS75Yj/lRC5nlNwYtWj9h+xe7Q5qO58KFYMwC8nyRsE932pKRdxLRpSlCOdLIYRKXpQYhHlR5sXYw1tJQ8nW9LANQZs3VQNflFwpXqA/pGR5sdwKGFvuxJCLbf5Vmpj2vmh1dr7NmVLOFi6PM5oKOUFJpuyMck2NjDUkkErzxyoWxhOq5yDF7jvb+GsQ1BteVkcUhehFzcNg3ksw2qNCRTRTtHKfH0mXz6z9/FygKHOZWHSiVpiz5Ywul5lduHCqZxgDwzBSsxUyo2rh/yDc3b3ieLgFhHm2zuGl5J6bXxVTGy5XULQw81dYzts/v8bxjVZSdak9JLM91iTz9kl76NBn/8vWgL7/xs3x/NUrxaP0MM1W6Pefuj7Xz9U8lKvzN8X5vjBsCuqZz2hXoh+44k3uYqXEaacXs+qsx/BKauthPVEhitc/ZV+QHtvPVBYKU1n4wbsvefv0wBeP9/zq2y9YSuHsXYVzrV5p1YT78+v/gGrfJFr7S5sx21Ih9TsRei+j1VrzT6hnZaTlFFak2spB+IGjwYW7NSi0tigbc2a9ExcYKORaqLUSU+DmcOBmv2cMgeD9fERsvYrgzCVYCG47FFcKah2Ipnab6rAmDivh7yqZHfii3h7Fw0S5LMx5otbMkh9Z6oVSFvKyEEMk50KkkNDeRTy4Ro1h9M6xgRhMSD5NX3Ka3zItj5ymz1jKhUomDYBz7sFq9KzovJa6sZYSJQ5oVZZQDZHHgpTZ7iFaOPMyK4+nbArc+Syb6lBae5sNnHszTqoBJZGzcLksBFmcDmlPmQvzNDu4wsBBVs/mBbveCkgstkepmfP0xFxnTvmBx+kt1EoaTA/VBDVavizPBVTZBYGYvCap0SJlFCUEJYWEVKXkik4VorExqIqBBUUJITCEZHs9CqUUhse3FFWWap0UUHg8/yr/9PQD84Ly4qHTQK3R9vXFjI9xGRieBmKIjD/8B4gEnp4uXC4ToQaGPLAbdvw//x8/y6//3r9GCDPzbESz82xsOgYkCTY+W6CabnJb/WlT0Nf7/yv23weOb7SS+lHHtY2s2xf6sz9OsetXPLtVGts3vydfri/ombb7EWbEh+Zvo3f16kl9/1rae7pB+N6Xb8Ia15p8Y6x3i6nZ7hbmK5Ygn2fO04WT/+RamauLyOcD8L52fe+F1We4uoP+65UMF3GlJZtpfO5prR/qglw20PYNT98Ko/7QZW6v70Mjvd5K+7yx5Isx5UvLN61bs9Xcyea7gdXD/5Dh0QfhWnldX9FqHTUWkAZsqdW8iFKL17tUp+SJoA00EXtSvF0jQk9yi1NXKRbSzGU2cIRaXhPB6a0aWTM9rKdX//nCdKYEQ78JBCVI8QZ94gl79Y7VbvAVdYMmuHfi603NIGmeqvocd4OjQimFkg05mUIyTAiNiHYNW63FB2t+BkcilpqNPaNmFl3Mb/Cwcw3ixOAWvgTWYvWWO23j56zvVapBurFmpxIcOl83qlbAGD2UEJLfa8uSuT+tyqLW5ds8vuxNUweUhKgwVLu/kgsLpqwvywwqPD6dOZ0uxBrZ5ZH9sOcyXdxzEkScaNZx/W0fdlTsB4RecwC2cnQbtv+q5qHPj3+plFRbXF+poNY3Pv+F63DSB4Ts5lFx/I/gSKrNJ3WtLLk22FdPqXkGbW6b7QftfM++8KsuH3yhvOdfrV/0AQBNs7dNWa0CyCwgF27VFFLPqyE8zRe+eLznPF/4/ps3vH2653G+MFdnZm4bHTywId1r9bzxRlCvd9MW8ZXAdW/QIlgbjkP/1yDaTXDZXglXbNObu1WwQspwNXbShKWwKus2nldx1+0v4v+vdR+9u6zYx253e3765S03ux2vhgMHord0SWsn7rZ23NNeeQe3UI+tYtpAofFcy1Z7Q+Pdsto97/Z8WWYnOp45zRdKKT3XM4YX7NMtQzxwHL/LfrwjhpEYR8snxdbiwXJMuVy4TO8odeI0v+Oy3FM0k4aRkKIJe8+N9dB5KTSKrNqVp3unrmuqKho93JgSDJUSKpoD0WuFFq3PRscHXHGWA+1zqPgY41+g1v36/HhBsrWlOexuiCzUQailEppvqtlCelo4Lw/MdaLmiTw9UbVwKU8UzWjIjKOtg9A5HouH8WAcbH6NyNyYOEIYQAJFlBIUkULRyegpHGUZamLwvlQUheL5xLizfSCJQiGyJ8iAoCzVvJuCUNT6wTW+QlS8rEYpbQ9Vm39BvLgaLvNC9lBe0kjxVh2Xy4VhUIZhz5bKqHdhFulpjS252LWUaoYF1+v1ax7/0iiprqB+EiReH7TnVjhsJEV/vHqqWcKyGuVX6DVclAqb+O36pi4TdXPOVvX3AQvj/XDX9sVVUen2n68Yi+rXpi2m3JKfZt7SKFeqelzdB+GyzLx9fOA0nXn7+MDbp0emmsn1erAaqdGVQOmF6O9ndrrA/woX9Cp8urnlFulreN7e5uJq0LZuSVMrfoLtjF79Ke/bB/L+HxujcM1PinAYRr51fMlxN3IbR0bv2hqNxrsrM4EOWQauwtAbH6B9g3tIpVv4V17e+ieomrdUK/OUmZaFy7LwNBla63KGkgNhf2QYvsUYD+yG1+yGm1UIebGlcVfOqOeyTtPnzOXElJ+YyxkQYkwkSbTWGNvcWWGx1hDmfvlYORFs2wM4elUqQwhIihQJLMHetHiB8vO9s9p9sllpthd0+6wEalHmeSbpgGhgHHZQAnMsDnEwwWoNAQulzpymey75iWU6MZ3foVoosqBSGXaJ8WB5OvPuFOtYazDvGA0ckqK1tQ9BPDcVqJJtrkOlhAUJBfCCYoWqg6Ee+5xGgpjhYFSuhcBgjBkESjUlrg2H2Iy6LgxWr82Wh2P7FUfeGzCl1JW4oFLJOTPPk7eYh86C0le/9whpNWM0ObwKTfV5W026NnVfX05/o5XUKlhxQbt55b2N//6n4bngb97Mhz2p57KrC4ftWxWeyYurRzehr43zbobDWmDRPrdqse39bd7w7DwfvPSrNxjHWSUv2eDIy8oGMc8zOc/MZeY0nSm1cJoXlpJ5uJz44uEd0zJzWmayOgdfcS8oXImGVfii3ePsYa7n49jeX1nvo691Wd+kbbE3Za7N3TKLulls13G0Z0qpfelmDXzIWHlvJN9//Uq5Cu6BRMKQCCkRUiTGQIhGGWTGjiPv2NA6tVvZ3E9X8/53Mx5QQ5gVh6C3nEzO1Rn3C9O8kEvh8TwxLQvzsnCaJlOmjconHDgeXzKmHSmlbilLaB6p5W9zmZnzI0s+MeUzSzmTiymf1im3eeI0r8bDWW3czRbyUKC2fWLaSsV4/yREC/Nh+ZpxJ0iw5qH0MXu2PnSzR9qItamW9U2KMteFmCceLve8efqC6TLz8PhkbXXqTNGFUieW8kTVhUt9IOsF1RlSQZztW1gLUu3sVmNlusoo1CwHGbxDcCPFbXVoW+NNvaWKITJDCKBlNb5q4xJcTSwRY2NPIZFC+WrDfGtAXy1Y3hNc21P0xpYls+SFwcgQr0+M0MiHu4LqQ//+Xume1gYB9nUV1TdcSW0xapvnN8CJVXM/F1BsNMl7J352vuvzXu2BZx/bLoYOsmK9nvV8em2VNPNwU6/xQcfi+fGBcF9/SZ9fo22PYrz7TNPE6enEcdj//9v71mDLjqr+3+q9z70zk5gMCZUMAwxEizK8pCKRVIQqrSIlrwIVSwtqjCmkpNAgz4qgFvDBwhB88fhTIH6QD4IoVQQlVUhFgglUJSFMiMjDgGUM4TFEDMm87j1n793r/6HX6l69d+9zzp0MmXuTs6bOnHt69+5e/VqvXr06mIcqj/uPHcXRE0dxYraJ+449gGk7w+Ef3YcjJ46j5Q5TNQFKwa1crUAgUBUmIalWA4pEVQkGAbJfYRgxOO873+tdnfOM9B7rbwZ7WagMZDHFtBPiC/qt539Ko2iyZZJElEnHWJUQ6xDIs1pfR72+hnp9gnqthqsc6jrcY9KJGz+gHm+IzJWF8QSRusvqYCHIwbMumGfarsPGLHicHd9ssDlrMG06HD0xQ9t5HNtoMG08mqbFdBqunDnnzLOxe303JpNzcO45+0ME8OBnIQGT06kgD49pdwzHp/+LWbuBY5s/QttuQO9JCrflOjhXhWjcnfZHB5AHURO724nHn5PzV55ZIjogXJPBCJEy6irsz1QhxNF0xmCeIsW7pCQJGvU6rvEooJKYVwmd7zBrZ+jQ4QcPfB93/+9d2NzcxAP3H0XTtdhoTqDpZuh4E60/BnIeu9Y96hqoK8LaeqizkliMa/UEu+s9oR2+AcOjaTfBXQsihKvq4eCqCuQqENXiIVmhkjh9DI+uknNXdQtMVBedQAKPgDoXnEVkEagwUFc1dk3Wwcw4kR2KTVabnCxQb06b9abMXMaCOTjlTJsZNjY2wpUdUPpH8W8bfNiaM0jd6iPx7RMiMp/FsLOZlLGRzsmF3KYmUKTrZQ0q/El5kpFQinRQxfO4rsIkoR7hy+qyoXkU5eiqPs6xrGCZ4aeEvddu3Qxuu3ApY7iEcAYmYGM2xfHNTZyYhagRm80MxzY3cHTzBDzCxRKgIEnq1eJJAwgVcNZvBr/SUIlmpdqWIpxpN7FhnA9RNqw6IIyBuZTs814H93qyZIwc5FLz7Qh4DjeaNuLp2PoOtQuLH9GU2kVCLypYWNgs8QiiaygbbVzMeMxomhZN16DpRGvyHic2p9ictZg2HU5MA5PamHaYNiGczWwW8Og6CeKKCq6qUbkavguXU3o5XMukl8V7tH6K1k/R+Vk0NwJAuuzQxQOqqa8liLEK3VnYKSG4SHEiQwgiPVsYJPSqCm12zpqvCt9IBNmOaqZMIzHdjdkJHDnxAKabUxzbPBoYfbOBxs/AmMJjA855TCYuMBQ4gKrUDkC8NMVjzUkIIXUWQbIa5KuSoOZ8ab1hFEH7DNplmqvE1JvPoR8dHCqqxFHFhBKzfRB/5AbRIhCioBcYlTjbdMFj1QrVIVtqC8sApDWRf6vxNWOQGkJpCdjRTGo5KDAo2CTOR7bkvt7XvAANaJztBcRYd2w/8tBREmYMvczRmiPZj8AY81JaYZzYIoSAnB1+tHEMjW9xtJmhczUmVY0fHf0Rjm2EvabjzSZa3+FIO8Omtl+0HDXZkEd0LtVL1kI/UGRA9h84RgaMizoiKJK5Ssdhgz3vFu6b8XT8tF7lcz0mr70b96liSkbWFnW36e98rMS/AADj6PEN3P39H2DX2hq62Qxn79mD3etrOHPXLgCMWbcBz23w4K2CZlnLxYF64j90QCAOnThBNK3HiU1hPrMZNmeBSR2bNmg7j+ObM2zOWnQdMGt9DLraySV5LNfHoGuBtgU3DbppAziPtp3Bd52EsmoB6kCTDcA1mDUPYLO5H8wdqprg6jXU1QRVNYFzFWq3FhhVtEx1MZCw80E7AOkN1gTvw76JA0NuDEVFNZhIAiWEvllfm2BSA5N6E0QSrNxTEl7kO4XqMuqDl7H2OkUI9foE5BzuPvw/+NGxH8J3Yd+FIQeiHbBr3eGMPRWoIkyqGutVOPTufbhmnWqJ313pOS+ZughRFxxXMq3Cnq+wa8RQZHHeJHbG4ODuPmFAxilcIUJA64AaYR9JhPIwXyrsmqyj4y5qqDqXReQrzN4eEYu4Q7emhQGF/ejgOLGB3bv2yDOzJyWalK7H6AXZY1AJr4wlbwl2NpPKVIfSoLDJqswn76gooEfexHmZBcFbmVN+hpJkf5JzGqigF7k5BA9A2YtIjCoNMCGlzzP55QwqTEBL9CkilzNeL+LS8dkUTddg5j2qeh21q3D/8QdwYvMEWvaYokUHxrTr0GqbPdJkMzxC3cHjKaMowQ29FQdNskMjK0ZvDOHIvBAWboysYDQ2dcYwgkGh2Ug0zEodeeTGvH8HKb1nKUJB8tIENqcz/LBrsGsywZlrE/Gm2iWLjTFtT6DjFlUFVHW4RgH1WviGLHghb+Cwx9R2HtOmxdHjm5i1HY5vzrAxazBrOxwVJnViM5j6NOSQHmINhFrOBIIB70HeA10H33Ygx2jaGbquxYnpDMc2pyDXolo/CnIztN0xtN1RgIKTBFGNSb2OSb0u2kQtRJlTHxPJPJfxF40LCMyKvUM63gpImG7AdVEjqysHFvNjtg6zczmAZVSRecW2ylpyhGpSA2Dcd+SHuO+Be0EwJtq1sH/ItI49Z5yJcEM1oXbBPZxlvukeU4p2kuYSSQDcIF8YR3b1/kwYIroXWSGyknmtE8wDJN53MXqImPKcqzCpakxcDcrmbk/QLfAlzdYnbSReYOqtFxwn5JoVUM+7jwDSq+QtTRhQoCR05bWtNKkMFigobLhBfitqeFG7WjWBWKYumEzwTZpAznSimBIyy2TLrUaUJo8UMWfLqdcIlWhyVqATnkyq/u053Muz2TZ44MQxOHI4sbmJzaaBB6ORO39YCRwr21HJyTQVFk+CBgm1XVY+M51WERMlpxVlMHq+hLUAU4jJq15EGqw69q1LZSWlK75gysul3HIskZymKAo6yvq2Z6DxBLSMHx47gRNti12TE/jhsaMIOxHBEaCuHdYmwVQ2cRNZ8OJcbh0iumCua7oOxzcC0Zg2LWZyeHqz6YKHVxcikqfFT6bRiELExmwKz4z/PXIf1n7wbTgXguEwM05sTnH0xAYmtcfecxusrXt4llh8VKGqwiHQSb2Guha36KhS6H4aIV4VQnprL4nETxJpXK4nIelrkjuhXQuvzFrS6sqhElfOzpdNW8ksHuaJWXmynigS0GBmlCUoHqHJI7FE0+W9KAClc2hpKVOcO5kwg2Bk1OiE+dNEa9gBqMLxgWiyVm3Kh1kTTI3BxFo5h0k1EQ28QNzK03c4geM6s1kkOknXomkadF2LGIA6vqSd5+I7QJW1PwqEcf2mx0vRNIGHP5OyQnNhLC1dDd95RrKZVDxnyGYm4gF/MMJR+si4wksxvIw1Iwrxjudl+vX1BcUtNjV7N2NeZkYGGorWM5rpDBuzH4EAdL4Lm/qkElDCUbUjQO7MoaTic1apRNnstcDSznwoLBdJXC3wEolELc81LWZiQO0uLBc4BqcyTo5+zkh/th5wXlbW8UOJ1LbRkiH1ryeEcyPeE6YgTDuPY/c9ECRfeFTo4AhYX6tQVYT1usautQkcCI5qABSOxiAE5Z2Jt17bhagC4VBrGwlkFBR8QpJQZTin/gqaTsseD2weh5uewLFmA/979IfhvqDJBM45HD+xiaNHT2DPHsKTdq/jrLqSazUYNZx4Aq6hrnahrneBffAqZM8AWgSHCYJ6+TmqUZGPe1dhHGowquDxWAUS1In2S9yBqzoQdGVStUNdh8ClvjPn0/pjBmU4iVCqaBbOpIW6qorgXBeYWeXztRjNV7kIk65jD0/jmTVCfEKibbDNpZcTFgOF6QfJ3Od1T5JAnkCdE4U6XJfiCCDnouNE0zVRA0/zcdgvcQIXklO/AZC9yHBOaorNzQ00zQxA0jr1xWDuSxfLx70n0MBxIl1wunXY2UwqiUBL5rc/hGxTIcaU4SdKrOIeRzZ7KUWhUWLBiSiY1yNhU6/NKA1S5Fmp0rF5FgsMD6M9m82LHFuGsagWVqtS6boTT7J4QmdsJ5ZTR6QN/RKiRqIyP3UzWU1CMQNZzOJb4UHybQ0pEY2ebCoqF+lYaBR35myaxEvzxOya8C/0lxVyYrvy7GljOEjAqpkzEG5phsRp48CkmBhVJ+dZQBJJMbS+g+wZKpMSTUq1qq4TbSXbmyOD2UBMiQxZf3phcrO2wYlpMDdOxJ18OpuiaWdoOwfPtZTt5KbWCs7V4Wp50rtVdb8FUBMWg+FV6pd3rbkP4o7tyAlzRnAkMeeV0liFX84BxY15Gmu3cRaI5w9h9kEpMqRUmhqm1MtNBZ4+6dAFnAS0kpexYsJCpNUhxQp7qaGJkEcnIoZ8KwPQJsvelJ5lg+5CqZXDdF6GidY7QhfIMuegyUfHiUHzdJz0rijLhNKIaFlRWCB78m852r2zmdRWYMCg0hgSEtePaabPI2PyJNqSmFQ4uNxyJ/O2MzwkEl4h1PK3rN1AHB2JBMdJZRdJUKsD+pqDIpakN2MP6zU4NSJ5GiUNJO0bIZo547Ltm9a0aqV1dqH1CXgSy7KN1fBtdqlkvyARGn2OmBjPVsi+VKzbMiotRyTbSL89Qhw6j7BfUBmiJt/xzhtO9ad2mW/T53mbTQIz4uViqi1H05OL49q0hJaCU8PGZoiJRhpGR/qKGeJpl2hiEEgsbpaRjwkKUqrsh4afgVmEvS659FCiIRA83MTD1S6cO/MV1urdWJvsQeUm2FWfjaqaAFyFTX0wKtI9Iy9OBi06yKV4IHhhRKFrCeTWANTibBG0pq7bDI4duoYY4coRDmXWlQOzhwj1W4A+UU7kXKPDxD4CgSWOXkdBQAiyjjI8YRjCSDyzRJ6RjlVmDIDJy5QIh4MdGU0qWguMua8CMGFwk8yJ1BHQUrgbiruICYmjze7JOpq26TlOUD5Vs2lRZlAk46JEz4tpcTabYWPjBJrZTASF3HECVEdGr2dnwoHk/kGNIS3pCyPz4JHDpCL0BsowKljJSqhxJJniGJG0ph6T8uFYS+bhEt2LzSCpxxEh2KCFSIYYX4GwxfO8SpiiFJwPdL7E8gEPNadI1FlzB/NU5Bwzu2MW80dkhUV0SDDqE3bIgdXehFSzCMPIgRb3nOHquiaNBZbzW+MQkXhFNPmJxyCL62+4n4GgN+DGTf9I+NlUYBhxn1HFKtM4c5ZmhYP03XmLr+CQTkxl+5BshIG8LI79AlB0je6JFaZeQxzFqcFLNG/E+h0mNWFtjeC0j9ihcmtYqwOTqqsQjke3TuLuHUH2nhCYsZcAt9RFGq6NIJqAaILAuKtgNlMnjzjdOX2ThLzqrAQSCzRjNgZDYqhOHb1EgDXWoXGAKpSRTK72uVhmeqhke1gDRPR1Dls6jo28E9rMXo8iiNDJIcxS7WrU4n04KLDMj7KkvvVbrUphVjI6L3tSvsvkIIpOMQ7cv7hQ5leqnk0lQ3yWgYcpk0odEzc3F72ii10mPEWhmMP+k+49dRQXFAO5JuUhpqMeUwKQxHUhZjIpSER6jebNjtRqJNNFiSSnMkyyaiyJUMTGZJvB8xexyUIjfysKWn22Oa/f4uVGkXSJw0ieLV2JntKph2eso8+RkBZThrcFGbeIomdQZfBQb0HWTXttHKR7ewxK6+V0dUJ/PulYDebZsBj0PdHC/kven2kvyb43ZFRKbFV4yCEfzNhn0lSiCnW1hhjrDYT19QpnnlHjjN0T7Fo/E2uTdazVZ2BS7xYzXy3mO8itrhznvCO9+t2FPR8OV6FLMCTDMl2GXeg3OWtlAtzqG46CJuVrgMKOHVLE8wWQyRvKeAuv6iMO7ubeZ4cBbI8nDZ7VkGW9WBMjDcKTOE1YDpwmIiLNcQixfp0wI1a6I/TGaOkhZJXDWj3BWiUON6bE2OS53TMyYwmCL4J3H2ZomwZ9zktEwqDCQrarN+BAsGaS0GUsgtzWuNXDgEmViK9OksQs0gLP8ymTiA/1IJ2dU+oQ0VFkUl68jLijjEmBrQSWc8e0qRrqdCBQHc5TaLIGS83mBBX+joby5BpKjkRStS30BqdxRhWvVs9WpCwOZRTqdSTPKEcoPtNrPyIDUMYk4XbIGSblItdDtuEXDwlqZ0QxLixgZWu2rxMNToqJurKzCgahfmLbGyI4jBD5jFcPHFHsSyXql0PGeAyzyg8IW/NNmVFlHnwxrVS7jMmAqQdnjaoKV0B4mcN7dq3hUY9ax571NZyxey92r+/C+mQ31id7Aiuh4MFVxXulABazZKWefGjgXdiDY1anikBk1VzVl1LUsUI/Aduw8KrKYW1SSdvbYr8sBkMLtNZCMV6C0XbOx7NeqRcR15EGzY1zUEzcjkj247TXNd/QcSLuIRGCFjXhECZJbutFV4E6B+4A77sQXsklc9+ueh3Telo4J2WJzuCPIVBEP2LtNcBsu4FZMxMmC+SOE07OuekcCx0U98ntnrN2k93rXhJ2OJOyYtKDg6zPtB8NzYxnQI3Lefa3eS8r1QyKSpwZXQ3BucPfOrC6EHqScJyEZuIRzKSkZMKgWIKVugctNY2nbDLF+jjhE5iWLnBr1rBcMS8/47XqqhzxUKZniLUt0TxjMxawRcSH9s+cuLCme4jTWW8Raf9GSTtQ/cTYc3lT+zXVYvIUzFGlA9fWLEwmLTt8bNtlxnLY75R3dF6TrSGJ20hnvIK8w8LsAgNylTpKhA/Bmfz9MR4KLKRCCpIJrEw8U8JYFA+i3LNMzV567nscdI7Z+nQ+kcqKKV3lIxahhlNdtg85Tigj5lBh6ENF0dyn+1kEDM2CxIhkpt/dAABA5UlEQVR3usTiyVgTUn3K0CvnjPbaKys2NROxen1h+wlpHshsiyZN5qRdxjlq6EmQ/AZNT3Mg9XFmHVqSUT0MmNQ4ZPtMxkUnLiWifAiFkAX3T8CJk0RwA6VwXoGDSyhFsx+nlynVm8x+KWxIZEKyIHxHadvKhJyLJp3Ie/SOC45lWqk7mU/yWIahJhuxdUhAY7LO4ZGFluWLDLtX6sAEaP4kxDNLXjdgRaMJFMdUQGx6LphWfdxNT7Ht9H89nGzxYNM0rT6cBWZ0DnDMgWG53gBE0VbrSwzF7kIkXyqLScEMKGM+L6xVnl8kb9XYDOPKgyWLWcwkWaE54iYaavglsdYcoHtQpAyO9RGhqirUVRViENYhqoSecSqB3UNLacHTjyiEobCiiJDAlEKJ8JKevWEAck7POcJkrUbnVYZLpK9U9zgogSzM0yifMNqug3MUHSeskSGMZ3DT9uyRbqdNB66SB5vk8x3YdXGe2MWg/U+VjFUV3gJTsNo0DujIaDIhQsmkqrF7sgubE6tJbbEbLMMy39omDY3Vdg02NzfhXAXvQ0Bhb+IJhmjoNSCXUNp+LjGqEU45CjucSRXArtRI0GFovpUalNsrL+PIqNQZJ+5NRfswEA8GekBD22uZaqbKFk9GQDkiE83MlBZClNoUZ7HhEiNdYiVlWiZL5p+mJIk/65heZyWmmW/W2zcoNYAN3rL3k/4fFm+Vk0BxBEPdg1MnEusQxKHdilsaGo6SKZDkMqRcps+NVkahHvbK9BheBygOR1o4FO3mixZTfyu8/7snxS6ApLnlpsehFZ8G/5dqjQLPQEPx+U/DpABhXRRcnMOdUkJQRzQdxCoYdr8t7dIUjnn0bZPZulXmH/IRkZxtIpOv3/O2qAX9ziJk9LV+mVvefOwcMFjF+Zi7TgiDIptPxCg1g/Xyx1/KoOQaqMyjWOoiTgKnoxD9Q69TmTtPrYRg+qD/SlaMjifkstO2QduqJ2qdvywCBqDC2Nh8T05P1ry4CHY2kxp0ar/VFOlrfz30Xcxjt/acJJgJ0AN1PsQdQ2EcKPY8onTECISRKNi6uc+1rERTbF5ghuSEzRgTRSIADi5KZVVaoEJ4mR3C7aaRqyDajA3D484Q+UhnJCqfpZhxr6e0h6NgRE+SNqi0yQh9qk4pGu2/J9GxtZ9EXO2Am76E9LG3DDONuFhaYmy9FLJGs6UyBCtE13cdqJ5DjGq7JHtZ4Wdp5Y/10TgMtJJCOaVityaf6ht59+rdQpPWyz1QXXCnXrI0JedxvBcw+VR1Ml1Fxxtlmo5Q1xXq2qf5GDtlXACw/ZGLPFazy8sIpi317gvn1azXq2VOagoTLFGao/ZfWBd2PgUgO9cdh30pJUpRICSx5KR+c5QiT6xVE9HAu7R8bcsIps7xPgtNNfQLjK4L+1OTZoa6ruTMmlnico9VqlF6mx1g5k4QxOcxsTLscCZF5ua0scXQIy48nEoZvfPiCtsRWE16LUUmNbxQLA0sxU1E+eZw5iCsqeDpFJ77VF82XpQYkezyEyFGVNA5HnyhAvbhIGglTEvCkhhJTmMEgiSShFQcGRWznP8SbyYTkFP7NnNSkE+8ggO6wGxDrNnLJRFNHSo0q40DOJAiYnYw9xIipDYm85glvSmvF03NAeksjpkMVCX8I780nkha2hBfe7Iq4/AZqlszS6V34vcIfVnMrMikDBGIewQUiGXnGU3Toak7iT7SYaGpslA0xWuYTSPiOpOJbBDNzH3Q6x4C06gcYW1SoW06o7HpuwUtbaQvkkF2QAGUgsIzFxwnootDZEwxkgRVqSzqWzMgGpR491ESFGHKZSDxOLlfitShKArMCB7AunZlvJyrsFZPJPrEDE2r17sIM9Zlk2mNdk6YpNQMgEIopmDuazGdTkMIJreOug7+El2nDFaixAsDJ7vnGwXUnA5vRZra2UxKQYlykVFZaU1idplDfCQT0TpGkHxbx4joTdVjKlpvCvsSaiJyYT8BlQyaEETdm5KJZqXPRC8Sc4jN05JJN7p14B3swhvuiijTMyGFLLHQE+0qThvmq8wqNtnSYCuVsZJqZRqJIFvaqvWT5CfARC7nwZqx/a2sIDdJlglvQisxDJ0iOhTei4uv7EnFm3Vj5aHstAeSGxcjcU2tsy0t/L0Yioysz5cXgK0xYpHLD9C2xWTKvSV9J9pENK0uyV1tnyuBUqrXaxgjMfd4wJsSic9CJVPQptTcp5pUblK3HC/vjGwUNI2HK0UlnHSuKf0d35X+Sgk8HGZLk6UMwJSJ/pD2mYXSBinb0CLu9bHG8atchc67Xqkl9l1gUJZx2I/UpXH8ui54Ww7Mi5H2McA+lp6FRopVGYyWnNc7m0nFjW+Fwt+kzCmdrLB79HGe2fh7uv/kgagwcPq2EG/fRJBqwoBJRGfWDX8x96lt2nfRY0Zt1WZJxu/Ee6V8UDyj4lwv1AwIGkkgI6LC1JgdiMMkY1UlPEezHYvtO3kHGpt9xtjsHlcuHaXFmAiAj3hwNBtFLz/iaMqMv+UR62KFseRTIl655pQvxox1yR/qYk0aEVwYN3ww2WESzKIhynUSAJRRWQacFQz7m4fJUCbYT18AcxdwInVFd40t8Mk492SeeM+YzTwmtQ+aFDqUSN04XuE7MqeM6g3zQacCyQwXxwmCjwNZOYe1CdDUlREKpGF6OH4eSnZCqHlWVYxe07xnoPNoXbh1Wk+f9Psx06gy1hM+SbgzDEqiT5A4M9l1FCwnsm5rKZc47KN6gFon97f5MCbkY9T19XoduyfrYO4wbbT/e02LiyqllqzTyvhUGOhEk9rc3ETlauzZ0w0cJ4gqsKsAn5xDrKCdTLeWuS8PO5tJESPtG/Qh59hRi7JL2kzgtFkZJm9iSEmC0Y5O+z6UPioJamgU58CcTrxoPKRw62UokAA5TT5o2IBBDf+ZDVPj6Rfril6NGnVCPa08rIaYPok5Zt8qvQ26eCAimXZK14qkG7qYpT1AOIwpb3jDUM2y7hdpCaUu7rIZylDneG5L+zogpYIpdVKno4BHjEyByJji7gWl0uO5NmVKBFCPAFhchleqjKO8cDN5wIGXFEfnVBpnNIV534kmle+njNdmUWJWpp5rRwDyEWTkAqaszZyxhbxEgVFlYXmyViwgegwk7UfHZOQtThpkYkTlfNmcjLJWam+6RNDsX6kgZzx1FSdSPGVfCrZ+puREoZ5+SJqU3keWnFQYkY6Qxc/2Sa8j7RyXKtmr40SLrmuh3qbZOERhOUV6T7SVyhOHgBRSaT7sbCYVBwO9TuAsKTInUvmYzEiw6cPMMVYmx0AUC3872RVyLhyyIyd37ciAxbuBdD26KE3BBWZFXRfu9WGGnh6OS5QoelnZO1x0c9lJvYCq1GnxBZUxxWYO6RQjYkSt0UZwt40mMW5xSsqX+KDDBxAmalok4W8tMKTFm2kJkYjogdtQiFnQKkxIgfaiu8EJdiMh2zaQfHtbhzz0DiDPIfwOIGGqIBmNA4AIPGx+z6eRyzCSOXmGHX/qQWUdBE2ibT2aNt+TWtiKXj8EAr3AccIUGuwcPhL5JH0TnAMmNUkkdI5E+qTBLmkVLnrzgZmT2ZM4GwYyBUVtKsbmI6g2kgdeFk0KXu7Q0gnZY8oEoA7MLF7b4TlcI+8gHqqBZgR6UGFSTbBer2HTVb2puIxYMXwSZQVhxK3vMJtNMa0nckuv5KUgsFnHidyppb8uWc6JbS3mxM5mUuQjtcklrD6TsgzKaDdKhCgRP0+BlOr8UO0prmKVO0nKdSFIpnMOVT2BRlZQiTBZzDh+oIfiXAvqQuA/ZYgqGTrDpLQlTq7pJkdyfbsThiJ1eJ9aToZJKpeRc13R0c/GvOzPWeboYZ71pkq8fbAL3kiVif2jL3IjRn7WBRsHDAkpZWAxuOxgdwjpfAZMBaltpkkpR8SFJdAty0V2DDV9ZS7/OuZQUWIZ5rMIHgwHspT25PEIbxszKzOamUe7Fg5vpujkcyAfdoSRd0j2pD7B6k82necScSKe/ZN5L67wdRWucOdsBpxMi+27gltvTxSAXJ/u4YngM8JKsa/CVRXWIUI1qfSdMbPoQFHAQf+sEQlQNPd1ZDT9FP3BSXik9XoNdVXHpqSiuU8cTZ08GApjGIr93InjxESYFAnt01Ki44REA0n7xdoPWo1do8uP345mUvYirkgEI1i7aPhbj1nEA6T6JQMTA5CagVKiRFHqcfLcRc3GOfspM6lwYjsMvHV4CsFPKW7eBL5J8Vsnewx9RPnv+JJoGZnXtv4ncyIxq6yb8r/t3B3O4SQUINdSLBLKY0JGVX/yitKkVRaYs5mk00qqD2UNzX4wmmT+5jwmEGmSpfGWgQ7eWZDWb2IRlmcmfQth9qZlsDIeBRqbMY1+j6Qntl3B3Kcu2HpsYn6zZD5QMk1Zwaoo0ERM8kZGhyAxk6XSEdepOlBQuUOWB7bzKIke9rn2RbQkWFm1VxSbZ4zQB3ZLN7wufZQ5XqS6SekFcTgvBU5r1pMYFtQUSVCNzZFc2aGHoHm0VaN9pUuIezmC40RwQ7eOE2SHKZr7hL5pmT3HCZ2BabYtBzuaSTk5nJ4mcr4sY4cCqMDBUZuN44QuIe1xRxKaL8w2JkoTDoZpUDiVT+TgqgpVFTSpyVpt4mulQWMATdOi4Q6OwknueIMpEdi7OIBO0UFiVnraPy3QECNM9361wXI7QIAun+QqkcW9MADGx7vAlYZTqHyY03A11j0xbTkkFmLQeHVMIotSVXWgTYlkLxKnjcah7+p2tRVClwXdc7ImQAnAsIDWlRhVD06CXj70UGBaMj5dF1ywZzMx96Hdsnkt9K86negA6afcOSokKsEjua/KOvg7R5hMHNYmcmW6EGwdy/ltLdTNhrlTL5ER7lPyHTrv4pZlPt9Z4haqGQ/QO7WiEBkFORZLR5fM3IKfZeREANcMsAdmSZNC58KaZoZHh3jbsXNYn6xh92QXJlWN+RNwickZCE7AufPoAIk4sYG6qsO1IzFElYwXKjDVSIceY0ES7EAH6OQWxo5mUtYbzKbFP0FpwkgKgEgPQZANb2FSIs0pQ7KxzWyJep4j16CcxDtz0QyolnxmRhsnba5JGY4k5bNJStLlQHNStBGblIBNCiNJY5rM2m5N0rymJyn7yjq5JIdx/6FNKEjjVpcqlxwQ1cOyWS5rm1ROZWOejeI5BL34cIDGgBdJYulZtvaTdhO1AeNGZaXqcS2jDLFYQ/h0p28g3ds0+8P2TxxjlW5DQ7oO8TCr8a1cCqc8PQl1dkoOMTXvKdE276dnGmmBwsF6U+m8aBhl4tz/nedRAc9e2WHZCiDrKs5Pq0Va3FMfcu/vvGVIQQVkT4KljuTQpbSeY/cEx4kqxvFbuvlj+ewrIsF5Dh5+1nEiyymCReZTGOccDeZf2u9dAifscCaV2jk2ArZ3dDXJYIMNoWbEaNucJoztR1sDgaMWV1UOk0kVNKm6Mq7h1mDFqDpGF929XdhoJQqb+A7gePcTR56lFyE6ZVBkmdWYGYZTaxlBCpaJnVx8ZDLFOUW9LjQs3TBGu4Qj4xGzCKfGGorFMW9YxJQQS9wyDZMVwrQEQ/Nz/E5OKiuCEgdmsDVXKmXt1T9eu23I+Aossex+/vnaQfnNQe3z0UCanRQFnq5DOMzaqYnHw1eit8axWExdlHAHkp7iS+a1awy/nDoSERzLIfAsMgNQ1xUmkwptQ/Ddye9MJSRihEhFKn6H+7Y8OvbxgsNokoRlOxp4VRoQmTOipTswPZ/2pXqTPZrGCNFxAmJxoeiCrusu/HNi6ptU4TBv7Sro7Eq2GSPN2igWY4IWpW5Xltp1HWazGab1bLAnFd7VPaneyazoBRV6zOulpIXq58GOZlInS6gSg5q7xKP1h8ybAKDXYriKUNVOQoUEJhUDTsog6nR0lUfVOTmaFGZB0MjCaVYSl1PKGBOMNoWcYVB/oK3Ea9iJddgogWVU/Qc9NdXKhVpHcpFFCqTByihDYiZFR0YZFmF0u+0tnD4/Hc5q++AkSZVdsKaOtL8wfLj1Wsc5RZKmt86gFtbdR72Ehkq1NokZXRs8/NTcpVpV0m6WgbRWoNpRodeCEGL7V9dFEsxsg+vKoa5dOPdWkmrmwjBfUZ+VCe3Zm+jfuuZMG8zaynUjSuZLsyY9exN/zw5IItvJ3Jf2rtgDriOJhtMiegKLNWetmmC9XkflarM2TXmm/3qNHwpgyoBIQ1MH777pdIq1eg16U3KuTAUnGYY5FmLcdFMvDOnTMrCjmZQ9kxCBe8/T7h7spAhOBn05zpwBUA4l6na0rZLsDVXpQ5XL96JkMUdUREUm50DeniNRpmQ9YqLwYWYCZfM5H/A+SIuy3V6VmBMji1KbLIa03Emq681EkawyQYkLk27u/LMPkzQ6JBLAMHEB6DtxRaSNYzYFRrmZ8+aNoV6S1UsMqkwudSzm4AsUnR6SEIAYKmtIbcaIfqG+Zdgr5d/eixu2HETXPaJhG+dDjMXXx9kKKKbUaDXQ9U0qwIV9qapy0BhwxcgR83DSOq0gp7X3xiR3nLAiRX5UJeDBEefoBhGtKdbqIL8y4VAYumpTLiFkzX2kZ9fMHmEy94Xo5Iv7QRYJs1FSk8dynk+dRzy6rkPbdj1znxFASleGxAU5MuceCeekHCqJYdeTRwcuJdLhJpe15WcyjURbZobcPQRQZTIJk5qsV3BVhbquUdXhKgNXV2Kb5Uh4SMRy5xyqigGScDzQqAeCk8bJ04Ejys7mZpBFxA3vW21Jr3oIpkVrC5cFI+9zdAHXjlDioB6MiZGw7S3WMyDLmFvmEMWtwkLmNcY+0igrsegvKLGuZAxjuG+0Fe65gEFlxZX7Zxlz3/xy+9DrH9L/KAU0NePeNsGBoq07dNwCcoB8bC8t9rKJpRiItYNqSLmpy3Y4Qwk7yVELkB4YUc0B4jhRoZl1hlhvVaJJED162ad1JRyq6zzarkPrfRakX1EPTMeLe7pHZZhTZMy6hlg1qS72QZA99CqTFMNPHSc8ecB7kHeg1oUo6Z7BEnEieBZXWJ+soe12YVJNALJBaHMhc7g+CNDIHiYpRjhCuqpjY3MDtavR+S62T7WuFL8w7cOnfiIjEceOQ7IxLYYtXkSyzcDEtKL4t0oKlD1XwjrYhLcLRvtSo/w6Dn+78Lee0dXQOU6+Yygd+WRODoaBRoeIWDvB8oioYVkzm6pVw5fLXZK1TyUvZWrcf2LK0zoTE0+I2TLTj76TQi5dlt+Zi/u8MgoUO+LIw/eGBGVYxvI8QCT5frmjeZdJkyfLcqJypyz3roUo3Jb0j1y78F7i+HEu6Mwtvtfxoap+z/UEBNiWJOk7WkIMOAkFlNJF9JzrOJFljT+s0DpsmXWcsFYIZdIG67jn2m9Dr/IoSNq+zNsbktK6tGccdYPLzpnogk4u7mEP6h0VWErJSm+kDwSHrgvenuNRXgyNMlWPAS/KYGBHa1Lsk8qacfBSRxrGoZF49PxUGEiZrGoH1oGyrj2yc0oVQDWBKkrfTr4pMEPSqyg01j91/TUyxDOhIfzCMgqdyNqcfNGnfYy8zMyk36fi834XxHEyqadINxqr3NQTZcyYV8mKVRyWRrSgZTBT2CuIdIfmNzAro6S22DSLyNYk/nl7U3nTVAUqV2Pzap+WO4gjrQGAtvWYNR5tGyLoB41jjOil4pQM6xwmzoMgD+rsQTimYaLnK9YE1FWFtTUP5ySqHtNJiNr5fMqbxDHNe0bnJRo6p6brJ4VP0kO6COZ+Ne/3tAePsCdlze5pNis6HKiy7kkxByWvc+GmAnF5BzgEEmDGWr0GP+lQuzrNYQr0LeOb87qiR2psIAwPRsfhnFTTNJjNpug6PSZiaQ8BVJkRNsggMVllgI8IJjUQZnpSRgauitdNu9674Xn/t5FgND9JvkoZlANVBERtl2RRyu9wFSwi9yEhrTrj541RZFBkeBVJUmnGLWIdhqTPzWo45UnUojWlEhaxtvESlUGl8mzJCzBZEtFsD8fOpZ5QeDJM5kHhplkHVVL255Jm/QXVK1vROkMdbcdomhBo1bOXE0BLFC5FckyQvdoB5O4GWnc8BxjvSUu9X0l4pGCSDzWctDkojr8SUE0XpuJ9ultKMe1NZes4ETvA7KeRKVLDIqXSUm/GNhIyJkVAvNsOnUtMUdZp8O6rwfUaKlfljVs0X8eyqKCivAUM7zt0vkXbNmiaJgaYzecngVDFSamRSpKAIoWrbX1J2NFMynpV9zWFjFfJ3FJJKMVdozQzGIBxIIjlUJKs1ORHDoExufRJ+zte8mv8O4726OAlpN/Bns0+TLaMQPT3SzS9BzYtetTRMPBqSX4dZIDJVNh9L5U7KLVH7GNyHBxZmkHEjp59Wfb+wrHBcsvFl99bAAPmJEJ5VozivUy5W2A8MX+OUS+xzEoGRfQ7ZQTXedkKjuAAi6mv4zhveavXlIuYka6QDzNx0Kqeq2p02tG9nWim171dJ6Exe4sc/bQSRn2BZ2TgGMhuKsimeXhHGU00qUc8KAk5hJRPiDMnQmTwllIJEmA2IGEjToRQSQg0Q9sv2oxegFi5Kjg39OZtCvyykBoUe01ZY9e1aJoGgQDWRpZOYxbXDdtqdN8t1busqXvLQshNN92EF7/4xdi/fz+ICJ/85CdH87761a8GEeHd7353ln7ffffh4MGDOOuss7B371688pWvxLFjx7aKSlDJOcXZs58cCHrLZshL8JAPOXQUIk2ED6MjufSs8uDKgyceWOP8UxNQE7ji8HGMTv+xRwc9X5FceduulU+Htm3hOx9OoWuQWR4zYVEhbQhFRjb3hfGM+fLfogYxN3tOJgaV2TSrxZ5CKK0Nw0d7i6v8QrGJYwruIGmJ/sw4kEXyVENO3AmJebetOE60IfKETxdXLCwxhVMKGlGKxddve97hBAJJiB+KUqCIlgRM6uA44ZwRArfUTmSEMu315Cgxh3ONbRfWrwdnh4djSSpsxhgoyqRyYVO98jx3iE4D8XGuHaPm8FGhlzldH6Sv+9RvlXOoXR1u6K3XMNEYoln/Dqsqj0dKjU2gYKrsfIfpbIrNzQ00zSw6udgA2ORqQALdap9w1scjeM2BLTOp48eP4xnPeAbe//73z8137bXX4pZbbsH+/fsHzw4ePIivfe1ruP7663Hdddfhpptuwqte9aqtojKUwAGYLkZ/EOylYxo9OzIFQgxXYr+j74XjQbEanZtL/6KnncVPJLLISRkxk8lYFjCG7SnmKhG3ee8UHi3vVZbL4+OTrlRJoa4yh56XuByMNN8OwSijLL+JqH8sHpLi0A0NQuV8kaGfKgY1Z5iCCUn2aUVit5cfjl5bMcDW1IUkPJkd1V4eYVCGQ0bTdq9z89h9CZm495oJqqlDB3JHxqr6wpCu3TITpCw/994dtDCvM3PCYJNTXbkt2sZdpShAGcZutClnGUesoT9XRyRUO0SGzyom3odrO+x5KcrKtDUm/GIb47pfzhEHOAlz3wte8AK84AUvmJvnu9/9Ln7/938fn/nMZ/CiF70oe/aNb3wD//Iv/4LbbrsNF198MQDgfe97H174whfiz//8z4tM7UGDTlrRee1FfICebMiljUyT0IESxuVFsggZgykkLOwwQGEg8qs61HThrJdeSaJnqc/O3y2BLVglHIYN8kraKMb4RCkkq8mPiOTcWKLw8zb580K31qiT7gaFkX4eVAJpQJ8QZAj0CcsiOHnsCdmQjWRIOOlMzmpnWGG+/+IAU8R1Eb7bNlyA2LVyZQeq4rtDsP1EMvflWAOsh23q6Jw2SiR0yrUvohBxghHOSimxX6qH7VD0hsXyGn2mpj54is4TcuzeFKPMzEswXpgc6qVrcycBVi9LDKbAvPVxhCoAEw5XyqvZqKPgROEMoSeA5E6pXfU6HIATvsmGyjY9mwIZoTPfLJgIV/GyZTFrZtjc3ARRhV27rFBM0MgTBAoRdZhNMG8y/T7gtnPhlLuge+9x+eWX46qrrsJTn/rUwfObb74Ze/fujQwKAC677DI453DrrbcWy5xOpzhy5Ej2OSlgRLMfA+kb5tYKMt/6kYnABLPt6eX/MEH1w2q/l1ApdhG66LH04wGrdtuFvXUYn0DWpFgUypYpe0mthe1fy8/pMiyFYxjkvqI7iuBcWLKRee1LJi5+VqxpcOCukN9I213r0TVi7pL5vRD6qhQR4s0BUTsq1GwDrup+VC76g4hQV4Ta7kkZd+0tA0NMUT2shGvlLugGV5vbOE5kMTIt7lHo1YmVh0eypZK5Cw2OgQpgZ8r2BPJhj09pkDqbVK7CWj3BpJrAkUPq0ZOcdyTrXWigh0fTNmiaGbquRbiFwjpPqDCiXDBpgVms0HnCcQFOOZO65pprUNc1Xvva1xafHz58GOedd16WVtc1zjnnHBw+fLj4ztVXX42zzz47fh7/+MeHB4bD9Pek4ideAZ+r7tH0xzoBjKSjjAroqchJ/NB3gfTcKOeg/rvR4weR4Q1hnFKPkbwBLS1xpR4eA8cMNSsUHEcWzaWcjPSz95+i8HsZKL+Tm8vGy9267qbfnDOruR6Zy3LR8XxbWbjlch8MpNmrTv9hT0ZiTiLtu4zVZKeVrj8CxB17/AJEjoILRWaWaSNC5Qnhbin17ovNzpjMgn7QAe17ViVk4jdHoVY/OW2xa9Oef0phwdL81Mg3luZEs58JC5Vh5ABUnN3SC6aweS40zXQyKldhUtXi5Ud5b2TBSJOwMBwRxaffLenKjsCkOiTPYy1PtCm1IsVOMs/7Q7EEnFImdejQIbznPe/Bhz/84RE36ZODP/zDP8QDDzwQP/fccw8AREnHewZ7D98VPj5504WXcgal9vb+BbUlYCNhaVSH2NNzeANRChI7PNhoCu9XPodBbRWKpJxKf5vatljxyeO5lbkSRilHfeR9Gml3ocRCFT2z1GgVc58PCh19OnzWx7m8qDMuugQe/Rp6IoYoPgDQNsHc17YdOu4kPNKSxUa8xHEiO/NkGYp2tBIyuWGA1NznYh8Hc58GdKY5+xojWBYGOjKdAqOKnrmeJeiuR2cE3cSCEoMKZlFtT4pBmGteHiyRJzgbP8pKRcXG3CeewB0BrQN7wHMXth0oeD3WVY1dk3WsT9YKIZJKMEKLSGXZpCUFWhlu6N3Y3EDTNiI0mPeJQFSDSG8IVs07u2rWdPJy8/WUMqnPf/7zuPfee3HgwAHUdY26rnH33XfjTW96E574xCcCAPbt24d77703e69tW9x3333Yt29fsdz19XWcddZZ2QcArJq9kCvHyfjgwDI7lMrrr0P7KNNi5kl+S+pNVqyLJpICLr0aB/iO1LQQSgx3dG2MdEqZUxbzRbwKCKbSqYcbDTP1JH5omSl1WH3BwyOjxacM8sKWZt9z5t1YLQl1ghJZW6c35q5lG5pkU0PKdSyM1J1jYr/tOhkKdeEOJYoEdOui8PgbzL05pt9We8I4HYnOUtnTodlSBeUh0SqsJXXgMu8mk2A+Jo4IlUSfiHt/xXoKdZk26zAFAZtEkVWGHeL4aTT0MEbIhRBS1l1qn8y1H6fjxDy4/PLLcdlll2Vpz3ve83D55ZfjFa94BQDg0ksvxf33349Dhw7hmc98JgDghhtugPcel1xyydYq3AKBSLLa2ICFmddXANN7pkJO2lSeVyUqN5gCKd4VDStB2D5VQTal2GsETl4zPXU6rSmx4CmxnPME0O/VWObCwVzQEns18ZIlAoboKL+fnxuyaudk1IcPbtyWgqUaaTMNX0g6jyFMCLH7vOegSfkO3i0Zby3SxbASrAv6cI7kizhU7aJrs3quaT9qXM2qCvtT2fUvyw74oPX6RcM0DpEn2q6DI8BznfVkcJgy+1Ky91Ai2jrJdB+b4m44mdIS7WDVpFoGtyzXyDugq0JEdJbLROXwZl1NsGuyC5336B+eJnC4zFURX6afIurigo4O0ya5oAOIjCr87QBXAz7t4YX1JO3LlsPyxHvLTOrYsWP4r//6r/j7rrvuwh133IFzzjkHBw4cwLnnnpvln0wm2LdvH376p38aAPDkJz8Zz3/+8/E7v/M7+OAHP4imafCa17wGL3vZy348nn0G9JK4It1Ylp4wI4uiPJCwxwqhEAV9zAwa6VrOTpclcSW9bJ6uNh/mMZHeDCcgu/PHVDxG8MeFhTFsjI60oFNSzrIcl5fbfyekDp0mRhGbw2uNxDNnUJYZ42hRpvzbPpuPpmpIBerUY+xW6O+6QHw7r/tR4+Y+q8MXe560dioQyZ5eF/dvDaHX/6XxTkxcLPfARU+/udsMJ8XFAN2TEnd8HwVaW1cSXjOX7Gji135RpuajhpQcGySYrrp1atCADiJJUXScCLdwe8P8dU9qgrqqs/HYsrBk5llfk2rbcJg3XCWvwjfiC0TOHPpWoT4fx9Sty43Fls19X/rSl3DRRRfhoosuAgC88Y1vxEUXXYS3ve1tS5fxkY98BBdeeCGe+9zn4oUvfCGe85zn4EMf+tBWUTllwL3vfCIn/UjT1Tul7ziRciOlG2HKalElwc2Wn6XxVuSOEgx3baj0Y4x5D4szWSn7Wub1wcOsu3vIWG+nAiILHSeGa2Mcl8xsrPuWY/NiWei/MyzjwZU/XkqcM5Ehcp7dZGTzXE1FQYuS8EAavZt58VwcldNsPL4x7OUXKQE0zMq4czuXwiM9uO3vJKrkh04BNZWxYVDMGLY/06Ss+0lpt9Tk4ZJmqloJxLuPo3dfuEqegE49UMWaI31VuRAiqXY14m3I6K/1QmctQVzCflu4oXc2U+++fnEUxliFRLYYmPWMkiAzDlvWpH7xF39xaQ4IAP/zP/8zSDvnnHPw0Y9+dKtVPzhYIEwMH9sUK+/IcmYGk0+dnWmzw/7JQ9v388s7/futRKsaXnA4H+JVARnzi3LsQCcK5xo4R9vudUWkCKTXfOQ1Fts8gt1y2ZSLGyl/bAiDWXRB/fNQ5N7f9mM7a1FxWccWScSctGElfdPY+BRO85P6eee0YVgGIi9gDua+ID0HJuXZL+7nEQgE20aeKNXf67NoyhIJ3dRdVSQOFMBshr40sRCbgSDKOo+G2Hnpg4oIncGCQHK9C4OiQ4ScmSStR3Bnhl4Aqo4TntTc52KJ2lMMgCqAJww04q7uHUgcJ9CFMgAXQoY6io4Ts7YZXCUftdAoHUfJZdhgoxmpV2AIMusxixEnmoFzRWhrBVjHCUbSpOy9aL07vebBzr6qY6vAwx/FbponebL5MShvTqfrgMJIhmN1PxiBeg4siv8XEnrf5Z95Gg0TuZ+RgLjTbfNzIRsPe2hLJrhevn51UWsYKbNM7wqCB4b9kk2TwbuF6z4MFyr7Jyi2bIuRz/Ddgn/HCIxpM5yNYZTYzXmhoiMFodwho/WOMSqbM/eITeQbuQNFxKlU3tjEKbS/dC5EtScx+anWNNaCUKv1FRzOkGiFyRwthp2XRbrR9njEa4n6zgdOTH7OORGC500AW58VbUwOsvRBdtzEcYK9j3kA3WuXsqh32WNWo06uFZMqQH+FD7soW/eMQh5DCaLjRD+HHRiOkmlkTTLwLi4+LLNeTwoyBjSPNswjMD06VHp1boal4KRfzKHfZ0UNdEkqPhBK0OMiWx2geXUtW1aJe6qJkgdZx9EYToZ8dXDWd10XXNFnTYiE7bktxLFLkOZ5L91eC9+rv9+viUFp9AmVxoPOWDnC2lqFyUQju2xhTLI13nuvMMSs8Te7FHkitlNUAy9alEdyQSfrgm5cEdVLLmqm8UByKpEAoPLAROKHiqBAHYULEDtA9wmJ5PxYNQku6PWauVuqILHNXbQqBKRx1Nh90QV940RwQe9pUuGy1Eo+aUzyGIxbh0cQkwLGJvFWSE7corV0a1CG/LJE0mpSlCTA6Gqb6Vcl8T59lsG3rDWNT5PMgm6FnRF0bL7lYCkxe0vvjvHU0lhQ1nlJSCkGKB2RXk6GNY0i2E8uCkXz0FpaZdpyttCxScAKl96FiOh60/NQTh/vneyW3lFLgmoslmdLPrLfAZwLkScqRxjeVL0EDHh60E5KmcL+nI8HetPL+WpNx2GSZpTWu+aUvovRJnraiy1QD/OSySnOE7lEHepKe1JVXMuZOD5gTilPNnpGI8pv5w43FQfHiTZkJVOwmmeh5nc77gVYcsweYUxqASw90Y1GhcHKGgLlf4+7og9ROQUKVQ8FQyKk/mwKDVAawWCwAT5fZ9kqluPlLOjrUpGLNNW4SmnY8VuaE6U0np9lYRljcIq0zyXAe0bbeLStl0O9dmemDyUOH4AMESu/1iPYFO5LCvPTpXnKwbRV1+HaDtFlVAcol78I4nj33rWOExIUQMOpkXl3EEUiNMCsE6O1xrBp/RACPdz7YZHEcYI6J9s9oRylKZWrsFZNMKnqyFwGrGjBWshGIFN4JeKE3ObQdR26rg3xDZFCM8FowHrFeWLFJUFgMTzymNRWCNz8gsJHY3D1Nsq5PymisCELz5k4fsN5DJUst0zntgCLp8sStRlm9eDI5jJv01yUCjLpycGplhCygsc0jpOtdORQ69K0mtAXOBgc9riF+HnPmDUdmqaTKAcdktGrXKR+rCRPGkViQLgtce8zNTX55fldRZhMatS1Q9qEPxl1yi6uXqepditX7cRbeqHLXbVC1SzFeQK6K5W0qcRfVdsaZ1JR19QAs5XE+tOIE50DPEUTI4hSgNlo7tsiae93naIcxzH8a+U+qaZphFm1CExK39N2pwDBkSFLnxWvR5kDjzgmxfaPLczpEVf/Ybm9tDHJhPpp9q0SbqeAuZZcYovnSkiZ7HgXnaS8auh0sljHR6bpfbJj49TnbPEUMCOLGkvbOc9isy6YCqcWDAeKJDr2U08D3kKw1YKAP5pP3dE1hl0eSHURlPKXnbNLlJJGEFXHCQ3LYy/9XNCicr2sF5X20zmWn9zMC2UZTbA/V4wCKN8FrQs0xJ0QtCnKXs4iTljvYhWA3eA8JkdZZG7vlBhVgT6pO7rvwpXy8WYEu9doLUWmXMqY03KT9RHHpABAVZSekjOefTTdnovgLH2UC1LY5AwHe5dGWNCezzgGVZXKH0sbI1ilJixbcLF9dsVpFSdP7tMYPjiWkTkbRfON/o30YCB9PxTMKrXylBkCMDbcqY1qku46xmzq0cyCRhFjxi1TNqeU4EiQ9kuGB05N36oGZT9QyRzBcWJSYVJXZr9HXz3ZESlL+OG8mDpORL0wLhkby9PH2w9Ug7L7cMqgPLxPsfs4ChfaRvlZMVDLOSn0HCc85LJUD41GHqKgr2GtDgd6a1fHq4H6VxHlP+ziH7Y/yAmhnGBg9Gi7Bpubm5hON2OIJNUDw9hVANUAybUdYKQcWxufRyaTijDiKpqEk8Ey6v9iS9DMeDOVqUlcoCpplCqZQ4mWoVFjgWy3unZLdeX7V6WJzSLRj79dJI4PgvhSYeyWhcF2Yv+3Lbcoc/QeFNd6b0JlXWjdrLOC83xLL+whktxDL9B0SkMVq0qE1HJf5uDh1+lV6tpJC/o6aX5Jy4kkqjQZe+VFVmbmWdQ7HMk18uM9kztiLJbCii7oSFqU9yU9imIRyWkixUgh2LWoQmZiaqWJFbUvjTihh3kBRFOZz/QoAEhXyFOVaVSjsuISiXFHIk2ceNt42zZyAaIKNHm/kD3YWxDsRkjkAB7BTGqkh5bsOGVOiaoNJ9tgX0rAmbhkP36Q2bUsh1qWYRYZ1BYZIfe++3/L75x4jHGRUw3z7pV6KOpXLJbV1E4tTpEZyJ5U23p0bdAA5jtOjEMSUcaYRepbkrrVcYJkE14JW+UIk9rJnpRZi5RKK7Yrp5UAdI+ozDSV8XTeS7BdGPf7yIZj/dYgaNubecFFs6G5dj5DOO8jIsQrOxgsDhQAdeFwL3sGWM8thXBRk2qCtWqCKl7lXoBl16qSEFBsX+dbTGczzJoZ0i29hiZQ4LAMMnRSOe9Kk1oIJ7PASqWkCa6TtFBHn5aTLr4FA3UKUHxQ16WQRWJJZDJJakGmRVBaWTbtx8wnFhc/J0exiVtBeIuNi/UlSb1fUq4tjpt27Puq4XnPaGbBcaKLjhNLqlG5rC8StxAqOz8jITNFxHNVwqAMkXcuRJyoa4fEHEzdc9DLuoJtCg0FIkDuUfJoreMELCuxtCCZ+1QL7HvyRnZmHCjY4BDfTd0G1BwYlZoTPeS8FAWmx8nLzpHDeh3OTNWuKrd8ZBlS4YcKDESIrLVpW0ynm5hOp8KkzFkwAtJ5KYptzUwJK8eJJWCOIpXJdHME57kCfW8+qCCVPH1IBrBwb+Y84rwk9BlUFOTmMJLY7vlWkfg+zfk9NGCM5Ci1q5A2ZorJaxmR0pfli5FGJhNOYWPKdFRKK1hXf2wwX5E89dw7OE4g3VJr1Mu5tZF2UyDB1txXsiJEU5l5VD74K6atysU9lyQTjs9CDJ7kC4tLzFvUaZbxHgilI2uT+wRgUKzdzS4V0uslgmhSSI4oDJCJPMHgJAS7CpWrUIqGTlkdMGPS7yGG2oOVfsTx5BAZ3jpO9HFPi8Ksk5XjxJIwap4b+1EqwhKv3mQ34r7V8oFkwnBjjhOc/10iSA+GDFkj40BqmmeJGam4P+EXZD8FUGKPfeKUdXiWNKZccgnpHn8amv4GtZ1CWDQBT3V9VicAmDg6aPmOMZt1mDXGcYJ5iygkR4j5IpLkzhwnlNgmcuUkdl89qYQM9h05llClrNxh1bDeklYTXzgnxDHyxHBbThkaJycKbXvUIo22AQb7EGKI5Qrx0KvaR9JPjoEJg+vkQMGeQG0lwWYZHp3wBQdXVViv17Cr3oVJVWeanzYxfS8j/CVNKvS0R9M12NzcwHS6CWaPdKJGNcgKcDWYkonQlLZUvQqPPCZlPORGp3FpEo9mVRfbPHMcFjMhVLBIA07FsVJJqU8v03eBwRZMjn0YOD0MNu2T9LRVArQ8PHjqGltvpEmLyZCN6cJZVqXSD2dJW0KqOHrFSgbppd7vWYzmw1I0IBcq2KQlU3XoM3WciJHAMQwHVsI3lp95btg510eyx6iiRA5ka4WNJuXsGrKtWABjEmlRQVLGY9ZZr/lCvyMtSHTBzs/cZKlrPGpUmSeBJRyQy21N7vCCRJ/IzX0EQkUValel81K9+TwqINuh0nyUxiBi4D26ts0cJ/IwbD2PRsMmaYG5uQ+PPCalsAStHO9CI2Kr5KQDMVh7JYKTNoJTRX2ilb5PpdC8JalfF93JFlysrKR72ZStTeAfl76mJefNt2MzpnqVSlkm7fRDRqOsJuUZTePRNl3mOr3UGGVEL4+CPjQvWSDjONFzNBJBr3KE2hEqImS8Cjjp/dggZxBKNu94M61ndGxZdZq3kRJkFhYRknqCUsjXIUQzl9KIMSAiBKD24doOErrjEdzRO3VMMHtSzmGtnmC9XkMV96QUU2PdWdRFPQGbCHIHFqP1XXCcmM0yGhFlD9I4fgQ1QVBPoFwWHpFMqmjawZy0YiHhv3yz1D4u62o6Ufsh7vvVc/ZrPO3HB0min1tjJhWTJiXha/zFBb9LGC3Z+kLGnIAteJ3juiqUV8Bg2/CceRN72fd7xhnKwyJ59uYs0NaKTua7MZNPrFXqTmekkjohQZJIYveJNpXulSppI1tGdZggk8J79fTzpp8CAwrZVGhNl0Qy+hYLKZblUOzgCpT8bBWI45mp5DjBIfJE5jgBQPaj1uoJ1ifCpPqMYYHwmM33OFRhQYeWhXulptMpZrOZnJNK7Qs0TpgUCFGgL7VtCTil18c/VBAPtfqTXIzx8JztvPDbI0kDmUWCclMSwcugeBCF2zQ7dHLRKYkqL1IRe6iw4zug6zr4Tt15w4QjCX2fhVNRZqYSmJFoAkoFXcQsBC+Lyc66GIMMaR6GCMvJaygpdYILI5gVgDhRs43faAJJxEs3mgcrPrrqpj5Pf5U4Qz4+0dRBMo76hDh/35zVstuHxT0+RVPnhFpkZN37LlVHzIYYerG5Y3g3Y6yekYcrCZ/sAPNAujSMfwTnOEdNGyJBkJmh3UPmnRgw1IQSsn+b2QfqvOAS+qJrOzSzFrNpi2nXoO5mI2YjSv0qEcOICG0XvAJnzQxN24C5g+em1y4CGY80ZsZs1mA26+B9Kxv1XdD0HIdQTRL41psx9z3akPowzRFSpwAZT0In4xs+0LHmUK4nYdZ1hwaEGYWJEfaDGFQRqCJ4R6i4hXeq4Xgwt2iaFjE8EAO+quCoQeUAdlO0pAS9A8Dw1KCDB2YOaBjUOnRNhbrzQNMB0wbwhHqT4TxJuCSH2XSGZtahazx8K4GBTbt1HbAH0El6nCxsJpV8dQB3YZGw92BPwduxbdE0M0ynU2xubqJpOsxmDdh36NopuGuAbgY0UxAIXcUgcmA3g6cGs6aNYzwPiLcsEp1++M53voPHP/7xpxuNFaxgBStYwYOEe+65B4973ONGn+9IJuW9x5133omnPOUpuOeee3DWWWedbpROGo4cOYLHP/7xO7odqzZsD3g4tAF4eLRj1YbFwMw4evQo9u/fHy5qHIEdae5zzuGxj30sAOCss87asZPAwsOhHas2bA94OLQBeHi0Y9WG+XD22WcvzPOIdJxYwQpWsIIV7AxYMakVrGAFK1jBtoUdy6TW19fx9re/Hevr66cblQcFD4d2rNqwPeDh0Abg4dGOVRtOHexIx4kVrGAFK1jBIwN2rCa1ghWsYAUrePjDikmtYAUrWMEKti2smNQKVrCCFaxg28KKSa1gBStYwQq2LayY1ApWsIIVrGDbwo5lUu9///vxxCc+Ebt27cIll1yCL37xi6cbpVG4+uqr8XM/93P4iZ/4CZx33nn4lV/5Fdx5551Zns3NTVx55ZU499xzceaZZ+LXfu3X8IMf/OA0YbwY3vnOd4KI8PrXvz6m7YQ2fPe738Vv/uZv4txzz8Xu3bvx9Kc/HV/60pfic2bG2972NjzmMY/B7t27cdlll+Fb3/rWacR4CF3X4a1vfSsuuOAC7N69Gz/1Uz+FP/mTP8kCdW63dtx000148YtfjP3794OI8MlPfjJ7vgy+9913Hw4ePIizzjoLe/fuxStf+UocO3ZsW7ShaRq8+c1vxtOf/nScccYZ2L9/P37rt34L3/ve97ZVGxa1ow+vfvWrQUR497vfnaU/lO3YkUzqH/7hH/DGN74Rb3/723H77bfjGc94Bp73vOfh3nvvPd2oFeHGG2/ElVdeiVtuuQXXX389mqbBL/3SL+H48eMxzxve8AZ86lOfwsc//nHceOON+N73voeXvvSlpxHrcbjtttvw13/91/iZn/mZLH27t+FHP/oRnv3sZ2MymeDTn/40vv71r+Mv/uIv8KhHPSrmede73oX3vve9+OAHP4hbb70VZ5xxBp73vOdhc3PzNGKewzXXXIMPfOAD+H//7//hG9/4Bq655hq8613vwvve976YZ7u14/jx43jGM56B97///cXny+B78OBBfO1rX8P111+P6667DjfddBNe9apXPVRNmNuGEydO4Pbbb8db3/pW3H777fjEJz6BO++8Ey95yUuyfKe7DcDisVC49tprccstt2D//v2DZw9pO3gHwrOe9Sy+8sor4++u63j//v189dVXn0aslod7772XAfCNN97IzMz3338/TyYT/vjHPx7zfOMb32AAfPPNN58uNItw9OhRftKTnsTXX389/8Iv/AK/7nWvY+ad0YY3v/nN/JznPGf0ufee9+3bx3/2Z38W0+6//35eX1/nv//7v38oUFwKXvSiF/Fv//ZvZ2kvfelL+eDBg8y8/dsBgK+99tr4exl8v/71rzMAvu2222KeT3/600xE/N3vfvchw12h34YSfPGLX2QAfPfddzPz9msD83g7vvOd7/BjH/tY/upXv8pPeMIT+K/+6q/is4e6HTtOk5rNZjh06BAuu+yymOacw2WXXYabb775NGK2PDzwwAMAgHPOOQcAcOjQITRNk7XpwgsvxIEDB7Zdm6688kq86EUvynAFdkYb/vmf/xkXX3wxfv3Xfx3nnXceLrroIvzN3/xNfH7XXXfh8OHDWRvOPvtsXHLJJdumDQDw8z//8/jsZz+Lb37zmwCAf//3f8cXvvAFvOAFLwCwc9qhsAy+N998M/bu3YuLL7445rnsssvgnMOtt976kOO8DDzwwAMgIuzduxfAzmmD9x6XX345rrrqKjz1qU8dPH+o27HjoqD/8Ic/RNd1OP/887P0888/H//5n/95mrBaHrz3eP3rX49nP/vZeNrTngYAOHz4MNbW1uJkVjj//PNx+PDh04BlGT72sY/h9ttvx2233TZ4thPa8N///d/4wAc+gDe+8Y34oz/6I9x222147Wtfi7W1NVxxxRURz9Lc2i5tAIC3vOUtOHLkCC688EJUVYWu6/COd7wDBw8eBIAd0w6FZfA9fPgwzjvvvOx5Xdc455xztmWbNjc38eY3vxkvf/nLYwTxndKGa665BnVd47WvfW3x+UPdjh3HpHY6XHnllfjqV7+KL3zhC6cblS3BPffcg9e97nW4/vrrsWvXrtONzkmB9x4XX3wx/vRP/xQAcNFFF+GrX/0qPvjBD+KKK644zdgtD//4j/+Ij3zkI/joRz+Kpz71qbjjjjvw+te/Hvv3799R7Xi4QtM0+I3f+A0wMz7wgQ+cbnS2BIcOHcJ73vMe3H777YPr7k8X7Dhz36Mf/WhUVTXwGvvBD36Affv2nSasloPXvOY1uO666/C5z30uu4ly3759mM1muP/++7P826lNhw4dwr333ouf/dmfRV3XqOsaN954I9773veirmucf/75274Nj3nMY/CUpzwlS3vyk5+Mb3/72wAQ8dzuc+uqq67CW97yFrzsZS/D05/+dFx++eV4wxvegKuvvhrAzmmHwjL47tu3b+AY1bYt7rvvvm3VJmVQd999N66//vrsHqad0IbPf/7zuPfee3HgwIG4zu+++2686U1vwhOf+EQAD307dhyTWltbwzOf+Ux89rOfjWnee3z2s5/FpZdeehoxGwdmxmte8xpce+21uOGGG3DBBRdkz5/5zGdiMplkbbrzzjvx7W9/e9u06bnPfS7+4z/+A3fccUf8XHzxxTh48GD8e7u34dnPfvbA9f+b3/wmnvCEJwAALrjgAuzbty9rw5EjR3DrrbdumzYAwZOsf5NpVVXw3gPYOe1QWAbfSy+9FPfffz8OHToU89xwww3w3uOSSy55yHEugTKob33rW/jXf/1XnHvuudnzndCGyy+/HF/5yleydb5//35cddVV+MxnPgPgNLTjlLtiPATwsY99jNfX1/nDH/4wf/3rX+dXvepVvHfvXj58+PDpRq0Iv/u7v8tnn302/9u//Rt///vfj58TJ07EPK9+9av5wIEDfMMNN/CXvvQlvvTSS/nSSy89jVgvBuvdx7z92/DFL36R67rmd7zjHfytb32LP/KRj/CePXv47/7u72Ked77znbx3717+p3/6J/7KV77Cv/zLv8wXXHABb2xsnEbMc7jiiiv4sY99LF933XV811138Sc+8Ql+9KMfzX/wB38Q82y3dhw9epS//OUv85e//GUGwH/5l3/JX/7yl6Pn2zL4Pv/5z+eLLrqIb731Vv7CF77AT3rSk/jlL3/5tmjDbDbjl7zkJfy4xz2O77jjjmydT6fTbdOGRe0oQd+7j/mhbceOZFLMzO973/v4wIEDvLa2xs961rP4lltuOd0ojQKA4udv//ZvY56NjQ3+vd/7PX7Uox7Fe/bs4V/91V/l73//+6cP6SWgz6R2Qhs+9alP8dOe9jReX1/nCy+8kD/0oQ9lz733/Na3vpXPP/98Xl9f5+c+97l85513niZsy3DkyBF+3etexwcOHOBdu3bxT/7kT/If//EfZ8Rwu7Xjc5/7XHENXHHFFUvj+3//93/88pe/nM8880w+66yz+BWveAUfPXp0W7ThrrvuGl3nn/vc57ZNGxa1owQlJvVQtmN1n9QKVrCCFaxg28KO25NawQpWsIIVPHJgxaRWsIIVrGAF2xZWTGoFK1jBClawbWHFpFawghWsYAXbFlZMagUrWMEKVrBtYcWkVrCCFaxgBdsWVkxqBStYwQpWsG1hxaRWsIIVrGAF2xZWTGoFK1jBClawbWHFpFawghWsYAXbFlZMagUrWMEKVrBt4f8Dmws4gfj9N/sAAAAASUVORK5CYII=", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAakAAAGhCAYAAADbf0s2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9S6xtW5aWh36tP8aYj7XWfpx94kRERmRGEgbSgMAWxiBbcsFC5hYRFSpXQpQByU5XnBVblFLUKNiuWXYJgZCoUEGyKCBZAllKJD8kML4XZ2ZkRpw4cR5777XmnOPRe2+30Fofc+6ISPJwryHjXHY/WmftvfZaa445Ru/t8be//U1UVXm/3q/36/16v96vn8EVfq8v4P16v96v9+v9er9+p/XeSb1f79f79X69Xz+z672Ter/er/fr/Xq/fmbXeyf1fr1f79f79X79zK73Tur9er/er/fr/fqZXe+d1Pv1fr1f79f79TO73jup9+v9er/er/frZ3a9d1Lv1/v1fr1f79fP7HrvpN6v9+v9er/er5/Z9d5JvV/v1/v1fr1fP7Pr98xJ/Tf/zX/Dd77zHXa7HX/yT/5J/uf/+X/+vbqU9+v9er/er/frZ3T9njipv/W3/ha//Mu/zH/1X/1X/ON//I/5Y3/sj/Fn/syf4ZNPPvm9uJz36/16v96v9+tndMnvhcDsn/yTf5I/8Sf+BP/1f/1fA9Ba49vf/jZ/5a/8Ff6L/+K/+F1/vrXG97//fe7v7xGRf9WX+369X+/X+/V+/d+8VJXHx0e++c1vEsLvnC+lf43XBMCyLPzar/0av/Irv7J9LYTAn/7Tf5p/+A//4U/9mXmemed5+/tv//Zv84f+0B/6V36t79f79X69X+/Xv9r1ve99j29961u/47//a3dSn376KbVWPvroo3e+/tFHH/FP/+k//ak/86u/+qv81b/6V3/i63/uL/wxYoTWKtoatSw0bZS6UuqKtsZSCk2VolAVWoNWQPHPDVoT2hpQBS1iXyvQFkUblKK0Cq0qtQCqWAKqQEOkMeTEi2d7hjHz0asXfPjyGftx5GsvXzIOmRQHQkiIBIJkRAJIAomoCBoCKkAQVAQJASQAgkgEEUD8s1J0RWlc1gvn5ZGlLHzx9BnzOrGsE/Myodrs3mijlolSF+xNNgThMI7sx5EYAmOKBBEk9JcKINlekwGIqCpKRVWpWlBtlFpYlpWmyloqtTVKqczLShBhzAM5RH7+W1/jO9/6kP1+x0cfvGIcBsbxyJAPhJTZ7e8IMRHjnhhGSmvMpVBb4/J0Yl5myrowTWdabZQ60VphrStTOVPbymV+w1ImyroyrTOlwulcWaqyzCvTvHCFDQRRe3egiICgrGWhlpkUI8dhJMfIw/icu+GODx4+5Je+/Uvc7e958eID7o7PyOOB/fOXSMhUSVSJvD295pPPPubp8sg/+T//V3702cf86LPv8b0f/B80rcQMIWB7qkBtynwu1KqI76sQYBjsc0gQoiASiCkjIvaBsN9FPng2MuTIs4cDh8OOPIwcD/fEEOx9CUQJpBCIIXLYHclpYDcc2R8eiHFk2H+A5D0hZGIaWMvK68cvmOeJ3/zBP+PXv/9/0HQBzkCFMBAkE2RgjHekmHn17Gu8uHvJ87sXfOcb32XMI7SKaGUtM9P8iLYCZUFaI4gQJSIEguwIkvzP0R6MNBAl5JEw7GjA3CpVGz96/Qk/+uJjztMTv/3JP2daTrS4oGG180nf4/fs84H9eM8Hz7/OOOx49uwFx7s7AoEczQS2omi1c61VURRVMxBNi713bSxloWmloTTfPzFkBCFKIkiiNZjXSq2NTz9/y2dfPPL0dOH73/uMaVpZ58K62jlStc9N7feGEEhJiCHy7O6OXR55cXfPt15+jSENPDveMeTRXjiAdpsg+N42OyExmI0J9u8iEQkDIpEYD8S4ByKQQIV1WVjXQllmTqdHSi2s84VSVkKI5JSQGDjcHRmGTB5HDscdIUZSyoQQaFVppdFKY3p7ps4ry3RhOp0QgTTY98Uhk1LmdLnw//h//nnu7+//hT7jX7uT+v9m/cqv/Aq//Mu/vP397du3fPvb32a3GwkRajWDiSZUlVJmak20WkhLozVlBYpCUyjNbHV156NNaAlU3Vk10AqaoDUlLO6gVnvmqkqtijYFAqrKsiqffvFIDFDWlfPlxItnD7x88cAuZlIWcgwEkb5vzPmE7H9JqEALmLMSgRgNzgzRNhz9Awh7AB7CMwgfMa0X8ueJ8/zE4/kt7Wybn6agyrI0dK1os8ODKiqJJpUgCjFAgCCNIADq1xWAAuIHGHfQqqhCQ5HYCKr2cy2gAXK0U6MKBQsWpqUQUwFZiTEgsqLMtFaY5mqHYSzkbM6p1pVaG8v6ltmdk7YKKCEqIQY0CFmE0AJrEzQIIQXCmOwZxUhelZQDksQNg12XhwCImFEQhGU9s67CLg28un/OPo9868XP8dHDhzwcHvjWB99kzDvSbk9KgWHMHA93xDQQ8x6JmY9eveIPfPf3c7o8MY6Z3/rBbzL8hvCjN7/FWmdSqkiwgKcCVCVGC3hwJyWiqNhe6Ndre0YJQUg5EmNgGCIpCykJKQdytq+Nu4EQAqoLqhWoaBBaiEjcEVMjZiVnISZh3GfSMCIhEIKgc+E0f87j6S2n9Q1FJpBKjPb6OQ3keGAc9jy/+xrjsONbr36erz37iF3e8Wx/RwyRWi60WpBQqbpCq6SkJIUQMjnuEUkkOSBixr4bXUJxJ7UnjEdKa7T5kVYWVr1wmr5gWs+QZgKFNEAYEmijFhACz473POw/4HC442uvPmIcd9wd79jt9ghip0mhzEqrFsCBotpQVgv0NFCq0rSRCjRt9BBVJJDFjH+QSAiRtVTK40Rpylob87Iyz4VpWpmnlSiRcUioVko1hxeIoEJKkXHMpJR4cX/Pcbfnw4cXfPvV1xlSJuboAazZCO3lDnGHBSCBkPL1PmL3OqSjfQ57QtgDglZBFWa5EGVm0cYcBVEhjiOaMylnht1IjJHj/ZFhHBnGgcPdniDuDBHqUlmnlUpBw0wJFYkRGTIhRnZ3R2JOxGgfIUS73N+lZPOv3Um9evWKGCM//OEP3/n6D3/4Q77+9a//1J8Zx5FxHH/i6zFEQlTQaA6mATRCiPRSW4wZCY3WGtrsMaooDVC39w23xapI9PBIgSgEETSahVC1zKobDUW2PwOoBouKl8r5spDihU8/f83lMvFwvON42BNDYsyCoAQpiIpdSPAIqIn/mf4iQEN7EoVvPBVPqswZRCL74YAg1GoZTmuFZZlorXoGF9CgaPP8QZVaK4JSq6AqFp1tTqq/nqJu0u1wKq01mjZqqzRtNFVas+jS7+4W3SlQWmVeFlISpmlBRKgtkJtnCLUhEmktUEulNmVZV8vM1olaVlpr1NquGR1KbcWvpUemehNR2hX3LGk7CqI93jQjJf2dQY6JJDv2eeRuPLLLO467I8ed/TngXqNVWi20WqhlsV8bEzGE7TfHEHi4e86rlxOvHz/i1cuPmJYz0/Ka0jp8LX6NgQCo2PszxxlsX9LMQWtDgmXG/ZmU2igtEFRovhHtua5+JlaUavsYIaKUthKqEOvCUhaigiwnitbN8F2mC0/nNzxdnjhfTkzTQpDGbrTXCAgpBnKMjDmzywM5RmKw91PKRJNALWdqnWl1RbRaFq++f7sX5vqhjk6Aoq2h4pml2L4qrVDqwrJOXOYTS51QaX5u+2G0DClIZMg7xsE+hmEgp0z04E+uPukaePGuo4JKa9Xshzb8O+y5iT1nkWBPUS0rLqUxzQvTvHK5zJxPM/O0oK0/bXuPzX8fanuUACEGckoMKbMfRo7jnl0efS/cOPAbB6W4HZCbD9z490BTomWqkiyr8uttzWxjqStlXSh13dAXcUQnxEBKiZgiMSVSsgBJ3BZps6totVHXSl0LdV0py4JqI6RIiJEQgtee3rWbv9v61+6khmHgj//xP87f//t/nz/7Z/8sYDfq7//9v89f/st/+V/qd43DQEhQY6W2yrosNBUi4o4q++dGWGZSXamqBDejqwhNLXupwRyQSDVHFAItGPRHEEKFECFGRauwdrimdo+mtGZ/fvu0cpkWvnhz5s3jI+OQ+c63vsE3vvYhu3HkxcMDKUa0KYEVJCEMtuFDBhVzpG40LIxuaAhIUGxnuDdxR5Vk5NXdRzRt3O2+4Li7Y17OfPrmY+Z1IsWIaKa1QHCorrXCPFdqDIgmi9CDGVdF3UBgDkp9s3v0U5s5plIqa6mWod5kV+rXqWrGcVovvHl6y1JGxjGxvwzsxz27cTYD7VBoSm+JMdvBKdVgRIdOWvMMVpVGo6FUXVnrYpCMHy7zj3ELBPrZDuKZoDvQgBKkpysAwt24Zz8MHIY933j2NfZ5zzeef5MP71+RQyQpSCm0AE0LMgem82tiGtiJw79qUG4Kge/83O/j6x9+i+PxiATl7dPn/LPf/F/44u2PPBgw05wENChNVyqNGAJDyoQYWNaJZV0RgdYKnlwjUdCW2e2hSaIqQKTVxjKfPPu1Zx2iEKNF+jEKqw4UB8VCSJzLBYmJtTWW2rjME9//5Ps8nU989sXnfP75G3IW0rOBOCTyKOyGyGEceH68YzccOA4DQxBoC6fzxTOaJ1qbCASSRIPHNBAJBI1IM7hPgxl9pdCYQZSK2D3KlShKk8q8njnPJ96ePuPzNx/TpCC7lRh8X9RKjiPH8Tk5Djy/f8Wzuw/Y7w/c3T2QcybHRBSxoKp44NluHZTdM9WVppXaVtaycrN7CBLc6PfPwlqUtRQu08znr584XyY++eQ1P/zBF9TSaFUJEgwubA3VasGVP+/gDv9+v2ccRr728JIXx2ccxh05G1Rmm5lt7/QgEHCnEn/MUSUkZkQyIR4IISMkINFqZVlmai1MlzPT5UStZUOmkmc7wzAw7vekHNntdwzj4HvJ7EJ/b+tlYTldqMvK9PTEOk2kcSDvdoQYiNkyKlWhVqjty9n53xO475d/+Zf5C3/hL/Dv/Xv/Hv/+v//v89f/+l/ndDrxF//iX/yX+j2GaYtlB6pICEgDggVVrdkBVG3EsKLN3FNPVII/bDEfYD/XSSaqvSREaDfRSjUjHGqHsxRp70YGZlBtI76VypATj6cLz6YJgLUUAFIQRNQiEvVsSf1CoL+oHxy7WEUtEr2J6MA2aI4jiLIre5ZhBt9opUaIETQ5JBc7qtTfKk0VaZ5lNo/UN1ijoep1Mk/uamuOpTf/uP4evV78Bjc0baxlJZXAvFgmFYIdApFADA2RYLXFUBy2NSdVq2dpDc9kr06qqUe4TbdMqsOM17d4e5T7cme/fd2yqxgjYx7Y5ZF93rEfdox5ZEgjFn/iUGczdK4VWlkREVorBq31fQHsdwdy3vNw95xn9y9QKkMeLXgSpQkGaYkFBSIRESXGQEqZGIRS4natrbUNChSgtkBtldrChh6oNqtvidK0eNYZt7JmbRVphdqsdivaqKsiNTDXyuSG9jKduEwX5mU2J4kFVjgiEUSIwWBsg7LN4bZWqcVgxlpntM5eWPPMA8+iurUVP0uWo29ZskrwIKdn5VYLtWxqZa0zhEYSP6vNnqIQyHFgSCM5jwzDSM6DZQMxvQMv9f20bZrNDfn+v/3gJvHzTCp0eBLxwKqxrlaTneaVeV5Z5tXu27YF+9m6ycvE72cM5JQZUvJ9OFg96Mbx6M31bwes/9nrldfk1OtR/YOIF7PAnXqrdXNO3UGp48vBM6mYosN0gRgNEu6vrc1KH602WqnUUrbfC5Ydhl664Go3vyyx/PfESf35P//n+dGPfsR/+V/+l3z88cf8O//Ov8Pf+3t/7yfIFL/bEsGLw0IU+9xUqWU1GEvMVas2GAz6q60iqxEshEbVRvXidFOonr62oCDVjV3Y/AQi5tAEtBpsXoP9TC0YZIbt91LhMinLWvje93/Em7ePPNzfcf7GxH438vLhGXeHg0X8fgKCNEQcniNZWt8PqVbf1B4x9eppd2pm8RjDnoedsIt7pMGyTkzzE/NyorVCWSc3ps1gLlG/V5YJ2CYV1LdH81pJa40mi8MalknV1ii1+dfCBhl2AkaK4lFr4TxPVK0Mj5FxGljXlVIWq0XFbNFpsMK5NoMiDZLoTkdQIgoUijlHKqVVj3g922pKqZVSlXmqrGtjLfZv6u9DtZMULCoeotUUxjhwHA7cjUfux3v2eUeSSC0FQqAlJyPQEFVaXSjzCa0rbbdDcwTJtBpQhOCw337Y8eL+OUEaH774EJHK5bRwYjaYpC1obTy7f8HzZ3duaOx5vHl6w9vTG2orzOXsz84MQ1kLl8tCrY3z5cKYIynCUGVzUo1KjIGmmdgiKWZ7QDqj7RFEaO4EzvPC0zQxLSuff/GWy7QwX2Z3KuaAmjGMCKwEXZE6IzWyzk9cnAzQ2urQXunRC1fLmUCtaK81mL0MM8iMSqGxQgiElJAQCTki2YhNS5uZ6hlNjfFuRKkgCyhEGYg5MOYD94fnjHnHs/sXPDx7Tk6ZFI0cRLNgqlXdDLJ2iI+Keo5ZW/GPds16HdoLEomStvekKlzmlTePJ06nmU9/9JbzeeL8OFu21iFFDCFpapmZ+R5hNwyMQ+Z+f+TV/XN2eeRhf8dxtyfGaBF16A7qBuYDCx7ByBIbUcIOYQgjMR4d5ktAsCC6VEpZmecLtRSWeWJZZjY3HwJ5GBiGgWEcGHeWPSXPhgTZMtCyVOpSWc4T09OjBVIxkPc70jiQUrYEwqP+1pRSlFp+hp0UwF/+y3/5Xxre+/ElQAgWlVkq7CQG3Nw2IaCoBiQENGZCXT3ybqArUo1pRcAcBdA22pdBAU2BFjbYaKvpVEWC1YaMgIEbQrH6VGVzlvPyBZ98Vnn5zKC+u+OBcRjY70cCHp1KcBfUgERolro3LMNxMH+LpHpms90NL7LlMJJiZhd3JAJrXTidX3OOA7UVSr5YnQq76KaV0gw/LnW2HEXdIWwBoLGqitd+amtbRlX9PTevawndSSkpQgxC08q0zDQtPJ4Cc5qx2kMlhUhLVug3IkPYIjM73H4wJUDM5qR0pdGoqlR6fcwdZ7VotlRlWcxJVa9JGmTYsy9AlRhg8Ch2iNkyqLzjMByuTqpWM/oSbL/QEKDVhbpcUC20egc6OPEmgQSESJTAbhh5ON4DhZf3L9C28IYzZXlyHL+BVF49f8G3v/lNQJmLQTHi0OKyzpR2odQreaWW6pF6s1aNJVEDiD+HqgtKpaVoQVdLlFwIIaPNnJuirG2lauPpcubN6cS8VN6+WZiXRqmVawRsTFooBArCirQV6kxdI7NaJgQFUJyvd4UZRNhYZS3SrBIHLCDV9p40h4B3xJyQFCEFtMKqC0ubISnDfqB5NqiqpJDIYWSXDxx394zDnrvjA3d3DwSxGho4l6heMwDVm+KU70lVd1LVr8mPWCA41Be8otkDRZiXlbdPZ56eJt588cTpNDFdVlqFns13Rp9B+b1kFBhyZj+O3O32PD88sBtGjrs9u2Hc4tCNUMWP4QIbG/g2k/JaWRgIce8ZrDnVVldKKazrwrrMlOJ7qywIRiIKEgwaHUfyaM6qZ1ShIyqd8bwU6lIo08xyvqAoaUiEYSDlTOyZoGdwrUGthpB8mfWVYPf9TmujS/uy4rBlV8REC80YfGpQEYJj8hmVRlR1+MOja8zOi5c3t42hoNLMLDnOEppFNapK6L+7gTSxWtWGt3YowDbpvDRev31iWQv73Ygq7IaB++PB2C49KgLsMAvS/I3eOiW1wnLP7izZattPWoIkpJARFWo+Igq1FZaYnSXnTgrD3Y2+b1T1DrMZOcGdj1Y/3XhRXh0h6Z7MDnqHdIJDIoaVywYRGAGisqwL0xxIIUJTz6Ls8Ft9oTkMZHAqEtC2AkI112TZrxe8W4PmNY4hJUQrWk+UpdcT2la3aE6CscesxGBGbIiZMQ3kmNwZGwMrSkFqpHmxPyAec/bIRinLzBzNMEhqqAQaCUVYlxO1nkFnxiFy3O/QqtAhkiFYJvVw5P5ozM19zU7pn9G2Mq8TBKvBrcXqJBKE0hpUWEphXldadJhGlIY/5wZS7WpLWUEiMURisKxirrPtjXWhlEotlVKbtRVUqwnGIO48LDuOIdh98FaHWgtVVnpbRj+km0HXK1Qr7gyE1VGCFajGcEXNGcRETAMSvI7j1G9FrVaSB1Qjg1qddIw7hrBjHA7s9gdjYaZkrRVie0jozomrg+oOhGoQpfZ6kV7ha8EzKHsv4k6gqbU31NY4n2dOp5nLaWaeV9bFmbTbEXFyDz2DNzZfDIHdMHAYd+zHHYdxxy6PpJ5BXZMnP9o3f+lOif7ZLlZCdogvbc60M1tbtSyqlJV1XailoK1tGVRMyeHmRMpOlEjBoXmzjq1ZgNRKoywrZTb0Cs8MQ3SyRAzb9dnr235BfF9+ifXVdlJJCNFxZfsKIIQwGPxUK4uEjb1SqUTHaK2YHKnV8O2wmmEWDL5rzdPrBiIWdUtwWEQt+tm+Fo00IcFseFkFeoq/sQGF1gKPp5X/63s/JOfA26cTzx/uePXiOd/9hW8xjgOWKUWCVIJUICBhtA2noGr9VNqK91VFN5SCim2ifgiFwBgOEJRdOtD2ldoK03p2NlzZIMQmFj3Oy4nVe6qm5UxrlaUs1FpouoJH0q0otV39kxWdC3aUI1Gy1ywM7kodyxahlop6NjMtEzkkjqNlLMFhga1fRXWrA/SKhRdELMtUoaozE9UKwjlnxnFgloXPljfMpyckRkJKVhtbi7M9LfuMQ2SIiX0eOI57Hvb35JBt/+hC0OAZZyTWTMRICJ01ZZCkcjm/ZZofkZSRvAOEQqABp9PHLMtnaLvw7G5kN7zgxfHA/OxgcN9UoCkfvnzFhx98YNBItYP9sB95cXfgvJz55G1mLjNvT4+cLmdzLGVmrfA0XwgXyClQ1BxQCEb/DiWYc6gVlROxrsQ4kOJI08ZpfsNaFuZF7WNuTNPKNLuTKoWAR9gpkJMwhkgKFpmbuzEMvMPwQQSJmUBCiLQKRo2oVMWuS1YAFMvkrWfQ4Ps47Bh295RQWdrM2pwgo5WcjfovIow5m6GPR8Z4IOeBu/sHcsrsd3sLWj1JsizKCRNbIVlRCnSSRF08k7JAiB5ySbBeKALidPOyFt48nZnmhR99+oYf/fA1l8vC09sL87SC9pC3bYEg0iBATIHDbiTHxPPjPc+Odzw/3PPh/QtyyoQU2JK12wzKa2JsAWDH17thtF6oEAZERiCCQi1mx5Z5YZ4n1mXmcn6i1tVLDeaYdvsdMSV2hx3jbkcaEsNgwULwVhgthXJeqaUwPz2xTLO3GlhAGod8QzePtAZl7Qxga0MhrF/Kzn+1ndSW3pql7IFEQLy/xG9qAGnBozuDa1Q7A7ARNVL9h4MjEypOrAi6UdVFMXadimdcINEyloCiwdxFaM70awbNCeqQleHB07xSivB0mogxsN+NTMuywfXZy02GL6uTKTxaUmCLxbCMyp2rkR3oXgMcOzeWW0DFiApV2+akmlrfUXdSHYZAhFQLVQrRazih1e06OiNOHQbyi9nOk/jz6X1It8Fg8/dTqkOXQVlDpIXqvSZhi3TNaSv9XbceoUfrF1ENqNoNiyETQmbMA/txR5CZIQ3kmK1fIyYLWORaY+jZYBB3piFucIfiWbg2p7lD04CoUb4tifQic2toUU8mvdUBYfUvrWWi1RltxQx7isaoJJvRDBEa7HaZYUh235wBuhtHDrsdhMZ+2SOrMC0z87KgolvzaamVpRSQQPH+lyjWwyb+PqQJ1WipZphJBveWwlpWSjXm1dZWoJ20ct1nIlyz5C1Ctsy+SbWM2VmdFj/JhvZZUGM1oKDO3lPL+JSKSsSa3K3uamy1fv+b0+zVDepgjeiDZR27eGAMB4OpnChh9RN/7Y1uDrcHRTdH1bZr6/TwayXt5j+5ZiatKetamJ0kMU1GlCheA+0/e32d5rbLlHZijKQUGZJl8INn8SmmzUFdEf2bDOrG/m24Yf8eCTdkiRvKt9dsW2vWOlHLRvDq/U4iRnKIN5lQp7+HG+JDa45IeNbdiveqBqet+8dGlsCzaL/XIvbxZdZX2kmFYDdSg0FQocLGGFGrhQw509SoxiVGWrMDiTZiNIp6CMVT90ZYV2NLibL2rMmp6lIwZpWq16bwwyRok+vXAoRgjqqunkX1OgJCa2a8Xr+dmOaV82Vhmmd248g3v/Yhz+/vGIeRw25v3fdh2mjNgqlVBFehcEAOEG/4soPUN69Xr7adLiSGcDAoi55JXRlVQQaGvFLqwpCP1Fa4TCeWMhPXCatDVVqb7XXVmqSvy1lyYk3LMUCUXvc1Y6mtUUVoKGtTZhEu88VyMC9IS68hiIBfm/RaoQgp7AlhIISBId4xDDu+8fXv8HD/gsNhz8PDHfM88fLum3zx+ouN5LGsC5+9/ZR5ufD49Janx7eEFhljdoglbXcNN6i1FYooWgNhLYQmDJLIREJQtFnviRajCDcmipgKx1wKtTYep9eczm+tzlEWRAtJ1JozMwz7kSCB3Zg8q7AssQF5jNzLHUMZkTFZb1MakJiZlvMG1T2dJ+Z1YT9m9HggRWEchJQCzftaJMCyFENbKCizXee6UGtlLcKyGp26F/aDb5+AuFpKRoK9Zxxib9j9FSyLj8meV6UhrXrVpnlWUTZIt7rhrjrTKOR0zzAeiWlEYkZFWFtlqhPTPLGsM2tZGMaRw3FvChr5SAqRIe0YojUkxxQtonfauza27EmrOyhtGElCaW2laSdK9J47PzOeQclm/APLWpnXmcu08vnnj5zOE59/9pYvPn27UbKttlpNnQU7Z4ChCskgvof9gTFb4/ir++eMw0iI4cZByTVz4uZzCO/QzQUM4osDIokQRntOJGiC1sa6GiQ3TWculydj33mAllKyj2Fg3O88oxqtiTfY+waoS3W6+cx8OlNLocwTdV2IOZHGwUoqKRODwePr6oQlNUJKCI0Qjaz2ZdZX20mJd1+jeJi7/VuPZCXFbbNRxYxjtSQ+xow1rTkzsLVNxkUQ71u51qVsOZ5tOKBnW3KN0prd1CbmmGhej1JzThZ92S88nRcuU+N8mThfTux3I+OQyDmiqMF/xqV3LFytqUvU37dnax1st53qkdQ7IHb/R0vWQrLswRly5qTssMaYjZDQVpITLVSDM4OEtc5IXc2xt0rH4m7ppB2NM3UNoTfIm8dXf0xOjKCTHezAJDJJLJIbhuzvo2JFFct0RQIaRlIQQkqkdGSX7vjGq1/kww+/wf39kRcvnjFPFygDnz98xrquLMvKtJwREU7TI2WeOWkhUMkxMsSBKJHrzbTVtFGaok1YKgQVQmxmDJqgYfGU2j7WNrG0J2qrXOaZtVbO6xPzcnb4qCA0gigSDQo9jCPJ6fiqK4psCikxB/ZpT24jYUzWi7MuzKWgooRTpLRqDaRLo9aRIWVyihvFH4QWLBNvVKR546nvn/WmD82yKc8jpDuqXl+MBJzK3KEfd2Kd9WnGGe/1U6oXbUOHaunNyM0dRaNgTirJHTHtSWmEYJJhtZmBXdfFaim1sNsdubu7I4XMMdvnHDMpZs+JnP4s/eLw87jBDP7Z9tZW82r2cQUjDOqz9+wMNRFKbVwuC+dp5vHpzNNp4u3bM49vz6BCDFYLapTNOG97OAZSjE6W2Bmp5nDH88ODQeKxH5h3HZPe/F22w3D9FgnRnVMyByV5QzyMUVeopbCuM8syOS3eKqsxWqNuzok8DKScyEMmZ3fOPYMqjbo2yryyzjO1FGu0r4WYnf0XojdMB2hQa8+ivA4VlJvy+++6vtJOqqsotG6kQ88odFOX6PsxBCHiUVVKTkEtNLWgRdWivJYGeyitobV4gd3IzzWAq5dY+hwULWyd/pKMnm4MN8veQrM+KmMtXGtUfsFeOxPmxZoHP/nsNetaebi/ozUYcuKw2zOkjFCt+Zfgv9MidysKC5uszlWUzmEtd474n7dNf3XAP34AejZm/UyRFBO1JVIcLJNJxW5tK7Ty7sE3goQXCq0z2q6pW7IOr0gz+kNT1zKDtSrS7KAOQ/NetopKtZ6cbPpzaQyEkDns73n14usc9vc8e/iA+7vn7McdSXbUALvhjuNuZU0LOVm2OgyJUheeHx643x0ZUuLh8JwxD8SQrcakjaLFYK1s9HRD9cyBlWLFf5FKlQWXCwARqi6UVqhaKW2lVstMjZDSrBZII3utDjq9f0sUUeT67OgRtRCjETEOuzsejrbf3wyvEYS1WjZjGpO2n0vxDF+vjsYKlhYsdCdVKk7fx/vSLNBI0ZUNgjAMQi/FdfhK/Xyo926hwfubsEwwKNIUemuFR+7iZ84gPkW7VmQw2jkhbBnaWlcuy5m5zBbh646cRqIkz5S6IW6GDribsu0crM5Vbd+p/1b7c4e4zUnVWumSR92+4PDelT7dUIR5WTldZs7nmafHiaenC8tcuiu2IBah91hZYGnPIqfIbhjYDyP3uyP7YWRMg6k4bJJHXDdDP13K1bJ3hi8d3guIGNxtZAm7L7Xp1rtU1oWyWh2pteYxrbVUxNSdkzmmzuITd/L9Ode1UuZCWRbWaXY1GyHm5C0DBg32VpwOE1/JEs1IGdkc4pdZX20nRfKaSzT2nTjeXV1ORfFiLVutoTpEaIZxodSC9sanoFudqpSFsMwGAVKoTakRVs+axEkVLTQoVoSXEK0YHyDEd78vrFDXnkV1W20yQMuqTjUunM6/RUrw0auXzL+wcNjv+MbXXhGORy/BN679VBHoDB7xWg+Y262oCK0nXPSNbvR4+t/pTvc2ausQgqX5OSWQARWTpYmtWOE7LoSy+MFXJyKZQ+7CmXQHLdBla7Q0hxsbq1jj6TRVeyZTY50bMUZyzka/jgUNhTFH7vaZnAb2QyTlAy+ef53f/90/wvHwwM994xe5v39uhW0s23p+/JDEyFon1nJhSJlXz18y5oHf/uFv8lsf/wZlXZlPZ1o1R9hrMlUnQ11iJjp9lxYITriopafYha6xiIixJTG1gmU9s9aFuZyNiKImp6SqMA4MeYcInrGKaRKG6Lp95qiaev+ZCDlkYsq8ePiA3fDAbjjy9vRIiidO50ZdV1pRlqW4wkGjNiHFaM9M+vPwnkKPa0oN5lS8/gZCjNas22Hb3RhJ2frCEctMmmchtQViEJDkGZVDUNpQqQRpaDCpnSjWNtIoVF0s6HHdQ0k7JGWIyUDeVrksZ16fPke1MQ4mkTakgTEYRCpqjr43o3Kzu3sG1AMkQUHNWBqTb/Xz7lT2jowLRIlOOY9uF2BZK7Uqb58mPv38LaeTqUo8PV4oi6My9Kyh96kVjDlnH/th5O6w59n+nq8/+8D+vj+QUrrCELwre9TPqtXY3Xm4E+tMvhB3xHjEgNkMGmhlZplnSlm5nJ8oZTWptFoc5jMli2G3Y7ffkweD+XpmtcGySzUlk8tMmRbm05np8dEQn+OeNIzvNEtrE2fb2nMxssiKSCPlPbvdnvJvAgV9g7BEMC0732GO09ofr8VPcJq6WFOUhEDQQGt4vcPUzcRJFb0fIDTbMIbLG5Giee1JWo8ssYwrYIQH/1qILnFUQaLFWS2IB3N2ZerGQrQxa2VZG+fLzNPFeg6meWFwbTRJ3kfkzsrkka5ZzO1j35zS7d89MkfZ3tO7//7OD/vvvhaMJUSTE7opjnZqeXQnpZ5FiV/RLe22Qww9qt0i8ZseJutj8mxMQJMZuICwJq97qEFPKQ3sxzv2450X0vP2u1SVGBM5DYhYJDfkgcP+yG7Y8XD3nOcPT6zLwqlFyrr69xluK61s99au1SNKcfJH667f75FHJeakymbAGyZBVVpBHU6iR5f+s7r9ptssWG8y3L7jzQjGkMhJyMmcdqmLQ3vXvdik0dxYVFFil+0Wg6qbN7Wqive6OeW6IwOYIQzBHVZnRPfXcHLEdl96Fs8NUULYsnhrgDYHZRJI7bpjf0qxv2edxZtqFSUFa8h1AGq7jw15ZwP3onxTuZ597SfEnu+1kdf3Yt/3coMnyA1RAoND11qNLLGsLHNhXSplrfSOkG3H6O378/sYrP4zpPzOR7wRjWXLonn3+W9EsZvPCFequalJvEP3b709wKTjrEH+ek3WGmLM25jCprEnQfodprNX201W1mrXkMTRluBZmWzPv++LvrOd07HV9v5FM6Ru1/8fOKlrSh5cD6lRaFKN0SQmaGkKx7ZRkGCimjLQWjYaelmtdiSCtkpMA2MnU4TZ+2UKUosduGgPoYpTzxVqcKq6CC10lQqh4zghQquCBINT6mry9gb79QZgYyt+8Wbi//Xrv81uHDidJ57dH3n57Bnf+NorYkiorAafuByDRd5dkDOgNxvVYL3uaAWcDacqN46qO42bbvvatcucBeiFfpqSakQ905IwABjAIB0aMAOs1WGULgG0RbOm9VfVFCLa5gSsOa2VyLJasVajO4YktLkyDJWX9xFhJKUHDoevs9sdqTVymWbWdWKeLWsJSTncj6xFiMXgshVBWuPu4UN+8fCctham0xO1rJRysTEgdWWZT0bxXi6s6+z1ML/XuiIUf249+3Sj7E5KaawyU6Uy1wvn8xtMostgapM0GtBgfUFmGnuRWns48Y5Rad0xOGs1D3ueP3vJbt5R20xtEymK0XyrUCpISN7vY07kNkJv3rdSHPpmM01XIx0jDNmh1t77QgIy2qI3FxviAIuTfQb7Tc1aKQKCNoP5qh+L3pwq/v0h7gjRCCEKPM1PFC2c15PXmFwGC2OGijY7Xg55BxKBuN0z8zfVHTsOxIFgkX1rleJ086YuS0bvhTJmbPBRImA15rdPF87TzKefvuVHH79hnlbmy0pd9Xre1Gq6Rqm3a0wxctztyCnxwd0zXtw9cL87cL+/Mwp96uNJeFc41iHfjcm3KUoIuFOPaW9NuzIaqqRQ1oI2ZZ4n5svZMqj5YqQxnB0ZE+PO6Objfse482woJ6eaC1qxGtRlpZbKfDpZw65W8m5EgpDHgZh9/NBWwuh9lgVkQSIM4+BitaO3JfwbAff1I2Xxi9VmjFVkIzV61K2bPp9lV2ZYssNhwUkT4np1VZTgDZFd/ViqmDNo5qQ0+AH3w9aay+x44BOk9+EY7BdUPJLwLMAL8Qa/XfF9sOs+X1bmZWLIiRQDl2kixsiHr15YptZp7137TKCFuh3DdzImbp1U7/C3P2t/D3RH1ckMXkRWx+29O9mKutHuTxM63Ai8G92GHsGZo+sR5sbQw0kpijdVXjM9wXrKWnFH6lFmK64PVpVWIyKZGHcMwwM5H2itsSyFaZk4X94gwG5MDDFbUBHtcFZgVWW3v+f5cEBrZbk70UphXt6yLE+sZeZ8zpSy8PaxMi+T9dlECKpUh1YtofJ7vQnYNhpGaqipUMWM4bKcUVWGPIAzTdu1yW+LlDdrtW1Yu1/9HtlrWQE/psxhfyTGwON5JM8Jwe49QWjN5hsp4HifKyj0CN2ynLJF2L1ZFaKLBJtagxhRJdzUaNQid6NaN6pUcwDBXso6KDxbEd8BniATvOm7Z0USrZ4SMkhEacxlYioTS5mccGLnONChymYBot+6yIDNPrvyI+zJVN4BWfA5Ud6ArKo3KjPXnqjupPrzaKpcpoWn08Tj04XHt2eWpVDW6u0S1+zByBdte5wxWD/XmLP14u2OHHcmZpxSvrL5tiz6NoOCTobqjfHX4NyCxBh3mNyURcytWsN8uSWclJXqMJ9JkEWy9zPlIZPeqUWFa59iuaqbr/PMOk8uGJtc2896oTb1A+36pW50g71mTO4EQ/Lv/Tchk3oHn7qm+9JTG3HHIOr1mttTbt8cAA2Gzfb0XJoYTdqhvPCOKKVz/Wulqm46fqGTKozQsjWdikOAqDUCBxGiO6h3qOyu+9czKjA0qVTh8WmmViXFxDBkdsPA84dn7MbRGzZ74ckjMLnCGhukFsT3hHUcWzQerS9F/Xq5ar1Z0+S1qKw0qhZvSDS46jp8r6tkyBWxoMOl1epw3sWvitcAvUivblDcSASf68XWbHn7fnAdPyEPA/vDnv1+YNwJ48gWIJj9tqBiPReLwRMG+zmdtmlgKQVtZ3PXQUg5IXFHGqDWkTwEai2kYWB3uOt6Lua0q7G2aik2imLrq+nZiikWLMtieZXTf/seEn86ndVI3Lz0zY6WDXqyJ2e9bqZcXgnBHGUpK2uxoXzGqrTelhDERGqjzRZq3YCo+HXKhk/ZvuvPMNJrl4rQYod7BNUIGh1GbBh9pligl1ZqyMSQIalnVC6LJUJvOu9nN4jRtO2inTXXCpf1TNVmZIk6M68XlvUMNNvvAk2iTQVogdi8ib3D/DcQ9zUr1K3fTjBUQNu7Iq/93d/2DIkI69pcMHbh8fHC49OZs0selWJTEwyZuKqae0Oj9UFFo5sfd3t2eeB+f+B+f2TMA9KZfNuH/Ng2MORHNmjMyw4SkThggyK7c8IJYaYoUUtlXZdN6Rx/vtHp5jlnc1Kdfp7S5qCAbYhhWVbWaaKuZVO5EVem6KM8jJV6hZChgjSf+2Y8gBiSTTvAavddXu53W199J3Wz79/JrbxuI6EfSGs2k2Y3v8+SUUBiIITBFCckOAxQUHccKY1AI3iTXW0VWSaDCb2Vp3mYphj+b4QJH17X7BBKtfTZTpmxfTTaLCcwv9pq8HpK2HDgH33+RAzK26czn799w91hzx/87i/y8vlzhgxDiltkK8jGhlPUD83mmW0jqTu1kI3m605KNydVXFnbOuRrK1RdqW1hrRc73NocQnGgWfufsTEMTkARbTQxVY9au7Pr12adM+a41AgnA0i66WnZ2EH2Dmq1LGu/3/Ps2T0Pz/bc3QeGQVhWo1SHggmqroX5zUybK7sXBw4fHE2qqBlJYJoXzvWJHBPPjkejbMdIiAdvfHxOa43LPDMvK+s08/T6rQlyridqmZl4Yp3eXoVIVbsQhfcfTax1ZZ5m6lo8CvZsvlnBnmjvk3CFi3SrOeDMQmtaVhkQDcS4EpspkizLxDKbfmCMNmdtcIMzDjtSzqZjuF5FgZtaVm9MrBsnpaaWD2z7pIZGSdbfozVDG9AmXj+sLOsFaE57T6Q4ohSLmCUDvfcs+rntmb73GIYAMaAxMreV02Riuo/LG5Y6s6xPzMtbkEYKSghWmyrRtBEzewKRFLzZe0MMesAEskk1dRfw45+7g4pbT1Tw+ti8LHz+5sTlMvPpp294+3jmzeszp6fJmb+WfVZdKc2VQ526P+S0SR69ON6zH0Y+uH/Oq3tDRCR6oNBHM3BjuLeak1yd1BaIJZILx4YwAOlaM6p1I0tMlzPn8xOgBEyXL+eBYTeaMov3RI27gWHM9EwShbb4FOHLzPT4aLB9MZJQSJE0drq5iQSUYsKxfWCkDckMpCF70/JgLS410IohJV9mfbWdVN9gN45Kbv4PFl1ZkB48ne6dzrJFO/adlg/0bvnrxEk2FQobGhgJ6tmLxq04abCI646J+DwlNlKF6JYSbBJ8JllnsJ14x6S482ITqu2U4Ma8FqZ5IaXItM5M6wQSbHy1xA15v0JD1/86/mGFbi/I97SPm+/tzb1b0fcmG7shPPSIs4ls5yvINRINXgEQj3bfFeNs19d0B3S1FbJpMga/vE1b95qrsSwrl8uF8+XEebKeJHWdPMS0w2gQosFPnQVqLEihaw/W0gya9RrGRueNFm1LUHIDJUITa3TGdOaKCLUVUhqsB09nH4PRAxer9ZRaKKVQanVtx0YLbcsUfzyDetd89nYA638Lag5LNu2zW6j42nwbvCB+nejcfvL337z2T7A7lc2Z0PeMXn+uNau7WKO16fXVhrVcSKC14shevGbBTpxApCNrW7Hd1C0qRZWlmZCxyT3NlDpT24I46Ncz/+Z73iBqk30KJqq5wWbXd6zccFx9H3WIj+0e99aLDu+JKqU2lmX1Cbv2UdZyVSvhnaYOfw4esAWr/eTb0Rs+8qJnstdrdYd1Y79uR3S8Awff9OXRIX+vBfder1q950tv6eZiUF2MPn7DBxj2907/PWyjN1qxsRvq2nybmsRPKEp4kNWdNGzEjOteNNvWx8x/mfWVdlK9X2M7VNs/XA+XSSSpb2arlShOARZzHpad+oaNkRYiIdYtG1jLsjkiayRtLslTWctKKKYuEKoxfEoC8VqUjf6w6LqFisa+ocTYgRGCkym0QXEyRauC1E4mMMNUKky1wHLhB198zOPymmd3z3n58AEpZPbxaKQKZcs8WvA6U1MjVqCbICuybP0oW7HWv8cEaIs7LG9I9N4PIZDEoi4Ltvsk2egFV2O+NS1ApTocaaw4RWvw/jPDyS3ODd31mTFOwrA3J11qpLZIh6IkBP7Pf/7P+M3f+g2+/4Mfss6N+7sXfOvn/gAPD68QGTgcH8wx5wLFmmZFTUNMvGemlcC6mCechsUcTtuT8s7eu4BSkRwZo5JkT16OaGkUJpouTOuZ/eEZ83rhk09/g/P8mbH5Vqs3ndYTS1l5e37k8zePVudUYTeOBEkcdj6YU0yBA392AKIdckrX/pe4QzXYED5dUTV1dqvDNoIUm+6akzNUE9CVCdyAbhBX75nrsK1Y4NWpqdySKCwEam2htsZcZkoVrP9pdVeRqRrJbWdsMc3ECtGjjuaz02LCtBSjQ0YSmeuFuc2c14lHJ6xM5URpK+gEak3YrdpIF+JISCMqzWpnokirFLX91B1ARzQRG4djfw+bM+jvr+sLBumjYuAyr6yl8sXrJ3706RvLpH70hse3FwtucOmsZufE9ruhN3b/heN+v8F7Rjffcdjtr/HaVkbobu7GQYXeN9XfixDizvZD3BHCzrMei3prqcyL080vT16LWqzmF4Q82F4bdzt2hz05JydLWDYEJnLc6ebzaWK9TKzzTFlmFCWPAyEnE6ENVga5qpqb1BqihGgBUx4S4+6qwq41UM4Ty+PMfH76Unb+K+2krusW87uGUFfyqTskP5qt67z0H22daGFRwlZDTY6717pFqBoElWaTVD2TUte/ajf+R7m2CPXX9tIU+JDE0JMr/wfLyvp7UK5j3p0xo2IRZoW3l0dWLoQUOOwP5FgZZLDr1oANeHQYbxtgaCX96pUEG93gFx3kprH3SqDoH+9GoT6NlHhz2MWLohZFqxTTiQsRbS6Fogm0OYmlgZYtg7kSQNxoBiFkvy8izka3GVuqymeffca6LkTJfPTBN3n+/IkXz7/F8aDkIZIHE+QNUZGq3uDavbepgmu18SJVrBv/Wh+xGg7RJsQGCTbZtkEadmhUmoxoKKRlh0ogLSfCF983mFQrBZPXmteZuS5My8x5WqxPZtwRJFJ3+k7Gjj8vUaVToM2BRLqgaUwOyQgeNDR3NT2Ct71sg+mug+a23+Xb6+oI/XPvN5Jwk0G9k8u5A/VRLdUasUUaIdj5kFoxIo1Qmo1iabqnazWibmgleguItXog4gMYG5flxNP02mdnXWi6EmQhyuQ9UTtUEpVkTi94nhagE3664b85/fSKWL93/VrsvXs4q9EzCnM+61qZlpXztHA6T1zOM6fTxPk0YWK7xsLcalHSKdlmR1I0Nf7dMHAYRu52Rw7D7toPtRmqax72zrqF+bZrT4Q4eNDSyQphy3y6AkQfw6Gt+fGWTZMv5bR99MbdXldWdVWJUqnLyjov1ntXHVlw+O7dUfA+mFTVbYXtwRBxNp8pX7Tqdau1Ui8T5TL/+Dv+qesr76SufAaHsDwa3XbiTaykHQ7pEFbojCZnAGJECAEIYrUVAc2Z2uI2wVLdmqsGYnIow5qtjHFkXWyWhYeNgW6Pz4th6rRAFbn2uzYxanxxyA/zYh12yyOELJBMDWGuymk58fryGTkOaKvkMJBkIIXRo7w+5bQ7nndAwI2UsNXnPLrrE29tw5khiUno82lFvQCq17sco41FsFlNRr4IJW4TYJMrLqRqHe8hXJCQKLUxL6YhF+NACN3segQZ2XqxzFgKaYhIyFRd+fzNJzQqp8sXzMtz1gLzZNeU7GzZ+/PMtKi73jqjOlOLcjoZeWK3D4z7SEy4jhrQjA0mSUgHm465OrEmycBODsQh8uGHP8fusOd0ecvnbz+hubbb03TmMq20XrtoRqHuNR0wiaIOkXTh1das+NylcoxNuoJCWQ1yslEQEQnJVM3DjiDJ5pt5l78IFJ8WfR362DzIiJ4nDY4/dxaoZbqok468Z6tUkGJtEuLsteh1uKTWXK7eKNsIlLYS2mo1nuCj4r250LJ2q+U9To9cysy0XDhPT9b6oEYPT8EK8HaK8/YhajOpeu1VnIp+C66oXLMlJLp6Bh5x9gzRNxk2A654Xefx6cJ5Wnj75sSbL07M8+pKHg6pd8WKLZBzRCFGdoPV5+73R14cn3Ec9wzJWHDWR9mRix93UGY0RK5OtPeQIXHTqzRdPjt/tViQbCSJaWPxaWfkOskhD4N/NsJESl1WTq69imtlnRf7PE0slzOgNtcriJ9xd+RuM2rvS6SC2PyzlH2Kb8gWCDehTgUtSr0s1HlF538DVNB7aryhe+3K09n+sP1jjzY7zqtbhz3SCM5vC26we4qs3nHeUKNzijGdwH42e79BlwdprRDKStDWyXb2IKVP8DVjZMFlQGswaNmVLFIQNJld7H7WJ2+TdhAHRSIsrLS6IlOjyMSQBkqZGNOOfb7jkO9hu9YO//mfxZxWn2y7iT+KwTCydbzbtUesCJ/jyC7fOSRi3ei9zwnxGsiWBSpNV1LZUdtCbVdZoFJswF6MJ0K8MC8T5+ni0N+V0t46VhOFPlYHtRrjsMtojZQ288PPfpNpeeLN4w958fyZifmutjsysZOqfbqsZ8MoVWfQiVJtFpCqcv8gNCLjbuTu4RkpRUo5UctEGKINoUNgAl2EQQNhjDStjIeBUmZ++On3OM1PrLXydJ74/M1bYzH6CMBSYS02q2ktltXG1tAQTNmLbgKt7y2lQNKASGfYwbIsLPNiRtONV4p7WvJ5WxWHsM3RVZ/hpZjzs9qp1Q4NTjQYyVorDOasutBaYcTOiAJrNV1B2TT9oEVrik/JpmdZOFQQFVZd0GZZR5KBIIpKojMgKwtrW/n8/DFvLm9sLPxqKiZBPEtMiSgZDUKQgSgjkYGgNivNHIUiUczXvFNscxh5c5KCJs+mcGUGC2dAgpEOlsKyrnzx5sTT6cynn77l00/eUEqjLKaj2eE967Fy4VQRQrQZUYfdjl0eeHn3jI8ePjD6+fDujKifpighiDH+3FmZCTOa+RXmG7EeowTunGopTNOFy+VM2/o+i9ecEilnht1IcrLE6MKxvSfM6k9KWQrrxbKn6fTE9PREGjK7u4NlYg4jo7LtRZss3ZBQIKwuabYn58Gus0VjCZ4X2lwop5l6nqnTvwGZlOpPfu0KUtxmUbf/ap/te8LmCNSjWENF9Jr6YA6kkyWChdY0DQbXeSVXRD39jcRghXFUidKLvH6gw7b3vETgjrN/zaE/iSbCCBiGHyzQtXktuGOxgXdrtfrRUs1AxZCJYeDaU3G9A/3eGMrpUWBvZnRKfC8eq+MoIRjMlkJ2Q2PKEwaRqLGmhK34upF6FVIc7Jqr/c7mUh2hVdZUSLVRU7OR5spmSNiuna0IvVWYBbp0TFPLwqbFFLKX1RTjpTPTWjWIAYNXr4Vnu9JNLSOEbTTIVWy01wTFCS72EOV2X4nDh1RTDUiJcRg5Hu5RhTHvyHGA6oxRbrr3m/d9iW4zwDoka1CtbcAm1XqQRF0iCdeQcxhXuTIhPTLqIr6EuhETNsr1VpP02ym4ozOGmAQltOaN7zdx3na4ugPQazP4DQNzg3BR+qgTEFMD10DTaHmHyyotdWVeZxafRFzqaq8hvYcRru0Zdh39PdtlOKOv1a1h/N3cJGzSkdvPOsxtxKqut4dn9SvLUqhroxageR8XsDEEOwvz5nVMmSOSYmRMNjJmdEWJ3NtYNrLEbQZ1g/25EbqVPbK/uxqHyzwpYgQE78nqJInWyqZoAjhUHa9kCVeUCD3r9Ivok7AN6rPWCnqbSbjWxzZFCcT7HPtpt2z7lrAjDiOZ8nyjrcU+ql/fl+NNfMWdFJWqVzw1dEbdtkc9Y4HrIbPQHIOxnBnkmmIGi1X6aPEu6SL+Z0kWRfSRHts00moOLGeL6kJYiDHZyHEfphiiD1PUXk/ApgaHnlVZSiwhoFUIDWK2NxJzx3eFlE36pqkaCoVStZIiqD6SY+S0zozpTAqR/bh3KZkuN4O9Z8wI9l4oGyeg7ow971T7uXG8Y8xHUtgxxjv7PX4/VayJ8/apaBOv5QZifoaqUtpyM6J+dVWPI0OezLFIYi0rtRqBQTwq3SRg8AGHre9vOwBLXfnizWvWonz6+Y+4Oz7juLvj2d0zi+RPK3W1Ucmi7dohHyJ5EPKws0M67M145UipE6HANC2UYpOJm46oCDmBWEELoaJ1Yl0/88ZcM9TPjw/84V/8o5wuJ8oqHPLHfPbmc37w6Q9RKms00dV5apwvlSEHkn+tOtlkA2TF5kSFdcWar2dUhXmZjPJcfQz4ahI987yiVegSdpKaEcDQ7bn3DFlSJEULAnIaiGHnCiOmbp+HCFTGQb0/Sehq+Bsgq7aTDPZplGoQYHUhXmkNlQKsSLMzR9pRQ2JeC0/TwlpXXl8+57J6e0MzodYcTJU+tEDFenKsvaMSQrEGeTqiIhQBWf0r/kZjHAliIz8kXtEU7cLMblCbIw2PjzM/+vQLSqksk0LJjPGOl/fRsqvXX1DLZEzE1p2pBXfjkNnvdhyGkQ8fXnIYd7y8e8bD4ehNr8H7Xbuhv9qmTczWJYnMmRlpQuJATHdc1V0SWk1ftNbKPF1Y14VpOpvyP+aRo0TyMNjgwpzZ7XekbL2WKaV+gM05L5UyFdZpMrp5KSAwHHbEnElDtsBUrg3cZe3lgxVCIaVIHg8us2RZVKtQl0KbC8ubE3Va0HLTwP4l1lfaSW15wTVpuq53or4b3G0LxoWtzbtnT6ouY9LTq5vfhY+cCN5n43jvlYJuTWuqwTB6f41aluulOF4esB4h0av+Q2/W7uQKbdfL25xUMMMNXt9SKA20WLQ6rQtV7cCV1mx4WgqoJs+uXDIGH6OOKSeYDJLRmbtqAoSNARklksNI8nqXF/YcNuxd/37/6JE1KIkgBgBJi0jzicgS3TH2xuXAOMzEuLAsQHGiSryyzkTEnYU/Ej/ItTbKUkjpwmU6c5lOjHnwVgKDtmqpaLPZWTG4RpkoQaxuIJ4hgbAILD5XqNRKV+VoatFna2rk+h6ta6HWidYKuHbamEceDg8cxjte3L3kdLpwOk9QjcHXitIC3ldiFPhWTfVgGwwn9pwQ25o1NMtCmtUzSy10hW0bYmejvNvq4zbcfgatrkLuuY2A9uy609bx/qCYtoZw4++L11j8OdwEDFtaItdsQjHoN95kVaZx6IKu2EDE3ITQGtM683g+sdbCZbmw1LmnOQQCUY351wJoC8YAbT3XNKhafvzg+9mzRMxhvGADBLuye/M6ZQhef1PLPK35unA6TQajtoxoJIWB3ShG4Ahvt/eqWn0vmqPv/Wljtr6o47BnN9jYFIJsZ/x6+26vXW6YfH6f3VFtahybPl+H2eoG7Vnzrinug/XKdYgz5exj4JOLwDqhxqOVXq/tqhJlWWilELLBezaby5UobggWtfcDBCPQSIjWEOwMSQgWdBSrddV5pU7L9n5/XJfyd1pfcSfVDYNjpJtruIHugN/JUdmS7cZ3kVntlsHn4BgV7PqrbISBC136ntKmlGaZFNGdlAQ3Oo1QC6VVg5xUvf5jpImuVN5FQWliEWpXrAz2/a3vqA2DscPRYZmmFnW3NrOWSgrGPjT4YXSh1WvfYE84m4/NVpqLpDaC5E3MMwUbr24yMQ6zuRDrFdt3h4W6UekIXXcy0SNac+6ijZwMskRgrDtiDVjh1Tv2Q90eVXf00eEuU2f2+xYbccwQGpWV2qxxWDQQ0kACynJhXVaqVuq8EIqQxmekfOfMSXMQa1mZSqFWZUhPW0ZcW2PwSapRBJXiDcgjMX2EaEXrgrYCDepcCA2+/fVv8ezhOS+fv2C3G5mWidePr7ksM3lZGeaFpTYkJIZUqFQzvmJBkdX6slPJg8tUsc1VKmV1ivBizZF1NCvsgqytiMMq1orR7bbBlpEUs9UsUiBFwYZ1+vyuYFJhMTSbnxXtKfR9s6GAameuj3QrFZZix0dKwXq6FNNxM2p3kMA0rzxeJmNBtoqHBBYESKMlk9QpBGadDGpv3pAaEmtI1qDqRIMOOQo+pbkLMXMlRnWY0TZVBTGjWYrBr+uiHIY7ZAgchmfktDMyxSpM84WUEm8eX/N0fs2bxxkEY8iFwHG342F/5Lg78Pxwz3HcsxuGLdi82p13nRNyDbquyjZienwhE8LYH5rVmLXZJOVl2TT5lnXZJI9EhJwHm8k2Dgxjnw9l1PHubFSVslS0NpbLxHKeKKsplxAwiaRsTi12hf+O1GlD/AzE5ON8UiLG7L/bWId1XlgfJ+qyorX3RzpcyJdbX2knJRRkaxYMNLUiqNlsh/66QdYfc1T+j7a54xaRheDstOj4dj+OTX3+oBfkY0RjpHqdqjWLYlsTn9gQCNp8LEgjrBNhnW0SaQ/Ek5jGWTOVCm0gofl4kSuu3hPChm8OhCDJ4ZfQFWVsLHwDrQWtEyEElrqQYuQw7tkPe4IIOV2xZUHMcLeZTbNPKzkqOY9EEYaQGKNN+bxtit4otwRzWJ78C1vSSKf+Gu3YvsPujRrDUQwvL22m1IRIJQRnTjFvUfpmFVuX6rGsFe9VzfsBYqMxG5twLYSQXS8sWmY0PxlmX86IVI73B9IwWn9aM6bcsk5Mlwt1XcnBRlysq8NqEp1BF4jHRBgjsCfyAaEpVV/T9IzWmbqcCAF+37d+kTgkfvuTj7i/v+f142v+8T/53/ji6YkwL4TLTE4FVZszVGSlymoZh0elSQaiZIwR58Mn10qpldXn+izLTFsC1B20BfWgw0bD+GDCLj0FPqG9qwAM5BxtdpTXODrhAvH2AWluSJu7EQ+S9NqmXXvC1mBZcaKHQbzqKvSqyjpZO8BSGtPs85+S9dek0MhR0QCVAlFZGp5xRtraiJJIIXoQFcjRG4K9zhdDImdcI84cbZNuEp0uXXtGtjoRpVBLI0rmbnxGTgMfvvgmx90D4o7ifDmhonz2xSd8/KnyeP4CBHZDJsXE/f7Ai+MDd7s9H9w95zDufCy136CfRjWXnqUGw9lvHFkMIyHusQGG9txbs57Hsq4sszH5punMskz0toUYzDmZcOzIsBtMBmk05Yf+xLQpdS7UtbKcLkynE+psYAny7qTdGC2Db82FYyvIigS1puBk5AyD+VxRogr1Ulhe2xRgLTb/TLHhs/WdTPJ3Xl9xJ9U/3xTvPJe+rbFvf/hpuKD2r3Sqt2wZkGzFKLVUvXm2xU0k6aw28BQb169yHE/UnEiXD6E1okM6Xa5NxVGW4MV9fw8bTKjXjKT3E3Wq+PU5q6Eq4vBfNZ2zEkz8cpFCYDUdtRacidSHRlYnGDhhQBvRZZU2mR61OFekGI699U51/EI2rP16v3/KA7v9Ws8Gf+KJmoNu+mPP9B0ZAb8f/Xtb5en8ltdvdrAKg+zJcWQ/PieHaHJAtTmb037Xular4SBXQUz6mJbe2Ol/Vwt0pjITBPKa/eAqrZmoqcSu/tGQNmBjYkwnMMWBu8MdtTVePDynlELK0fdMcIHXRg0rTcq1DyWIidn2gMCze9sXgZxGnj+8opSV82lhnlaW9cJaJofGZEPmNFz3+k0M5BvMyB/ap6d6kzA3QQewwa2dVIM0tDhluvfsBCF6g/GmRSnXc2XCp80Fg6/9S+riywY2GNu1oZ5ZG0ZXS/K+QvUpB9YkGsQL+T2D96yuNgi1Z1FdLLnD0RvFx9ALAinkjeyS40iKmRAHYhyptbDf7dnvDuzGHcMwAOpSUJExDezzyJj6yPXOhrq51TeZktkaPzOdKMEV4usq55tSg7IRHGrt9fDeZO+2SKz2FW4VJVLc9PXMhtgNuvZV2e9q1RTSrS6GEyWuP6NujLaRLOHakxejy0j17y3+fEvxOqNuN8Hsnek5fpn1FXdS0Ws6FXGU2g5wpKlN4Q03NrOz4jZjt2VU4NUgeil2mzulajdTnYUlxqYKPvqDYHh+c6PSmhqNtqzcTuccJNDSaBT1ZbK+hlqItVKDRbaKoNEP+saKwmV84FYE1FTa+563JuCyer+CS46E0CiLOdE5KSlaM2mOPnztMDCORp9fykwfyNdaRUfY5QMxRtZ6YS6DH5zZXrRFh4ySwyq4qnvPbG+MKd0m/th/2lmGV0do/THFC9PF4c0+DrnXpPzAoq5ssTJdVv7Z//m/8Ou/nnj18HW++eo73B2e8d1f+KM8f/iQta1cFnsmKWaCwOPjQqmfkmJkN+5s4m8auMsjOUYOQyYGYciRJoHL5S0/+Px71LZwKCO7ORHjjjHdE0Ni3B/J+TlSC6Hcmf7c6Yn5dEZl4Jtf+xavXsw8jAdO50c+ef053//sE9a6cJ6fqG11bF+NhSURjYGqNgU4RCUPBg0JVpj+4NmH/OF/608RJPJbv/09Pv30U16//YTL901b0GqX1rYg6Fb0lM3ouVp7uyC1oM16x5BKckahXCM5arPhF1oTrdm8mj6ZOqeRGLMNWBybM8hGRAx6SzHZ988TdVqordLKwkbooNpwXpvXx4p4gGcDQY2laIMFU4ysDkGX6NO0ffxD8wm3QQI2scSataeLZU0hZiSaIkRMZtgHGckxc7+74+XdK3Ic2O3uSXFHzgN52JNC4MOXX2PImaYr5+kRtDIEE9H94P4533j+oc34ymnL8h1uYLuJWyAnSOgjOjx8CMlVJSIx7g3q0wjNxgat60pdC/N04Xx+8hlR3g8VTZcvpbgpSuwOO3a70YIel8hqazXm4rIyP52pa2G5XFjnmZgjw35HiNEzIxODNbJfc/mxikgjRnW6+UDKAyYca3Tz5e2ZOq2U80RbXGneLWwR+1h/PGH4HdZX2km9C98pIq7u3Yt7mPd/J8D3MOudIN/rIh3y665KwKnpwf+9R/W60SdNdgnvwbH+kaaV4POkmmPEiuH9tfSMC+sz8OyihSst3qDLa+RhJTHL0IwO64aqNwRiWHyHMVpR2qrmxNSMXqtQovVylGQTV2MWUmKblaXafLR0pabeA1IdDvSBgMHVEDTb4aEXzj2b0qtB227vuzf73c8b/Gmh2qaM4YSAK0HhBiq5+RVG2GiU1nj99my1oRXGcKCshWWd6GNHSm3+TC1DWZeGMpFTNqp8CgSHLVKwWpxRajMqiSkEzsUm/JILGjJDbGRJCJkQ7myuTjSFCi0ra3timgvDENnvj+yGkfCysB7vKK3x2ds3KEqdK2tZzCg3vWbNvUrToTTRLSsJktnt7vno1c+TYuZ8WlmmxrxcEBImm9TbAd5Na7d+Nm8sv9K3C6rF93r7sUcpDh/aZ1MQwGeiWeDSYkRTICUIqt6L48wfHRwObGjFmoWbj5BXqx9pAKJnUy4Qbz1dBk9UNeZfZ++FoB4oOTdB+rUZzNarYeuiTFOhNYhZCMkygEGCM3cDKSRyHNgPe1IcSCEboSQkcoy0lNmPe0pdPJvao62QxVCLLiTbad7dMfVM0R7DrcOSDe7rjqrLYBm8Z053y4a7qkStrgW5Ot28lwBcJy/2DCptmVRXdAfPxooRiupaXFHCBnKigdCFlnvtCr1px3AExUW0Q8BfL5nKjYtot6VQ54XmyunqaFCfadcd1pdZX2kn9fapcUdkyPJOxiy4XD59+F/fENDt6Yb+9dX/8g4+aISArkIdpFojqCotGr7eMXhwSFkFTclprQ0pjpWLqSxITKQ8uuS917OwSQ22oRM2T6cbbFcLUHM01Yu+0vtTnDzVKiwXc1BaQV1ZfaH6PVHAWW3J0vTLqbHb9dHOpjvWqnWv12VB2luGNJB1b98SEjENBkfoBFE8St7xk2zJHiS8K+ti3HSDUfvQuVK92bfNnkV15pof6nbtkekqGJ1ZZZ8dplCDnB6fnvit5dd5c/eal8+/wbquUI11F7CG6T7SQvocMCJIJucd47gz55RdNNj3T2iQl4YujbWeqKfGcX/HQxxIVMrjx9STZWNj2iOtMRQzAGEVmkeyd4fnsH9GyDtePHvJaXrin3/8z3k8P7pafOGwP/Lz3/wOh92R2jKtZc84qrFAdY+w48WzD/i5r3+XIQ0M+Rnf+Pob/q/f+Cd88ukPCac3LPVErTN9ErV0KjlstQ1t1RinMRBCc6gOC0LUgjQzKxFhsHPVIrW4Onu11EfFmHSBTA57Ykjs8guGeCTGTM4jKOw5s+4WpuWRt5fPabo6pFUYx8zhkD2xMBcTohH0UHWmppLCQHbGW5KdS0CNBBloCqez7ZWgC6KVWpR5Moc9NIhNkSESw0iOgcMwsk97xpRordjAd1lRFWoNNB0IAe7v7khD5M3jZxx2O1Qru6gkgZ0P9ZN4NUZ6kyW9A/l1p9GjYbFmyD4bSiSZc3dGYx/1sswT6zKzLjO1FC9LWEkh5eEdVfOU88a2A6G5LJiN3lgp88x8PlFXI7Tk3ejEiuj9oL0nj03h38gv1iQ8DKN9L8kyvaVRJuuFKpeZellopXowKY53WSuJ9D6IL7G+0k7qzVMjZY/WQu+TUrrRMomWTKcR9zbMXle6Oqqetdxgg9vusajTJrJaxLlNwNVm54jel2FGNYdEiuK0bmu8LMWglRAEyWaoJQRqNQgie71Mg8vToK65p8yluGKAIsU3S7Xso1Voi/VczWdl64NsfnmlOMW00VqwbChWJMD+sTKOmZiUYe8iuLWhVVmHmbo2GzWQ9mbc00Buex/vUDHNw5EYVswBDteIbdOj60X2jtHrFbqrlVIWSp2NONEWmq5miNHNMbVmWoTGHjMnZbT/5lGkRQnRBUIfHx95PX3G3fEZH778JmVdeX73ipf3XydIIPbYVGQLNERsrEROe/a7o8Fc0bLC4LIzsUFelDZX5vOJVWfSQyPe3RMprGdzCOPuOcP915EGQ1mRUqgaWIGYEnfHl4w58+EHHxJD4fXTGzQ0fvT6My7zhfM08eLhBX/w5/8Qz+9fsNaRtWZKqVxmg4pzPpDzjof7F3z7G99lyCMfvPpFllLIw4H/7Z/8L1RNyNxYvOfF2Ho37M6mpuZdQbTQopFqUg5+VvwZ+t6252dOqrVILQFtCerBYN4YIUZzUnJHjgN3+Wsc8gtiygzjHoA1X6h14fH8I9ZmQr0hGGnmcNjxcHcEoKwLrVViCsRsI3QmPVEp5LAjB4fFwsEo0rJHwkhdC6fTmVL8cPTeugK9ZpLd0aVghJXDMHCX94SQTZmjgbAQA9QYUVeUuTvesz8c+Pz1D9nv99AKxyzk4KLByUVhez/UTyFLdJLEtbm3w342diOGHfQ5UURaWzdViXm6sCzT9ncRtrlOeeiqEmlj9CUPmM0GVFpVio/fWKeJ+XSilsJ43JN345YV9flQ3Um16tJPoSCyEmJkGEermWFZVFsq5TzTlkI5z0Y31+sWKhLspBpVmY3L8rusr7STshk5SopKjJDBcXClN+d2wAA8qr/1Q/0P2w4yR9FFYa/rJmWXa4YlYCM5dKNc3P6aLf0WoIVoY9C1F+i7eoVzEx3OaiGiErZiqHZoD/F+l/4GzNhrU2rdWMcGvTS12rcavKjNndoNo16CsgZFtNqgQSx61m1crpJic9mVlVIXEHGKqXgKB00K9EhYYBsWF7yfozsl6TWod2G9Tsy4nQLcEb7bh6AOJaorY1hnfZ9p1bNLIwrUauMV1lKZ5onLdOa4K6a8LWIQqOJK3Mkgut5ECQZPCAQHJdbFZGLW1X5HShmGO7Ls2B8eGMYjKVqTda2ZPOwJaTAmb0qEFNHkPSQpEdNIyAMxNFKsjLvKi4cPgMBlXjjPMw/HBw67Z4zjHbntqDpSaiWmgdaUnHekNLDfmeJ413rsav0pDqQ4mPEPkU1FJdgGvWW99gy1ta4iIL6nb8Y3ANquPTJaxf6uRjcWDdbEXdVpyr3/qFoTd4PYXLhXrKYRojAMpnKRUiBIY5d3DGlERMgho6rmpJJNMo5iLQE57shxRwiJlI7WR+SadvOyss6whpVlXlnrugVGOLkgxUiOiSEMDJKJ0jXp+ns3YgHq8Lf3QtZNad0YvgRI0WpSIhZEBYXmMlZXI9PP7S3EJ9d/u+mF6iNDLB5rm2ZocaJE1+WzX+HCscGJEk6WCPEqANsfWh9i2DaIz1sdeg1vG6kh1+fsgaG1jnid0TOtPkdLmwfMpdLmdYP4tth/s5YO8TlUu7Hbfpf1lXZSj1ODUDlfGkMW7u4iOULOgZQ6+dk2lHo/VR8eB0K4LQrfHNqfTg3s/T4uVEtwGnbZBGL7CHltZuwlCGPygxYCpdpBW1Yr4OdoTsrmF0UUWGqhuOJFbXVrOgQjVQQ1fLgWgwCLTe6grrBMjbqqs/vMWfnZ8mtyqqu4KsBUmIPPW/IJodFll/LQWKfCMCr3xxNDVvKwM8mc4JpvQUAKVWZ3Tj7XKljzMGIkFm8Ko8MH1Z1TazYFuGrxuUGLqx10I9c/XNFdlVKMfbj60MnojCwDea1PqxalFmGaK5998Tmqgf3uOXHIJl20ztCU8bBnd7hDQiRmI4bY714M5nXG3ePTW06XE9pm0m4k7QcOD88YD0eOux0v7h/8+ZrWncSMpD2tVVJZ0CxGGoiZkDLj3Uty3nkw1Tjm5/zh746UdWJalGlRUh54dv/CCuH5SEx7G5GxLljvWyAGIeWBNAhK4bI88fh0YlknxvHIfj+x1DesOjmk22dkOWTaoJWKBijSiTjmLGK0cSn2DANUGwFTvXG8LkJdsw9JNBizroo208FcVwsOz/KWtU0k3VHCAyKByIqESh6Uh/sjIo39EOzspoGcDb4bkkGG4gK7qm1js+W4J8UdKY7sD8+Jcdgc8fly4TB8wjRN/PCHn/D0xtoxcrJRFbtxx3G/4zjueZZekGNiJztin3DrFOvCDFgNLMaMopzWR5a60OrKcTdixAkl+muvxZiZihBU3aB3WM9HpgQv5uCIgwQjScQ9QTJdT7DWSi2NZZmZLmcjf8xn1mW2eMOZfJuixGHHbj+60rnTzdVrREVZp5W2VqanM9PjI4oSh0QkmwrL0JGQ6K/fKKUzKxdE1NQq8uhC0AOoUBdFS2V9mpi/eERrM1UJjMVXPYNqG2Htyzmnvr7STqo2ZSlmjJXArljBOabrTfApPVgI2VMJW7dxzrtf/ElHJdv/N265hRkSEB9gJz3671Gr9r4rIWjsc0kRKVgm1UkQAYmmzBBohGa99Jv/9JeVLqfuX+yjPVonTNSbP696dU4dimzX4E3ARGbl6qRFbNZP1wxcktGIy1qsqB+jKStI9FS9X49NkjVhaasjWEd7J7DIVvexOhVbFoVnRhvN3SN7+0GLtnpE16M6U1iwgWyIFegtQbQfbNXvSzNdv8t0ZlmXLa/e9kYIlkV14yH2M9YIrFiKauOzl2lGQjE6bxJ2h3sO98/Y54FhPFrW3AZ7DxJpwVSCQ86EmpCQkZQJMRPTQMij3yclhcSzuxdoW5jXwLQY7X0YjGU1DAfycKBpI2WbIJ160TpEh1/N6Zeyok2tQbdnUpuMlfOzt5xfN0KGzRtjK3JvVHMwQ+eR/VV3UFwnMFyFe5tVzXqRvTWM6KAKTVjb7LqP1fZ5UIacEVF2Q2RI1oSbkl33bjz6ewguutobjZUU9qS4J6WB4/GlOymL+INknvYnAkb9x6HLnuWnEMkpkWMmi31Eous9+t4ErmNJTG+uaTP1+erq7DGCQpRK8Dva1DMIp7p35qtwzaD63b/C4ldVCVxRwmq2jjBUUz/ZrqNVc1BOEX+Hbn6rzyfhenZ80GAtjebjPESEkKOjCPEm87o9c+r71KHiKNskXms5sD3TuqrEulrDXP89XEkS6md6O958ufWVdlJLVWK1Tve6NOQEKQqHEhgHIUUYhuj2xxvQti3YI3RLyzfb30spqtfUtC/Z/uebHqdneKdW8FHtrlwh7kSEDgdcFRs6vGYvYW2FaN8MShClK2NtDtEZfbbJK9eGX4fQbth9WvrmvL4fuIrIdn+q7745WrXalFZMrqfA27crSOBwiEiYSd7Jvk307AZerAm0TwdFjKJu8EWgO6nijsd0+lbQ6o2X3fiZkezkPnM6SqsGU2izWqA06yPpzaVXYxkQIrUqn33+KafTEyntGIYd47Djfv/AkAZqzLToRIB+iGpDarWR8vsD0XXdUhy2aDWlwMPdHYfjwYc/jiiBkEZTB9keSyINR7s/Tj8L0SLRlMYr9CnJmlnbSL6BiD25tRqay3WlYey71+CkrvkGDDFzGHbc7Y88v3+OoFyWz1jK2RUy4MrG7KuD4v5MGqy1meNfC6GaqGnAoMC6BloT6iK0FYIoKXlPoW8jEbv2FGE3RsYxU9vCZfoBInAcRsaYSQGGNBBEGHMkhWB1z7wjxsR+Z3WtmDM5Db6fvGE1jqQ4EmJmHO99VL299n64Z4w71nXmMN7x6vkHzMvMm8c3NG2MQ2ZMiSFGcoikd2A+b4nAoVCEdZ04ncwBnZcn1rpSpsnmZ2l1RMX2f2Gx7FI80+m7MwSS94xcCX7Rm3Uj4srmfWK0ukNc15V5npgvJ6N/N1NhTymZqkQyxf48ZFOXGLJnw50sUamLsfiW85myWCBjCKOQcvaZT+Z4tOEj4BUbYFgJUV0aSUhp8PlQzuYrjXKaKZeFepmtFo7xQm2Qp310ApRvXiuThC/npr7yTipUpSGszZoEY+id58b6G3J4hynUb6EZJWPP9BuH0EvFtrqjAjaLvjkqS5Ws7cSypyq3XsFeKvj4kBhcNd2npaqnSSrQWjHdMu+O97i1B/dXZyRiE2a7g9vei9O2mzkVLVafere20w2JR89yvVS9YdqoTyjWZq/RivL4WGgaqDWyGxdaivZ+SFt0aE6q+Huq0K6K7FZwN7i1KZu+YK0Lrdl02T7lc109q/JMSPusmqYWRa6r1fSqONRkzbIC72RgIpFWG1988ZkjLIkQE8f9Pd/86Pdx3N+jcUDjCFzZS8s0sU4Th3FH+sB6YhSrxQ1D4O6YyTlydzxyOOyhJSgjEKxonoIVmUuBYCQGg1IbKtWd1EBMI33su7ZGTYq0QgqmoIA2xPdEH18ZQkTi4Hpzdp82pFrNSbWhcdwdeDg+Q1vj9dOB82RO1ISHwJxyFwWWdz4bpNprD6b+EUiGQzShrtFqV0ugraARcjTDuaEOIu6khN0Y2e8z52ni8vQxaGMMLxnjkRgyu2G/9VAFCeQ8Mo47+7fxQE6jBRfjwUgvvp9iNKUMkURKI30opO21yov7B7RV7vb3vHrxAa/fvOb/+l5hWRfGnBlSYkiJJIEkckN80quTcuRlWZVltdrUtJxNjmpeTP+JtpFaG5VVIfhzMVjcbETQSMxs9R67UcFHbySCDHZGtqCssS5GmFjmiXk+m3INdt5iTOTRlCSGcTAnNQzknP01DA7pRImyLMxnU1KxLOqKJESfzBskUMGb3j2ol2LqE8kadlMyVQltXVVCWU8T5emyMfnAGnUVNkZfJ0ugbnI76fpLrK+0k6rVYJ/qsi9FjEiwFphXc0R5EVKA6M2vwIZS4ZReW54adyhs+9buqK5f6ff2KiNrPR6WXbmuXTBigYYr86//fPSR7a3L/kuXZ/Lv8CgsegZYgxIxbPnaLn/9pd2J9VpY/6fbqwa2LMr+vL2JKxwIFu30vqpixnGeKjEWci5M00rNjZisnhajmvSL4tChsyCl3ymrudlcH6trFB+dUX2sgDmjq1BqWatT7r12VdtW9FW3CxaVbQ/SoYT+4RlKd/QKpRbm5UJOGaPQ2rNvtdhhjda7JjkRW2LMESer2e4QIUVxCVlrmK6rqW+IXvuvOjRLz3hDtOF8Ujch0qYFabOZL+3DOL15PEbD8ZyOJlpRnRx/y6jNa7lN6v1hG8FgGDKH44EPXr0ij4nPn36b0/SG0qCVCx3KEW/QM8jV5p3pJunlkW9v3UDBMzkJllXZEF9nvXrLx5AyaUgc9yPPHh7YjSPPnz3neDxwnk/eelEZY/I5bNERBmsujxJMADh2vThn7UofTXj9D4ewJFTr7xFDI4z8oA7hBsbhwN3BSCEfvDixrDO7BEOQG8FlD/duIC5Vp1t1EkWHmYvtGdpND9n2PbbnO2GEpkaCEgsOaq0+EcH6rwLX8RtXmM1QCFOUWCnr4mowftaDqaDEZBN2Y0qkTsrpc6gcbrSao6EPdTVFiVaNESg3sKA975v3vqE66jVoeUfzDzWCTO0kiWL6f7QrVc3sm6tbdNHim3johvj4u66vtJNaJytS1mS1n4Y3802NeYWcLDJPUbg7BHZj9GJ1v40FMWIwqq6NxRU+6aM/uK2T9ERpC2GvShXR77qEsjFigrhz8HlB1h9h0EVpNmLclNf9QLbg6bAQxWR3hEKVBm1hrRd3VE6/9o0EVoeqs24O6tah/rR1W+tRlwTCa0mtVdZWzLGHwGVqLN4gPAyR2ir7nUEO42jFLkU3jTgTm2UT4G0aac16wvoU99JW08xrhdXZRvM0M10uN4GXvae6OpzptbZuQBW5KktvfluxURrWtIwI8zzz9vELjFV2YdjtEZlZlgs5Ddzf7UkpoUOEQyKnzG4fSL2QqJCjMkgzrcXLxGVthDSSx2TDIgnmoAOQBDQi2ud6VSQYiae0J0o7E8JIDAffT05EiYmWkk1nrhNaJ7Se0SVCHN3pZlMmEGumRgz63e0z427k6+HraPp3eXx6w7m8ZqkT5+k15enJGJG9ztfMmAHUYvcp5d4qEEBN1DQEJYYZ9R4o9T6XqiDSaLIgIhwOI8/uD7x8/gG//zvf5Xi449Wrb/Pw8Ip5WXh7ObGuM68//03O588QrQg2JSA7RDXmzH63NxHZHCxQCHqVvzN/DH3el1i/nUjwNvgOqR4IEnn2MHJ/94qXy8yLF1+nrDNPbz7mcvqCqNaMUJWNLafqQzyx/sT+91pMcX718RhaqgkNq6CtuNpNMGcpPTgTyyO0bv2QEgz+DGEAGQlimZSpSlgv0zLPlFq4XE7M04Var7Odkgu+DruRcb8n5WgQdM6bFJM2y560KvNpYn6yDGqdLtRSGPY78m5Hn9grEmgN1lU9YPQhjtEy6TxEduPeqPUt02qkXGbmN2djCl5mc1Z6hfmKuDZfP8h+ZF0hiyhGvvoy6yvtpCzyVpo7k6pmKEvzjQwsq0sGWQ0cCd4425l9wNX/v5vNvLO2tGTD/G6o6v2bg/+uTj8V+vhqY7/6xnVsWjRstYYevVqNx1UuXDw3eHYi/QK3TAo6jn77T6I37uk204AtIrv9/u3vG2Dsf/dx6+vakFC3eUXQWEsmFYvsUrPmy+b3SL2ALWwXY4QEp5dX9Tqi1i2Tsk56i1RrdfjS93BX0qBnUT3ru8mk3k0Z+/coqhYp1lqtCXI1iLGpZSlBDS4NwQrqkhIS20Yp3yDY4AoeDsWqZ30S2rZ/tn3UvbMPy5PQ6cIGOTcniYhkz9M9OxBBO/PLxVzxLEV9VLP44ECxVMbfrMN+0dK4cRx5eHiwXrj9kWHYsZQOA/X943+8NSBYIrdlUb3ILyDBa6xmhwkBmkstiY9rGXLgsB857nfcH+84Hu65v3vOw91L5rUQ8pF1mZnOn7MsJ9DFskUsewu4YkIfCyHXByv0put+r734IQJS3tWNRNBkZyDFjLj0UW2Nso6sly9YL9Hg4v7+/b50ooB6NtIHU9Zat6xeHc2Q7an3waE9QzWRNmsb6X181jcZ6DWv63mnZydqda9aq9PO6ztj4DcIMbxLlrD5TdcxGhajOSW8VNPnq9ayoY71G+Em3NieTnjxe9tRCM+Yg5MrtppxbbTFGne1tivxxmE+g/ukJ/l2WZ3Q2GuLXzKV+ko7qfPTBVUYxmwyNGp6XEShRdebkmYRDzDNSs5w2Dm84MjKlaree6t8htCWLuk7vujHjfm7jspZbv67xJW/7YudxTOguMBiNaOUxeougUpzfcDWrL626aepOOzQWX1QFljPUBdsQ8hVlfqdpdfLhQ5p3BzKW28m4rOuBGlGSplbIUbl7VNjWCIhNdaSGMeB0qpBP73SL71TTzFFCKV6oKB4MKGgmLMupXA+W/PlPBXq4sQJNxZt0a0RUzTbZTrquR0kYRt30N+HRWyW4SzzwuvXX1DWhd/8zd/gzes3vHr5LT784EjEJ9GqchhHDsOeZV15/fSG2irHPLDPiRYCbbAieIjjZjBiMkJLwCAe55JZYJEGNGZUF2fOqcEiqkh0qj7CpgGkwftjxGQWYka68GtdafMTSKblEaKRDmKM7lBshRgZhz1lV3n28AEvX3wdpfD56++5qGiz5m51ogpbYkpKIFhWk0I2KCkIMTrzLRSUSoyVnA06SknJKfKdb37I7/vmL3I8PufrH3ydYTyyHx8QOZBiZZczkZnD+CF1J7R2odY3QCPpFTxvazOSiVY0KKHOrNWuK0rXkPSmWUDW6x62bCVR1wWRSMoHYtqxLDPz6YlSFtqiiA6guO5g3agz6gGUNofnmrU9lNWZfq6GUrXa1AFtNqpdC0kjqtGDULxOZ/Wu2popLQQL+JBKVkNXJEAphVadbj6dqbWYqkQthgi4M7Im3YHdbmTcDdt4+GvDrul2rtNCXSvz+cL09ASoqZoPyckScQuMzdb0DLKArCDWBpHzaJJHGqGYqnldnSxxntBSrZ8MC5VKh4o3whbX2pPvsSCGOsV/Ic5zXV9pJzVfJjugsOlTBT9MDVy52komrTXmqOxG02RLqfcfgbmUejXUOGNM7faEHoECHlhe4bGf6qgcQRc16Mt/50Y1FaPFbqp3vT4QDMKzibm4FW4Ihe5Kmxd2jWJtMM06qfEU1Hu/pEMi/d29u951UGyO6vrdhutH3111NbWLOTZOp8KyBoax0UiUVrwNynByo7Fas6bSrO6k3gRZq2dSDqmGTAiZZSlcTpMZg8UakE3B2iNaIwAa3BF9y3pka8/DPNKV+Xgt4hvuL5Rl5bFMrMvCD37wA57enhjTAx+9aiYVpUpoyj4PPD/ueXt+4vTpE9MyE/d3jO1AS8F64qKS1OuGXus0ndAeYdtzVgSiKaS3qsZkdIal3W4jc/SsxYqYsjkplYiGBM2nALcVbReU1bNEXGPNDQ7WGxhCYBis+ffu+JxnD684T69t/7QuneUwlqMP3YBo7S2aRmbIMXmdyFo4NNoIEI0NTaZZl3NgzImf+/AFf+Dnf55huOd4/4qQ9oThDmQkhkZOGWFgN7xgHaC2J1ab2unyRcWgp6LYbDA7xFVAqtWZVEymTHomgFqWeQ0d7fmHCSSiO1CNlGVhmS6mYlHU6oTaaFq2c2Gq7XhG09sRulZe9ZzJldS3c1pdQ8+lvKgEjVvfoUvDYKShgogSo81MC9K2rNVqsTYjalkmajEWXqvVMyXre8p5IPuMqGGwvq9rLcqebV2bkyVW1svEcj4RUmQ8HmyIYU4b3bw7qdq8EVwqhEIISko78mBCxmhAq81Jq3OXPZqvs7kcY6genGmTdw2P7y/x+rtV4v4NcFImN1QIq00sDUGspuMOAUeIVCA6FTwUuMyNVOym5mTZVLyBF3QLA67zT7oB2G6rcA3l7cc2B9b/b18yJ2qCkX5dW4Z2A/NtcaT/ixcNrIFx3TTdtHrRfrEG3rbY5EuttxDgj9+p6xe6u5Wf9m3bt9+oXeBZyjbgEKCx1oqpIQXCYvOPomdUzmywO9mKR6DNGXTO2ru5trIWymIRfl2gbvR5M95DHIg5UVtl7YrKHadyxEtxy9Lb2PqT6liDH5AYAjkODGnkuL/j+cMHpmKvsKwrlyWRpshUKjnvQCJD3pGzTfEddoNBLeOeOOwJKbuiQ7gGMP1eb5Qxu4c22VeArqzRHVZD2oyJrXbJrYqStu0iPkrC/FvzLFM9YRVv1PYQQ2wO1pAzDw8PvPrgQ06XTxnyzhmSzdU9boRDHZat1Zo4QwjbtV33TYcmTZ8wjQNDTNzt9ozDyN3ujhxsiKI40+5aTQpEE4BkNx5orbHMSquP1uTZVkciG4TCbQOxhj7g0hiSzYMK6Yr7myPwvS7Rzpso63qhNGVZZpb14sMiF6or7PeaHDcn/NoC0TaGqT3UfnI8+2w3ZAu/P83vWa3NzUO3zs2gP0d1NsJCswnDtRaKw3LdOVnAczNQMNmk3F6XCr1R2Pd6q7qJxpZloSyWvW+CsRtRImx2pz9/e87diUaH+HxcvCuJaFXqslIuiyubX+9cD3OvihJXA6LB7ltwByX9vN7WGv4F6/92J/Wrv/qr/J2/83f4p//0n7Lf7/kP/oP/gL/21/4af/AP/sHte6Zp4j//z/9z/ubf/JvM88yf+TN/hv/2v/1v+eijj/6lXquWxjItlNWaLFutBnXsBnTI1CC0bIXfhrAGYalGKU1BuFsDu1EYsnDYb+14mPZfn+op9GGKBqXZjd0gcP0xqGzzVOJGPbmht6GB21FS5UpQVSdsWDS+uTi1sefLemFaJpZl9RHPyvKklFlZnqBOTsqoV8jkx9f1Kx2I/CmO6iajutV/TMGRp2g9H9qEaVaWJsylMlcLEGI2tQqDtHpTaHUjiI0tdyq56QrOtBqcJmvMvbYKbe330w7i3asX3N3f8/j0lk8ef0gpxRQRgkm6NGwgX6MhzdWgtwZWI3EEZ43lNHAY77jbP+NrH/wcv/jtP8CyzPzgB9/nPJ1ZtfJ2WYgi3B2eE0Q4psjOe8MODw9WbB4PyDCyTdDte8I/X++rsUetzGSSPus60epKa6NFr1qQ8gh1sem+ZYGYYXwG8YgwE/CJqWpqJUXceKKokx6IbIog42DKA9/+uV/g4fkzGhf+37/xAiGYdhsrtSllbVuGAMqalWXxHdh6ltFAey+RDb58ON7z7P6Ou+HAN59/k8Nw4BvPv8Eu7whpdJmiRNNofWuqZImkGHj+7EPu7l7w+HZknU+UOtHqTKsrEooxYiWgOqAheTHeGHAt+ICHECEm36/eQK4G+ElISEjQlPP6BUstrGvhfL5YZrSYOveVYebMSndQ/aN2VulWq+kP2SSgqjc3b6XSZtlVaHauQydDhWvoK6GxB1Kynklj3BnMt8xON58u3rBrtaCcM+PBiD27g82xyoONhLdnYhuurZX1vFCWlenp0WjyopsmXx4ywRtxjSxm7Qb23lYIKzFFBidVpLgjkA2xWRptrSxvzqxPZ/fiZkWqWOmi0lmhbBjfRpZAnSxhbFjTEbxmsf+i9eXoFf8S6x/8g3/AX/pLf4l/9I/+Ef/j//g/sq4r/8l/8p9wOp227/nP/rP/jL/7d/8uf/tv/23+wT/4B3z/+9/nz/25P/cv/VrqKarJh5iESP/cqlNGHWvtH6Upa7GPUpVSXPuu3d5gLIrRTuy/Zig/4fs73HS9qnf+sUM/snGP5ObX3UJsnUHYo++GevOejS+vVyr2zTgOrVfqOfTE4ccuVHuMc5NR/dRM+90vqqfu3e9uP682QLAWM3Jlraz9w/H7dTXtvNX/vXi3eymNsvqfV8uMytoskO79XRXwQYFD3pnS+MMzjod779NI16Lru7fwJ5ZypaJHMUe12x047O847I/byIXkg+GaQmlKVVdt6OMOomukpURMJm8kMW1Z1DaYTnqGfM2X302/LVvQPuK9rVBX+9wWKy42IxTg5BkRV6zwXrLN//ZotEO32nv7e4E9Mo4jh92B0RWrxesk71COex9a6/XO3pvm+8qbS1H1XqVoLLxh5DDuudvdcbc/MuQuq3Md2nf7jHpWnoIFCzEYjCS90bNBLwj1LLNrSXZ9uF7X2/7smY62K51+2+DiQxZ9qGdp1eHn63DPK1HCX9OzofZjNduftm74J3Rdyq3Pqmdht4oqW1YtG7Otv+6mLtHqdq8F2TT1omdCXZdPQu9PvDI1zTYY6cKo8lbn3DT5Nn1KuV6/7wGc9WwZvw/j3EgdmOZfaUY3X+vNKHi2pt3NfP2YRbTHcUWJ6Pvu9yqT+nt/7++98/f/4X/4H/ja177Gr/3ar/Ef/Uf/EW/evOG/++/+O/7G3/gb/Mf/8X8MwH//3//3/Nv/9r/NP/pH/4g/9af+1Jd+rVYaTaoV7BssLEZUaDbkLKVo8EwQyIEWrfeoRYiqcIF5hXExhxWjsN+ZEvR1+zWMVOHZlev+9T6g28baW8Rhg/OCRTu2iU13zdQlGs1hB5OzmdHWKGWm1cqyFs6T0V3neWFdK8vUWE6NulgGVS5KcXisB5S3GdP1/9clsiFibKU2+WmZ9xZmOiwg5pRmY3LVYiMJalbqolanyfhwvZ5kmo7eNsmzv46jM5tDaiDFnLdUQavwcPeMn//F73J3d8fv/6U/yM996+f4/g++z//2v/6vPD498sOPf8Cbt68dSOqAUodNldpHlPhrpzByGA98+OxD/vgf/hN8+xu/wNd/7uc53h/YHQckf4d1XbhME9M0uQjtakSIjuZFE4rVlMz+Rt1e+Z1eOrfGti1sH3Ul/Foq5fJIXc+0+RE9/QiAID5uhOtE1o7cIyOEbHswCEK1Zn1d6AKoVofL1mAdnEghV+Zgq6btOM8WlOH59Ab7uYOra2OdjaY+Xxq0QImNFBvjMPL8mc3E+uj5h7x69gH74cDL+xcMaSTngRrUblYckegjXHQFbT7E0sa3G627GHxUqjdqJUva1B2MgIpSpSGhgFrNWYDQCqFnej5jK8UMMSFpJI/PLYjYw6BwPj/yePk+a6ubQwvuMIzgZNu9Nd0gvKaN6g6yuRNC2zadoNc/O4mntkbzdhIkEASqroTQCCGT0sFqSyGbXBXGONRmWpTzPNFqISXLEC0gM7Xxcb/z8RiWRW2znlSpS7FBg+cL89NpmwkHSkiRPA4bkiAhbD2Q5jhXkGYkspSsDpkHa2/QhNZAnVfWNzbSo63F7YqNnrHjbFnU1r8IGxGnB4cCLqWmaKs0H8nzZda/8prUmzdvAHj58iUAv/Zrv8a6rvzpP/2nt+/5pV/6JX7+53+ef/gP/+FPdVLzPDPP8/b3t2/fAhiTJdismx7J9Ai71krN6VpYFG+Ui0bzrU1gaZQilGp01pxsCmvetP86X6jXUKxvxCKGXpzvxsB/YjP26lPnuxq4KSvYxuh1lRXVQmsrtS6oVmqdadX6hqZlcer0atnI3FgncwrlAuvFGH5OoNvKL9sV/NRsyXFyvakx6e2nG7DQje3GAKpQF3EnhUFsxbB7CUIdNvvo/WG46OiN8Xa/r2rOqFPKYzXYQrx9YL878u1v/wIvPviAP/pH/11+33e/y6//+q9zepr44ovPOT2eefv2yYKEjYcp20t0FY7uwGKI7PKOh+Mz/q1f+AP8/l/8JYb7I+NhRBkZjztaa3zx+ee8/uILtK7oNFsvz6YgXo2FE4N9lquT2t7gFqD0L5nFayqsxfXTlgtteXLHYEw2huyNvHvLmm6y72vq5H1RVKQVghaPoD2Aah2gxuCua1pBa0JZLfO9zpJUNr1Ef0ZdVDRIoCxKRGmx0WJliMrdfsfd/sCLu2e8uvuAMXstKmVCStiAQoEwgPiQQzF2oqmL6NbmZ42mFvUHNdRhAwGCNa9rtGy4eh8Tm7qIkRcM+nNnE0cIAyGOxHwkpIEQMzlEikaafEzpG93D/qDeSO31zE6a6I77Omr+GvZ1Sji9DwjeJToJRhzyQKFqIxEZQjQHJZmtLdyz11JW1tVsXPR6VR6MvZddUcKIE9a8eztS3qbsFsq0sFwmh9OtCB9i2IgSnWBTPVBQiw7tPkRjcMaUjLYvkVYiqmKBy3kyuvnqc9y4avKZ7JEbnF7ic61ec6VyDRh7VvlOPfBfvP6VOqnWGv/pf/qf8h/+h/8hf+SP/BEAPv74Y4Zh4Pnz5+9870cffcTHH3/8U3/Pr/7qr/JX/+pf/YmvW5rvHE61zUwwB9XD+WVZnMmSICdC8/wnKCVK74VkLkpVyJdGrUZPz0neoTjbK3QYpvfgvJutmP3vxssckSBbb45Fr04mcO06G9m+mhTKagXUxaGwWhtlaWZgZnNOdXU0yG3c7QVsEOItGiY3rqen97fX3P9ts629EbFnA2yQQq3uSFwc1+5fM/tZzY7aNFvHyW9HhLgHEb06JBc92w55TJkc+9C2aKOwdzuOxzv2+yPjcGBIF/ookP7eOpT04w42+rV88PCSX/zGd/jG177F3fGe5AagZzwGrYjh/sNAK0Ktq0kVpUjKsg2jw/UCt2y5Z5ybKqsX4TvWZ16DEBPaEiqJRqSqUBQb01IdXs7aNUfNGfZxLn5/Ntq1YDc/KOKwkuGl/no6vpPY5Zy4O96bsyhnWp0Ndtrsyi3b09he82r79HBI7IY9++HAcTxy3B05jkf2w8H145L3l0WHP8UNeaVPFe4STkgnDfioGhFvyNUt67UAr3ofnRAkEaUPEk1u9nqjuENnAhrFCqgpWV0sjebsvHZpDLmVKqtTz8VUUtQd6wZDddoP4Ozc1mFB/7puwYj6rDfXrZTqDNvmY3YiAZcBc8SjFiNWdINt2ZtdTwji04xtL6aU/XN0QkMnXOC9ejYGvi5dWcIGyllgHjayxKaoo2wwJK4Tihi0nXMyyTbXLKrLSluUOi2bqkR/33Zs3VF1B+W3ZMuifJ+GzYbcvGeqN0D/7utfqZP6S3/pL/G//+//O//T//Q//f/0e37lV36FX/7lX97+/vbtW7797W+bpL7YkL6uBL0pQtdGWQu1GOOs1h3D8P8h709ibdvW/C7w940xZrGKvfepbvHeu6+MCIfDhE2SSCmbTCkthETDPdykg0TTtizbLfeRoAcdgxBC7lmWaCAkaJFIFlKkbQVFAmmEMY734lW3OPecs6u11pxzFF82vjHmWvvcGy+eU7bQc8yjdfbeq5hrFmOMr/p//7/R+ahWpFXniB5igqQFLxCT0nnYjI6rndUigmgVimugCqHx/hWt0HLWGOucRiNTakoil0guLYKyju6YJnIy2pNYm+2OcyQumXlOnA4LOSunoxmp5VGZbmt/1MxKIos+8d0BLu1W/buhl86vPIm8WnpqjQ65MCwKBVu4tfWA2Ch0qhSSGfIB8FSPrKIa1/23hbU2MdtvlRPOtMFA2O8GNrstu6stw9gxbDqub655+fID3r29Z799wXTMRtC6HqusRXARZSVzFaHznuA9P/jm9/iz/9L/k+fPX/Hhq48Yt1ukr9BOFFGHU2HsB2S7p6SFBWtGG8bRpAxqb5K6GlFrJfJcWYmbB9scAqHRI4kLtc5fUNeT6HGaWZK1DQRRnDMyT1tTBAkGDmh1SEuddLa4uGAOUU6onCyczpZShg347aX7z3bc8OEHH7EZB9LyQIoTxZkIJ6XiBdfaiaWuDqcTJydsNy+43j7jZr/j5fUrrnd7Xly94vnupS2CQ29yGp1FU+KEXJJpTGlDtFafW8QISrG0EtXZKBZa1UZw6zdrbPROOrx0tXbV2b3yoYIArHZp7QkO+oB0A368xvuBJAmVZCS1w2C1qHkxqIWWi7njqvS8rk3nZY3T7blmyLXG6W2epWwqAfZsRpxD8UZ9pA5fI7QFI8ReFusxe8JLWcpae+pCY5UwJom+N6fNOVepnByaC6kRxx4m0rwwn07E2WRJhv0G15mRc77SkSU751wsmyMUnLf0fdd3DOMG69PzlAzxcSYdJqM/mqNlrjhDzWNre6j1RIW1Ybch+Vo+4LKGWEhkEoX/k9N9f/Ev/kX+y//yv+S//W//Wz755JP1+Y8//phlWbi9vX0STX3++ed8/PHHX7uvYRgYhuHrv6iG7eaE1QKrKEUKDkfOGaduZTRABF8K4Iyo1NV+o+oBxGyxfZfOzadNSNEiDL0YnvWh9p3rAbVjooW2WguiLf9fey1aEbfUDvNKvxIrwCCnmr9PRguUkz6p4zwxUC14q4boiZHSc6bt6XVrL76HB2yL//tvVjC4fPs6cwjWY6kRU+uTaNfqyd4vOvuk/RRWRvXdfs/Ns2dcXV8T+m4Vb2ukmkM/MPRjnXwe584F33N9EKjIqL6Sie42W55d3XC1M/CFnMPji3OmLnqerL5yLNbmXbEUy/lc3ncLYHVV2+vSRkozolI94YBzXTViWuHfjfy11Bt8SYh8eZDndgW71hW0cVlGVWjQcVcbcbuuZ7PZkuK8Ak+eGvenNaz1Hok1kg59z9ANDFWUsPO9kb26cxH/iZCftltd6zfSxtnZ+9HzsKLVe2wZrOmBOl8EMRJhdUgT03NtLJ3rwzhXkX1rEdGuY7st5+lKYzhf50yLnlbAxOXlbPUoViO1vl6fs5pVZS+p0QrOkGxFDbRUipm8omegx8oCUdOOhhb1PBEhvICNn4da47Q0jS1T4G5pSNbPv/+ZFpHbvG8MOKzfobVPz1pd8pmbb21VqPNbLoAS7w9RzmPq8vX12n3Fhf7F2z91I6Wq/KW/9Jf4z//z/5y/83f+Dt///vefvP4v/8v/Ml3X8d/8N/8Nf/7P/3kA/uE//If8+Mc/5s/8mT/zT/RdUjnEatBi3phgxe7iUFcHghQmnYhLJHSenAe8d/Slw2dP8ZazN+2nwuKEpJmYleBht3X0wXjN+q5NYVtItObcLGvQYKzJ0ipayC0PX99XSiFmgxHHNJNyJMXCPCdSUh7vF+bJUHHznClJmR4hLUqaajtJzem/Zyd/8X1ZU3dy8ebzTt5ftKVFS9QFQEy40a/SHLYT5wTxlqJytVYTukDXm/dWUqoLjRkR5EwW2kZ53w/srp8zbrf86X/l/85v/4v/F5Zl5v7hFu89cYnc3d4iwCff/g67qyt++NP/ndv7Lyl5JscDUD1wMUJMcY7NOPC9b32LZ1dX/ODb3+HDVx+y3V4TdKDMlVDWVQmLSlXluw7ZQl4cuhwpuQralWgroysrs4WRmZb3rmd5apSbKRZTj3Z49rsX5G6P5AnS0T7nFxAbL/n0JS7sCO4aF9SiMOsWptUyqFBo8V1tDlc0Z9PAEoemCVTYDSND13N89Q1+8N3f5Pb2DV9++XPu7t7inRXK1ZWqPVRqP5gxTex3I30f+PjFh3z7g2+w3+x4efUh23FH31+TXV97DNUaEZ0DCeAspSmEOu4zcG5ij0shp5m4RIsENZLLCdUjrgEUBHyVu0lFcMWAMAGP0OHdSB/GNb1UnBD8lrF/hvMbEGtNSCkS88wyTUynE/M0scRILgUfOsZxiwCn04lYIdvN6c3FranPnM/oWxVjUMlK/akVkW3Nwa44BGO8yK7gnDU9i0yo6MpZ+aRoXA28876moh2h8/hOcN7eZ3Vh+9ImAZ+WyPz4SJwmxEmFmzt8BV2ARytzTW5ISIkgEecd/VDf7zq0OEosJgGfCvEwEQ+TnWQd45kKOVeLoJ7YqFZCRSrcHMscVOn5rNYIjrcamJTLefIHb//UjdRf+At/gb/1t/4W/8V/8V9wdXW11plubm7YbDbc3Nzwb//b/zZ/9a/+VV68eMH19TV/6S/9Jf7Mn/kz/0TIPjhHEFIjmSYzsWoD1mYyESESjXqkmPdX1lyt0EAQhvaxltsSDeYdgrFfo1W5tLtI7VABE6pQqZTQlvM1hE3K85Pca9FMTstKp5KLdbMv1UjNp8zpmMhZiUuxsPukxJbea32L73swddN2ZfTsr7RF80lU8wSK2K7TxbVt17AZquoFX0oymMeGedLu7L157/FVkdiajM/nX5fWJ3fR+4799RVX1zf85m/9Nv/K/+PP8vr15/yDf/A/siyVbPN4BOD5ixe44A2SvtsTF2HWU3UEanDizHj2IfDq2XM+fPmSD1685PrqygQK6ay3KKiF0e58Qi6EWp/I+NDKvnoOX7EaqEUd5cLYcvYexLGGlRc3SQTEO4Z+h7oNJXfWuEwG51ASzBMaH+z+pAnokACE1mx+mSg1oyCh3cUFSJZCypaW7kNP7wI3V8/44OXHBh/vx/Veeuc5N5M3ZnKTVt+OG8Zx4GZ/xYurG7bjjt14zWbYEsJIqQ2zzqUaQNUBURGKVrcrtFSzSGeLflqs3hrNmbPG5UjReR3WolgDswCV6sdhLOmIx2mHl8EMRpUgETcQ/A7x1tdodV/jrjM2B9NnamzkOEfXW4amnCZiLlw2rZfKx2eNvWs1ao2c2mstmmoM5iqm6uxcM3ag3hFCQtSvfJUXoOzzHBNLlbsKNfe+wcbtwpQadeWUSUskL5FY5WXCOFQ0s6+0RxW0VY+x6VSZ0m5CXFcbgwNSjZlmjJNvyeTJ0nznRIo02M556VBzWNdWlfpoDTe6Gu8mKWR4AfFn4/uHbf/UjdR/9B/9RwD82T/7Z588/zf/5t/k3/q3/i0A/v1//9/HOcef//N//kkz7z/xdpHGWoFWNe20hudNNRZLieRkaLniM1Jz0CEYsEKdTX5DmQvizXM5LcVoQ6qMuXcQQou8qCiV2vuikPJc0XqVFohz74nJx1toHpORSC5z4fiYSVGZjobgS0mJi31/ime49jlkP5/u+tDzhWmXg3Z9Lv5eF5SVvomKFjobqkb4SX0dWAu6tlbad9TySa01BLx37PdXXD9/Rk6Zh7s7lsVk1XNt3mvF1zagQx+4ur7m5tkNoQukuBBC4NWrjyg58+zmOdvtFuc6g09L4uZ6z/V+z/EUWRZrDmzQQOcdfWe8gpvNyG67pes7Wz9rao1K9mo38CkYoaxRckQ1gvTWnIqr4LrKQbJOsnonDGqHkmkaW+uNurhhKskiMnU4v4UGx9WCMiJBEb+1MclFGk2ABhJoqL/1+6lRzNmAKgaqEI30Ilxtt6TlimfXL3h+8wGn6Z7HQ7J+PGc52824Zbe/YhwHPv7gBdvNhlfPX7Hf3zD2I6HrcT4gvkXQtU4rgAs4v0Nk5JxCdvX3c6RuUbeAZHI6kdKpSknoOXoXaprQPG6XPYpFZyIBtKsPzLiLNfzm6la0hVXUnE8vQhcCmjvGrkNQhm5gu70CYFlyjTgSOc+1hnKRtUBWZ7hNqgYmanO79WKKU0SMvLgt3Ion5ArWFhN31FIsTdfO01UF4tVDbDNZK5JRaJ5Yqca3lGyyG11nlEcVZt7Sg9YD2oAZCYObV6b4EHBiBopiCMe8ZEPyLcb0vqZHOTPv2ByWNRI0W6W1ib5lSZoxr+wmLZoQcEFwneDS/0lG6pdp0BrHkb/xN/4Gf+Nv/I1/Cl/Yxr6crXpWCzErqWut3CHerXlg5xw5FVO47DusB8NQZq44slcyDl+gHAtBYLMoMTq6IFxfmRaOwclrSi9ZDn2JJ2KaL7KvyrIUYrRm3GWxommsNafpmLl/F8lRmeeK5IsWPVm3t4ElzC2z03bn018NVLm89vJV40Rb52rfwplpGlydfFIX1DVq4jKKkqpx1d6o6z5NXTUQ+o6Xr17xyXe+y7LM/OynP+Hw+Mh0OpFSo1Kp6T8niBfGzcAHH33A8xcvGYaeZZkY+p7vfffXcM7x/OYZu+2W7TYybHrGrefDD17w+oOXvLtdeDgUcqV0QaDrHeM4sN2O3Fxf8ezmhs1mtL4mVzACTd/yRLQSOZhTY6za5tkXFpDeYOF4k9BoiFJ3cWEBzRnNiy0kvt2ZZjyFFRXqKnhXBjq3Q8tCnGc0Z5zsob9CXG8w7maMXItg65e22o+cvx8/0JAoItkMVJqQnNh44YObZ/RO+PiDbzFPC+9uPyfOJwP3VGmVm6trXr36kP12yw++/QnX+x3Pr654cXVN8IFh2OBdMIFHr6wSJGKRjITniITVi3fOJHAa7bFQvWi1towYH4jLkRyXaqSUcA7jbVFTTygdVBVkcT2iA+imjsGq10RHqtB9X+tAotAp9OIYuh4vwnazZRysrjn220oIIDjXM88Hjo+zLdhZKVmgyMpufm7+lUoAjfUPJmsATwWkFEP1itTrmglFCN5kgRBH143kGFnyjGrBd4Ol6IKvjX+6ZgOLVmcDsWxKEUMBxwXN2SDmXgh9T2jKvA2QUpQYW/QUESmE0Bm83YUqIumt3h0L6biw3B4oMVryoM7WJKv05upkrkuwY6WfDC1PUrk1tTpgKop6cyKlc/jB48s6gX7h9ivN3XfhbtjJUy38OT41L6WIOculLURWIyq5kCXjsqtU/NagihSKuLMESM3cxGyGBawZzry9c2d5Y02OyQwS1IGmNlBiZVqIc+uNMDBEnAtpPgMkSmZ9aKkT4zK9p2cD9H7aTy8iyoth1Ny5i3Dq4irWhU5WQyVrhGULy2WB/XJdlNU7EqFyiXn6bmA77vAuMPQbYm99X7KK+XH+nupB+lWErfrflQ7GObc2NZZS6LpA33WM44btds/hONbivbuQB7lYw9t3wMposGoSfc1mRJ+x9h6di9lr4bp5kE+u+5rzqZf6DKc++w11kbu8OQ0Z2JyBlhKoXsfl7qX93a7/kxt5BqG0xV1x6+9IvZ4hMHQd23HDbrPldBys1qU2PkQwHa1+ZBxGNuOGTeXlC6EjVLbtM+BCL77jQoeqLVTruKrOIk/RpWuKTM8oNwVTuIZanLfKlkMrtZT1GgneFs1SdZ+otSMtxmhfar3V6PQRnBHcijAMo6n/+o4Qeku9SRMetOhlBU9ou716fm099taNZ883pgpBz6nKVmtq59mii2IQ+3b+Z9myBsBoqVIbLza09Am7RqNqEi+IeFPtXoljLwZPqz23+dt4+So0HRWjKYoFTaU6W3UcrhFUjabac23/T9aTVvduQJMzGnId822ItN9/ie1X3EhdbHUBblNWW8iZ9dwh7uQMVa+L9plSKeO8Y8gDIXhy8JTeFk2tjOk5KqkUgjfIdPAgMoNMlGLRkv1MxNSCYysiTVNmmY2yaTlFS+MtxmKelsJ0bDxhdV5lsVp9HWNtETpPFZ4+miFr16Jua52pXh+lLi5tsayvPXVeK+LuIsqyhV5XYceVsM5ZZCAVQTb0I892r/j4xfdYYiQdPQ/DPW/8Z6SS1r4OSkG8X3Pi7QyNTLMjhI5h3Fbxux7E44MwYlxw3/zWr7HEgO97Pv3yp+h8IJcTRSMFJZZsMt/LTJ4nynGGh4j0vY16FQiOshohWzBPhzse777EAYNYY2PwG0IYaMSlNna8RWFFTSqeUrONFUzRrrGawKVBsbtqm1ok1aiDWoOkoulAKUck7ND+2rxiTbiU7Dh9s8DWr7WqyK33sy4G3o6xyAC+IzjHlTOo+3c++gaDQNDEl198SiJaisrB1faGVy9est/ueHHzgqv9ju0wMA7jKt/uxNk5+GTjIFyBC1gPQhtHDqGpCLt1gbPIwxwBQ696cnbkJJWdPaM14l7qlRk9bENg7ALD9TWb4ZpIYcoGQnqI92TJlDDg+g2BgCu5pv3MI+pk4PnNh6gou92ecbOpKS4xwU0+Z4ozS1yIORpyTp1hDZUqaaIgZhCjJmJJpJKrErfVv5Y013nXKIaMXQL1pJKQkjic7mv6+Pwv10SlMXNY/U1yZ+aqeNMZUyEvixG9pgr48ULoDILvq86U1f3MmOWSsPqTVm5Nm099P4B6tNj742EmPpyMOLYaqKYJZUlKV9cZOaN4q7FpjBIOaN3PjdKtVKi5OPC9R4KAh2Q5qF9qaf/nx0itK/D619kDqn+YVXe4Ys9Z5FMRL+ha9G8eRONyM62gekGLkrIgmgkOxCWci5SiTLOlCCxqAlTxtdg+naz2lGJmPlr+PU1ijbkZ4lxz4NRHwRgZ9Gl/ky1F1eO79LbhK7e81eXWZtPL6EouDdSZmLal9dqytxZCVwdA1xrJmpaufxtazFIoV9vnxBi52j4gpeM4PRC6jixVKO0iimoNqlbLNshzCIG+62sB2YyYc54ueHKvXF+/5OWryJvb1/iwwaVEYV6jEaO0qTD/HK1Tfq7Ah8QqeW/nUb1VlGWZOD3e0/mOcbtfFxnjz2tRTz3x1kydKsEptei+IigFk33xCAHVvnqzNZSsdl4bykkV1QXNj3Z9qOwFFSFFBafYTlw1UGqe8MU0ALvnCoa0c4qTwkCEPPBsf0WaT3y53RN8b1gPb8c+9CO7zY7ddstmUyOpzpwG05ny1YmxZlALbypt04rgsPSerCnO8/01Q3XOOpiInlH15GyMHGVOZFUmrToEIdFronjFh5G+35LyTEoTS8kc00Qisl1mojUDURK4lup3NjY34w7xwm53xTCONu9iNUYqxJxIubaEVNCEauP/e+oaruOLss6DQjGl7RZ3CHgVyzK7us9SmOOMnx7xLtB3gyErafB7Wbn/mko3IhV0qKswaCm1WVgEF6xdQlrUCmu6UhtbgdQme9+0qYwSIjcRwyWbwm7K54wTzVC1py4yCOvct2PwbUnRFkG1ht2KgK4OlgRZp0dZB+0v3n7FjZR89an3wtCGvlprZfXGXYIpSg1V1CnLvFRFzMp95cwjdN7eK15MHKxonXq24DT55VxYa0paChpjbbwrpEqLEyettSalJMsbW6NW25/yVI/lbFDej5bORkfOKaH2VAuunlgnNQ9SrJhcA87VCHpnza9wBr1ZIdiSOL7G6usAdYp6oQsd22HLbrPno5cf8Rvf/XVSTIxu4OHhHph4ePyCRRZbhKr8gRYlLpH7u1vAKLCMPdpVpvNz3aylOATYbkeePbtif7VnGHaknCh6RPNC53u2w5Ztv6ULA953SPCUYGKYUFsXErAY/2NMM1kzy3wg5aVem0ol4wMSunYQ6yRs6aRVOdWXWvNSvppPVPNoW86lpXEEcB7f3eDcaLRTJSP0uOUO8gmpZLY2WB3qXE0nFovo1v3BJay5Qf5RLNIJI9ILVzevUBzffDzwa5+8ZZpPHOdHYl7YbbYMfb/2l3XBVx63FrHVcxNqgf4sP6MttaRKI5ltbRnW/2ORTS6ZGBfmeeY0TcRlrhA4IRVINUuHGmt2H0a24zWb4Yo+bPF+5Hi45fO7z8iSSWGxQ5gScoiIqEUqggFJggES3FAlKHwAcRSxJTShtRZZqgNxdtoUMc2o2oivFdWbSyKryefYIxNjYlkWlMYFqGQxoERRGPoZEHJZrGalSq5RkiveINkiSLYm8eyyOSBSDY1aOrrRCZme1nqnORPwWqLQxqAhFr0XS59XA6XFoUlJp5kSC3k2ZviWcm3Y1eZ+XY6rNvddTfG17F2LoNDaC4o5Vla/tAgKoXIJ//LdUr/iRgqepK0ut2r5pb2lNvmC5b/tYxVM4cyLzmJM4+KEfuhR1dpr0JusdhAKtkAsyeoOjc5fi5HUNlLVkoxTa35YKCnV4itV1pkGBLO+B4ALb7p2JLN6Lk/O6aunuy55Ui3Oe9fBDFVZPypq6Tz1zfM61068s9y97bdeJ2eLr1OPr0KQRUzTSLwNwC4MXG2vud7f8L1vfJf/6x//F0m58Gr/kvv7O1J84PXrH3KUE8txshSJCpqVeZr48vVrpnlmOp3WiDYEq3HxxEMzg3lzvcc55bPPnzNubki5kPM9moUhDFxvbrja7Bi6DZ3vkRBIncOHumgWgVhgyhQWDvqWqDOn6Z4YZ8JK3RNwvoPQ2zVMVdwuGSpuvfgNOdh+0sAS7SY1eLMAVY0Xe6/4gBteVsfHr/Idbnpt+xmvYbgyBgcfKpNDxsQwu2pAKvT7vcQwzSi6DvUB7weev/wmu+2NifNF5XA68PM3P+FweuDZ1Q3bcWAzDAx9YOg8rsltCNCV1Vl72jhbU2uaQMIafVr2R6HBxxVySszzxGk68fh4JMWZzhurSywwVQmIgMPjGbsd17uXjP0VQ3dF8DseDkd+9Nnv4b3j+uaavuvhEBE3Gzpys0GCpb+kppncpqISnV8X4YiSMGLYs6L05cxytbdxMqZyTWvjrulAWWtLypFlWTjNE2A9ceelydaJsT+CqqF/izFUuGKsHK6iMlXNFVSx5mV11RjUa9d0pkCrk2C332piluajZo2o9EziCj4E+mEg+M6ouYonx0i8P1KWRDpOluqj5gTE+qFircO2y9KiRnGsSL4WK6sWM6L12ijZkHyDt5Pwhg0o1dSX9xeyP2D758BIwR9oqNpWw9OaGTkHJhcxp1bD1UJuq1WVOqkqzKUiuszYWPGopSisJ+PSSFURv1RM+rwW7LXoGUreemlXL/iiWAsX3oueo6I/5Cp89dRbyu/8JnnvMyKuatfIOV9dG4+bt68tzXfOJ3HxF94J23HL9f6K7WZrqTrJK/+Yc02Z2Eb4JXtDYzXw3jzIFehA69+5OPN6cbx3tu+uo+t6QqjMzc0HrmCHUFOHRqNjxeVV5EfKWcG43Yuia81OGmtBiyBWB+Li8TQXerEzYyZXzeaArNL2hvBDQEui5AVU8HTn43IeSjEPWrNx+q3fXT3potUgFEu18V5EVe9Ru8farqc4QjdAKYybPbv9Dc579qc9IoXtOBq7RB8u5Bo4t3g8GXCX33eOEFfy0/WbL9ubrQ2jRR/nFGC9JpVoVhCC6/ASGMLIOGzpu5FVKLBkq1+JpdTMoDkCHr+2i7eUcksrt3FxjjyaREbO0dLCtR5UqItFLfxrjQxKk9agQhxqZJiy/cw5V+5KA/24Og67MCINIVe/01jMSwWIXEiQVEBGUWtT0Asnsl7ClgVc/7ZDbe9rDB9aj6WpN5szsbJVpJo6rLx867pYfeMWT35l4bnIUkkbG/V6tn9nsVG7/hWf0Q53Pc9fZvvnxEjBV2fQ0wtgk+yi10FBU7HG3yrvIU4qQlSIanUm5wz554N59l1neXfJBQomt5EXLF9sX1sqpb2mjC5qKcZKtGoInYviUzUi2noOFLQ1Bj85p4YmvEjdXa7d712F1c7VVcAMkaPlkA0YYcKBIQQ240DwnmfPnrPf7ogxcpxOlJyJy4mclhpZNAj0GV5PyQyh49e/+wO++8n3+PbH38Q7JZFIJTHnyJIycyzELIjrjH3BGVvBOAx88MELrp89Y7sb1yjgfAVkNbbtfIL3DEPPbrvjxbOXeCdM02um+ZGCI6l5g5txw/V+z263o99sCWGDjD0aav0kW2G6XwZcEbL2lHqfXTcgXaXjykuFkhnlh1QUl3pBN6EaHeu4VjIqS700CdQjnUVkilsX/jS/ZXn8DOcCw/YjnB/RrlC0r+PIkHdewOe6UKbJDFMtZkrYIsOHFbI+nmHrK+R7NU918fAM2xu6cc9zdagE5umR7ZXndLzl6mbL9YudofyG0dJmbXVxlw85R1B14DoJODci0q21kRap26JqBnyaTjw+PrDMi/HbSaDkpcpLCL0bCC5wMz5j6EY+fPEJ3/zw+4AjLYV5eoAcGSXQuY4rv2MTNtx019z0N4j3JhrpBNc5/ODA15rICk8FzZk0TSzTken+lsPtazy9tQUInJhMoaBUIujW91j5DRW1RvP5xBwnDtOR43RiHEZe7V6wGTZsN1dsxr21mkxpBY5M04kQMs4Fq1oWTxEBPLkiAxvoCpGK85MKzLHr6DhnF5SzSKM46EYjyfaurzRYxtSh2ZGnTJ4W8hQNLBETmmrZAiE2Y3rhvK2+dPU/nIi1CgDkVsPLZJJFcMHWUdcL0jVC2nqcarp+6ZcsSv1zZKTe396PrqpHIFqplKoL1xyFZrikQSZBSeYNeVdTMJVcqC5ulKYyax5hTceiMVNirnBOnpAVvA9pPR/l2VtSvTROf/BpPTlD1Sd/nzMN7xlrGny41gnE0jBd19N1ge12y36/Z14Wy9enZLIVKa+fsWhM6sJs19E7x/PrZ3z08kOudrvad3UuMGfVqmSKRVLO46T2xfjAZrtht9vQdd16/E8ivubd1fNx7iyRvhm3zMupogRbfcS+p+sCQ9/TdV0VKwwQvHVkF4HcmkUDPheCNoFDZ7UoH2r2LtvBN1r3eg1xggYLr7WCZXStdGAtBMXjfE3lCDR4lOYTeX6L+gEdb+y4nIJ3Bibw61dVSHWBsliElU5mOFWRbqnGojtHd5cRzjrWLNrx3YADxl1k/2xmmHpyfM62V7ZXI7vtaPQ8vsPheZLGXHf9dWO0CnxewLmfjNs653JOxGi1X6lGuxTQXEUVxRGkY+wq8/p4xW53Q8nKw/xAqg6DF0cnnsF1DK5ndAODH1AvZHEGPnFiwXBr8Fu9OHNMSzKHMi0TcT4h3uH7rrZcTmeeTS3ohVgiK6CgkBqSNCcDTiiM3YbteMX17gX7/XPmeSHFW5IaD15KCSfeHA+V9TtQMa0wKvigYHXfNufr+vHEfW2Gqpxrts6BDxWE5KvjUio3Xy6UmKo+VKQseb1JzS6Z/Ias1EfNKV3XD9ZGA4sqS2OUqDW9mhK+wM3UfV9Ei380jFQLR/6gRf19Q3V++2UCorkNilpkZfaH1lqVlkhxjpIyeUlrXdz4+mKNjPTCSBV7lJbSOy8U7bhEzo2BrP9fxhDt/8vX66fb7mS1refnePpG56s37ioNlFB7kWRNR4zDhlevXrLdbPj+936Njz78mCVGHo5HckpMh0fSMnF7+4af//wnpJxWpm4XAl46hqE3No1lISWTWDDxugo8EHCaEM34mucMlfw0hNYhbwJyOVZ095p6O98o88ilyqMHPv7oY/7kb/82d3fvgEe6Trje7Xl1fcP1bsd2s8F3HThIJSIarMYWAHUQApLBawcZOt2jKnTdiHc9DmdEm7mml5YJFNx2hD5A1+Qp1MAJBVQcxQU0J+L9O/I0mZRFXzn2KgHj/Pg508PPcb5jebzFdxucRLxEUowcHu5MvNPvCW6PHwLj8xHfGaDD9VvEjUjLpVQaMAvZI+uqfFkbY23QoOs6dlfXpLFH5LvE5RXBR0KI1ZFp0Vh1TBp9Q/uqmnOSFZpfSXhXI3kx/1RpPWFjv+Fqc00+nXgIW6I6lpjImmu614r7/bBjHK8I3WjRKGpMCV4Zux374RmbfsMHVx+zG3dsxyuDajtBrGuhScA9pclTWznzkjjd3bOcTuzY4TbfQHE1EjcV35QXYl5YKoNMqfxzu82O/W5PKonNxrHEhWVZiHFmv73iB5/8Ma52V4wbq5mephPb7efMy8w0H1iWiSKRrAtoIatH1JgfUjK2eLxf1RdcBd00TabqKaNqjPWqWqnAZCUVdrWeZP5NqSQHEI8Vbh5rPxStnd1k4PUyL1e3iukwx5aatK7lgFJZVozeyxZO18kKljhn0s2MxZSYU2JeFn6Z7Z8TI9W2rzNWv9hQCdWw5GYMsnlgJuODiBKr4JrBs+1naPnYRkGjVc5dMTqR3Bqevu4wvybPy7oE1xKIrh/8OgN1aaienNeT98pKM2MGyRaQpm7aBvJms+Hjjz7i+vqG3/7tP8Wvff/XmWPiMBlv3nx4JM4T/+gf/QNev/4pOaeqHWQgi6Hr2IxDNVITMaZqpJwJ+VUjJZpwJDwWWgYfTDOqSi4gDs0Gy8/+3OMmTzx3M/DDODKK8Mm3PmF3teP27h0Px9eoFF7stnz8/IrdOLLb7aqRErIuq5EyZ99qQJIFpz1kx4AnyN6k45uRigtlmik5UqYTKtBtB/zYQ424QCsFl1vtRSkT8+07ltsv7DqEDtVIjm/QfGI+vWM6vLEG6M2P8WFgMzo2ozBPkbefPzDPmRD2hLBnuNrxovsm3WZDv73CDVuEEQhm1ZuLe+byQeUcXVodUdcr2Q89ob+hlCu2+z05R/L0ljR9gVapdaWs6WEzxDW0a4bviZG6rEW1R61r1gyE4NgOO9wO8unEXbdjKQ5lQjXi1CEEnOsZxis2u2d0/Q4DhSjedZQAY7/nanzJ1bjnGzff5mqzpzgx/JEH6TF8ShXfs+tS51ete+U5cXx7S5omruWKF7sdxzRxOz+QNZFzJafNM3NlhjCVbmWzecbHH79Ei/Li+srUhSvA4Gp/wx/77p9gv7vBD9f47prH0wOb/Y84Tgc+++JHvHn7SBFIOqEl4EuHcx1FpUbNFl05Z3UrRzIpES0rSMFRKljCIq5h9PRjRca62s+Hq8AuKHM2xpvDieX+cW1upxqnjIFJSssW1eKUChc9UYKv0bllkJqqQ7YI3xVjFOkcrnN1plfWPjXaqCUlpmlmWs5Ctr9o+xU3Um37RdEUPDVUF15CNQbrq+ccWQ2lqoFoaMCLSKeswAFLWZ07wW2fa1HwMjz/WsN08fSK7KAa0Wq4VM9GqRoxvXhOVmaDp3kAC/sviUlrwN5Sfc5SfeKkFnMLTRJjDB39xihjDqFjnk7sr27Y7q4RF8hquflWeyilMC1HDqcHljjRBNmWZWaejwbxrsSa7WjWR/XaW2F5TQdosVRcE1hs10Wh9WqFENhsNsS4cL1/xrPrl+zHjqHr6Xy3FoxLKSxpARdW2ZTm8bdrQWUx0JoGtfuYVx0cVT0veG3Rbki+98ebCDiP9BvcsGctKOMR6cBlhMBadlA1gEQBzQ7NSkqZFJNFRToTYiDFCdeB6haoKa21SP0180CTpW3Eotr19zr6RBpWw1jW6QbIW2PyjydU08W5tk/pk6miNaw6m7/zMTTH/zKYc1IZRlywh+8Yxh2hM2i4OE/fj3T9cBZV9A6cyaF7lGEc2W+v2IwbQmctBtLSkp7Kf4jVm2Ut8dv8qkzikiEQQDqC83hf0Dwzl8hSIjg1tQQ6tm7EhBuNVHe72bAdNgAECdayUimUduOerhuqVLzxWRrvpc3VUhIpz0ChaKjLTV7nX8Ek6M+sEpb6s4boltJra8y5P+9SIZyaYTnrOJkMkOayGpfLxaeN+/W593rv6kx5sm6e9cdqmk90BUm0G75CKWp6r1RmnpYe/WW2X2kj5Rrytc2WJ9v7RusPiKjqHfDVAFlu1TyVXOrN97ZIOtZm6zU/6+CczUtaB9zZWMlXFrB2ZO321cG3Fpr1ss+22sZqrtZzvTy/s4HSy9wfltbrO2MISMmgst6B94Y86vumxgn3Dw9kVY6nI0teePb8Bd/+9ndxzvP556+5v3tkjoXPX7/j8fGO11/8hMPjrSm7lsy8nPjZ5z/kOL3jxcsPSBVm/PrLn/H5my94++41p/lUEV3V1GtLWQs+9PgwgAhJEz67yvWnVVPKPOAmttjSSuNgwnBDN/CbP/iTPNu+QuMjOr+jD57gBhyBOc6kh9cMw55+9xyqVLZ33rrhhx6vVS7dEDGU+YQUE8nTGFGnRn/ghNIpuKrSXIz3zpVkhgaPSsB1G4aPf53+5XeJh3vi3RvQhPNXCBnNPdPtCY8weKvHORwlCinCssC8FAMVJCBkjg9CSpVZYfPC7rUvIOnpIlXZC7QcrY7lAuJ7i1bdgEioo3mxY/diDCD+Bhk25Dwjj18Y+aukWhBfY7K6+NWajwquyBqpmGF6mj5ohhhVfPB0Q0c/DAz9js4PvPjgA3wfrF6SCyH0PL/5gM2wYzPu8VtrCemCw+fCq23P8xcv8c4RhpHiQIOYhmIHbiMWRfnG1uAQtV4kfYyUKdGd4MXwguITMU7kHJnSPZ+eXpNKZDMEdpsdN72jH0zaxdV5+PzmOa+ev7LsRCWvS3MhzcbD59xIKqZ/5UtEy0yOR9L8yGmyqL/rBvDZan/SoWoRqXdVBqayTGhRSlO6XjMzBVFrgfBObF67CqoolnxDTXwyZ6M7ysel1qPiaq9LXcwq9a3drFxXqNovbuhxQ0w6tf03PTxDIiYKGRccYTTuQfXQkoBJjYlnTsZAf5wmDsdHTqfpK2vj122/0kaqOUfVsPM0ovq66OprDNXFW9c1npotqSSPjaPsq7awphfai6UdyNlLsf2dU3ZPj+DSA8bSBdIYJqAhss4RVTPK7xus906RFp1UaHdNGZSc1+jJVa48X1mXl7jQLTMxJ3Ix4t3nz5/hfcdpiuTiuLp5zvWzDxAXuHv3mlOVpFC15sbT9EjoYFqqdEbJTNOR4+mBeTkRs7G/yyoNUSOICtM1RVPWInIuphpql8fTYPCteAtUWRCPqvLs6gV5LszHwCkfDYdQU1DGlTYjviPnWL3JMwrOeSPOdGjtQ7J0RsnWD1VKttSWF2OrcOZg1FBiXThs4LTUm8NvrmGEUoT8eAAyoRuMpia8RRjqfeoIq8SEqwV1K3SXei1LjuR4IoXaj7JG3XoeQ3U8nhu5E9S6h8G7bRW/bNlULOJATWLd+Q5JxvQhucKW1/Fln1sD9+Z1X76Hs5Fax6iun6pgBtt/8B3qPNvdFf1mMNqsmIz3cdzS9QO+73DB7o8HpKg5VyNtZlCHSJU1Of9s/H8iUo2J1mashEswuoEcgsHIKSSBU57Jmtj6jq4PjJuO3W6wNo06cq92e7aVtiuIURwtIRNdAWf1uaIt8jFwVc6x9lXNxHRCRMllQUTIJeOkwte11KWkXERQzXmuQ6zOu5aJcE6eZGuao1AaQ0VlTTcBw3PPZL19rNwBT/TmWEEPa8PI5UGoLXpn2DkrWKIleRt8vqjpWeViIo0xJeIfhUiqZnzqH80+vG8Ovs5QwfvGagUiXBiGdSZaurnN//N+RI29gUsPVt/f9dds2nJWtie9hHGc+4+aoToPqYszWz9eI4u1AUxpKcNhGPjoo4/YbDY8f/6cZzfPOJ1OfPb5F8zzzDwdWZYZRyKGhUUC0+HA8XDPPN9QULog3Nxc0fcd0/TId7/zbd6+3fLZz36Pac44V3ChsHEbPv7423z84Ud8+MHH9GNPXyL7qyuulyO+88zxgBbodIPDkZwivkJRtV6Heg9zSkzHE847ttsN3vtatHVPrqOqrtdsv9tS0g0HP6G5N87BTihOK6/gFf2wpRs2+K5HvKdUOPjq+WtBtPbaBwEnpLiAHNcsniDoNKEpWG2u60AMWiylUKRH3Qbj+jPOv24ccS8+AgrOZ8QVdk7w2y1OCuPGIMOo6TD5nPn4xTeN5uf4CKcDYejYXl3j+54ubKzBch2Ugg3UiFWuayFeR1RqnqDUehLxPP7cYHOnJBRbSIqaQZSS8JrQ+kAUfK4I2Eo8agXd2pR6niArBH2dW2p5B8HUCZzQ77c8/+bHILC/3jMMfSVZzjgcYz8QfMCHHvUWVXjEymJF7bHODUV6gV4Qr8ZCL9AkJQxLkq0dZCkQwRVH50eUhTfHN7w5vGYuBz54cY1z8Hy/Y9N39H3HOFqUr5UZZug2iAZKFpYq0ZOzok4r80hee/GgMMcTn7/7lLvHtxymx3OaPGcykSQzoh3OZRMFdB6vlqkpKwsEa3O0pfiq01blOcA6JEDr/ZTKS5ogt1SfOVV2WbSClC8SuIohVmFVgnEVLGGX2vaxws0xuLl3DtdJlTlqcHOrQaVSSDkzzRMxJaZ5riCT+IctlMCvuJGCulBXA9Laj74a8rxvqNpz71mT5oyuwIbmMbYi9HnyrYtD9aKfRkfnSOqrh6FnQ9og3RfvkyfvvTjSFbmlF89dGCrXUpa6RnXjMPDRxx/z7OYZv/Vbf5xf//Xf4PXr1/z9v/+7vH37ji+/+Jzj4wkpiUVmgjpOhwOHx3vm+YhixLE3z/bc3OxJaeb27XfZbkb+5/9xYJoSvlM6UZwPfPMb3+YH3/01PvzoG3RjT69mpE5xwneOKR4gO1xduFOFHafa6OzWmahkTRxTqmnJjmHs1ygKqlFp175Glrvt1gq77kBMg923DoovhGFgt3tG12/oxg2+71fvv+X8oeA0mwqslhoxObJfUPdYu+xtOufJUFOuD/jNBnVSo7MCjLZISYcLAjIQNiP9uLcTdNaE211ds/v4GwYo0SOiCVWPqmd0wq636DF+8WPS65/hQk+3u8GFvupQVYdkhdpllMVADIS6ymxAB4um8tGuSREM0jhYb9Xq8SbjhMsLmpZqpLIteJpQpxRvtEClouCKCSoZaKQududmbNbI60nawzvUC8N+y4tNj3NifWxdT4lKXuzeiuYaaQfUGWegF2MgkSaL275DFBkcDDXKdbmmvw0xSlJ0LpaSnwssaozq3pOL8uXhDT98+3vc7Dd89OoZfed5ttsydl2V8xlQFVKqKt7izaFQJc3Raq3SGlfVAAQuYTIimTke+ezdz3l795qcJqhsoDlbzdCzgE7W9C7FuDaKAYpa+aBUB87q4GY8FFn1uTRXkl7V+l5j91j5+KqcsKKWklNIWqxrYR1Hag6BtNq1RVGuLl2l1mcbLx+i+M6op8ypa8tPZcCoYAkzUkbgO82TGak/Cug+792a9roszn7FRn1tRPULtur5wbk+ZGmFS8N24Xl8TeR0/lzzLOuOq7GxMF3Oh6V6Nnzy1X05ad6+7WxN+cF54W4RnciqlBtCoO97drs9z58/B4Tvfu97PHv+grBKZxjuO+XE8fDI7e07bu6e8fBwR9HM0G1MLsN5xn5gM2y42l1zc3UDksAt9F1PFwZjmnC2uDrv2e+viCXx7OYlz68/IMUCi0FtnRN8MAmJcRgZhw1OTCunwZvVn6Oly8v+/gUSWJVMjUDTXLomo931A/0wErqxFuGhdYRoyaTlgJaEz6lKlZtYoGpiOb5hfnyD7xwUq+cZas5X5ocAl5GsJIzDu4A2tmtvNRmgigJBJZA11F0PapRHpnGlSI6gGSnGQW3HZClFVVvULPILUMI5tbCOpTbwDE0g0tkoUagSrGhq/S/n1GUbU+o8OFMq9uorHU4lVOVsHNvXWsO46TmtvvnXzA3nHC54TPTRVch0RXh6i0ZQrZGiwiqTcjGjWvAIZhjWyX920hCpcl6CZDWdy2IfVhGyJmKaOOUT6hJdJ/S9Yxg8fQjWL+eoqUlrxA4STDq9Rv5aCirWE7cCN6ozKzhSjqSSmZeJnGp9qKbbbPmwgzXghPUrGfURqM8r9VZjCm39na2GDVSjISthQE0IrKCJUqUV5CIF24Bel3PpaU6oNg+35/V8vKWNFal+UFOXkPOlN2CzReYpJVIyjkNTRz+f/y+z/UobqXHoyKUQo93cyzm6XtRfVLh5Yg306e96kUpoO7tM0bnCk+aLur9mi1abVNMi7f9zyoj1lzZ47CN1WOi5qXj9UQcXYJ57rec0zr72WoOZd71n3Ixsdhs++sbH/Ppv/AZFlT/x23+KeZ75+7/zO/x//6f/mdt3b/jR7/0jpunET37yQ07THcfTAy8+eMHNs+d84+PvcXPzki70vLh6js/Cb3zvNxhdx+F4x93ja57tb7jaXLEddoTQkVTx3cB3v/vrfCNFbu/ecffugYfHO3760x9yOh3oNx392LG/3vPRhx/z/PlLvAQe7h7s+LuAD95QSe0arOtRSyfZdRKnhM4kMcLU4bsREdjsdvR9z9XVS26efWTkol0gO0XKDGWhxEdO735Emg/4nHHZuka8FLQk7j//xzy++Sn9ZsP+xQeEfqDbPcNvdpA7yAagMC47h0pGdUHwuJJwDKAOKXW6iUUjDpNRQDwarkA8JEtjkU6Uhy/QdITDLeQJyGjqQROli5AfEEZcioh0OLfHubGOK8XQf8HQbdqBjGac0iNaZkp6JOfJjEt3g/MGThAVVDzabcF7Ap4eZ0fsvEWg5Z6sj4j4yiFnaq/ej3WstuisWZNaaRUIfYfvKhCheeuVssiVYqk6FQzGWO91VU92a/K7zg6HefEO1JW1Z7HhlVwWKM7EKpdciyUC3nOYH/j08BPmfMINJ168GHi2H3hxsyF4o1JGstXmuiuTKQmmEJ2WmTidIFszcC6Kr6k+cZZZcBJ4ON7xeHzgze0XzPNEjqnOVUuJFU2IKiktFAw6rsXSfZ0EvEJxnuK0grTOa1fTNzN1kERDOqwlo8LKmi5a8TUFo3FbDL7eBKotdWhNuFrXOUs8CyuJslqGo5DtHDvAOWOVCJaVaJx8uaoBz8vCYToZg83Jfubc1s5fLnD4lTZSPjhjsiY/caSANco4257LCOjrtgtP+En01H7V83vqzp+Wii8paNo7zwupDarzsV0arPYcWFPd5TE+iQFruLii40TW17VZPj0b67M4ndD3PdvdFh86Xn0wEGPixz/8IZ/97OdoySajkSOn6cTd3S33d7fc39/hvOfly4WixgYw9AObYeR6f83zmxeIFKbpni4Mqw6URVIW2ez6PRtVbm5e8vzZh4h4QvhJbVGypsMuBIZhYBhGwCIpX9y6cH2do7Gec412LZIy4+yq5+sEQtcbm0bf0/UD4qwWphi0W3RG84k4vSNND5Rc8NlwTiaUmVmOb5kPX0LZk7YbRBNh3CDa22RT6z5+EhmTAY+opTSsUbMViusK4rSmBTGX1HX2uabZEhc0Tmiu/UrURdjlOs6LHWSJtlif8ezr2FmdpMZDWKq2E9ZUrOmIiseFrUVkWvkMEXAepKuMeBZJqHQUERwzUo5rlHMpDmne+gVo4mIsI2cwi4ic9cnWKPQ8F1ZXXS93cPFLmyoN9tzmCOuuoHCOoAqrsjUomciUH5nzCfGF0XuGPtB3DWxU1wLnTZnZ94RuxPne2BLcUttT5OJYWDkCESHlyLQcmeNkHHlr9NIM94VT2uQtakSlleHE0L95vZd2YufarLHh1MlfU8ArscBah7qIarVmJ1q2tDnR0tK19dLDBQDnKeSc6lhcMHBd3sWa7ns/kjJuQy2XN+8P336ljdRmM5BSwXtHzqU2kb43M2zOXBisX85YtTD3vbv7NOBq46JFSfV2f5U9pqL2LiKoy9cFWRUGV7OmNZN0GWo7OWczLuzpekjNg3aKSuE0H/nRT37Il+9e88l3v8XH3/qYq6trPvnkO4zbgT/2W7/J1fWe159/zosPbnh4uOf160+5u3/Lu7tbvvjsM5Zp4dXNN7gervGqPLu+YvCO73zyCWPX8ZOfwds3n+LEs7t5xs2HH7B5doXfGju61I7zmxc7Pv7Wx4QefvSjHlHrXUo1zWjaQloF8RKqDh+kFm8Lfu1POpttWa99Nr2k4Al0cHVDJ98GUTa9ELwwDh5xJ0pOLHdvSHG2PqBlYjnccvuj/4V4vKN3SucKPgwMmxvEeYIou/0NYdwS+h7fdfjO4TsBImUxhJZ0Q5X08BB6Mxr5wbzbrGi0RUoXgwJL75ChRmD5AXEdRAeLgzwjakKHZRiJwVVuvC3iPOIGpNIqKB7UUIHSdKbOvAAgSiNuRcRqUdIg6idEM2X5omaiO0R6BKXDmpMbPRR4HD2CY0x7+mpRmsqrQyllQuuxrN5+HZpt4VudtyeJDD0bhfem2Ppmp6xqAV4Qd+mR1Xlmwk4rXE3qzxSNL09zxrEgRJJ/pNtaJDP6DeJMokRxKIFu2OP9gO/2dMNzRDw+1Gte04UFa+tochSNZd2ELRO5RGKaWZaZ42nheIzstj3jsGPsR57tn+Oc53RKLEtmraEBolrRprnW2+u+pa4DTX69AY8uruOa+ss1bVpavxQ2FitqsKEjZCWzr6hVBVUha9tnRfE1wc4guL5FsOcoKlfDtCwLqRhYYppOxJRWNpou9GzGEWuD+MO3X2kjNY49ORecE2t8TOYqrWn5On7Pqb/2yT/MULX3XKT6uPxRvdXVe6Gmb/wT/2B1sGo0A7p62+v79MLzat/a0DbNMSp1MZazkULPPcYNbirNINfF/LQc+fHPfkTXdXzv177Pt7/3HT788CO+9e1PGDc9v/7Hfo0f/Nr3+eLzz9jf7Hj79g3/79/5O/zss59yd3/P688/J82RwzfuiNev8OK4uTLE07e++U2248jxeF/51jzbm2uuXr1is9vhN9YkbBkb5er5jo++8SFFI13oETUdLZM5yJaWKKZummK0tF2oNQHKKgSsX3vvLD3XB4e6QB9u2G92QMbrhJBwvUdkQvOR+e6HxOMd+TRRphPz/Tvufu9/Ynm8ZRyUzaCE4Qp59l18N+KdY7O7wfcDoe9xIVhHfQAtkTIfLTslG1vgXV8XAIEyQVHKEtF5RlMmHyY0ZmTb4XSwWloZjZUi9hB7q0Wo1eZyPxLdBq+eLvWWRnQ7nNuAGKecjYnqylMNlQhnypMq2ynOEH10Fgk4b2zs8UukTLZfb4rA4jtbkINHOzO+TntQR8ceR6V58mWdCqXMmApxz2qSLg3VeucuK7xtoLNO0tXBe5JKuDBUdWKJnF83Ts6Kf64AxpaSzzFzmE/knAj+iPczyR/oNokgytiPhOCpOBAUTzc8o+uv8WFD6Pc8CfMEMhElW8ApglZ2FRu0tmwXrUYqLpxOC9MU2W+t92s3XPHi6ps48bxJ74jL49nIorhqpFCbH07E6nX4ui7UYym1oFAh4ZSL+tTFQ9MlVVu91m2BchgqEjOOlynDVjfTCz44CYLvDa1pcf4ZJJFLYYmRmA3JN80zKaWa6ssM/YZx2NBSuH/Y9ittpAw4IZXjTej7TM6yLnhg4oLy3mDXr0RUZ/dNLn8qT5ZC3nvtHAuzpu9YPydnA0WNytZJdY672rhfUYPVuBa9SBbK17FiXBhgLnqp2v5c/V5nx/l4uOfzzz8F4O2bN+SUGQeTZRi3G15+8AHd0PHd7/+AlBNXV1cgjpgz87Jwmk4MXU/vAz449td71MPHD9/g+29/g/31Fdc3z+iHAd+Fcwqmpp7GzcjNs+ccjwf2NzccpyPFRdQlfPDVULf7o3gHwxjo+856uerza62jpTFKRPMJSiGnxXqaUiQvJj7uqEaq6/HDSF6OxId74vERKYrTgHc9w+YapzAMStcXfL/HjTskjJVV2+G6AdftcKFD/Ai+t1TQyqFVmy+zosm48yTWtEpMlLgY/19jHNYMOVrU4awDUrMY4wSAdNYU7LxxL5ZGatq+I9eIogOxVJxxAfnzQKSuNpdOl8badGzoM0QRP9BYKYz6x1CGxjJwziTIqrQKZqUzK/2/r2zKl5HNBUrscn59ZVs74s9pc9q84ezA2QDXdR6t6YTLLIc2A3X+FFVXSchIiOAXRDO+GI2Vc50RvjrBuAM7vN/g/Wh9YyvlU6uGtWv5niOLuQMNBapq8GuAzbhBFbbDnk2/Z+i2BOnNIVidiGY4DKCglcx2xUvqepmeJHhW77Sm8c6H1Yx/ORux1Us+ozDX06PWEYXaamDHou24GnewW0fUSiu79kLlQsyJJcaVRKDUOpuIMY00YuFfZvuVNlJD36FACN7kNGrab5oWlqUqaarl79ui3e6T3deng8sMR2OI0ItvOluGs+Nmo8CSKHZT14yUsGIsVmOxTtSLFMhFBNU49taGxwr1FNV17F02G5/n3hmBaLtvdSgz3KGz/puff/oTfve/K3zj42+yGUZevvyA73//+3zjW9/i2csX/Au7P0WMCx9/8k3efPmaN2/e8KN//I85LQu393dsNl9ys9uzHTq63vONH3zCRw4++O7H/OBf+E26ruOb3/6E/dWVUdTU9IE6O/Dnr17iwshmv+Pbv/e/EXYDx9Mdp9M942ZzYahs8ez7npfP9wxjzzB0tObgUhuC4+lIjguaTuh0R8mReT5YAXo6kB/vMb2lGSQRhh1hc40uM9PrTynTic3uFZvdKyvkf/QblDzhuoIPGQkb3OaVsTR0AYLD+R7f7UyXatPDEBA8nsEW03SL5qNB0dMBVJAYkOLQZSLN93URqYtOLjBHcA7rQ3KUnE0U03WU7gpcwMuGQUZgoeR7SkmU2Sh8fD/Qhb0xFrgr8Jt1hNoCn1i5l5p7nGcoCdEDTqL15YTnlg7MB8iPFpGoJf2EXHvHjF1AEJMGkcGM8ekEpfaVBbVIrdtCpeS6qJ5czKeLTS+eu/j9/ZqvTZSv+Xwt6msjmbNijD2HFfLVJfyQEI24/ogLD/iidMlkUYIb8GJ1J+83ON8xDC/phh2NGBfVGilmqt69MZPUdJtzLfqB3tXrlSPHaUIRPnjxipQyz3YvuNpc07mewe1qQBMogJMCvqBOKJJIeJwapZK2K9KyKC3q1Gp4ilCldE15QTFHLrd7n+pCYqwpzSe5TLsa9ZedTxODbUaJ2nfovH2+SSRmrcwSOZthyonj8VjJdGfmeUbEMfQbvAt0YcBJQM4Fwl+4/UobKe/PXG8AIRj3VTNaObcIRZ98ztoB9L1nz2+7nByXxd/3c+iXz8mTx6XneAnRvdxPY054uoNVRqQam2aU9Mn/Z5/O7OOllTpHZtKKuA6m6ci727dsxg13d3d03cA0z6gaH9ruak/JmQ/ixwzjBnGOn//0Z3YdtRCjQWlVFRwMmwEZTOnUB4/zjs12iw81inp6Qej6nt0Odvs9u/2e7X5H0ok52melwljFWYrPe6HvPH1nNDFaF9iSk+kAxYk0z+hyoJweKSWyzI9mpE6PlMMdSkLcgqXEAPFojJQlUWKB4nBuQIKj39xQygbXZSQU8AMy7A3M0Ju8h3MdLmysLuA9jYNHZAsUNB8AV1GWZY2qpFDTLJY/MeXV6u2XFhkag7SWJtlQzFCIQced9NWHN3i/FiuOm5RCMEi8rHgsLiMMaUv1KmqWOGvI5DrwKp+QTJx95Muxbg9ZCyZdPb76eqn9UrlFiRXUsXbBvzeZLgfs+j1f94qN9vWjT6Kn837XqAG5iKBqBICC0xpJKeIzhGLEwsXqeaaBFXDS4dxgDPjOnmsTV6UBDsp6L5/U0tbrbXPSoNuFUg9+6Ac6Xxi7DUPY4sXjxNdm2lr30aZb6yiUyo8JqwusrUXgPWDK5TFcBne1nnR2Uuq1ac5sy3ZcXtJ1bbyIoKqhktUDh1Yvb8ffWGJytugxrUAJrUApX1sNvkbK5Rdsv9JGqh96AJw7Y+9b6i8ET0qZuTbamXzEhWFpk2sd3G2rv38tNOlyWwPllRL/MrX3NJX3h0RSQkXnnQdSk2dWlYreqQdxMRlA+WrE/J5RrIXQw3RPvp3xHfzs058yzTP76yv6fqAfBq6ur3DOs62Q7XEzsr+6IqdMR4/HooljWghS2GCknK73DPut0aZIXaBFzp5a9Yz7EHBbk33/xre+ie8cv/+TxO3DO9Q5hqFnsxm42W/YbbZsNwN9ELwrUGY0FeIyMz3ek+LCu9efcXy4J88T8fiAaGHorY5FXJDkcG6k39ZIaezwmwFU6Lffgiz02+eEzXO0JGS+Q3PE1cZEFUeRAXD43ldDLITOIj7nkzELqENzQLWwuB0Jj9eFkE+ICDkMFPXW2Z+qYVBLNa3NyWoS4qqepBBLqgvhrRkpDiA9Ih1Ddw04Zk2GAis9UozJHbeAZAM71PhljUlKIqUDqOKqLERJSkoTK1IQT+cCXfiopp8afUCB5fBkf01pWCWim4SWBDnVov8Ii4ILaDeiwWpXTYP8q2zprMX/1dgBT1o8nhgpe6IZh7agtjm99ishuM4bp1+KCBF0seNxVwjOCGZxBBnxEnDS472BUxShlGgLunNoSSzLgZxm5umReT5BUbwaaZA6u59FYcqWYi1A7wME2PSWot4MOzb9nlKUmDIxR07zPYfTlzivhGwMDgFwXTFHqSoXaKk9XkDWigVujDVZkFyvR0P0ldprpc0pbteq1Ptn11TXq9rWomaU7RadiZXbfks1TlaLKijTYjDzlCJzbdxVhRBMeLELJl8vOGPR+IrT8vXbr7aR6gJt0W9S1KXKaoTgSMk8/1ajatDO98PbZhwupszTTd/7Wd9nfGCs+1xTfPXN5yjqnJe/ZN5ejaVIrSGeJ6Dli12ddEKj1F8Na5vUzZm9OK51NyvYoHCaH5nSPV0f+PzLz0m58OLlK3bbK/b7Pf0wVOO0xe89N8+f861PPiHFxOufv+b+9gG8Y8qJ4JROivWFdJ6Bsa4RFZn0JIVgxx6CI/iO/X7Dhx9+iDjh9dsvyAgqjq7vGMee/W7kZr8x8tsAXgqiVsvJ8yPz4xuWaeLt5z/h7u2XxGlmPhzx4nj5/IrdZsQVDMLeDXTDK/rNHj+C24JIj3v+CmTE9Tuk20HJuPkBzQnpeiRYv1CKhmgKvacLDucV3xdLSeoJdK5oKbvb0W1Y6OjKZIKOCupMSqN4RX1lNC8J1VwzKObOmhqzJ6kSNdkCHWMdkwGRQAjXdNsPET+Sl4mUZqQEpPgaYERUo42bVXiww6K7TE6neke2oIGSlVyj6VISiseNzxn6V/V9ybzwckDzsd7OdnNrJOkSOlQtoVO0nrEcK7ihs1qbq2S2UtYh/JV6xKXDeOnxI5zBHy3vVF+7qFG2CIa2CLey3OCR3iPRQY5IiXY80oEPBGc1vCADDotYvYyVy9Dofwyxq7Xp+8SyHFnmI8syVTqy3pgwgkXQqrBUxm/FVKQJMHYDWmDstgxhR0yRU3lkSZFpOTAtt5ZFKGKN836gc9YrZYrLK964XqLSgsQVcLHW4qoRMCOVADFHkwrquFiszDBdLHFyCXWXldTkUhC2iZmqGrWSoiwxMs0TqSL5Yoo4MX5G7wOdN2Nla/HXBNZ/wPYrbaS8wWpoTa128k/7aozlu9QIixXm3NID0mLjlsa48N7OhclL66TrfFHVM7FmrR2dM2/nxNwlRF2hCpmxGiguB8jF/+fB0/qFqodZB80FrcXZw227fM8I2h+OXJTj8UjfPfL4eOTx8YiIYzqdane7ItKv+3DeM2xGdrkpoTp8cDXdkM957VWuAYMGN8/2yTUTur7n1csP6LqO+4d3LMuJl8+eMwZwZUbTkRwhqnCUA847Qj/gu45lObHME8sym+Oh1lvkwgbvPN14RbfZILmYFEPX4zZXuO0e6UrlVGvoK7FGxOCNfEF8zag0dlIFn9e8fynV+8yZRgIshEpcu5jUSZyMsZxUS081nyIewhY/dmiJVdJhwjmtMGpnyD4xfS8nGH1NKjUdaBxpuWSijogbrFdJnCFK1TxljQs5JZzf4LubC0NlN0nW5tgOpMeFHWF4abW+xcQ7VcWIfUURDHxi318L76VS2ZSMusWMEyfQbOjFZQGGunJWdo7quRt8WZBVkdAcFFSsgfkJEKFFmZfGqf7eDBF6dobkPNQuc+tFTawyl2y9Tog12rqmhtiBCl6Mgd4cy3JOa9XDySWT87IaqJTiCm9XscZY8xtt/YkxkkthmhemaUGLEJwBbVwF2uSSWOKJOZ5IeSbliEeQYuPA/nnWFmYFkZY+PEciWolsVwOlLXVo61pbf9raYUtBS0herj2s77lciRqThNaIyX4WkmaKGjdfKUqMiwElsj2PWq9kF/pzik+hZOudiumPAC1S53tcEIJ35GIQzVJMKMz7RAimRltKIQRPjIm4JI6p5ubXZqOaX8aA5E/ci9Wro97sFdtTa0bWZmkDxNVUXwNCXLBC1GN+ggI85wc5f0P92gv/UN06SgxeCpfV6K9ul8ZpRePYIrykzOu3bzhNiefPPmIzPuN4mhnGwGYcudZrRLY4Fwhdj/Oe6+fP2F9dWWf9vNhuxWh7jK2gfsmaZwRjVbg8JktBbXdX/Inf+hdIKfLxBx/wG9/7Pp7EIBM+31GmE4t2zGTuZQYH26sbhs2O5bjw+HhimRNLUjI9hIFue00XArtnH3J1tSelhbjMuG4gPP8G3e4aZAamek/MCEnn8ENHyY4ce+vMdwNOBlRMDRXU1FhThFJMjkOU4C2dmPOROR0peSEdHijziewDqe9NbqEzr90Nz+l2N6CRPP8U8gOeCZGTXbpgRqrVEkrM5Gkx9dRyopQTuQgx/gQI+JsPCfuXeBxOO6Qoab6lpEfC8BHu6hrx3owADnUd4nd1MGwR6fDdBj++IueZfP8ZZTmQi2PJCSeZIBVYoQljNEhofLAmYDxFnXHrVdqdMh/Iy6lGUDvEdbh8wuUbiijZm/ce3B6RAcVVgl+xTGD1a2RlI7gwsg0csA5wXV9ycn6qekngre4X84E4TygZ8Vu8h77b4sOAqODU1881qiqq4W0GQCk5W6tEnHi8f8M0PSBZkFSNjSTDzJWAL5BK5nE6sKTI7e09b9/e04cNz/cfWcqLDpOQn3k8vWFaDhznO5Z0wKsH19Xr4AkMiDhLqYnVqxy2SDSj1OQ7VtXeyjTeoOlVUOicsqu1JQu43qvNN6RL8w9qlJTrH6lY3SxqZsmp1qsXA01UFLAFC3a/utCz2ezNSNa2kyUuzPOJafojINUhVf5caxNN4/Lzxa2NbiE4crafpThyDWO0pROaN8JligHOd6n+ZRCcmqrQi32cI6bzT57c+PXZc5D2BETx9L3nkPr85vd2pKzeTXtBLt+0GooayZ0dS1TrIFkMdTNNE8MQmKe58uZFY00O1cAileHYWV0lRlpBuIndyWWeU84G/L2ridZ7tNls0DJwc33F6fGZ6ewcHylpIftMlEghE3VCnBhjuXMsSyJF4wCzMp1xxTnf4UOHhB7xvZ22V/u7PlAjTgXW9AcUW+GKRVXi1NJQLdVaG15LLgb3lmakWCNjCwBqwbshvsRZBOT0Ygw5xBs9kvMjWhVejQ7hvXvtqBIZdkzWhBkNdj6fQB1+t8OxRbQpoQG62Pu0giHW6L3ttC36ZrxMUdfUh8X1FWTiz59pY0xacy5r+si+p97UZOep8YTGYzVSgOso6UCJgeJsQUQ8xXXG9UbjQLwczFKdvXP0b47iRT1lDcz1fM0uc/g1UmjjT6vxcRUE4VyHb9mCFQ3YIg+FKl/SDqqUTE4LKVmkkFO01gX8mjFpLqUBCHKdY5EYja+vOCO0NWJay4qUkmsze6xCnMXGCa0c0HrdZD0ey940UEb99jWCakCOsj4cntWaCRVIcnFt0It17GLYXFyBFkW1n1nNCKWSKdpAEiZimEtr/6mxsLiVYURrw34puc7hPwJSHcE7gy4Xt1puQ8OYZlJuSpeVZFGLkmO0VEXJ1WPjK9ESGH8Zl69znvL2vnYv3zNQbcLUR6nvWbN6whk4cTGvnpoc28pKb1P/OTWU2EV/1vkzLfVR0xSrwdCzLRbIJbLkR3yCu8Nbvnz3JVOc8J1nM451QbaG280Q14nlxFGWiXg6YH0TnlIsXebE+nTEK63/oRXuL8x8NfIKJVFywuWFThfydM/tp/+YNB8Y+o3RF4UA4wjO8/D4gA9LJQo1Oey0KCVB6Hs2m2uC98QFHh9mK4O4vtYXrMU6nyby4S1aIikdzFsu38MPGwTHsBnqdTLaoLXeUQoPdw/c396ZBpTPOC/srvaMmxEqiSxACFv86K1PpkYXWh5BjpQ+kqlNe24DbjSWbBehRNLJgBulc2jvoRPC8wBZibefkeeZMs/kx1sohXGXGeItuD2i3wTp6cZXhPEbSLjG9NM9ranX+lPqOa75gBaKdPT7D+jKs8pqEazuJldAQcsCebG6VJkgFTQ+UOIj5EKJGUohzg+k5YC4YAKWLhDntxC2xlrRGft96Z7h/AZ1IxoM4u3F1SnjKzzZ4cSK7GuTcoNEyiUq1uaZZRdq+tDsHADOW73JwC4mcV/NQB2duS7i1vFqYAFLkVH7hJblkYe7N+QUyXExoArmnIlggpEOXBDEK8s08/PPP+PxcCTPns6NBOnRXCUu1Gp9UzyxxJmYLCPRhYGhG9mP13S+J7gOpdT+oxoV1fSpQ3CVp68VeHLORqGleoadO8G3a9JQeWvPVE0mgc3f5izohWHSmsosluqbkzFJxBKZs6W552UmZctSLcts86nb4DvrQWxYgRgNxLYsE0u0xy+z/UobKeeq7Lc4m1RceE1OSPkMnAg+UYKxU1gRoqUP3NlAXUROq07RWqNq7tuFo7G+dPkCXLgj75mei+a5pxZqfY++95uiJoPQ/snqWD7d3otgzjDRswk1uGgi5gmfhcP0yN3DHblkhmFkM87sNz1jEEo3EJLgXLCcsg+UJZKWCWv+tIKzVuYN6xZrUQhPjZRcXi6tnngyDjxN6HLk8PYzpsMdXb+j60ek3xKuX1aaIUEk0rnApt+AWn1eC7gqjuedtx65FOn7wDh2tuBiClQ5LpSHR0o+EeOXFGbC9gbNC+I7M4ziyPmiqJut+H06nrh9U41UMBouq20FvKuFccBVZWFXEhJnINfUmN3H4qy/SLpnFlVV3SNNEyXNJlHhDE4uIeCHHaiQDo9ofoumiXw6QF6QORHSA4SXKC+BAN0NhBuQAYOIe87sk34dc00ssXnJ4gLd5mYduedBWyOEPIFMoB60N7TlsqDznekhzRHN2YxUPNhC2ln9pcx3pgTse0K3R3yH9gs+7FC/QwcsevPO2NElWO2qpj7lsnt0zXG7NolokaEZpkq2fAEIcL7y7jlPCBszaDlZnxPNOClrvpEmh36OjGI6cTzeWgotWvRlX6Nm/AI451Y4d8yRt+/ecXv/wLZ7xibc4MVSfAbTjhTNxGSLeyrWexZ8TxdGtt21gQ2cpaWb9LqIo5RcFRFWVBQmqmhKuTnF9cYa4KOst7NFUdoistXXtYqV1rnblrpSjVlp0ZNak24siZgjS1rIJTPF2ejMkjXvehfwLtB3o0HsCyu7jDGhR4tK/yiIHppssljutSqLFhW8O0caJRhMs5TMUuk5gHXlbj7lk201UMDFNK8v1pQf5xW4vdL2eZH+avPosuu+7ubioxcpPrl8S50oupqo1VC1XVx+ptXIWkB1aaDa27IWljgjIszLiXk5EbrAsljUdHd3jyuRTb9B97YA911PcJ5UFkqKtYYd1jmumTUrswJI6vHntNjEzNaIm2Pk9HhPXGbe/OzHvPvsxxwf3vJwe2CZF8bdhuJM58fR1YevaRm39iNSW3xKTMT5RHHeJnZFyhU6I0N1geKDwY6HDWXOHG8X0nJCN4+4/b0xpm893neklMnJapSuJErOBBE2fUA1G2t1USRlJBn7Qq5RgBOT/3auQoe1kJcTJUe7LqXg/EAw1ju7aM4BHhmu8WGsdXxBnMe5EVFHt3sBzzPl9ICLEU0T0jlycVAcUipZLgtILUarr4+LyDA3Z6qhvMoKQRaxKAOtfV1YLUw1UeKRko4QH9H5FuIjJR5NYS8l0ulIyYmUJnKKSK0DI87qKLIYKWvIiAuEUSnhhIajISpdQPoNGjqKWGRuEU9lknedeeS4c8rP+TMA5gJ8tPqHTam2eDsnLHVr1+ail6tFUBV9aIt3RdEVY6s30gdDUKordh0FWCMp6/OblonTYebh8ZGYap8YVXFaDCihouSa3is5IaXgCnSuQ8PI4EeC7wiuslysa4z9XqTxjEu9v1qlPQyhmTVarY1AA0tUbd91bdIVYXxxwWpq8Zy+rqATLWRVYs7kUpjjzJwjqSSWNK8RktXATGHaO49UJ6PU4yqlEJMBe1KOT6RJ/rDtV9pIBW9Nn2anLP9pbN1C9o6SC04cySVysi7oFHMdtHI2NE/SZ09N1vsG6iLU+WpIdZFBoTI+rFIEUuuRNWNx+Z1meKpP09KFQMuTt4ZAhcqveWFY5eLrpaF4zrid1tzZ3p9y4nA8sMTI/eGO7faWIsr++IIYlTI98tYp17s96cWJPnSMfSAEhwRBemMZ12Kd+gbBFlBB/RltpWKOwTwfyGnhdDxwOh45nY58/rOfMR0PvP3J/8Hdpz8kzguH+3tKKVy9vGLjAoPv6HREKqGpwyHFk4s5JW09LixMvMP5wHb/DNePFNeRZYtzAykM+K6njDvYPSdluH194nj7lmt9TfKf0W/2yMuBMDjSbHUEpwVfFiiZUYRnu4EYF06no5WylgWpqK1UPIin3xRcL2dZ9BKJ0x1lfiRPD1AEF0YCAU/GUHAbcB3h6mPz8suCltnSc36DiCO82DHefEI53rJ0G8r8iAsPLOmIy4GQZ6vx6AHBGzCkzKBCKWaQNAkabbGTYN+pJApmVMTtTWdL1aKMMlOWLyj5SJofSMs9xCP6+FOIJ3yacHmizDPz/VtSXKoLZZ57llbD8BS1lLEPxkLfj2/xfQ9+i/bXiB/Qqw/ww75G5K21pEPw9N0O11/V3iWonaEGNrmYpSu1llANGCihGreKRlWlNTFbF1MFx1RjVRBKTaPlmG2BzRighkwu0Qa9FJCMOIfvAs47Pn93z08//5R5jkxTrtfe23ELLHlCMLVcLZkcF1wuhAKbsGGQjj6MbMIW57zVk4rdsyrUQcI0xhxCqp6h5lzrliYt4/B4afUy62Oq8RNrvauKSK6oY2mGuRBr605Rqw2nnDnFhZwLj/OJOS6GTCyLAUBipORM70fGbmffXR2hlAspRUpOnKYjOUdyMaOWyx8BZd7L3iNHrX8DKg5X+abWRb4Uo5ypTb8X8c8v/pIW4Hx9du7iYNp/F+nB5uR97Yff28VXUnj63m9fjbSebPX7W9r+Mno6my4qnDYh2bHEmWk50QVbgB2OpZhWzBIicVmQUmxBLQ6n3vSYhLWQCpwLzi2SqiJuOSfiMhPjzHQ6cjzcczoeOdzfcjwcOD4+cDoeyTFhOm+ejKdgC5uqW5sXgZqbtw72nA3QkJNCqjwMQmWCcOdJV4u8BTGYtzf0FBIoqRCnI068FcN9V/drY0Yq7Y01Q5rgoKuRrZRsOcciaLLeEx0umj8u6pKI1PpUBR1U5VtLc1VvsnPgPFKJ10RaeqvSRbkAXcQPV+althSw9KsXbD5zzRSos7RehZUbJ6ClxsQbSW0pkZKPtuB7B6WrCMZCyRN5eaTkA2V5oMyPaDpBnNA0Q1rQFMnRgAQlpbUtYo1NqhNTtMLP1dLzOXiQXEk5Aq5kSjoh3tf0nkV1VvPxlNLVtKn9jfI1jDHndMIT0E4DIKxH1ZKc58f5ucundQ20BEcIfa35FGMGr+nB1juUaypsmhditHO16KumvdVMIGp1c4P7X9KqecSpNchLNVAryvF8nFoNbGlxkuoKupA2B+taYAi+r1swWk3v/GinXdqc0VIf2WpQKZFKIeZIzNEg+aWlGVuNy9oiWrO21aIqUKIYUKQ9Lutif9j2K22kvHME5yiNrsSyGhZRZdMlur97ZF5mTseZGHNdgOoOLn6uCJfKLLx2cdNuIci65F/aisub/YdvDZL+3tevvzVDUlqY0qKiGmk1NDptkq4TsobsSJ0M1oTopNHk2LGrKjHZIHv95c84Hh94dv0hfRjZjXv89Q3jdkdW4TAdWLyjlEAfvLE4ZI/vOrr91rBNqqhGRF319TzLPBGnxLxMfPH650ynAw9vX/Pw9gvm44k3P/uM5TSRpgMpCchIv7+xGs/2JQw3FN8RZzUNHq9kEXJciCfz2tJ0IqcF1ztC9vTjhpvNt9g+f2YlxxRJsTC9uyUdjniXCd7Tbfd8+P0/RvrGt1hOE6ef/R55e2XKwttrVEZb+FNmOR3RtHC8e8d0uMNJoXPJouLpgOZUkUoRBBI1WukdfgggBRmukDAaT99imkDT4wPz4xG/2dHtrxEfcNstLgSQLa57TuPYU42gAejB3eCe/yZSIsodqg9WrB/NkGUJlLwgmnAlVVh4hbFnyFEQ19H5j3B+Tzr+nMO73wMt+LCpgAkLQkqeSdPnlHyCeUEnO5aSHi1CPB1I09F6kOJsPJPOUlsFIamn1Kgh54L30PUJqZxvMjvwMxJmq3fm2VST3YCEDSKBrt/hXUfK1gIgvsP1e8T1eJEqm3GmTDojAqF2WNuoXydyndOuTjLRCzaXOoezUpZK/xWBIozdNcP4glwijw9fsCxHbPlfKJq5Py6kDIdTJGVzsLpurCz+vTFDtABOWcmRS8ZARw3cgKfXnj4Z6WzUQm6mQ5a6sM8oNrcbxFeTnUPApGqEVoerlE6uGo5Wv6/3yXzLyvC4KhEUlmTftdTerVOM3B2OpjCcjqQ8V1CRGaZOOrxYijK4vqb6xNKEtcG3ZGvwLTlZhFYs9f/LbL/SRsphNSlRywCZl9uWZIM8nk6TkRwusUo3Y6mpNrIvPTK114RLE6Rtb+szPPntwkhVT/LrTJh9VeuZevqey19bw9zq0qnRvKy1pva+NdV4uTWv6KmXdP6gnXfKCSnwcHjH8fSIFuXhxSdQlGe7K5COgrDEmVKEIAHU44qz3o3K0aX1XESNWJPac5LjzOl04nQ68u7dGw6He+6/+JS7L37Gcjxx9+mXpGlZOf9c6AjDFS70uGGPdhvUeXLWilwyIEyMkcPxSEnJaj1pwRWjLMpBkD7QbTekOZLTbKrNxyM6L7DxhF0g9CNXH3wEKfL2Jz/k4edfmKbUq2/YItYJhB7NhTgtlDgzHQ9Mjw90AcaNw3tB4kTJuS7cJ3BQOkPUeTpK08LqBkO1JUstac7EwwGNiY6CCw7Xdaae4TrEbxG/NVaKOFcuPEsbqXS43VX1qK9QfURcwoUZXEGxWoeQcY1gNT5SZruPOQriezq9QRgoyy3z3e+jJeFlsJqaF1ywtGM8vUbTCZkLMlvdxuQpCqfHR6bDI0IlTxJMS0mVgiOrp6iQonG5qRbEV0RtZUoXH5GUamqroN2A+A3S7a2tQAQXBmt9KAbW8RJwQZEy4LHI4Twz5JzQuJivT2ov1DkqrH2S2iaU1oi3MexnEHWEfkO3vSLlhXl5IOuCWbpCSYXTHFliYVqS1QlxBG9jwYJoM1Il1++sbDHGIObX0hoIXgOhpmgjiay5Rm0mC1K0tRi0NY6VVNZqoucHtY4ma72hGvH6U2QFBhrJQSlrhFQ0s6RYKZtmHqfJEHzlSC7zaiQdji4Yo0TjIhRcPU0jnY1xMbh9MlSvkmt9949AJGXDTlYGBy825JaUmJfEaTpxnCbmeakS5LKiWoD3QpmzcTvvu36PXL6ucPkaT41a22XrGH9yrPW5p/DZ92OwhjLS82vaJqM2O/rVuE2bx2Vc1U++uHqYzsl5/zUNJpKZlyO3918Q44nr7YbN0CHakfoNTqWmblpkZsfvvcN7XwkVlJX6CeH23Rt+/MMfsswn7u/eGEvE4wMuQdCOzXBNdhk/9sjQ40NPN1pEIcFgx07Mu3QVGFNUyUsmTbX4ukyUPOOKwxcHc+bL3/99ltuHWsGy/ozUBevzCgUJBe+EMXR4J3S7K17+4E8g3YAfNlbknQ+U00SOC/PhnpKMuDanI+TMYzSRu824o+9GIKHFGnLTPCClQ7PVDUSEUjv7LQrY1RRPBzmjEpiOBdclxs5kI3w/Ie7eJDziOzRHlICqBwmo21iPkwdxG8RlFEvTKTOK1UxKTpAzaX4gn+4pKuRsvVEnjTi/4XT3c+LxFs2JJRvIolSCWyVBOQIRn8AnGwMxHq0eMR1ZphPBe8I4VkXkgHhHSUpcoiG6qneu4pEmwOctHWvNtIpzSqrgG1flVTQnkuvQnHA+m2HKBoaRnGgMGuK8RarO12F+MbfgImVW1hTdOt+VKgCoFUuhpCURT1ZrqaGGGUEXyEZPj3cDWsEWIcBmA12vuHDDbm89fGlxRnl4OrLMJzQXSopok+CobqeKkWQbn34w0U6zmhQaXH1BdaqLu7F/CGGtO7nVYBg7BbVpFkzKZUXcVqRfqZD+opCqQV5SJKZk97im8+6PjxynI1NceDgeyCWDRCDjxRNcX2mPejpvzOal9pzlbHNW1dqAvHO4oUc1VCObjE39l9h+5Y2Ur3lXcxTMG4jLzOPjgYfHA/cPj8xztKb52rjXYOpmB85GyX5e/n1Ozdlz57Tf+f3nny3aaX1C6wBaTdl5Ia9vrANIWSVCVmPDGURhiWIUrQzZWMgushow+/709EgvjKDl+APngrH1LigLh9M9n37xe4zDlt3Y0/eOst1xtekNyq8ZX2HmwUmlOgkMfag3QasRtPz7pz/9ff7+7/y/KHFhdMZOEbQnaEevPWG/BRxyvYe9Sdr3wx7nPMvhkTidCJgRdCLklCgpE6eF5WEipYUlPZDyhBcI4lic4ydvHgg+sN1fcf38Od47+gDeQYxHluWBrh949eG3GDd7nn/y63z87T9GipH7t69Zlpn58Jb5cKhAm9kW++UW4gNLmjmc7hGUm5vn7LZ7nGS8m0GEpCPqe3wIpNO4Tk4RIVy/wL98Zvdhm6Eo092R49tHfCg4F+lGRfQe5ybrS5rfoGm2vL4qKgPFvwQ3ELbXuO66plsbCu2I6mygh/SIpsTy+Jp0/KzKQhrjdnprdbd0OrIc7im5sBwzJSnTNHM6Toh39NsOFzy9c3TOGQDm8R05zabZlSPjOLLbX9H1vdW1nCPqwrwcySljVTwjRC3GmgzZ17STmLyFB9cbs4rLES9LrT0VvO+M5ilEizRTAdfX1JTB/vt9V6MIWcf8E5j66rCfmSQsqyCUZJFTWSKaC8s0c3o8okVxFYjhUrLFHBD1eLdFpUMZ8N7RDQMQ+LAf6fotKRWORwPgfPnZz3n7xafkGJkXMzyI3c+CQ2vzdMfAgF9p9QqFVBYikVImcnkALWvqsnNi/V84gobaN2WmjiLkSp8kztagFTSBs6haamovGvH2vMwssULj1dB7X9y95d3dO2JeOMUDqsrQeUP8hpG+3xAkMPgNQ7ep9W4zetbEbGPTWoU8IXR2TSuycpr/CPRJtc0WaNYCftM1iSmdBRDXutP7n6q/6dcYnq9k5BosndU7uQyFLqObrxV6k/Nr6xesfUWrA8Xq7T3ZIReT7RdfB7k4PrmMyJ6kLO13C/UtJHfOE/NCKuZJtaLwOflYPcsKYEjZGltd7aCfjzM5Z46P95weHyjJWMU759YI1vuecbPDhZ4yDuRuOHOptWJusXy3akVbpUyOqebea6okV+oXxDR4xBF1Rl0iho44nSjemTKww+DRy2KoqGUmeWMu9yFUY22pk5ySkbfGSJoNWu3SyepAOVKyMW6UtJDzDFJwGAuFJmN3Fm2wdENReecocSEvi6HBaJDgBoUWtGRKFkqOlaXL0joGUMkGlJCASsaECoG1KG+RQmNSp1grhtamutafk3JCc2E+LVYrmmfSPFNSYZkSKSrzvLDMC+IF9eBzQb1DnatR5UyOM03qowEAtII9rGE2r6OtAWwsnaTtSUPAI1TRMUp9NH5K5xRX+2iUADKbppUbbVS3eyHeACm1D0KoNEfSwEJP0yZtDFNbAkyt1vj9LM1X6dIaAhiL+FoWv3H+aXWORRziRkQ8Xb+lH7Z4X0hxRkh0oSeEfq3fWKq2rkVr5OdMM6q6tGskpYWCRTel1adbOaOxmuPq8bkL15nzeev5zNe/pWVSrAE4l0JMkSUuJE0seSZmy0Sd5olULO0nKCWc2Uescb8Kx2Hrna7Xya1j0nnLLA1DsH6y5pT/AkDZ5fYrbaRyzGhQnLeFLcVETIn7hwNfvr1jnhZyVMhybomAVWBwDfnr7za2z3Wgr1iFmiawT1eCqwtqlpb/XdN6sC4kT+Q5qhhcpUaAmqNFDbexGtN6vFIZH6iLaR1p9XgaIdelOZGzQ7kOUevJaIS1NE0jLOQ/zkeyZqb4yJQObDSQXMJ7oYjHkN/WgFikcHt3yyFFNpsNV7s90+nI//G//s+8e/M5P/39f8z09g1Q6IcBdY7p+MD0WHj+6iN+/U/+37h58QFv7u94+/BgctOnE1qK9dwsEyk7ZqznZ7mfiSf7PfQB8XCYMtNpphNrOLbr2ENwpGnheHuH9wKjWAE7CJthg3OO+HiLTo+cbp5xvLkhZ4jHSFxgepw43t2Spgfmt79PiTP90BH6zsABNSaJ8ZHpdCJ4wfVVIXo+mARBGNBuaxySXQfOM02PTO9e47yw33R0nUGtN3vrh8mLUpKvsh51oaUH36Mhoj4iLhhQwqmRm4fqXGVjbc+pkKLVhSQfoQTwO1x3w/TwyO2Xb4hL5Hh/YJkWq3vlhZILx0MkRgM/OG+ku4/xEQV6LwxOKHFiun9NiTObzcA49pSUmOeZAmz6kW7Ykoon9DNIZI6lppQKJVotR4KAh9B1dH5nPT1pJEpvaMqccQ5GZkI34+KE4wHnB/qNw3cbctV6KiEiocPFAT9ukKFmLioEnUY31Io3qmgy45rmifnwYOjNlGu96Kyu4LylE11NB4sTJLiV/MKk3I1miQa7loC4TGdsfmz7HWn/nOPxkYf7e+bUOAJtcvdiPH0dnqCOJu6pKEuZOerB1gcxE9yXHq+eoNZv59ThszeyWyeol5rhLEY2gsOVmu6HBjRFUWJKHE5HYozcHe55OB2Ylonbx3csKXL3eMfxdMR5CJ0B1YZgcPtAR++3eNdRVIg5470nBEM0hm2wdbaui8E79vstXWg0WI7j6fSLlvd1+2dupP69f+/f46//9b/OX/7Lf5n/4D/4DwCYpom/9tf+Gn/7b/9t5nnmX//X/3X+w//wP+Sjjz76J9r3OW9sK3uuIlvzvHA8TsQlNzqrp/bmMgWwBhVS02bKVyOo9z6PeT96aQjeM1DtfZZqexqjrTpSLWVXlz53GdldfK1Uj82+7wwOOe+zgSUyF0fMhVtWjXF73a1fYjlqJaVo3H15IZWFrKk2YjaYrRWAS0lohtN8YhHBiWe3UeK88MXPfsqnP/kRt28/J56OltkBxHtOjwt3twubq+dcv3zFh9/6hPlnwv1xQkskL9EgvjEaak6F5MxLX04Ty2HGh0C/MQbt1sHuxFGqUKIGoAglZiIniheSM0/Tu4EujAhKXiZKVJbjPfF4Sy6BHDtKgrQklulEPj4Q7z9H45Gwv0Fl/2Q8lDIToyIEtBgtki4mKUKK5KKo81B68J5UCsdc8F4YrkfcEHDjlm57BerJUShJrPkvWGpW3MaMbwA6219VijdOP7EmVXXOAjINFa224GojKdIjfkNOR04PM8s0c//ukfk0YTg886QPB4NOd0PPsBkpqsx5IWshCeRqpObHAyXNdF5MDLLOO0nJWj9CX1k5gkVOKVauN8X66C3SlFLAORw9SiBpR8kBLUJJ4FzB52hEv2qRg/eJ0E845ylpofgFMNSnKriuOhJNBkSBVUulReE1vZeSESYvFZxStDLeO3xtpHWhq45B5YZ0Dt9b3Q2pxM/iKsN3BQvUlgmHx1Pofc/Yb4wSiKYBZY6OA6ODwohuHc7SgWoRaCqJWBZwWpcsQfB47Sp3YLAoKruqQrCeojmsAiZ22aIXXZHDTep9XhZiXDhMBx6ODxxOB7549yVLXDjNpq7b946N2DhGzVi62nTtJFiaT+18nDPmkGHoCSGsjnvXea6vrxi6Kpapnq4f+GW2f6ZG6nd/93f5j//j/5g/9af+1JPn/8pf+Sv8V//Vf8V/9p/9Z9zc3PAX/+Jf5N/4N/4Nfud3fuefaP8G47SFbI6J+8djBUxEa2GpJKRrPu3S0ojSCL5cW7jRWv9pvVTnBb4FTWsjbov/pe1eViPV6JrOkRVrDUlWyub6ELmIisBVYxRCRz/YTWzU9ylHYlpofQznszE+L+Mtu9TVefILzRCv1mkNws6MyKdp4uFwTxcCx/lIIdO5wfjYaorEFxi00JGZH2/57P6Wh7t3fP7jH/HFT3+fGCfTwFGYjrN5it2eDz9+xbMXL4k58Xh8ZF4Wcu1b67ue4jOlRDOQJTMdjkZkuVjzn/N2fYP37LZ7Q3/ljEsLAsTlRF5muj4g2qNeSJ1ftXY0WZE+hIT3sDy+4/DlZ6gGYhrIWZB0xDvB9T3+2Ss0ncjTkdPbzyyF5IIFx0nJPZBHhnCNr567se4nyukeFU8ed7bYiadzHUIhHh7QU0b6Hjm+w7lAH8wrlSWA78APuL7SG+kWLbuaFusrQ0OP63oaJZXVpGzxFefRcAU6oP0roCNK4uH4KfNJeDwqy6mR1hqc2ArdEFRAvc2I6vwFr3RdIWtg8QEp2SIM35gFDIRjgJaFVEmKS2rs4QYmiNnSkiJdnX6KLmpyU97hxVs/V/Hkkrm7TwiF4AqdK3RB8f7eaKEQiu8Bk0hBlRJ7SjUmpsGF9aVpjZKyRVVpPhlNVs543xnJbQVYSANkiKvNx974KTsjxRVvcP+VfgmDwAtaWVAUjYl8OpHmhceHe96+e8sSJ7quw/ltRcMW49ebLboLOHxlxUhqRsQVh9eAVB5kr46+jHQl4NWvWd82nRWo4MK1drVC1bEmZUE4zROnxUimbx/eMceZN3e33D3ec5pOvLu/s76oXJkkCAx9rrRJwZhQGjdkZdRwzgzRZhzw3jPWnz4Ye4z3nuADiAFrcuX6+2W2f2ZG6vHxkX/z3/w3+U/+k/+Ef+ff+XfW5+/u7vhP/9P/lL/1t/4W/+q/+q8C8Df/5t/kt37rt/h7f+/v8af/9J/+yr7m2Ri723Z/f2+/KORk+e9pmnn77oHTvFSvEHJu/kpLy623krqiVEBB7VNQIy0tpQ66Nvik/V6/9D2DtxomMf4uV1Fp9jw0UMFZidceX5eSbV7ZZtxy8+w5iDBNEzElozOaXBUcizV/f4ZztIjH5k41ohVyf2Gp7QThbCDr06rK4fTI29u3OOe4Pz2QNJnX7IWunnVX1OQ1yNy+e8sXP/+M+3dv+f3/7R/wxc9/wna3Mzn6ql2VS+ajb37IN771AzY3N0wp8u7xjuN0IiaTHhj63tJoJLJkptOJ4/0jKUYjBSiKC9Zy4MRzs3/B1eaGOD0yPbylpMh8OlBiYhxHnO4JwbF4jyZHIhI54Txs9gXt4PTuC1xRa+71G0OgxWTgkM2GsPkWlJm3v/e/8PDpD3HeW0rJC3mrhEHR7TWbsUcbPNp7yjwRjwcEoc8F12+Qfssw9miJzHe3TPEBAkindH3P8OwF/TBQZEQZIexx4SXiAqXsKHkLKFmTjacwghsstdcaS0smx2jyIONzoFgztL9mkoV3Dx3TYeZ4pyxTIceZuDwgIoxjTwieUpqRcnjtcSp0PtN1xsLhXI86xfnOjK8/G6m0LCx+Is6LkbGmRFoicY5kFWKdj04LeOO7SL7gsqLBEVwwCYwMOSce7k/EqIx9ZDsuDN1C70FS04UaoSSK30DO5BCQ4G3R1K4Ci2rtLCsarf4UT0eW5YB3HcGPVYm5Q8XjXMB56/UJvrdUclAk1HnvasN8XfwvfT7NClHROZIPB+LpyN2bL/n09af44NjsBrzf4Iu1bOQ5sixH0EKHp6vxTkNYuuII2uHErUZszFv6YsTDkup9r6C+IoZJWe1SLTq4Vr8qjoLj8Xjg7f1bTsuJL+/fmJF6d8vd/QPTPPPu4YGUs6FrqxOyHVz9eyC4Pc5toMLcnXM47xj6nqv9huA9wziY0GHfGbBEsR7VYgZqmSLz9MvpSbk//C3//21/4S/8Bf7cn/tz/Gv/2r/25Pn//r//74kxPnn+j//xP853vvMd/u7f/btfu69/99/9d7m5uVkf3/72t+srFrIuKbHE8yNVsERrwG78ZK1XQLx12DvvEW8e4eXDe78aFVbYOGvgs0Yqq72pabyaN34SQTUAw2U68GJnT2tYrmphBYZh5Gp/zfXVM25uXvD82Uu2m0YbI3gXCCGs6LFG7e8u/16PUy+OlfUknpiuih5c4sJpOjItJ5a0sKTFPKqSyMWKuLkkUpyJy4njwz3vXr/m9s2XTKfTSiJpRf9MwViUxbnqjXoTPFuMnLIZ7dV4a8vQmDhlo5AxyheTTMh5ATUFZuc8oRsI3VglAWyxLtEQaKLOagZI7XaPBoyYT6T5SJwOpOlAWU7ocqIsJ8psdTGtQAO7WB7FGaCjTjb73Y6ppAUt6SK1ZD8bR5lqRWw6R+hHwrjHe4Oik2pEk2cjm40Tpf7UOIEWnKv9L5j0O1mNjTyX9dqsj5wsfbokSnGo9Liwod9dW8Oy78xoFGWJmRjTBbjIAA5GaNraFs6unUXckIteNIBWcEZlHyiVFeTyOT3TbdOkQ4oKpk+pFHGo86hvBZAOdR1FAkkDS3LMWerxZmJaKlfgbBFhBU9cyqaUcjl2SuWQq2rDrb7sfI2O28NXx7U1vV46lm2ynN1dG6/nFGKOxsIR41JZvy3c8d6z3e7Y7fb0Xb+2SVy2pFy4vUBLGfrapGv/nLozkOMyglofl/S4tvg1Hac5RiM2mE8c5yOn+bQ+ptladZYlGiozNyq2CtiQKrLpPN6HOh7t+njv6UIgXERN3jl8Iw1uzcQ1FWmgJ/uOX2b7ZxJJ/e2//bf5H/6H/4Hf/d3f/cprn332GX3f8+zZsyfPf/TRR3z22Wdfu7+//tf/On/1r/7V9e/7+3szVCI8TjMPhxPHeeb24ci0RE5TYkmVwRfM8/Rihh+pF9iKq65e/K6qZWpKaBUNS2mxAZ4TWi51LM/RR5vI1jtkkOkGXZUWQYnBtlvUJq5Gd62SqVqlnU16wgfPxx9+iz/+W3+SfhjWtMP//g//Af/d7/5dtMB2tyV0nqkOOkSt78CB1nSZpYBSDf4a3Qy44KvhvDBkmIfz7vYN94c7kkZevnzJHLcMvuBYyL7qSiXh3esTXoT/43/9R/x//t7/yDyfWObH2nsRmZeDTR4v4B0lOIp3xFJ4vL3HHyeWorjOWwOoagW/FOIpEU+ReDL9HmtlhXiK3Oej5bhDVw31wM2rb1NS4lF/wiJ3SJpZ3r2DYUN385tsNs+J8Za4vKXkmcO7L0FnynREpwkXerrNM8R1nO5vOT3c4yoEW0RQGRhefMfGwVKNRoFQQGdluvsS7z2bfmvs5jnjq1R60ohpm/UghTCMXH3zT9KPA8fXP+Tw2f+Gy0qaHiAdKXNH8T0uPKKzw4Ud3Qe/Rn/zzKRRZqOKYkr2GQcSKrv2dKLME/kQifMEAv3VljBu2b36hO/8SwPHhzuO/13kfpqYTvD4eCI4Yex7xAdSLJxkwXlfG5eNJHZKiZQyUyrkVHg4TURNDOOA9COdOsIS8TKRlmi6XxeRlPjOGCJcQMMIYaRIR4oGUu+7nrA1EIUXM96d8+gyE+cjp/mRLis4GE+JfbpnnzNh2CP9hk4KvvSW4ixCqtphLYooOZKWYzVmakSovseHDeIC6jqr+aniSjOlZZ3ua2q8rQHF6k+UgkZjVZ8PE8thYpon3t29ZZpnslO213uur6/4wfe/z9D3fP7Dn/Dlzz83BhfxqKt1YdXKMGEGanQbvHZVEdvg6a5apEIVQRQhu4I6IYuS1NY4g6Ub55+IZ4kLr+9eMy8zX959yduHtzXdd2c8nrcnDg/WAJ8r3N6JAViC6+i7gb4f2Wx2bHZXBB/oQqDznuv9jnHoGfuecezxztH1nTn9LkBxxgkYjUFmmWam45H5/yzgxE9+8hP+8l/+y/zX//V/zTiO/1T2OQwDw/D1RbaYEsd55jQvTEu0SCoZ9v8Ju5dnNRRG/yKrlffiCA3O6wxFJ5G60EtldD5bfWn/r6FJNUgXBsueY/XELqMdqazZ6+AvplAqIoTQ0XUd+90Vr159yLjZMo57Qtfz5RdfGPU9ha4b6IdQWc0XVNSYEJx5popxeZW1fnbu2GrHuJ5H87y0MM0ndIbD1RWn+WgpszgRO/P8srdC6SmekFx49+VrPv3xj0kxMu57ut5bfSIvIJZGwYlBmKvC6DLPuFzQYOkxVWrEUr3vpORkA7qkXMkA5P9H3n8s2ZJl57noN5WLJUJskTqzBAp1AKpDsnMvmtf4CHgCGtvssMPHYId4GDZoRmPvXDs0CpAACgALqMysFFuFWMLdpxq3Maav2MVzjCzaNTu0NERa2M69c2dELF/uc4zxj19QpKrvoDGYfgRXCWGkH/bUklm6nrp4ajwr086oCt/7DaUeEdMcIuYTks9E35NCj/WKsVsbyKcH0uNbrPcY2agXIA7X75EUybFgpOhwWo0KZuNEtZbeuAtJx7TrLhSyZCUpGAHv6K+fM+6uKec7ZhxIUhsnUcsncapZsuYBCYlQF9WqGr2OIlBz1YW/fWJrSUlQEnWZiYdHMAY39Nje44c9Vx8G/LjBb3ZUF8hiiCkrI2x1QaiVmotavFqwnha1UMm1khuVPOYCsYJ15FKxrurk69RV4DJVta7ZGq/PmHGscSSCJVfBNZKJeA+2UzPXUrBD1Ps9V+YaKVKYlkwtgg8LfSdgDLUs1No1oauSpeoF5tZ5RUqm5qVpJNskYL1O2daB8zqp1oqlvb+IPveXKUobSlASw0rvV/p6ocRImifiMjPHmTkuVAOh7xg2G25vnzH0Aw/fvMEUA/VpSlNqurzXBqu41xiF+QKufd/8m0xgo894NbKuxDBGpYuXM0oMuVRO05HTfObx/MDh/MgSI8fzkZQy0xRZ5jVWhsuKw+pW5LJT8iEQupbT5izOW/ouMPY9XfCXNPQVkaLt7EQMtejus2SFpfP/Klukf/fv/h2vXr3iH/7Df3j5s1IK//bf/lv+5b/8l/yrf/WviDFyf3//G9PU999/z0cfffQ/9b3O88xpmjmeZ+aYWVIlZdG8L1AYaZ1y/LrE83Shx1pLCJ1eSBFMXZk/umR1PiiLqBbirILSJioCVrR3jQtpO6j18LfNmeG9AgUoDGRofqDvhYQYuRQO72wjBox88PI542ZLCBrn/rOf/YwY/z+UkugGj3MtHmCZiHHh7bu3LHHGWME6IaXI/eO7poHSjBdjFE40GJYYiSk3fH1N99ViMZ/PfPftVzyOI135CK6u2A493W6D5MLbb14xPZ549c23lKICxdV5xVrBGv0M7fnubSuOVgWMgm2QrE6pOsEKxnV04zWlWrpwxBKBVX6sljwG9R+sUmF6gKp7raHvGcNLyrKn7K6xxrGcj9T0FeJOSuMm4x0a/VEWluke4zpSqRjryaVg+h0YlTiQCynr4Sw1q7WnUc2/Hl564FmrnK0iculyoWDiu7bfVPeGkrYcX+/Jp8L5YWFJA4gjlUWpy7st3fhMCQkZpMykb/8r8vAG0+2x119A87bDW4RMLRMiBWMmXIhQF6SfkQrx+I7pfMJ2ATv2hH7Lj/+3v8+LDz/nu1/+KX+dFqREYrXInMBWsIUQHM4ZQufxruC8HpbtZak5rxGMUeF8CImcCjEmlpQ4HM+kXDjPkRgLpoCja9FRpV1DqEYP6xQFuxT86Ok2V9RSCRGEWanxXj3rkhhMLuTiKSXgilPj6JLI87k9XA7jfIPqFVaste1wRXC+w9oB63Syw1g9k1t1u2i1pKIpwbBKSbRuibpeJD0vltOZkhOnw5HT44E5Rk7LmZgz+9trPry5ZhzUvzHNC1KqEm2s+muotZieD6Y2zZNUXCuwKtTV712eBjld1QKlNXGVZg9XLWIs1cCSF6WazyfeHN5ynE8czvdM84EYdTeUU6VmaacaGKsi4BD0s+86xnHD0I+EEPDW0PnAphvw3tH7gLe2rR6aP6Bx+pxXg2S1j8pzUiLNnChLpvyvIk78o3/0j/jjP/7j3/izf/yP/zG/93u/xz//5/+czz//nBAC//pf/2v+8A//EIBf/OIXfPnll/zBH/zB/9T3Ok8Th9PEw0kX8HMsOkVUueD/a9aLD512AaFjHDY45xkHvejKNFHWnCmqqcgxKo02Z1Wli1GhX6OIrkidsxbv7AWz1dVXK1SXUEZYRbAglyIFuje7rMusMteCd+x3Wz75+EM2m50yaYxjtx340Y8+R0QnFRHNaIlp4XA48J//y3/h7v6ObnD0g+N0PlG/Ek7n0wUzttYRfAcY7g9H5nLGiODWLlFUhHc+n/jyq79i7Do2ZGx6Tt3v2AbI88Kv/vIvefXr75gO6sqwmglY5VjgrRatHnUF6c1azC21LVxrzZedQUkZqeDdgN/1VPH03QnLQqrKeBJmkKiL8JywJZKXiXi8I/jAB88/ZrvZk3Mlx0KJM+e3X3GcDnR7y3CjAQfBGRyWWjT/B+thnsEEfHeDH66hRPLyiNRMSpmUK2KF2uJIqmmkHKvp0LbZH2Wp2tXaCpIx8x0mT0h+pJYZ53e4esXcJ+JpYUkjtTrdrSBcDXv68TM9BM9vkTKxvP2OeTngbz5hC6p37AABAABJREFU+P0Rt3uGJvv2SJ0o6S0iCWMLvis4Ij5PlFR583jmNBn66xt2/cf0wxU//9//33jv+bP9NXfffslyPhDPR+Y5orY3EILHWej7wGb09MErsaRaKJCTWvaUKmCOOO9Zlkjf9ywxcTiemqi+knLFBsFJj3HQ+Yp30lwo1iJV4VwYhsCwvdUdygJielyqmDDpe1H1WYw5UHKgeKt0chd1v5gL1nv8MGKdo0hLSKiaBQYG5wZ8uNKprnX7lIJpeiqp6i3YvPMVMrMNkCgKS5MyxERNmfn4SFoih8dHHh4eWXLisJwoInxy/Rk/+fGP1dprSaQ5wVqkGiGiwmUfaMRgqnrirY2sXWE+kdX2jwIko2y+lpTTpjsV20oDLKdp5nE6cpgPfHf/iuN8JC5H0nwmJWGZqjKhS2tSTXOYchCCo+8tw9Cz3Wzp+5E+dHhnGTrP1UZJEkMX8G0PtSJF6xfRFO1KSYU4RUpSKD/PiTL/LypS+/2ev/N3/s5v/Nl2u+X58+eXP/8n/+Sf8M/+2T/j2bNnXF1d8U//6T/lD/7gD/5vmX3/vY+YC7nUS7zC+nFZxjcLH2Mt1nvN+fGBrluZJx3B+8veSHSh0lTnUF1zUl71TGZVma9F6j3PuveJEu9R0HmfRIHBBUvXh0bKUL1FKbq81p9Z/37OiePxEUTYbG4IXWAcB3xQVf66AF5p6UM/8PHHn7DZbOgHTz8GjqcD8zJzPB/pu0AIbZKyAQG68cjmfCanyHI6tSA2XT47ay9kCoMWYLWNmUmz6m3irDsjaVq1Wp8MK7UcN88/gTifOT3c4TrNzXGhvyyia6nkRfd/rBBGSVinE3Auiv1b02HsDmMq3mQ13KkZmxPGGCV0lKjxD/2AcY5uc6Pml33EMDc2XMMwWlesnXPSU8jOYFVUqu954/RSn1gDlifGZDsULjjJamtVSyNPrAam0n6fqaW5NhiL7fdQFkqZkWKoBUpKWATXcp9ICdKiXnCHB2wB019hOrQ4rWzN9XTxBhcKYgrWLFATFA2stMZA12NQp+7N9gqH4RyjBtvlrM4UUkmpw1nIjd9xCakz9vJ+U4SU1HDYe/1Uo1J9LksrKrXqGGBQqjo2KVnCKXW+5IJtjuml3UDWeZzr6PoN41YbBzPpwr1UFaOSEjFOCIKT9UAPWN8cRYxTaYbAJf7E2Muz96Rp5NJIqqelabop9I1tRCyzOlLU9wgrRZ+bUitFExLpQocYlVZ475VYgU5ztRQtrA0WldYYrxXIrLcRl23C5f5aobP1J7fydOsptKZ79tVjIJbMaTkzxbk5yWQlRVwIQDREQ9oeqtlUOfDB0gXXpmqHs66xa1f6VkMF1wZ8hRjb+21YpQka2/N+TMdT0/4//vhf4jjxL/7Fv8Bayx/+4R/+hpj3f/bj4TRxmhJxUSaKCsBNIxDor67TItT1I77r2Awbnt3cKr7qA65h/LTDKke1jInzrAalKRLn5niNLl0V5tObaWWw6LnX6OxOu2sdnfVG6zqvb/rQsbve4b2n6wd8CByPJ15//4ZSFFYxDu7uXvMf//3/ydXVNX/nb/8DPvrwE4b9FdvtVqczR4NM9OeOKfLzn/28dbMd/dDzeHzkz/7iTzkcD2w2A5tNrwddO1RO5zPneebN6+/5k//8HzmdT5RlaemqgvWVoevYjBu2mz0SI29//Yo4zRzvH1maYLqUihHLkivFGlwx9NK615QxIhy//Evkq2/otlc8/8nv022v6bd7uu2evGROb96obVBLiLXG4AfwfSAvQkpC6K8Y93uFoeyMM0mZeMc7qIXjfM9pfsv2+mP2Lz7CW8/tBz/CYzgf/pzj/R9rp2yN0o2jYJLu76o9qQ4knWF5g3EDtn+O+AFbJ0xBi0zSWA4VsqoFkWSn+hRXsSKIJIQJpCisyAB4LaqSqfGRUgW3eUb/4gvyMnH41lPPB9Kcme6/wQ87wvPfwXUbOL2jnO+IMfHwp/+ZKhA+/Cn++aeEAJutHujZ76i2x4WC6xZ8ivSnL4nTAZsN8b4j+w6zVFIY6f2WH/34bzEdH/hOfsHp/h2P8x2P9w/4YAlOyGOHEY8znpoLGIf1HbkIeclghLgkjFX9k/VCTJUlJm0gq6eKhWKRqPZRsZ6xvmD9Bt85qhfmMJGyIQwT07woPN1tGNyG7dUzPvz4p8TpwKtf/ReW4x2nJUI9EyZHLjMheLrxim64wvlOAwVdoB82zQjY4kyjTdsOuYT+6YdCgW23lBJYQxg81unZwKyx7JKLNjYpIylRU6LEqOdGLRRn8F3Hx9tbQhd4dn1D74PaDTU3iWWeOB8fFAaLSWFukZbmIDTrzlao2k9Yn9ITpEGAXVVNZS0ajWGsspW1aqmZ9sPxkV+9/ZqYF6Z4pkrUvVBylFwbk49mDSY6QQ0G7y1X+8Bu27MZB+UFhI7gPME63ZDlouiCMRSvImrbtFgl6tdLS9I0gVyIcaY2/ZXUxoD9LT7+HylS/+bf/Jvf+P0wDPzRH/0Rf/RHf/T/19ddUiE1kkSVlRXzHszndP9inaZnOq9Lv34Y8M7jrLvkLRkUzotYilXqcfKhGU1qIZIWTwErRPffTFC/QY5oE1ebjHzn6HtPP3Zsdxt88Izj9qK6vr9/wKR18oMlLrx7+1r1JiniLAxd4Hq3U9ZMaPjahZlX2W/3lFzo+p5+GHg8PDLNC4fjgd1uZLsbKKUyzZlSK+fpzLwsdN7z1a/+CkRIxpCj1d2EK4QQCF4/8xKZzxPxPKnLdaORygWK0KV6WcWIaGQ2RYjLI8v8SL8sbF9+Btbj+oHQlvVpWSjzfJlWQwiEjSbT2iyYLFjfE8ZrnLd0dsLbSDGQFs19SlHdEHrJ2BBwYWATruhsR87fwj1tL9gmYtDig045aoWVFOgPghnag29W0WoTYL6vmxOjbDu4vBc6SSUUzlUBJI0er3DSQq0B7yxu3COruwSLTpXxhPU9pttghhtMbXlE+YHl8WtyjNTxOXW8xQwOetX1GAK4AWOrhlNa3Vs6WxCJlDghpZDtAsXhjGe3u8Vh6MLA3EgxcYlItaQU8R5SEnKSi/+cMa4twtewvIqxhpyVuq6ecC2YEqg0+nFpRISUoBh8DVirDgwlZapNzdqs6M9tAtZb+n5gHDdM3uPCgFhPkYUlRWq1dLNQswXjMcZTa8GFHucr1XfIqnFqXuOrt4t5b4gCfnOSauJ+LRZthGnT4Eppp1YoTQZQlE2LUfbsZhz1YO86PT8anF5FqCWTkxrakjX3q9E03qd66TXjUqb0Xlt3oVVfiQhNrN7Qo6biLW3CiTlyXE7kHCnrXq6K7opqIzVc5AH68ztncH6F+zxdp6ay1jolTBi9Opeok9VUYZUxYNoErSQJjehogYcXi6rfborSd+0H/KFdvFw6Dueag4T3WG9x3hOGAesd2+2eYdiwGUa2mx3ePcUnX4qUCMF5pFaC00koLhOnYyCmuanl5DI1Xdh8K1HCtVFbCWF0fcft7Q193/PpZx/z8sOXDJuR2+e3zRFY8dvzeeLd23uWZeG777/j4eGB0AWWkljygreJjS90dUGmR6q1iFflu9roqD1NsOCCxdsKdaFzlY+e33CzG1VU16klSb3ShzQ2LceL62tuxpHpfOTVt9/ycHfXGD26I/vo5oqrYeQ8L8SckZyVqote99J0GyuBQioYadfXWnXqLopD+zBpdERw+Nsrxo3Dm4G0f04KkeX8SJpP7Wv3epDUM5SFGiNlMurVtmkPTugx4xapPa73zUUh8/jNL/DWU4cNnfMc7n7J+f4eQ6bvKs6KsvMUNEFKuDA5i9UDyfIOrMaxO6sdalb/IYypar1oBHKlGv1vglygLpDLlF2AbAzGCLXMeBHm13+JvPpSWV5Zr7W3BU/G1RNu/hrPnTLhNht86Bj7PSVXjpPw7qvvCV44DAXnHf76BW53TQg943YHEuj3H2H8julw4vD6ey0u4xkXNpTpxGgCYjpMFUpJWAx90N3RssTGpgxY2ynL7hgpSSNe1OmkiVtrJcbCPGeWVIgZSjUXwbzwnultrojJlDITy6PGmIjFdktj2gXNk7Id1jiubm5VE+gcH3z8E/KzD4mHX5Mev8ba2mBlIccJRHChb0zZDmf0PTIm4CyI9Rif9PWsDSWi8GzVe9p7r890Q1hMc1q5wL2Vy8GMoAayYtlap/uwENgMo7LgnKcgZNFU25wjYiouNFF+28mup5CgFlTwBPk13qsWQFZFZYOZTbNisrquqBRiybw53zOlhfvjO2qKShzJpTEu5fIpzUfQBSWBdZ1ls1HUpx90hx98p5Rz5xlCYOM7bfBbk1xWJnWumKSmyXUtVi0u3hrYbEcskJdIXiJ2/hsQ1THHQi5y6S6cU/2TCx7rNUG2H0ec9+z3V+y2O4ZuYLfb6aGzev/BpQOh60AE7zSfxgWHvwvY2Sp+m3Wn4S6OEu8x+lxj9DldWvVjz8uPP2C/3/P3/v7f5+c//znjdsPzFy9w3hOXpIvEi9/gmf/j//t/8Nd/9UtSicxxos8LwSS2vuBkRiZd6srKXhp6/TSG4FZ3jQKS6Lzw0YtbxaBRRp11ntCPGOsoba9V8mf87Z/+jLjM/OJP/4Rff/UV3jo6H7RY5DOmRMQdeUy6BzBSLzleBaOMyKIO3VLspQXUID1B6kJaZnzoWpGyBPMhm40j2YF49QLXZZZ5Ji13OGuU7YRAPUE+IHamnAUTOuz4jOA21K7H1V3bK20RKunuNY/f/RWOStn0dMFyenzL8eEO58BcBUJo8fTGQnWY2oO4digXTK6Y9FbJMcMtrtu3fUCj9xvRr1XVsBQD2VaKEYVxksZCSND7IgKzQdfkZSLkyHT3lunNK3zYcvvB36Lb3OCN4GQtUl/ipKOOnyHjx3g3svn0BbkaXv+H/8x3X/0lXhKDOeOdYffJkfHZM4bdLS5oBEp/9RHDFZT5lyyv/1Spv8MR5weC0wNHi5TuiowxdKFH0HtySQVjeoyplFQ5P8yUXOmCdtgrImWMsCwF6xXdiEkfL+eVjlxxrUjRoHMNjSmL0thdMZgwk0pVpp/3uDA2V3XddYcQ+OCTn+KM5d2vLW+nOywJYaZKJcUzJU0432MxFN81sg5Y2zdLo0r1GWzR6ca2nWFpfoKGZpLaoMC2gzLrDqVNCBRpuyQheM1VcsEzoPvuYRxxPuCcxqMUKeQSVb9lBBcaAaUqarM641RrNNJk/WiFag05dUbPKlmdPtc9VUV1ViIscebb++95mA4cl8eL0LzmNs20HX69MBkFHwy+s/S9Y7P1BO8Yho6u6+hCwLtAcIHBd2yCJiKvS/d1ehZTwepufS2wOWdqTVjn2WxGOu+Jy0JaFkz323lJ/KCL1CUKvjHjLiQJZ9sk5S7OvMG7pohe4b2mm4LfWHorNKHCWNe6tydW2kqAaIWtkSHed01437+v6wLPn91wc3PN7c0Vu92GYRzpe80ccsaRfSGUeulWPv7wY037nM88Hu/ZbUasD6TGLPTSfMOa1b1JCrMr6UKp5aK+Mu2GTDqKG4fgGilB/ddEVJFvasFZdSrejANX+50aeooSFuJSyMtCilE/kwbasepHdCvdLuHTtbm4bwiXayK1MB8eVZN1fCDPR6R4Ntue0gWWx8BijaauloSgP1M3qMjTed8YRZ5xCERJzLUoPTxHRAo1TZiyAFXpwtXibKEPFmsFJwVbK6U6pLrmIFXbPrNrYWyCsUXfa9M9PYgtXqNWFXurA4Dqo2xbPtdadV/TDhUrjpqyGtDagOlc+z6+NTUW23lcF3BdxvmEMZDmIzU7Uh7Ji0PCFnVMVBf17dUVZT4y3b9VfH+8axNFxYYNLvT40GO9J1eBYQTrSDUTlzPJepJLTMtERnTRam2bHiEXbcxKsQrt1fVwVJZZVrIcYpRokBsBKNVKaX9Xk0i001YrQLnsUaux1BZVYmrGlkRNkbRM2Bx0n+fVay9ORyQFfGPGxXkmxowlYymIrU2YD4IjxgVXK26ZwDq8Kxiv1x0/Ik0fJc2FfD3t3xe4X/58/aUqWiBVo2ou90SbctazQclt6l6DoRGdNA4nxaVNF1mhr/UwQs8fwxPp4b/1kTa0/UH7YdQ4Q/R6I8ySmSRxipOSJdJEykllHq0YrY1WlYq1lu1u0xp75eiEYJQs4S2d7+n8QB8GNv1I73v6rqfruoZ+6g9aq+7EgAuzWt47I53zlwGC9fq+d1b8jz5+0EUqpgKrlZF3dJtBbw7fgvlCx2bT431gO47sxhFnHauafAg9oeUJlVybiauKEF3X0aMu4KHvCF2g1KSrBqNBfgpnrSLhJ+jPe4sLlmfPrvgH/+D3+fCjl3z00ae8ePFMp7uhxxhH7dyFGbZiw8+vPyAumTd3r/nV17/EGKHbXvMQCxtbcDa2h6jdIMlRF4exDh90QqqSqKKRzTFO1FowtsM4pbKnRcPSVgr4euPUWnl2c8XgHWmOTA9H8qI6mOPDWx7fvuX+7p12QjlphmSDTGTFpg0KgTTyg2nqfe8cXReoeeHbX/5Zs0kShq1js3/Gp5//Ht4P+OV75MFhbaXOB2zwfPLjH3HzwQekaeZ894DBcPN8x2a/5+FNZHp9Ii8z8XhPiRMmHnDpEecET8Bj2Y2ZbT/qrmg5wJyIJVBKp538oPHkYXhGGD5EPS50qo7zG9J836yhNJl0mgsiDm8do+2U/dipidqyLBzvDiDCcDXgO0+JmXKeMf2G8OEndJtbaiyU+Yzvt/S3e/rtnt47Om+p6czDm68pcSLLl2QZMZsb7Ae/i+n33Nzc8uz53+X1l7/kP/3Ff2I+PLJ/84bNZqDfXbP74Dt8P7J5/iH99opUMvbTz6jLwv2XXzM9PLT9i5DSzFkSjJ1GVizadc9nQymV3ntyH9q9UjDWErOwpGaZY6uKih3EmiliSdUjGFwBa0s7wRUiVLWZUK2htKBM0oJUIQpIyhp2uLsihJ75HdxJxjnHMQSsMdy9/jV3b+/xtrDfFDWftQZvwZjEvBSM9Zynha5/pPc918NeIcBSsDXhfY+Vvdr91IKhtlym/6bDFyCD1Moyz+Sm6ZMLK66CEYwpWjS9w3aNwWqh1kSKM6fDPdPpxPl8IC4TlAoBze5q0WIGcCs61BCZ94uVaderpkKuQqqZ+zgxl8Td8sCb6Z45L7w5vGVJM5AwEvVsq3rGpZKJObHbbvns08/phwGRREUNfa2JWGu43jxjO+y5Gq/56PYj+jCw31zTdxtyzsRlTV9eU3gNqVkdWaMoiPeOMGwuq5EnM2JNrPhtPn7QRaq2vchqNeS8uxQpY5W+HEJon2rjYY29TEbe68FZSsGQLwSMimlx2O/5+K0Xeb1hLp1T+8fwG9PUOkndXO94dnvFfjcyDKHRapvA2KpV0eWriGEzXAGO0AXO85FSMi70FFE7/FVrReuMai7qbmwdtYkYa42UVqRKWrRI+dWosdESURW+SGGNGxARgvdshoGlKomiApKzTlKXaaoJaZ/GJJ6wh3Z5zIqy6/dSayhDLZXlfEREmI8PzKcH+n6g7y1d7xl6T9+5NuVlqDAOA1c31yzOUc8nEOg7Txcc3hlof7fEmTKfcUUD59aIB4PFOV1oUypl0c7WVAs1szIoNIqhIwx7NLJ90INoOTZ6fesmjMZjp6wHYfUOY3UKb2n3lKzvUykqFK/SfABN0Mlh9Ypz7kLysc4oTO09NRvSMpGmI6VESjljSsXtHrAiDDfPGfd77vqBeY4cT2esFOo8kWIBN+CHEfxIFUcNAt2AUkMqS1ootbRg0KR2PK7phpq2r1RHLjpRlQLSdkorpbw0EolBmWkpFxW44imsHn3aMRsjmKZI1WO9TVe2NspyAaPTsBUHvlBTjxjIy8RyPioT16tbzDKdWZZEcZUhNEpzO9SNgSpRJ2GrZBATKtl63T2lCdKgsnCf9bkRdWhRtbJ9up91FNKvX5UMkjVzRGG39XlsDiOramF9T8XURjvPpLiQ4kLOzdNPVEuoNw1Pz9HK86D9t/c/2t8RY9quC5aamUriGGce5iNLXpjTTMwRbyvetmfQmguqYYzmee2v9mzGDbnMlNKmrqo79j4M9Osk1Y1qjRR6QtCI+2xKe8318tw/TVJtJ2vaFLW+ovpETuFC2Pjvf/ygi5SOqa7h104/naPrA6HzXO2v+OyTLxi6nj70BBfou57ddovznu040nUdy7xwOmn419u7B/I0Yw0Eb8mNbXc5jBuhwjYKq21OwQ3A1tvaGZyDUmbu7r4hhJm+K4xj0cInfTNq3OPsiJaP0KzwFYLc7jZ8/tmPkVrpmvu3l9WSpyDppHCYFGrW7l6yAdMmqaruDIo7o7ToxsQr9aw3SinN8smoVY3A/HgiTjN5monnB9KyUPOEkYTUrCLOUjFiVsOZS6T9RRtR1IPPKuSvNcCZ5udl2ZkrpAqnd/f89X/6L1zdfocswma3o3OWn/3+T5mPR+6+/1Ypu/dvuberTZIeEKeHB5bzmbjMbG/25CVQzg/UBWzX4+0znFWcPBeNQrDeISYhNoNbaIEOGuJmFe26erbl6uMPSNlwPCqzzZRbJAHl2LwQFyTNqnfqOnKvsSDeqa3PePMJw9VPdN+3HNWOJ07k+Uidzzy6P+d89yvi4wPz/R0+jBChH/dcvbzBfXBLlR7MHmM9vXuBNy+QfqDaPSIdy2liSW94OBw5Fs+p9pRz4TglumnheLrHdx3j4z3d/hm289hND1S8MVzd3KjZ6DyRsyWkjeYgebUCE0QhxJo5n1dBe7MAEiE3Dz8fLJu9xoKfF6HOFWNyW6qbp5pnM86LnuBuAGuppbRYdkvJgrEeZyPF6w4DKfjQEePEPJ+1sXRKRInLgSIFUyspNUNbKxr01/ZD1hqkFbCUEg/lgLWevjr8PNN1A3U8NVNUvTetDXjfN8JPp7EnWcWopRZybrExVolLBhDJGIoSLlyPa9C9NYZ5mYlp4nB/x9vvv+V8OpLPc2uKWhu3RvWY9u+1Na3t4qlJc71AySLCVCKHOBFL5j6embP+/hQn/fnE0due2+srbm721CrqJViqToUZrq9u+PlPf5dhGHl3/4r7w52eexasseyHPUMY2fQbglMSS44ZyTNpScTTrBOaNSputwax+Tfg0pyyNmUCWSmHxGkiTjPL34T4eLU78vg+KLspaFc6jB3D0PPs9oaffvEFm3HTvM6EzWbD82fPCCGw2Wzoup7T6cjd3Z3Stc9nTtOksB0W79qUhDQ7BWWkGBqcZVpkNQImaxCdqWrMWWce7r/DuzM3157raz0oPWtkur4G8K0RcazBhdvdhu22LetXgkNJlJyQEpFzRRIaP5ATIqbFc1vt2iW3TlV3AlSl+NZaLpNQzipA1NYvICKcH4/E40SNC/n8qIFyeQLJ6q6da5sSTEs4rtT3YsrlvSJ14XGg6cm+d7iq061U4Xz/wJtvvmd3c4OkzO76mr/1d/8eP/nZT3h4/Zr48Jo4JeLDOx6mMzZ0+GEDxnA6PCJV8L1nc72nxI7zm0A8Gqzv8cNOC2aeoWSM7XCmAxvBJUQCloJvLL1gwFlhd7vh+RcvmBdhebVQ5oI538K5A3owBxCDpAmRhWpbOGOz3MJ2DLsP2D77HaRUHr/5a+bHe/L8lnJ+JLOQ41uMS6RzIh4i3nVwmui6Ee9+j+2LFxTpEHZgA334nI3/EaWDxVRKhdM0M50Kj4cj5+o5Scd8PmLzTGBmNI9K33484nfPCcNAf7UnBM/t9TXj1RVuOmsInzX4btRJ0K0yAC4T6vmcOR6SNhvtYM5Z759+9PR7NUA+nzPzUnBW6INgjcH5VRzqcQLGOpwJLYKkkFNLm06qwXLOk50a3NYScd4zz2e686khJnqWeyfK0KSSmgBfAzorxgpCh3X2Qg7IpbIkzaEas9BNJ1I3YHaTivzHDS50ONcrYcd4XNGonZyz7mGlapGqRXWYKqLCkMFkdePvtlgX8M3EusTI+fjA8eGOd2++53w40jmHN17rk214nmuTxnuxOurQrv+9oE1CFhXinkrkLk3EkniME0teOKWJU5owVZN+nQ08u3rJZ598Tq2F83SilEJnO4IJ3Fzd8PMf/5y+7/nrrwNSBO88m27AWccm9PSuw7uAtx0GQ0mFXAt5jqTjpLvJwSP+PUG70bPMGnNxkjFVkKg5SHFeSNP0N6NIYZ6sh6zTjth5p0LZrqPvOvVzGwaGMND5wDAMXF9d4b2nHwYVAXYe7y3zvDDNC13XNdJB5nTqefPdnrRMzCchzRO6Y9Yb6Ten8RX6U0W7oI7gqbQbuzZ20GpcWzLVxrZf8u0lKSXUrLgFXNwRrDjEVYQAYUDMmj9T2td9L6agNGPWqitMsZVqdbLKzfdOxZa6J8DWRqtdqDVSa2SNfjDo631yd2/UagveGbzjIn14n95q0JreSEAX+7MVGtC9ocNQmY8HDJW777/l+yEwH49UyZhmmmus4Lyj32wxGObTiZQisUTSfKSkSJpUL4XrQAIYlK4v+sA0tBxxDkPQQ2nVsznBOEuKC6fHt6TiwHX43jJcDVixpEUoPKPmAVJESqIWS5kXyJksAbyQ7UQdJ8Bih2u8HcnG4uYTIkvbNUSMXTBOJwh12y/Mxwfu33yL5KzhiKlgwgPVv8PQYd0Vvg90LdH26vaGjz/7jPPxxHL3lnR8hHIix0Vvq5TI80n3QN6SGhloSZkYF5Y1EVn0vrW+w3cbhITrNCFZGyHVCBpRG6Eiys7L1TJH8FVYotLQvbMEq9DbqjZqa/QGFVZM09iVFoVimg0QVi6FaIXJSo4k41osxEpe0p7xafmupJxCweIuB2bOFdMSumvU7wWzOlvkjDOiURM1KtQbRnWtsBqEKK7FjYh+anICbVIs7VnlEoJoGjyoz3tlmk48Pt5zOh2Ubn5B9Bqs2LLthMuLbl8PREpLCFgTHfSzrGEc7e8G58AEtrIhm1sshtH3BOv54MVHvHz+gU5S80SpBVctVgzbcXMhdFgsQxiU1euUFemtbzpSQ2k0eUmi3o2pOfMgSo4pT7t1s5KojNUzStqk2/6f0prjNfD0f/Txgy5S1huct/iuaaL6Dh8c2+2W/W7H1dUV19dXXO2v+MlnP+ajFy/Vuy40VlX7VO1AJsbIhx+84OHxoH5+KfP4+ECcHhh6z/fffsP9/TsdmqylyaEu6LvDaw9kPFhHEeGczvSLJcUEubFyTKY6IdszgtJjlXzhUNslQbPQG83cNJtJY5uiXCjeawGZD+CCxmmXByiRkis5KjywPsTZFoqtVMnEPCNS1QZnvdEa4yotEzlFJCdqnqgl45zo/scbjBNsFbwDjKVUYYy6n4izOl7npZBiQbzRnZEF61d2UYsjsMKw8fSDQxDuvvuKe2OY373iyz/dM2w3PHv5kjB2uM7gA4z7Dc8++hTE8Pqvfsl8esd0fODx3ffUHHXXUBKVLXTqvl5cs8VZrXEwuDBgQqDfbOg2Wz3clolaK4/373ic/gNuc03/0e8wXG3ZXT3DlY7Dw8Tyq2viPCGPAZkMZZmIyzuMEXKYcG5A9pV+GTDDHvfxz+n3LzCvfgnWU9NESg+UOmPLAV/uL2v6miNvv/krvn/711jj6E2vmL5fMP41m+cf8uGP/190VzeEbqCGnqvnL/nwoy9YpoVf/elf8Pqrbzke3/DmlSGXBaYzzEd8NxLOR6zzvL5/1Eh0awhtMnLG4GxHN1yzuelJMZKLx4aZenxHWY4IDmM8giNRSGRyttSDTi9xzqSY6DuHtxbvtbFS/0qVQCCGlDKSFIZNSQ/p0BmduILDB911lhIp2ZBzIcWIMRa/wnidU22V58Is0MKT8MHiO+39pikzzbM6cEfdmXo/46yhD4Zpo27ew3aL7zuGYc9u9wHOdYTxFhdGshhS09St+kYxETEL6+hg0AN9tQTKi8ZefP/9t3z19V+066np0rqTa7ljuHZ6CBqrwWUhJUWLK6BQmghZCkUUelTbJ9iPA5iOG3vFZ+4zQgjc3twy9AMvX37Ihx9+rAW7MRPjeSLNEzknpvlIOWcchmfbG40talClw+GMoQosMSIV7FyxSVcFFPV5lJQ1UdnQGNAGawOiIhBAc9jKokzjWBKxFJa/CcSJVZ/05JdnLhR056x6TTmdrHbbDTfXN23yagvdJzkPoLj17emEc1YfjJSwFq6vrzkdjzw+3uNDaB5zTySKp3DbJ2mwfkW9MdZJShokpvxNtWGpNQFOGVAYaItWLjFmT0wjFRgqwcG6Tqcjt6jjc1VdTkW7ldXL8EITbcLBKjpl1UaLXe1QLiF9azDcqg5vnaKxK83fYOt6rXWP41tDqKLd5jpQnph+7dLoJFV1EgPRKckZSq7EZYYqHC2UOLHP11w9u8aKw6MP5EpnXaFGK0rqiOcTNSeCrZfYnwaYtDA9uQT1WaR1h4JxSvuW4jR23TSacE501tGTm2mrpSMoYyyMkADb60RbF2pRZlipCXGWEpTAYa02K7Yfsf1GLY6MwUjEZIvxGROW5ratBTzFhTlFdawPe5wNpHpUF/G0pYpqjKwz2GBxpiPQkcbE2/01h+2RJU+I61pcRkbIurdMWSV0LJAqnVcigjMG41s6tdG9iiZqdLiyule0A7hlFNUV5q2GmJUYkXLb/5XVy81c3vsLKgAXCrTeJ6U1EM2JYCUitL+3WiaujWG1+uCuf1XXofby9+W9kMVqhHIJnlTXDJ32q7JzCywGvDdYV6nSqSykmyAIriZM7fQ1izq8mNXJnydygFmLy4UoUkmlkktmXs6czyf16lsp5+0IaFdjfbWXf1v/zhoYqvfMSv1fwwjlcga6NbDVd9huoOs6bq9uGcaRm6tbrnbXAJSmjZqNZ8awLBOnk+7ZdCLTQuublGX156OxQKWqAXfNenZd3qv2Hsk64raUc4ySYgT0fcmr76I2x/XpIvx3P37QRcr7ZnFSzcUokVKZlwXrLOP5yP3jA6CxFMDFugNQ+K09QMq289xe37AZR2Uv1coHL16w24wcj0f+/Bd/xn/6j/+B0+HIr7/+NafTCSsr1YHmESnUXKnJkObM4XDGWuF4PnCKj3gfGN2IxSF5Vkt+p75n2qUK1mQ0oFC7EHOJ/Vt3WAbrvD7ELlCsJ5vEqSRSWpAsSJbLzwQavpdEyRSZrKSKtRBKbXssFR3WBioU0aImpoAV+o3n+Ys9OSVN4U2J4Ct9pz1TFNVnlZiZz0k1F16TRK2D0Kk2MrXDRcXUCuH4ThlDDtXFnB4qv/6rgu8C1/trxs2WeDpC1hiVoYfxsw90aR/UtHNNU3ZGF+yIkIumCdd0ZF4eMQjOKqkjl0ScDo0Z2oMxmq5aC1Eemb7+EtcNFL8l+5F4WjDzIy41ONSMjRgQgUrxgWIdUz7j7n6JPXY47jCv9kjRqd+YnlJ3YHrscI17/gUmR+ThFSVOBF/wvh1m6C6iMlFqojxmvvov/wY/bNi9/ITx2UtyNJyPakmEmbh6uaG4Df3DgImGZLcKgPmertvqAesUmqolc5wT1hpG8XhnOC3weBCkOmx3Te+3KsQ1PTlnTuezXrdYWFJVeHrRBiKYqmJkB6HzhGCxfu3g3memrvfmSkMuJOcUxIo0yM9im4+jpiu3r1HbJJGLOnh4Q45OH4+c1OxVMtgJazKldNQaVPfV3I+DiXgS4ismJpwzlDwSevX8Mzh8t2HbX9N1uq/13dBYa4nCoh54LdvMm9D20hZMZVlmvnn1a87ziTdvv+E8qxzBNWPYFXdpr+hJR0Z5+jP4zc922CeKPr1OsL3DWBiGTiMzhpFh2NJ1Hc9ubuj7gd1mQ/CBWoQlK33+PJ05HR9JaSbGSUXcVUlOepn1XKylqr1SreomUVHavKy4Xvs5Rc9VA41MpWsLJZVI68krMSqjdKYwS2Guv118/A+6SK0CsbUJW4vUkhIshtM8cTif8N6Tkrp1r/ZHtJvjvTEBZxxX+ytFfqV1csbwxY++AODF8+dYY3nz5g2PhyPzEhX3r6s5pDp+16KFKqXC+bTgPJzmM+d0pGegq6FRX1rshKD5NlYpndgAKGNInZsH7dRE5wSlkLaAPeep1pGNYSqFmJL63K2hWlVB8FQiuWo4YrHlsmTGNorsmuskeixWqZQWx70GJ3a95+Z2R4oRysyUC8EKvVeatZWKqVqk4qwQQBlcKxoqFKwVJEujh7RrZw228yCoW3IqTEkZatZayouXXF9dkacJitD1Gz789DOubp7RDY6CdmZmzQdKEYmzZoPNCyVnSn5gmR4U/bdqOpyXM9EUfOgZr59jfadu1q3QL/lbrAtIv6H2I3GOmOWEzXoQVqu+i95cgSkUp/eUKRPnh9dYK4T0Ja6z2O3nuJvfUwJHbl3mdodcXcNyokQlv4Te0PV6L815Umf3upDrRDweOR2+x1rPy+l/Q/KPWRbD/YOlVIcbd+yejSxloBs7qoPidhTbY12H95sGJ2XEVOZ54hwXtYC0noBhinA467S5G3Z4ZyjiqXQsy5lynog5sWRhSdIMwbUT2g9CCDpx+87hg8W4dU5Ya5NC3qBeiKVmhbhLbuGWFZaCtQ4fhpZ9VtvPLU2rhe41ACuGnBymqqSCdXqcI1CQZNRdHshGtzrIBCyITbDMKII+kpNOn9YNhJIJJeOwOBfw/agEjLzubLMWKdSey5igr8kIMU+8evM1D4d7Dod75njCYumNxsYjraDxHhl/JfbRNEe810uvV02E1EpZdYLtVErTN5byZtyw3+41+Xy3p+97zYBygSRKekopMy8Tp+lAyZEcVaLiL+lVcpmeSptIKaJFai1O7SdvVej9mtXWH6wBJO39kMaMjORaWExlorLI/6Kojv8nP1Z7+NZkXSq8MuEKS1x4eHxAauXNu7c8u75l7HqudjvVXFCbc4K29u87RmAULlo7WoCr/TWff/4F2+2Ou7t7bm+f8Xh/z8PdvbonF7gYmApNSwIlK7U1hAHnu2ZaapvjcaWSKXmmWodruyFjPMaKigsNIAmDGmjqK9ZfrXX4bkCkEvqNmrXmM3M+a72rOskUUWafPgQtWt62heZ6Q0nTia3L2raqtU47v1AC/djjnGXZjO3Ar4hkvLOkXSE0p48V3ZHV56yqdkg1MwoTXuIPRJ48J0UuEQlu9QSMM8ukPegcOsrS89AV8vSWeYnkeG4MwwJWc7O6YafmwEGdl32X6frWieeM1IprbgWEQPU9+AClYk1tk25V2r1MSMqkZSYfHyklI9lCMQiRYmLTiuiuTYpS9a0VmCu1Gow7YaY7RBxpaXBsu+8kLxpTZjo15ZWWG1T1QNMMsPWmV9ZXTDOnh3fMi+H4YMnFYk5HjAucHx+Qom7dRtS9ohZYSmj3dgJTiEsixoS1lnFwiOlw3jCO5jJdx5y1m27u4aHfqpegLYjNDUZTqNma1aS3deEWatGp3Tm1UdL7XiExYw193+Bbr1OwhUYAgmpb0GgjI13gfRrXSDEmvbcwLSG3MWGniohVnWDp9H70uu+15gxECBUTyhNJo/noSXsG12gV/UxARSQibQKwJmCNu4j5Y16IMfF4fOBwfuB4fmSaD8zxhDNObQlZNUO6d5P2QmqDe1cLJWkwn7RnqEAT5KqJcxV0b2QdwXV0rqdzHcE5vLGs5q7TdGLJmZQzhyazmaYTMc56rZoX4WoOoKL8RjBpZKz1mbyQVNYzUdQYwbb/pmVudfRRsDC3HV0VKEZtn1apzROT6r//8YMuUrUFldn1YKv6ppesGoTD8cCvvvoVm2HkatwRl4UPX7zk93/2u2oKWdoOpqmxjTH03YDzXi+1WTFmPUw//eQznj17zvF45NPPP+f+/o4//o//gf/47/89KS5M55MeYFZvppwhLo64OKzbsNneNGPGgL7JLVfGiI7c1hK6rRYy49XCpT2gYLC2w9pRl7SMQLjY3vgwssQFGzacly95u7zDVOiq1wWzYVU1USS1IiVPQib1k9FDp7EEtcstuM7hsbhgCJ2lpIQzEDcj8xQZh4mcKmPvSbEyL4V5Un+7WoWSAbPulQzeWIwzTzsJUU0t9UkYqs+wJsHG0yN1uWfpOvL5Dc45Hr9vMOGwJ+yfY1xA/BZcx/bZB2w+/lin5uOExIyVD3CSyGnh8e2rpvhXOr/xnjLuqc6DeHzxmtQc1Xdszgcl1iwnpvvX1JpxYYvzPQW1lzIIPijUVXPS+Apa4J+v1PiKmguCR/KAVAePTqFco8JzY3e6P5IMVTN4kEK3CfgxtG5bu+zz+Z7HwwPzYnh3b8kZXWDnSsZRJegxkc+YakhmYG6GoMZEDJl5WThNkxqibju82TKMhcErUeHu4R3Lok4QYnpM8GyuPEMtLItSiEtOLOezduNqja27taS2XHOcNO9sGHDXXqnlVZfxPnjG/QhojtYlYjyXdl3RolaUZWqtxQd3MS3W/RLkZBFrqClTcybGwsP9pDuy5MlZhfubscM7Q/Yzo0+MG892ozZYIomSNNttbdAMLYNMnz5ECiUfyWXBuxHvtq1JDBhjOd694ft33/N4vOfb119yOD2wzCdiPNPZHvpCsB3FFrzVvDLbDuraOHtFCqk21KcV5lKF1FYJseVtORPwrif4wLbfM/Ybht6zCZ3u7lImlsrx8Z7DPFNKYV5m3QfNZ/IyKehYm1mtaWnSK/0QLrId2tmqe0GNQaKAKVpufcma5YXBmWYaa9pMVVEWsTEkb1oSsdVmYc0n+x98/KCLlDbecvndaqm/LmZzzszLDALH04HHx0d244aYkho/Npji/aAzzaV6WkpeIHSB0ALMnHO8ePGC0AVunt2y2+9YFk8uSYNN14RPMeQWc1CyUC6rBnOZtvRnbjb/1WJd0pvTCivVZ/W8UiZCaBRcLQLKpNFAR+d7QpexPiDKzyU3waNvX2uF8uS9f/Tr2cs1FFbnjTbeXBg7yqIE1FG9lKaJSjir4k7nVPeSU3qPss7lOiu6qsSHlXCy0mkVCm8PAysNRQWkhUyxUJJV+CYVrKkEqdhh1AW3WPUsLLEdMtqdG29xBDwewSr1vKxE3qoQ4RqOZxzWOCWwNFeANZpBSlFbpZIxLvLEnNEf2Fl1wNAAvHbTVJ0SS86UNANe6brVg2RMTW2yHjFeX3EVBUwuD3pzp3i/884lE5fCshhi1CJVlwVJmWo7JDQ2Xa1qhoojm6Xd1wqF5dTiVozVaI0KDoVmS9MYlVKeIB0sptGSrdNnSBot26xi0zbZ6DP4dI/rdPLU8DUkXb00jdF02doat7LuOtbns4ULIu0QXYM4TZuC1ngQ3VWllIgxktLqqOEQcWQvUA3VRKpNbVoJ60nS7sT2DKzfszaZQXZIa0jWRa9tOqY2C7GkyGk6cZ5OzHEmpoWUo8bt+FVLCZcIa9Z6sE5S+vVre606Ryndv1bFO1Y6OkYhWY3OaIGEphkMwAW6jzEyzecLsqQZbwtSshaVNZhOaN/zvTO1naVmPQt5+nz6vWBRVMo+US3g4jEKa0owxl4eGQv6nP0WHz/oIlVFhWVSsr5hCbW6MRURB64wi3a233z7DXlJnI8ntt3AdrPlxYtnbPfqnF3Wqp5mUnHNPsnpxW77nXrBaQ3Pnz1nt99Ra+LZ82seHh748z/7Mw6Pj5wOB87HI1XgzZtHDoczf/1X37Dbjex3Wz796AO64FkTLWvVzBWMap6yD22SCmC0MBhnsSSsyRgC1ThlsnkH3mF9YHv1nCFfg3H0/Y5lOvL6278mziddjDYLNev0YalV6eBaSPTuySVTKEqvEIXF6opTI+AMBkfYDGrY2XlcULujftNrYORSiItCCTUnqK2gWmlxAE3oJ5UsULPSORBlBerKQhlNxoLzBuvWaJPmZGEr1gg1Hjm//TViHNWOVBOID6+ZXn2Jc4G+3+Fc11xrtEiLZGxnG8klYUVwJWJFfRzFGC1YXhOM/fYaG3rcdMAER03xsv+wbV/hfeD62XPG3Zbj2295+/UvNFuru8Z0PdU7atGoFCXvVEw1asdTK2UBoqUb2uFrLWZ7rTlNVGJSaDqWhO6xtxQJJAuysTqFdsrgk6rU7loTKUVySqT0yDJ/p8VBvcSoWII4jC8c7u84TzNj6Nj1PTknltOJ+XzSd95o3lqpGlgXs/o3lqyGsrVCLBapnq1xbMXTGcP++oouNPhb1KmiihZiV0Cy2geNvVcYOUamaWEVuCr8XlGbhAbpiSFsBna7QWHJpFqv8+nM+XRuuxdl9HnvCcGrdy7qhuBDoRsE38mFNm2VzohmIWVyikzHt9QSKViKqPxj2O9xYdD7oVc95eN0JKXE199/w1/+6r+yxInzMpGlNOhcWan761v6bsTbAWs6csqcT5M2NWWiVnWEiEmnyHWoqWgsh9CiTlAm3rbvCa6jt9BRsaUg0SisZpQFukwL83kil9Rs1hIeQxDTdEzr99C98toYIq0Wi+BCYBgHhe+WrCnKxmBXejTuUtDWcq98VyjWIZ02wME5nKl0rQbOxfxW5/wPvEgpxVRqUaJANTphND0StZLQHcG7u7eUmDFFeHn1jKv9Fbvdlt1+p7h2WReYyixyxqlTMjRzybZXaYzA/f6KvRFC53j+wS1vXr/mdDrw5rVmIMUYKSXx+HDGOcP337/j9tmOF89v+eD5Dd492dnXUpSV17B6XwIYh3EBYy2eDoentrfe0gEbNORNC5W1nmG8AtBlajfy+PiGV6+/ZKkR1uBAC53RnZFa++vP8LRDasQJClmUeSWVS76iaQsl13cXvzlnddLoBo2mLrmofVIqnA9CjuoIDs0E1FuVARTd65SqrCXtXmkAvEIQuhdsEI81alxpaBlB6iiRppNOrQwInmQd8/ceF3p2Lz6hG/dtuNW05n4/4LyDpMXRCNhScG0BUI1RY9DWZbrttRaqYcTkiRpnyvmREid88IRhR+gHrl58yv7mGVIzb779c930hS2ELdVIi2RYJ/NLf6kREU3U6pynBm1Q7LDBeH/xTMylMC9rTlMPdkuyRoN/BXAJ4zOSIjmdtInLiy7I55n0eNDr2xzArRvwYYNUYTqeqEuC7ZbBO3VZWGbSNF2EqlWEWpPuPWtSzU6t5LZLSdmSs8EGRxZLsI7NZmC3DSwxcTieKc0GSUXoUKtO6F2nOytMJaWo16gVU50ossKBFcDg3cBm0+nepQUILvPC8XBs+2CFyIPXGHT9jiqOdb7iO8H6pyK1aukE2gSZWKYDtWZSrkyp4LseP24IQ6c6s85TU+W8TEzzxJv7d3zz/XcqK3FLQy30wLfOM263bMYdlgFDxzwt1FMkV4XWtUipYeuqJ1wF6KtmEnSv56xj8J0GklqjGEEVaqqIof2/QlwicYmkHJmmI7kkRtdr47YyHS6Tsu6HVx/RFfZzztJvRiWpyaQO6lhcsatloR63F8q/9pnFmNbw6eHhnLuowqzQvBz/xx8/7CK1uiwYZaDVrMwi47TKS1bhWLaVk1dsfjtsGi0dUsoXRTUNisipICa3tEu17TBr8ioOg2v6INVN9KFnt7lCngk/+9nPefnBR/z6y68Y+g3zdObtu1dI1TC4u/sDfdexLIse1KYFwrVpSrH8SilRYRWn+LJmPnlMDZiqVi2uq+B0f/ObRg6Cdx19v2W7Lbz84Cfsds+Zjo8sx2N7cBJIpch7E+Rl4a07kVoLxSjct+q7LKsVkuh19iuBo0dqxTjdH9isUSm1cwpfN5FlSfE9+E+tkkznVIKTPdVXaqzUpFiQwoEKv5qqk8eTZL89He/f56VNftZRTEFKZXp4SzqfFDozmtJcS4f1lrScyLN6t5m84KwnRy2u65JaMLgl4g4PGidRDZhAwmmxMHrAEjxRDKdkWBiQ8bn+PH6nXnWN1q8LbS3qusRX+yDfqdbFdB5xntogSINDfI+1AZsyJmpxs77DBM1N0iMYqlcI1s6eJVYwWfdh1WA9uFAuk7HCvEoSgYzUM5IinQS6YDHi2e12eGc5TxPnadImon3mnEgl8pRJpGzQVCpzrLw7wBAd47ZnY1Sge3Wl+5XTORJjae4nSnRIS5MMRL33wKiWyUpz0F6pzdqclKIyiFIKcVnIKTPPkXla0MWb7onEZHJNeKsIgnVyge9ZQxhl1VoqXKbwcuJ8OmKmBVwAr8kFPmi6twtBHUqWyqt3b3l4vGdJievrW0QylQko1CEhKXO9v+Xly08Yhy3nKbHMmWIKczqS0kItE7XM1Gp0vwgXxp9pptjGWKztMEaz3nwjSai16Hu7I2MuXWVpU28pCdreyKx/n6YrM+aic8RanG1iXh9w1mnS9zhokSqipLOlOUi81+SKzgkXNmIre63w0TSSKBO4qtv7b/Pxgy5S0rr2KlUFpjTTR+dwDnIuTHPSrm2pnPojFOF2f8N5PvOz+XeweIzkC4U95qju0CmyzIrhu+bD1fmRLmy0szAdzlm2/Y7ddseLZy/55NPPSTnxJ3/8J/z5n/2Cd+/eEv8Ezucjj4fIV1+9QqrwOz/5CGMrQxgIjfa8OiPXqCRTNboc9MHwowpDUwex4H2hu8n4oTbqt2lnt77pXTfS+5HN5obt/jk5J7779X/l1Xe/IsaJ0/FO46QlquOEyNMBWpYm5k1Uq3ZLrlRsrTizRiGADaqyd8FSO69FLy1PlkxFnzRzuwGB+TQzn2Z1g14mpBZ8Z3B9oBbd5Uip5ClTZr35c3sCbC2apWZVM3Pp8tbdhiiEJjE2EXOzmRGYH98hCC4MuDBinBYE46CmmZInnPPEcYdznjQX0lIoUllKaUw0T8UzbvbcvvwM50YWORGLZWN0+U7XcaiO4wQzV8j17ygbpO26NIcqN+bfSQu2r1hf8J1nvNIkVyFQjcaHFNMm6mGD8x0yLZiTwZLx3Ra/2eqesE38677icJiZlkBKiVwcYmaEHimdTgbpRCkR6yrOJQwZH88YYHPdsxkctRsxH31AXCLffPNr3r573Zb52qTEZSbGRRfuXoWzqSaWXEhnw3FJdMGxu95x/Swwbh3XexXCf/3rtyzx1ArUrLZmIvjgm+N71sLUXO69d4SgO51aFRZOceLhQd/vNEVKLhwfjxzuDxjr8d1GzWHjgtjKEAx+VAKRFAvFtt2gflrrFVY36vxRUuI4HYi5srl6xtXzjzAu0A8bTT122pjMh8gv/vov+ebbb3h+e8tnn34BFFLWe9wK2Crc3Dznd3/37zEOG3719dd8++oVkcTj/JplOat7Qy1tWtRdpPUKhfoG/VvrGcIG5wKb0DO2hFyP1RThlTFqAatZVqkkTvNRf5YqeAyuEZQwlaKRpayWbd4HfO/Vw+9qTzduCMEzDAMAwQXyEonHhfN0as1OY+GaBvMZaXtJAG2kDRBasbKlqig4/Q2hoCtV1OoFqaq/8NYxhF6Fb3YlVKyQXSXlREyJXFZXBXX9lZWGKUIt2i2KCKV1WIgKa6VqiKJtUNua4hsG1Vnc3Nxye/uMUiq73V53306NMHPWZW7OmeIKrjk7rB1qraUJaw3GpCaK88rEyxZSwkpzmLjI7hts1MqUdlwWYwOD2VFKZtjsGcYdxlrm5dyW3EW7fVYn81XRvvba6LJ+nabMulplZYCo0SYOEYOtjtqauPVaOpoDcg74VCjZUHKktmnMmuYkHZShJalC0EW4U+Jfg/a0i35axPObUxTtD1ZsvC3rS86XZT3G6jRmrDovlAXJUTVheQFRh/dSCkX0/y0izYXDEoIKfo21Dc/XIExB2Wo5ZaRGYotPqWKbL14DX9p0l1Mmp4yVipVyIewIet/VmsGDLfq6KaJ7wqIQ9oUFaZSG3Hntj2OW3/RDkyeqrzGaOWbRhb+gdkXW6gSjURUVyZESZ6oozGZd86dsnffTwpzLNPub4lOhVH09xgpZdaAIBh/Uo9AHh/Or11uDtmrFNE83dTRvJJrL61xb9vfIBmvwYKmXz1Laa6nK+K21Uk3BYcmd2j9pWKFp5IIn+FVRg9WJRckuSq9Hob5OmYDGWrJUcowsMRJTIpWsyQrbbUNE/FOREhiHHd53qrsz5uL4UqrGq1Nro3k/7WlqQxDq+tpRpq9r5B5rnijf67OgFPIGWQrK5it6Vtinp3etIHo/Naz/Qo6ya0ZfwHfh4miBcHH4uewHWJvCp++/Hg/SCtTKATPSopWkwYryf3mA/28/ftBFKqUIVvn5Rqzi7NbwycsP+eLTL5jnhXfvHiil4Jw+kPvNXuGFHDnPZx6Pjzjn2QzbVizAyEKUSIq5idAWqhQcDo/Ddz03t8/phoFBBgY7YK2jsx6s4Uef/5ib61vu7++4fXbL4fjAu3df8vDwPWIch9MRIZM3C0PfaUZN03fkkiiSMLWQi5IpHAsWhy8DoWyRmpHlBMaDKeC1VTGNEKHqd9WfeGdwNvDy5afsdjfM05HXr75mWc483H3L4fCWUiK5hSNWaRRoKZcbWlrhaqD1e5yexvSxLWcoBBBN/aW2SJMGp3a+wwwb1SydB4UV04KkqMSFTh+CNASF20qlLMosc06wVmEeZSsq5LCaxta2v3XG4IyutHLLrSkXi7SCKbPmSzUs3VE1XsEapEYyCXzAee34TdRDwhYtbmG0DFt12085kKSjWst5SjBVjvOXLNGo5+F8oObEfLwnxwkTBsyg+584LS2qXV9T13eU5Og3PcthYTnMdJsNz3/0Gd04cj694TwdobbChUE6i3ghdD03o07639zd8+7hyDwn0qGZqMbGliu0PaelG543TZLgVX1OWc7Ukrl/8y1vX32j4t7xGuM6JJ3ZDuqFaJsnoj0ZjFMXh5K0wTKyGhFbnFO92jlW3h4i1RiuUar99bMtw8YzT5njQXPPUl7IWSfOKqrdqsFijbqbV6sF0nvzFI1jWqYSSooxxmFdoIplXvTeSLWQW9xNXiydN3irB/yApcu6BC0pYa0jU5BJE6Fri4LfP3vBZz//Pbp+pB83iKm8evWaX337HfOysNvu+dHnA198+hlffPoFIjDNkdoi6W0j47y5f6TUe16/e83D4S3H6UAqWe26jFeuXYsNEYEpnolxpmsOzt5VRqfaSFcDvnbNL9C13Y8+C7kWHs9HYsk8Ho/My6Kmva0RrM0qylR1iABLNwyErid0HeN2p16omwE3dNpEGS3gMaUGr0Z1pjFt19daZNM8knwrXBWULS1PAl+1hxKK+RtQpGop1KJ0bYsgVS/V7f6azz76lPN5wuNJ742Vfde3zq2wpIU5zoz9SBe0A5qdWocgRvn9RRXaJUfFVKvQdQPdOFAtWO8Itdf9QutOnz9/wfPnL7h/vKdK4fHwwF/8xcTpfAfGNtsmwTvBmHzpxFdbolIKtF2BaWwjKxoLEKThbXlRx4psoWiiobG1FRZ/maiMVYbgfn/Lfv+M8/lAzpnpfGCZj5ynR53cqK1ArevaVXm+0oifTNQU0wZYCa+ts3JeOzRrlLlGg+hoxpy9OgVgjU4pExTRTtWt7aA32OKoqWJdao4ULTSvZmpep0edYJTsoj+Cawva2pbOuuvj0llWSVgx1KoF1lqDX7F70YBFvNdk1WoUrquNxl4NNqgjRAgW1ymzUawlRiXvPN4dOZ9nTEnYslDzwuntd8TpgB322O0zBIjL+jr0OnZDod8slGw4v33k/PaBzX7PsxcvMTYQHx44vnuly/JBXRgk9kjyOA9bp87wdT5zur8nxkKZI6VCLU6j39eLZC2+3+hORTK2xhbBolDt6fDA4d0rbOjZv/iM0G+QnOmDB2exYw/OkktWpCFXJKq7iKEqNG4tvkWGpywcp8QwejLq/bjZDgyDx7mJ86TuHiqwBi5WXU1IWtXdXIrBuLYvcU9bWLGrv5zejerEYklZqdtzqqQCyYEpWqRudsI8WFwolKINUC1NsyjqtYlRHy/rHeN2x7MPP8aFjpwjtRQeDo98+dVXAOx2e67217x8/iEffvAxtcL5XDQjqxaohWk+8/3d98xx4nA6MC0nljhdPOys8RepgQ+9Mm/nEzFpwxhs0w9W9e+0YrHim4MFOp21pi2XynmamdPCNM+knHHOUDtzmdqrFF0TtEHKO909ha4jDEOLQOqwXk2zK20XWVtsSX2idawT9DpPX86Hdn/rIN5QjvZ3qlF48Lf5+EEXKamFWlv7gMUVMMnw9t07vv76q9bBe8a+5/mLF+yvrgh9x2a/pR96bm9vCV3ABa9mp2Lo+15djkWUipoTwRlSUpxal/9CnI9ITVikmdiq+txX3xhvlt53PH/+gs1mQ85nNpuRvq+EPoFRFs+S0oUMsMI97yu79c3VA63WQikJUxaW4wMSC6FuCTZjfHNKb9qkVc1t1sXNWr5cYL+7pg8d8/mOtByZZ8uy3LeDXeEuI0phVvhM92TKgtPDQIzBGS1Rru0pVtNJjRVYFRMK6VUxKvNyYPoB57VYmRAUipAMrFokZWu6rTYUprZs7VIgayFc2YYrFIlA7Wj2OI3hKYLNAhVc7/GjOmj7ZqdljW06F4WIMGD7LbbbEgyMK9srVmoWxs2evh9xPrDd7XWxbDzeDpRSOcSFWWalAU8oddkNVFfJ1VPPiSqG1IIja8Pld8azu3nG7Ysb0s1z0kcz3Thy8+HHhGEgSSZRGYaBly9fErqe0o1U39E5T/bKcjsdzxzevCWXRsEWIVdHEXUSj1En875mXBcucetSa9NJqeluGLYY44jzuUFZQsq6dJCaEWPIS9R9pTFsxk4P5kn3urbBzdYY0iJMx8q5r0znSu0dwQVcCPhOGMdIToV5UsscZ2lwk7JAvV9/VWcH7zu1tMqJlAsl1Uu2VRWjzhjGKdlBVNSaWtOZjGAqLNGyJE9IliLg5IKaX+4lLPRDwHcjOUe+//5bjPOXaJN39w/EmOm7jtvrZ+x2O/a7K5wLGFoDKpVcCiVFckmsAaRDv+H66jlDN+LEtsiQgG3oxypFqaJOHc6MeKd7os4Het/ROb339BlrzFjbggclN0eQgveGIQStFoX2M6zAn7JdnXG4rsMPAy7oeajeoCquRqq6UxTVQq7OGPLUrf7mr+8PSBWkyEWIjiip93Js/xYfP+giVUsmF20FXCssqVS+/vXXHO8feXZ7y+/+9GdcXV/zD/7h3+d3fvY7GjbY643ehYBzluB9E1JqVypVGIaeYVC9yOFhIM4z03xkOj8iUjk/vtMOvCTEGHzowehDNIZACI5Nv+GLz36kRrUffMjxfOB8fsPbN39KTieWPJNKpJ3dsO5+hDZJgVaqNQ01keJCpXCK37O4O/p4zWCeYYPHM2C90zgN15J8Wq7S+tGFnufPPmpw2xlXMw8Hx+PhW6USF3U6EMkarkgltwnLiMEWPXzEObwxeLMK+2hFKlNxFFSkKSt7coUErUIyALbsVDBbMyafQNSmqKD+bLR9SY3KkKJWTFJmokQ1EzVGqbYKdzowFslanBS6VeVH6Du6cVCXZ6PGxKaFrSikpwW521wTNld0Xcf+eq/TwHkhTwlvPYPfYI2l60cKoh1t9eSceKwHzu5AOkGcjV4Hv6P2PfNSOB8jtQqp6s5tmRfmaebDMPDik8/40U8/b3BPY/a5UYW9QwebgevbG37vb/0tNpsdD6fIYcpq9ns6MZcz93ePvPnqa33fW89aW4c9x8Jxzhhj2SxXrWvuMcO2sfUqOQvW94z7W3LOHE+P6nnpAlivBTY36YTV1FjvPJvteNlR5NycIdq+cT5V8pzwNvDwvDKOjpvrkb73DNWxzxrCuUarW9vRDx7vLH3nCEELlA/qVtF1I8Y6UjoSp4mcK8ucKFnIxSAmINZj7IARQ66VJQrVgsuV4i3nyTIMehjnos4lRQz+QsWuOOPYbkeG7RVxmfjlX/wZGcNpKaQiHE8z85zouw2ffvQpH7x4SegGvO+pptL7SkFIc2aOk5qrlgIV9rtbrq9uKTnz8uZjapGGlGjxXeJMzgnnAuPpkVotNTuCDWy6kX0/EujwpgOEXDOVrDadHqrJiNPU7iCWremopV7CTpUroixh671Cs+NIt9vqv/f6nFTQ1ONSqDEipZBj1gZLavM+FfVbXItW0+dKNa1ePe39anNLKVYorqkufouPH3SRWhflCg1AtUpTjnFhshPLZtOIEaIuwX2vY+wwPnmAGZpgEHS/or93zhOCep11oQNR2msOayBiah24XA5aKbX54bnmCajaAGst/TDqYSoLx36vN0HRaWUFrmAlBazWQG1CkOaPtTofUCg5aXOUIyVqMbHZoUp07aJoE866gAbFrXVZrpb83nmCD3Q+ICVo+u/qGECL9ECXt3rg6z7KGI+z4cKfWBex73833vuV9e+t0KAukZSIYMDg3/vLumk1l0Kr2g9TFMtmdXPI7Sg2GiKJ1yKlm9oVdtAiaRpNvIHzlyJlRIWIxnl9Zf2A61So6btenUmSUJPu+mrzOqzoAJxzRaLGeyxLIsZMipmYMjVVclFdUy5CyqVp+5r3mnf0m4F+HOkH3Xe4EPBBWX3YDSKGfn6kmx/phhHf9/i+wyWDL7Z1tKuiXy+vxlUoQ7IYQwFSqqSYwVpCim35bXE+tSKVleTR7G9EmnSgVN17GkuthlJUq6TIA1w8C9H3UckY6/Ok92zBkFNlmdUwOY4VH0DEEkIH0hziW4yOipnXkE1z0ciZNtmu8JHmwDUD02YXVGXdkyok5pzH+dJMdGlfw2rDJCv09dQcvr/LX10nUlw4lSOpGo6xkoqSQ/quZ+gHutARQlBZynqrt3MF0+ByvQsxxip13HuKyZjeNDcTA62hyrkgFjrfU8JALYZyeV7VXcIa+54cRB8HGwzSGaQ6uuyRJDjX4ZxaTdFsyCxN34QmBjhrW/hn+2RtOtt51Ahn6qn43rV6D+hreOt7D/o6PXFpIi+Ueqc5YKb8DfDuW2Eh9dkTqiTEFM7TGSmF0HvuH+/ACHd3b3n39g3b3Y4X243eJFUvsDVrChGXi+m8YxhGpFaCd9RSmM47zuetim8XDQTsfaBLE04KpusQ6YhV8W1jlUaq+xLH0G3wLtB1e3KeefX9f+bh/lcYSWSZuZzSRmG6dg9iG83cZINvbDzLouadJ+14bPAMeYfrA2FbNAyOgL7F66/NfyxO6rRApfeBq3HHZy8/JqaJV3ff8XBMLLlyThoE2HLumzVmhzeB3fiSrd+S8omYHlpx8sp4axosWoyJabDgyhKrcpGxgl3tiNoCm1kd0o0ehIBGSzTWlynaMEjp9c9KIZfV8LNNdUWwXTsWWtwD1lOs10nOj2AdTgIG7dDD0GunHjpC6HG2mWFKJebKErNaDk2TZmY1iOVwOPPq23viErl7vOM8n6ipkBel4OvuwHBOM4/zGQx0Qbv3jz77mE8++5zbF8958elnzYk9YILCTNvbT7GhQ77pkE2h63qOcWaphSge03uMJLAVfGX7bMvzz55zPpy5e/1OXfiTIRbDkiunRRfbcz4TwkzfnRmHIwCp5R2tacy1VlIxVFE2q7QiFWsrVilTy4Lzjph0epIqbIauEW3UdFZtfuB4qHz1paXrAudjYrfr2e06nj//ECmZZdEAPQ1L1Dw4H9q/e4916jif06J7vTgTcySlynlOpFSZF2FJ+ux2ww5jA8aPjJuElaIec1YIvbrlFzHMbboIfdeMke0ls+z4+MDpNHEojnfJkarhIVlitfzkix/xt3/+c7abDZvNhpUhaxpFXhm2gPFU04M1hDDiXGHoejrfUUOheNWazeeJFKNG/1SDF8dtf8uN2+v1rkpC2gwDIQSCdXRe7/dgAAvdrqO/HigiXJ03pFx1rVp0an/7/VvivCBzRJZEEM/OdgTjCcbiaJZwubKGhIqs0UO1MZ7VHecSiaI3eWNjvsf6M1rkMoVotGE2wWOsI4wd3dDhl+63OuZ/0EXKtEnGVAFjKapII+WIEWFZZqZlpl8mpknDx7qua3ofC1T107vQKZ+WgMZZggmICM5bpNZmy6M5PNFYaknKEGu6DkpSPBlDqmj4YnN3MJjW1fX0/TNyjty9+4paPUhptOL6VCufGmOdi6t56mRQhTpGIC5gPC54fKdfy/UBTeYDmpP5+soQ0UjuopOYb0FP19s9KQcO53ecZkMsQpFMkYJBhZG2LaaNDfRhyxCugEpMj/rVTetQL7PG+j5xmRSfOkva3qy9YLcmeWpIn0587T2x6kOnpuErdqC+cZIzNa4L2/a1rGgsO+prqB54Tr39rKN6j7EBIWAIWB8Iux2uPfzBqhWvHrBVdzy5UmIlnZI+tJKoUrh7+8jXX33LMkfO57NCKi1c0mAYfIe3niVl5pzUGiooC3V/s+Wzn37G1c0t2+trumEL3oMPhHHP9vkH+H7gML/iOH2HNYaYE6kW8JsWQ28Qq+SSbuzYXG+V1FArMRemaJizYcnCqnMVEwnZUHJCqsLN6qytO0lpLty1KmS5hgxWMZRqdTLMVRlxRYW31mkx8V4jZJSs9NR5x2h5uJ8JIROCoxRlNQ6jQr79MBCX6WJrZ1vAoHW6N9TUak3rrY35Woru9mLOpCSkNrUa2u7Kd2CcTmslY9Ks9qZOJ2oBUq4YuxJrpH1/vfHiPFMkcohwP0OslvvkieL46ReOj158QD/0hBBWOgBr7hMGjDWoTs6D0f2SMYbgejrfazG3Xl/PkkgS9X+sagk2+hFvm72Q6LPjO6eBrk7Tqo1h7T8Zrxy7Z71Cl2OvouBioTim00w8LEw4coa8VAKOHkcwTp9tWc9TPQnXqVIaPL3S/UuTQsjqI2jX2akVqhXmQyG+3CZx55Q44zpPvxn+huykLoIxPfhM1ataTSGL4TSd+f7V95ynM7/+5tcM48i8zGx3W4a+x/uuGc0Wcs1tDyLrGkipu40JKI21NmxGSk7UFFVsWhXCkQq2UcZNU4fnkpiW2PDbBuo137KSI6fTmXnWGcQ1zYm10jgP7eAVsFVJHVYsGc24UeeDismWYi1IIE1eHQeCVwzfF+wwYFx9b7FZ207I4HyP9z1IJjWj/W2/oWxvCM4T80KuSV07alR9hlXChKb/Fmz19OZKIUg0p2ipE7We2nuk3mtimvcYpkGw6keGhlPoDkwKmYUi80UgqPssneT0rdbrVFuC8VIy56J6Nm+b+v6pXCkhQqCkQk5KHNnanuAdHRln1A1jPkS1wxK9DjVn8jRRcuHx7YnT/UzNUOYGLTco9HA4czhNpKSTiKYNA2hTs7saGIeBK7PhpbkBg7IDreGjzz7i5UcfsN1dMW5GddP2HXgl7yzne9LiSctZC38VYl20UUqJiiXPM/l4T5pmpscTx/uJ8zGSshIhxOjPY8VgvN4DuWqHLQ1WtVajU5SKL5eDx1uFT3NV6r9IbZRwtada2VmlMb2MVT2TSG1FXi6NVSFR7ATiODxk0uKpaYYyY60Qp7OSZKzFrZOUDxfpiLUN3qtF2a7WKIGkFOaYmKdKqoFiPMb0ZDwWT2lUZ2Oc6vnQ3VuMlRA0cVdkNevRs4QGy2mWlaWmwillcI4PPviAbtjzshlMe6+s21pXyYZtyFfbkafIeTqQc2SaTgrD5koOululEZUeHu85Hh6hCCaqvsq4loZgFfo2VtmlzkPooR8qKshtp4XNxHhGVuvYJvT2ocdVuN7u6I1nLoYlNwJRFzRN2gBSmzN5vsCiapGkhUrqk46S91jATx/NENlAafsnnMHbZu/WdxinrvG2EWF+m48fdJFSzHS1NuFi9VFE90OHx0d+VYoeEldXVKkcjwf22x2bzYabq2s2w6B0yJVJHfRhK1k/1xgPETRYbLMlp0SeNe68Jt1LWAO2JMRUjLdYHDnN3D++I+WEthtGvc5K0kX74yPTJBe9ijUa62DdKqAtrW7aCwHA46miUQWOdWdTkKz7sxIixhq8s9guawS46d5T1Bls6FQHE0b6sMXUwqL+11wNV4w+MISemBfmNJOmO1Ka9dCwimFLUcq6LYGRZ4ipZLNQTW7Gmm26qjQm4GrYKxeblIqjNgiy1gWhkOpMrlPbbwAYtQByvvmsoe+xKVQKU8o8tkDL4NpOg2Y5hf6cCMxTYjolQuio3ZbBBDCRYCuSK/Mx6oOYDZItcV44vLkjLZE33x65fzuhvmkan5JRf7ScM3GOgOii3zf3D1uwneHm4y2319f0Q8e4HXTSbo3VZz/+CZ//+Au6YWS73xP6AesHjB8QKtPjG6pk4vTYJhsVokutpLIoY2yO5IcjcVo4vnvg/s2RaZqJbR8mzSbMGL0F1KRWX3MuWoC8M2wGS1jd96kYYzX/yTokJtKiMg5rDFg9hGxDIGrJ1NoKVNtRmSYOX8XRUpXBWYzhbtFb8f6N5/X3ga6zPH8+sN3opOGDms2GEPB+9axrXo01UUrGWM8wdsSUOE0Th2PBhqDXzwxk02HxZCOUNp0pPd0Qsx6yPhhqaXCmrAemFihjmpjVeco0c1gS/Tjw+5/9iA8/+JiXL54zjB3WrbHuGVuhYnW31LKWlrhwON2RUuI8HfU9DDN96HTSF0Vm3r57zdt3bxhxXBMUsRivsJ3C1TZ4jINuA66DbiMMe6XrL0kd7CtKOTfG4dwW7zyjdwxuw2A95fqapRs5VceptB1gcIg1yrirWU2bxTaD7aDUeN7bAV7MBpojfCtltJWLPp16f1QE4xzBOoxzSlzyntAHRRPy3wAX9CfaKO8VKf0P0h6QlBLWWB4PB96+fUvf99w/3FNyZtMPDKFTlkojOhgqxmq0RkpanHIzTVSvNShJqem5JGpJajFjPIGuUZub15jVwDprFcstVXVXMc+U3DzKLo4FrYOtT/CcErm5dGZKmWh0dNH/ZmqhtCnFZnWqKDGRY8JhqDnq63JOGVnSYMMqOi62z3UXofC2FpXg1EHDtZDGyzL8sga2F9cDMRaxgjUOJx2uhoteaV2xVnlf8b5+pea0gcJMqtNqLtBNwyFin5itxj59xQapKBwrT+QXo2FwZqUki135hpgKNWYKkWwKqdHe46T6F0kWyYY0R+bjrAadcyTHpHuzRjhIjQBRSiEVXcw77+l7T7WGzhu6LrDdbdjuNgxjz2a3aUVK3/OhESWUzdcOgtbNVilKiqkqKK+0/94OfCkZSqLmRI7LxYQ2Jj3E26XScMlWGF2DZdQM1Fz2BvrYrNDrOknQru96wDe3nbakV4Nkc3kz9Zrrrg0xGj57kU+YRi03a5+k8K9ULXBF4dUV5ls/G7WpSQVUuG6dxwEpGVJSx/CUVc5hnahJcBVlGbbXZJ1T8s26Y6lVO/365E6yYlvmctC2Q1mUlONDT9f1bMaR7WZD13UXwtW6Lai1ySVkNc+FnCMxRSVzzWfNTyuJmrv1SlNLYUkTucxkE6jGNuRFLu+jVRmVCvad6B7S1PYcyOW91INKEFtpUneMWVMI9E0U+2T6Wtv7vF4XjKHa5sIja7P8RJxQpwydAJ90Um030X4WES6RHHqgNMi2EWD0++lz/9t8/LCLVFV3oBUPXauVQ99DamZhJsfEn/3iz/jVl7/i808/J86R25tb/sHf/Xt0n3mojaGHYJ2+qXNaOC/n5uire6bLWqcW0qLEhdU4tR82jNd7QtjQdSOhHy82KDkn3rx9xeHwlhQXjucHSklUG+m3npwiyzkrFTtpIJ2xzX7LGNSdq7GDRHdDRTJOjDJ+asLgWKLBGn9J73S917/XBWy3wXSjHlAJjVuY35HSAykdSOlATgspzeQUcVhux2fELrKUSJGCJ1Bqs1fxQSMHrFyiP0IYEWeRbJEEuSbO8ZFcE81vvBVB2iS1RhlkUp0QyRRZqCjjrLR4aTEziMUajzNqdKkBxYah7+iuO6QKaVEPt8F1bFyPwUIMiLEsYWbs0ATcN3fMVci1MFXV2kyHRSfiZDDJkHLheJ7IpRCXijdooKZtosaiO59chBgz3luubkdevtgQusCwGei6nk8+/Zirqz39MDBuN2AsRTQSYru/vmR/paJThqSMcKZKJVV1OpnSwtJueEkL5IIpEV8T8Xzm/u4t02ni4fEdx8MDgrp8e6OWSWItMalcoFQhJdP0MusJZUE6FK7RvZlZKcqm4jz0VZuD0Aps6UyzFlIWIMBmE1Ska9UZQgTO55k4x0ZKUW+81WrJO+g6IQTHtnNseo3V6INmVhm188aHjmHcUEUIYSDnwrff3fPrb+85nTP3x8g0F3xNuOqwWYhyxLnA1dWW7XZHmSfi6UguGWdUB5gypKhkCihYWxq0qN6Nd6fMOUMOez7+6AO2+2s++uhjPnz5IUPv8W01YJQ2SF4SyzRRBVK7LvcP77h/eMt5OvL6zTekFBmDp29ehLQmbV4mUo04O5AdGNtRXUZcwfWG8VoLlIQJsZmCsMS23rigbu3pEkNJSZMMjCd7SzKZyUZmmznbxNmkdrashVKQ1OBcqw2oOHBWfUxTnCklk9JMygtIxUgGDNLcMoBLI3chRjmru1PXIEtn1T8yRlKcfqtz/gddpNai8WRX1rqgKkjDsCk6wbx99w7QpeinH39MjJHj6USKqo+haLpqNQVjKilOLPNRD1HjtFC1UDUR3ceoO3mkloT1zRTSejWrdMpkGYwlZ3VbzykR48I8nSg140dwncUUhQFrKSpqlaQLRrPSVtUw1Wr0nzKARPRwaa/bIJgadb+1ROK84GvBD44qSQu3oUGU0oR5Z3VeLgu1RGpNyhis+j36MGCtJ/gO7wJGGgX7wl7yKmam0d3DgDhLMCPBbDBlweSjNgGsk9RKY9ff1xYLstoxPdHei+ZZIUjVh8EahSmNGmHpp3P0vVPBYEsS9cYx2KDGs7YDsRiT1bS1FJZppsSsLM2cyalyeoiUVLDJYLO6jcwx6d5RdFqsRjvt1Xut1NrgWy3U/ejZXfUMw8h+d03X9zy7vWF3tafrB8bNBoyj4BEcvu8xbd9WRZQx1ZKitUhF1sy0Ak/3acmYUjClICmzzDPzrEm5MS0qhA2NTuz1gEAsxRvUzET3SZoQsrYNTTNmihb3y1ClE45r0TK2jVhOdJ9Tq5AaR6cLlqH3OGfogo5cUhym2gbfuSbv0InJ2UrwQvBGP60SmnwjKK1LeGucGjGjU7W1lVweORwi05xZYlEmm6s4V3BiYYk4J8CWEAKkeJmO3j8f1PNPWyadOPRTxDCnwilqHM92d8V+d8Vuu2O73eCaC4peIx2npFTykigixKJrgnmZmZeJaT5zONyzxJnYOXpv2yS0hjnqZKkGrQUxFbEVbMV4wfdKBso2IyZqHMcl2NY+nQUrcaO2SE9JVKJujM36WUlG5fZrOKhI1QbO0PwkhdL2a6qd1Am9NB1lw3/a2SRPE11DOFr1/s3PNpILiijVspK7/vsfP+wi1T4ux16bu03bR2iybsPNG9384fGRv/yv/5VXr14z9AOvXr/m2dUNn334IcE5QFlJS16IUXcdYtW6qORMbn+mZIra3jzNv7l/95rpfOLq9oUm2BpzsYd59uwFXddzON6R85llOTNNd8TjkZyXlomUMRLVrsYaXG4UUxtaKBsEq1TcWlaXcN2HKZ9ANVdxsXAE1zmq1YA/30+44aAFIyvUMZ8fSfORnDSxE1F8WRqTyooaQnrj8DbodDQpwUA67badc2q8ah2EAawnpYJjIYthiYU5Lhin0KfSVPXXguqFqtAe1affV6RBLSt2YLRzK1GX2nj1iCtCyEJJlfjqwHSayTYQ7aD/X1aXa2kPRc2V+DhTUsFUbQpyEuKUKUn0QW0OSaWJa0LwhODox4HrFzcYa3l7d+Zwmlm7167zfP6jF7x8ucP7nqHf4n2gGzYtuydQpNGwjFpVSYWck+ZJ2Vmj1dt5VaWQy0KRguQZWxaUrtUasVKR3IqaLYgrjBvDzbVrt3xjr0lRl4CWBmzE0DU2mhIIaFokhZAM4I2GTVrbNDiNGGCNbc4qLX+pgbeCfo3NGOgHDRgM3ihMlMBJiwVxyoINvW+ekk7JjG2ykqr9tzqCWM1Ta8F8c4pUgSUWchaWqBT5XKzer9Zq2J8oU7GUjANirfpEW4vt+sYYTFibL/EfiJBiZV4yzjtCb8hiVQpgLZvdFVfPnrPZ7nHeK6xn1fldaqUuaulU5tLsvBzjZoMYQ/fu1QVirxKpdWZaEstS2vPz9Iy7plscN1t637PZe/oB/Fgw/aJLxebMQjOX1aKkxA/VdeW2C9ZnJmWLTZaYCjnPigzUyELGW0/X6565AYNNAK2TZmmefCkuzMtR0xrKjEjSYkaD+i7n8FqgFIYHhS31EjdmplhEtCFe0vJbne8/8CLVipDoQ3JpAM3qJgBrk1Ibnnp3d8f5dGboe46nMx9+8CG/99Pf4WoYGfteHahR/66Ym2C3iUNzTKQlIiKX1M1SE7lo+ukbviGEod2ku3ZIdVjr6F9+zMsXH/Hmzbc83H+L1IV3j3fcPf4a0KKhJIgIUi4YvjWW4HsV8HkHnd4YraagIYgKSFqxGDJxqaScsd4S86Sec4PFD82JtbEWl+VIXKa2o1InVp2Q9IY3JWuRsp7OdsSSiOdFO6Krqu4zfUcYRxXDeg1iXOaCrYvmOcXCaZrxwRE618xBe6xRSxp9ODR8UYTLr7rPUtxbL/+6QAGw2NLjjcdnIUSBORO/eeT47oDR7NF1XIMKnXf0wVOzEB/b1GQyxqjH2jI1skytGmzpHLa5Xve7nnHT8+z5Fb/z+z8idIGvvnrHmzcHgvcMQ0/XBT75/DnXt9v2/XuscfTDgHMBbEepHjVB1sV4FU2VNbboxOLsBd8vUoh5pkqhphmTZmWv1sZWLJWa1OexmgyusN0ZTHbkaohJlQtlSk0v45GiE2gIAecd86JRN0ZJlmAr1rYiZcDalRXa7g9n6INrKMGT4DZ0+u99r8XcGnAryy9DMAqnKXvPMI6O0ClS4J1tjFGFoC2tSFmHDRrOWASmZaZUWKIhZ2GOOsGlYqlGUwIqrq1kKjYnbK0stZIE1cf1PSY4vAGHaHR9ex5izJgJfO8pXp1RTLch0LG9esaLFx8yjBuC110rouhFLZV0WqipQNKmyPaO3fYaEzxdPyq5q1Y01PDMnA6kclYvxm7QZ7vf460jeM92t6fvenY3hn4DhAx92wEVdUxXNEV3zLVx0GtVNq6yKrU4xAwkWFIh5ZlUClEiCwmxFtt7vAsK2WZtFEtWUXctTYIRZ+bzozIYRQuYHrYqgBdWCb+aFmNMg0DtZYdcpZLzgjFQaiSXyLz8DYD7nsZknaTUpaHtqlhxde2WqlJvlNiwzl65kGNinmYOjwfykAhB02ZrabDAex19aRBfXam16C5L2WmWnFVzEuNMXGZqLbigl3iNz/De03cjqV8IrsNZT62ZXJdG3c265G0DtaE2mMURpCMZpYIbcQ1y0S6F9nOqdsxiWk5Ozo1I6kxzK0enKVHq9ZrPw7rENPzGBIqhMX0026f3qvPQCVEzeHwIGOf1ELAdpxyaywKktrvBNdcMnMKDOquxbuhNW/nZ9noM62LeKswNuoMT7faU+q8L9Dpb0pyJcyUtF6J72+PqPWIruObrV+vqP6Z3kdLklartfBMee6tef94x7ALjJtBvOnynjhCb7chVbE4mXafTVhdU14PaLq3egOuE327PC0Ika6QpjZ0lbfo3RotTVXKNOppI09Kpvk9Eo9xrzar9MUpt73uvESdWfRa72iYkq/qY9YeQBjzYlfnXLO+80z0WKKyJaMCnanPsE6nBqubFNuLK+qvzllW/SNMdOdM67nYpvGsi3cZCbVwUfcakNVhOcD7oqxXdseaie5iU5MJeLC1uQ42QGxmiFVWxwjzNHE9nXEkq5pWCDYbOOYJT6NG5J7KGTneeagOd6cEoYaILmoJr158XWFknkmvb5wRsUM0i1lwCC3XP5Rqhap0satsF6v4n+MDY93R9wHcG36GSAVdVLKunHY2u1N7Ep5NQiQwNbmO95Va3DoUWc2lCXAHTVhLeB52OreAsCuflFmJZ9R4sNStjuk1YbUOvLjTvT1IGlTyYp3t9RbjENIIKtCiUrOuY3+LjB12kahaqq7qfMe1Aw2hOVMn44Om3PdY9kR7Gruf5Zs/Q9Wx9oK9weHfPn/zJnzKOA5999jFXV6vupzkOxESpuXUQmk9UJDXWS0SqCjvjJBTnebwbQQz9uOFGijoLhx7nAsH3vLz9nN1wyzI9UlLkPL/jNH1HLulid7IaoCKaViq5svQTjEJwget+h3NBdwKrnavJejiWpNCfGHJLEs4RUgB15igNn9csmycfO32o5P9H3p/E2Latd73g7xvFnHNVEbH3PvUtfK+xecZKKqUtUpgOEpI7SNABIdFwCyRoIHADZARCWMgIWhYdI9OwoI9AdEwHKWmkEKBMZSr9eM/2s42vfe895d5RrTWLUXzZ+MacEefafr5kks86Yh3FiR0rVqxizjHHV/0L671sF0YXOvYcbB7ke6LrOR1fMgwH+sOO/emIjx3D1St8N3D+jYnHb3+bh7FyP048ThcGHDvn8eJQV4xzFQck9s3OwG3Jg1NAnalKoA0FVAka6DVAEcb7mXmyYz49mOzPmzeZy7jOq1rrqM1UqmYSqTXn7He5QMlmER96a+0MB0e/d4TeMdxEfOftc3YDw3A0qwrf8e577/HOO0/tInFWSKo9HV6MK4eXTSfNKvIKvjaZn2KtZK1MU26EcbNrKKqkulBWwnIpJvOD6R6m/IZxuieniY62qR86DuHAUpRLsur0qIbBeriv6MeVkq1rmLJZ2cfeWnuxF3yEw145HW2QPl6gZMU5R2xothhMScH5Fpy80PXGn4t9NGJryZRpRpsajJfmZh2MnLvbR/qhsw5xtAQzF2uhX9LI+LDgfeAoVnGlAikr81L49LORccq8vh15vBjnqWYxQFA2HTsDVC2gsMyJjz7+lEP0vHMM7ILwah95cezZdXDYWWtyP3j6PtDtd+xOL8D3dP012Q9c37zF8XBN13V0XcRHh2CWMZIqeinoVAg3B3Y3V6j35NDaZUHY9QM5D/TdQK2JnC+QDeTUSU/0HW/dvOTVi5fs+p79lRJCxu+A2FrPtc3nisdVa5fXlXJjwkMoNsPF2XOLeGLfM+wGcpm4TAuPjzNaA7vhyNAPHA7XdLEzfyrnuVwuLMsnlJxJeQVSTcz50exrdAXshTYz9yaO2+ZN4lbQBK3CApqxojG6DBC05JE5Td/VPv+FDlIrqEBkRcG1PnmDTAo2E3LBsfohdTGy73uG2NP7QBBHWRJ3d7csy463337VrDJ0q8pWrscK5YQGwWxkvHVDt9lUYZ4vTM21MqVTq+jaTEaEvjtAFYa4pw87ZhcMtFBn1AVU7XFVrJpblomSMh0ds58gVGocUGcKE7XaABNakFGHq7bla2PUb2ro0iR9UJQmHCue5v60HljLflqm5py3ykl7Yn8kNMb8moVZddHR7wZCv8OHjqKOUiDVSqqF0EAGiKlK0Pg4viWFjQpj6FptrPdmFFVb+8IqKWcgibGSzwvLRTnfKilXplFJy+qQw1OGvs4Oam0Vhw1xbX5hqKMYzNit23l2J0ccHPsWpPo+0nU9MVj7CefZ9Tui7zdSs6LUYLJcCKzmcCpPWobajq0luS1giUHvS16a71kADY00aSCKjbXeWp1g7eutkhIlCBBtVicFsjfTO20HYkmZEJOd02wWJraZ0QjIzbokVvrBmePtUq3AFiOSrzBzERr4gQ127pxYpeXN7BHY5mduJQz7laTrCNHjPE3DbyULN3h4KXhV+mJusqVCLkrOyjgnzmNimg16vra9gUY2tWrK1LoxA0pGGCK521PE412kj54uQggVH6yiswov2Iw19NRhRwg7+lWfL8RGLaGtT6zCzVZNOXGEvjdPJ2kGlGL6nb6ZCW50jpZKORcILlrA2O/p+0DowYfaEKx2EtdqUdZOAushtpW10jlW0MIqKGBKII2UnQspZbyLRvL1kRg6YjRglHOe3GyNNheIksg1WSXVRKatYyW4RsqHp7nkCo3S9fwLz0KW7ZW1ZlMM0f8BnHn/0O/7AXZdR/TeNoG2IcxLYsmFq9OJ7/nKl+hiZGyq47vYcT0c6ELkrVevOB6OuGAs6BACMXhyStsG8rRJYFV14wGUuvIH2FoNlYTWzDjeUVUZ0pFu6In9wNDvid3AeD7z5vVHzNOEZtjHKxgK+fg1Upm4LHcs2TTzVg+X5DIlFJLPLCREHeZA0SDp0lqe0lqgVJMzqoYCFJEmbYJtjm4NVtXIx9qId2JDWLMDNISPAzpvQrJeBjq3x7uO2Ad819oIaTHk3nghFOX65hV/8A//MHf3H7P4T/nsNlLLPTnftVxqMkfZdCbOnZkYZqtU3TIjabGseKzUotRUqFnxkkiS0Spczol5hvGiPN7bhjXOaj349hmcwOKTtTJU8dUsr1xwhCj4oemgB2HY28bQ7SEM4HubLbgQcDHgou3KFVsPuVjbo7aLzgZF1r6ozhQxBGtt4FYR0YJTU+J26ihlJteRnBLnN/ekJdHFni4OEBx134MPuNAR1KO1kOfZKhXNdiwFinNUL6TYNkcVfAmNqmDNmdA74s6ygCXb/F1bRS1VyEtHLZ6ydy0IVfZDpcZKKUKua/vXWtGriOyWtImRsrW61gLXbYOWLuCDp9+tOok7XNcZgqyZGrrorb21ErNwzCmx5EoqjpQd81w4XxKXcTEB31rMfdY6oSQqyxbM223tSEhtLrgVJVpXIDjoI9J5+uMVh8MOGU7UzgjVw+4K6Q7sDyeG3d7sQlZUXm7miFnxweMGh48GbqpajV+XMw8Pt7x5/QnT/IBW8BLYd1f00jP0HTdXJ/qu4+pmz/4U8R40LCYuUAOKAWzcRmhqdh606xfa941VtY05nHPklHl8vDBepjZrMkQhmKuAF2fdjcZ/KjW1JDaTysycLuQ8s6QRVTUre6zDs9JiqlbT8tDaAmgbv8hKOZGGiF5QCuMy8jA+Ms/Ld7XP//8lSH3zm9/kb/2tv8XP//zPc7lc+L7v+z5+7ud+jh/6oR8CLEr/vb/39/hn/+yfcXt7y4/8yI/wMz/zM3z/93//f9Pr/NHv+0GOO2NWV5TUoLvjsjCnxLtvvc0f/sEfZLcbeLzcMs1ngvP0oSMEz4sXNxz2O7IWlpI3RFlOC4g2KOo6C2Bt/RpEuNjnWBeGog1SqdTLLdN8YUknun5H1+9Jw0LX7zg/3PP6s49Y5hmqso9XBAl4PCmPfHT/qyzJ5lmpmvtlcpniKssapPBkhbIKuOrK0mw93wbrliqGrGpAi1IEcRUJtaGTzNLcPkHLwiSun6YROIXOBdOj8Dui31vbso+E3oGY9IuUSj2PuKTcvHyHr/3+L/H69tt8/PC/IUG5vyvc330CtZB0sQ1eAhDw6oja2YU4zTDP1Lky35WnYDWbnqIPCQWm5EhFOF8qD/eFlGHKkKrB9SsdIpUuJpyrBNSkdkXoo8P3gu8doXOECMdjJQQ14F0QfFBcFyxIdRaoBKvIV56UzYbyFqTW2RmKBSlps1CtSC1tzuiad5Yj5Zl5ubCMM3effspymRj6A7v+gAw9oe9N4kp6ohsoaWQpj5Q8kWuhIqZy7gw+k4DF2dwqEKyMarNJPwjdrth86mwNIl3b19WRlt7AHFk20ES3y4gqSxaS6eWanQutRFPdApWIzYFqMS+kdS3avMrmdcNhsKpi2OFitGF6Eyn13TojM2BGqcrj48ySJnIJ5ByZlsL5sjCOiWW1ndBGqlZDMi7YRukautcqH0VcaQN7h2rX2q4Ohoj00YLU1Ykc9izdDgkDu/2JbrjmsL9it9vbPCqYoG/NBT3bQQnBQ3Sm3iBW5U7zZGoT97fcvv6YXEzRxEug667xUdjtO169daDvA9c3B/ZXsXU3plaJCDW7bZ4KK6nZoy2Q6BaiGlmqdZXWeWFKmXSZuVyWZixZMSytzZdMG8dbAKdQa7I1TSaViTmdjZCcJ5u/uR7vImjjo9LqOLWASau819FLo5KhFHKdqTVzWUbux/PvXZB68+YNP/IjP8Kf/JN/kp//+Z/n7bff5pd/+Zd58eLF9ph//I//Mf/kn/wT/vk//+d8/etf5+/+3b/Lj/7oj/Jf/st/YRiG7/q13n71DlfHK2IwSG3BFu3jOHKZJ16+eMHpeGLoO9AF70zKxYv5T1kmbGAIWkWxDqVRqzJsNmqZ4cqS3uTr2+B9VT9YE7haKqh55IyXMyWvCsKZaTxb5VEMxSdNOcJLQF3HEI7kLls1lR6geTStZoSLLDgcuWZyKZuKwNry3G5r4rW2QljnvNIcOdX2GeyPVxUJaDqDTeJGtX0X046QxgNbq5VaKnWxC7cw4lKlnDLemcjnYfeK4/6B+XKL0w6RQh89zikxKT5XXNENxsuY0bmQl0qeKiUrZW5WGaUpLmAIr9LmEEZ8fzoP4hTvrTXr1g4djVcYwe8U11t1EbpACAoRNCg0wiHeod5M5FbHU9AmQlqpZIPTbpuFbjQR1KwcnDhqbbM+x4ZQrNX6kGaqaS2VJZkyQT8crdLoe0LcI6EjYBSEKs11TNnsKaw6dk0b0ZvCBk3otwEWtq+me7iuCNn+L6ztmMZ+sb/wDbDSHreCC9eFLsimRrE+01Nbcu0VN8WITQxXNsuGtf0JULRdf66xdxqAYllya/c58moWWWsDYFjVUNSAGr46fOtAbVKVYnJNrr1XL2ubEmJw7Hqbj/V9T4xWQdHtkdDT93uzR+m6J6WE2kBTRTfIPK2165pkWGkBXKtpGIpYW7RzJmwbnCfI02t3vccF2SSlts2krt/ZjqmuupetC6JNw9KC1Nqyl6ev1uXXpoBRm8VAk5RtoC8DR2TNpLzYV1pIaSbl2Wg2WjbVl2fLnCr61G1aX15lA27UluSrFpamoJJybhJLv0fAiX/0j/4RX/nKV/i5n/u57b6vf/3r279VlZ/+6Z/m7/ydv8Of+TN/BoB/8S/+Be+++y7/+l//a/7CX/gL3/Vr/fAP/1949eIdhm63IZVUK5+8+Yw3D7ccdjvef+sV3jt2g2ecekpOzPMFpTKlM4tODSkpa6OMVapHq23MtZFRtaGMlFXDapUven7xQ80J1YW8GOLMuUg/DHTdYK8/Xox30giE1EqUnuAjbx+/lxf7zMP0KZ88/DpLmQz2njOzjNw5YfIDe3+Fqqdzgd5FG9yLbsLibk3p1/EA1haRCrU0iChtM27Xhd2sIae0SsspWWeyJJwccG6HuB7oqSUyX0Yu9w/2BHFCfKQfTtQvJbqw4/23/whD/B5YHHeffEQf4EuveoYoTK/fML25JV8q0yczZa7UcUHnhZxhWqRJy4ht+jRGPEquUFTJ2RnSEUz5QpWwK4RDRrwSom22vXcMAUIHu5eV2Ct9HOi6g31emUhNqVq9KZGXGFBvHl2muGGwdZvmASxts3jq42tRfPWUMltgURP0FRfMhgNHXTzixbhy85l5Grkf75nHkau33+P6vS/ju4FwukF81zhexRyHMdhxbkACrZWKRROVASS06sKkpXJrh1ks161B1PyIrb2rQmUBSRQCmQBOib0hvmQRQjK7CBZpCmLuGU+zhboNsVa3a8NHh/NGn6hRNt7wxiF2tpGleaKURKwdvexIqfDweOFyWahq9h8pVZY5k1MhODjuPVWF0OD2kqoBGVb6gqqJHQBRoBeld0ofoO/gdOh4/+1rhmHgdPWSYXeFdifq7m1cHNi/ep9uf0JCQKJrnKhiiJupGJu2qZ847wyoNfToIkaaLwXvhN0QoTR0JGqBqQv0B8/V2z2+E7Oyx3h3rto5keya59LTfLj6hEpC3Zo4VpSERbIOs+V5Imc/zfnEwFML9C7SxYFAIKcZNDG14PRwfuDu8Q3zPHJ3/ozL5ba1dM3SyAeDzKu05KCqVWVi7T1qE0xrhGwtNnPNNfEw3bHkmTmZ31rKGxv5f/f23z1I/Zt/82/40R/9Uf7cn/tz/Pt//+/50pe+xF/9q3+Vv/SX/hIAv/Zrv8aHH37In/pTf2r7m+vra/7YH/tj/If/8B9+2yA1zzPz/ET8ur+/B+Dq5gU3L16y6/atj25BKmmhijJ0NhT0YoCJUqP1rVODYFfjBDjfQBcCKwPcPHXsIDakacsk7YRtRmk85wnYTesK34RaLoh4myOkhFYzLKRVKJaemOad4ulCJKqw5IngessataGXMCKew5sdQzFF9MZaYNVSWweVwjqnerp3y65ocVUt7VzHr9uQU9Z76pa1WZViShqKiXLW0tCHanMOJJPnxeD04tgPN+R9ZIhXOHqCU3Zxx74TqjySspip4FiMDDlmylzNKT6Zzl1Wk+CprZHH2uKBpu/3JFQpAhIU3xmPy3UrEg1CNGhv2EEYhBDMxsGEbY0f14ZWqDeCqDpnOneqJr651hmaG0DgSTVgXQ80NGJ1HlfNT8GAIQ5pQABDoeanr1rIakOzbrfHxwEfdoiPFBbQpX1Oy5Bt89GtcNGm/bEO0GsLUuu8pjbI/brZrRh0aRXXmrJrC18qrZLyq8SYraXmcPMsQDXES5uJPr1AW3fOhvgrJHsbba2rss2Ri5r9jFPf4PeVVIoZRVZTyU9pFTltwcfb+oiNQhCKdUnqOq2RZ10G2AKWbwCQLjp2Q8cwdHRdR/CmQK+hxwVLKrt+oIqwjVqasknjDDQjxc/PgYzIagfbuGAGS+pa+2uIkW6IdIOj6wOuYws40tQjRJ0drLqeb55dp2znWZ/9tMIWQLauyppkryR5bZB31wj1tVp1mrPxQtcKaknzVkmt8Hy2V3p6D7DOotjoE+uSMPqAnb9cEvMyM5eZUtb2zvPh4e98++8epH71V3+Vn/mZn+HHf/zH+dt/+2/zn//zf+av/bW/Rtd1/NiP/RgffvghAO++++7n/u7dd9/dfvedt3/4D/8hf//v//3fcv//8mu/zG98+CGeZreRzWvmvFyY0kwXAsdhh/eOvlNiNMh4ziOKcWe2Mr1lzPW3kaBfPWKecSmfNqZ1aKk2n0B1ayGKKFWtanFJkda201K2an57je27lT6dP3Bz+ICUR6pWgnSknFiWBaowlYlQO5wTOtfZwBY10JxzG1dhe+L2WtrKcPvR1NRtU7LW5pqBCq0qU2M2UQWHf7JyqKDOEWLP4eqKkgvj/UReRpaHM+PDAyqOm9OOfR/49JtHjn4g5Inxk09Ikjh/eOHycaLMlfzYDNqy35ICdG3lrXg97D2Ikn0liZqMzLrltTYLO4cOggRF+rXVpBQHsY9cX73ksB+I8UTXnTB+jgXWrGbvLmIyNNYyFVZx30UTTgoVmyM6FbyaXUPmQmGh5EqZM048+8MNXbczNXodMLUMsy4Y05nH5RYVuH7vPUQDV+98QDhcm52Kj81E0taUzXAgqTT5HGncodLg24m5ETDNPuNpDV+Wwvm8UOZCWqyNijwJja5cLmgtXW8AExfaVuTEDEa12EaNbNdF02yy1eusLBffg1q1W4vNyaSpn2vztRJfwSeEgkjBe2s2llyoVXEEnAhpUS7jZBbxk7aWFa19acg874UqDrySS+WytCAuDYQndm6LePqdafodT8cmWdUjDpIulGkkTff4LtO/eA/xEVertZVLRVKBZHJUmhY0GKgm9B3qHakF0YhjkMBV2PPWcENQ2ImRlvMhUXcJ3wn41kZXa6yKOpwGViV16ooOrYh4+uEa3w0s5cKUH1EtPJ2EgDSdT+cE5yFfCpc5MadCDD10TyhFVSsAcPBweeQ8jVzGex7Or43rmcbGDX1CqZaayLLYe5ZoLVqx87smamtyC0ouiVQWUkncXW5ZSuJqf8Wr0xVz93ski1Rr5Yd+6If4qZ/6KQD+6B/9o/zCL/wC//Sf/lN+7Md+7P+r5/yJn/gJfvzHf3z7+f7+nq985Sv80jd+hUAkL5mcFs7ne0otSHRIMMjnCpJ4/50TL693iBREEojiyyqiaWQ7AFUbRsqaAQJrn9eykVWrilaUPAWpUlqA03VwXBuBUfDJLDrYTmILSE8p6TMYOXRhx417j1RssYgK53LPYzpTK0xlJupMJFIs2rI2c6wSYsuqYM2WeQpWgNsERlu1KJbRVoz5v8LDHR7BG8O96Xut9ighGpE1z4np0wv1cSQ9XpgeHwldz/Vxj8iOF8cDR99T54nx/jM0nbl8Wxg/Fov8TQVDa5N6UW0oMbbPYONwk6MpXklOqV7Q0LK8YhWPDg4dQL0gg28brRFFXddxdXqHm+MVoTsRuyvsLNqmfl4WLsuCktB65sk3xxCTiQVRq149ENRZtQQYrOXMMi1c7i+blFUl4WtvSuzO4+kR51uQuiPGHS/f+SpDf83p6n3i/hqwFudWKTWQQG6V5RqkksIlZVIpnOfMlE0cNTcldN9Is5cl2/B8KZRZ0RakNmXquh5jwYwtxdpcAduEnM1hfLE1XWsTmLVUfSvNRRTF24AfoTRCslUFT7MMVZouXcL5wm6o+GBBqtbShKMDXjw5zZzvR3vNbHYbteUt4pQQ7TOstiRLLszFwAHrtVZRTBkSuiFyPO05ng4cTkdi7JiSmMrMMjJePGFQbora56gZSelZkGouzWkx/lcM+KED70jFOjQRB+I5xT2lvyaKcBU7nIOH0y3n/aOhct3TXEZwOPVIC1Ks10Lb9B2ebrim31+j8y3jJaPV9jKz8mm6lmKq885b2/cyL+SEKdf0Qghdo6oo87JQKdw/nrk/PzJOdzxebhs/yuTSnickuWacS1AdTqzNZ1V58/pqggdZlzaHsqpsKYm7yz2pJK73R14cr1i63yPgxPvvv88P/uAPfu6+P/AH/gD/8l/+SwDee+89AD766CPef//97TEfffQRf+SP/JHf9jn7vqfv+99y/4cffUiQQM1Wro7jg0l3BL8FqS72hOAQGRmnnhgd+71r1VUgem+5uKz9URvKim7CSm2Zy1Yyw7pRPy+7nyDjK3dqDQAiJl3yXOfKftGGjm0DXsELW4bKal7WNZUHc3n1zlNqcyT1pryAPKk1OF2H4vqUIK//kO1/1iZsm+Aq9cJqkSC0tkUr4x1QKlpHVAqVaFUiPBnd1YyUTF1mlsuZmhNU0yiLIrw4vmAReLyNlNGZ0G3d+lUtWLaBtLZ5iEJudWtBN3TZpDBpQy2qNeGSiNmWNPVsUdDUKmZV43W4yv0lIz5x0NrM/oxACxCd0HlB1VFIBpqpC5tgJ0aYLtrACbW0Crkw14mkpvk4zwvOeVJeCDVQC2ZJUT1OTQGiaMWHHh8GYre3+ZiLpNYOWUE6Szarh2mZOM8T8zLxOM+c54WUE5dSyblyXhKXZ7JdItArBK92XTybIbUlY5lwZeO/1KykxSrIumXx2JBTFbcioNvFoAWqWzfTZlHBanMB89JmD209KSZyW9UjLiNhxvlKXhIxZGIQhi5SM+SlkpY252sO1zi7PsTePIqax5YIqTqKehvIN26ZE8WLeY3t+sB+Fzld7bl5dcX+dAAfTVapOrQ45nPizaef4rpH4qu3mHKmjz27YW/k3caPciJWRXmbz6g2wFTK1CVT54TOiVBgcBHvQINSvaK+XZfrtbkdZD6XlFm1CDRiuIQO5zuc74nhwNAn6wzNt/baPB2TXB2STJ+xljZXr7UlF4XqTAk/55lSM5fpgct0z7w8sOSRXBaKWgBbHblVhEoma7IEuy480ebZOG5VC0seKdVaiHOabTYrQuej7WGr9uB3cfvvHqR+5Ed+hF/8xV/83H2/9Eu/xPd8z/cABqJ47733+Hf/7t9tQen+/p7/+B//I3/lr/yV/6bX+o//+f9G500br9ZMShcLEj5CE3bt+x7vHUPv6DvhxYsTX/vqu+yGjhdXV+yHwaRysrGiYxdb+89Ih+tmbz4pK8rLJj7IBjFomXpT7S4JVqHHlQTpuyacaVkpKNVVitRWOdgzu7VUEdPGcihDOAG2IS/dCCLMOVG44P3AXqUZrlWcVoIzTS1rZa4gifWqWEty22dKeULxIdraBL4RAVt1ucLW8kLhY5SuAQcOOHVodYZWzBOSRtL9ax4//CauC4TBkFEnCfzgl3+Au08/4n/+1d9kfD2RLs3GniZjhNowutiCHjqrWCaUWTOpKmOuFFXOBeZCUyGvqDj83iDbUioyto1xtkNZaiXXwv6y4PpHrh6VD24GvqRqckL7Pd57HDOdWyg1MWVTkM/pkUIGrRRdWMVxTfoncakjWjPTcibnmfmcuNzNtv4OPdJlqB1aJ55al4LvBvrhFX1/4nB8j93uBrTjPOVWlRiI5f7ywOPjLZfxzIdvPmWeRx7Ob7hc7k1puxRyqby5feTx8UxTG8Y54Xq/Y9dFUjYgiQuCerEqRhVpaC8zixTKpDzcFbqd0O0FQktEWtEfWU+THfdaPJkerdIQh6YcMS+ZUpTbu5nzuUH0W2I3p6bG7isuZJxTdn0lhMqLa+WdV4GSYbxPnC+Vkh196Iw369ocTqxbkErh4XKxNeA6VDoj0eaEr0oflc4rV33H2y/2XF/t+Nr3fcD3/8GvUzWQtKNUZ8ojk+f2w2/zv/6/fpEiwrc+/pT9y5d8+avfy+//A3/IEtpVcNJ7wm6AEKjiTB9wSehSKNNMuX2kTjPDIkR/JIfEtH+k+EyJpRHs1zafNtSgpaVVre23qYa5gPODOWl314R4zSGe2B/eIeULt6//N6byxhIJlykIabI51DQZ4KQk89iqBRIFxbOkhbvzLUteePP4IQ/jZ+Q8MY33VM12jDFXAed6qqskpqaCnvCYmes286qGYC418TjdseSJJWWmORND5NX1DUM3sO8GQnMD+G5u/92D1N/4G3+DP/7H/zg/9VM/xZ//83+e//Sf/hM/+7M/y8/+7M8ClpX/9b/+1/kH/+Af8P3f//0bBP2DDz7gz/7ZP/vf9Fp3t7eNLR0MQZJHa824CM505VJJOCdMi/nXiFceLyeqVg67PX3X5PqzWb+74tr7fEJVaitp11bF+gDr1a6UumdAimfIwBUyWsXAHCI29AWeBu2skAXbquVzcLtmAe1ssOt9ZFVhr3lpzO26/e06kn5KyFr6zDMmOK2FoE+f52l+0Uiapn1jx0SqvXelyfhgzZPGh7HDY9mrlEpNC2m84LKn1tkUDWphFwYm36PFUxZHw6Wwgk+2f238G9pMCIqYuEr17nMEThOn1ad26fpHBTbMrECuytJ07B7njPOJeTFwi1ZpsjABr5Woqxq3bWDqJrQaN6U2A0Lz0vGoJrRONtivM7kspGLttwrNtDA1WL8FqFWh2sUd3g/4MBBCj/c9tThLHKggVqGZt9nIeR55nEameeQ8zYzLQlGYW6AeU2ZcckuEFO+aRFj1Vuk6aYN+uw6lYZOfqcFRqyk7+Ly2tj83rmoSY7qBdQCb+eEwPUVDwK7JQ0qFZcnrgkcVE4fNNvPzodocqyrRK8tQm75iU3oxe2GDsctT21PFrFNoj8s5G+jFP5upijleRwd9dOz3PcfDwP6wY3/cs2RHmhxVBdRQcSUp0/lCVuXhs9ekUnh58xY1JaqydSloSvF4A7No26S1VKukloQuGam2yavLVF+p3jQF7fjb6n/C4+uzSmq9fu1aFB+aKnxAJNAE+u36a0o2a+W1opDtGD5VUnUF22xuwgYLn5ORduflkVJMMLtq2fIpm/lar7ZYeoas1ZTaXNSeu5g+YElMabQ2XyrMKTcqgCMG6wSZe/bzztLvfPvvHqR++Id/mH/1r/4VP/ETP8FP/uRP8vWvf52f/umf5i/+xb+4PeZv/s2/yfl85i//5b/M7e0tf+JP/An+7b/9t/9NHCkw5EjJZhXfpixr6rE1v6vaIk+NV/Pm/syv/Pq32Q0Dzg34uDfYpJqoUq7a2llG7pW2+Unb2LeyvB3fis1IWnMek/1YKM0LaKmmpJ41MdYL0UX27BFxZBJFipXyYnMN0aZG3rhbitLFAyH0TSJpJOWZh8fXLGnCl8oQerrQcdod8D4izrOtYutn8TTX0Y3fYbql7QOtytfBm8eV73DxYGrUXUS8p44LuV6oxZEWTy6Kl0JwlTon6pLRJTO9viXrYlI7g9lA5PMD5XzH3Zs3nB8fmZfFjvNgPfwxFYoqGtS4NEqb8Qkp9tQQOfQDXzrdIOK4XxamUlbuPJnKQzkzaTJH5vwM+aSwaGUslZoyt/ePpDnx1vGK7BMhuMaP8njpTXwTCFxTqaRyRdYz0+WO1599g1xmQki4EEBntN6jmhnLRKqJKmKADacsmhlTwqs0RJU3Xyw8XTixH96n6/YIuxYIBbNDWvjs9kOmZeSTTz7k09cf83h55Dc/+ibzPBt1QWzTSU1yarwszMVaUYEn/UfvHNIF2ENNSpqh1AIrSq0hFqH5bc3V1Bh8NNUNtPmXKVpb1V8LrhakVsQnahHyQ2VZ6oYiFFGGXUWcneOcTKMvL5UpK64KoXlN9U3RAxwabFOLQ6XXxj+rBqfONRuJl5aJO8HHSMbhgjfBXIQwdHhRrqJyiMoHX3rJH/tjf4ibFydevnyXcezMOkV6k/0aBsRH3nqr8j99fWFaZm7TyOOHH3N/uObNW/+VfthxOl7Rdb2Z+DlvwsrSAYH8+Mh890BNmXyZzTWZidxN5JBYwmxGhq5ue8oqit2yYet6aAFxdi2Lx/uB0B1wrrPzM40gBaRQymxzXBlA7Fiv4KZalbQUpnMyp/HFgn+/37E/HmAU9FwpeWZJj4zTrUHGk+mTqijqFFIlJWv5mUtiBvXQzsU4X6zl2hCkpRbGaSTnbK10Z0rrQzew6/b0YaDzPdX/HgUpgD/9p/80f/pP/+nf8fciwk/+5E/ykz/5k/+/vZA2Ofk2R3JrRtciyGoNbTBICzDpceRxnNgNA++8/T7XN5YwhDYTKk3jzzLm0i70sIm9Pm8gWwLUahBVDFXQhFt1IdfEWC620ZEJTPS6I4p5xxQyxWWEgBOTHtIWpMAClYjQhR0ijpIzU/eI1Aem8YHH82v60HE8XFN0z2l/Mu8it3YMZQtW8qwsMWV16yWvM7a1Pyze0EouDLjuiPhI3B3wXU+SM/lsoIacHMxKdQpBG9opo6kw391zudyBV6QriK8sl0fS5YHHxwfGcWRJydB3HeRSeWzmgUagta7fvBi5NPaBEAf2xxu+8t5XCMFzO164LAvVCyUIc0n85sO3KdOCLkrNrcJt1WqqlVkVzYX785m0LFyWydovPm6bjs0+OoLz4AcQIbEncSFXGJfMvEz0fSKqQ3UEvaNqYS4zSTPiItK8i7Jmlmwcq863FqSYy3AMR3bdW4Q44OhR9VtreSkLH99+ysPjPd/68Df56ONv8XB+5Ne//U3mZWa/37Mbds/mADR49pqXrHp7LUhFgZ1QfUW7Asl0+QxcIDSInj1HqvjiTJIphi1ImbRNq5pVzbahKs4ltMDl0ewz7AqxzL7vKyFWk62aKpptmL8UxVWP1nUe1CHBg1RwNpCPXYPrq2D6dRVf2oAeb/MnMFUQdU3wFqIX9p0nOnjZVa5D5avvXfN/+kO/n5sXN9QqLIug0iHehJNjd8CFjhc3gvsSXM5nHv/r/8r45g3n08fcffub7I8n9v0OGfbQApS49doN6CWxfHpnNJNiAKwlzCxhpMRECgvq28y7HZ8tod4ildgxgKb3GQmxp+92IMHOzzKjJJDZzANVEOkQySC5zRxLu04r81goRcnJzrULgeFwIJHAV6okUhmZ53uTUsv2nlbJKrMpsnOjUY2eUYVaEqUW7s9vmNPYzrm1/5a5UIs2YWbjgHahp49N99N35mz8Xdy+0Np9tdYNgbdWPDQbAcTRdZHj8YgPnhBtRhWCp+s7hr7n5at3OV29tDZVzhgUdrQFgFUZ0pArul16LUg16fk2R+U7pv9IY4tb28+cLcETiJaNPptN2GJtTcPm7bTqXiECG/kWoh8oIRPjnthNpFq4PX/GLk0c+iMAXezoXceqPNDQGxsnRaVtBq33Y2Tm5g8VTGTThUjoepzv6PsTod8zzcISHqEWMs3mQ0xXTMkQBNf7dg6sZVVKavp1DhkGosD1++/RTxPn6cxlunDRxO2SWXIlBE9oLRTXWfZ2vTuxHw5c90d6F/Hi2Xd7fOgheKQPLDUxMRNj4O7xzGW8fWq/0jAhm8dOxWnmPC88jCNFhatjIfraqhkz3AvD3vykugMSFR933N2/YZ4eERagoLW3zbsmQnVUXaxN6s2sr0i1wCVh649ltbnjmB7x46f41JPqjA8dqWZSzdw/3vOtj3+D+4d7PnvzaUNejW2eaACFlJsoa2mfs9HuLMmCIsq0FILLRnTNpSkl2KxLBHufGKm3qsOL4IIhwzKJWc2tyJJe09ozpAXQ5LhWZezYK7tDbbPbJq5VGwhFob+KRkLWBLFQs6POT9cTmMmij7ZZDwfjt9UklGTXm2/Q6VQdNF6USbVaw1so5uPVObrguL468OrYc/PWWwzHa7r9ibIINQuqgaq79jm8oQO7jng8EcXR7/b044AgzOPFwDW14KXxzkzyhFpHBCFP8yZyW52RForP5JioPm97w+cBE/LEV1yDlNLaiR0uDHi/w/keJCDa0I1ry18zq4yRl2qw86qM48wyZ/ueEqjNmp2Ycv1Kt5mXC9N0IeelzcV0y8WLVlPxEWl7I03JH1Z7EV8cXeiMV9qSXueU4hyiRo4P3sRs+9DR+w4vrtEkfo8UJ/6PvOVsOnTOG+NegmzQcXGOw3HPlz/4gGEYOJ5Mf2sYBk7XV/Rdz3vvvc/11TVlWUiXC6UsjJdvk1N6kvoAIG0TnZV9bU0mtVnJ2kLe4o3ii12YWkxBuLQhu6uBimXSGjbnwgZ9V0pJTV+rZVsIxbWefBV23TVOOvbHt6jec0lnPvnol9j3R4KPXKWX3Oxe0HNAWlVixeWzmY03+CmhZV6uINFIzbEP9MOOEPf0+yt8GDgcP6Dvb7gvHzPfXVh0ZOaWpYwUDVSNhnzaOwOIVEWKkmtimS/kuiD7jnC15+CE7/naVyiq/NKvfoNv/9ff5Lac+dWHkXHO3FwFTseBLgZOfsfgA1+9fof3D1f4EOncgDjP7nRFjYFu6OlPe3ItHN8cuRvv+bWPvsnHt3fkaqoZYMWpt8EW55wYJfPx3QO/8fo1N6fEq7df0feRmj05B7N7v3lF6HZcv3qH480L7l5/iI83jJd7Hm8/ZjzfUusDJe+oOqPc42UkU0jNvXQRG2SLBAZvlfeSzfplvHzIbbrHSaSLR5xELsvEuEy8ubvj//m//M/c3t+Tc/O6a7MG54Khtppm4LpeQvMsQtkUOW4fFy5jptfCrmakGFrOBmuCixFVIUm0IOUD3eDwnTLqhZyhc57OBwskrq69PJCAq2oZcYXDTeGwN15NXjvwDZUnfcQde3KB7tdHXn+aON9V3ny4ug1blemjo997nHfEIaBVmB6U6a7xgcS2rHH2jLOneIjiKKKIzoguRB85HiP7IfKVr33AVz94n3c++ICbd7/M/nAiP0KehJqEPFkiV7zRGuRwYHh3B+OZq9uPyDXhnXD72SfkZUG+Z2FwMJXKnBUthXK5RUshzYmSoYqSQqK6zNyPTMOZTYiX9q2195pMPZsEkpXaCAEfjCIRwkCIB0tU25axlJmlLJQ6UxgpTKaLGANLyrx+/cDjw8jjfeJ8TgQfOR6viTESugBeSbrw5v4z7h9eM45n0yOEjQiemlGsV6WoEYCjBLwawGzf7y0RLIVOIqUqS+OJEQrFKX23Yxh27Ic9p/7I9XAkuPB7qzjxf+TNuycTNt9k9sUJvkFDTf7+wG4YOB1O7PcHht2O66sbuq5jN+zpYk+qUENDILk2w9HKCq20+btle62RyBP74rnWxDYZA5pCuRrkWFe9PGnZilsHpuusq81P6pPNiLIqmNvCB6z16IKVy6GnLo9My4gTz5xmUl5ahuKeBrJrgcfzNoNs1RXrQH37kg3haGaHHcH3OBcxRQKHmZYtDXhPa/uYSsE6wZUmDqiKMfFDQIInHIzF74cdNXQUmZkLzBlUIiEORBfowkDnA7s4cIgDeG99cXH42EEf6fqeXb8j1czQDSxlIXpb1qsA8DpLbMWAzb5EmVPmMs/0Xce4zMQYDR5dBHwi1TYbdA7nO3zsid2enAs+DJbp0hmqrGLVEobgXKsmoyUYd6k0BGfWbPpueQItiASr7iRwnkbO08jd4z0Pj/c8nB9AA1pXtYk2WVTdtM/W5HytsmyjMWJ3KhZUfLOZEdka1O2xrhE1m5WdyDoaomAIQI/Yv9dnf570t/mhOMUHu7uunW9oiZHD9Y6w92bEODj6QVguFutYQQPbUrUKP0ZTX6ixkkNtx1jadSBtdmsAkbB5dlm7r4uervPs9jsOxyPDbo+4zqoRsYoRWZl3UCTbTMc7fB8ItTDs9uz3B0Jw1GItvFpKk6gSNGM/Lwlts/H10lIpVGdf6mzzd7pdhO2ctSO6DriV5iXnG1ctIq5DXGx6mdJcCxrlRfNG8oZKVTHTwlJYlsQ0JVI2RQnv1LokMRgobLPMSKScqFXbPMyu/wb2bWtqlaH1eDFrkegiXexQVfrYt8SoQikbiMKVSgyB6CPRB4IPlkghjaD+P0C774P33raWSs3EruN0ZZnC1enEfrfneDjw3rvv0nU9w+5A1++Ifc/ueGUWAsA0PVJSIqeJWlObDw02HGwav89vdlG1oEP9XJW+BhIT5hQikbfkCKqMTMwsxBpI9WKmiQ3ttdKQAAtgRTc2PW1DfXoDBlPt446qmfN0T0mZ7BamNHJJZ056A8E2H5fX1db+3qkFpcYSFxfBOTQUqofiKkVmnHQUteNRVx7Qkrl9yCzjQjqPlPFMVtOFcwoheaRY1UDsUB8IusfV3qDMq8JB21xjCOx2e8Yx0xFQKt/39gf8wNe/giuKnytehRfxgHcD6h21cxA84bTD73u891Rn1ik5Z5Y5mRBprS0Y0Tbt1r7FxD6dCA/nM9/41id8Mtzz5uHC0PWm5xcGYjewP/06Mfa89dYLbl5ckeYLj3efGLl0/Iw5PYAmqJ5aA3PFFB+0mtWCKikvkBO5VOacEHGoBFQcuVprpqpjWQZKddzfz9w/zIzTzPmilNw9LbDGS1sX3XaNt9ObVMkYitQAOaAaKM5x2HlurgZcUS5LItVCmj1zMv5eCQF1jiJuS/RXoVRLNmydhtWiQ82qxN5Oq/jFVLqrQI6YnBBNQss5dKqGXHSVflDmTulDpRZBE6QKl3vHm089fe95cdPTDwHfSMRasVljVR7uRx5vLyjC9S4ih0gXAn2o9LuBly9fMOwGXl694nR4iWPHpx9diF3l6K4YZEcQj98ZWhYdDewTPEKkD5Ef+AM/SE1f4+72DZ988m28OG5f31IylqD43hZWSkitBA++s+p5kQcWmcn+QmVGmrSXaOtmsBLsG8esGtDBxZ5+uMH7jmH3ghCPzWrEgCOpzNSSGJd7HpbPrAMjCZzw8DhyfhyZxsRnrx+4nBeoxgHs+o6b6xPDMDCnidvbz7i/v2eeCzkLwR/odgbUCL4HEaY0kUpmrwMv9dqC0/WRsBsIMdANA6rKeHokpYWihawmfP14mUi50IeOXewYYs8QerxEWw/6bP3+LrcvdJB6+fKGXDPzMtMPA69evaTve955+RYvrq/Z7Xa8fPGCGDpCN5g0TdfT7Y4gkJZH0jJTczbDwlqwTLhrM6A1t4MtBQLjFVWzw2jJZyuKtP3e2mxRI0cO1gfmFvQRJ4FcZ5xkqEPrPT/BUW0m/fnXLG1zXQeuDnPLrbrDi6c2W+g5z8x5IlNQ33xu88q7av1kxJwFBcQ7Y7d7UO8R37hbZPxKoW0ST1XNWPBxzCyX3Cw1JmrJ1JJbRjo0NXcHQUA9vg74WlDfFJuRJlejjcc20MWJYPKxvH/9kh/80vdQ50y6H9FciRpw1TyTNAoSPX7XEQ6DEVC1QdFLJSe7SNZMTVvBWmnFajtf4uAyzeTXt3jv+eTNPd45rg57TvsdIXT0u4+IIXJ7f+DF9Y6Nz6WVab4jlctmC1HVkyokrVvyoqLklNBqfJ4pJcQ5QmeySEu2+3IWHs6RJQm3bxbevFmoRZvGZHi2BuFzcwvah1sf0Sq1QmXBEHJ+zdd95HgccBXKLdRJSOJIxZu+SDCF7qdeweqnKhvR19EsIKAFqJV80WjvzdW5OqUENa+rNhctCstiEG2VSogmU2ZEY9BmJTNfhMd7T917Xr2I9F3AZXA7g1Gnudmbl0emxzMhBq4PkdgHDtGzC45uN3B1dUU/DJz2V+yHE9BxdzvjvBIPV+yGaJJHXW9t9pSpORsNoevw0vPeqyN9gN/4xn/l/u41inB+fCRnZeh27PojAkbOhqZi6zBs8MjChSoLRkcXaMKxDTu+EXVBthabSCT214TQE7sjIey2M6+NzpDyxJwvjPM9SCV2AeeEyzjzySd3zFPm4eHCPBWi7+mCeeUdDjt2ux3zmwvnx3vGy9k4VMXUKDpngIahO1glu1yY08w1R97lLaLr6K5O+MOAix7fBRRl3h3IJRkiWhOpZO4ezsxLoneBQSIxRDoXMYmEjRX5Xd2+0EHqq1/+Crlmpnmk63pevHhJ13Vcn6447Q8mGinu6aLSgharmgBqWajFjAoN3VSsASINqCC2QZgqOk/9IhXskv2OVLb9qNuPK1GWVi7HNvg0HTjHOoRk40eocwZsWFuKSlMapkHVHVUDXTBU0mn/kpurtxvYoLLkkdSk9W0Y7hu38wlGvLUWm+L5Bv1QEKzNoGIK00UxS5Bs1vbH3YlF4YKQ08IyXsiPD0Qfefniffq+p4q3AXt9ajMVngWNdjAPu4G3Xt3QOc/8PRfSnHj75TV9DKb51gs1PFUP0glub2oi6k3KyDCvSi2ZLgQOux3H/Z7T4cCcE2NaSKWwWibI+mnbfCeXSqlQ6oJrSvhLSXgf6OfFvMrkzJT6plpgVWguF4rOrPI1WgupJnKDSypPh7pui8PkpnBmo57mwvlcSRkez8qShGm2Fs06wLa1ZD2xTTyUZxe4Pr0ez/7VjO3NIqbCnArnqRBEiIdACA73YDqAVYG+QoC+d/Te2sy+YmRfLKmoouR2DEUzUk3g2GF8OqucbFXNWhsc2RyCa7U5mRYlL8XUxIsSva0zD4gWVB3LZOrhOZvqBc4ROrFZmhqK9+pq4N13rSOyP+0IwbPvIrsY6Q4Hrt9+h26/p7u6Qfu9cSfb8crF/JGcVnzjAnrfMXhvimbZ2pprth98YL87UFUJzhsJWmlryuFjtDZk79DO4bTgSo9rklq1ZqO5tHEejWC/Bm9B8H5AvCd2B0Lc4X2Hc9aarI17VGuzdM8TtSRWdZqcKoiwzEYfSEkRAsE7dm0etN/tiSEQnGOIHcdhD7XwpbfeM7Sq80S3dnYCChzmkbLM7Bk46BHvA9J3SN9ks8R4kt5ZQqqso07PvjdRgUigk4BvPli1dQBWZZnv5vaFDlI//Ef/z9byGs/EEDgczABx7X8CTwVQtZ5zTSYlYr9aZW8y1ARacaKbarP1ZleulbXNjNQmyJoVrZu8ghRDHlWpzfSuUqSgojgJ9BwoVFLNlk2yWiYYcRKE6q0VtDq5gsnh28sKYPblh/4tUxBwjtA7SkmkfOYy3zHlC7NmnAqu9og6fE2EVTvQmaJB0wtq7csWWV2H8zuQjlysdzwvC6oj3nnefvE2czfw7W/+MtM08vDZJ7z5zd9g2B1468V7nK5OLDmz2A6D5A3n1VxRxcilHl6+uObq+pr03sLXX71CU+Gd0zXHfc8ShcJkhN+GlKNzhIO1J6uvVE1QCjqZqOphN9D3noc88t70Nudp4qPXr0l5tIx3bctietNaVrXw0gIOvHl8BG8osi5EvHN8dBs5HjyHvefdtyJddDhvSLRaIGUx5fs8U3Pz9nmGLLS1VhsCy9MFwcfAfJv49LPMkioPZ4Npz3NlSi05wT8lMGrQHbeOL/RpeX+u79dua5Aq2fyuzmfHp11iiJ73X3YcB8/d60L1BhKSvkKo7ILnEASckougyVrOhcbLWq+DktC6ECUQQsSLyVJlEbIqYzbaZ0pG8FS1Y0UGHgucKyyeXYyGHVAFMlqE852jZpgnSHsjsw/7aKaBYaGWwvsf3PDu26bEstpC7LqBoR/orm+4+b7/ibg/0ccT6pukUS5IzczLyGNVfBzoRXA+shv2xNiTl5mlPLLyCUuBrht48eIltdTWqmrSY2pK7HG/M8PD6KjRkavDT0d8dSbZlRZTm6+uqc433y911gJE2O1O9N2BrjvSDy/wLmwzzlIX5ulswK75npRHcp3azEhMYLgo58fM432mFsW5nr4Trk7XvLy+oe869l1P5wO629M7x83hyKvDFaVWOh0I9Cw58TCbsGwYJ/xsCitOzdBxuRJyL630TYgq0TmCOJSASodWpd93m4ODNKHF6oJB0Cq4unL0fvfbFzpIDf1gqZ6oZTu9OX86MTazAfTWTFOtkqKhmwRozpZ2/29VP1/be0+337oZPLVdnv7m+aPWcbBvKB6hNFkSQ2UZ56T9zfpybairn0+ZWedTgiEYnYMQzBsmO0gF41mhbHpfLiDqWtYjT8/TAqvCykHGUEW+8T4aSEIbXLTYkJYWfG0Ib296XWriHM47g3o3sunKrf7cYWs9+eCN2xIU3GGH5krfhS2giG9zLGd3SBCap19TAWmmjK0yDMGGsl3X0YWOFMqGdltf9nkForVp2beM/0ktxCSFtFqwGqfSEKOecS4UdcRo779UyI3gWlU/t3rAqi5dP1ADcllSYsTWJdlXypYBl7JmmGvFJFuVvq6HTQPy+Yttr63rK2/rUrGZ3ZIr3omph3hrFPiItSwj4E2Vxa88O2WT69Fq53NTX2mmdU4qudYmTmzaikkrCbNwyNW+aMoea7ot7VIzQdutvoWqTQGmSSwVTNrLW3fBB6suolcktkqzXeMhmk19aPSJ0Bsx2wJCMcV/tWuk1IJUS25EajtX8nTFq7WPRTGpn1w2ystKOZR2XqURwVdCuJNgKFcyudj8ha2BsV50TSMTZ4Rd15lXk++tgnImMrvZupds12CzEFo1P42CYJJpWtdKSIxGgqePHX3X0cVgQDMRgvNUb2rp9E21XQe89jiXmKtSXSYmCMW4e7WtP3EKztC7a6m/HrVt5uxonmFPdvJKU6lv6/Lpuv3db1/oIDVPM8Ou4zDsjbUeTNq/NC0zU3I2eHqtmZq37bStE2t3Vc2UOgPaLiSBokhd+VGrurnagta1sG3fV7n8dYU3PTutjpoFVx0H7eg1MMpCDkrCjMB0zgRxZlwooINAbKAMVw2RgD45FopxkzILogaxDiGCq0QVvEK/H9gfrs12XA/m0VMfqPWRSqao2V7nWSilBYHgcMHhjzcM/i2UQK09imMaM5Pcc3l4w+3rb5HnkTpk+reuuBoi8XhNFzrC6WTB0lWSM3ip7yx7rKzABWcaaN4EVm2jU1xnPBW0sCwTWbPZ3MOmwm7H18jONpB3TxYH3rM77JHOc50uHD/bobXiV/kf2kWkNONK89Ntvb/PpyPtFKeqZKnIpZKKGE8sz8ToOO4ju8HWm/cNiylqpGBxTTMRS5qac6tV5o5xqdQpcf+YeThXclLm2WYypbAlUQpP6Lc1UPFsndli43nytIaqNS9wbVNNVbm7TEyz0LuZaRTqHJtws+CDyfwEb/NE9UrKmSzaNsU2f83t5Wuxc4UyzRdLv0oLLCiTmEV9bdYhwQU61zU06ZrsWKvwc++4CGWqJMk8PiQkOA77iD91OBxDPBpxF0dQ81V7HB/Mk0u9NQmKspSC5gw+I84q7rpMOIXqI3iPqrdZtFami5Dn2WasOaM1Mz5a9fLht36DX/uVXyKEwFe/8nWurm5w0aG92LEKHg0BCSbF1uO4Ce+Q6sLrh8w43q29BLsmSofTiLhIDHu8j+wPb7Pf3+BdJPodCszTmZxmUhqZ5gdKzSx5NkpLVUr11pXIQs3QB8fL6wHnHPu+J3rPvu85DIN1BpxvtbkpqiQySc0lN6MUTVQKvQugjhCUUIWEMlGsQ6RG2Nd2fGWt+GVd99YqXJPDWqE2tGBo67eWtCETv5vbFzpIpZTZ7XpitLZMbIi9km2YLzjCqoxZiwEjth7+mtIpVVMzllNQ3za+VTLIgpSsqd+zL1X9jvtoiYK0QNXsDCr0NXKqA+KccWnE5iiF2uCmVolINNtyxFBQoKb2ZO+oZbOmoUWzuHfelBJ8sOwsdpGu3xOkZ5AjTj0pJVKaLUNsm3BJZiyoYoHRF4fonuiuDXFWA6iSqvExLuMd9+dvUdNCiJVwHHBxoBtemAjlMBhvzDV0WUsSpAVtI5SJqTo4Z4lAm9i41RckV1KpVCmscclpg4us1dOKemSFEZjkUL/fEXaR3d2eIXbMfmn6YCvwpO3udTv7T4g/Wc9de5k2R0OUeTEn4CXb9xCk6aJhqt29tPm3mhSUCNKUrn00r6OVbF6rMM4mHzTNlXk2rbycpVVR6/pZ38+z7Eef50LfmYU+tRdFnz6viFUiRZVxTmQPj2cgQ2TPEMzjKjiPc241dEVdm9nlQpFEcakt7zYZW7PgWhiLzV21jTgzyuLaLG5tlSv0TbjYugSrFFN7xm1TM2h99sI8FcKYiT1UZ9SLKANBbNYRiSx55rwsGIHYEJO+zRqlFoI05ZiaTfhZFa3PQEHV1DpSnSmSm56hwcwvlwvzfOHTzz7jN7/1LYa+5933voTzDoKzZNKvgr2mdem8VXp7uaJo4uHcG1wdm08jglRp3Y1A8Kbb2HdHhuGalZps7ePEMo+kMpHSZDJwNVO0tKq9jReqR4sQveewHwjecX3Y0cVA5xydtwpqJTEEMT6drRVvxx3FzhxEMYmq4Arew+pWXsUqN0oDwOR27TrXzqJxqcCIw9oQoYD9XTXyucrnKRS/2+0LHaTePD4QhsihO1g52pTMJRiG30VPHEyepuRk/IZaqaWRILENP9cE2W+ltc1n1opJ2xyDVmFZJj4uiVwLTgq+zZ2q2ElLqZKzEqpHy56onkGhB1QzxxoYxDGrkDQTcHSq4Cra2yB7fW9rj2drJG2bg7ZNzONlACcEt6OoI+fM4/SGzh/o+gPORePiN5XqnIpVlounJoePgc4dCKHj2L/itHsLc8Q1yaK7x9ek2YRl+25AfcC5ilRYWAVETQIoV8u8dUMwtUAkrccj0tqFYvfXplW4upBa5NgqJNuMPai3DcYrONkgH66ay6o6yEuyirdU+q6n780uw/b8Z4AD51oGuEqrKtvVtE0JYS1nTAJGKTiSt2H+ZQIwhJqK+ff40PgoUeiG1o71VlWZSoANy8WbfXzFCI1GzF2j5PP/t5Ckz97P8zUAsCJK1/99roViPRpzdTfTR0vjLHEoWRiTtW6DwxIxp3aog1IPgoue0uzK7Rn903tQ3YK1ajNFLNB5z95bRu+COTmvth5alJpNMgfVpkwitlnitrkhKPOckDOELtHvM310HPY9IfQEiWZ/Pjlq8ZRZqHliyckIyDefki8j/vCCsBNDuebcgAYLC54QBKEzV2xnfk2qBS3mT/fZ6084n+9ZcuLVW2/RDzv2xxOhH/Cxa6Kvvq2ZpwK31MJUHlnqxJwnayWLgSxsxUW8dHg3GFAiGAcRTI5Nm0pLyhMpT+QyW5XTWsq2P7itVRq8mW86UbxTonfsdj1d8HiUoE/JHsBSMtOyMOeF++lsCvktYQhVGIqzcXVuM98mj6So+e65lcsVn9YoELuefrcHmkJIhZyajqaa6HBVbS3gsvEGf7fbFzpIffvTTwn7PfF4ZRl2SghwurpifzwQYmA47BDn0JKbJUcizZcW0Y2YuqQZmS7UmlnymVKXVkC1k9M2gpqgJseSK6/PE3Ne6ENlCG2e4U2UdpwuTPNIIDLJFZ1EOlfopODxvCrmjXVRx6J+M1OrDvIAGj3q1GzLW5C04kHbDOt5gh2JzuM0UtyI0445Lbx++Da77oZj/zbBG/cll0pJheWcW7VpiW5kz/H0Pn2/5+Xhq7x99QFN1IUlzzzc3zOdZxThsD/ZsS6CViEzk8cLVStLWRCdDCPZvAhUmxGjax663lTVBTGR02IoL1fFUHKrIkJxkFpF4aINUGoxlWsxHGZW4+14b269yzjDZDCy435PqQUfA6ur6NoqE7E2od+4Gs/V4VkfuVUs1vNvEHjchgIcl8LQWSc2eNj1lS5W+iGwO3i8d832RMjZsSyWZUro8OqpTEyzESkdYQuZ622jx31n0bRVWGwQe1ug9imf9vn2CZxtbFkqThyKac2l2THfZ0SF4E2Ky+qOiusce+kIO9/mgib2uwba1ZSyKKRis54+G0iwj5F3+yu60NEdrwi7PZfLyOs3r8kpMadMnTNSC4RilUXuodlTOKxFeznPzDmB7/HDzGEXeOvmwLA/4okECWTO1CWSLzPL/Zn08Jr+9IgLhvKL71aGl+YoLckabjMjZSnEmK2icTa/EXE2+0kL0zTyjW/+Gq8/+4Tr6xd8+WtfZzfsuHr5kv5wtDHCGoDlKcFQlFwX7i+fMeUzl/mRVLOhANvgz0mPlx1dOLAbXhJih/eddfVLJk0TpSSm6ZFlfiRrIql5MtlG39Ir8dbODs4Sr/Zf9I7r00AMHl0SdUmtCWPrfUoLb6Yz4zLx6f0tqSS89SrY4xm0xxsB1ebmgsk8CSaY4AUvjtAZTSc1odn94cjp6gYUlstie41m3LxQa2WpIG3mmEohNWPO3+32hQ5Sj+OFh/OZ4cHQOKIZESEOAyH3SAiEzgifFqQKxTuE0rg6xs2pKD4lEDHRywYT16cSqpW50iS3lZoqNVc2vfRm/FcpLCkxLTNBKk4mihRGNzG6zgJW6HDIxg2yLLghBBtU9UnKv20Iz9uM6wHY2o1r26u1CrRp5mk29Yjg22yiqUy3amX9EsSUil1sm6U3pQXNDZlvpf0m0qY2W1m3w3XgvGZbTwK/7W2u713Wn55Vqg25aF+taqhNnWN1phWbBRqwYSsu7enk6WsN4k6EPnZGQfD22et6DvWpxfRbG2br96c51vMXMNUQU2bIRZGsJAe5XWtrlgu6qXes3WZnoEwQR4gdEAmhM/hyrgZR3tp5T6HqiYf9dN9vA+Z71vrc/vLpIauqyec+UQMW5bbu1JQyVr02HObem9WGCSsASW0IvvL5thmfAmobZcDTu0jvOrowEMKO5HKrop5Dj59afavVxPpBVkFkuwTcJnXmY8THjkDAS8DHjtgPpCWzqJDmjOsSyzQhwZOXmZLTRsMQzOyvSME3IVjXri+De68AhbwN9n3w9MNA1/dbO0+en1yxVV0xY03TpWvPY5hz1j6qrF/SfhZp16xVUSvcvLSvXBNF05NXXUtQV84kYkr3OOPreTFAjxNDgtZnWU+pZks0p8S4TFs1lXOm96aZaUjizX67JfNsVZv3wWbXYog+aJ2GptPnnLUPnaWkuPpMSQu29rMlcI7v5vaFDlK/+Cu/zLc++oh+2NF3keurE13X8eLlC05XV7z//nt88PXv5Xg4UNKM5mSZSlqzEpstTOOIuI6SE/4sZJ0oeW6uoJVySZCKoaCqw5VKOGdyzuROWXrFBHAWlMzt4yN35zsET+RCwHORC2+45Xo48bUXX6IPHc5FoguoMyi0iNJVQRah+IqL9qypFoqaurFtoU+7VKVSxUh0SgItaE3UOiFSGA5HDrsbqAs1LzgcyYUmFGrPFEToQ6TzEV0q80NiSROX6Z6UZvLthXBJZF1IulC1MpeOXD3MhcEvtiTFCJxrhSYNQbeuUNfmNrnYDEGTwlIhm44aBWoSamptpNy21m5CO7XBUQu03pvrqnMWEJQm9aKF3TDwwe4d9rsdL44nHi9nlpyZUtriummOWfuT9WmFVl2vUe+p8WZJg1gFqbDMhsgrpcGQI4QoiDd796qWfohvoAQUv6+gHfv0HlqumOYD50tgnhbuX9+xzOlzQck2ofVf8tTSQ7eArls3sJXbbZfX9W/a87m2dn2bU9lDM6UUKIIuwR4vam3Z6qh3WDvtlFGnrTo2WPSaZNSiTLNxio6hYxcHjt2BF/GaIfaE/gY/HJkfE+e7kWmacMnOGRoIrm9yRw22KQYYckHoB6vkDscDp+sbjvsDpxdXHPenDYHqDwfeDR3TZeIbl5GHX/kGUxH07pYuL8T9Cd8PBOfpfWy+VK5x9hrfyZmWpjTqR60ZJfPi1Qt2h4HT6ZrTzQ0xmJ+b7drmP4aTbfZWsyW/c5lYkvHf0I7gjq3q6Ztv2a5JNPnml2WzspoXlrQwXh4peeFxesOcHm0WpdZSd85UIWgzRKG1VDFpqNjUVGjySCY+bL569/cPLMvCb372Cd9+/Rm5FOZsnNEv37zk3cMJWSp6v5CK+Yy1qGIE9OA4Xu3pd922Pq3DbOvNAT4LtRSYCrJkZEy4cwJX8UNFgnIcOvYuME7xu9rnv9BB6rPXr7m9uwdx7Pc73nnnHYZhYKmVMSWOV9d0rY9clkhNM6UWQu4MHltWpJewzIniPGWaTJ+FaptwVhiBed06Kq5U3Ky4XEnA4ixcqBoK6jIuPF7MhdWR8HhLRkmIOvJ1IWIXR3DGRdKGEAuVRiaE0rxxcm3sfm0Ct5t/lYIUTJzWnGOtJLH7RCqx6+j6HXPXE0JHzckqC5GW7dAqKQOZaFHynEnzwvh4sYA+LchikccGt8qclVyVUJV+beVJ4x9By8JoWfNa9gCYVYPa23z6qg4qzWa9oYKacWGVjITSdBU75FlwWm/WAbNqK8bArrdzvO8H+hgtsKQ2O/zO9/e8Gnu2ycOzqmYLbnaIS3NddA6WZKlDts6lCQtjnDBp79MHM/gTBJdPSH3J8bRwdf3IGEbO92eY0/ZZ1jxEnrWS1hD0NHZ6Nq+SZ/e175tmf/ufKUes0AerZrVmq1jLUzVlyiSVOptflPaVzdHDrciKdfhtgb5WIASi6+ncwM4PDH4g+B0+7PAElikxTwtRvQGaqs1nVvM7baWxSFuPwRNjMNeCYaDf7eh3A8N+wDyCI9J1HOnojgu+2zHPhRITcZwoHsZ5ZJ5HaoiEVtKWmllnlElWQ8XMpjLTqA27/Y5u6Nnvjya6vFYKa9rQKiltVXppcPtUzNPMcAHmaisGCMfadJGVS2GaecXmerUYT2ueKGVhSSNzuliV1oxNYzCZo3VtijQleDFrkq6NDGmvrxgwKle4zDPTNHH3+Mjru7uW4hbTPRXh2PWUkljKRM2rSab9vQveLD6Ggd1+eELSI6CmK1hzRpfFWEG5WmK/VFwq4BXnjDDugseHiPvuCqkvdpBa5gXnrVeuWnn9+jVd19nQMc3s+p5f/qVf5PrqiuOuZ9dFNv4RTzMK1ULJMzkt5LKYsRoViaaZ5Tu/Zd7kilc4+I4eITshqaG7wnANosTaExkA827xOG7qjlMd2A1HXDAI7Jqs61YhgV+/NxZ8FTUVYlYxyImVYGwuxGo2GwqrEoaTjuj3BDc0oEhi1ctzzhG6HnGwKFZNVGWeJ+vovPmYcbqwpInxcme98fGOvJjScq3G8fJ1NvROnQ0uvrYrAZ2FOln7qtTmkhoqLqq1kVrXzSopaxdQXVv4zebA0R6vSCdPVVSbIwoBW77SuNS6fddSKSlRsvGkog8kt85jaJJNAuSt9SToU4HyfDD0uZ7aUwt2i7sVcrLztyTBB2GcKvdnRwzWIY4VJDtzjlWHlgeoMOd7qpuobm5N49pKQgsipkrAVvk8o9hs7btnkJrPhdYneaPnQdZQeIVKFqE0pKiKPB1PKciKM1/PB7RhPZTchEwr5OpJRcmTaVkipnvnQkfodsRuMLFnB4fdjg/e/RLzPDGez6RltpkjpslXimuitG3uWpSaMzWbaoY2NNyuP3HYXZNSIS2V6ALXL4+UAu987Xt5/OyO4jI5Ts3PsZrvlbotcVgNdiqWdFURvKttPmUB0ofA8cqU98VHXIhWgTlHFrVGfZup1NbyK1Ltq2RSWljK3JyRafSH1tZsJ8w4ecm6IbUgCPNy4ZLekMvMVB5IerZjqwbxVnpLOETM4VacofWaMJk2btdKl1wrnZoL0zgyjiOd87y6utqqryCO67AnFm/gkqxoVsIuEvqIDhG9GpDg8UM0ZKPSLMjatVChTonl4YzmSh2TEfk9uKNHPHR7j0ZMuDr4/zEEZud5BKx0nybHOJnnyzRdeHx4YJlnhr7j6nTia1/5Mu+89YoQO/rewBREoKGschpJaTHZkTJbI7V35rG0ayoHkw0hoyo3YUB9TxVHqYIPkf3hGhc9e3fN3l+BF3xvXJp9CvQlcAwDruvBBVbCq7V07ITFdSeSAKFDnbKIp0jhMj6S0rnZNCeqWhbk46oz6FA8we0YwhXR7aFUSjZdQkuEHd1uRymBnBOaDJF3vpzx88zj5cGQZyWRltHah2WBmilkjKapOElEoNSZVA2+X4rN0/QC9UE2byMBwqCEwYKUtBZbnZW6aDO9Wzc6Rbxa5tVrU66186TPe/sSgd6qxxWt2ao2s0YplJTwODofWVwxpB8YUXKtUNrfrIAUkM/18YGtWrG5ZwsD1bJMmuNpqTBNBhaxwrASo6MIDANtA+9QFVK5peojl/RIcWeqW8wAs5aGcLT35lYydLNvXZHpKG3+twapLafdvjaKpcpGYlaL4zTCBVlq22AFpAONCAuWCq8Bo83aMHh4SrbpzkVYijfH17G1QjXitMP3PV1/pBsGXBcQBzenE9/3te9jXha+9e1vcHv3Gk3ZnGqzUmeo2LyoakGdUHLG5UbuVWt1Hfc33JxecX544HF6wPcdp3ffw4We+WGCcOTx8TO++c1fIOcL2oLUappYVXAUtO0bpr8sqBosO0jEhUDXdbz3/gecTtecl4X7y7jNHG35FlyyxK+2PVudJVgpz8zLyJSmbdzqGtHVZrm09VqaNU+mVEONjumO++kjcp1I9ZGiE6IBR9fQhzvApNtCa1+u/CfNBVKbizb2yiqpVVLhcn7kfL7Q95H3X74iiufoe4I4duros0OzM9PQAvGqo98fcIcOebVHgmuSZGIHAWUF7VKVepmZPrlDi4kXCILbgb+KFqR2AmENris/7ne/faGDlLVqGtqtVmqxjTgtM/M8Ml7O3N/fobVwf3PFbujN+hnzq3E4nJrjbc7rwNQGnzyzWxDXMnkvRsd3ugpdsG4LQR2h9f17iez8AH41GhM69XTiTa5pHRK376vPk9DSZmjEOI86TCFAHDF0dLHbLAM2pF8TbLW/oSluNOUNZ1+2H+t2oVWlseVNh2vNmc2GoLkLZyM6ilorcVPkeN5upG6b5OpTpK2F9wzX8YTaUzYLnU2K6Vk1gLONsY2enlQadB2ktHbTE3h8+9ruAFZtsNVczYlpllWFtG00TxXK87j0nTGKrfv+Hb9vh6FW29dLYVNJSNkC7pyqHWcKIiYPlMtEqZ5SE96LDeb7jpqFMlvLSJ69kD77P/BsDqXPHqCt9fS8XdjWGU2Yqr1f2YAI4HxlozkYSWtbnnYcBakOV4z3oqVxxLKYbFYGLZbpe3WEZumwBdDWHxWB4D3Z+6a2YXQQU3thkyFzjuayK3SdJ3ahub+e8bFnnCezpGmgBLcO91F819EfDsz5jGLE6Frtc61fdvBWYSzroqwpojbQka7XSVs7qiaVZjPWuvaWt8q2FLsGihpxOTfH2loLVQxAINhzSkM+rBxLC5yOXCxJSXkilQu5zhSdqZpspbdEZeXbWauvreH1pK/P+/zytBCJCHQxkvuO0EVCNF3TQTqDciSrnigY18kb/9Jcum2/NMtnaXsOxpOq4NoFVdNqqlnRVZnDi3WkPKYgs+5Pjff23dy+0EFKSnmG2xe8Kq4WpssjJU2UNOG9st/vuVwe+fDjV1wdr3nvnffNT2o3EGPk/PDI+fGxkefMklma/A+qSBBr1QRBew9F0SmZYmY1ro5TcOcZJ4kjAd+9+Fxq20VPiJ5OmjWCgvMB5x1Vsu1wKD54XHT40JkCshNiqFRXGbodx92BlBY+ff0J43QxFnrK1m7cRZwXumioti5Ght2e3e7A5eENKSdSylzmRCkFFzz9qSO4gI92IaV5IuelVWszhnqyJolKbXYkijZJKZWCegzxOBdkVmR2uGTp5RaYUEu+fAs4jZu7UaE22SaApoLRCNRa2qTIB1w4GEdjRUWCWdgDG4laGiG0FM7jyMPjmdPuxDsv32IphQ9v33BJ5qKq20ZufUjfslDdtjFY2S2yIp7AeD+rv9jsUA/LZB/FzBaNCDmlgguCl4CTGRBKtoDh3MDhcGDXw+BP5EV5/ck9rz++t82mrqHxKRH4LSF0hXvx7Ne6Qi1gdV9WNb8fXx3e9/RdhxsK7BN1gSUls6rxlehLqxLNaDNOPf15R1JhXfZzhkuby0kSAsJOB166PXsNpGUCV4hdjyc0wWPzIHs4n/nkzR0BiFJxalqGwTuij/RxIPaBF+9f0R87vnn/yC/8wv+DlzcvOZ5OfOn8PtE1j6Is8HCL+AheOL39krlOzIvnclbGqTAvZsTYhQXFNwmw2tC9wTZ9FwBHLlDVkzN8/MknvLm/JwwD8bBvgAT3lFxVQ+SN85lcMgsziy6kmrjMF3LNDWzi2nVjVijeewIBVdeADZnH6RPGdM+U7rgfv0WpCRETRo7hSIgHvAvE2NGHAe+iWai0UYchLusGVKqNsb/64w2958sfvE8pJl5MMW5iXICiLOeR5XFGa2UYbN/pjjviqYfefOBwTe+yKnVM5IcFckWmhORCmRfbE7ygg1CDQw8ejhawVjKxcx3ODzj3HWv5d7h9oYMUdR3yrvYBlhPllBpAAO5u3zBNI30/UNTaFcf9iaE3mwftlGVeSMvS9LEa0bDBnkVaJQVY78/ZVdpcJSXzNIxeTJmiCw4X+taesQ0kOG/D4FaeWaLrGimurv7cTZPP45wnutiqHaV6CAT6LjAvM52/Y2HeCH4iQice5+WZGaQzo7FgsziTUjFyXamVLpiiuDyzC9FaqLm5CTfn1212vxJHda2gVp1AOzxrL9vlJoqrbBpfmrFgplADoBbYxT31sFbQgkGS7RysLSd7ARu0i6yRTbeCQb+jHFqrxpyNEhAOjuv9kWlJfCp32/vbemEomyLFOghq70e2Ffb52wqiqO2zlKxIAvFKyjaPS+19eVfNwRalZIM374bArg/gPeEqUIswnhPOnxupfFsp8Oyf31lZfb4KlGf3Pf1GsfdZ1TZk7yM1CD7UVlbnTTxWVmS1WuvRZU9I0R6WbCMs2ZGLQ6rii23AUb3ZMuBbkmOUDpPFMmCR1sq8JC7jTOcFCdJaVw7voYuw6wPdYNYiw3Eg3d7x7c8+Ys6Jz25fs9/tOA4HjrsjWjMyTzifwUG32xG6nlIdKUurbivFr9WUVU92bNdt0+ZFtm4aN8hlLpcLblnYC8TjDueM6K1bK82qhlwSKS3MOjLp1DyVElnrlqSqCE5Kq4K3OrOhDM29YFzumPM9c3qgasKLa7On3Conh3emKO5kFbhe12I7j2tlubav1fYw7x2n4wGAsmTqki3AFDsuqUBZCoi0OZzDdwGJHom+iWkaWEYaJaVOGXJBLjPk1t1Zr8coEJ197+zakWJGnGZcGkHSb7mmfrvbFztIubVNBmsNWqs0YzbLUsZxJOfMmzefkbPxJ6Jz9F3P8XCg7zuotZH5Vj5Jbou5bZIrq1J16zhpZyWsD4IvphLRCiuK0yYz8myzEGsxFPHkrQ6w/+uqvI5u3AvLyDMGFLCLybsIzvyu3n7nS1ynmUs687A8oBTUT4irlLJwGd8Ayqevv8FwuWXJZ/p9Tx0L031imiY+e/OGu/sHbk7XfN8H38PQGXIuxGDKGiXbum+VyuoorLICNwqFQm5TWmkzpOBsekS11p4qhlx2SjPrtcc7s1F57kz6udPbgkh1wcQpXTR9v3aTduzqGqDat3Geubs8cp5GTsORL798ly+/9R5fe+8rTGnBhcDt5cxnD7d8dv9mA0U+AeXkc9/XNWbz65Ulv30K1nZRSW0aJIIPttm7akmGtY/z05wIU5b26hEXiMMO1DP0j4TgTcevrnMyG/p//t3ZNic8CRGv1ZO01s/T+1zbyq3NHbw5JEdgsIF/CpW6WDW7DvqFauhEFXI1hNgyK0vR1gaD3gXe2h/Zh8Dbp2uujyf8IeAPHa5z1CBkqcw58/A4cxln7i+J+ylzc9xzvLlhiJG3Djfsux0lj5T5TL/refe9tzndXPEgnrss7HZ7lMzD+IBzQoyBgBJKQcTT7/f0hw718AN/+A8xnh847aAbIPpVub5d37W1NV3gqe5srSw1exHSgquFeQr4S2ftL29eYCUnSjI6y+V8y7xMLDIzy7I5HVTW54/bGmqddRMRr4mcTU3iYfqI++lDchmZlwcUJfodwUXQgHcR7yJuTZaqVWAAuVrFZX38dc08T25acF5XTi6QKzUVypjQVKjJJKFkHQEEx8bVLBVNTWdvKpAqMhWktfBLC8IlCOq9tfh2Hukc0nlEwhZkRUGTo86JcvkfgMy7qmSvSb4pGguozWNqqZwfL9ZSU+Xx8YHHh3tKmui6jtPxyNB3nHYnXl29wrmW8dF4Oi1IFXKb+bQBqLO2n6rQFcEVIzemTFNabhwMDIRu/KbtmRtay4KRIUZrY4yzwVqrKFkTVLcJrDrn8NHT9cLVzUvEC7fn13z68Am5zMzLZ5QyU/PM+byQ8kT4ZEffH9n3V+wOR5aamNLM/eWBX/iVX+IXf/XX+Nr7X+LmeOLF6YpDjHRdhAUWdbbAW2urNvQSjbSs5ObG2RbwAHSt4MT629WrBQCvNOUbtgtovWr16a6nptbqMQTJR3CdBSl52qJ5nkQ8a3ldppEPP/uMXDIv9lfc9Ce+94Ov8ANf/X2Macb3A6/PD/zyt36dzy53zRLFTsNTCFjbZSvRtM1ttmDx9DaQlqQk2nxGceZyb/6S3s6nuoSIEFom7NTjCXjpGIaDodeGO2IICKXxzWp7N88qOdXnH/dpPrHOM5GnVmSL3KZQb20b59ucoRPCzpFdYQqJ4ixIldKs2Glt3ppxVVkyLKNB7rMzZGA/RL58esFV3/Pe9QteHq+peyEfLYuuYonMmBP3DxOP54nb88LtmDle9Vy/fJfTfs/3vv9VXp6uub/9Fp99/CsMu4Evffl9Xr79NqXfU3zfOGyFu/OtCUp3kYjS5WzH7nRgd/WS/c2Jw7EzJ+VPf5Px7iOCU7xfBaItEKnbQpO1iTEahPnLNf6TNH2+zhFCZNgdCCFScmKeLszLxMPDZ0zzmewzyRtasARTXfGYkr6qbG1jm9sqWRfm8kCuE3eXb3E7/oZ1MkqyMx6tLSZqRPvgoj2DilEDNIOaMCzalDsa6se3jsQ2OGsxTBQDWGRLSubLZLOklNsY3makEpy9V7XWoM72WmaxUpFkNjza2AnFQXHW9pYgyMHhenMOWJ0YnDSE5JIo40yZ5t95c392+0IHqXYJ2UWJ8p06dzYAtfKm5ERKQkqRZRmBzLI44xL5wLRMOBFqE6H9fFIvT5uotJ/b/dqCVm0bpWUeVtWtfBR5Vpbb7tJeQ7wFrWc7jq6fqA3+W/RttG2bLTwpE2BtwdBj/L0OMNWASmn6XzNOPNn3lDCQ0sI4jVzGC+M0Ms0Tj+Mjn9x+QsoTr44nrnYmKSQOpMqG7KpON9FdXY+/CqtgK9hgVFcQHjSYKk8w6vYpt9Ln2Sd//i9r863zInl6Aixrk4YE3E6KsTIRIMRIPwyEUtrMS0ztuyEpg/d0IeBXFnA7nr9l3NPOl26T6ef3t8+73f35c1xba6OWVi+3TV1YA6qiWmwOhK074+CwqaZ/LhLpE3jjeSB/0k76/PvYqsGWxHlx1m72ZmURfcR1QlRIrjB3GW2Qf5xuZ3h97XX0VTHCtnNCcI4uBHZdz67riT5a1izt9e0yQFFcEaIEOh8ZYsfQ9+bK3O+I/d6UYWKH841WgLWrvfd0XWC/68kVAydkSHkh5YSIJ2eb9eVlJs8LNWUTVBWHb2CMlawt7Zhs6J31mLWTarLCpV2DYLbtxZQoGh/S2tDVEKQ1G22lLGSK+cc5QzraMzfCLU0Fom38qoa6HZc7ljIyL2dyWexaaiowpRjQIudKzsZT1CbE9yTY+gRsMv6EJTP1WX2oW7DRTePU9BNLm2M1cEjrSJj1iGuXqLU3taz0CKMHqD6hS6sXqjMi9grI2arS0oKcYrypWtE5ofOCzgvfze0LHaRqVZt3y4rasQXoS6G0BWHoH2GelVIM2PB4qHQpoox0y8A0PzLOZ4IPnIYjfeyaSo+14LYgo5VVQlzUVATUQw5tkYeKaMXPFbcUwNkgfr0IBFZFTkEMiLFePMLWry5azKStgGjTu6NQ8SBqGn8OKFaRXe+uyTURXCWVmTGdyemRUjKXyy2LH6lLpUyFN68/4ze+9Q3e3N3y+u5T5vTItz5d+L/+39+wHwb+4O/7/Xzt/S/Rh4FTdyKII89KKhb0rAWprUKUhqpsIcq3DxJAB90CFIUm2cKmLv6UBtjuV5v45Br4AXILUFU86ryVaA3255rGmyUUVn1KjIgTrmMknE5QjQEvaj35N8sjS054gSEEAgKpXXDt+DvsI1TVRvSmnbtn/15v8vRNnn6kFihTpTolqKIBXGv/2aZhHLdULlwmIfgeEx01Ze4QbTg/Y2rTm2TQ85du84HP/+LzVaCIcWC8E2II9LuOXRc57U6cDgdOoedlt2MZE9+Yv82df2QqI2O6WBVVS5PJGajZU6uSfSYDfd9z6npe7Q+8++KG637Hzh2pOkBVfG7ItSlTU6UvgXf3L5hj4vadM6HvePutt7l5+0vshgG/P1JjpEqg5oBmvx333a7n1asXjEviozf3TEsy1wPn6EIHyWzSl2nhcntBa0HTBa0JNBG6yoqtsUAVcC6ayoRJvmNk/ErVhaojKg4n14j0ZJ1wqaJEqg5U8STaDKqeOS/3jNMj2rG1+JyYs27wkd71BnqQiBdz7q1l5jx9ym98+v9myo+kek+uF0QCrpF+NVUcCU0TrjwSY6LjQOg7C1AlIShO87ZPSXPiXk1UvZiEUa1KnpJxCOdMmQuaKnWx+1YepXiH35k4t3oM2FF0FcVAF9sDc60UsVl59o7SZJmiVruIsl1DmjOaMpqBUU2oYJmRZaJO0++8uT+7faGD1FbJtoj/vBUvz9sdgGqxAWpx5DzhXCblbgNFiAgxRMsINfA0a7Dvsm4I39FmoSUvFotaNSVNd0EN/mmbWwuiahe/pdVm8W6zNZ5VhOuHW4NvQ+Q0jSxTZrDN1Ykj+g4nwux7FHBlap+5kvNirUiZSAzM88j5cubx8siSZkrNjHPi25/dM/QdX3r3FW/NV6DKaThs72nLohsE17pf0ng97aCscHHHSkJvKL5nbRV5Xn20lp2uMOH1QVZNro0uC1rPtQKfLYL1BxFrLXgT2Dx2Jl8TiuCq+UDNeSSVbHFU1nZGexvPo8zW2nuq6kyYYn3Qs97kbwkedn9tWXAtNp9T9+yhLSjWmsjFHIGLz+AyqtUqqZX69rya+Y7Xen4gvvNX622tKELzW+tioIsdXejZDzuuDycWv7DfDcz9QlkS88relbq1r7dqqp1f781Qb2iOr7uuJ2hgVauXakN4EjCDF2+yQniOux2ntGe/39MNB2LfbQR3FW+oxlXEVivee4a+o7QEbsmJJS8s2axnFjeZAG7tKCkgVLwmoCBarJLStei02YiTVVJ1rTbaWqRQWVrgyoh0LXglqhoR2NaDSRWZ8v9CqrP1vLwBkVxb/E68gR3EW4BqFbLWRMojj9NrxvQAsgBWAeLaXqCKaMFLZlkSqG/VT6uiNn1BU3yh2W5Y5dSAUM5+1lqNHF0qJZmJo+YWnGpl7R6JCG7lQ4k+zeaVpqepVu2pPsltetlAUa7aYqyqpnqfjAOnWdHR2oxumXFpRpf/ASop782rBzEn1RhMuPDFzZGr037jOiDWO48xsN933NzsiSGw2+3puh7vIzEa+k58wthWnu3wtEho+2fbPQRo0GzXeiFaBBqaaQMPV2ngAGzm0VSkwdw0paFvJNjm6xpvafNtUZt1mAdNk0VyLZi5ddJlZmRVm9MwNtER8RuqUCmkOiE+c3UdIPScl56lDgRf6YdKDJ5z/pRf/zRzGq6Y0iNdGDj2Lzju96S6MK2W67VxyvJiQwpoCuWCuohKbFDuxr1pR3RrT7WFTJN72kLCCplGLTgJbTNZLXktiFvbqfFZ1kSk8aFMp88ugF6M6Fg0AbZOhq7H481uPHRkrZRgkkkricwh+CZq+7kA8CwjX7/ZGLGBalqVaC6pLZlAccWceN26blSbCvxis8/5NY6OKT1SmE3xxMohnrKC9ga2Kuq3v62h1AkmLRQ8N1dXfOn9t9l1He8cTxz6nr4K5SGjc+V6d6R7GbksA+epI5fE5fJAzglCgBAYEK5DJAFXw55jv+NmGOiDwce9roAghQlUBD85WDz90HE8HZhzJn+UuZvODMuJUhOqgdh17PZ7xt0e3+9R53jz5o6khanlaw5l3/WI2oY/L4nqlaiPJBfwqeLDiBfovKlClDLzuehKQ9S260OaNo+WpYGBFGSHafMNiOs2rqGTYPBp13GZJ7795lssy8QlTyQq0ffEOOB8R9ed8L5jF/cM3Y4mAAVU7qbXnOc77qdPmdJIygvWFmkbRTX0YVnO1Dzy8qbj1ZVxPO0huclZPZdCU1xVVn8oy/CkBVODjpfFgpRVTm1mbpsOJQJBqdGRtSKlccfWS648S563hWb7npuSkaZLMYCFYKouTpAsuNwEdB2G9HMB9f0TIO13uX2hg1TwbEq6IQi7vSNGxzvvnnjn7RfkXBjHGVXlcNzRDx19HzkeBkLwDP1AFyPiLNsxBE6ydhuxxaG1DyesHkQgdsBRhIJvcjY12+BVqtv6xlqLLaE2bxcc2mYnRgJtsx+kwcDdlkVpXTdkm06KFrO5WOWNHRRzdGoiLwltPTbB4zCNNO+sN5jqBD5zfROJw8B5Hki1JwRld6g4B+f8KfeffsLVcM2cL+y7I9/37oHT4SVTgjotlFqZU6aUZAFqSrQSDhDoArULDTFnwWGteLfKF22tTZ6CVNvA21DDwq008MnalmkzoroFt/q5IKVinJ/zZbI4Ej3Bt01dbJayix2di+y7gSH05pIciwW9ZPqLa39en5dYz6+pZ1WUkxaonmj+VJzRvBqYxvlqHBWnhpMRrC1FgppZkqkijDmRNbU9RixAfy5KtgTlO2dW33Fb33UIjtgFXtxc8fu+8hWGLrLXQMQh54VyP0FRbnYnrvoj07xjnHqmZeLDsnARtTZqNI29a++p4rjp91z1e45dTx8C0ZltxMZeG9uhWBySPMPQcXM6MJZEonA7PnKcR3KxxKrre3aHA/3uYEGKwus3dzycH/D7Pf5wwKuyjwOhISzntFByxpdi0kBuNLdbL2jn8Q6oqXUw1jTJJLWEVc3c6ihzrF4waPS+DfyHFpTMs8y7iJMOLz2XeeJbr79JKQlp5P/oA7E74n3P0F8RXMe+27PrdqAmo1Rr4jLe8fHDbzRe1GR+dm3511LN761UpstMXipDd2X8qGhz1VqTtTKr9eBKw8RrdS1hlqegktVmSFXR1OZKjTni1GaVONpcCWoQkppXHLK29GkyS7qOddt8WQ0ZPSZYMpIyOjVJrdhEAjQgGkylYidUD/iABrehhn+32xc6SPW9MfV9CMQg7PeeGD2n457DYaDkQvB22ez3A13fEaOn7yLOO0JwT60Vt2bMbcvT2tpyDsnSTqrHV9cyblb7G/u7Cq4BYFw1iXpZVx7rQsFKaLHwtl4gqg0ooTTTs7V9tm6O2oIfa9Jk6ECFKrkFp0rFdMCsDZBbUrYamoUGvzXkmQ9rguzwvm5VgL2fSioL5+lMqcqby2uzhdZ1X2w20aoGX/MNAbh+hmLKFXYg7U0/xXpda412FlvF+Qxi/QSIWNumGVczNpNalb3r0/M0gMyUZoP/5kLJybLEsOIEW8UlmLKBQgyefuhxTT9tRV4agvPpbazn6Dmc5nlncCtyVh2o1kZUrFp8UqOwoGdGf2zng3YEVkCF9y3ZceD8Vjw+O14tQD1r9ylPG8gG/GlBOXhHFzy7zkALrnmBAZSmsGAET9u0umBt42HYo95RY2QV/IjtOEYRujYXWttYbk3itLWE1vfqheqURStJjSgcQjDx2BjpYsQ3pJ1zDt/FNv6tkCtaMlLrph9on60RWXGUSuPVVTy5tQprAxk9kz55nnC0TVYbfcKOsWwtwNZza4WstuKksKSJAqQ8NxkuwfuIc45hOHI4mAV8F81sNHgTUq3FuFC5LMz5wpxGs4JvShOrakdOmXlulbianUsIEe+NPiCYSrv10tqaWdt1ip1XffqVNCucVX2FNjYw+xaozQDUMq0t29r2rbXNV2oTLsjV1rNawK2lGox9MZa3JLMHkj4av2rVhFxHAE1Rxlrev1OT+vO3L3SQevmi4623bri5PhFj4HDoicFzdX3gcNjZgq7W/gox4p0hj5xrrZk2C6ItcOvlmkKyz2pE3SrILJCFWHqGYqKvKdpgfLXvYF0Qug7frTKis+iic0UnOzEq3kQtu2DloNamt6WWHBWsL9yyHEMUgWF2qmXY1UAE2SWSGNO7qAWrXC6UekE1MC/gJBKjGKmXSuwNobXbCfvBbW1LI/6pKSXkC99885s4Cbwe79n1R946vsPXXvw+gg/EuKfrFPWJKjNaCstlRFNpROCxhcaMNRtt5SsrtP/pWljroS2mg80BqkFx12GzuIjzu/Y8Taap2CaWcuIbrz/ibnxkF3tOw44uBKTzBPEUYVOSDsEQmcfTnrfffsllGcn3n1JzMXCHl0bYtHdXKs+qFnuHG+FV1g1y/XQt0LdAVZI9zdr0dN6kk7yzmOvc+qGtCpWmDpCdkvtCdqaJqFn4XCm3tobk83dZYDV1cifOXHK7jqth4O3DkRgil7mwJEXdTCFDLbhLRZISOk+/v2LQAn3PUhOX5cJ5vhjmrSmInwSufWDng8l9YQmcWyWx5nYsDsDeMcfK63xhLgnXR65PJ66vrnhxc81h2NHHgKcSes9wtSfnhSU9UOdEFwM1ZUzf2apvEQM/FJrbC8rgClGKAV/Wa1FXRF0r45+1Tc2OvTzNXIiw+qnh2vms7dGQSuH88G2KCvePr5GqBBc57q+Jseftd77C2+981QJddTZbKxOaF8Y88+n5Q6blzKePH3J7+YTUUH2lFNIYyItnnBJ39xdEPB+8+1Wur19yOl6xHwa6EKGZMhrk3CowTRaIanW42roZa1ZYLPnQqpQ5NeSgIQ4rziRERahNuQfvGgDK0nUziq2kyfzA3KUgi9ntLHmilszyOFGWZDEOcH2kf+sGd9yBc6jzLZ20LF6XBHP9HOfxf+/2hQ5Sw+A5Hnqur/d0MXDY7wjBs98PDEP/fKbeSnXfsruybSWW2ctTC6ptBLqlIwJFkCK4rDjj11KcVQ7SpofSSuG1E7PZSGwTW21Ov7ZBruisTRNO11nGU3WwJtra7KdxFaoN/qnWrqiaKM5aJjaTMmt4rYkqagKWDnyDqyrNh8mbzYRfW9i6VlH2lUtlXhZMysXTLRPRDSynBDiib2Q/r4gvpmTQfIZswGpVkLrV3Vio8uyyb+ABaUe7birq5mNjn6dBJ5oYoFP37Pw86bFpMYjuebxw+/CA7gr7EE08VW2+1Fr0tpG3rD3GQN/3FMo20F45R1WeOmrfER622/Mqaq2at8dqW1fYMqrNdh4MnblVPeszr+hBrIXtalO3d22NrdV3e+72or/1tgVTW0feOWLwdN6+og+MLSmzlOcpG3dZTZ7IRQTP/4e8P4m1rcvy+tDfmHOuYu99invvV0TEl8XLxE6ElOKJxpOQME1LblgWblqiQdHAgoaFLNnCEtiAQMg0UMpuIOEWFmDJLTfpuIewjNAD9CT7gbFxQhYR8RX33nPP2XuvNYvxGmPMtfaNSGcG76VeKhT70/nOuefsYhVzjuI//uM/5qkRdaRoYc1XgjZnPBpr0SdLsfnZfnNdhXWjzEdooqxaWG8yqZQSQxoYUnJEw2jnYUwEqbRsGn+pGbrRs1kLcAS1biCXXPI9e/ul0MeKbBdMe2bqxf9NfSKw4yK3F1Y3m99QcilkH2rYNeiGYWYaD8zzHcejqYu31fZBWTOl2t5c8pnL+sKSz6w+Fr5Uo4LnHMiLsFwLl8tKDDYpeBonhmFwFRmMkVcLAR/a1tjguLCR9IReO+/oS9+T1tayB+cWNFu2a/Rx2S9BJ0ho8/qpotmkz2o1tKLVamzBXMzpRAvYtcuH9Oys2z81rHv73B/h8WPtpH72i2/z6adveLi/I6bAPI6EKKQhYRNmoffOBIWIOwmx074VOmjiG0Fki3hlwCIR06SlDJmLzziqyR2H9gY6a7AT1S0Ok9D2Gz45+6xDCYAmU02mO7X+J8+eejSoPrrZcA2Mxt0u3lxbqWKsMOrqjL4zpbyYHtmohJho2shtZa1nluVim6SsPsG32gwcVS7XxpK74zSjenm5AJkP3/9XfPnLFw7jzM998dO8enhgDIHZ6eHpkIhzj1AzuKP5CNzbtP/cWqDUUlleLrSmDIeZYZp8YxTLGt08N2SDQlWsmfi6rjx/OHNeFr7/zTu+fn5Hy41jnE0kvXa4D2tVCDbGWwjMhwP3x5PnPfbeIroJeqr4vK3OFFX2M/H7KuJrpRMcHJvTzRjaddQKrcjWh9Sd0yac29di62w6cySGG/uG7h99E3x1JIv9LT34ghQDrx/v+fabVzze3VGqZahaHHuUZoVsgTAadVklUVfQEJjixBCU4RS4OxxZ88o3H96TS6FeFl6Wt9T5yCHOjENl0JFBBzuo6LXDUGn0/kGhlMz1cubl+QPn5xcu5wtJIodv3fH68ZFSC++f3nPlTCnvuV4b96+PfP7J56xVWd6eqUtGNPVoZwPpvB0X6c5S7N4HzOna/jO4vvqAzNrMwcUgmxpE99sWBFWQaCNHJDANkYSgMpCGO2JMPNy/YRxn7o6vLJBSU32prfByfcf5/JYP57f8+tt/xXn5wPPylqXYAMj376/kXLi8XFgvZq+GODNNMw8Pr3n95hObkbdcKFdYn5+oy9VaCobBgiona6mqsescTgPZsigU72WCbUy0WJQqjivbaBil+DieLi1Wa7WJCUWRUpHaaBQ0ma7pEA+kdiCMkTglq1+eJhj6hHMPXGu1OqypW/vd+q0fP9ZO6qe/+BavHx85HA7WHxVNyLCXbkTFmTwQKQSHezRE9+IdgmoI9QaWgRA9su4K4RGKZnIrN5C1WJioyZ7betJkRkb8FyICk8DER0QMM9W9D0b2AEjYbmxPu/foxuo3V71Sew1KfEpgWUCrScvUs1F6Q0U0UVohtIVcFtb1Qi6LC8lmm9CZC6U23n9QXs6QojAmS7Ou1yt5Vdr6nnr5l5zmI6IRbYG7aWY8nggxkg6jMYXyGcnPNoqgFevZ2LEo9vqLq0cXm0baioWDIZmhrWqFv6BW7la/QYqioYAUzsuVL5+eOF+vfPnuPV9/eE/SyJvpnuiq3eL9Zerq33EcTRV9Ng24Uoptcu+7s7qU0mSXGepEiu4JzFGIj7hyWnzbM65eE9i8jw8WtHPwYKNT+J12zPb2nUjS/Lj1Bqbqx+THcXs5b4gUKoLEwKv7E9/59A13hxO1yl4vbKYzyeByNaOpAqAGUUoQpjiZqst4QEY4X89cL1cupdEuCy/rhXosHI93lmF5JgRqI+ddpaQri9Og1pXleuHy8sLlfOZyvjIPM/PhxOPrT7hcr0zzPbUKpQSu18aQDnz6+jOupfH1+Suu9WqFfFfVEW9rEM+vQt/7gBEkBpc985omtr+6WorZh7hdYu3T01sz9W6J1mQcEmOaUUmk8Y7D6VNSStzfvWYcJpuUqzbdt7TV5MmW97x7+ZL3z9/w/fe/wsvV2JuVlfN14d3bK+tSeHnOLJfK4XDi1eM983Ti/uGRV2/eMCKsyxVK4eXt16znF47zEbm7N4q7GEokvQ7l+8SaxHUjbW3j7mM0hZtenPZpxUJAW6Xk4g7KAvdaK6UWC5L9u8aGT24lHScjn80j8TRZNjWPaAz+Gkv1tBYbydMZUb8hFPDDjx9rJzWmiRRTz1s6GGKRVV+0H21ukyphe34vvnqvhNrm7yTuXjTtUj6tebleekYAQUb7fGWLxFpj051zF+eHYHI1zTHwvo1EhOCdngbrdejIi4wdyPD/NSwKbFppvUO+VerVMOKC1xpQbxyGpiuiUFpG1ViAQxLmeeC6CPmi5NzIa6OsZnDUCSNlFWqBVqAUG0ttFO24DRLU1pzpZMfSz9d3+Q0cs50ItRRqWVmvVxuZXYtlraNnvG5YolaHpcwyKZjzI7OUlcuycF6uXJaF63WhLpVUTFNRq/UqaRKTBAoWFceQUBWWtbJmJ8v0ZKj3h7gjUsfm/Fa4s5XNUeyuyd/kJqvpqJN2WIZOoMEdUCetOJNqE+LTm5qXv9FNNuVHZh8h3Tyb2zdRUtOVRDCx2t7jIlaba61SaVSfHByiEKOgBROkxx1oky34SiQO45GggVzM0IoaKaCWAqNaPQOxk/VruQ1z9N+dTkfevH7F3fG4wd59LAbiUOCQmKaRkkcEuF4zS2leHwzet2iU/hQbUWzyq2W9bgtUNuPb16D4NdrgdVcQbx261/1S92ChqTm0bZaYK5kjEGNCxEaV2mReY70u+YVcFp5e3vL10/f5cH7Pebmw5MX2qwrUyBAOSGoMp0CbAofDiTevP2OeDxzS5OQt3Rpja802AsQD7i3Q/sGl2JN62ddxJ2JZvdyvSX+LzpR1wWptN8QkrHWDGNAhWF0rBg9EAmGISHQxWldLb/TSQdthRoJ9XvAPTV2W5jd//Fg7qfvTHdMw0/WsaN5rlGRXLvebFnxcs/VGmCx/UH8dVqdRIGvZK1ZB3UnZBa+1sFZbIEWLsZzCiSEadTw1e098rlLQtqHc2skZ4rATbJtJJBDFx1JvL8AjDjWiwU121SgmTqmr9Ue1QllXXr75hnxdCIeGHBoSEzEFpCVUVm8grdR2Ba0cT5E0nXj7rvKr37tyvjTOz5Xl0jbYww7EDqiVSs2VNiiDDBzTzCDRFbuVtl5Qra7Ajl3vYFJNTbuxMrUKtHF5+cDl+R3XywvffPVrlLJypw8cw5EQJsbhgRBGiFcIo1nPYKytSz6z1szb8we+fHrLy/nC12/f8s3Te74VHzjcRw4S0RVybugQCNNATIlpuiOFRGmBd++vPF8Xu+dJaNI8+hcaoRPVNtgv9OAkNL9XTrLoUU6H+bpdduthJgCIUKM7G2kgVmOUHtEa+GTrOApRcVX+m2zupqvXnJgTUoJPAo7CNArTaJI+65Ipqfiocii1kF3GZ002QE9GO85YIWSxN+pi8yHYCBiZ+ezuc+qh8r5+zYfLO0ILlOtqBn46Eqe0pXdKo4WVrNkRBzOUP/3Ft/n0s0+ZxhOD0xdzLSxlgQCH05EQ4fXrBw6j7ZMvv/+O3GC9NlqNRBoxKClU5nElhuZjAYOHoB48bpWzve7ctFmg15pn67bWC84dEEypxq9x1cJSG4GBQQw1iGFiCrNDZYmqwppfWPILpV55vnyfNZ/537/7v/IvfuWfksvKy+WZ2ipJRyIDUg88jg+EMfLq7lNO8wPH4x2fvPkWaYjIeEXWhdYKa1lppZDXC6UstDZjaf/GL/4oNtr8lwZXShK2WVTRgrUeAXXUwtRjmrUFeBalGJo0TNEy4QA6e3gUbMxJnGdCSkhKyDR4EGnSS9SGFLeoEk28NroW6W1s95s8fqydVB+fvPFj/bFlQdwEvjdRR3cPW/+TuHwSnfnSB6H1CNr7EKTRxMZ8Fx/3HaQQpBo85FH03t2u2/f+B8WaUPHah3o+p10zZ8uC9aOoeYtptgjQ39OjldYqOWdyXogDhObGp1l02WdB2bgEk+WJ0fTUYgTV5BHPHvW3YtY3OJyChm2QYoo2wDF4p7JFTN5kiGHeBkt5/Y22Zar9vFqzURqlZPJ6JdeVXEbWYr1NMZlMUOu1Ab+7bv5omJEprVHUMl2tFhEPGkgt9n5Di/hSJMZEGkeGMBDjAOJNnb6BbyG9jx43TcgbSeI2k+oWYitE3aRe263SDQbcuA8udMpGotlNjTFRe77dHVRfH/tH9+f2tSOeRaUbAWa4cZjagWYjcWCoaqel0nP8vW/Afg4YPb1Jc5UTC/JabT74z0gf6qmIa8BspBzUMvR5nhimiRRmYkxmMD2bMp/Y15i1ibTWuF4WCoFWfY+JTS425rQSZdfKtJN0duwP9Jnpthbbvo/Ua489gwpKV+a/dWwdnlbPViXcoASq5JpZ1gu5XLgsL6z5hZfLE08v76itUoq1hSQJ5qQkIcNMlIGH4yseTq84Hu94vHskRGHx2VRaC7XadG0bM6L9ltwsgdtFcfPv21/fEhVkW1W+JppLk+3w7Oak8H0cQOIN8tTT/BQsK0rBIMW+vtRk4rb6mOwLVNxh/SiPH2snVUqmpcHrTrrZg00NHej9ANsCbv3WNGfkGdXKB5CbIfeft2ZR9TEbFnsaTKKZpo0VpeqCEEhqBflINAeqytQaQZW44eZKb7i16NwiduvT6jU0M5YacKKHbvbObnMgMRIIFK4oKyEocTb4psSVmleiTsztzpos40iSSGkLS36m1kzRSNFIDDPf+uyRZYV333zg5fnCcs28fLjatfTI63iceHX3hofTHZ99+obXj/eUslLyxepiwXFOueVgGawQSA5LqVOQGnG4Z5wMWptPkVQhDgEl0TRRa4IWyXEFXiwTrEAIDHf3zOM9Oh7J4chyXpgZebn/wM8/fItP794wHifS4QCHgfk4c7g7MM0HPvvkZ5mnI1numB8+56tvvsv6T97z9bvGWk0BQBAGj0CL37GOVHT05JbdZ/dHNx/Vn6NOX9/6yCJoNSKEBDd0WCZ+E6EgYn1czXtsarXsbsNnatucXV9PIfZyQOT+OHGcJj57fOTbrz8hDTMSLTMkiOu8ges9IaOnEP24kH1cgzePiwqpWXF9igcO0wMqsCyNXDOtQUzRIWvnVGarXRoDraLNp1WHwN3xkU8ef5ZpMqWGUgo5Z5a8cr0uvHv7gZf37yEsEC5ISoS7O4ZhIEUlBcumzI/cFOG3iy++h3oA6sbTdSJbA21du8+ufwOKNmubkOj32QRia4OXyzPIFYkXQryYwPNg8mrf/+ZX+f5Xv8yaLzxdvseaL/zal7/G++cPpJA4jncMceSLx5/ls/tvI0SiTASJzMM9YzpAqFQ9k0vmXL8itw9Iq8SaDdQZJsY4EobRSj3dUbut20oIHij0NdqFBdQdvK8ytKMFdXdS1aG+fi1r77FSvAbuwU6vxwYxpX8UrdlQlVrZhkMGV4vpggk9MIw/AfOkOj4bJToj7ka/rxcLu8HvlkPVsgsEVQsjW0/tXa6mQ/8bTdVrQOaksv/bv7dMkTOigcKEqR2PBBlIniVFj9Ij4lBf3Q6N/juPBG2rpN5vtwWywOakgkD0d1cyFYsmw2i4fG4rSz2TBMaqFpkyMshozjZnclnIOlOJhDjy5vUbarEhdgFTtnh5rh41WrR7Op34zrdf8Xi6482rB+7vTlyuynN5tkwntC0b6Iy5rSi7zcUCPIqN8cQwWb1sOkRigZCiZXWaaNV7wUoG8TBBCiENHA6vOdw/wHCihnvyZeVujazTM98+vOb16ZEwJ8o80qbEdJh4OB05HB/49POf4nB8JIwPPLz+nF/5tf+Tf/p//GPOL0+0tpC1mYxNdPit4QG585F6tP1xAr/nQD1wVHvNRrlXm/XbWnRfbne7G4ybnMcCkWQSWiXvTb204I4p3NQNrNaTgtWVpiFwOozcTTOv7+755OGRatQhe65nT1vWKNiIlebZZHCEQd15Cqg7qejkijHMzGMht8I1L2jx3qzovX3RMhRqtGm2DWqpEIQYTY7odDjx+SdfMAwDQ6qUWndHtS48P515evuB1q5UPTPME6+GxJTE5kgFg1+7Yd7uQs9kJdzUjy04VDXh4KZ2TtpMZLI5TGgxRUU1WGAivWPKzuFaLtanFVZCXAkxMXNEQuDt0/f5V7/2z1nyhafzl6zlyjdPX/N8fuYwHHmcJ47DHd95/TP8rs9/weujo8G1ZUBb5FLe83b5VXK7sOR3LPU9oTWSVgKJeTiQ5ECIw0fNzbdX4aOEW3QbaNob7LXJJkDbvOm5Na+5q0Ogu+k0Z1Pd0fVs3GMqEbG+Qq9DNe8724d2RkcrAnj9ztlGRtr4ER4/1k7KhB99kFyzOohJ7HcH1IvbDt15Ot+jKnt4XtXZUt7Yas5ph9Y2AyTbyzbMpk+qrWqQn2ghyEDTQFTTjpMNfuCjz+4uqGnP/prTq/d03irZPUOxdLw6acI+M/hQQEuhtVkRN6qQ4okh3ptdaq584Fi8jYAXkEyICyrCOGeOdw2Vxumq1Kqk1AihMc4ZSQsaB3JbWOpCqas5KDUIsV/b269+4YMXOXpGldIEowKPHI7fptYLTEcYTI4mxdEXdaM1z2BDQ1vwJvvAOI68ef1APWSm9ytLixzDCKVAVlgijGIFB3XNtpgIw8A4Hzid7nm8f8V3PvspgipfP32ft884EcSp/bcQ4OaUduJEjzptrcAW5UAPm/bXYNlV118F2RlZPwjl9VcJ8APr+KPjcWdpfW/COCTuDkfu5pmYggdhuh1f0ODVG5tp5ZPMPAMSJNH72+0edqZcX5RBSKcj8zQy0hgx53O4u7faWsCGXKLEOhJadQFYN35qOnioOPknegYXCWnwsR1Xh7BX358mFFzrQi1YX1uUmy1kIZ5NbY5eU8Qa7Lf71yG8bhsC1mciSOvwfnPnZoFobY1aBVmF0hrvz2eWUohpIqTZYMmLOZr3H750Lb4ruRZKNYJElJEpnfjk9C3u53vupgdrgwjOOPT72qimj5lfyM3UKVor5j498A3BviTEbRk43mMB8g3ksjEqPZNv2Z20VII4NiDupJW9R7NfUndK6r1v+tF7m80UsPvbwse2Uv3zZc9gO5HCmLPm0H6Ux2+7k6q18uf//J/nb/2tv8V3v/tdvvjiC/7oH/2j/Nk/+2c3CE5V+S/+i/+C/+a/+W949+4d/9a/9W/x1//6X+cXfuEX/rU+SzVT28UinhBIbdjZPF5UFL8Jur+KXn/eUXOhbhBuj7p6M2k3vRaR9bJFZ9paxNDZdqb4YCKPNtCu6pFIpMkAWD9DEtfn841zqwBuahje1+OGMPaal+7sm6yrzbOhUkn2/mmwJsgi5FpJKXIYvsU8fcKSn1jzB3KGNRdyW41GGjKEQkxmvB7enJnvVo7nQpyUWhtCAWkcJ0UmRVPhpb7j/eWAlgX0yq7D142qXcsYkmeHu2Hq2UeaJ2RqlPrIOJrYaIkrJWQzWjEBSs1PlPJCFWFtELBx17kk7u/e8MnP/AyslXc6czl9RXy6Il8/m5biE0gdkPmEtAEYCdNMPBy4JzKPJ8Y08P/4xd/P2+/8Lv75r/6v/J+//r9xWS98/f4rclm3SJzuR7YMqq9nM75tX2T0WsXNL7YentqVehCfHQUuBrmHwljPlpEq1Kb7VjUl7v7GwYIqTxpIg2lX3t3NfOezTzhNM8M4sjrMoxrcSUUGX2HNKdhbPW4whp4ohMrec9Sgs+XQyPH1K453J1IKHOaBEAQtK5Rsrx9sfVvGE9G60EpBKwzDQGBCNbK2DE0Y40QYEmk+MD/ck1um1Mz18gxpgmQN6uuaIIwEbL3vHlEs42cEAlVN8SF43dIyxB7F91qkDZxEoTYjKFht0rPkVozRWhtlqVzzwr/83q/ydP7AME4M84TBYZWmyuXywvnyQm2F63Kl1oK0gVHueX34Fr/nO/93Xp/ecJzuGePB1oivk8JKaYVL+cC7y/fJ9Qy8oCzEeCQO5thiOpGCkcVUfTJAs7ZsI4n0GrA5iOpzo1qt5GX1ninBSE2JNBzcWfcxOJ4d0WvdzWqW3jtpg2YN9ivaoAmtXAk+b7y/R6/pGdnHa/qtI1e2fEv5HVJB/y//y/+Sv/7X/zp/82/+TX7xF3+Rf/gP/yF/7I/9MR4fH/mP/qP/CIC/+lf/Kv/Vf/Vf8Tf/5t/k53/+5/lzf+7P8e/8O/8O/8v/8r8wz/OP/Fmt2Ywj8WiqGwvL8d2wdOpVNxr9HsH2t9uhdntFyv9/E4UCbBZWLHbreO8GJ2ALtjcnFC32FxWq4pRt8eTC603ai8uWSfXATzEjEeLOjd1HBfRaGfRRFiLJZ9kM/jUSwkQM1o1s2YcXzLUPwxAMfrTG2RAraWikUZlmNYPq1yGNjZAaxErTQmkF0bpnS8puQH2T3GYRbJCWGUSr70TTm08nk9yRM139HAlbEbe5dFQTjG5fq2c6avBREsY0oMOIxuxRZPOvjwkL/XpLCCbcOc08nB5oa+bueM9hNgX9zoDaFc5v7r//uLP39tPcr8HHUMztL/Wja/VxFiXbWtz/H8IPOsF+jfE+Ld2a+7vKxJDiXo/ot6JnHbIP4+v53va+YX/uzg3p7Rz2ujiNhNOJYYgcTxNRhOXlA7kWq0c5RTvEgRhtpEU/321rdkOot/U1uhC9jeZoVnwXl06wabSd5eFyKT9YmPes1N6rZ/OynZzVfV3+SMJ+XNset+9dBaVppWgh55Xr8sLl+kzWhVFM47DUYs3yuTi9v9cmTZR2Sol5OHKc7jlO9wzJmId9bewZSG+EX6ktIx+1J+yiuHZT5eZ6bjdpWxN9z7bWNifVavXaksG+QW2/i6+hvi+3ldfhvdYVadgEbJvbLcSvU/NpDrdr1w1Yz/614+a+HlvPrH+Lx2+7k/r7f//v84f+0B/i3/13/10Afu7nfo7/7r/77/gH/+Af2MGr8ku/9Ev82T/7Z/lDf+gPAfDf/rf/Ld/61rf4H/6H/4H/4D/4D37kz3q+XohJmIaEqMmF2NRNE4Y1ly8elUdPf3oOtV9IoReu90dnzIE1JPYiV3BoIjidHPxjFFo1mKG/d9NCKS8Op0woA1EiLQwECURny5l7a56am7NopVKWDALTYSL1grS0jc7dSaIBkJCYxzc0lJQ+5TgXUjwR5Z5WIjVX1nyxDKqzuCRYU64qpZ2xEegrpRpj8XSHYdc+aneeRk4nUw4PqVF1MSUPHb1YaptUnEAhoqaWEbyZj4qGgMgAIlRnA5aWWWs2qZnamKpBCdnlntbaWCpUyaxyRWokPf0qa77w/OEbvvzyG2IV7r6+MJ4z1IrOydhGo7GOqlSuZUGXF775+nucL2fmdGIeTkRJHOZHykn5/OHb5OuZd8/veDl/ICJcdQXNbBZchL1Rm93b3DiozSlYsXQzgIre+O6dUbg1537ExrAenpQEZKAWh218EB3Nsp40RkKAcRTGZI3r+Xpm1UZLD5BuDLWASPLjaNakqp1E5Kw1X7Hd6EvyL4mEcEBiYn7zisMnnzCMA/d3B0KAr3+98Hx+Jklgnk8QhBFoMaELvFyfrAWiZESg5Cu1XAmhsVyV2iJvv/6GX/v1X+Xl+YmXXCjjyDglxjkyjMI4wzA1QqxYv19CdUARE9HozU7uuLrtVYlI8BEcMhNlpHUlBScMNHcZ0mnp1frzlta41Mo1rzbyRVZKu1LW92ZLWkIJxHBgnO+ptYFeqK3xeHrgbnzg1fEVp+meFO1Yi5p4gPaxO27gAxCk+deIyIjIEXRGSeQSaMGcRXAH3HVskIzp4+2BSc2Zlm1ER16LB1+JEJMHzz41oWGkJ7W1qKgTXTyTcidauwqOWLkRFUIzMQTZ6u09ULjpAaXvGfHAH6r+Do2P/wN/4A/wN/7G3+Cf/bN/xu/+3b+bf/JP/gl/7+/9Pf7aX/trAPyLf/Ev+O53v8u//W//29trHh8f+f2///fzP/1P/9Nv6KSWZWFZ9hN6enoC4LJmTrUwDxFw+rTXdUS7PhS+MW0SJx6ZgDkWVYsNtwm64AaksVelXMwUZ6aoddbbDfdIpqmlzO75zEk1i4gUkth8myEk68Mg0C9/j6A2NgyQ15XlfDWjEQWViX20dyd79H4rzICkI0pkTJHjnBAGIjPaArU2Sl2pWqz/a3M+prRQy7JJoLRqkeu0JbWW/R3myOFk7CKJakZCEzB4dFS3hlXEtAfV6fbqcKX0WgLBI05Tpcit0GphWhupmLpiDj7BVpVFoVLJckGqcD5/Q6mZUt+zlHeMGvmZfORVGyxIGZPNtEkBSUIVZW0rmiPPT29ZlwW5E+Z0IkhiGo+UqfB4es16/xlBheMwU0umlkoN1fONuC0TD0XMafUIdgtq1QKWG924jumbZuP+MAPTs7X9L5YkKCFGhhAQUUp2Zqhv9BBgGMxJDUlJUREqJS9kkb2xevssY2MpFtiEYC0c0hz229RBZFdH6Yy/GJBhRNLIeH/i+PjIOA7cPRwRgXfffEXxDFVGUyEYmhnjXBerEynUYr1hrazUthIqrKs5qQ8fPvDll19xvbyw1EZLg41bmYU0BJKjfBKsLaGjEtD7ffq1rRhzdu9FVBkRGZB4NOPfFmpbnYByQy/HYKrq85pybSylspZikH7ItLZQ89VtyREhMQx3zOMdpTZyjtTa+OT+O3zn4dvM48w0HAiSrHViCzHZbFQQU8wJNKfXW002yITpzydq65AtWAuxwUih91p4BNRcDqmVYo6qNUpx5Y8hbGuuOpkH2Ot37pDwRuKeUSlqTkuUFnrdP6C90XlLRHfbIhihwuTD2g3kgGXFP8Ljt91J/Zk/82d4enri9/ye30OMkVorf/kv/2X+8B/+wwB897vfBeBb3/rWR6/71re+tf3tBx9/5a/8Ff7CX/gLP/T7X/36rY1mqI0YbASHSHD4wzdbn3orJkQpIRiMQ0eC1PtUvDfKsfdGpUkfdO7d8xvEptv3DUq52QymT9KzL1uMa7PBZqVZ5BolMDGiDDeQhy2q1hrrZeH8/GLF5HlGhokoAzEMWLiTNydlCzOYI+sKD2qZkq2KTGUhtytZr9RWLYJqoI6nd1zd1AncKfdF6wa0VZv0G1QoaaHIYuPRiRst9XYVKqYDVj0QMFQ1+gYJVL1Q9GpdZ8EIGKah6AQMk4Y3uIViMjaeccr6QtaK6sHrYSPKiMrAJlEONhF0qeTrFT0LpRaG+UTVxvHwaPc+BeIwEIeJIc1M8cA8HDj686o2ivd59ZHy4o6YHleY1SeIbKwrfuiKsPVttZt+tA1ek57xuCK/LSt7ksh2H4L3qxBs6GeKQowwDMKUYJoGDocDh2EihLjL4vAD6Ni2atXDkH6/PXjpTipEtJMajhNxmJlO9pWiMegsExGaRKpCXjMSjE2WognJzuNEqfbetVT7ylbLUGlIDCzLlVIzuWayZlbNJFGaBCNfyC09ej/OHTqzcwteAJSQfDaUQeG9Rr1di951p73/x26QUbvNcJhAcnFCk/cq0cGryBDviJ/nbvsAAQAASURBVDIzxnvGeEcSJR5mULifHzhMB4Y4ms2hbQ3jQiCo3Z+lrOQls+bVRrM3dU3I4NCe+L43iNTuo/h7ykf3FDVlGMu6q7c/sAVBt9m6+j4VvA53u67dYbl42U3ArtuKAd1UMbb3Vk8U6Fm5X9nOHt2yst8hJ/Xf//f/PX/7b/9t/s7f+Tv84i/+Iv/4H/9j/vSf/tN88cUX/JE/8kf+v3rP/+w/+8/4j//j/3j799PTEz/zMz/D//Nf/DK/6/IZP/3pJxzGkTf3dwwpbs2nfRQyAlpXo+qHSEwGN/VoVNRlwBS0uKMKCqk7J/tjawYBbpkPHaLpNio4bdeck8UQVjc5l4UXbQySyHEmSuCkR6Y2+SawKCVfz9S88vLhzNuvnghxIBzvkfHEFA5M8TUiMFDoau4diDRIMYKLryqVqgtVC7m9cCnvKG1lbatDkZlW9pqbJYTeyOcMNBBCMumcIplleUFjYQnPDC3R5GhFbOCmcgdYAJBzRqV4YTU7xLiACEt7YdUX23ixgCgpW/lX1SZ9BjUB3VUypWWWYs75Ur8yllk4MqYzQQ7UcKSFPh7Abkq7VHQtrHGlxSfSNNGCMM0njqdXNm9qSKT5yFjgOD2wDo+UqfLm7hOGYUQj1NhMCHddXbmhGwzdikXhZgBUr2fcXg9fYrQqSFNaNBJFUCWGDge27Xm99rD5q2Cya4KYUjpCTDBNZpSPh8g0Cvf3R169emROM7GNlIIHbJ71ObQtumkxELFMX0JCY6IL3wrY7LAwwDgzv3owVuQnj9x9eg9NaetKzZUiQo0DqnA+nwkC4zgwDROtHrg/3ln/z/XCklfyWliXlVIabTFn8fLyzHW9cC1Xzu3KRS8kRh/Kp7TQjTw0vLVBzc22fqlEDeIMRr6R6MML42ykpBYsfNyCQ5tmppjckvhUQOtlS9ZuElaaLDQWGkZaatX6Dw/pc8b0yJhOTOmOFCLzKZEk8nC842E+mb0RtVlQybTvoiZSndCmfLisPF+fOeczazHR5xSMESvc1M20bXBc9YUSdMunQKz5eV1XQ0Rckb4vp71pvZM2unezGrVlcnYN+3+NSpVs/9p+byvGegscMtxIax6s02vQRhQLGujsamt+/h0iTvwn/8l/wp/5M39mg+1+7+/9vfzyL/8yf+Wv/BX+yB/5I3z7298G4Hvf+x7f+c53ttd973vf4/f9vt/3G77nNE1M0/RDvz+vKy/Lyst1oTXlME1GvXZFYwmB1OGZaMZEI7tuVY+8cEOj0Jp5fKS5PthufHfVZN2iKb+/3iPgkUZf+FvndtsYgg3d2EY9SgdvktvkWuom3SIewTvZE9ibfbv1MijZC8ldy8ZJBzZWPjud1kfMe/anrRM27L0s8bSCbutRFcI+X8ejIDWF8tJWo9pLsWivL3j/Sf262PErwesFXQPNjs2Gt6nXeJpAxfTcpLO//aHbbeqOwXq62IKC2yf7cTSHGmuj1Ao1kMtKKAM5rxa5lnVTOxARQjA1jXmcKVqY1okhm+J0qWWvewgOYclm/E2LDjqT1ePfG2/VfyM7gcC/tst389jZ7L3Z2xySNXCK/6wbSzCI+FefOmtfHztLvwdeh/JTufkrOweBbsyMIh6HwQR6B9No6wwwy8Sx56obYxGDg9WOK4ZIC8379hxybwpi60mlbY344tlZaaZO2QH3vhe3L4/4b/t3bk7b7ouz18SVDpCw7am91YTNEfQrLrefcwv/6w30z0AME2n7GkkhMKWJFCKjDywErO687Q5fQs02W+8t6g21Pcj54TVxs3ZoN+tHHC3CamzegCu6X4rtwsjHi2z/iB8OqXZH1W2ZbkSzXgL5aCHf2CU2m2VanF35p1/Djej2Wzx+253U+Xx2JeT9EWPcmBw///M/z7e//W3+x//xf9yc0tPTE//z//w/8yf/5J/81/swDXz59MLLUpiHgU+enhlTZJ4S0xBIMXGcJmc7BRulngrD7BhpsImatmhMuFS9ac2GhfkNCmZEcymUsvrzPdpCN8PZp5y2ZgVHVaUWO+9pnBnH0XtUDMstXsswmE29/iDIFJlk5tUgSBgYD7OTDZwZQ0/LoWPGthDaR8ustisfzl+x1jMv17es5exUeUvwA4Z5SwjEZGoZQayXyMZYW0d4iP05lWEoBBEu6xPremUO95TUCCQGZq/79cxMqDUYahgaIZojkZoRUYKuDGr4/BKLzb+icNbGWCOnPBM0MsWZMdjGLWJbY2AiMjBwYmoPjGI6gkMALQqLj4MP9r5945daOJ/PrLnx3e/+CtdzoVVlfbJsYF2vSBCO84Gf/uynWcuV4V0iPgfWvPByebJpqrVuReSNdafmyGtplNhoVSmrER2cP+GPzXVRq8ljWTSsm8WQG2OyoYERZBKvSdhnxajEpEgwE7rWynVdeXm+UFNjGI82ulssEOpsH0EsVS7Gzmzu4FR6JmHQ3WaoxTLO4+tH5rs7iML55YPN8lpWaqmsJRsopBXK6mwvRWui1kqSAUkBDolpaozj0ZQOVKmsNCpDCrx+9cBwDvyr78GHy0qaEievceQGoU+irY0qgkolCAxJSIL3QXkfWBiQOHkmNSAkGgFaoGpmLRbAdCixt5zvZlxplE25vFL9Wp0Ywh1jPHEaHpnSPfNwZB6OpBA4jTYDahwHGAImg2Z3UktAFw9O+2gWrOanVam62lc7EBkJGPRnwgB235uaoLOVCMzeiCtOiDdi90zGyDAeuPh99bRqP8/uYHRbIq6sU+06tYUubKCoIwbVgzMnnIhd825bbd5dM9F/sXly/Vhs/f2gU/yNH7/tTurf+/f+Pf7yX/7L/OzP/iy/+Iu/yD/6R/+Iv/bX/hp//I//ccAO9k//6T/NX/pLf4lf+IVf2CjoX3zxBf/+v//v/2t9VmvCh/PKh/PKNETWnBlT5HQcOEw2b6XWxhAjc0oMIZJGBa9LpY3x50ZedW9o6w1s0iih0KSRS2bNC2jzjWwwQQWvi7StyIi/lzVtWnQ+DrMtIK9lN4Ts+HLx1wzBSNlpFg6TMeHS4FL8N8YNbn/sTqGwKR5jm/CyfmDJzyz5TGkrvdnOJFQMp48hkeLBGhNlIpBoobKygDvOEAIhrsQIqLKWC1oXNAqRmSQjIU47ldWztVbFS1uKuiJF1N70W0nd0UujhEaRDFpQHbkvJtibSAw6sspiV11gcFJI1JmkBxIjEZOiogHFILncDFrptHNtlXVdqQ2e3r1lvVREAyFHaGJK7kEYwsib4TWlZT7UD5z1hWWNKFdKFdYcXKoIrw14LKqYYrRCC4qW1tNSZ0bvGGCvTW3BaDcZvYDQawj9zruyDF3SCM+qXMncaoBQisFooQZqUhj27r/+/hbXNKR6fpJw0lEPwHrPi/hxG0N2PB6Y7k7knFmXqwUzqznt4rOZjJJcsMquceeVZmtYTHQ4iRDTsMntVApVCyEIp+OB2mwS7zVX1mqyZdGJF63djC0VU1lRERN0doelMpgzEp8jFSIhuNisds29QClWZ4QK0ZpvP9am7kzaQqNsmVwII0N6ZIhHxnRkSsZ6PaSJFAPzkEghmCp4nzfWPUIRE/BVualpY05KoJJ9PHvrgEBPCumuBw+GW7Ngsjnkhhopa4iTN8/7C/1aaFd72B4/7Ki6WeloTtVKaWVjQDb1viz5geNy+bgtY2VvJzDnZ9l98P9+xETqt99J/df/9X/Nn/tzf44/9af+FN///vf54osv+A//w/+Q//w//8+35/yn/+l/ysvLC3/iT/wJ3r17xx/8g3+Qv/t3/+6/Vo8UQN/vio2VPq+ZXIw2upbCEDNrrsQQmFNiDJGUItMlEWLkMJ8YhwkRJQbLjLZM2KPAJkppFuWVkinZCQtqQ/2qKmXLlx1a8bEIMSSmYSaEyJRODPG4SeWARa4CoI1AQwk0DXvflggQzbnkFzu+EC0zHAIx4pmRKQ92ZYHi3e7X/MLL9YllfdmUqFNITNOJECKiFlmGm6Y+c1IDrRZyvnqR1qAYCePWYGvK+0IKg2VOwZtAg6tK+M0RCyLp9k/B5zQJXSapUR2GxBhDEq0Ab2ExY5y5Cwmk8SIHa18OILIyxDvuhiMTE6k3THsnqjjk25U8WrVMroTs41QuSDPVhdgGRIP1XvkCCCFZFEvYJpzWahmS0Gcn7YX7vijt+YJGRVqhRhOR7cZeXUAk9CxIMAhxg0twJ34Dyyi9nk23WmYgukPzwndwZmQrxFZo+HBDwv5GHZ4R3STvlK2Lhe4YY/93CAQP6EoxKrPpubnzCqZ0kNLIMExohbqcQStFVl9D1Yy8KlWstaFVpa7uwKMZ5Ot14enynqeXZ87nM8uysK4ja84ISimJJLawbJqBw0euxtI6yaAZrKg+Pdf6BPv9UjeernzQLy5GB9gZjYGQAq3Cdc2spaKMBFGGaPWnKR44xANzmJniyDAkn6JrmKxp22GBQanQlPyyUl+K1canAQTPWFZiCJzGN7RWOcR7BpkZ08w8HK1txRl/pSwEbL0WrbSuXK5d8k1NDJpI8P4q7WLFzr77IYhP2O5+U2XJV67rlaaF3JYeCvvatL1h8LNDzb6fBSNFiHhLjl/PDXBg16P5UR6/7U7q/v6eX/qlX+KXfumX/i+fIyL8xb/4F/mLf/Ev/v/0WRsUKpBr4+nligiM18AQhRCFYQiEIMwxMcTIEIR5EFJMvHr8hOPhjiHBNFoEFaPh/BKsCtO0spYLRVdKNRqq1Xo6W0/J2hCJpDTaYqigVQhD4nR8zTBMTMOBMY5uuG8yHx8DHapFaUUizaPxQQAVcjmT25XSFopWG7Q2HogpgRodVul6WY1zfuHl+sx1OfP26Xss+UJMEIfElO747OFnGYeDQX2uyxeTOamoM0ETrRVqudJaYakfKO2KkmlczQFFM6qigznloDBEJNm/6VOK1Yq3bbtflvbvTj3RyLS2OmxqWl81Jspg6gancMddiIySWMKZLCuVC40rh0H4ZH7FyMRYRmveCIUYvQgcgqOkQsuCVqG2FQmZtjRKyEZBl4ONcyldVzEQ4kgMNu5BikBRalZKa4QYGGL0zda7/L13KoIkQVsjJKVUcyTNdLvwocVGhOgyFGR+qCbQg5+P7Ig6TNOZndi/veKtQanSWOqCBKFJhWi1p7A5Oa+vSDWNPQ/1usmIXn8cEKIILQZ0SBAC61IgrG6A7QBCTIgo43TgcFDy2kdqdG1NZ7xKxabiet2xFVo2qniaIiEKH55f+JXv/zrP52fePb3n5fzC4Rg5X0e0JdYpELWiSUCsnaOJRe/VazTSQEMjaGPC0AjVgVLN7arTKn2+rMv7WBTSwFGGYHPHxkS7Cs/Xqw3+05kUZ6b0mrvhE6Y4c58eOMSZNA6kcbDstiNqUawzxVmmLVfWby4s764MhwPh06P18elK0QsxDryafwZQQwskMaaReT7aPhWD1Nf1wsJIzgvndiFntdpzMzJCihacxTBuIrZJvNfNB4mK2yIPrX197PXA58szTy9vLZhJt3qjEGIiYXJQccuQEgkFDT7G3pqQg5iIL27P+p7Z2zN+88ePtXbfVjX1R0NddsYwlKCyUUmlWYdzDUaMSLExXhdgYBis+B2CYHvRfo4x2EJuRpiorp7cN7UhNE4sEK/ndLw3BCuixpkURmLwPi3LJegWyPo8vIPedcMsifIo7KazvNHIdUWlstYApVKxuVIbnKXWD5XzlVJXX6jRxh7EyBBnxnhgjDP7mIpIDNYFHzDFCkEgNIIEqqmP0py5aJi0007VolTpo0a6Rd0q/s607DBjf0aPVgWD24h+ZZpHxaFXCZnEIT9JDGLzqRCDk6I4jOuEEu1BsX30jkX066jqFHsDo6x52iP5TcqF3TmoraPoStiy3/7bhfgDpyyOsDixQcWm1vpxWNHDM6hw+w4//Lhl9t9ma9sf5aN8i40MoM3X616g7tmt9mxKdxrC9jfXQdJNEWHP6hWDxmr1xt/tVsv2Pjik2bR6D85Oq++QepOdaN+cqlybETRKNYHZXLLDqXuRvZORmg/BVG9X6Del/wc3r9kXAj3r7ZbWencM/rIst+3XkA5bWu+ViZcIQQbb2zIxBB/5EkzVvdd/tnu0f5Sdd67oanOWtNZNMWevK1sWPgSjq0efjhXEwwb1sTlYfcmIKMlbU7I13zo+2Lz/SXppQoxrHNRKGN10hr6wpMNytj9qq+Sykks2Wa4Nm7P9JGp1sW1i9rbCbtfTzQoShzV7H5fekrZ+88ePtZMyFvAPp6vV+5+CqNF9BUqolh0JDK7K/c3LN8TwgXEMHA+JGGAclRiVaRw5HAwK1LCCuCKo9AjF/jbIiMpIEKs5BYkkJhIjKU6cDq9MTHKzlQVlwTasl2ilbWSTKEBUg/SCGf7eoXBdMk+Xr0Dg/RqJUYyAcDM9TLFxAs/nJ2KIvHn4jBgjKY6kNDCmibvpE2IY3KD55i2+o9Q3JyAkkMgQlRhnVItnkIozTLBZEu6kFHOMRH8tG9RxO/W0dcp2DH69IicZaNpYWFnJFJS3NZO08rlMHMNAawfu5RXZ+6qqVE7hDZOMJI2e6RSDejo1sEMuKFLbNjRSm0WRpjs10MLBahcqGOfcKOetVSZG7tMdlEYkUluF4AQZPAfpUIlDes2VREi70MkGeQrbQEvEGyy3vrrfAAbxwvpOAby9215v6A2UKrQKy7JChWW5sMQJkcFp7gaFGSRt0lJs2YQS3ZmYcYRq2v3mSBRyLhDyhgKI2CRdBdZyIdcX1nJmKRdqXWkxkKK1dViPmSApQTSlE8t+lHVZURrn5cw1LywlU1VoJEw5vSABsi4ELWgPpgJmdIMFN+b0lNYsoJia0hy07RTtEKKTRBpH7qlt5bqeyfVMkbhF/telojlwXlZaTYgOHOIDkYmH8RWvxzekmBiH0SW0oFWrq/UWCBuqKLSlkL++0JZCW1zVXwvX/Gyq5FLMKYVElMnjPXNeokJdKibPtRAoNgZIDsQ4cn+EecicL+95vnyDqbg7ZVxXmpiCurZgcmmIZ7eWMcJOxFnzhQ/nbyhl5cP1Pdd8JiZhiAkbKWVBUaMh6jSTKgT1sSYOKfY6VHCHZMRCb+Z3xnP+nWrm/f/3YwveZf9FZ5ZZcdgimup9LSKw0rHphilpR07rQIwwj42UlMM8UWlGGkgVCUqMNqE0SEBiIAYQmZFwIIbImGb7LkcGOZDiyJTuCRI7sOBGKrMVx31x9JA6eENoDDYqwv7kNNy8cs4vqDauxaKT5EZAbsLyy/LCZTkzjTNv5k+Zx5kUJ8/oRqZ4QiTh7GNv5r2hvNLp2BFEDS5gwHq+kkfhHgH2z/UorGm1fiH3yuLphUjwmkqPGtkyyCCBoMnvk/Esq1ZWza4VZkMMRxmY9ECUSmaiSrPr7DFnU29cbJ2sjGe1vjaammJHq2gwg9IksFcEYctLmqDu1KIG5jiyhMGyKdw/t9b9ur9Stp+3vFHAxxJ9xPzVsMf+eMSu+0u4eeP+ihvXpdz84+YpsmWMtRYqNuYkl2xtGZ235owya9x2lmrQXtpyWnikykAfzRn6OvFJq60VVLO1c/ij1kxtmdpWiuvPBe8dbNqRVKtv9fpap3Vnl8XKJfsI9uruxjXaRUGsrlVUSV4nta+eteysUqMlVc/W9kwK760ytmpinCZKg6VCc9ap8x3JxSgkuRSaBkQTQzgyhiOHeMcx2b6PIVlztbARr/pqsoTCGIT1kmlnF6EWULVsBQSNzWtOgSEMZuibtWiIitHJUc/ymmt0WqOySXuZYrwNMQFTc+iqHKZmEzohxuFOudmj2mx9raXw/PKBtVy5lhdyW0g+G6+vfbOdDpt65q7N17Tua/ejGqp/V2cWG0L1E+KkYN+vHyePHab4+Jm9r6X3nNhiaVzX7CKeSipKqbAWo37OM6QEp+OJ4/HeiRDOuAsTQUwCJkXT5DM69OxQmi/WDT/qJWmPYjy6EP9NCva+RgC1pr7zcmGtKx9ePvD+5T2qzZo6g82qSj6j5+50R0oDx/meMR0Z08RpesOQJqJTy6NERJM3dOq2mLYFJW4Q9it4EwN0c9WvdNszI20muaTG2rPaSXAQ7sZo+3l2Z9V8c5hsAUYsl5EilYt/biOwCiiJOzn5lbHZyIc2I9WaCIdkPF3JGV0VAqSQXDnAPrtqY22didkoLaNRGMIVjY3UEgmj0dv9hdPhnpCUFmD4MJDJVKywpBt8Bj4rhp171o2wn/dG/7Z1txvPsLG4fqN1/dEvbh2ZeM+/Z1i254U1wCUINQWWWilth8UE9nrEdi/smO18xGjdGhGNBFGmFJkPJ9I4E2MkiJNd6mrOHFOWyCWTSyHXagQm19K0a3TTT9aDxBtY0YrvRoSoTktPSZjmQBrEpwM4o60qJWeyrGgQpsmnTrddq+8HpyGoimfwzUggEmmqrO1CqVeKrk7Rr1uzc/Pp20kid8MnBI2cuGdgZGzJZmjFhiQLdjuI2Zx9KQp6bWhttHPeRmUQPbsfEjImY8iq1TBxGEw8CDLoTWzWFxaEBBohKCHZ+rOyY2BKJ+6Pn9N0ZanvqM2yKG2FFsQZ3+qxsWfgfv1bzdRWueYz13qhtIUqq0lAiWWjqCJ4FoqzdjdIr3pA4QQ09b4+R1VEvT7abTBQ20/A0EO2rr3++OFdrv1pNxFy8xueEsRgWcT5aooHuQgpAlIgXEhReLiPTGPgMD9wd3hNiiNzvCfKgMiABJ9J41DgICPJaye19xVshyTYZTc4UrGamUEQgTEeSHEg1wtLeSLXzNP5A+f1hacP7/nq/dfmpJI3bWIljnmamI8zU5o4zg9M8Y4URg7Do0F71Ra8IEjrTtKzS99cgpo47Ob1vSdnu7K9dmRuy4qfpr2nWsn5Yk2czKCmIj4Pk1Gy+w25vVs30F/f1EeSESTEoqymUCVwEWzMNqNnw5mqjaFNhOzXbhyJIVKWhVUrCIwheQ0hMBAo2KYFKLmylkpKSopnUsqIHOgTlqJPFH04veY+3NOiML6dWHSl1RVtnQno/69mhPtoe3vYeBLbnB9nVEFMWw4VtMXtqm6kiO29b9a1+1txiFfEAgTLnqzloYVGC8qY4JoLS6tErI4TJDD2REy90ZXeSGHPaW6MlEBQ5TAOHO9emSxSioQglFKo9WpHV+zclvXKWjJrzqZz54yzGp2WjDUAo71jKNCcERaD9deICKVY/XecAhoT42S6byIWsVcCmRXqQktQhmYEAGXrxUmmHWVffi7VMahEAElUlGt5plQTXrbc09c9StULSmYIr5mnz4maOOWBoUVokZYt08a1E1V7r5V0mU3ay0J7Xmlro+WCVkWGiIwRGRNhHtEo1KsJtYL31fWgo9m60uIOyuG/lApp8MxQE5HAcXxgnl9R6pX3Z1jLmdwurLXZsYSOJtl9V+n3H65lZVnPXNdnzuWZWhdI2Wj5QakajB0ZO/mkZ1+WrTX5KOc2BAQ8UB9srbnzVydPrOV3SGD2d/zxGyVQN2Fq9/t7pGvPD764xxQZkkc6ros2j4lxiIzpwBANxkthJsoAcqMH5qmz9HlRfhw/BOMQNudgz+nRpcFOtRcu62oaZnUll4XSep+GboVPO4ceExuUYWSCyRrqcGbNzbXYZSn9ePzNPNByw7c9gf3ot/z9JoFny4h0o8MXj0jZr8l2D8SP2KEQeqOQ+OEZPGd0+ISKEm8UL6Jb+KTRZX2cjQnej2N6ZSUXJAgRa6pUwaJtLOqs2tDSqEuFCmW0xsiURlMnuTkmG6niaXcnRdxchX7dNhhTbET6fn36E/wcezT7f5E63cJ6ut0zzzhvAy7Zy9R7z414HxH7BNrbe+nP+Wj99x3RSTFat2h5gxukT1iON7R+e7/b/kBx6nYMJjqM5I24YalFJ3bcEh2Mgo06xX+7lt2I9uvWyVFtu9bb+tNGV2/f6iC+ubsh3s7R6gA3F8WbY5tF+jXYRessNEMgvA9PLDNXxYWYrT/LssSbK9osK9Wq1ivnPXUIdv1ShOh1y05iaTeFW8C1n/qJ+++aBzXeyiA7tCiCK40Ya7cPgOyhz/7l+b0CrpyT68JSLqz1StVMpbKr8+3Ejr2vy//tSFRfg9Yft++FbSYagmjfEwE07Pvlt3j8eDupj9h9veURzNJ2SMMXuN9s0/3yv/tNG4bEaZ4Yh8Sn93ccp5F5njiejoQQGOJIDIn74yOP8xuCJKL6TJitOc5YM2w3dl9wu1sIZoC7VNMGN/raa8qlvNC0sORnXpZvyG3l3fkrrvlM1sYwDWZo/bVDCAwSTWU5HhnlyCgnRjkhGmk5eJpvEeyt3elVjqZ7lCnajMKLYmwHdsOoHbrBRStNNT3nTNNC0TON1ZhAKggjIZ5IMVFqx8ctNVO1YXG13jAaETQGcrC63ykPhCYcZWTUgSCN2PtZquHiKQpjsF1c8pXalOuHDzy/fUsaBj47fsFhPFCkMlDJWqlZiTVzeXriw/snQgrkZSGNA/IoDPcTQXuUCmvLlHZlrQvam5w29yBUn2tUl4LmyjTNHE8nQLmuL6ZR5ptSeyINdJmZfo1tBd8Yz1uKrvagpxtn2QKg7ohaFVoz09JH9ZTmf29dSSJQdO/PEz8G06IsvhCLtW9MI2E4QhxshrMIcZhIaaDUK5IjrRbWfHVZqUAaxi0oaa2wXr8h52e6urq4+oe0st332pTzeSHnwtPLC2uplOqEB7Eai/W4CaVCC2KkoWhZsinoW5BmNV3bfy04DBcGh6WK2/vgozIqMZl2Zr5ULsuVGAeX7Aw2loSIhAcbe6OBWMwllFIo5YoMEeaARENGAmrZz9Vloi4VlmajVcQ2bjyMpLuZKo21XK3NZb1S1nULWAVBqkDznrvaA00jutSqXhMNjn5EqxdjNVdxpQqcaB/EB69KMnvQMqqVUlZqK7x//h7P529omil6QWkMXuvtwYPFJSbbFoPY59rO8wW4GYtu3txZuppN6MHmgDAas/ZHePx4Oyl/KHxEO5b+yx98kkcATfrF9SURhGkamIbE/enI/WHmeDzy8HBPCAlhQogcxjvmdG9Opm6tjvbWYrjsRrVld1h7hNx/CB6c2sF2rFxRV4C+cs0XLuvZxrSXC2u50DQSkkUjgV0PLYVISgMxJKIkyx4YQYVa5SZi6dToHt3fmNtuELtKZ7+Iwm4sb9In7YaxWeanWh3Dz5hEbEaJfp6B0Ix6bK/3+MwjZtXmFDicgyGMMTAHq2kNJJL2AnqlQ1VUm8YR/b1azpTaWK8L15cL42TZnGmn+YlXIbVkRmNV1vNCSIEw2nyrcsqmIccmYuMq6K4cT4dHbxZcdy0FWlYkWV0SlJWL+/oenfuPNznMvkR+MLPyzKM/o5NtPMja4lw/nN7I2u9lDe5ztC993Z7fVUBkO66uF1etx00UU2tIqIRtRYeYvC/KBwZiJI3Wqu0Tl9gapxOtFsr6bMdzm4g7m7Hn800bS165XlfWnE13Tvv5dbigH7f6+whd7b56lBfE15MEur6iPc9El3ta0rRsJJ4QkgVzqo5UiBlV8U4x8WnO4qQZqXa3m8kRWZ3MBghuFGvF533hWdR2wQEhpEgcE9oyWooRJGrZHHGnJ1CtFoWGvYaM2xm/Z7iaui1W2YIhexdHecTZjRK8DuqoRyuWOdXMZX3mvL63wNQb4fXWvvnC1abel+YrQgUjVDl9Xz/W0AwyIN7HFiVtDthGlvwOjY//nXqoY63+j9ucCsTUmGMMxuoKlqYfBmvwfby/4/NPPmEcB16d7jmME+M4Ms8HWwA6YGoNB/vZ09X+uR1y2MdV3EI2naThjB5wWExpJVuvTi0s2cZXL+UDuV5Z8oWX5b3Ve8pKVO9x2M/YI+HglaLEHE4cnSKr1U2QedDNi2+Zekf5/Bh7n5LccsU/MsZuMBsO7+FClj11D6YioN6kWc+02FjGxRZ767CLumxNL652tk+HD1waJillVrRCXgpSGlIVqZ7J+NTdRkWDqVWU60rLhahwPB1J04ikaKiJWL1CJRCHhAqM48RhPqKhmRbfUnn3/i2XtTINE6+Pr0gxunuziDLnlZwXQEkSbfLqcCRosF6rotyfXvPJJ98hSCRXk6x5f37L1++/R2mFpV2pzvAi9NXSv27Yj9sd29ECc+x2P6UHENuNNMi4qs2dKgW+//Y9y1q5n458enq0gGbTrDQIlH4/VTBpdnH2Z6JpotZALi73hMFJio9Nb7tRsploGLGh2iiOl8uVl+czMQXSGJEoxAoSLAurbaHUyofzM5fLwvuXF57OV5NF8opurUouSvReRvH10swze03U+yFDIIr0kWWEECxIUZv91lp31NaAP033xDoyDvekdN0Aw1v43BqlFVzPsq0+FboqhIZdHIUgZl9U3MF4PLGNDrKAI7dqyvGtUPwaUsNOaKqJDvFae0Kx2hcgkrdsW3s+rc37F61PyiYJ23j3tVauxSYmhNYduwUhpS6cL+8odeVlectSXrbanpX7laaJoJFBHfauFry0Gmhp/YHgag+9urZpCkeG4FMSqq+f8DE0+ls9fryd1BbxswVchn2Kd09b972IMEwDh9kGB2o0Vtz9NHNIA5+9+YSf++mfZhxGxuFA7JFijLZYqo0uCAyg40cY/6aO7Lbi44vvauzS2UuW1ZRiM2lyfSHXK7lcOS8fqK1wLU+UemUpCy/Xi5EkxLXP9XYJdP07UwgYJHGM95ziK1oLlkFx22gnW62pO6qmexxvjchuJH/IQfmm0GYq8WrF3dag1WD4uIotXJVNiDelwpwfUaxBMcmwOfXNaPgtVFchb9731RLkgxmouDZkdWba5syMehzVWXJNKS9X2poJKXK8vzP4bjAnVYNQA2gIpDYgITDPB06HlVUzz/UDpWReloLynvvjPccvDoR5BvHpoqrkvLCuC0My43caZj45PJIkIQfrs3r1+C2+/fm/SUoTMcwEGfjl7/1TluXKNZ9ZrotF4bE3Z0I3jJsT2q67L243cHtPpRh5ogchCuoK37VVLlfTQPy1+g1fvX/m84dH5jAypYHjZLI9JsDr9aSOYrYA1YrdVQeCDpQaWLOpKGxOSqFUU+v3w/OG97o5lVIqzy9X3r9/YZgih3sTWB4TxNbIPvpkLZX3z0+8XBbePV94++GCUhmHSoxKKcpalKRCHCxoaNh4eaOKZ9Psc5UYFWEQ9WbqQAoRghlm2YaGmlLGOM7UlpmGR8Z0NThXC6Zob+cagl1rbY2cV7gWtt42EVitsZwQIBq83qoFNUlNxaYbKHNSlu0rpndobBCxNowSYTUbo2GFULdjAiVotTpUtwUSCMHVMizeMK09NWh7qYVrzobvrAavSShIKKz5wvsP36XUheKMPmnWvyhOACohGUPW9Qe1FbOFEWK1DHm3HWy2Q9X63kiBQU6eYPoadzj2J8JJ/RC5b/vZ3ZUIMQRiDBwPM3eng6Xxzoy7GyammDjOR+bxwJAG0uCEg2CaX6qG62vjBz5svyGbY9pa8P0YtrXpqTl9aKJpqvURGr2HSjtTxrHaGKwnaXAqt4lj2i2rPvxtipOphEcbiR1I22K4vTDSI/KPTsFXteybqEOCHUraq73Qa2/2Ff30nOa7faZg8jcZ0yLMBmdIsghqI1Dobl87dEF3+rb5+rEre5a6LWvpf9vjN5tfET6KXJsX9rtDtmwxEAKkITFOg9WdSkS0sRalFOvZuakYWa4piSnN1KEwROtlO6SZu/FIkkTAoKPTdMc0HDcnJZI4zg+8uv+U8/LC2rKfo0OdnZYt1ru3waH9jD9edn4SHea7ya23Avxe4C61IlKcGm6NpkWrZX6dQr/BkD3z3lArNyhWs2qtWC+O+DWq1cdLdOgWz7TZ3pcQLNgLQlVT6y4NtEZKdXJQqaw5s3TtTR8s2dwHaPPEOfixejbf0Yv+X/O/iZizDN5svRGTRHaHfvvVugH1Cd/ueHHdPyEgbVfY6Fuj76zQ0RL269e/1Ek3vXy+KYJ0RMJ7lvpxsJE63JBrpcs40ffBTbDq28A+TtU1AG2MTmmZ3K6s9eK9kOY4JRZCsFpiKatP7PbPYS8PtNY7mhpVqiEhPeMWfD/vB9FJYwimYCMwxIkhWbkEHYFoTOYYqfEnwEltD9n+Ry/MI0qMkXkyQsTPf+fbfPvTT4gxMYyjLSyvc5yOd9yf3hBjcg27REyJYRippfF+eaGuGaKPQBbYSAWuQC04dII6ng9WZ/JCpzplWQ3iMKLBM5UrKo044uGhQU8pjDxOjwQJTCGRJLDhVuDKysqYjszDnfVFxQeEI13uZYMK1OcNuY/pe6GzpOR2tXudbEu36OfaI1Fxn2zTeLUJVcygS0juRK/ABzSsrPUJpVq0le7NnKhFfR2yMYkbY4EZad/Uz0WTwS9RaYMamWETxrSmZw1CEbvnchgIU9o2v9JsgNwa0NSVHISQBqLC3X0jTpB1ZSyV3FbevruwfLjSdKVPI8UV6I/jAz/1yc+x5jNSV6RlXs0P/PTjdxjjSIhWu0iH10ynb1trgkeY3/nsd3H38AnPlw/8v//lP+Lrp+9bHeD6wTZ8jL7pq3VZbcYTg2DC7oR2K/vxHtBWbfSFf6nCkgulKs/LwrvlhakNaBJmqQQxbcUO96FGYdfSaKFSxfoEK4VWF9a18u6pEmPgevnAZbl4dl3d8EZas7HpRlGHNB05PLyiceVa30NrJBFCEXKpXNfCkivfPF94+pBZ1kJZbf8UMLg3Y4MbgZJt/aRYKSkbuVySGf9W0VIpAWgXaoJWmtdFAAaMSBDMIVelriu1ZhvwqZHWMrWuBgWOAzEeiToQs8PNYsw8rY1WDAYeZCBKpKhl/t0abb1wXtMrTkgyRRxrpC4lb05Iek0Q7x/S4lmUBa/2xl4pkgAhOjxugVnRwlIKS115Wt5yzVeeli95v3xJa0rJBteHUAlifWzL8mLv7dikMTftBEqrFKAEpQ7mkGOLVmJoRlxCoNUCTRmGkXGy2vhpfmCIE9Nwz2F8xAY3Jpw5BiIkflIo6HL73f8RbJHHJIxDYppG7k9H3jw8kGJiGmdbONUir3k+mKRRTMQ4IyGR0mBMJSrC1RyMqwTYR/WQ02263PxezLBsc562RWZDB5vaqHQlo2R//v4+YArGY5iJEpnDwBCi90zYaQZv5h3TiWk4kaLBSnS6tvRMqHk9zCO9jxxQb0DUPaHyi2nJoLApsvu1FZf7ETGc32iuweNJYzqaCnlGRWi6UuqApmo0bnrUt9tZi4MdxvDueHuiZxXuhLYXbnFr11yzw5Nk6gZaK1qdHNOsPmKNLHsvm0hgGBIaR2JTcknE1kipg0l7podnsTEOnKY7xpggX6AsnIYjD+MdYxqJaTYm2XRHSEeQSJ+/c5zvGecT4/ie4/zI8+WZXDKqrm7Pzk7dm539dvSsZL96ewZ1c89snfXvTjRo5qxyLSw1Q4DcCklNf8IJWjf3w7TqRHeFcBt4V6i1sa4G06558XlGbJ/VA34T0DDyg8RIHEa0rdRsQZpWg+Nzray1sJbGkjPXNVOKbhmUMfa6bh4+yE8JTflIyw912rkFeKqVEgoixXu+9rXZ72c/V61d4xDwumPT5lRu1+NUz6RaLyF2DKF/dV3Hm8btfrekr6ZO/e4ZlPqwSDs56Xn7bSpL2VLT2wGBKrvRux0BYuQPG6ux1itLvbCUM0t5plUlr+6kxJyUtmbz8dSUdSwA7XuPrfkXFGnV1mfDerXEoH3UmJfalJRwgsTAGI+Mw5FpODENR3dSnQ5ve6umn5hMyoxWEGEYrCfm7jBynAYO48ynd6+YholvPXzKabwzHTtXKzcJ6sA0zxzmI+M48+m3fprT3SOXy5nn5w+sa+Z0mojhB4QyO5PPe0aUhgZXsvZ6SW90687CWDde5OyRkafXWotnHEoUa0Kd5UCSgbvhjjGM7DPdFZXqmEygrVdqUEq4IklARsSfb0a/sRHonAO9UfNxk9/Hl++eis2F3BqE1rXmbKNKCIzTTNVIyRdCU9AJ1YnaAi/lA8IFbRHahEggaTSh/86yFMy5qBq8gdU61CGXGCODO6CgHVK0IwwBvP3CBwcKUhNS7f7aW6pHiva6Gm1qbKNAsJ6gUWaiJl49jgzDI9N0NON6g7UHSZzGEzWaBmJqlcMws6k+V0/iS4H1BRtjvxuqhtJqpqyNfFWWS+V6KYgoOtncru5gAGKQzQGjt7XC/sv9Htnfw/b8GMIGH6lWLpcz3//6K6bBsol8ODClxGFMtq69ibuqUlKlygrXr4n1mcO4UIZKjJFSJ0IIlHqltoVOlDBnZZl0qYVcOzHgQuFK0QuVM0pBm9UwLmvj/XNhXZXLtbJmW97arI+wlkarkLOSs+2X2hrShJwXhESMyZQmQtzmK2kMFhRpI5eF8/JssKSjGqXaiB3VZuQMHxMT44DIAfEgMWkkVAi1GXGnF320A/j2vdRCK+ojojoU583bXS9S1VmLVie3pmmvN231Zb+X4QaHpH50v3cov6t2GGEFVS7lytNquolPl6+55GfO6xN5Xax3rjrxybOmWirL2aW/RrFJCTEwBrOP0WF8o2WZqzBlihUJB+ZoI3+GeSRKZBwPHKY7Yhy4m14xpJkhjYxpQvGadZPtusm2ln/zx4+1k/oI7RBhHkeGFPnk1T1v7o/cT3f8zON3mNLEfDowTmYkjUIbbDKvJMZ54jAdOZzu+Lmf+zf47PMv+P73f51f/pf/gpiu5LuJlJRaMrV4lOp1pJ5JIM1YZnR1ZltwjbovODXKqDW67rg3raDFUvsojRRgCJFDODCEmbvxDXM8gBakWUGyqWmArfnKdbkgsVHiBZoYk0pGQ7ZvtLusV8amZ3b6fIcl5CNqc7+6tlk6dNbrErYzfAHHSBxnQousOlML0BZUZ6O4Lk9mxOqAtJlBRu7SAzFEk2YJO46/QYE9+0RQiYSYGJIv1bYfdPdXhiDsk0e1CVINalM1yKdnXxpchDQILRQvqMPEhDKShoH7+8GEPuNocIo3K4aQOI4naBN3NGbsekKgeoZra/HGSSWBaMoSDTEntVTytbFeGtdz8XEJSkyyQcUi5rSAm+mttw+52QRdnsmumTkpMwFdYuh8ObNcz4xjYhgjlcppmgjpQAxYj48oNTayG87l+hWyRPJUaJMSwkAuRxdTzYhkN369PmZrvNRCbqY+ktUcVNELVV9QKlUTtMh5bbx/ru6kLEvr6atNe7FzLFkp2fKR2ozlmks0wdRgTDhzUp0NF2mDwWlrvnJZnv1SGTJgTrRuw/wM1RBiNGMb1dTHU0tElFiVUKtHGm3LbJtYX2GuFlxqFFeI9nqaYqw8vwet9cy0Uql0XT3fUB5g9AxZoVbEoZOOjui2d91pqWB08mZOannmml94f/6Ka35irQtr8WDCVSvAmKFlbSznRq3KWIU0CTJEwjASY9jWtjkpa86+1JVcVlI6MMQjQ5q4Oz4wDbOXHu6JYeAw3jmL1HraVGHV4ISX5qDrT4CT6sVjpZn3PhyYx5GHwx13hyOn8cg4TFsz7iYuuZU6e7FabXhYXji/fODD0zc8P7/nevnAui7UuqCagWJ9ErJXUxwXAxraeyh6BtJTZTqMVbxpshti3ZxHx6W3bFuV1jINH9OMyydFx9XVIqgYkknKgMnUuLHfxTaz//vmuGTX7LrVnvBfbLDjRoHtxeTtCb2Au7P+OgQYQiLFiXE4UkpmZd2cW6mrGd6g1roiRiluKtvh3dZdzAf1Y/Zj7BJLDuneOqy999X/0T0w/b3ZI+HNqLthdAgnSoStD+gGnFB3JA7NdjVo6dfQszSlv8aV+VxdVvw+o0ryTMyIMdbMZJmY0odF7/flJmO6dVS38PYNTMgWcOzXpj/LiufKdVmJ8YKoOksxMJoAAn3ci4rL3kgzwdi6ErVRaiJoQqTYPtDuRNkif6vl9WyhUFv2rMEddbFem3VtLGsjry4FtJ1ep+1YBGLCthEJJnAbgovv+BosNRM6/b1Zxltb32t9zfoF0Q4Llj0zFZsvR7BM4bZfKTaDPjdsut+L7dJ3Z7Fvo5v4ztea0uukBk9Wa51wxMAg+Y/PHUz+yNppug6hLz7CZl3Y3Jy6QO9CKavVCd2hBkzGSNTaRYYYGaLNfgqHSmuQJmsRmIaB+8O9TS33fRR8igIoYxjIdeUwWa0pxYEp3TGmiSGZkHUIaR9bhNXgbiHgpr7zfijw+o0fP9ZOSruhb415PPFv/NQXPJ7ueTycuJsPDGHgOJzc8HjtRINrs4XthpeSaS9X1uWZ/+Of/7/4tV898OH5Pd+8+5rWqmGwGPdnCJ4hxWLZUw/+aKALXeZH4aYPSGltMcJEK+S2+kYxUcdWCi3buOhWodZIIXPlPTVcKeOJpgMpDhzSAYDqGVXwHqTaKtfrV9TWGMaZYTyYUnI0oVuV5k14XepFQAY69KfdUGs3tmZm8O99S4Qg2/mqKg1rRlQUiYPNfBomjvLIsr5wvb7Q2oW1vnDO72hyNELIMBLVsDppbRuvQu3OTxwaFapU1ujxpPbC7u6ENsmiPg1Vsb6s7qy6RfEeGeur8VA39DOL9CFxKUxmUB3WCQ7LBCoxGVwbbzdY8PXUm7ODejCjFkCEiFQr6kuDh/mBet9YlpWv2zc0KnltSFTGUUixFyhvg6AfXPy7VexBV+u2OGAeJxg92BhZZiBzhS+/ecc3797zeH9kyY+MQ+Lx7sA0JqcvFzaVdCCFgSSREEZqayYNFI3evREngCANIdmaVqu/5nZmqU+0likt0hpcViO0PH2ovH1XqEWoObkhbqgXyoIz7lpNXK/KUJVxtGPTwUfBaKXxjDXVBmcCNqbxbL3bNFOm8OC0tUapLyzLhRCFmBIhBMZ0R4pCWa7k+ow0ZWiBZJ4PZ/rQ4VRbbl77VU+A1KR/+rXrQZfV+SprWx12rFudr1XruQuuXWicLw+ANHoTb3dO1mhszbmFgkl51WZr7prPnM9vbUhrWWm1ObFjBImITohG7qdXnI6PFqi/MkQlJJvwMI8Tb+6tP9BGfpjTt/EhwqYaIwMSZyQEpmkiRh+eGq0ROjqqUWqjFFPfKF22DHPYa/1JUJzo4qgCQ4zcH4883p24G4+cxgNRrHGxiynuca989DbaGlVN2ufl+R3L8sL58sz18gFQhhiJ3vAknkmEbURAj7C8RtULnJtKw55tdOn9PoiuuYO9zaa602vaqKxEFcPMqYgMLi0CNtHWMqkQkjs9i3glNCQ2gg5bJK+hY9+7hpc1GXdkeKd82wt6FQU2vTPZ8gbYl5tHrD2SD95AOVijpzd+ttZ8fMNoU3yjJXfBFRJu0EbLOLayk7qDtQL1RuTomdTNoevGgvNDVTbDIh9Ftb1bXm+ebDFs8J4ouwf93jrzqjMctywPd5ZyAz8au1NvamAbh8WDnSENTMNMisNmmJsnux9PK5WPs6f/642w/yS+wu1t9+MieBahLKspuA9D5LguNG0c20h05YXW16uzG2vLlLZ4sDZZ3ZS4Ze193RIM1Nz/q1smpZ7pqAZKqeTc7Gtt1CpW79nOpt9bcyyqSi0QeibVlNhchZuGKbEa01SbUEKhtEz0Jl9u9j6I7fdaQCLRd4INBrWpzioJpBH143Wzr0j2+/qD1kTxDMgdlOLqGT2TqrSOxGhjHysjSPDx670SgLicVF9xYfvgWyKGGX28JmdZqzXkRid6KEb9nggtMac7jtOjAXluTyTaBOvDOHN/sKZvVQvmRBKRyYIh35eVSBErmwzJHJRNwQ773sDMSK2exW/VKL8WNH6Ux4+1k0op8On9A68Pd7x+eOSzu0fu5hNTGhmijbwI0dWVQ9/AFuXuEImx7gLZbmwWVDNRM4fBnhGlyxDtprx1sdC+iNlrBw5QYaMgjD1jhWbLoFrNZgzqanN/qm2q1mwRgzHhmmRqCKiYunKlUDTTkR6rr0WGISHSPEWPQDapGh28Z8iFZp2DXh06E8l+UQLbRGFPPnqc3h3MZpC28+/OtDqUY0MCtanh0/GIijCnb6PDyRo71wu1CJfrGVRsxlU8EDTSQjZqcLlAaQSpEKxorKgTEHSDIXvzoNw4CYkO5+rOptDbTKRbjG2sTtsMbHVjHrZG8GAFfABdQTM2icyHz3UDKgMaZ6MBq09BVUxxQAOaTd26VIvIgwh3pxMhBt5f7jkeD+SWWdtC00qtQs7mtPsIcj4yg7+B09rupx+7a8gZb0I2Kns3fZanBpbceHq+MA4rIcA8DcRo9G4HkABlLR+ATJCRMRaCjKRkX3YhTWDZBGZtevR1faK0hSV/IJezOyh1KnQjr5Va+nG7U+/RhHRlQjPM1vzeqNqYqxoVPBSr2QhIV71QQxWUhffPXzGkD7x5/JrH6xPi4rCqahqPdcHkhrIpp+dAlQC1EZq3p2zJ6o7jdQe1BRO9OR0PePpeuYH57N87dBfpoEWygE2V0AJS7axDV8zpca4jMyoCg0VeprQYPMlKRAkc59e8eTBU5XX7GWcpGrs3aCRxIJI4Hh84Hu7s7V3kUYJP6BYYRNnQ/Fbpgtk9eBCxmmeIw5ahKj4KxP2OZeFqY1tqMaqZ1I9UeX4inNQwCN969Yqf++Q73B9PfHp6YB4nEK8/hUhIlpKH3l/QTa/g5AUhdCeFQFFogUhxJ8Vezrk1EL5IxRck6sykm/dvrVDLldYqtS1UXZ12Wj06zN6XUYwhpJ2B1GhSqWJD41qoridnzsxGETg8ECNJE9A8RQ8oq/V66GDTb8NAaBPi40Nap3uLEzkISDBh0J4ddgVoYyntG6/14rwXVbXVrXBb85VWK1OYGDiAJOb0OTrc87R+xcvLl7QqXJcLQSJxmkhppoVAC4sZ1SaburR2hl8Y7HoKHq33AMNkaDbleYdfTMrK6MTbqGy9qS30++kDEJsY7VoFmvhoN3UhTBV3UFdEvSapnYIfkJBoccYidHvO/hk2UFGa4/IKQYTT8cgwDtw/33E4Hgg5kq8G99YqFMSn+aqPqPo4879dh7I5YXHH5CZDLKiybLC/vn+3cStrVp6eL8acFJjXxGGG09EJHH6hci2U9kKQkRqVECZGDjSspzBwoqtQbE4qP1HqwpJfyPVi94NEq1gmtVrBfj8zN1gdnfDjVTVR2VwqVU15IgzuDFz0tJMKRI1UUWrmup5JMfHh/Jbz9YkgiSQTqpDL1WC2JkhzPTtVikKSxBS8j7KPl3Xn2R3UTR8Hbkjc63RkhK2hugdzFszamuxB757lKqGIDf++vU291tqXk4AmOybHVswW+Dy7wySEMINEghzt3kghhkKUyDQciSEyTTPjOEJr1GIDWE2nMFHLwnJ5v/U+GeIc9uXjcEcIQgiDNWlLD1jthwYUJ4vkUsnVg+xoZQFX7+s4zW/5+LF2Uo+HI4+HE4/HOw7zTEzeEOmPj6AZ3XJ3i8QVi75vdO38Sm8QQacf787/JpHdgis3fHuw5XCJkQUsoymWhrfiTXydzl032uwtDGhQQNgpq7VQQrZB3i4oufcS2SIKYkMXFbUhdz4zyfpGoAVz1ICTHtgNgjRwGm6HrNRW4keF8Z6m26OBBI/+s9Ns+9YxtfIWhDGNJsApkeI9S9flahTfMDHECdWynYdBHHZi3YH00eC9FqU3i7tHd7pFeR0WcZhRO4lBMZFRP3Y6TFXp9Tc76witM5v6/S6gJn3jh2DZmvTicrW15Bw+W3Xe49XDy07Zx2RyEjakcRwGurRQa7hUkd3X0CPwzvijG8dbI3nzENkyzL4mt6ieW2dnr21ez5BmxiREIRWh1C7npTdO0CLf3BaCNtdfMyHXJONGogBzAmu+Ujw77I8tkW2CT6/Yrrrf8W2f9rPsiTKCU6SdWOJDEO11tsYj3iyK9VZVlHVduFxfbHTN4CN1ms0U097zR89yPFvQHoh5RkEH1noG5UfnHqRV9YA3bHDzrT1Q92597MjW49cd817Y/uiudoWKFvqFwCYAOxszimItGqOp4zgMaP1do8F9Yuy8EIKXBqKfr27Bta0Ry5ptL7tUk/Y7I/SamAnaqu88fz23aoJ4naz3n+3OvEPbu6LKT4CT+oVPf4p/8/Of4mc+/Y5Jr0xpK5yLQw+B5kbP2XN0R8VGWZabusQWPAmbNI83VtOL87q9H3uG5ZG6kSQyRa1zfcnP5py6k0I3CRKT36mUWiilky7MabQirMtAC41ruBLbC5Ia42hFYBwjF2wYoMTAPN4xtMx5CayrZSGVxU4tXhz6i0SsD2Kfe6XW4+XGXt3Y9wjKmii9TqYdHrDX55xZ1sUvRPP1vDKkRgzCq8Mdy3Dg6fkt17XS2sLX77/h5fxMeTCKbRBhCDY5ONBp5ErRlSBCCokYvRkz+N/7fRSL3vdMKqIMNGaHW5s7yUr0PjbdnNSK1tWiPMnmXsQhEgJRRg9wLghX+hIw0k0CLIMKugJ4Nl6tOtm60fUZ5FtzqDIOQhwCx8PIw+lEDMK7F6HWurnFEPAJsvh96ovtN3NURgQyQ2LO1wyGbg7MjIjtg1bFRsw3JV0za6kokZSsBjsk419YPKcombW8BQmM7Y6hrkQZmZIiWH9UrY21PPN0/crGx8diy7UJtQm1KUuFa4G1dYHwPZhUdxLGxDVgMg7KMArDCMMspMn0HSU6IlGtzUPCTIgRrVCKZaTv3z8xhV/jON3zyaMNxWxlResVxVQb7I4ORJIFcq35XvD9cFM/sbYOd2oaoXZBVnHWqtuMDp1vTspnbOG2SUFaQ1veM7A+H8qDkipCi9aLiAfgMgYkipMTbD+Pw4EQEqMWDi2bmfK12u2TWYrB7V2za6DqzdONVq+0Zg5K64Kp1Pv6kmBoBuJjQQyBqq2CBKrQw0C/n9acbX+XLbgMauWIvWb5oz1+rJ3U3XzgNB04jDMahBx0Zx5rpwb0aMBKjJtTETxSkI/2u9lgp9T2KqHqnoL/gF3ohuA2FDLsvf7wl7Nltr6lHyjkWwbnrKCmNsWzKbkU1rAyyGCL2bOJbnRcVtMnyUKQhLH2jEHUIx5UCSSEruwNG521qxSIHb8EscZc/7dtNsv+7DMssmptNYo+nToNeDYVJJBiQjX4GHcrU+ecEUysNZeF5LJPYSNmuLnSPStRuY2cLcL/DU31Fnq79M1m3rc4b//umZRlUVbWDa6rGEQtw0OQbQQLbJqF0h2COeee/fWAZf8MP7ptZrtDcZj2XwyBGPa+F7QrLnSH8nEQ9dHj9nd6+6vf4LnaQ7Pb7xaAiBg8Y5p8QikBjZBiJ7X0TLr5WAwokhFZUYEYMgHrj+p6fKVmmq6WAcXedGpGrLb9a7t3nu31dEw66iHaFYDsK6hnUux78+ae9rfo8wNLraZcH02NPuAMtd5kv1Ei/TO399sv6rbHN4fDlg30gGrLyBz662iFn42/v9ysk/7oDJfwA58KTcTqZSF4wGI/i89bUw8UjfKdvKxh9ys4yWc75o3lKjd7Wbc6uqE+GVyGqc+Eu1ls7Nqdu1W1a+MkDu00c90C2uBtPltGpvva/lEfP9ZO6ovPvuD+7sFSYDGs19aAR/tsZOttEX90sXRn+u3/968bZpZ4NLCvr27ybpQYtDr1tlHqSq6Lw1+4U7FNbje10qs+gqkDDJKMebU0SmmUFZbLilC5LF8xhPd8dv+G4dXAEAfmNBM24ybYSG5j2xzGO2IYaVpY9GwMK7VF2KRCWBACzZsWVXBGnS80jGgSPIoupUOStvB2gw/X5cL58oKixBQIQRhl5DicCMG0u+Zh4DtvviCGkVwXni9vWdbM08sLpSqHaeKTx0eGmJARAtEMc3EnE4VbIdEtlxDM4QMikRYFYiDEkTEdnO6bqVk3Rpdlio6R60ptVzO+FK95+SgBDQTpFNm6OSZxSMlWlj36sfUChMHEHzddbnG5r5dKYVkXzs9nLusVUcyRBzX1D9mbWRF8yPpuwDbC2vYLOtLlWZi91qdU2HXs3ISPXmh1h3U1Bp1BltWmUzMwDBYAddjP2g1A25WcKzEMlFIRiaxltWyqrRQ1wpDWYA6pwJotcj9flfPFDCS96fWj/dl3mE94phFCM1HgpAzDvgMlBlK08Tk1J5Y1UAosV4CE6kAcJhM0bStCwXoeXbEF/MJ1MlWH1Nn6rDpkutsH/7//vvs7ic0RYFuz3NYThZuAeA9qrX5ltVVN3mxu/cm0IdCiOShJoxUZY3QUhA3xMAjeatnag6SwO1t1IkqnyTe1MoQ2EwpuTWllodXVuzJ0h/7p9clCH1zZA2srT4iH/2Jz13TvB4OOWgSP8zsdxvCS8JMw9PCzV59xOs4G8clti5t9D7rXYboYB/6vnd5pzoq+gLZHh7tkW5uyRVQWPXcYYGvS89pSrTaqYu806pGVO7aeNdEL3IEk0cZ9V8grXBfl5VrQVnhqiwfhgU9Or1BVJu9bgB6VCIGESmNKiTEdKJrR1RmG3ouk0qhhdQedUJ8qC3ZaljNY0djIbUrx1H1zUqpUz9DOlxeeX94DkMZIiIF5OHJZHxlT43h4zRAPfPrwGYfpng+XJ87XD1zKlefLmbVkSjvw6vHIEARJGL253WQP0e+oWK2uBw8Wa+wOs0VMqHVMDNNsY+SLjV+oJVCLbxuxRsqqRq1Wd1MADcfsJWATTT+OJkXTnkXRTc3Hjts8QX+O7L/bNq5dy7xmLpcLa7b7EUPcMojuPJq/1WYjf/Cxe8o9Iwh7Vtu82781+Uhg5zaSVZRcmrHFPGMch8g0yTZipq+y6jBm0QVlJYhNXRYCa13ILfv1sDqjOVohZ1gWc1LXRbmuunMklO1z+1ruPTl2n52hFky2J8a9MVQkMMQJkcg5C2uGkmFZ8UBsIKQRCcFISm6k2VRh+gXcofbe6N4b7zszj83Q7lkvzZqT7aXNfF/YM/l9Cfzwzes1uh7IEqEloQygQdDBVVniQBicSeeDA40B2RlA6rU/v5g3tXe92SNddLzVHd0pZTEmXl3RmjHpMdfY87YbVXxESM+sZUeB6BiV1aHKhhZZ9KFY1tanNfdov0/B+1EeP9ZOKobgfS0Of93EiOIL2FZ9h5Hs0VN26Q5qC4vw6MBfG3xzNizScRhP8boSnfDgHeQb8cE+TekTNe1z9mhih4lUobTGUk1B+eWqXK9KLrAUO/bJB7lJDDQx2fxqnQpYjP3xze7nGRCGMDo0t2cirXUqaHej+2Or4TpmojRyWZ0A4lN4UXdWRgKxybdWQwnBjMtaLyBi/SqhEEJgShN1OvHm/jMO04k1W3f8slS+efvBxIAHsPq2OnPAI7rAtuDt/u7QiKob5pbRkJBWNicqUXyacYSWaCqYsG/bzlNpSC3+bvZcFd1Sc+39C9x8pzcRd7N6m5vAZnS9MbkbqubRM2r9UsfDCQmR99cLeS0bOaDHQqJOA+k0e7+XRsap7OMROm3Z6j490u7wosjtDuiLfz806UenpjguwPmSKSUwJNmEd3VztPZeTW2ek4h4FtWFgv3+dNitNK5XtbHwH+F8PbuQm0Oz7C0EO/aUlGlqDKNNIegjeAI2By3GAdNPbCxL2+ZZCcrleubD8zvqeOAQBzTGjaS0aW6qkbqrgkrc+kxar2F7BtLZoboZBNmNCdArP3sofGNobveYm/YmJq30UctHEDSyOYheN97zX4dAe/miv5/ycYCjlmVt0Y32BmPre+sECatDtc7aoYcjcnOk8gPvqTfnZDCfsWM7KWyDR82rs19Cu36yR5g/0uPH2kkNIVotA0VvcM8tqnUZkM1sy745FPboc7uPJrpYWyOEyCYXp0DVj7rxq3YNPXNQ1rqY6aOdRRLB8RXbCDtbLEjP66y597rC22drbnz3oXK5NhpCaYEUAvPdxDwmwpTIsSBByLI6QXy4GZyn/cQAE8k8Dg8osJQXUj1TWuZSTENNReky2L3I2vRjjLq1xpIvlJqpzcQ5Lcq050mEaZyMcZQsyiosfFi+Yqp3HIc3BAIpHpjSieN84u5wT26Zf/Xr/5Jf+/6vslxWvv7yVxCBn/7ikc8/uzfDHPzGJLWN6yO7eyYrG/6t1ulfR1sLISB1Ruid9COtCCGKkVfW1UYtuLOVVojr2QrKo9IG04JTx/3tvkUMy0k3qcrHwY+46QC7flhl4Maoea7vTbvH+Y7PP/s275+f+LVvvuLl5cw0R+Y5Ier6x83gz8F7wGKy4vt1eaGU1Vhbg7UjbGK4CjVaDa/7ouDLHTWaPduu8LqtS3rVErgUYQnCsmZCFO4OidMpeTbjfWJiRBfLUs9ssj9umEI39MXO93KpvHtfKMUYhTtY2q+dy3SJczxFSakSg3I8Nh4eKzEJaRAkCGmwPi2rr05Yk/CVDx9MT7AUu/Jfv/2SVhYe715xGAbGcaK1BSVbH5vYvSjaDP4OplRnmZy4c/IsAM+WkE2Kcw+CN6vCDufdRADKVu/eGltFKalnPB4mRNDB1lYiEulTBvonmL3pQcVHn6feSA40defWJ4g3a/bXVil5IZcraEXbCtoIbSC48C9bPfQGpWidOeoqGx4AAZRSKM32UnXSiQVx9JMGEdM6FM9F5SekT+qj8pve/szHzgj2IiKeJbhTQvcSIH2jtb1P5/ZNOqy3zSvqcB8de1WPXvcb2imX9rl7l7jqXjwuVVlW61tZsrKUPY22gMOMoso+Nrth0FuUHtn6gYpuqbg4+wdMHidKsoVCMCbiTYS3F4Q9WvTIy6j0/WuXyuksSImmMNEh1z73qLRMrCu5XklhZGAgJWz0yHhg0NFVFxKtNle5tqbX7fZ1VGULuvbN2PF39WshavDMfoWsY9eUF8yw2cj04LCJWMNmj+j8pHYdxV4k3lebrbgd7tkjzo8fO+Tc9o3+UUHe3iumxDzPXPPiUJ9Hy2o6jVECMQpjGpiSD+KM5qRqcSJAEFOu2OqevXfshwNVS1hk/0c/E7ndSxYxV2eahSrkoVFr81qZ11JVtz6s2rpE1r7uej2jN/BagGNogbI79g4nbctXtl9bbS1YZpkGiNHmoln/mOzN6xppfTp0czaqmhHPZWVZL6x5dhWKvif9frRK8zVgdcXoiiPiTeE3DmhTkblZi1vutGcW+4Rrttds19c/p1+vdtN/ZSzbrlyy3aSbREz3j95x0ptj6StgD1b6cZuqTd/HloWj1Rkmfj36IW6Jjm7v0UlLCB9nft1W6G4fAIc8b3dHt03bSuQnQrtvXVdS1E1ztDvmTo/u8Jv9cjcS/XfViQ3WmGZvUls1ld7WbKop1sUvgscw3lirRsXsZtI+w2fLSLTCp7P4mjZzQMU2dK6VpsplLeRSeb4Uvv82k0vjslZy6RRci4gvq3V9n+bKtVaaCkNbqFIYYmNMHRDYbj8dxtDOxiP49N60LapKtS7wji+rsQmt8dVliPAaEQ1HQH1TOXU3io8HUZd7sXNs60KWQl7/N6IM3M+fc3/4nBhGpvGBIIlPHl4zRuG6XHn77i21VY7jgZYnCA115YOutecTBjxi9Ouv9rkSjM0YgahqvTw9IPDNTwpIiwwcbIR8BrLBfxXTQ1O1epi6MzdQyTMoNdUO5yxxGzJYjLs72M3veU2jmypbn5FI4O50R0iBw2Hmm6e3nE4zy3rmur4wDQPf/uRT5mnm9d0rHk4PqEJuuLTRhZxXI4EEV8SvhdIKl8uFb5a32MA86EZUPZPbu9N3Q7KZtl5/AVoxGsWSG2HNpkaQOnxYvR1TuZ163LMh7eomLp7bUGKyPVLrHmDvMJY9umqFCBwOgWlUjidlno2UE4eIhMA8TszTTGuBZbW1mFJknAO1NnS1c6/twpoLSw5c8jtUZuYgDAHamnl+yaAwjIOPhBn3WVKarG6yW2S0dQvtwUpPVtRRCQdvmhkARCPSovtE2czUFng5ZFxFjWiIjSKRIBCbTwpoiFTPTGx3iyMyN6tq+2mLidwJa2u0WiiLt8PUbH2UCtIcJbhR0NiZrLotEwlpy7BQUzKvPvJkXVbWWsi5cF1XRIRxmojRFH9icvUXJ2f1+347I+s3e/xYO6lSV8PPe/ZZbckHC9kB6D0h/WL3GkSP8FTNSSW/kH1ekvW5VE+7LUPYI5928+UxvnTgBPp4cq26beJclSVb1nTNBime18paGh9eKu+eixWvtW59IwGbU7QUJUZlKY21Gvtq1QzeH5TU6ad08Xt3yLpHNpZJjTbSIDSqVjKrQVTaKNqjqbbBG8G2jPeTWV0seAOGBGNUdX6AnWm5yTYLrS085/eoqtUtiD5B+IjExMPxjtM8mQIFkZwz4xBo1T5Zw4pIJ2uY0dnEz9VgpyY+9E4sW/ZqEaGzivDQRADXJ0syujNqaFYqmUyliWna0XTrjdsyYvU+LXpRv0eWOwbfwZH+mVukye74bcObWT7MM9M8kobEp2/ekFLg7XtlWV8YYuL1/Svuj3d89vhtPn34nNIa57VYoJNXcs40MplnKoVrvrKUBW0B4YkueWP74CbT+til3MS7N5GvysYuzEUJuXnPlGD6t+2jl9zGxBp2pkfVRteuC9Gh+NanJP0GmTzdUcE0BQ4HYZ6UcbD+oBiTzTAbBqZxpFZhzV7cj8IwBqR4xtYU1YVcMrmOrOWFECuTTERN1Fy5Pl/seE6VYTLR2jFNva18g/n2ABejrfesz79b3dQclfsnX699/ezZlXZKfy9riTVxu1oXSTG1i2QL3ioW1bPsfk87w/S2hrQHGF1v0xxUppZMXi+06mvcMyypnYjhJ6O3a5rts3wzbPfZWMy6r8VSWJaVy+WyIQKMo2eBN9xUdZt8m0H/Fo8fayf11Yf3PNQD4xB9zLrBHkEd/ulCktgC3orOvsGqQ1hJIsrOGpN+1wPggB5Nu7g+dqV7pL4LcXY20FqKScm4PEuplfNy4bquRpLIxZ1U41qUy9ong7KBSXuvkLKsJrXzlK58NT4zpwFm4RAFkcaQmi9WV0TQHS2QziPvlHqweUDq1FXFjb33U910+3cGUQwjJNfn8sUqwVluYpTpRm+qhA6liOCD/GCpF96dv2SIB0oRUpyZpwPTOBPTyPFwoIwDMdnI8iDNmWXeEEsDqvXeYAK/or7Z3Rm3YNXBGNWjtr1w0CE3QzWc1BIH0jgjLRJY0RZRKfbVHdzmjHaz7hXkHzL3u3PqJlx8M+53FV+BXcNMQiCmyGGeyOXAkg9c1wPH+chhPHGY7pjTHWO4MxWPIVO1kUJmTIVGpsiAamUcruS2EmWiLMq6Zl5erqyL1xOzBRBrNbFjvLWCfXnYsTrJp8PUraiNbe+ZtHog0KPi4AHatsZ0i5oFG7HR+5xAbObYZqFuIC3t8J6QEiSvQcVU7T2CmJhpTIzDzDgeUDUI1DQPg7MIM3W162TZUTRyVS02cUBMqLh1KjqQBIYgVuO+aU3xG7ZlTx24+wjI2iA72S/k5tt6yuRnuy0i+zl4O1JwuC80MYHo/l4NK06mdIM86k0AhWdX7tz9gNWJQK1kWl1pnr5u2TLABnf7Pgt2UJ3punnf25MVW+OmG2rPSSl68JFobfQnGSt4C4SCSbjtikDKj+qlfqyd1P/+3X/Fp4+veDieGNPA4+mOIUZoGVSorbBmU0MYp4EhWKTU3IjmlmmlomEwaXnftCEAUdFo9Ym12Uyk0jzjAAbvVWhqw9NsDEKmaeNluXBeFnLNPJ9fKNXS4DWvlGZ1p6rKyyos2Zxpcy8VCPs2UGNCPb8snAWWa+H5vHIYJ+qnkcdDQENiHKsFcT6hM4VE9OY+8cJ/b8hFAikMDu0FSp9t08cudFhIm2PzRgJpzZTIm3ty6cSB0ECM4ZjruhersD/HwaKo5+Ut33z4iigTh/AVQzzwxWf/Bt86/N8YQ+L1a2MFWnHXHGbrsb9m0ELTM0Wt4JvEpHtaE1o26KPQIFZCaIx9Bjkrlh0FPy9oHjnG8cAwHihtJUeQtlKKiY8Gel+RQX+dmdQ8l+o6eXrzX9uOeAsX6DWwnZLen1dttEGKjOPEq8cHhjEiwQSGT/Mdr+4/5f5wz/30Ocf4LZo0htEJO705XCoqBvfltlA0c7m78jh/zrqufP/rL3l6+UApmSUvphH5kllXZx3StS2tjtqHz6Li0JZQVsvug7cCxGiUkB5I9Nfikb0tgb02ESWSFIbR2gDy0nwai9e33B6bwcPUJQZhmiPTHBjGQkiNlALzfGBIE4fDA8fDg80vG++AQEpfE2Pk5fnCer6wtsqYItM0MMRAW7PVgakUCcZyVWMmjhGOyRrOg3ZWbr/vPWJ1MgUbMGPOzu+7eWL42EvdQnL2ytDLQJuhtowpelDsvBakeJo2Dd6GsWcy5mz8GB0F6Wxb1UYrV/ueV1pe7XNateutgjjE1+uy5qSatXmQ3TclkBtSTq97evE5BVPNH1tv3DeZr9oal+tCXldKSaRcCDEyHw8WIPeM7ScB7juvCy/LlRgCZayW/re0rZFazUkp6iKiNxdFlTWvxuZDDQrCi6UImwKDO6nanVSzpr8irkSlrlagNiOntsZ1Wbm6k7quK6VWlpxZc6E2WIs5ylKE3NsbAF/2Wwpvx8mG+a+lcV0KooHLWhhiYR7suLyzYX+l7O+2pVW+OKQ7ms6MxOAz6NFZNzi2iaztY2ezqWdo21N7dLW1Tt8c/1ZE9nEoDaSevf52Nh2/7u8kgMaNEoH29+09LH0K8m3NTdEWPJMriM+3aj1qvKXqaj8uc9ji0KWlCPbZXS5/i0m1wzOWGfjF8uvaz3J3zBuUQ7/c+0WS/sybGg6YgU8pMQ6JMQ2MabChdHEghnGbII00YtjnggUNKN5LQzNEUiM1CYexEGVgnp5ZS6FEqynEmlnX8WZ993PqqeLt985wc6UgMbuyq9HjzEpfaVvS0AMiubkHYSPW9KxUFIPItutw83PoZBdczsuuYOjJirAFYdElKFKSjS4fo3hGFklptDlH9OGBniF7pi/YyIrgWnc90+g1ILiF/fpe2vLzj5Mluc2ZxfdbXyPbH7aMRnyNBDXCh0e+tlo6/teHSu4Htb8R3Kj5Nxd89hlfN2o3265Uv74fZfa+trdhrnuGs2VrfT3Lfu1uTtmDe+thYwt67PptRLTWLPBxm/QTQZz4tXdv+eb8gSSBeZr47PGVjRnv/QDayC0DkIZIDIGUEvM4gsL5+cy6LKa3lYx+ehxmhpi2fiS7gfa9tLqpMS/ragMGY2SIcXNSrTUu65XLamM5lj6WwwUXlUBVlwfqbOqbzPeW0NwXVNezawXOWliy0vRrpuGJn3r1gKgyp8jreWL0XqWO8u0G1YyxbQqfNxMFIRFaIWwkE6XXLcRhEavHWZNvpy/3PKcvbCEQY0NloLYrrV38LIySOk4DMU2UVfnw7pman3k5V/7lr3yXu+OJn/rOdzhME0OyKaBmxPyiuMq7NB/41gq1fKDUCy1DXQpoo6zfEMITlTfEaTA2X5dSamIbmI7IK1I9O1LTVCQAQQzuETEJoH5zRH2ekhvl4Off4WDZHY85ohvXpXYu2ux5nqDcPFc4TBMxKPn6QrmMHMaJOZ4Y44k4jOgUtvOwTR49km4uy9MDsMSQEnfHRK2FGAbePFzJdeWyXqitcr6+kMvKu/dv+fLL75sqf2mbY9qLJbaItAUTUe2yQdqjavt3LVa7DckgnT1BUKrYaJlGQF0W6yNI7NbRe3DQmrhTdJgwCEFsLlxtV6iFXAJrDkhJrnsZKPkdIXxgHDKnO2WaIq/u3/B4fMOUDjxMr8wZhZXaMjFFHl4PBCKH8Y4hTkZf906V0Hq4xt7ULf1YdyO7D93sKeF+4yX0NbTvaQmemTSQuo8EiYgxIbW5WpOtQ6kg2aIEU9eJm8NtrbKuL5S6OEnCVfi7nmHXooKtVmQ1qOh7N4Mo1aHyPaD1Hi0f4dMcvjVSkelM1uKIx1b3FiSanZXjgdZmSi2s2WDWy8vZ2gfGgWEcDRL+ER4/1k7q3eUFLg2tlcM0sbbCmJJP2fJJpH7he+f8PI7cHU+gyvP7D1wvV1qAItYc/Hi8YxpGfDCGGadgG6bU5vNRKk/nM7lW5mHkMIyoKmuxURzXdWXJq0X3t1EW0KEfRai9vHWzgP1J+96lxz1GoqitQmks5ZkQAnOKfHp/QtvAq2myKcS++Tuk3d+lexvB2Ws+FE0B06zbBfTVnVunEluEaNfQIuh9iOK2qMNgZI8ud9I3qkCKAymNqBau+T3XS+H9+ystf8nrV2949erB2Fvx4Ey9br8UxSECCd7vkyn5QilCK42yWu2plmfbBNNIaVfLPnQP3Xsj8Ja8erPLJn/DHqH3w2/ustuG9/e/dAPlLk91KwbbXz2v9Xvb6zg9/tb+8R6eDmkgSOMwDFxTYh4GhjgSw2STZdOe1ah2I+I+Q50wIwnBNBznIdLS/4e8f4mxZcvuutHfmHNGxHpk7tyP8yiXXxR8/q64HfNdEAhBA4QlMA2eHUs0EEhYQgIJ0UBCAiEQEgi7gQ0IJDqABE1AAiFLFjTcsSxjf9wrYYMwGLvsOqfOqbPP3jsz11oRMecctzHGjIjMfapcdUXjHhxba2dmrLXiMWPO8fyP/6jEkDjupwdK6mq+srBfVj7++GO7jgJLrqPZ3c3z9NBf48NrFnmbolW9JkvjYmy1O22cQXXpMOvIv023gq3ghxZybKH3h6UUVTPUQik9OY+IzORsHIu1nAhyIcbCMFi/ueP+wNXhOX0c2KUnBAnUekdVJcWOXX8khkjHkcTAjNE6OYZojd61UWnXuqyRtqY3ynd7W7Q1sAHbBJDF/XKfa0FVWhcDwFqihWAlFNlzRktjwbWYOOeRab7H6p5MSYUinpuWhf6trd8lWiJ4uLjQEJ/2qeRX1WoEfd75vK2+HrK3HEJ10c3t2DH2qMLlAtNkHYRzyX7LQkrdotx+re1zraRydZtfrbnW3eVMF5PNruqRfzHB1OLml5K5FAttXS5n5nl2dI1ZOFWFLk5UivHciRWVWj80U1SlVs6ThfZqUcrsLBQOLc+1UnQTfHOra1nwjW2iBtZOrFsLjIf7FmFnbwu4O6Dcnka+8vI1x74jVOWq7zjuB467wfMvrWtuK2xm8S7wMQlYSKRqpWQWBu/1MsTli7gFh1lV2qAjzooQkyd8O1R2GNRkXjw0XLH1QwdEzqUyjzN3pzv+5698mf2w57133uX5zTNijAxdb1anemWYKBqCAc1jQlKCWpbGcRoC6hDx6g3wFnGpslhuy3PRFZVXHa3ZqJ9ii01JWMZREKoUB4ywKOz1ZYrKKOkaqs+Uo4h7t6oUsZYmSEA0Umv2RnwTMQjH3YG+29FJJTETpRDFEYx98uu2nIJ5+nb1UzZaouqpb+O8S67igyEntRK9fcrzZ5lxmpnGiTevXjOOIyVXipdAmIzyuiKfisUt8xit8R1tLvgcr1vreLHK7TCxK0iArve+Z1XQEpaZpqqkAEMv9L3lp2LwBnti4eAgiSCBnCunevK1EVEVzpcz42SlHDbnxb2J4qCLgRgSRi2U6WNinwZDvupA1I4QK6EbqKWS7y7UabQeIb081kE+9qtXuM4GzAvxa2gt5tvWAtA1whyaOrB/Nm+8sDmZdybR6ySDZ0NVyNW6cNc6k/OJWkezWGpdad42CuqhyvTn6RyWKz8Vy/cWdhXPpTZv0RTUWjNKy3U3Bbd95gIxRXZDT63KVIwIQUthPF+YppFvZvtcK6k5F4JT51xyptzdmcfU3HGgylqQa5by6pJrsUTjMpGA12pknxZ3Lz7QbrX64Buk3B6SARbWUIAAC0lps6YR5/VT37e1ILxl9GYSWcuPdaItv2uzYNXi1CJ88vqe1/cnjkPHZRx5stvxxWc31vwRY8mo6GqpuUtunk9jUQ7EGM0bxDvDUj1Eo80ARkW8QqgNqV+n2tgkAY3R57yxO8zzCdXs/aYM8n447ugHGMd7LmXk9PrCVz76hCiJ3/x//j/40nfCYb/nxdOOJMHoY7RQxdpWqwBdj4QBmGEuZpd4O+sqkVJakrvlo1YEpUMUafxitvCs1Xl2Ml7EhZnEhT6GoOTgzTQlLhCXtVpuJaspLq+spMHyLcY9WMmMzh/nC7/OTOM9pUz0IbK7ekaKPbtY6RjpJJOCWm4meXNK7QGDY8fOMot3d284X04UzYwCqMHGRTIhKDEdfILZfR/2T3j+7D1OpxP//Rf+G68+fcmpXDiPJxAl9clbT7TZqUszOwNEtAlv75ZanY7M5xbQ8jshKP0wWySqKhIieY5MFw8pOqIsJjgcAkMPux76Tp0qyuZpilZGcRlnLuMZVTASEm/OWAo1G/jH1pJRXsUEQzrSpR1D39GlRBKhj55vKtHmRatzmifevPyA8c09dTcsoWBTGJvlK2K9rZb1a4CUEJq3a0qieWaWHxeKwhzglOy0XQ1EjRZuDhYN8ZajTpVk46lW78E8nxnHr6E1k/MJrTNGzBy9hGQB0a/yTdxAlQqSbT4GpwPzR7kYtNuX09Cryz5jligLRVwztF21mVftMqvvLPxcaiWMI7kUpmnmfDp7i59fe/tcK6mmxYVmRNSW57R9snHJ/TNs/naTwEMVroAa46MLlWYESfP71SmNPJm5RTIZ158bJdqUobQLWZOftMmwKrflh7tetvbX8NG6tyk6+3yplZrN2jyNM1GE0zRznmZbKGE9oyy/rWO0bm4ptr5MrPe1hm7Wa90erFmKzdVv4clWFCm6NDOHlmdQLCzu9WfTbHDg0+XM/XiPhMpcrMtoIbNi/Rrub7X21J/NWim/8Zb8Iluoot1GyzOph/uyzpab0sbB2EJ4S3DOcouihOUq2rxqx9/a0hvcn5rlalOr8ZutYI5afV81DyYEHztXgdRCLZlGyiltPooVU8dkBkbjavMIzOZBBVoNmc1TA5+kODD0lVrgsD8yjROlwHiZFoPuwRzxObwgAF34boV2S6o3eP46R1iAEcbSjuVafI63cJG3TiIm/5y0fJCvvWrnyLkyTXmbfrF6uqqIBlKwRoBd6EghEiV6Psqa/8XY+bHdALNQij3FqixNwYpFZazOjQ3QpK2B7RhtF8jDX5fF7fNg8abEX60Pnoh5TLKZq7ACgZx2qDhtmWpGF1JX9TyuPDj9EqJcYnKOWmwEB9LAWluv66GR3Oa1eVBrBOKzwA8tVLtIOQdShBCs0F7a9clb3/2s7VtWUj/xEz/BD/3QD/EzP/MzfPDBB/yrf/Wv+CN/5I9sLlD5a3/tr/GP//E/5tWrV/yu3/W7+If/8B/yPd/zPctnXr58yZ//83+ef/Nv/g0hBP74H//j/MiP/AhXV1ff2sVoi5r6Px/3Rn66WD6e5G3o6Nqe/vqcCD7YS42RNm/MbDypzsLg7wd3ve05yuJtrL80S84EfqtAB3E+OJYr/+xtWQUPfpfF8wqLF1OrFQj/6qvX9DFwN828vpw59D1ffPaUfW+AA+KaF1gUXUOaNYs3JVIUizdn80CKU56IgDQq5WUA10tsYYaoEbSnSiAW47BDZlvsosR0hlDZHwpXc2K8VIPlZ/j4zQdMX37FzZMjpXuP3dCTYrIaC00EDPRiksl76uwia+uASknVocHQYu2NV07xGldtyq4y1wuvLx+T60gXIl0who2pREJt4w0hVF+y5kFLXUQNYJ1gq1PQtLOVqtRqNFT4wi6LYHHGhpqtZULJhGDcgCoe8ycTznfUGWKX6A57Qkp0eyUNlRA6UmdJ6FompvO9A3XUr8Pnnj933Ty6EAJ9l4hhz2/8Usc0TXz1ow/4yle+zDRPnC8nz/dgz1CVWqyNSilWmG7ppY2YXu6zVYo1H8xcCQViWudNmU2pRnMi2B/gcIS+h36Azrn6hEApcDqN9vM8czpNoLIosRSCtX/vjjy7/g76uOe6f8qhv6ZLe/oukIL1yUpBHMxSXMH5fDhP1PsLdcro/UyYgM40oTpC0dYwVM9Vt5LxrbX5uLwInAhAYaYyoZYSKFYCoGI1iEG0aW+qNHDERJlONs+8ZjDne/J8b6HkRXG6TNqeeelj5gEEE3ZLmE9DizTZuexlKFrF6kdb/lxR71qQNwbgGuJbZCyr5dKc7RCEoevQZA1Muy4xdt+c+vmWldT9/T3f+73fy5/+03+aP/bH/thb7/+dv/N3+NEf/VH+6T/9p3zpS1/ir/7Vv8rv//2/n5/7uZ9jt9sB8Cf+xJ/ggw8+4Md//MeZ55k/9af+FD/4gz/Iv/gX/+JbuhYTGC32yxJW1bomulvx2Aopbhb1qqjArBt7lhvBuzkezUpxa6expLcr2eZtVgWwmSwt6b3M4K3ikQfn217v46m+KjZZvqIKc6m8OV9ckVhI4ma/593rJ+y7jcm4JE23wkPab8bFhxAKVltU8Zocn2y6GZ/lgv0+xHW7GDUUHtaxBpTFGylWQjS2jNQLwy7YsWNAa+VuvGV6/ZoiR55fhJmBod/RaU+gJ+F1HhbfQwlWiYlQi3u3oSW0F/vPoeEry6KFXq18YC4Tl/mOqVzYpx0hDQiQa7Z85Nphj4J6Q8S1EqqNQ6V51r5PWZTnMslYW7ssTRedS+1B40l8DmslzyNkodae0CefqBFJwWqtIlQRVDMlT+6xtQ7SboA0A2pZBzaTYoxGVfVsB1h/oddvPiWN1gK+lFWIWXG0PSfj4/NckVkom7zpEgimVZXhXimIeVFiaNVGThHjytHX99B17lHFdc1oVcaxMM+F8ylzujdotcHHhRADxEiKA9f9M3b9FYfuyBD3pNSTQlj4AJvw1NYDDM8j50y5v1DnDHOxW3YUKNVpiproWLwFfbRKH6snXWaJ+hzKTaBXv5ilHQ2LkmtyoFCZy4RqBp1AM7VcvEmhMdM8yHstYVhdL8cF5OJByaqo1gttxrXnYpss05UALNdCrtmkkKxKuylpbT83nn2bezGG5XrC0n/m196+ZSX1/d///Xz/93//Z76nqvzdv/t3+St/5a/wh//wHwbgn/2zf8b777/Pv/7X/5of+IEf4Od//uf5sR/7MX76p3+a3/bbfhsAf+/v/T3+4B/8g/zwD/8wX/ziF7/5i2kZex+julUw61WxUQOwfvyBkpKvN14bXWHu7vq3jX0r2Gy/r1/a2FYP5s96iK239BkfaOddFr95PiKtbNKtFywXoO7thGrejBa4O0/UCvvdwG5INAW1Tiu8+t7O0SzK5nWorNekVGOVAAjqeZZ1EZbWcZhGuwsiyVgnqloxYRCiDoZk29sxUqecR2GaKiEVCAZTOI33VEaKnulTR5SeTqxhY/RHXclUGQ2QYHKEKZ84za8Ikgw1FyILASqrAitq3WOLjlQdUR0p1XIbqj1BIqVGZ9eI1iXVvcrWJmYVxmsYR9UAOKjB2Bf4Lk1JepuXmql1ttxdNsoaiTtCshBYZkareguUCAXmaTJuuqhkzcCEaKZWZTyPRvLJGup8HGLe7lP3+kyvmuKUFDleH4i9MM49Eo3Cq7UKtzkZECmINwcUb6lhNDw2tutKaFEDh1rTuspa3iZEUJeVWkyBdDvzoII3/zMKq0gp1Ri3s1KKgWNSiFx1B7qYOAwHDv2B/XDNk+MzhrSnk54kHUHiQlmopRoARpUFIb5xiqUKUgSpwQrec2E830OSBbihRJDOj+EhXTebTeesSDpBLI/tobKsxnln/IbFFbAR+GoVihuNzZjJ5cw8vQEKwUmU8W4MzcxtryVEK8uwL+HYujHaVoveZRdx8aAWsIQ6EEmdrm1dPev/bTItoeHV4G1h3DVu1J6/eF+wbXLv62//S3NSv/iLv8iHH37I933f9y37bm5u+B2/43fwkz/5k/zAD/wAP/mTP8nTp08XBQXwfd/3fYQQ+Kmf+in+6B/9o28ddxxHxnFNsr1588Z+2XjZbaG1N9pjewhBeKCXlj++rs/SBHRYH0yzdFp/H21W9sYzahYTjwWEH+9t5fTw99WKenixPr3MEAosgsEsbiW6ppEiRCK1CJ/eXbi/ZJ4T6br9UiD5aAhsAqqyNFPX6gpoXWy1ZqvHEONhW+oeXVE97NprlnUIHdZcEQtxiZLcigpXhf2xMJyVqUTGUZmyEezOqtyeXzMWmGtg6IQUBoZ4TZBIogkLq2cDKA6TvuQ3cBFS6DmG5/Rhv1FQa1arMDHriVnPVD1R9UIuE9RICdb+IUiHxN4olADiTJSAwb3jMsMsZOTwdoVaLcFdluJKK7AERYP1XCplJhfriDpOd9QyQvJCAKlETVSxludBhFoqek5ISEx1JIzGcziNb9AKczYl2+ba1tbZGjrL79VCgVUhV2NOiX3iybMnDGNiyrfES+VymRlH/5IXcQcxkRw8iixBXUGy5J7WWd3mvJMSG58OMRnLuwqt2yYxwO5gHlXoLCKgOVGKNVecc7bGhsXmfZSBm+Ep+27g5uodrg/PGfo9N9fvkFIPuZonRIRilmXNpakTcCi3FrHFlQXJpqRCiWhN5OnCrd6jHfRdR0wBYY8QzZOsSvQ8TdXWaHWjpEIga2WsRhwwOVemdSNo+SeD1iuYR6eVKd87iu/MPN8ClU5s1m1rmFoOeAE8iCz2xArqbbMeNyKqP6HgKQlnlJdoCpiGkhVyVSZvZlk3MrYZOK4e/Z5NHi4ZSV2gS0tLIavjTEbV9E1s/0uV1IcffgjA+++//2D/+++/v7z34Ycf8t577z28iJR4/vz58pnH29/6W3+Lv/7X//rbbzRFvvFuti6LPt4Fy+Bt96/v8mivf2rrEm30y7Yae1FCb/2xNTbeUoMPDrxycz32ruy/BxYS62U1IWbcY8KuGzj0e7oYrSW5RAMvuLmvsoIMBDaJUFaP47EmX8R7Y02XNarVjIRHtpY+GMttAMiLhDFgSmvHECNIbha5Li0easutEKhMQPS8onUibo0qa0vs10KpxvGXy7jxo4WtR1W1WAJ6AUwUJCZSsu68xmLvMF6vL6s1QYCo1XM960NqIAlTWtXRXB4ocfQgqNE+SaHUmar2atRadQn5rTmzJhxEi3mjCpItZ1GLUHLwFhXZQRrm3euDp/Bwri0WkP80MIRZbOI8ezEFfwky+7MTMSEXWtdeVkYIf5bbp9/svEdTF8TyL0ZayyLAUpKFammZ8Oau0QwfM34iQ4r0abBX3JFCb4AJSe4dbQzFBU1iPz8raq3bn4q3Q8/MNTOXGQIkFUSjeTTO0tKOp24BqHtOAVsbsuQi3YNyT1q9bQZAkEyQlsez8ZvzhVxHSh0p1YhhG32b4WbWOiZphvLWwG3I3M3zcJNqFWmb+rXWcbqZ9fVB9KHyuJHhg7WtbLypVfJaqNbrxDbvPZaE32j7XKD7/vJf/sv8xb/4F5e/37x5w3d+53eyLLam3FueJeAPqD20bZiHRYlsuQ6/8aAJqA9sYJ0Q7csPDrudJcu32RbGPfTtYHv2xVtbveg15oybsAp4TiOJkEKiC5Gn/ZFd7Pjud76NL33h2xCBUsySTyEwjZ7obu0WwmYI3QvKLixbZ17r1jpTyRinl9U9zcUs1IagNMHo47KZx2v/LfPRtqPSFragdMnu53LJ5DFTolBztGaHOkMwwW6t3yNwIDBQiikyFG87IGTOQCVIZM4nRJx9vTNgTnVlMuYT43xPLmemeqbqxM3VNc9uXjBPhTevLuRcDZ5MpIs9UIkxATs66fx5mgBdIka1GLmm4t59JetMLheqZoqeqDovIbZSC+M8UkohBatd8QyAC7doZQ4lO7ZdzCsIbh+7dVs0oURUo+8TqsQlt2CNCll1Ey0vZgCCUq2ujTgiXWZ3jISuQ0NhrpPNYkcVdoOQesvxpJQsGb/k2IyFQnHkbFitdsCJSSF1yrCrBIT9LtGlwNWTQN/HpZTE1oPlfzWsuZHr/RVXT67pQ8/z/hl97Om7KwI9tQh39/dIEEf3dYhWjAY1EMLgHsNqD67epXqDwMxtueOS77mvI7flRKhCKjuiJouYlYDQoVjd37KG1WomizgUPMBcC2OZLNoQjMR4nEfe3L2i1EJwAEYIgS5ZhGCuZzO2HDZuAJFIxHqIdc1dcjTXYjAAKwPK9qet8VYiYqhPb6ooPRISqoFSre6sUJyNpaFRN+a+rAbAorwwTlIzTJrMUppxuEDVJbgYe+gmfL3tf6mS+sIXvgDAV7/6Vb7t275t2f/Vr36V3/JbfsvymY8++ujB93LOvHz5cvn+420YBoZhePuNLbTbXewHRWmyDmt7UPbO6pVsQQsPdf3W2rAFs5qEsiz2BrU0Q0IeDfxj92u1eh7wF2w9NT/a1utaqx2WGJ/lOaoJ4k6EIUSO3Y59N/B0f82Lq6dUVS7jhVxNuNdqcXhcQYnfyzp93WtZYuxudbonsFiAVIdr1wdKyqh62v3Z1+sGHmv3uvFvN15wjEosBhTQUtESrJFdbU/EaztQkEj1OqHqSDOwejVRoZIpCAVhZlyeS4i9P9mGvLOCyOx5oUomdZH9YY/IhMqdIfGWomtr5qgoXeyotaGgtsqaxatbTHJRlJlSrT4q1xOljsucrFXJNXuzvnXGNqi9cUN6qLD63NF2PoWQ/Rs7Kp3/bvkE9eLPz2xCt/GWF8i9SV8kVGLn3WFHcQbzFXRg3HgNiGCCuDbPgkppXbAF87w2Z25sKKbgrEh5tw8MfWAYjIuvpWYX5dEMThdufeq53l3RhZ5dPNCFjhhMWWhVU6oC0hlsP9ACfD6nazvWugYXb8ifw6QTFx0Zy8ikEzEEak0+/hmcSX4rWdY1vc53cUOiVEPKIhkkU+qF8/ianGcPn0KKgdxFRJSpnik6EWKrYxSKy4aqpnKX3N8CitrcV4OYL/OpDSY0g1J0zUHhaL66EDFbneWi5trhl+9vHtByz07fRPNWW8H5qrDYRG2+me1/qZL60pe+xBe+8AX+/b//94tSevPmDT/1Uz/Fn/2zfxaA3/k7fyevXr3iZ37mZ/itv/W3AvAf/sN/oNbK7/gdv+NbOp9WYXm6LvikCYc2Jhud1X6ID/BbTud20bI+gwcKqzm0FQMOLMfyCbmADLbHXFYriyf1SDG9dQl+a436xI5pcewWKtBa6VLiethx6Pd8x/P3uB6OPDveWC5IlZQqoVaKZAtfiQKNzqQpVq99MMmHNM9NvCDW+wo1z6hSKB6i8q8sE9Ooiyx0sAq+tjxaDifTwiKqgRiE/V7oe2WaYM4WU7+/rVzOEGIghETfR3a9wdEb03utQs6mzPLF2RIUpLUbcC/4Mt8xl+w5AgtP5XqmyAmJld1xTwh7jtdXHJ/skAjdG+tKNU/ZOtOWymVqdTYRiU4f4y5pEGtFYF3m5cEkKGUk1zNVM3MZLb9XC7kUSqmMl5lSlCCdWckhkfx4pRYTii481PMoq6VhFnUV8zYheTi0NTlMfi32uUUg+/jYc7WC5VoqrcttjJafSH20Pk1i9UsikHohdVa03ordzYiyTssxBDd4zLhpz2HNyTqbRG95ra5Xul4J0RWlstjucyNnLpgy6juudkeu90+sbqwEK2cqE1mdTNXzQQUh10pQE8KCoDUQgnpDPhOBOmG5q7lAjQSNdCnREemCkuKIpECNPdnZPozgN7DQKUpbOyxdAiRFJEakdhyiWP8lDWQNwLiQBmRvG1LK6iw3gA0EgiiV1p3bG7rSKMzqEqVYSnEWIJ02S3t1G5vRq6snVdXym1Uht/D5AoB6W5k08br+spFh6mAuHj7v7Ye36vPX2r5lJXV3d8cv/MIvLH//4i/+Iv/pP/0nnj9/znd913fxF/7CX+Bv/s2/yfd8z/csEPQvfvGLSy3Vb/7Nv5k/8Af+AH/mz/wZ/tE/+kfM88yf+3N/jh/4gR/41pB94BBpcRJHaNpiEaluFdGK1Zb3/DE9yCk1e2GzLQpqRXCJL7bFewirZ7A+go362yosefv4Dz2ozSas1m9uOaJmqVe0ZLQW+rDnyX7P0/01X3r3izw7PiV1HVE6VCpdskmTyYa+o5LrZJ5SM6yUtT9eS8S64rHCvCbIfNpqJdeZovM6UV19ilfohiXc0Ca5YACKijoyqaqgREKEqyuLgY+TMOdAngtvXs+IKH0fSMkQbrHvSMkok1JM1BopOVGycjdPlNmpV8irUaEwTiO5vEJE6LrkLe8vEC7E1LHfP6Hreq6eXnP19IBEGD6NVBXmPJPrSNVErTMxdKRuR+x2i9kRsGSwCXYvjFgGRxjnW/egZuY8UtWY8S+O1rtcMqXY+MUYGFLPLg2EIMaz1+ade6Ia0mKgNaNLZYZQUJLPlbA+Y6Atd2ezeWD9G9JwsnKDAqgBGyQmuj7SD2bddz2EqJar6mxuxOiINod3l2J9nGqtjHn0TtOmVNv6ESzsl3qjWBp2lb4XYmyeN2bRA+OcuT9NBCK7eE1MPde7J9wcn6IFplMxYEoeqRSCWDhMJBCrIrkYU4o6MWsWkEpMiW6wZVynCnNFJiVWo6vqusSQOnJSUn+BEChhz6QdKEQ1D6R6esGagpphEZL/7HpC6qilEKN1Db6fAjlHlIsha6VQ9EzVi5VtzN4RPDZW9rTQQtUga3BZLJJRW6C5GWfSmB9WgSdtbasbEwgLok8jRaMDNqAxWVYqunD6PZRNTfe9rahWD1JdKqwUUbBIVGUTNfjG27espP7jf/yP/N7f+3uXv1uu6E/+yT/JP/kn/4S/9Jf+Evf39/zgD/4gr1694nf/7t/Nj/3Yjy01UgD//J//c/7cn/tz/L7f9/uWYt4f/dEf/VYvhaX2qOWLfLDWLqgPVujbnhPNk9BVYWzG7UEJAW87PsrmPK4BV+buLeOBnb1Fuh6EBr6OR9WMH2BJyOJJ6y0TQoiBoevpu56UEikGz7WZJAquYFpTDlWsvT2BFoYRfJ+uSVVc1Jpsid5Kuxjtig0cS32V37PRL3mRoDjLwqL8G3tGXa1A97Sa1yZ40tzJgKvNZMZJOZ8hBPO0AHZDIvU9Qgc6UItAzUxdpdQLOVtRa7M8WsvK5jmoszAYAMCUYEyJrkv0Q6KWgWfPbtjvdsBrcnFONDUjwZCOE0E6y1GJkeh2nTWIlM4QjdVRaGlMNDb8VmxrYAdn/fZFW2phLtn46bQQa8E80FZvocscV2cfWICloc0Zs87NeLaiZ5v7ZZmHNjT+r4VpFjNNH/z2ABwR6pLP3IIlzENtYTxrTlgdzi8etlwMNtmcalHzTbDJIrxKNXBKKdaqHAlICs6/F3wc2pxq4VErum0N/tZuzduF2yaFRSRsohqzRCvmFxEkdogMhLQjpb0hG8OA0BGk8xYq9vwNmm6GlPE0hmXMcIBQdCaXLiUyytDvOOyeWNfgWckF66JbZl+L4mVUxdCitlAXJdMg6O05tX+PTWYvq13qNpUW5lvTDrW2Egp1tk+XMboZu+0gNuXX5NwmR/Vw82O5+Fq//JZL8HW3b1lJ/Z7f83u+YSxRRPgbf+Nv8Df+xt/4up95/vz5t1y4+1mbFlAJVnAnWJhFMAujxYQbLDts3U5drlVcu6nzbzVE0NYTWl4uDNSFG77Q7RDKUnPQEoQKrauRPjjzo/vY/N4aczSEaKs90apIbDUmSgk2IYf9jhdPn3M9HCyen0zYaLF4eXSS1FYToiESg0PCm8IQJUjvbnqjIDJBJyh9d0XqCnO5UKdAqTOhFrPiPEykijEwYzkUlRZa8/Ya2mrMKiqj2WlV7b5CREOPakCiFXMaY4IJp5efVF6/gpsb++z+EHhyc+D65im74cjV1XOEjvm8o+TERx//Er/05Z+jZAtfqVuYIWbTrTFTA3RdJHV7uq5j2O/o+4HrmwNPX1wR333Kl37Dd1GL8nP/+b/zP/77l5nnwuVkdWfn+Z5ZC306cNhZ6PHq+JTrw1P6bmC/u0YV7u9PTNPMnO8oH1fmXJyAWMklUHJvPGgUqihjycjlnrnL7Po9WQu9QC+CsLZoKMVQibLkFcB6eka33SZDcdaKMgEGHgBrmdGEXHWABhQQx4Hbw7SwLgVJQjeYohSHz5sgtleKcaOsoIuJfTc4u3qgzme7Xwd4NENOESjWSHMqCqESVMiufLKTHV/GzDhmuhAJqaeLA1oD45gtf9Tg0RhSUpw6KhDppWcfzZDVGlxh23yQAkzGWiGzIlaiZ55xEMLuKbG7ZgjXaHjiSsLarffdFfv+mhgSXX80phBs7Yt4iQpYLpiREIS+t5Bj1/ccFLI+4enTd8h15vXrX+X+9DXO51d8evllSrE5GiSi0ZRpiglJB2I0UlyrZ1dCaOUieJBNFnvFWTrt0paOAM4koYHiofy5rjyfJbTQoS6eeqMBXj2ircxaf3msGlpPPhFD5wLuWX1zNVLwOUH3fd3NDUB1S88sR108rI0LtWoCWR/a8h62b1W+j1yqxRq3P9pnl/zTotT0gYJaFZM8PNbmvA+f+AqRWE7oVvNy+GbliqWKQoz0fU/XdUu79QVto8bDB84KQFjGSmmIPhNTgdWjrKzU/abArOleVaPhUQwCXA16R4Ojt+6/lYzKBBKI3tlzgTgv+KwVUGEwb7cDxPjogoeyVGEa7bhdp1wu6o3VjA5o2B+4enJDlJ66v6aWgbvTp4Cds6gpwujFxwuvVfMQYyTEREyRmAKpj/RDYtfveHb1HFT4lV/5iGG3AyYu3gW31Izm0ZP1Nhe61LMbDuyGA1fHGzcuAjFM1iOr4rB63JsSWkFtVRPWWat5UiH6z0AMZYnxe6PuBWQhbqRZUzkfs40VXMkrWEXzRjisDITaqmk31u3WOkcsL7hKoM0YuqFnPHvmTUUJdNJbXitcCBjNlKEJN0tBHWDi9W2lenLe9aR5FhgzezGSHsFyfyjW6qF5UFJZK3JNwArGDuKNXig0j12dBaUaShKb7lJlvTWBkHpCJ8Qg9LKOqQrE0JPCYJ2BY0eIaVkDzam1kXLFjxCDGRmESCDQIXThilIz83hPyZOxi7Qi66oeDqxIxcmy1zzS6p20Z7YBKPFIzrVRWRTV1oNtXjxe2K9rlKVNHWQ1LuQzvKsFubeRnJv50tIVi2yTda79WtvnWkm1sIXg8zNgklt0qW5ffcxHD+wtk2C1GmADwFiLlzYKhEWHyPYY7el9c2O/KkjZXsz2p5/TBQ/iExc1AtIg3I1nfvnlV3my23PVRWo90sWOLnYO7DBPyqKSsg6JGBqu1kgUEHG0UI1IrQ73zqztsZUYhF2XqJqJoTcwQJmY8xn1qnQrCA4UNYspRiP6jKEniH3n7mRggRWdVswClsCwgxA7ul4cyl2ZJiXPSuqM3TzPwnQpjJfM8RA57p/QdUd6+U6iPOXlyzPz9F8YxxOq90C2+3XQRNcbs3bqhK6DGDPKPUVHTueBT18Lx/0Vx/0VMXTsjgNPXzzh/u7E/enkIbkTFGHoDlzvX7Drr9inGxIHpHbk0cJIXdwhQ0+KAzkr86zMaoWzl4tyf7JC38nZxXPK5JSZU6WTNwypowwVeghizN3ihZYWQi1obnmIYMl8oZnQVIzrzdCa1upV6EHSypBBa+7ZEF3W3bg4LL0UY52gCXYqsTqIYynuFIZ0za47EKWnj0e0wtQHyiUy1gtTHv3zXgjdrC0VcvbQb1Qr8FUo2XLOpQqt22wuE/Mc0e6K6G1LQlC0FnKZ0eJtOYKxUVjBt41FlMcrzMPT6o0uXSBXLzDuVJAqdDJQ4houp0KqA7EkA2RMiobipNMuyBc9XuxJucGAGut9VdAYoE+IKMf0jO56z657ioQ9OU/M44maJ6tZ6yyKAh25WElJjMnlQ6QxW9CMWL9Hy/sKayPL9reFVVtPqKyVvElV4CHL4AiM6nJqVW1ve1RbsfaZESNXfjjh9Dp3vvH2uVZSzYtZ/qwugEMbJrNpHmeHmqBeaiSW3NXG51kW0FZRPTy3f2VViPDws5+prHT5bEt4t+ncpsDjz29DixZDtzAAAnfjhV9++VVu9nveO+wJZI7DgRSOFtbxzy2TWEBa+xKMcRuRJcdu9nx1lNjkU97UVAoDMR5RraS4p9aJOV+Yw72h1vRCIZOrGCGvBFIaCJIYuiuG7ppxPHF3+4Y8TkgCSYrVfFl4st917A6JYWc5ozxXTneFy6WSUqDkwDzDNFbGc4YaOR5u2O+e8mT/PQzdF/ilX/qYaXzKeAlIuIBMSFA6v89uEFKH9SuKSgiFKvcUhdM58OmrQikzL56/yxAD++PA83dvCBE+/hh0Lsx5ppTMk8O7XO9fcOifsOtu6OSIVCVPRhKa4o4uRWIYyBnmuZqSonC+ZG5vs3eDNQGXusLUZbo4E1St07SaQIrSoSF4/tBqt1TVFAgQ1Gh8aKFtR26uuYdm4xeEzr234KUE6gGI6sXQhZwN+l5K9e4ALYmuztzeOh8b6nTXHXkyvGtcgOkKrXDqK1NSNCv3XjC9wJ3VQ5XVxiUXdYZ0n4kenrMepoVKZs4jkYBKJfaGYNVQDZo/gWqxJoYx0klacrICRGkCYxsaqV6sHS0cjpiSQug00BUDqdSwYyl3UaAGKMG8r+J52IXJfpUDUirBaeNbl4aSDeihXYRjT4iBq/0zOOw47E50u3eZ88jdq68wnl9b14DOZEEtF+ZckAR99PDvUpPUbm1JQlgXNFdOhvBYe9iVqoy5OO3RTMEMxaCdH6+zuaQtRMeDXpUmuT7bIv9sRaVLDlGQDXvFN94+10rKFMQ6CRtYwTxJi8o2ddAsjEUntGNs4nJbn2mdxCuiCvdqHvq77TvNNVb/jn99/c8P177bHuFnOeXb464e1ePvtBxaLtbW/m4800cjHR26wYoD1ZWUT2ZkBVMs+bLHE8+FmsiSiWcZZW8hEUNv54+mOKtzkAWyCcpqgjJKR5BAH3bs0zVRO6737zGkM5PeMuudPRtnaIgSF+t4NwSKYRLovIbmeNUx7BLDLtH1zg7hQ2ptK4S+79jv9yijde/dWPsCxrrh9VchVGfyNhBCrhPjeGYaduQ8k2IidZHDcc/lMtH3vUHFQ0ctsOuu6NNAl4aV3UMUcSbrEAQJgb7fczw8Q2LHeP+SacpMkzLPldaJVmlhL2NcyN6yvTagjLSAjgVoaRDkBlxRdWZ28cJmIAS3YLcG0AowaPVf26fcArLWxJBFprcZ2TwK9fBFDB1dTAzxwJCuSaGjj0eqKH3c0acdk44IaTHodKnhaZ5HdTYUFiG6TndHzXlZQ9HCnEfO4z1R8DCgjZU1RmxAKl3uTXw9b/fbORqopD2DFjD0ca5ipT9Oc7V01G2RRa/5Ah/7Yqzk2vqZqIUWl5yssoTFEdAokIJT5hksvks7RAK73bV5YcHyjVApuaNWz8+FzvOCRi9lYJz2/NdQ2xICra1Lst1r0cpcTUkVL9hvxNmC2D1jIKbQxmgxdraySNeptXluK8uE79zOIV3n7a+1fa6V1Bqz21oRGEGkyVOPoyqWJdU13OVff8tvWcbflZM/0Caja5PVcavU7P/FW1YXIounJ4ulijZP5tF1b69kW/i2/O+KaoFzes1HUeZcua8XfunlR3x83/OdzyZSiqTYsQ+BSIXYQ8RrmOwIueLVRKu3KE0dSVyqwlUrher7TGsESWgsdPFA1x0sHCMGupjLhbmejC17zqBw3b/Hi+vvRhXeufo/yCXzwaf/hY9e/Tcrqq23nlcAotIl4fgiuQdoA9sNid1xoO873n1xzfXVFYfjYM9YK11fGfaVJ093fOHb3uPuLvLJJx9yvkw+XlYvVGZT7l1XScO0WO8icBlfM073qGbu7r+IauV4tWd/uKLvd3zt41uG+5FYjoQy8Pz6i9wc3mHoDvTpSAqDwcDjhIiQ+kSIiWfP3uc3fPf/xevbT3n5X/5vXn164v5UuLuzQtyYrIGhNuCDBk4zdKpcV+tKLC0E2+qdiGsuEGxyNplU2jyNhkpzhWlhlhFjD0nggBmTIQ5wqV54WowNQx31ZsEF87KLGlN+FweO/Q27bs+zw7fz/PCdBBIdPbVUzrtMncxbf33+FJjw9DyrXwa1ZCd9tRolAWJoBLaR1O0IBKszmide3X7C5XxP33U8u7qiT515y9H6RyHtHBXBkI7RY3XNWKN5GSJef9SGzvBttVpdYciRiHkXdm1uJC4AEF/4uUCpaCnk0eD8sY27QHG2jioJDQntBL1KkCI1qnv8wjE+Aa0chx0lj4usUq3kfDb6qzyjedyUBcA8zcx5svlQGoq2LAaIYMCm4sCdUgtTmTw3XRy+H+nCgEiki5WoBuXXYPevod2/cRSuMaBHMPVVxK666cEf35yCgv9dlNTW8mqKYKn4335WH/75mcdr22J/mfu8GenmCL0dBdTFm7O/1mO04zRXbkl4PlBQzaJbr3M5xUZxNZisz1z3pir300ghc57HpXBVtSxeZTuObA4pyzVvPMpFi/tiVoej0woiMQuSCFFIai78Unwo4pRJxReZ0oUdQzwiEujTE0otvLr/CinsoCp5Ca2aqAgh0PdmIabo7AR9Yrjq6FLHbm9Q8ZSaMWBCPMRC1wm7XU/OvdXwOHy7DXltYWEsvCTBPDcRjE+vZqZ5ZJ5H5nlH6nr6Ycduv2O326MlkPIVsRwYuiu62JNiZyARAoi1i6cxfQehH3ZcHZ8xZ+P/G0dlnqx5X5sPgsOA1fIwpYCIrr2OaM0jBcszNfNlnV/L3HNgj4SwCtNmRLmaYOuNbWb9gyLsZe57mI/VO7H2LYEuGHfeEPf08UggkrSjajFPqtvTzTuS9NZlmWk17NySa3nPBhYwheC0SiJeBtEKz41M13pB9RQdqDiH9xLWbne1Xv9i6NHuxxdBA/6sV2R+lFOFSRWfNB6dEQMRrA6Z59OqIsUKyus0G8NLDNYFQMTlhZhb1HqGpIB2YRkPESFJB6pEAe365RmoVmKwWr0io0UZpRKDNRLNwdGbWg2EonWxWxYRAoYudULhuY6shcEN6RttplUD2phOb8duVrob70uqRDZjyoNNYPWOvy5U/etvn2slZYlj2QjVTVZHoeXlbWuoFodE+hHatklLbY5tO5qb/mDwpZ1t6+qG9U0a4GH1hh4+m8cH/Hr7tptsfrhL6FZhCcKpFOZZucsz9/lCkcqBnV+nJdtbY8L1XtUVl1/n4u0JREPyachGV/Tg2lrNTkTVikfFQ11RAkNIJmyGjCj0YQdlRkKij3uIA+/f/B/s+2dc5k/55P6/MJV7NIxomElJ6ZItvr4zRRW7ShdmUhC6bsfQ3xDijrkWpFw4T1+FODKVj5B4QsIFJS/1SbkWq391RKgiC1FqiFaHhUXpyPOFDz/6CkP/mqc373N19YKh2/M9X/rNzBOcPoHLLRy6G7REgyR02Yik25hKo5yJDP2RZzdfYJ4Dlzvh048vEIQUe5uWePJ/tmsNQdGixBi43Y3s+jN97Ai7jhia0bExpGheb4v72z9RuyFx+iKbMx04UKaFEHPNTt2Tacz+rfShdS82eqaNsSORxJ6b4T2OwxVD2EGZUMLijdwcn7EbrjgertBYueQTr85f4zTd+j1bPieI5dgqTfmtazEgjhIFqlNEiSLOcThNb6B0dJosVxeStVWRSKBzAersEG7k2fxfgRPGrGJzI3h4lWAglBCdNcKjEIKw2GyrLkSqXWeRyh0Ts850YiHp2PX0T66R1EEckNhRU6BE5xCsLNe5xjQ8dyduHEggDXtgQPsBHQZEoOuFGOEcLwROTPOFl2++wjifNnNw0afM1cogai3M1WqyYorEGFeSWw+tRi0EtaaiIoGItz1ppS0YoliWK25+22dKLruOt4XhN9w+10oKbTMFFmt0GY3Hrs5mRjULyb62ejMPUBjtx1reuuiQJebNesJ1B+sjka/jwD1WRlst+FmK6jP2twymm+A1wKlUglbu8sR9GSGAqsWZlQJaaGSja3ivnd8EmNnWGHQ9Og9cxb4LLcy+uc82hZpFoEYbJAOi1rhOgD4MkGckWs4ohI73bn4jL27+T+4uH1DDHZfpEyZekpmIUY3XLQh9p9ZfKFZimEnB2a/7awMklILkkcv0EcQ3zOVjQjwhcaRB3S3uno2hxHM+1dF+Eq1bbAuDCpDzyMcff0iMA8JAl64Yuht+42/4DigdH4ZbPq1nIjtqiZQKMRZCdM/IOvvROpsO/ZGbJ4nTqTCe4NOvXThcDxxvdiBqyDR1gEI2DyLnSgjC3e7C0Ef2/Y59f7RWEMo6M5sT6t5Pdc+EpgRcaYZoRk2Iaq0SsL5K1qojexdhjxMu4WpdqLBMWbmfUQOUSCd7bvp3uRqeEKVH6wwYOSkEro83PI97DucDNWRO0x2ZibmO3kdrAmXNOfn1L0pKTGx3bj1VJ93VpqS0ME/q3a53wACxUKP1AVuiGYtxtjaDXCZzcwt9ggd/SyR636toHqk0xcFKd4dilIWeuxFQyZx04qwjfejpY0e/G+ifXROHHRIHJPTuqc2r51paSL+ty6ZcvHxCWEtNtBB0j5U+RGeOP6G1B15zmU7cnV8SQnJ4vC7UZ3MxOq6qVmwNMOx2DDIQPC3S8tGVYiE/HEXoClpciS9q1TW/QSI+W1Ftpdk3tMUfbZ9vJQVtNrFYlYtjI4trKW0ViyyTdtUJrsxWf/8tLS9NHMjqta1eRUucLjNrfUc/Y3+zxLb6cKtYaW7zW77e8vBXB6hZte3b5vWdp4lX97eUXebF4UgXAyEmtj1kHig9aSOm7pnik65ZVV5ErA2KCuqUNbb0gyv9Fr7ZXPh6+z4mSsmTAS5wKxphn55amarOTNVgt8EtNQNVqFUXFKORmccTY3qDlhlBKHPP2F9ZMWa1BniaC1fHJ1ZsIwUJM62OQxXmGc5nJXWtCZvdW3ADoGqGKkzzyDidofZMMrkuFmLsiSTP87E468tPgVb0E2NktztwPF7x4sW7vP/+F9Awo0yO+mpEnuujycUa6k25ME2ZFLK1FgluwS6ghzZXnN9DzPuxMJrV6Sh4+NDDaCFTiaiY95JLsVYSZXKKpEwtxbn8KsXcquVsKfTsuwN93GO5vhapaDbfxiB0Pr0+DpSYSdIRSf5c7ZjWybmNv9+RtvDf6jM22yyK1S/FEAgaDdlIyxX5olpM9seLWhabSmq1Oq2ikN1zrC5TYlg6ez+QqQ/Wa1t51oqjlsKlnLnLt5zKmTR1JE0MYYLznq4OhLgjhJ61StE8eIoSY0eX9mybF5qHOwOQixgTWy1InU15ho5IZM4XzuMd5/FELtkZOzwK4ijQqso0F+Zsyt48NIizdzcOEUkWBQiNHSFAqBERz+dVvOO2e9zb0RHWcX9sv9Pe8/3fpKL6XCupda748t6G/lYdwuJV6Sb4Jg1aiS0kR8M08m82qKZmXzdYb3NEFB71vZHNOduvj65nkWIPdtIUQjub0mz67bFWz0fds2lgCrNu7WI/vn3F6fKG58crnh/2xAi7KOwcWmvCyaVoA2IsqMRWcNkQSOYVRLEkfVjgreYhWGK9WcBr4eJ24rZwo1al6sw43tre0CGSCCgvDt9D0Zk38477Yp6fFQRXtIzMOhO82FLLzJtPP+Ry94a+v2a/f0GfDoTLDXm4Jo1XfNuLL3I+npCq3D15w/35Jbf3H3vezMIdd3fK+aLs9oG+N0qpFh3RagS0tY7cn18irzp2cUaHK4LuKZ6PEiLRjZfQiRHLRoGoqNTFMxmGA9dPnxC7xPd+7/+Lm2fP+ZUP/zu/+Cs/b+wCXmMmRAKJgnWhVVHu7ke6INSs3BxGjCdOVwJinzaeKWKlCGrdh63lQhN0rdOwSrRWHsCUTRFZ3dtIKZaXK3k2xVi9UaBY2PCYbnj3+j2OwzWBgVqcqghMSYp1kC3lAlqIVK77J3TSsQ9HenbUUsiT9diKjesuKF2zNEu1jiTBYOFBlM6LhocY2aWeRKRnINbovZZwSLk18jMPJG9WUKt3DOY9TcVQhZdKnW0NlVIRR8yF2C05vdVs3JCHqdLqzMZyZpzPvJlu+fL5f/JmvkNOAkHY3x95X1/R93tiGAihR0IgpLSg5wThMFzz9Pp9UrD2JwJMeSKXW6y9jOVsa8nUPBND4Hi8pks9r+4/4cNPvsI4nzmNZ+ZcqGp8hrUawKpW5XSeuJxnqxkcjMey5MI8T8SUqIMRBKtaVCSESA3FQ4CZ6pRQxOqgiuSh/o19ttRUNWn2//v2uVdSzeJa1fI2LNYsTTYK57GC2oj+Zsh+JnBh+8fbb6766bEH1OTIxiJz4b/5xIPvPtCvTQbp9pPbu1sngfpNTM4ns+87Zk+QGqppTaxqy2dtLJ52dGsLL+vf7f9HgyF4yMw77TaAQoMoLx4mq/uiYOS44uQPwT7YxQORQlf3pNpj7TbymmNxBWzFzJU8T8birD1dyIRaKCNkBKmJXbcHhcPumlqFUicu060Jax2tRqgqdVZSYmF/MKILMRSbWyw5z0zjhZBGJpmJjhIMoRVTbjypxpSxDJddrwShSx3DMPDkyQ3Pn7/gk9dfoRWpNubv9hQWO0kNFDPPmbkzXr9Ygimapfe5n6mxhKwgcldQxYtzjRBYPL+gEq0GSPHCXesWbJ6UofqsHkodCGMF3aJCDB193NPFAe8VuwQj1rlr5w9+fSkkUugWT6qFlNo4LzDx7XFUl0BHm01BIAYhhUgk+cs9AWw+SiOzlRWUsszeTXRFGzbcXw9rnXQDUoIWpnkrXOh3nDUzlguXcuZczpzzaTFma6jcX96Q60RwJRVCJHZOhCtGiBZDpOQRiY17EGqdyU5KXJy2rOampCJd36FUxunMZbKcVCnW+qWodSyoVa2bcVXmOTNNMyEGJAoxKrlkQutcXDMQCdXAV0bMkQkEqhZT8CpUTR4aXT1V3coJbTEoeSvqA79OPKkm+BAcbbMppFtqppr20CUUsRAtrlqJFW6+/r6slAcKsLlWLSz29kjrg5duJRaPVMqjfVvXeKtsHx/9M/5edq8ekpIoQcjBiSqD061ocYaOQOsBtZTbL55o3XiIRpPU4Lp2PgNSNHZmo4wxZWXFoI4fc1qmIubD4EKnWQ5Ss8N/k1l8RdGSKDoxljdUnQkxE0I15m1JiHbEfqAL1+zie1zH7yHJgZRfAAe6GjnqQC8z+bjnujvzzpPfwPz+hanc8+ntL3KZ3zDlO6Z8TwownRTNlT4Fus7oY0JNgHC6PXG+/RqHPtBdZfqgxGwh0LX1R4Mxi0eK7DlYnacylRkZ75jnievrJ7z7zvt8+Sv/ncvFvJaUOkJo3XSrB+hs/MdL5nWuTGMlSmToO55cP+F48DFsnwxmiFQP7aga4721sLduxcom/UJExdszOOFtqZm5ZAvzFS+SrQJqnJJ96EgxMqQju+5IH/dEeoKDZ1b8n5s2xUOZCn3sQZXD7sDVfIXMM3OM1OoGizaTqwlBN2ocKSlYZ9xU4ZiueXp8QSDQ0xu4wv2RGBJ92tnzUQtLBQmkKIuANfY0QYsXJEeBWk1we34yhWAxj6qQs41dNRkRQkDiln9OeD2+5oPTlznlE+dyS2GELFACY7nna/or5jE6C4sZBzZOfYp0IdKlgQ93v0CMHVfHG/rhwGW85fb0klKz9T7TuqALjdV/IITA6XTi9v6WUjNTPjkJ8sxcZxo4pIGFUm+lJCUXa+OuSsmVlEy5xRAZ+kLXZef61IV9IspMVFOMQSJRqxHsWi2HebJL88UGT/+1c1Vfb/t8K6kmyDeWTZPv6ohRY0hvlnz73ANfhWYILApq2bnZHnlSBtKQRx9Yj7o93fZS2x8PkXJNQXyd+3tw1Le3LY9g815a07sqQgmgpk1MSVTPf2wZzWENAS6eoSuUpehG3GpedAyIhWNsAQRaX5vqSir6sYpazH6TPrTFhj2jpXdNVbRGSqlM8z1VR2KyJnsQqdHofyI9SQ4M4QWH8N0k2RPzHtFE0p6OI70U9HBgGmbSkEhDx3l6xS9/nLk7f5X7M9yfLwSpzCOUWZG9ySsTZ6bAz+cL4zRRdgeuJaNJGcJWSeHekyyKuz22pmy0zOh4JpeZ4+FILTD0O8ZxppSyhH9sWLftTWCaMmVU5qkQgL5P1uZ+6JZwShv9EBpIxMJ+uY7G1qCF1iJlbkzsbZ6oKVNVy01lZ5gwgwGMUgdD84WBLpoX1cc9XdgRJGFtWIzX0HKXNih2HTZWXeggKvt+x2HYU+OJc4gGl55A8xpKBitOVlUjf3bbMKhVvO3TgSf7F0TCopwCwRRSCNaqA0FzQ0t66xERaM00VdDoobtYoYY1ZCViYVwwg6zYcyyzk1fHSKypCQIUuJvv+ODyFaY6MdaTeR0lwhyY88Sn82sz9lKHxETOlctoym/fJfpkNE4xRGLsePHi27k6PuN0fsOru48oJTOXiaKFKNEMNl//TYEaIY2FW5XKnDNzNjCLdZQ2OZD6SC26trapSsyV4l2BY2y935QY69ItAKCG1oQTbyXiYZFGZyuykAhUV6Q205bs/rekqD7fSmrjSbUdpnCcCsl97WVQLAaxseYX7bTI//bQ/WjLvjXuhstrWR2PjZ58oFgWj+HhJT/+7S0N+Gh7cH7/7qof11DjoqA9epFL5f58oQ+RnSSO3bAO1xIDWUgP/VirdajSSi0dHbVRYosy29yKsPLjhRgeQH3tlKsXtnk8fig7T5+eUEVJZUflRNUzlQvohNZALU6sKwNdvKKLRwsVhgEQqheeBr9m0Wj5GzrLXsQrXlz/Ro67F7zufhlrYTKh3CNktEIp67xQ9bbsjtQT43Jax0+gNR/UolCKKV3vLtsABcH/icI0TpzPZ0qp9GmghNnJgdfBNKG7YVDx+qBxNjTe7d0ZJBr5afI27h3E6ErOgRi1Wkfm1qq+4ui/5qU0RGC1V2l1PhVnosfJbKuNlQ9NJNKF3nInzYPSxqpvRseaI14ZC6x2b41WSKNGwm708aoASM6gkoKwT4k+BIbuQArGZpKamhIjbhUJpGC5norREkWJSHT2bWdVACH0ztriVEXux5niaSg2WddYFBc5Fairv4sq+9zzQp4yMgKViQnrctu6Rftq04pU8y5Da5jpPIMAOc+UWrm7uzUKsPnEeDFjI2vxikQPrDfx1WRWi1C0XlO1uhHrkkksotJWuXWdtnusanVeebaIRgxW/JuS5ahCsFYpoFYDWGeqRERmU3LYumiACgNcudzQBqtqntXXM7nf3j7XSkq9xmGNHumaZ6rieZeNIBVh81R9Z32krN72g5ZonRt5EmR5tX1W87G9ukeK6huZDhsPKCwf3KYb22L3690c7KE3Z9ddK2SU8zjz0SevON+f6TRwPexs4gTzoMya1kXRrzF8m1BhAzu3LW4GoimchqlyRw3r6FrFyD91Nqu8KQ7z5Fw4xuapBVf4gWP3nVyH38RYXtJf9szljtP8q4z5JVoq02ShyiQ3HPovcOjf4zi8Q5DINN0x59GocUgogag9QiRqT1cHdt017377byKkyFc+/ll+tf8Zxvk1b+7/O3O5M3TW5EK9WgfhyhENEWJCws5fqWnlphngMsNc0CFSpFusT5HOWBgkMZWJN2/u+PhrL5mnzNXh2uDnYXbGDfeI7aoBy/sVtWaEd/cTiHB/znQfvWYYOm6e7Oi6yO5g3YtFCiEYsWzrX6Val1bgRVu+a+2enLOF+OasTFP1PKAJ2JanqbFae5wg9GHgqr+2EKWujTSbhb3kJiyOh0YI0lmOpRTm2dqohBwXo8rWma5epHNWDv3Ak+M1fex4OlzTx56r/pohHd1DM4Rl8AS+odTcbk+tbY8ZCiYDrOhauwC7ZD2/6kjG+BKpHpmIikT1ue0GbwvjzkqZslNUFEQr75Zrnshv4l7u+Z8aONUzo1YmrYwyceZCRgnVFKcQ6WNPIDDESNcF5nnmPF2oFW7vZsv7SDX6Ll+CCBT3fquaUaVq3QHS9noB3CsXwcsjwkLVVVWXFEDN1ZGcZtyKmMHXdYmUkrFnxEjtlS51lFCosTjqtxDESKQ7NWaa6D81mK8rWKTBaqpMln1zzH2feyWlzt3XlBOrrtatt8FqtstW6G4U0lv71mO1vQ+AABuHYmsRqJ9q+0ZTcg+5rNq2Cnx5sG+5jOUaVgXxjTZZxqZUZZxnuhCYHZIag3XNXdA32q63XZndv7T72OxubBIPvanPuAK31qjqlEVuNS+HWsdcN0aByfyOFA9UvZDiFaDEPCAkrO19cZ0areGc9MTQYU0s7HgLK4KuD0AW4R8Z0hWp69l1NwydUdBEGShMVB3R4rVVdQPpXq4wskgKHlr+1Irmagg/7wi9GiiPxkqsNqjveiRA1rxZtHa97Z8unY7N20Es9FccKDFN0foN9UJKwXJTFqdj6Q22/NyGmjfj5DksbeABbR4PSzhIg+UlokQLSTmiS/1ZVl37uFV8bTa+QW0/G99gW4d+l/IwAC5YPlNU6GKiTz197Om7PUPsSbF3nr7NK0QaI3jzSowgtXmnzWPbRALUiIxJxv5glft1vQh3BJZwuh+i2g2bnCmGEOw0WN0chb0MVCmG8Az2rMxbUiJhMaSS7AghsBs6+i6AntF6opTCNE2UMhOj0EU3jFUgGDnsvIRodXlWTQmYcy9Yl2wWuWe5Jdx4F0Lw/ZvBb6wfJVdECiJCKUYtVVIh1Bb2sy8XKT6WmarJbZMGprH8bnMW3GmjETF8M9vnW0n54vM/Fu1j1dHywCFawRCKAQEUmgOu7rdsHCmzJPGQlywyRoK0oPUDsQ5QF1jS6sFVHj6Ih25uC4HwSKFuf+pyDRsQzarHdP3uWsNl21QKLy9n7svM88sT3plH+pQ4RrOmtgCT5ZTOAIB4yIyWwLYB0VJd/4blPp0RkKaYrZ7FBlHmimRb+DVs2LYFqlQPCynWZ61Qw0ipBiDowzMiOy7hnigF5UKpt4SSjDaoquc7epBIJZBV0TJT6wXQRUBZ4ehICCemcSSEyDQqh/DdxPiUS5qJ+obT/AGX/FUfkeKjYpayBqB2iPYWehQQKrVMRolzmZCzIaPYKUr0fA0UrYyloKnwxe94j5vn10zzp3zta7/Eebzn0/vMlAtUa+fdni1AionYdzTvWsFDi0oZK69f3pKikOINu976W1WZQVpJb7PRmrB299+PFsSFXMtFtZYTrqjymJkvE1eHjne/8A7XhyuuD9fWZNTvDdTzXtUVlntDWOhp0rKAMuZSqJ4zlRgQrXTJBV8VcrEw2GEwyqlnhxveuX5OFxLHeHSUYCQ1ItRHYWQkWI1TW1xgc7TV/SyVuCb0QxAOT3boYWd0Riej8krRarGsz32yQdy5cLgUNBY0GxxcW2ffCjvt+WJ4hylMvBpm3oTMzMyOA4VC1w2k1NOnHVeH53Sp5+bpDcfjgS9/5cv8zP/np5kvJ8axkHMlBshBQNyzE8y79ifY8r+k1YDo0kCKkb7v6PuOOU+8unvJnKfFO0JanqkVKJtnXYuNY54zOWcL/1VjPym10nUdKXUMWt2TUkqIJDXkoRDQaDyAQTv3qoLx/rlcDg+chW+8/W+gpHgg1Ju2XkJYW4FfwYPJ/k1fwstndIn+bR2rNdy3uESLLnrrWmTr+bTF89DrMEX1thXx2KGRzUNsAkY37s1y+OZxbbC2ljRX3kwTXcnczSNjmd2I7L0o0pSM33Y7w+r5hNYKcdH0LFDpEBZFZY0WXfAJWOtuF4DFlVSy0BMBalhtey8zNdZmEapORp+hSgpXBHpSuCaGE6UGar1QJDlk3MbR8kRNSZlCyvkCYKW2DqNVL5e5nE+AhYOH8C6EPUO4Q8ORc71lnkxJtRCLeLiMLFATqIUSbTo5LWmtxGlGxmwhphJ8XDIQFmomgvD8xQ03z57w0cfv8OzJDd0pcDd+ylyaAE3+HCzcGkOk7zzp7cQzWR2BN0/cn8/EADdPr3yOK0p2r6V9RzfOvSPcxNRecQ/H4OYsVjmekypzYb5k6OFm/4RnT55y2O29eaZ5XtXzUbg31VDctd1SKcxlZi6ZXOy6lOCovUAMBjhxoBkpCFfDnn2/5+nhCc/2T4khMTB4GNRayqypQfGl7M8MV5LSForh/5a+9+u3EITYdQQC5Sy2TqoSgxd2xwBd2kQcPOdTLZxdzsbmYsXBQkfkebimSiUME9pPZM10padSGXZHun7HfnfF85tvY+h3vPP+ezy5uaHmgf+7/hx5msmj1TYVsd6Mdhtqjy8o2pqX+goNItRihlGKO/rUcRj2HA57zpd7Xr76GtM4LbIihIB0njuVYKCb5pV5nk6LKy2BGIOvUXveIXgjR8GKs/1fcGYKawjqvrKXBRg92yJpvqntc62kmuh+4J24qSlqIZcHQL4N6SS6iP1NXcYSiNooqhWRsvylSoNVmv7RVUE+usJFF7Tfl+XD5ogPg0HLJT/QdW9dxWeMRlNs7R4x61jh5etbflECV7sd9cVzhq4jpZ6Uus0i9uOoTeItICM42GTVoY2Wpt1VC5+YmyR+A5GIoEQVpPr4hvZcqi3udm8q1DzR+BiTdGgM9PHIHK/IQSjljITA3fkO1Q8p84Fd/Kq11E7Cobtmns5wsUR4KdmYqdUjOUAT9Eb6GZhLAd2TgCG8xzFOFD0z16+iZFI4kOI1XTp4uBRUM7WKc+JhijkXwljQJOg5o51aHofqbBq49WpJ/T7t2O2OzCWTQk9gBM8ToWufqOKEoPvhwDsv3qdPPeNlYh4njEDY2pM/f+ea6ycHVEY0HqiauTu9YZovRmETk+WENi75QoTrQkqW1hOycFYO/cAQB66vr9ntd/S7HknBaGpVlzDfApzQLYLLKqMbcjSIcOwPoMqpFPLUW5nBEu7TjWKxuRgl0MdEFGOWsLXWVk3jptvMv1UbewG5c8uJxTbwdVKxfkuKoK0OqGREzJhSZzbWFNFuNQARqDlQU6Ii5H1GE4QaiN50VcOABqXrC1e9UXLtyoWqStf1xNgx9HuGvielyP3dLeN05tWrl4zjRJ6Lt/vwpdwMY8/pEkCjhe27LiFBOOx2HA97+tRxc7yh7waGoaPvLST+/OY9LtOJUmeKWneCUpqid6b8iDfOtDlojBQW7tOqhJDdkMG7RrfQnxJjk4lKcDBFmwmh1a5JaxUkm/X4jbfPuZICNqK7eT1B1eo7pNXwQGPzRnUtgvRvLot2/QjLAvAzLNVNLdclm5P6x5tg3m7Nq3qshPTBexuVtby5ebdxwTxIEm2P6Fbycv+urLy/zCyVX/zKh/zir/4qL548YSpf4snxwNPra66SteNOjYK/NgW03luQhg5aXcwqbg+J0FZNcFRPVKAIUoQOF+o1oLNCxAETaoLdF0vr5aO1onmiSzv2u2eICHP3AhAmvV2KUj9+9REf5o948WSk5CP73RO+/Yu/iSdPnnG6f4OSyfPEeT6R59HakBcbQ1O2gkfM7B55Ric3XKU9O/0iY/mYl5eRXO8Z9s857N7lMDx3njSl5JmaCzEFgiZElTgW0ilbnx4pMCTqMCC9qepOE0Kgi3tEIof9E26ePAcR+k8OJIdwW/FtNcGgrYio8PzpO/yW/+f/xdPrp9zd3nM+nQgh0HXO3eaEvJWRzC1TPjGefp7b06ekfmDY73y2zCjZalukc6u3Up3xIYS69JHSCtdXVzw5WGuUJ0+fcDweQSOz8yKquz+NhHaZ4z7Oq7Fn8+yd43Ne7J/yyTlwqS/JdaLqTKWYkgzqbUvMsEgSOUbrsdQ8LZvw1kZdnPC02aCCmAuH1QGVUlwI+5UUK3Z3JiRfbgamCNWaI0oI0CdqSmgK1qBQwOLSSqmJPAulq0zJjIgkHQkrJdAhQQzs+8i+t27X5MkUtocGY0oMuwOqykdf+5DXt6/4lQ8+4O72nstlstOJLJB5xW7LyG+BCDEJ+8NAP3TcXD/h2c1Tdv2Od67fZ+j37nkpc5447A5MeeTjTz/k5auPrOijzIDS9z2pS2Z0uiypQRxUUpmnArSw30yeZ2rJhBgou0pKHal27klZ0W+USAo9Gq2eyrw9KyC3IvJvTkt9zpWU22ui279ocMeGUrM3XUGJPoqFrspn8zHbmqJoE2OjXhbX6dH21q7lAJt3tV33Z313E2P/jGMJ8JnPVk2JaLMa2zn8s8bXNbLvR87TRN91lht4kOjaXO+ifDdpdmVVVg9PTQsYtjBfg/K2JnTtLAs44K0bcS9LjW9Mva21WWGJFHYUHRHtAaxn1TwzzmfG+URMPUpZwgohRGOv9pCkqhenwmLVN6IBMPZqK93cEaRS5UzkiApE2RNlINCxFkM7zLuqSY4KUqppvezaLxv8qj2X7TgL1m2363pS6td8Cdtp4eGTECyH0Q/W1v5wDcUZCmKk75P3ivJEvUaCGw5d2lt34DhYr6s2Jao8eDbiCfal19km5h0kmhBKyTgOQ1gg6rR8JZv7bB741nrcmGLBIeBpQX4thWabOcjS8yjXQq6ZtSOxrDbmAyAPrHnZZnSqs5XUdfbVCjUv4eLF2GpPSGRlD2ktNTwntJxaZHnVKCbQxfJsGiPSm5IKXTLqI8+Ty6KkipEQY57o5XLm9u6W8/lsITdLeK7ybLNUdDO2QYSu6xj6nqHv2fUDQzfQdzuGbmfgDSokGPo9IUaGbkffDZ4jXIPuK/jC1r+0rrwLIYIZkRUowUhqo6oZAb7ulh5cTrfWKLnA1w0sYIpfH+3jga0nsyorLxLduv9t0i6iUn1BNmTMquhWX6VuHKP2PdlMmg0Hn83c9W8eLh4akGM5fnOExXNeb3tc7VNLD5evY3m065+LVaN3arSnKUZ6r0avpTJpZszwyZsL4yzEuCd5/yXZe+vuKuvYPfISWw4DxUkr2zXKJl4vSFQkVAiBOHckxFodxEgJioaZvFAvhXYEUChq9SSXXJnv1eCsXceuf4eaEzKfoV4oOjNzYSwj99MtGoTbu1cE6dBSGfojKQ6UXAmp53y6Zz6/sTsKDdptQiWiDFWduDOheqDnPWr/W8nMdCGSSoB5z/n+nhhGq/gHZArofUQK1EshlIpmRcamDMwCNQaFbICSOqGhMgyJm2dPKVKQmChuBEj0gmBz/Xjx7B2+8P4Xeefpu1wdbtj1R+QQ6ONgyK/eEtKlYtxzmsn1mhJnvvPdgRdX34NKtfYZWhjzmVJmpnJinN9AMKaNKEaLNNbZ02yWo6qNdLUuhrntK+VBWLx66K+FnAXog3HqNSfc5ulkArJmBCM+VrIpWSwUlKvy+nyHyMnm7jSxSzueH99j1+3N69dAqAEtCWN3D8RognKerd9UrRZSNongoT5mrEjDvBQhEGJjEm+UU4Ew9EhKEKzoFzXEG9Ug27lar69MsD7HMVBjcJ1m3IWaLeQsYqBPEaEbemIMjNPEp7dvuEwjv/yVr/CVr37A3f1IrXuC9GidTMC7sqUZiOKGSxfY7Qa+8N4Lnjy5Yt8fOQzWGTkly2EGR6OKBI7DE0rNxHcSN9fPuYwnvvb6Q+udli+cp7Mf1xs8xlbzKA5VZ+E2tLyjdSmoVUkp0XUddShWltBXo3jywvIg0fJY7l3FYGTG38z2+VZSCwEfbC1/pAFtmz2/WoVNDa0e1Sr41wZvJqa3KmENd9k5VyH+yEv6LPdqUVQPTrdcjWw/J4/eXTy7VXWuns16sKqVXPKmIDGhEokhkWLkIpbsz0W5P8+oBm6uMuNUUan0TcE8utRWBdWq/tfratbzMqLubbpCC9akIoRkCWgxbyWHyujKbstpiPq+xj1RjUxTJHJMT+njkVgy6MEEp0YTbZqZ8oU4d1wuZ4Z0IsWOPg0ESXTdCAhjOBt3XRtLL8BtxkNSJVW8TXhPlJ45HSmiKPdQL5Aj8zhSwkwSy69oCTAnixtly39QMZBFDJtxqhtL0npspRTYHw8M42mpW7F6H1kMKhHl6njNe+98G0+vnjH0B1IcoMfqgwKk3vIJOYuFNWslloEaKs+v91zvJ+YyMs5GmdPNJ3KZCNNL5vkeBZKDZKJUpM5uNTsNUAMTtXo3xfKLDqxYveSHXmOwSdoygLjjRa7OnFANCbZywa0eQ1WY8mhjUkFL5dgfOe6e0ydH5bFCnMWBEcbOreRa0JJZGKMXAxXQmWY4iDcENafJ8ybRW3PEaEpKNuu/YswYZS2KrkB1dhf1Bocihiyt7nkECYYQFCGmRNd3jCVzGs/cn+755NUrPvrkE/IcUO0R8RYptWH4cNnjayxAioG+Szy5vuLF86ck2dHL0aiKGpLO11cUQZJFFLrUc3V8wt3pDfeXO8CY/udpJqa4IP9aXrpFHlSVPFn0pRZTVsFbmFSPfIRgUYwYPTzqYdfgpQFRWmffQCkz38z2+VZSbVuclUVcbnIqyprx979lG35pCEFdQn1NwS2H9gX7MBfVjoc9UNW2LHnLi9pcqC7C2dXNRscuvpWf9LP8pi3sooHcQRm6xLOrJ6SUuB6OPBmubDL48Z+c7zmN95bolMhclJJBs1uJsyBRPOyzrQ5rUqkNYashaWO7+p4NNGE/Wg9ZF0Nq+S4wyHIRZ6jznSG4f7ko5XUIi/cdKiUbak4TfbgipMCQrhwSGxEKWiejBQhWONoNPSEFpnxkGC9GpFqMGdyS0Ab+yBpQMXKfWA2DtCOTtXC53DGOt5S+I1xlQozEYUfoOo8iuaT2PAGdwC4ig7WCxwEjRVyQlwkpmct05jKeGKczpWYqyn7oOQ7DMu9CCHzbu1/gxdMXXO2vGPqOLhljXQ3RgQ5WpKt1prTWGnmluwkYA4N2B+sWK5FSZ0PUBaHUzGW6WOPDcmGehHkuzOO4kMwuxy2FXDK5KF46wwp5cK8RCKWtHfMmNECJ3pZd1ACcZs2AiDNhFCf+bdPKxnUumdN4QlV5df8J03xhFw/s44Gw8YqRgkqg5IlpPnlnWUeaSkCktxmpPlfFueYkOlVRZ2Hi5OS3Rty3GK9aq7FBlGJeFNY+Bn8OMRk0O/h8FtSuzwV5bD2pou07XUZ++Vd+lTd3t7z89DXny0QtwVB1asZMk1fixnfsjKl/f+i5erJjv9/Rd0507PLAQAkGZ11RdS1sFzxsCn3a8fTqBYfBYf3RuinnPAHZvcvGiAGqQvQ2Hgv6k5Wto4UKo3ulpRRSqnQJK0iWgErrVwa5/npQUls9IBaea1ZP25YY+SL5dCm0VNZwX9MILUfRVEH7+hKZgsVbaye2RdDQN49DfWvi2N5eL257Dqov9a1CoLn3bDywDcyiheEoHIcdv+k7vpubqxu+8OwLfPH5F5jnmU9fvWScJs7jict45jRd+Oj1J1xm6+JbJhMy0ou1uu7jgthpmaQaCoRqtUC1XXldfzr8Fm+lUYOQtdlLQiIarLyAJuPwy5SlTqqlAIAlYd8GXrUy55FaK1Oe0GzM5/v0AuQZV8MTdv2OoetMWNcRCEgaCBLY9ZaYrmKKKM8jp7tPqPMMHkqpBEYZCAR2qqRaSVo46kgtmfPXXnL/6cd0+x28uCH1PcONQaJDqdZe3JJXMAjsI3Ldo5038sugUckJ0Mo0ndGs3J1ueXP/mrvTLXMxxobD8cj7L96hTz1P99f0qee9977IO+98gb7rOe4HYojWVrwGap2Z8wmtmaoTuVwoxVrTW5TYEWBhoE+DCZWSjR27PuW6vEuuE3eXrzHlE4F7ak6MYeJ0lw14kCtlzuQ5M80z4zwZfZL1L3cFYfNQqBYSzOIYA6Nxqn2gHEyo52DqrJo0Bw0GNqnGJqLFQ0uO5LtMI7OeOY33iFZ23Y7n+/d4fnzfWsjE6sl6MzBynjiNrynViImDqBWJyxVrUwwDXMTUQ4iEfiCmnQnmLvnaM++3amNjKIzzhZwzYxEyZtjQdUvecEg7XzemYLq+J/XdMqUBJBkTw6u7O/7fP/fzvPz0U+Z5JmdDujYrVoIpWAmKmF5j2AViCjx9uufd927oh4H9zmD5wa8ZhVpnKwInudFpwBWTF8EYIoZE/47lpva7K97cveT+fMtHL79CLjP9rjfkoFju0+RgRBPUUsnOYziN1rgxO0glxkiplZQifT9gnmpYfjZm9vnXhSe1KKiNNd9E/1ZRbd3lR0J/BaJv9qm79/pQ4bVTPtCNC6Di62zKw/dbiOszQn8PvvJ4a59vF7px6wwoEOi7nqEf2A87jvsDU5w59yfnR1PvexTY9/fkkumCtYK2JGdbvM0iw0P4YoCAJog3ur79snDzLbEf1+iqXryrK2tzZcOm8MCRfPuGl+dhFryFMoVGfSNBCc6jp+Ds69npjCxMEmKyvFNKpK5HtTprOQtdEBha0c61AgGCM2YkAh2dccRVWchObdFujA7Bk+2mdZc5VFsQ0/ML1V1zz5REEfrUMwwDh92e4+HIkHqu9lf0qWc/7Om7js57Dy1hnE0x65ZzsY3ZGg32a2yJcDGIiIZEYgARurRDUfpU6LuJWiGlRCo25rVWb5q31kQ1X3l9Xsui8uaTsjzzpf6wLU0xa7L9a+HEJZqxeFI28T1gakzgZSbX2emkqmVdxBLxtVZysR5Y1Y2n7bRdu+sGCw3GSJBo3lBoNVR+O844Ur3VeqkGFsi1YD3Z7D6CCITGfGHXW32dWsNC84yKexuaZ6rA/enE+XzhfBltHjZkLWGNBIkBGILhMEid5aJSH0hdNIaRrfjRZoDrsv4M3LKdq7b2zMM2/sOhGxj6PbnMdMnAScbVuIKhtsdYS1RkNVer11TBkocrpVgEJESCgypEAlXDQqH1a22fbyUF9hBbUV9Doi2uz0YJLcIHM9dlVTBbaHWr+9liFJbgmsuf5WfYyGxtPtVjhSVv/fUAxNQE3tZLe/D5TQ5qM1nacUPozPqLB2LoPSnZE+iMkDMe6LqO6/6AiEFR3zneUGvhOAzs+46uM/RWjAZHDwiaFUYTHDILUis1FXRXLVzjL+twY10+W7WKFdoG613DTBDoaiXNSlJlPye6GpnjzByNBbq0MKILtJb7QJVSJ6pOKJUhDbYIo38gJkYP4Z3Ge7RUVCeGWAixIx2fEbqeclAKgWnsOJ8/JZcJzZlcRheSGSEQndctqjKUSKiB966+wPPdu5SozH2GJAxpoE8JKXilpev0as9SiiuT2YREyRfGeURCoN8PxJjYd4mb/YFO4Td9x3dzOr/H+++8yxfeeY8uJA5hT5LI/uqaXbcnRBvh2gbKBVjqdmi1MJwp3plaJjMe1hKiZbIWbR12xeZKMODBrhaS3JLigXEcQZO3Epk5jRdiH5nqxIAVthovrKJBHz67EuhyIlahK8n6X4lQ9iZQo3QgkURPLJ1B7WcMlKBY+cjG9Ugx0XUDXYiexK+M5Y7Xo7XnGLw7stazedIheIv2SJAdIVqdUIP+G1jDulWnzqDtIXZYexs1xnrUofGFOVfmuVBK5XQ+M5eMpD3SG6VRn4yiqY8G5S+1MM6jKafLaWmdchpHcsm8fP2KN7e3fO2Tl9ze3ZHn7MrNFF6rWAxRkAj9ENgfEzEJxyvjZzweOoadYMj4itaMevjSateaPKpYA0qnjWoxC1fWkY4oiSf75+z6A5fDU3b9nmkeeXX3CffnW6pUbwTp7CeNTd7DhhLEDQxlvMwLmCLGSJ4zJc/EGBmGvXtZhRqtqec3s32+ldQDvq+Nglreb+9sYLLN5W7CfqM11ohg0yJKq98RWdd6s16bRdJySfAZimrxxprS/MxLtN/l4ffeul1WFeVfcAvQOmVakaizbRMJqHlL0Ziyu2QJTmNDL4sFlqLR+Bu6ye9LsbqmonBRy1kNiibxineHOUjj7qIZfnb/amNXKBQxoLHUihQhFYvha9gwc+P1asrCs9detZgFG2IgJUvIalRqUAiBbDEipjwRCfSzoLOxEhirTST1PX0FpRBSWgRS1WzPs5oFW7Qjk0xJViFqoB/2hF3HLDO33KJBSSHRujJLwGpZAs7Q3sAFeIpG0SlTTmejAeoTIQW6IOy7HhkqL26ec70beffZO7zz7B2SRIbaW5/e3pSauIW0AmlscoUQUQIxJGJIZGn5trJOnMUR9rUg0PITEOmT1a0YKKWQYsf5fCGGyP3pjst4Zs6zoy+rC7m26lYPCs89xhrsVexVmydO8+RMRIoGA6s4mtA8dqUxq4gL7hTTUkgtYgrkMt/ZLNdIUKHkO0q5J8SB3eGZPx8n+A09wXNOxgOZiDGR0uDV2KsmNw+qWrPBagwZ02ze/JgtLJeiWm5QIikEa8DogAlQz9sZrdCcjWnj7nxmmme+8uEHfPzJJ9zfnZimySIEzoPYnpdfuoX5OqHfRVISdofEMESGIZCicRuvno55uIsMEoGaqQ4J18ZT6FEKkdUE3nV7+r43L0qUcR45Xe65q7cuBx21Gb0Db7TxUl1lZClq/anciq+1GVIQa7SoxvJMA1l/PSgpAHH00MZ72npRq1DfBPZk3dtqfNePPfJ8hLcnz4OPmOO8Tgz8gI8UzmMHa7NrC3B4e9MHn1wvBFperWrhMl344Gsf8ub2FWSlk2RhtWJipKqzXy8AEUfjuQfgdF0oJmSXX3RdeGFO9G/EkH79RE0ZCRH1ydcUjsKC5GrnMjSWHTdlE+BaAoREFbVwDUaKWyvkeWY83bpgmJjzTLcfODw1wEStpiA1FyoTJXZk6SmSKDkzz9VCQ2/eENJIVs+YeE1HiAmytyfAm8jRUJubcVZxKxWQTOc9IkMpkLO5Ey3J3uZODITUeWsImw+pVLrsZKSvz2ia6M+VaxnYpUDcKznN7Lq9jYOqE8ha2/TQ5oE+rPUz6H51jzOTS1k6/eoCJLJIwkJH056vrNO+uncVY2A37IghcH28ou86hkE4HgP73YBEKHUmkLAcRzuIgWNChVQTfU3EGtBg/cxKVArGDTiLFe7O9UKpE0VnCsW4L0VRL4NoTBIZEDXmlFmNzDUg9nmEuVo+ppKtU3SMxG5PSjtSOpDSjhg6QrRGiK0IGIlLjnjrbOqyXgwcMc4zt6fR55wYSi+IQdxFmbVSpH27cpkmvvrJ17hME9M0Mk8TuRROlwu5ZD59/Zq785151lKdqWGVAyGZYO/6QOxhGCJ9b6CFlCAmK58x0lchy4i1eq/eqECsFEPFjRBx1KnlqVrxM9qMbczTUkihZ9dfkWLPi5v36bsdU75wurwxD6hUSp0dYOWecQz+7GDlndwQ1OpMiBWRCzkname5rHn+dRDuc0ITR76wxMxWtbQNkW33+k8XzG2RfYbzYufZKqf2Wn7ZULLIRj9tgRqPNZQ2H2x7gs3VbWKN8ui3JfewsYxrLZzHE//zV28JCvNlIlRh1w082z+lTz3FodHbuD9qxyiYw7R0SBXzZpqQtRRLJYyJ7nVAQ0WuoQwQUkX6jiqVC7OjtFwoqlKruBXt3OEV0gSttUISU1IlWrzaWCCE0/3M6aNXzPOF03RiLBeOT5+wOyZEknX6FTXap3kmhZ7reKAPPfOcGEcjvKn3L01J7vaE/cFpb1xJiTVpFDXW8EVctXi7BjdiLJ8koTLEFjMrMCqEhKR+fSAVJCZCP1hLBK2Is6PXyTHdd9b9dKDyIu6psuP51YFalXOvnKuiUslBjf9NlMjGmnULlmXfjNZCyRPzbIqqMXq0ud9ySYB5DrI5hqlFFCWlQJcO5K4HLYaq1J6ig7cbr0xlpg/ByXNlGaeogahCVxND6YkqjF1l7io5VbIWilameiYzMZUTc72Q60SWTA51szaExgKRgVwLHZXB4HREColpBVhsnl2MHd1wTdcdvDHjQHQ+O8uHuDcaDDYusmZkUaF4uCyrKaD7aeTT17cQhP31FanvQczgUcoyrllH5jpxe3/Pf/vVX+b2/p7L+cx4uVBKYXavKZdKrkbWLLEQBRpbrAQW5pBhH+mHyLALDPtASkI/QNcpgj1vlcokZ2LIpGjtWUQiMajXJrUiHAv9oQ6aCB3avFlpoIpodW27RNXC0O95t0y8ufuUr3z8y0zzhdN4x5QvdF1HPww2du5ZVW9fpFUpc/FcnvWniiGg1bprlz5bb6z510Mx71ZxbPbBqpxY/t++vwmaPdZdrOG9B1+T9f31JA8/pG/9//gkD4Dtjw688cLE3fHtUVxxNVqmRvMiqHPJGYS3VJjzzDhdzNrcG8xbpRGytutoRcSmRBcQ5INLtp0asI64C3pUCFW89XYkViPujGDuvVZKVf/iRuc2q63ZFNVpX2Rbb2WvRKCPHZRKChdyaZ6YFe40tgdtHWcRapkpZaaEjuqcZMUh5iHPaJ6oebaKf91ekiwCvY2nOORQN2OhS12eejjNDaTlWaqPczUrW11JOXu8lEZK6kwVGyesNT1s/Hmr8vB/jtJrMQJTUGa5o3Wp2WmeKyLuJSx4bhu35SEH96QcMNIUnk9vC+lYjg4XYIuB1IAy0jxkM2aakmqdcu1A27uAVni+0gt7R+bNCmngBrP448Jbpz5PGwJXfM0syletQrB1Jo61OJnxYs4ua29dz+t6taFxsASFqUxMZWKcRsZ8Bgmk0kM1gl/RVoxqxsOsE3OdzKjKF6YyLq9aK1kNBYdYmK4ixBgspxfEWECiKagQhegvR7Ev/Ibt0qs//1oNFVglUkK2+kSNXp8lDg5q37QQXOsUobRoyarog8+NLvaICH23Yz8cLERXrXxDxJSOboA8Nn8dxBRWN1096lFKcW+9OKDi14EnFaibxcBG9m8X+UZby+bt9WOrZ8E6ebeKqrnhjWXcFtsj7wdozBAPwoeb5ff21k4gy8lkPalfHIsALWpImSDCPvYkiWYUBwGNlGBSNevEq9PXmOuRpzdXdMkZoInmIfnnnDAIK6aMq1pXMIvMBelOkU4JgxJ6W5BSEt3Z4LpBO1QgpUiVQK4X5npCNFCqMmlmR0CTk4MaboVYIfrY52wWaejMYuzijv0730GphU/uvsrt+RVp3xO1QKlUnSl43JCMlpnp9Clxmkn7Z0zhYAvJGdf1MlIvtxayGM/glC5diO6NZEPyBWNJCEEsVKVisdBihT+1odIqSDYmbltF6mACpZaRcu+CvBh0v04ZHWcTVpMzmCeh9FYjNIey1A8FV1JVLBmuIS+1OK3TqVE8mbWas4fRijDXYMizBgSoBa3zqibUhZsU05DePr2qsaa3hHvVgnRCSJbzqZpYfRzFMjvWE3fQjqBCcoLVoKbgF/RkrT6GjojxNVG1kskUshksJRKJxNRZSj/trKVKLYyaERVUk+VW6OhST9XCpGcvfFUXiJHu9Io+jegQCH3vQrMuglSc5qhSFqPJR5RZZqYy87XXH3N3uuP2/o5Pb18jIXCKN/RzzziOjJcLrastYCAirUzzzH19zRRncprI3WzF272NYB86kiQLZV+ciHXDJi3BmByGg9D3QtdD3xXLGROh2Jwxo0OZ9EIIgRKN1zKEhKZCCMbNGKUzpU/nniSek27ecHCQiYdvHdAuQYiSCEdDDs955muvP+T+9IbzdOL2/hWK0vcG3hIRYnJEoMj6PLzGbrzMIAaQyTkbUOab2D7XSmqJui1/6cPk8LLpWwplq6DWHfJAWS3zrymo5VOPPaWtomKV9IovyvUb6lru6/LzPb7D9lVRqMZrZ+GJjuQLLkTx+LP4aQvjfKbrIkWyeVIa3rZWZbWGF79NN36meJ1Gwohhg70nVehOwT0rMUEXBJEBDcGEcp2twLm4rSx4sssPrRhk3RkNwmQPwwAVQgqJ/TBQqZzzLXO9EFJAcGh1yahkPFiJBqXMI1kjOR3NkwosBcO1rItFnWDUii2DeTXt6Yh4AlzQsHWlNu0l/EGrUym1EO/KuAB1Hm3K5bry+BXvcJuzUcuIGPGuQI2V4i2/F+du8XKqa3ZZpoTlbiy2X6q/FAtl0TLubsVuJvtivqnpqMW1cu+0zYOq1Z0ts7TxRndmYHjym2Bt5DUSNZBUCBrsuW4jFs0KbI0gaYaePx8U/LvBWVKiRLrYE0OiMjE7SayxxAdEEkF6IKNy8RySPV8pVvyNBoaUnU3ecnxLocWDiEpT4Ka0TNnMnC9nbu9vub/cc5pujSppDuQwcLrcc3/nNFsuXKxAXcm1MuuFKoUaMhrMY4ghEgT6aKzuZW5edyNr1uV4IkYeGxPEqE7828bS1rmFqsXGYNOyXbVSgov20LxSXTo964LudANVQNRywiuYwoH6EggpkFIi15nzdPKQpSmZSrFC+mDe2GLMR8tlF6rVR6oxVIDLnMCvDyW1bBsPBx5Ovc/c9MGPB3Dz7WcWPaKrlyTYHNlG6ZbPPPj+Vgm5FGveEZvjNeXn1seW6sgmEqRkFvRhv2Poruhi5OZ4za7rN3cqBt1FOPQDh2FgP3TEUFFmC/1I8IVgEPHQdGAQHE+MtkaQi2CGgLOgB0E7oEDtzWsgYpMTgx0Ys7kQa/LxtwStCkyOClsKmosu/WqKd8OVEAmdIYHikAgoQ96xj3s0WeNExGq+1Kdv1WKMFtIh7IDklDuYJS/GWp7z5EK9tZjILpiL5aRUEc2oV+rb+AgaVgG+LeJGQYvlBppV0+5ZPTEdWq/21vkWRROm2DsbTxWlBoP2q2Pv1ZsEqgoxWvvwEBK9J8anebIC0FI5T7N5UrORshpowkNcEkESqsXrtFYkpcga9mz1YmvkoXpNWKCWQCgmYDtxRvcQ6QjElpPAPPrQauBcCy2AGLxWjuYFT4gWhpiIAlr35NgzdAeOw7U17gs9USJTzYxlJiDsUzJW9G7gKg1UCkO5pmhhmi7M00iKPSkM3s9IKTqDWu9mG982D83TU1VO84WSZ2aduZSRKU+8Or3i9nLLeT4ziYX2ylgJJZLHiamMPmYm1A3paijFKhkNlZAqvevspR1JKNQwo0lJO0NUIq6sl1AnpF6X/FSrwWrErVvj1RRAWeRTg5qXEEmxoNGLaQOIRq+NTA6maQaqgXNEPRe4Mf7NHOlIErjeP6WL1rBRJJDLzGW6J8/T0q6Ddp2phbeCM/Y0zr/KNOZFaf1a2+dbSQkPFNTD6DcsK/CB09KUxNdRTouvtNnTPqsNQNnO/eha3jqdLBNva0GuMX0PuG3yTes57T6CWPy6S3Bz3PPO06cMXc+Lm2fshx21zOQ6uSJ1ChOfJF3sCNGUlMcF0WZpu/dk99L2gWLJ17XoBQxBiXlTIhAN+STJLLGgyW/RYt+pCqIdVdWaEPozGT08m8Sq11t+ppZCme1TXQjEoSOkRNp1qCj7sKPujsyMnPUOpVoYwhPDRRsD3IDIHtVE1kpoDZFQyjwzT2dMhHuOQzNKRrQaMASjkqk6230FMyJqLPY5sQVnMQu36inUeVwMkLbckeR63jxVC+m4T+O9iTQJ2ju6Mjj6zce9okw5ew8fCyvG0BF6o7m5TBcul5E5V+4ukyXIJWFs6o5UlGBtEdBNx91qisxd/gY6ctXCxh8kFPP0Qo6EORKD0KdECoFek7VhwRsWqnv1GtbprhAxwRSpBPU2JDoboz2VXeyoIZKko1Tl+vCUZ9fvkSSSvJyi1GJsDOJ8hRLYx559HKhgXX+pnM6vOcstIUT6uHfKJCg6uaFUbUxEDSKtrUg38+b8hvN4Yiojp/nENM+8vHvJ/fnEzMTESKWSL2+oVKN9Km2Nr/3JahAX/tb9O3XGFmHr0+Hhku05B+i6JnXM4xcvCwgCKSpBKjEG4xIUWV5L5AiHegN4o0sL6TmpazLAiWxaZUC/HKN1UFbV5fwxsM5zAesKF4mSuDm+4Ppww3H/hN2wZ5zOfOWjX+J8PpusqR4m7K30RZzxXhWYbc2XXJnHiVo+UwC/tf1voKRYXOWHW9MYW39qVVDrrq8fdlv1kIdHHimvB38+8s4ewpg3n1/CRw89KNh4Z1hooIs2YY67QN8JT/Z7rnZ7+q5n1/UMKVEDpJY39onV/qWQlrCGuYYVN6eWk7VQVasb2ypRcxzUZa0+QFnXsJKNLv6DLkFDWsgiqG6uaGV5e6DKpSVcNw9UPZwliqi1xa7a2mm4OlAPPC0L15SJNSQsZpXKFn3pAqQWGlecLsAD74lU3eOQSAnFEs9e69GuT7GchnjPstW4cA4GwcsiNh6+6TS7Na+n0uDEXLKCCKykwAR788yWkJAYQEK0cjqdeH17S1VlcmHZ9/bMl5mo6/WuHWkDreOvzWtdcjJmUDnDgK753KAOiqgeklOvxVtCxe05OkErPPA4Wy53ucPGWoHSuCI7jIi4i7218AixZUbsX7TzpWCIQuuDlTzabOS4fdxTe6NIiqm30GEc7BU6Y5gQYzqo1V5ztlqo+8uJ+8s9cxk5z2fmMlvpQzX+xtKuPhT3eszDaGO4mENVFwPTNdO6lhYBoLQoybISmlZ3io4tfdqjGM26b8lJ2MJcuzl4WFmM9zIU64FWxfKqErLVp7GEUlgamMrqVSPmSa9L1UEykuhix9DtAWG/O5KrRSWKo2QN8m7HbLeyBVVYG5BfF0qqIVIee1Dt/c3fi7fC+sw/Y4y2CuMxAuixh/V4W5KfiyjeuFtvKcPPekCyWO83+x3v31wzpMTzw45937Hb7ThcXRlPWDQ6I6R3agZwEwhZJKK4NLSqcw3OnxX9GmugFU1WF4pVGwx4Hb7q4b8gshDBhp4VPDB7iE9XQH4MBkvuwzoKwXM/8ugEIQS6YfAxiDCBlkKuF1SUWIVd3RERDxVVa9WEhRDEk7ZV7pnJxJpJUyKERBf3Tp0UiV2PlplxPpHLjEgBMQqluYxY2/sKkokhUkPvY52IyWprtDqAQC3J3JSeVnXmOiVFGJwE2uWYkfh2EUUXMtkSKtmFdmamUr0Lry6euyBQra8SBIf2Kv/jl/4n/+1//gK73Z5nz58x9APPn32BvTfRy46cUgyBqSjE3uYC6oAKdRJWnNXdjBIXvQZMCUqnQp8HolgPqKhWB7ZA0P0VQiLSW+40eD8wDzFXYGYmN79EZ1Pm3UBAuIo7axrYDaTkyXxvyNgFYYjNAIuLt1FdfHXBBOlwPHBzbL2RABFSdyR1e1Y6pMppesM4nxjzxN35nmme+OonH/Dm7o3xp9SJqpWxzJbnUgMkNM/IT7fIh9a8r9bmpbKQUDZx00oHpD2TJq9Ul9FWcSSo55qiWHG+qpjAl2BGjDTDdpMDAg9lFzfGbH9VY2MJIdJ3lRAiKQ4WIpdADD1C8IxrdaVktCnNM7ccnsmWQAJRdulIPCZKzQzdwDRfeH3/KZ+8+ohSZ+ZptKLwlEjOhSgerZFgqMb86yInJTzg5YLNtJCHe+GhB/XZSvxtBfUo8Pdwz2caOOJhs/Uzi1W04n+/7iZiimroEjf7Hbuu4/nxyLHv6YaBfnfwi3OBH9pLjOBU2qBYlX9xF7tBgRu8GQxF1NaJbjwiZVU2qosfBktoyPLo0s6PKR4/nC0sNrkKdUX1OKFOG2dZUGvqQtk8DhOoRlKbqJot+aub3J0EL1AEJRuZqU4mVBRH9/mTlFYZb4n1luuxEJg1MsxkpwY1FoOo3g8pJFP8wZW/5+FwOLvZr2s27y17ZrWnzHaoG69C7BoqTsbaBN32MIorlUrOhTd3b/joax9zdXVktzflU2smBAPRNd9omQ9tophbbGPhxwQfJ/eMDetTPXfjLOo1es7JEaIb73R1msyTMgdutca19SJi5f6rGIihcUf2caAPPSGmjUdm+ZGggahueHntlIVag3tV0YCKDZWJ5x0RUrcndnu/xuplGpUpz1ymkbvLiXEaeX1/x+u7NzSiL7D8koop9FKrGWhxcZDdkVkf9OLJPM4lSFtxTX6s4dYWXm2lAioGWmkNW5tX1r6vi3ARHvKG6uY6bKxBvJOxWnPCaF14azCmD2jNMcXNKztcVWEJW+PKcLNWaQo0QaUDUXI9kEvmdfzUrrlax4EQV25BY1LHoyFK3AzRN9o+10pqm3taH6U+EhD6+Eub+bP94Kqg2p8tUvTQq/JDLgLXLUldA1otb7UqKp9M7pY/2Baf347jFSkc+o7nT67Ydz3Xuz27ZHmasJhxdtcSQZpy8p/ieZAQbHqZVaVAYQ3HVRCD7G3dbq3uYfmd2Hnc20LRsoaABK+gEVgRU4L7OD5Ma3LelIsHFlU86vh4proC9SNoOzaRjp4dRwqFWbKxFATrEqpilqDqTJ7PjOWN89L1pBS4vX/Nq7uPuUwXPnn1VcbpwrObK57dXBmKycNe5/Md58tE1/VcHW/oUof0kZAMbKJ1G1L1Qmf3mgrZvdZgOTuExm5QcacW9UZwhayFLO5VSW2MQGwtZEFIcaCPB6Z55sNXX+UyjdxeXkOXGes9H7/6Cn3fI1GY80SKA7v+arGw29xq4T8rq7Y5YLLSGvNVrQiJjg7RSKeWV0saSX1c9B2AFEFnF3Bq3HnmiZsH1UAgdbkEA9NUhY6eiiXzW0fkVI1vUmo03sMgxCDrlXoYS6TVMeoizAVP+CtuPYmF9pCl35EE8/SomdM08vLNK16fbvnVTz5inCZu715zuZyx9vW1rZBlDhsxMdRitUupC/S9KekkTRwEQuvE7IAGA2j4PF+U11qbtoZ2mvW3yofs3hVaHWnnqsPDm4HgaygsOaZt9KcZctVDkJIDRawxaorFIgzJin6VzsEUwesu/XhUWlhTtCH4PPeNze0uWu+2J8fngDDlkVe3HzNOZ+Y6MZ4nEIjJGdmFBZH8zWzfspL6iZ/4CX7oh36In/mZn+GDDz7gX/2rf8Uf+SN/BIB5nvkrf+Wv8O/+3b/jf/yP/8HNzQ3f933fx9/+23+bL37xi8sxXr58yZ//83+ef/Nv/g0hBP74H//j/MiP/AhXV1ff0rU8VlIbabhY7G13k8OrSPxsBfV4XTdQXPt9VU4PNxPjG6tqOdcqdNeTf8YBXMlFEToRDn3PiydX7PuefdqRYmqEBm7cmAAnCiS/tmgKLFRxQ1bQaBPO+gLJOia+KJbrWrSquIVqLAzr5YrXPJR2uZ5z8uLNJv+W+7FBX1Bjite5YAAPBzu0xbWGt94eV5y1O4iF2apUImcKMzUKORjkIHtbhbmeqQVi3NH3V4SYeHP/mi9/+GXO53s++PhXuFxOfPd3fBuH4dtJMbKLPUHh7nTH/atPrdW2RvpuRyp7usGgz5SmpNw5ShD3nrPTTNGMSnQlFZb7qEBxIZM9J2LUvLMDJ3An3C1X8cCWWM1Yn46cL6/58Gtf5fZ0y+34GrqZUS+cX700RFcIzHnmuL8hPd0Ro4cm2xj7iIo0lgEzIGpVap6gZhI7ovSEGujmzn4OiW6XqCizetK/qClkAo0ipwEGFPVmkY6mAw8HJ1SFHgvtBmMmNPCF9sRiReFEG98UzAAyeiKfD26MtHUQ2n2p9aEST/oH764rwT3AaCTKWgKn6cInbz7l49ef8gu/+mXG2ciGtVZSEFJsrc+bfen3EKCWQIzCXgQZ3LB0oWG+naH1ioflmpKyxeW5wJbvexDaWSxPX6IWbjXDJTq5vq3vGJRgC4rGlmFjw2KY1OYhV0f9eRfyBlFXLc716Y1JW4LZ56zl7mwOt7yUsUt0NPVFA7UHIQWlu7JmitN8IYhwd37D7d0r7i63SBB2IojD1cNbAuPrb+HX/sjD7f7+nu/93u/lH/yDf/DWe6fTiZ/92Z/lr/7Vv8rP/uzP8i//5b/kv/7X/8of+kN/6MHn/sSf+BP85//8n/nxH/9x/u2//bf8xE/8BD/4gz/4rV6Kb49zUfrg52eH+L6BB8WqrFqjMdwSQx5aKkv7CX10ONkqKFaNtX21jzfXfavgXCmE9i8EI9f0JnUSmmVoSeeItwmARfC3kITdj0HIFzaDBy8DJ2jrC95esl67iQUcxr5lHtje3mbc1cZmUXqL8lvHp7khEoM3KWQFFLXX+nQeWIoirrBkCTqZjq2ZUiZqGa2vUr0wl4mcJ+YyW8sAKrth4HA8mPexxPProlAbVlDUF6hGVCM0du4HHWlbs77iXkReE89tcFpTRFfStVZqKctLvctfG6fmQQX3q0suXKbREH3zmTGfqZKtwLpTQi+EDlQyuY7kOhpzvLMDtGeyhJiaweXzYn3Zc9CorAlGm8yS7RWKEGrwl0POl3t0sIuuIBC8B1moQqpWUzVox56BQXs67UiaSDUSa7BCYPe4i+pCUbSM92p3Lq8FjygbWfBgDa4ei1hQlVkKRerSp6mRKy/hS/+KdVVxq7+93CttLBxb1F1bx0YJtoJglnY2srnyjSxpJ5XlrvwaKrSyieJtP0otC5O9uiHYoPTbFbmVhSsAR73xZ6aWTKnZm4Baixt1MNH6s41uXc5j83yd4yswKhj9VOjY9QcOuyv2uyOH3ZWBLBQjoC0Px+TX2r5lT+r7v//7+f7v//7PfO/m5oYf//Eff7Dv7//9v89v/+2/nV/+5V/mu77ru/j5n/95fuzHfoyf/umf5rf9tt8GwN/7e3+PP/gH/yA//MM//MDj+rW3Rw9j+9DXeWl7lt8/W3svntMShtUljB+iWQsSN+9/1qWIuovRHuAmPrJc5zqRpSFftF2AlaYuu1z59CnSd5GMMi+xfguE2OKy31t0e70pPEULEptH07yWthwcxtqcrCIGmy7WttuOC7Nb9iklU0B5gmqtWWvTMQ3J19DrruBaYnYpbF6EolHf4AAMVSwStYy9WXALbc4a6SSAx7QNsIEqZbpnKhdEI9SOmHdI3DN2M+fLHVMekSh8+7d/kdRFDn1nORCglnmxHLt0oIs7ogwGBNABLXvwluSqSnE2+MzMVM5Uqcx1pGCAAIk786Qc0W9hWZDqcPh58vzXbIAW6Z0rUaxolEDUHaKB+/OF8/iGN6dXfHL6iNN4xxzv6a4aWsvh+N3Iub4mFLjM16Tak2JvTRIpaOuxJT7O6ihNMQtaFGsxnmp7tODKSUb7XkoBT2cg0Z/uAgCznJpKpYTWoVcIBQYiQQdXXh2KgUZmn7DRUX6zKGOs1AoX1oaYUePy4FfR27xDyz8hwQnN1cEFDkhww8GucWaWiUucqL2yO/akXiiXTJ2LI1ZtzWQvkBZMGbe5bHkwY3OwczSQRENGFuvgW6t5hUEcUu7G1Ns2MptsJouGNcvQFJI2FodK8GJ3kl1R9BxTkI2MWQSa0sBRVkvlFFolE4K1zQgh0KVMioOxulMRonVWkLjkxQSLpjSGiriEcFpA3gyrECPv3HyBUjPXh6ccD08YpzMfv/yAy3QipUjq0v//FPO+fv0aEeHp06cA/ORP/iRPnz5dFBTA933f9xFC4Kd+6qf4o3/0j751jHEcrb+Nb2/evAG21rv9tf6//eWhslq3daY8Bkk0z2O1+psn9fibj04EPin8Q816euvka06D9tnN0RY71GlFAO8zo82wpbnfK3Oa72+mpvAgFdaurVn2ulzfxvJ0RSWqDzzLFVTREtqujD9jXLeG4uJJteO3W23Hthienas1yHML/4ErSHvWut6PK/bV43L4eJ2gRrxCklwmkNkQeAop/n/J+5dY6bItvwv9jTnnWisi9t7fMzNPniqqjLm6siwaIBnJcq8sW8KGDgiEjFDJomFEo4yQEULu4ZaFQAIbIUyPjt21BG6AkMqSaWCEy3LjctEVJarK5cPJk8/vsfeOiLXmnOM2xphzrdh7f5l5hGkkZ50TGfuLWLEec805nv/xH5HD4cA4jQzi5WPaWA8sxxGcIsZVBaLRQn24ab1ioayyaetJNe2MGSE9RtsMIKV3ea0YZBelM1dceofmXi45czzfc5yPzPnEUs+oZMJgxw3Rm+1JoehM0Zlcz5amDHbtLf/RoM/tmfecoDdE7J4UuFftg521e/Diwk/a2tD2hNyy74IbpForjqDGx9gGQlAW1FFrK1DHUjcOEah2rNQKD/zBS//vRlG1OkR3C1fTsE1EH3O1cc9UajBCXdUIsSLFxqh3n94uts2refcNutkBDZup3XpIXdQ1beYsbQ73ZXLpQa3nMHliTZDV81JC8HKExtsJjv7ra3c1dRtrfk95OLemAlIzSiDU3OvKqha7M42+5hs8XTxvaWF+dXnSR1taygKmYW8h+Lqw5DMN4NKinC1P9n22/1uV1Ol04j/4D/4D/vV//V/n2bNnAHz22Wd88sknlxeREq9eveKzzz578jh/+S//Zf7SX/pLjz6/WHBPbbrK7A9tPdQR2rv2f1uDteZJ0RWDCcrtxG1vlxO1a4o+2ds5LwXwqpogFwv3f/X+Pf+/n/w+V9PEP/nJa15eHSAJMrSLSx1a3PowrSigzcTZXMqqHOpqzrkwD2qIPLJ7U4h5CwoyL8RSGQgMRKQqegzo4lkFtaR6GsyqZhu+Ws1eXyTmUalgiVvTEladrto9qV5/JPQi19bAbc1AOlpPDYygYm3uLayR3boUhpB4fvWcGC22P+0GYgwEyQS7YUc6CrIfCAhjHBnGHSmOhFCBIwaKMOYBT2VTNZPV2KhjTEQZSDoSiqHgdBZrihgtZ1KrUs5KzspC5ow1QkwRRBMSBoiDKcC6oFV4f3rLl++/4JjvyOEEaaFlDv1iUFFmOVJlQbLy7jwxxIkbecVOrmzsaunKGIy6SrG6n+b6ikDECnRlAoaKRqFGmzOtBflqDFqIz56sP5nqng+4x97yRp7vKNYaxdL1NhWL00JVrWgxQEz1eWLMGUZqnPQyzGsGpCMCY3IOukAIxlMXgoGNTsuRb95+zWk58fW7Lzid3lPLwjgIKQRyic7LWEHMoJGsjbLRhkeMokjEBH0t2b90D6Xa1DcKLjECZm3PB0rxkGKwYvtVga5ez4Xh0OCimKGj+FqoAmoevRXte3kIxn4uau1d1qJfH6225DehtpytSaHZC9nY0b0QOFKN908CQYatALFSlYrnxKIbKy5M8bb1KLvhCr0SduMVAOfzPffnW+5Pt+Seafz27f82JbUsC//av/avoar8l//lf/l/6Vh/8S/+Rf7CX/gL/d/v3r3jV37lV7hwQ7pMXrVSl5F9RV0K7i1IYvtqVq9Et2xXA3CjqLrt1w+9enYbt6F5L01RXSi57ebsywbm4ev3tyzzkevdyPUkjFIYpsjoRYmE2BVTbWi6enmLbTEr63m7p6dqyqbR2GAWLDWgWSBCHczVlyPEsxKBgYAUqHeBepZeiS4B4gHLjaj04lhaobFx8axjJHjvDruuRpPXely1hHu7v66kPDFvXp/lynpxqFQsx2bxeyEZY4dEnh2e8/zmhS/Q7O8nVE9YTM7CQkETRYQxjKQ0kmRytNfJnpFkf1pGaFg0U3RGUcYwEcNILImQvWI3C+oUg+q9ssoMeVEWCmeZrYHcIESKsc07pq2UhVLh/ektX91+TuZMkRMaF6wFSJM69jyznMiiaK7Ec2JME9OwY0yT5Ypq7fdvQVRXUihGn+A0XM1jHt1LCJUSIZRAmPEC3o1hpE09uQug0u9hzSFJ976lgNRq3ahEqEEpwcpli7NAqIMlrADalFQM1jF5hXJj1+n1bOLgEZFIiE1JGQPCKZ/5ydc/4e58xze3X3E+36KqjINAjOSi1hMqWrhTFcJsCmej19coixqVl3QlZYAJa02jaBFqka6gVKAEu480NHCI0EKFXU9tjN0uRBo01Gape0bqsHiHc8dIrAreegMa1Htd+k3gqRuQjYrMOmlXSo3EsNhvg8eDY8V6h5nysQMG55y0YmyCzVkFT2GYMQOwS1cMabJ6qnFHLmc+//qnnM/GP/N9tv9blFRTUL/3e7/Hb/7mb3YvCuDTTz/l888/v9g/58zXX3/Np59++uTxpmli6sWeT2ydVWJ1Vy5yiI8GY+PriLCGLrC8hyuircfTXOjVOlnftg7DxeG7zjIrfRuGuFCw6Kod/UdVlaVWzjlzez7y5hQ5MFmSXCHEQqdV2h6vKUIfhO5rNo+u33c7vX3eS7iaJaegS7H2EvcL3M+GIhxHM7w9rCDuGfU2Ej1BbPerLsxqydRlAcRrJ4K1em+ULr3ifrXItd9Da+LXFFVTXdoXnP3UOxJLRKIY04DTJ5nFZwvLSFgrKolKhE1yHsHAHEHQWKnioQ8wD7Tnx7LVN639S3pIxRLu6o0dzTNVF2K66VaKC5wWUmt1RMWpeu7nO3IpHJdbsp4p6krFJX/LZz4sIq+1sBRj6L6f35vSEAPY2IUWk7pSfNz9vrxwNdelhzv7YYNf4VBMOa50I4/CNkIzkKRna1x32RaaFWiAHRXQaPkxjetnbbpaEbmDg8RBLWKJsfa3dPJUDN5fq12IP56703uO53tO873Vk+GK0xVIjMGYrAIWpVA1gysqqJ3Hnq0psCFFhpQAJecGKhAPFwdCNI5Dm8V1XR8+Z9EHQUKvZVOfEy1921tl9RxCm2NmYNZqhLY2J33cNRjDBJXGALKVNqsMEL+ehgasCIVSF8vhecNEDWrKH4On4xEOoaF1i5vJoRspDVzVEhIqkSEOiAiH6ZpnNy9Zlgz8hO/a/rErqaag/vf//X/nb//tv83r168vvv9jf+yP8ebNG37rt36LP/JH/ggAv/mbv0mtlT/6R//oz3/CDq17oKB0+8nFD9r/vfebWzEe5muhvfYyD0o271sPahPKYKtiNh90T6rRA9m1XpCibL0f36eqclwyRSu///ZL3i1v+fjZM9LwESkN7GLq8emK9Mkpm9Di1oFUxYt6Pb+2vWbRRnJNKLZAdC5wV9C5oD99T317hmdXyMeThysqGr0qrCEFXTBLNOtUUWqx3EKeZ07vbgkhMu0OxCjUUCkhW4g1uYLSNdRXmtdERqV4z6TWHNFVlxfhqkKoI6mqWdZpIoY9Q9yTPAEcSeZxkBv2zMfpjKq1MJAQCKMpkZKMZUBq7NJCkk2uEk3ZtOUpEjo3nuaK5GphvkXQRchRLRGPEY/iXkqQNn5WY5WLsGTluJz46ZufclyO3J/vOJd7w6Xp0mePbOaeKXRzRxctvC9vCBKZlxNDnNilPdfjjaNA7VcpWpNZfIyhkAucqnEjNjZyFaU691YerUg6FkP3UUGdg62Rnwaxduo2Lh7UqmqEwuonBjMCElQx4Lo1sqxkZ3wP4vjGEO0ZBmNIiP3Y7jWJPV/UPOhcF+7mO2v9XheyLrw7vuPLd59xzmdUM0Nwvj1PiEUEHZrbb3MxuKCNYSSliVqVeZ4ppTCNA9M0UsrC+3khL9kUUzIBMu0CRaux9TurR7dmi+WbfbB83puxtLKxuEzy9dnlnNcqWGjRgCXVW5AM0ToiN+/KlLrh8lv05wKF2A0M7cerofjxAkPNZGei12SfxTA600hjwBRnmXcwSUiulnAFGbyUIhIGy+GOryZePv+I87zwd/n/8F3bz62kbm9v+e3f/u3+79/5nd/hH/yDf8CrV6/48Y9/zL/6r/6r/P2///f5W3/rb1FK6XmmV69eMY4jf/gP/2H+1J/6U/y5P/fn+Gt/7a+xLAu/8Ru/wZ/5M3/m50T2QTc3nvCgns7JyfrfrXstDz+T9fMWntsiCbY7t/P2rx5/9kAPXWwNNfPwMi1ZalbScTZ2hJtlIZds7SXMLHc2i+COkl7e90NPb3NBwvqBNS7T1ekMABXJGc0Flowu9rchxBpJp65Hd93dLbatce/eUXWm5gYkaPDZfoGy/vkwCd/YzO3vlqRvx2jelJmeQiJ46M3yFdFrclqRckSkOrVRQIm04sUuDERNMYohH0O7sR6OLO7ZbQZ4M0d0MzT9Op2LsI2b+E9srtmxSs2UCnM+c7/ccj/fs5TmRa2QYCQ8mDXbc1vvsUrhLEdKzQjKFC0s5pwN1BA83Ks2l5z1Irsbo9K81qajV0CE3VNYT6s+l2V98Nt1tIJ4bK6Y9yT2ki3StM2/1RuzkHtrV74Wk26LWE3hGHQ6l8x5OZHrwlzPLHXhNN8zl5lc5qYXTMn79UoMa6GyL4TofIExDqQ0uQdkxePjMDINI4sEYhjI0iIb5sVYtEzoyMOHRvNWOPQPVsNV24W0j5s7L5cHal6Q0YJVSrB5Fhs0d60k6/JhLfJux2oMLs07K4hUak2IGLFy1Yw4Q4VRNHuoUtwLxOeLqs/lYEpX2ki7EkORQUhDIsWZ77P93Erq7/29v8cf/+N/vP+75Yr+7J/9s/yH/+F/yH/z3/w3APyz/+w/e/G7v/23/za/9mu/BsBf/+t/nd/4jd/gT/yJP9GLef/qX/2rP++lsJontnUP6pE7s75f5J3ae88/sdYhNY/qQpI89KI2CmB7Lt38q/3nierqSyu4TSSf0GICtxTh9gg5V/Yx8+4wsxsUiQOjFs9PJV9wcbWaeglcC8O1kJ4ieXW1RIVQFWvbYKzIRn6aKemEUsk/KuSXgu4W9Oa9jcViWeKxToRqRKA1WC1WjdUsb/Wzi5KmyHS9N48mDVZ82sJqjvKzYdpoLH+Y5q9k40bDPamaPX+xoPVsAmqpnjtIhHCFyJ4YnhGHZ0hd0CbopSk6F7RYot3CdAvKQtHCUhfzGHWgqJHENLi11ubdNeRVZAiBFEaIAU1+PyMulFs7DkcANsGhpvAXNQPg9vie98cjp3zi3elr5jz3XBKu1O2XWxLSp6wgm5+5zMYVqAu5nggS2MUdQ0gMNVBqdN3reSrNFA1kSYQoJBmY0sgujjaXNpNWW2LfqXeqWAjUvJ4WLnQEZqQbIe1aS6wssZhw1erNGHFPIJCie8AykmR0pWQDKp5rqlo5ne+otbKUI7memfOJt6evWepCwZpjzvMZ0ZnYAA609d4U0UrRFIgGuBlHA9uEgRi8pODGWBamcWK325FL5vn1a+b5zPvjLe/u3wOVMdrglNLyWuoep1rEg9DljlEhBRoJWCu6N7GzDnjPVwX1/LGbmi7zLD6wdFBG82g1GojH/c+ezmiGxEMZWrzTL8ydJd7AFAFNlRgS1oLenoWhjiNVs08MB0NJCxFGn5GeP2P1tr7P9nMrqV/7tV97FIPebt8HVvjq1Sv+xt/4Gz/vqZ86Gw/dhQtE2QMF1T+VB8qqhfdaKKwj/fynTehv0DKXyunBJV2e7dH5n9ytf97odMzWLkW4P8I8w81YuL+fqZMy7c7eCC0RolnWZth6MEiah9ZeSmesVt0UIFuOq8W+KuodYmdqvEdFyXuhRKghU+KtTfRFjH6pBMY80UAMCKakQgY19myAOEamww7UwBYipqQ0gHhCeTtr17LGln0qbAsJS52N3aFmtM4GVy4Va/uUkLonhAMhXhHiFcgdlDMr23jzHFtuw3smSO6eyKILQQ3pVTGbNPnTV0s2dUSXiBIGIUmiBhsvFRMkJk88tyYtr+VKXM0rbmwZ705v+eLdVyx14Xa+pThfYfACoS3jdjeGwsP51YSXkl1wLOXEaXlPCIE6PmOKE6VG8DYrwfGKtWZyFaMrqlaPE+Vggg73VHXjGfjcUYUshSwWjpx09OWyKiq2igooUcnRQDHGtadGj+jeUoiDhR3FcKWmpBzJFwISBc0Lx+XEssyc83vO+ZZzPvHm9IW1OhdrOqhZHVGI8yNeFvCOyRCNMSQGDy1O046UEiGMBLEaojFdE8LAbtqz2+8puXC1e848n+HLn/L+aC1IwlAQUXLrlVZrR9WKu5KNEhIxVK86m31tLWYCNKaIbpA7nkFqk3XS127xcLg452X0sJ+Ij2n1nJnPkQsAmLu6D4tsVQuh19e1sOHo83fND4r/tqj2fFRwlJ/B2OVCHtmM/gVoH9+2bWhl3R4rhq1iai8JSsvTdF20xgPWgZXL46ofsJ+yn39z3s5/9ehKvuVmNk6XEde5ta7cz4Uvb0/slkwYE1mVcajsRqzwFQvbmXXIGsJyz6yHNtqleahHt1e5vY/kvH+NVFOKw5jbrgZ1DaJEAjtruODeip/Hx1cTMITL8UyCJFf+sY2xLUhxAe5nYeXmbmWPTgxbrU9UrZVlMchwGgam6TUp7YlxIgRjjNDOlFH7jV6g0nx0WmjK2n1Y0zyzJJtZpOR8ppTZjIQ00WhkVnJYO1drDIms51IfXwN5jLQUeqUSZKRzBGqgJwt7rctaKK4PLOFtQYbZVlsjTf1ZWauKXGeCDFRttDorUMUUq0UTWm+yII19w2N1JcLiBcA+ltXzV63PF9VBAG2deFSh4ui9klnKbEoqePi0eghQTWhXB5nE9uia0VKNDX7JsxU3L2fO5ZZzubXwaM1u2bsVAfRuAdjHQTDFJEaFFKMQJRgtkkRjefF7N/LaZGUGYbB/EyEI07gjxsizmxfMpXmtRyqFeYF5UScvXkDVC4HjaggDrfnmllwYxLkiLdLRTfKeR6crl/Yj9QVSHRBjSrhYoW/wNeWGQLMyLohqfe01hVU931RKRoM1OQS8G4KNkxlJXuTrl9JMyyZIW92fdFkqyBPRpae2H7aS2lhzzeW17cMKqk0McQXV6qCCC0mPNCBbjdY1W1gt/EeneMqa3XpR8uDzb7+v9W8xeGyBL96deHda2I+JU6m8uJp4cbUjPTMoqkZLbhITHe3k52wN2Z46v4CjdnxRFLNU9RCBSmh1T2Wh5DMr3g7OCHdiHsRzXjAyEUMkumarXhgqMRCGlmNwhRqttgW3uFturGnqUAqNyEb8YVcWZ9EuVBbOyx23t19SilKWkVoT+8M1z57/IWKaiK5giy5oHbHYlHkXTTU0Oh0VF4wqWB8tS3gXTgb5BseHKMf7W87zkd3umucvP0ZiJGOJctHGMg3Ean2jpNhLi5fViOXMZAdYp9sKDOEeytdQFCmDK4xirwdKyoyk5u6vT9M8o8Zc7YZJm/tYE8BaZkRGBjUPUdR+Yd6orwtxoR0iQxhMYVajh6rnhJ4jIkpK1UNXgRCMtaEUDBm5yUvhCjWXQtHMaTlxf76lSoV9MKMomjEhIuTFm20miEM7jsG+T8uZ03LmPB/56u3POC8nZn3PzB14nVwTwF1XRzMYJNvYxCjs3IMah0hKVleVovWisnBjspxUHAnBeiilMJHiQCRZQ9KbERU4HJ7xyUc/Zl5OfP3uM87LkbvTxPH0jqVk6nzv5K47hjitEQ1VgpwpdfFiWVPi2eHsInUTva+rVxpa8ZS4RyU2vQWyFuMarJVcrS3HlAYPBYbeqSsEZ7WX0OdHN8S1roAKL0yutbCESIojdbDjaizO/zcQGC2fpeqhbAtxWzNF94a30M3vsf2glZSHsD+Qg3rw91bX2K8feVYrSILVi5Ltj+lC//JCtt4T/YDy6PvH3BNb1/opn6sbSQJLqZTZlMP9OTOmwG6MLNksuySlW64XShb1avR2Xw+ugY1ebAlUdAVGtHwIjdOrdZE1292CCwOZmeTT36RBcwbVzdbNs4CVs6+Nbxdk2zFvYYIWltg8RKFb5KUoiudNQrIWDXEEFqA8Mjqk3WsfjFaM6FbKZkya4GgCRWslOydgcX68gLeBoBLUiKDAqpGMDdxbcjSPxRVzaMnPMBDEGM+HOJldmk8EhwXzaOasT29jB9N8vaagWg4CcFJP7U9sDRw+XDM+y6WxiG88YA3GlO/FP2uOw8I8oVn5lW7QraEkn2taO39hXhartxmThX+1AQ1ab7OVM85ypq5o60IuM0t/nVmYycwm9Nezm3Pepg70NdK620SRzotpzOwrQKO9er5KrCHjCt6wkgoEGPF+TZH78wERYclnljjaKAenAAtGHYTitYrqxfTBPLxgykE2z8Tg7c2Pbze1iift80P6nKBaS3vxg5XGTaniBLWr/FlzX/KUUHXjaO0CXMT6tiGRGgqiQiV4DrfVgHFxTG1FY0IPGX+f7QetpOC773NdoPRwXvA+E+KcfB123mTUIyHfhNZjJXPpUj3x94V3d6kens7fPd5nJUG1JOw8F3725sib+5l3x8zduTANkVdXO6bBgAkpDsZkMJjwq7oBLssD1gA6ZmujA2aq3rlisutSFss5aCWrARcsFlkoJM4hISzAFYO0Gha3zdyKtWXmxceh0uIda9DRQnH2LLzRYCdtTZ6biNZyAEUkgSRCEg6HjxiHG569eEEalRCKEc7WTMWKcC0+74WHDvs2QbsHUYY0EcOC1kops30vASRbiCnPlheLFRmUImfuzt8Q88iYIMaM8e4ZxDlXq8EqnsIH7XmlKAMp7RBJhPEKkcSPXif2+1fcnd7yDz///3J3fmdEsTW7pPXc1IWX/3BOtmfYatm8t1ewv5OzX48pMSRrAp+cL1CcEHYIA9O0Y4zOX1gSlIDmhHorDUa1cHkqdGLiyGo1I70ki6rUxUO0iyuY84nz3R0qShQD4OgQqI6yCJhXWnIil2NfswTlOJ85zUfmspDlTA12ojVyVS+EpLBCyoVKpDKIEKV2jzGSHG6+c0/K8lAx7EjePDPFZEXFQTz6sq6kGAKSBlIMfBp+mVwzX709kOLIcT5xnK2AWuJIGEbTM665JQuhjP6czx5ezpar00CxugxaLtM8qroVT9Bq7hTzwFmLkc1AWgwQEiPVS1iSR420thYgLYTcZOBWVplBWGvoHYhb+NhCoINB1QnGpO/5XteYBjAiu8JPHuL87u0HraS2hvC34TW24YZWF2VCUBw0IRdIvod0Is16+VYFdVFQ2Sz1J68GE1Q/z51uTqPmUX1zdyYcA0uxPMhhiuycWieWSklWhR5isJolbWrAkp3tSuwyt1a1Q711xuqHGo1FoJIb6xlZnQ+vvUgsHIlBrR8RB7NY2wPotR5NuALSqpV6YB5tpoCqs2q07732g+R1HAnR0iwNgiQOV885XL1mf31FGhQo5Jqp7k01yO0mdUyT6EHMCyMOhFAMkKFcLCSrz3JvMhiDdiFzzreEOlBlIkn3I1HEQJBOElrcFOg5HhFiGAhxZBiukDDyMu25uX7N29vP+fLd77CUW5bShJM9B22eIBtl9cC4ufCoaMoZF0zWq2kIyVq1e0gvuOcVFAYZScPIEEZiNQVFDWixcB9SrWYsVEi1s+jbWgrEYQAVyqmAhxB18YaHZ2PgzqeZ5e5EDcqwM6h3FUGHAuJhXg3UEslqhhXRyhIs3Hfy52vgCGqrPtysVm1QIuc3xLyGIKaoWk7Vgp0mPFMYLScVRysGD6Mp0cbpGBy40YX46nmmaBRCh+ka1Fi/52UB7ojhHblglE1ObNw8emskaTD2BhKCipRKqQagUtwVxUFRTUEGn9oB+6MxVPgyMjBDK+5d50lDNnacneIe5tqosBer6JoTNSi7RQ6sv50VvitqPI0SvIYzXUSWLuDvtGz4d28/aCXVNu0Dsd1aGGL7Wnn51vyUu58dVNBjAjRh+v1CfBe/3jwcugfTDva0//Qhj2x7j+u3rXD0PGfe38/MS2AMsB8ju3FkN2ZSjBStxBRJw0AanMG817q0wIFu/nb0WYNpK87GYL8TsVBKMNPUkFL+v0IlO1Itq3kUvcNqC9dJDyZuVH/dLLpW/2WxcGVthdF45kQK1AJSkFAI0dgTKidyuaWUI6XMiBd4irQwUxs9h5kxAJN7G41OJvuxolE11QJyBhYqQogLVYSgiUohxETwpm8AtS5+L+ZJWYPDNqqmIBt7QqPw6WgvhbycuZ/vOJ4MDFCKIRcdpw8NSdW94q031YSwv9pe0hoMmlBKYSS1AlkZPW8Uusxr1VBF7XlG9SS4qHm/CIRqKDJRamrf2WW2rrLdGJRVmYpal2VQhjiSpj01VEiGiqwoNWe/naWNWOtcRDtog0RHZzIIITCXhVqChwptbm3pjNoRogRiigxpYBh2xBCZxitSmohhWNnA42jAGBlIjQuwzefGdbRZrh3B5mOPwH534OWz14zjjnNeOC8nFl3I2eqPujMWGwGrEhmptRB7fL72iEZV6cAcdYXVX20aBCz/Vrtb2cN/iBVNi0iEdvMqAACHl0lEQVTvWhBEzaMKbEKqDnTYiMOt3FKXCRa2zWRda7AMch7cSx0McKRtfrkSRjB6ru/efthK6gMCfyvkQwNHtRCfAyUQQeLqSXVF9TBRxXqOJ8918aGf9yIEGC6++/D1XgqaD39vk6Fkm5jv68zxvBADvLm9Z4jCi8PIi8PIOESeLwfGIfHs+oYpXtlkqz45Wp6JhgbCINLq2BxtcN0WoqoEKR6eMVJa8xQKAsyuSKIujDo7Y0Dy6e5oKEyp2V1Zc0UQj/oJeEuJqtYcUKkUXcwbkgrBc0zMoGckLsTJJFGpb5mXhWV5Tl5uCTJchDTNmhNDz/kVNMLU4LVmQRYC2byeeEBDpeo9yglkdo9mIYRMyJUYJ4bhxixgVUo5gUQkWBfauc7GdE5AJRnjRvTEuwwIBnIRNYjw6XjHm3ef8f70NafjO+bzPS1nZePkmOVuh65Kqs8g8QyeaH8FEZJYv59dumaIkwn44BB0Z1yptZA9dzFX5zOkkponHM3LYShIKl05IRh60pVzDQYKsF5NFh6yeSSIjFRJ1EE4JSWHyjJlSqpUnSlnKxUoXjAdJZBarlAmGqpsCBZ6Izjh6bxQ65mKQb9Vq4OOlBCEoSaCBIZxx5QGxmHiMN0QY2K/e8mY9m4EmDIf0ugsCgNBJtYohCupuqk5Ehfs/u+WP3px85IXz15ynE8cDs85zSd+8sXv8/k3nxvoYrCW9zG5J1ucMqw6yWvNlLoQ5ExVyKUxmzjnnigSGvuDPaOVAQbLHxYPEVd1776Qi3lBVbWTA6j3x4rOTLN6mNLZ77VqV46lOHJTz3YPxXpShRDRoVJDIoRsnimBwAhiz0qxMpLvs/2glZRpbrgU7JfWZPu7v5tpufGuHigH2e64fn6hd7rWWj/c1h219/6RfoeCksv9+r66Xnv/fD0oIgZN1ww1CKdZyVEYozBFKDUxnmdKrUzjwjQsdNJNLsN8vYSqWcz10hlvSW/74ZbUya153fpFTnqr4OnUzbmgZcdQs6gsxCH9mvBwgnlz1SzJPiDar7zL580g2eK15ocaPHgo4orPFbJuPJHQutQm9z48zCLWogC1vJd6G3gngurHXa0eBxd4SM6SM7qaoFtB1sNG0bujJh9W6/mz5Jm8WD+iWj3vszVUfM73u96sAWkzr8/5lUIpeGFllJEYJu/h5KguaeAM6c+71kb8Wr0/kzMMBBOMGgzx2POYm1ulPx83QMRCgXgdjQRjSk8MEArZjUgjJ96QCWtDR7YwcKOhaqcMRL/HFkZVz9t11vlqIePqj8aUsjcSjdHzKYbia0dtHkHnDAwb5dT2WYerP+oLWST0cxSt7Kc94pD1MY00KjZfzX5Y77EWfG6qhSZDCFDt77VEpb2kl3z0Zyhr/KeXWOhq3KiCNI+zVqqXUAQqVcR13GadtRUv5se3HlUtBFirQd1rtfC4lW8YarS197D15BOkgWG+x/aDVlK2fVhBtSJdpMsRY5SI8uB7cQx2EzBtqT+lXPqseuIatu8PlNwHrl0e/XZVUA1WfwGjfbCZ0LX/HJdKyLCUwrvjzJACz+5PDClw9c0d+2liP4188vIF4zB46A5bLM1Ap9UiVWdHhlKdXNPbXytulVUIRMa4d2FhFCxVKjPZS/kaHLpa8V4vasPj8JZPSrK3xdnaHlCpXhjalZt4mBNQmUASSEXCPSBEecYg15QM724/gxDXJLyHu1SFvJhHNYwDw26yZ1BNQGkN3olVPTSqVD1TNLBkuD8t1GqMFFWVEWFg8KT6HmtpkFAZUJQQTlZ07DH8GBK74YYh7RmHG8bhuXlcJ6O8Op3PvL87cn8+syxCKa11uEJTEgKrh95CqvSapYCQvJi74fKSjIzxhhRG9uNHTOnKxk6sW7HW4wpQqdYG/qRHKySOLdcSCLuVZVuk15H6E6r976YcwyCtIAkNXuKwAEUYy8SLImQpvA1HzjFzorC4LItaCW7kGF+cKX9xBGnLVIrY7JrCiIY953pmOZ/IRZkzLEWtFcokpGhjMkQYY2KX9gYxl7SOl+fnknfD7vROfq7G9I2POf5YttUADg3ykoNCBF5cP6PUK1JIfPT8Y+7Pd3zx5nMWR4nmkokixCkSNJq8KsnoiXJ0GPhM1EypauTP6uTI1aIgrfxJWKHq0oiAmx3iBcC1GtOJBDOQci3EYK0/LF9q/JvbeqYWljcVZf9tiL8WAjRDoVpTxTQyxIJI9EhMJPh60V+MYt6nFJR0od7TSm7mtIkkrQ6qKan2+wdhPmix9M3W3YkPfLaFSLtp+bSC2u71QJE9+MEjluntNenGeynm9s/ZvkhBOC8LQxTeDWemIfLs6sDV/mBCwOVHiGt9WDu95YLw8JgYVcs6WLTUliG5oisiL+bDAQaAeH5JtLJS85eN5wmR0eorFFqprsol67lZ2U4opGCU7AnkDOLhBNkT5IpSIJ/fohKoIYEYxc4QR1NSRdBqwiAOTn1dBr/XQmsHIu1GNVA1kAucl2o0MX5d1icuIjIQw54U91j2Y7Q9JBklU7VQVJSBIe4Z04FxvGK3u7bk+jlTamHJmfM8My+ZUoRaTfF3QIl4Tmhjxq/9lUygBA/vrWaXEElW3xN2jPGacbjB2g4a4Wqus4FE3EIyoWWUQpMMlGAdhGVwtKOawkfbE3MPbhXPNqHavGpGoLeTIEASIVVTUsdQyAIijYfAc5/uY6/MBg4Jp8FfAHH1JZZnW7RQi5AXWLKyuHAuiQ4Oie7lpDg4aaoHtja5uxDEWRs2xq/v01aKzZGngVItRF7VvLzDZDVxKY48u37BN+++5u3tO2qp5GKKhyikaIW+UZ0lz62BIMZBZZ5hda8TNAeXEcGdnTY33IMK2vBQXj7gckM9P+W7Wat7Cz8a0tMMoiCh10k1h6+9b+tTzYtSqhgkPzi34xbC30gwjVX+Q5LxcvuBK6nLrYUZLsER7q72qIxslBfrHxchPjycszn4tyonfz0BR//2x9AvYj3kEz947EW5SND1ng3pKBeXqGqM2tXzRktRip5IX7xhGgaupsRujMQojJOPUbDwknW5XTzsYwLJFFpCwTtzilu4BjduqkokGbhIrBTXwgibEdHWf8dAErWeCfczgUBNEU3OisACKCEOFhbTAGqUSilMZv3KSEuJj+k5KewsdBEDpVaO5/fMZXGL2CzOsthivSo3nOszRBKBPaIRrSdUzzbExSzC29M3HOd3zMuR2/s3VF0I4YyEBSVw2Fm9yCABZEC8nV/AmBJCGA0BqTuih9sCjdnOCmfTmNCgpDF11FUplSUrJFM00HJoLpzw+W1cUFzGAVYFJQpDHDnsnpPiREoDnZjVw5MiyYrbUUSzGykZVFnqmXMZCBoowfI6Qe0FdBbsNIzENDbxSMttQmh2QEebaTAuwyKFIkpIiSkGKpVFsyXVvbmf9QWzUEi7H9lM9eDzPkmkSCJKghrRUshLYF6qIeR3aog+P1LAaJGCG2ui1f+tm+Ob4rVwaBMcSqsRs3F3pbCxIdRzrD2Mh/S2NEFgiJHr/RW/9NGPOc9n3tx9w+3xPUqhZIsgBKVTbYRkIfBI4zAswOINT42eS33Nd+YRD4338K9ggIqt/PHSlOodwDMVycXCitFOv2Y/n2LcW/NvzZAEp4LqyFwLnRpytBC943P9hQBOPNi68mkrNehKHBtZgRJx84NHQIlmk35AwTz68KGCeuyNPXGlmwt+4hR6+fXTuzVFpQ/OtF5HBU4zIIrMxoQttzOfvTkRQ+CT51e8ut4zDsLVVSAGSEMmxgqarRU7Lf4spHjFlF4g4o0OJRLCjhivPVWxIB7Syw1V56AKoXpNiB1bqWheoGTiUgnvC6HAcnVF3u+oUigyQ4D9/iUxDQ4uGIDIOL4mxWum8cQ0fYxSjRMQIVONR2458eb+S+5O78j1RK5HS+AvluO6uX/NzfE1MUyM6YVBgzmBeLtrtb5CX7z9gm/efcOSz9wf36OamaaFcSiUCteH1yCRaUgQJmBAdAQRBtmteSE1ATXGYGEdX7QE2F2NpJoY346kFJE5sGRlPhdCCqTRyTo10WHKeM4MH2NprRiaaHCBjjANB17cfEoMTrvkXnLPoYkZGkEUDRnU8npVM+disHQJgeQcegORpLHn0QBiesYwTGgVajZLPzeVFaCONrezVEo2YMx5NEEV48Qglh+SMFDqwnkRcjkZeMENoV5W3B1Jg54ADCGhUZmloCVRc2U5V04nMbKJ68Ig6gxc3mNLWk25CfNAJbqVK9LyX8VPtSockegs+hsPRrU5kkhyVnXx/KUqWow5ZQiBIQ7shxe8fPaKXDP/8LPf4/NvPud4uuOb919RtTCOVhgsIZi2qE4RVipBZq9/dM5FLeRiUQK05Zi138OFghJ1A0C9tMB5/5zdolQrfp9USdGJZcMaAuxgCgnuBGxKSDpU3Vhyaq2Usjg1WTXSgZjRVFjqL4SSeqwMuoiWjfB+6DnR9NIDBdUsnicVjDx673ttFNf3c2C5CNnpB364VU6XbTgee1/93vTy64p2Kp8eyKuZIMJpXjieE6UKMQVihFELKVlYQXqNUEvsBUQsntxyBMH/bcPpiXS2/H66ucFGrNrCFRYrUGcfoDb2iEyVTA4z5jUsfkyHbLfzh0jQgRhHtBXl9ttvrS8Wlnwm1zNLPRmjuBc4zvme0zwRw4yqobjgjJE9CaKJWpX78z33pyO5LJwWQxemoeUDCotz+OW6kDpy0q6kFXwaYGINI4XgcX0nsFVpFnurNdrMjXUW9Ltb/9LNt9pDf21rTQIbSCMEu6dmXK+/NcFs1FTuYXn+xRhGCqLqDN5KUAvFmRBydg21kCUqqEa/stovsXl/VZzEGDo1YTQ3HtFE0hERIdfJPIqmfLvSZfOkt7Bv6fu1cJaTVjiM3w1AXWdnz5FqJzxbx9J8DLYo1K6FukARGpAIxPOY0iMbuiIa+tPqVx6EFBOhBnbDjv20p9bCkEaKz6PqiKXQQm3ewto64QZnqGigim3uus2OjYwU3VzAVlDYPbcSDXVaj+qACPN6zIdqbXJsvBvs/KHwMqWMsKFTwgqVgRCKR2p+IZSUbRdAifbur5AaSEI6smcLGX0YIGnx9YutQ9++y1u6/PzpkOs2pt2O/3jfrj/bYf3tUlFtrqG7X4/O5icI7trbrhXlm3dn7u4LYxJuDkKKcDUJu0EYEux20Qg4vQ5olOdcpR/1mqCmGMWVkDr8uF8SxsJtCze70qtoXUAroQiSE7UG5gGoylwLy+lIlYWcbvHKUkrIxHjNNH5iijEOXsQoBI2oC0/AePY87DDnI6fljlLPxloASLFRuTt+yWn5mhAG0vCMIIlaM1oKtcAyQynKm/e3vL8/eghMCQF2+8QwDRQWvrn9jBhHzkthN74DjWg1hbDfXzMMI0OYGNMeCYFhmhhSopTM6fyexuBRtUA9MY6BcYnWEjys1OEmHqyodwNA72ZVw/908SQwDEazNI57C5mGiNQ2iYp5VbiV05GJ5q3FZPVIqlZeIFSymtGTq7JUQ4HW7KjJU+XMmSAjQ7xCiN6qQtBcKcEYEqz1uOMonVwxR7+2NLCrB5RKGvdmoNQTWu5NGWi7bwv7biYiUQqBYuE/LzKnFkOvFWFZzHtqOZ1aFublnlgS0xCIMfpYlo1CXPNhqLhnEqDVEyIODzIkW+NsFLfv1FnLVQQNXoKh2udoA+h89PwVN1c33N7fcrW74ryc+fLt59zevyfFQBrcwBmSpWJLQHLLFZ2ptVhZRLAQfS6B3r2XNU/vC8RuQYGhNsuhz6vWKmSmkEMlhkCNXsYQtRPvqqxGUTcQpMk+N1G0GgO9BOCENQfNlLiw5F8I4MRDb6O99PLfnVFCNkaQrDtslnoXst2oeqig6CzBW43QRcZ3MPs+Ct1tvTDd3kP7wQeP9OEvu5Gkm303J6m2xI6nzJHCOAhaIUVBcoQxomNgTNZOI4qxIkT2DOHalVRT58XDd1aSq03xO4zcFHDbt+L91EErUhNSLdCSg0HNs1ZyrpQwk+UEqizliJTIFHeE6M0MpfUsEFbvoVXlt4ViIIelnKnV+iqhdMqispw4LzMSErGcEYnUbKGokpXTUclZeX9/4v602LliIkVBJRFTRCncz++Jkkhh75bvqqTiIEjwkAk7RCCmRBospJXzyS3W2bnqFlK0hntrk7+tt8wDBXWppNanbZMgxsQwTBYu7eHAy3F6XNe3hg3N283dsg/Na6jefqJ6uE9BlkgJHiIKdq+5mkJTrAeYXeiA1Y1h3oAINQQkGqotxcHmRwrmnS1CqWd69t+vswX/1lkeeiiqNdS0OWgeVSlmdLS8iWqjvlKIxiAiqut4tiJz97a2LeDX/5rCaoz9QEf8dccLrPB9swYVO1dQI8w9TAeu9pEhjcx54Xi+55t335Cz/SqmQEue2TUkQnWl6VGEdjLzWoTSHUYHKcQNsVvzptYAi79WA6iUQqliHbil5e8sO0poBrCvOlFWGjSP+nTIu/bw39bTz/kXyJNqAJxtTmp9yUYpsdH2j5WMbv8B6/cXXs4D5bBVZDz4+GJbH+nDnbYImW/bLkXTxRVuFtPmw+bd93XWJmVXJQiwjyOvbgyW/vwwcZgGxhQ57JLXiVj+aUwHGrt6a6duW1NCrdpJaJis1jm4L2TBcoWqhNb8UCsMplREK6ZCIioDiBLCRJA96OgJ3orI4mEpLwzePNdzPnJ7fMP9fMd5uSeXsyHXWssG9wBzVubFLZLTDBIoiymoUpR59vdFnRkdVBeKCudz4niytg7jaN7AnO+tCLo2VF7gNL8nhJHdeMPV9IoUE7fHAykmlnxiXo7GLJ3NGv7m7i3f3L7l/nwPoZAGIWwiANF7IOGWq9WazV5P4yEfbHy3YZggiSGaN7UUa2GhYpBgxcI5eGjL0IoQpAEsij2j5vKrEskEyQZ7di9vkcpSZ5IIWu9N6avXLUlTrh4SEy/sDbZgDZqcvADcPK3EiJIIWghVPTRqz7KhxVTVkHFaOecz98uR03Iy5u1gRbwhmqLP2WiQlIrE6oXJ2b1GJaUWiqUr/f4e2gpc5/pK2QWmNBMbv4JGwqt1jdmsnIv0MVGFUM1wSyI8O1yzGybOr88cdgfmfOY437oxY+cXEWSwjomBAanBvKEiBnogE2ql1A1EvEavN6tcIgDds2pKqzVTxBRprcZc35CRVQNRo5cCiuWrVBzMKX09tufd3lror0iBspDLL4AntfU6pAm/pqTixoNqMf6urC5DfJfR6AfbkwpKHiiyp7yqB9d6se+HTnZ5X22/VXmu57rk39t4TE9oO+3CpVnGto9h0ITrYcenL/8J9vs9L65vOOz3JImMwWqIausM28APD64FaaQ/a7y+K6i+n3lX206dISYi5pVpCCCFUDNRC1ITlMn2C1cI18CO0hguQrYcmK7US9HZqZd85pvbLznOt4buW440Kifpj0GYF7i7NfLdXE/UaoqrOCIyZ7cIDaLnNS8LWuB4H7mNwm4amEZDnh2Xd7C8sQLSYseYj0LJcNi94tn1j4khMSZrZ1Ic+l1r4XS+p5TM/XzH3fmOXAuEwjBFQnTWiBAYotd8efdb1cXh4y581H0LZx1oijuEwRr2SULlaMhJqagkC0WVhVZYbfm+wODt5oMb8WilLtYpWMICuqBaqNG+m8ksJRMozAVELGcovRNr6vPVlGhDKwaSNAYOR5AJWKdppZIo7O1e81uqzqRgtVu5ZGbvH3Vcjrw/veO0zFQx0tuQhFgM+jwvXmhKRpLPobBYbijBODblb1O8GwMG/fMrd8Hq4bGVOmil+JeNEddwC6gSHNJdYyswb0alUktGqIwh8vrmpfFx7g6cljNfvvmC3/vsd3s9lbX7EIYxmcEpgpaKlEQgGY+hWN1bLko2kKZ5tIaH9wuj55E7qMKplFrn34bGrO7xqdo8TMGU5bYLcKs6WEEVzZOy94YgtIL7wrL8Aigp2Aj0zfvqMXHp5DTTiPb5gx02imF9d/Xy0LtiwyixUVpP6h55vF/bvjUXdbHjA2WoD7wo+YCikg9dFDQiyCEmduOOw3hgGoz52pgJhnZyT6YWlNaLiWZq9Yu58BTb+LaF3mys7SPQSGvpYearT+JqVn715jhuOzpPYDGLtFp4ULQJPF8OEpjzmdN8x3k+enJ2fTgqztKhRi2Vm0Jq7ATZu6SqunJ2o0dD9xgEKKUyL0YtMy+FGBUw1GItRstTizloeVHgSAi31vk1nq3QUbNRPtXKspwoNTOXmUbimaIhqWK0eqwYAmMaPCdgSqpqRKpRSa3tMxyp1ngBCY8MHOvrYyHFqmstEtB7SRlIJXSYdnvOGizM12rFilqepYV7VTso+3IOdK96OzlXsMNF99b+MzGATEh2nX5P5v1ZeUPxnkmlFpZSjJ1fsNBYsLET8YyeQi6VJRvvY5FCEMsHqrb6yrBeQ7+Ltt5XI0+2/94YajaaTTuF7qC0/HCvVxKnNXqQYwwuBIZktF77ac/V7oo5D5yWe3JZEKG3LTFFas9TgrGOB43ObF4xXEXL57lh3o2ZzbNaUSn9WfeQnYfvarD7tbFvtZDiMKU1Z2jenl9bA3358Vr47xeiTip4SK8DIvw9ROlw85Z3Xn32y4WyDcfa9pSGkCfeH372IQ/qgXLZbN2paZf2odN/L3j7ZXR+nRUPqEc6aASGcWSXBm6un/Hpyx9xvb/2KvsWX3drK8QepuiCqTjrMYYEbJPS5mXoE109LCINvbW5RzEcBeodXVUimSOzHsl15pTf26SOLyEoKWQCJ4RAyc6src3LM0GhVL549/v8n1/+Hyx1oVAgBE8gQy3K6b5ScuV4X7i/N0VULHXhLBvBr90b51UvREQdoQf3x4V5WZjGxHnJxCgMyah2cq7Ms/UEOp6UvEAI3xDCHYKQnIrJPKmMCB7WE3a7kf1uQkS4igdEguWoghWBHnY3hM7fJyiFUs+GMsz35Dx7qM4GOtS9FSqXRM7qofHBQAJG4UHwuiTzSk1ACtLps6LzLopAs1uWcksu9+Ry4n25pdRsdEtizQEH2XnfpURjiRD3lLpsar20OvVrm5/+6qDSgRAjtURK2SHFoOnn+cRSM7fzkaVkbpcj98uJUisSIykEBmaI2YrKq5UMvHt/QmthP87oTWVMI9NwNMBHGpjCjka62xem2Gi3iPka8lNUZ9+huLJqBlcDUsQVTCcO5xe860rLg6/s9losVzOlxJgiY/qEZ1fPOS9n/s8v/xHv795xXo7cn+8AD1OKs2ME4/2z9hsNqm7elyljpdTQef96+LJ5VD2s6cs6NMvOrrNko8iqoVJqJQRhjM1wilgdo1i9ZZtPTQq6gDBwRu11Y9+1/aCV1CXAwKG7zYLqionN31vhvuFfa9sjb+l7frYNyT2+ym6NbX96kYdqiqoL+XXHx8rz8njbu7n4IRsLaPNZR8Bh0NWYLLF+NR24mg6+6Ax03Np8i+ekzNoL0Dm3PL6/4ZJYwSkNAdWsBzvGepPNmmp5ohX5VFgourDUGVVhqsVoYLRifaECuRRq1g6OAEVlQancn9/z/vSGWgtpnEyoi112rbAsyjJX5llZZveq6loPtg6qL16lh1UaemnJpbdJEacNmsaBIZp3djoZ797pZKwHqpmqhi6MLoyKWiuREITdfiClSBoCMe6JITIMk4X4QiBF6290mJ4T4rBJLxZvb184SSDIfRcIglCXgd5NtzZQgDGwUzMqkepeF+6JrnyGTRU6CS7iaEPI6iwaLMyes5iC9WUS9fwSEYIpqKaoHs/RNfS+elHrYljXrqE3TelZ8epSLLw4l8xSFvt3zRaxCoKoYL0FFS1u/QPzkrm/N49m2RtrfS5OSxTiOn5NNvRlLv2/bTMjbC30tTIJRZ24eDUUpd+2gOV6kE7O23/fWnSAGRJiYIrD7obzcubd7VvmeSbnTC1mBKYGquj1SxtPVyuRgn0kHTTVDFndeDxd+TYb1UmCrfbe7t3qtp3/RKxZY/TQIUEsd4s4lZIp7P4M2/G1ma+/AJ5Un9PeBn4LQW/e1UaLXf6IB1G9h9vFh5vf6uPjfZuCeip2p5d65IMhvlW/rOLiybvZGKFu7334XjZkt7lmzhluT+/46Tc/5ep4xX48MKWJGAPDMLrJN6AuaNpFx9CK9lJvi9CTywFbNK3OQishjIQ4gTRFYy2+qxgNkdVCZRbuWfQ9C9mZB+B2/prTkglxYDjvATEaocUplLxbcA0ZpfDu/AaJsva6wZDIZbHQ2/GoLGdlWUxpaQubNBJTlFZ5awK9GT0by0JsLEuB81JYcnVPJVCyssxW/zRnKHUrmDG2cCwSMKRAjIFpSqSUeHZ94OMXL71nkeVyUkjEYHVc03jlYIfGFlG9jUlliAO53oC2ejRBxgmpA/vdC5KzeqvfhzYWAAKJnRkk3p0WD5c3JRW8lUnwhPj9/cI3799yXo68Pd5TamZKMMbCfqoM04FEJEYrzjVPKnVPSpuybDnFPod97Ff7r6uvECLjdKCmkXycWWblXBben95xzmfLRdXLJRNSIInlaap7C4Ymt3BycSBMrrOXKcBSrHbJWnUYOIE+FuFyrfoCVFdCSuvy2DCCCaETY9q7+vgqhILD01mLf72Uw7qiOKJRrPPA6+ev2O/2vLt7yzAM5LJwf75lPi+EYAYQQZDkbXmEDZhCjBRYCuKgheolCKsx26IjrHo1+ne6fmhRB1OEi2SKBqI6VVhTz2KB2YBFMrbgpg+mNZ7YftBKyhTTqqCscJLOQ7cqKVnfu8XD1rhpR3xCY22s60dhtw9emf33A09hq6O64fhgh6cVlB/3Ca24PVfLz1yc7OLdhOZSMlUX3t6/5fe/+n32056Pbz7l+f4Fu2li2h08OZ/cMsxuDZuAASGXSM5Go9PazYu3gVX1Vg4U626a9iiFokcTrMHIWq1U9EzVzKK3nHlLVmVRUyLH+Qtq+dqF3A5UOJ0WspOyNQhsCdb8rpSFkMBqp+xeS4b5DMus3N9V5rOF+dSRTEGqPwd/DxbaMw/dBWdfzDaGVnAK9Vz8E2N+1lKd1aLVjq0LtD8bEUIShsHqoXa7gWFIvHh2w6cfvUYIKx2V931qDB/WJ2uFX/d2K3pjQAa1MQBIciBgdUtj2iESnLJGQaML0kiS0ZSaE6oia27EnvkKS69auD0u/PTLr5nzmbvzHVULu7EwDjPXVTkcHDodB0I40Pjb2txb0aaeD1s14uUE74vFGdyna1DlfrllqcopL7w9veE439s81UYxYz+2IvVkiMvocO1k86VKJutCUMj1TK4npChxaez0rU38qiqjg3RWB2ldl6U2XkdhjeN3C6jNGr+v4AwsPkOjWGGzBAOigOcZ1WWEcXH+6OWPQAJfv/uKIY4cz/ccPz9xOh0ZxoCMnkf0UK2BihqYQlAtiJwJYpyCS3a4PkJvvhVcQvZr1/WZZNOmxqDh3hUWsh68uWoIVl4QQ+t+YIdprXpsWsmWCvRbtx+0krLwxEYr+82vOkk282NVVi3gdSHrn6xv2gTWNgrqwjH5gBv1iFHC/3i4+yOr7GKf9ZyNifjh7o905XrBj05icfHVIrJQWWXOmbvTkVKVXXyPaCDrnmlnuQucy9ygyIsf2+tbdHFBqR2koErPF9Vi7earnCkiQKHK2bymeqLoyfIpeqLqwlxWRFJx1Li1rGi3dXakUiZrI6ptQsdbO7iisf1tidSqLIuF4nrZVnOKGr8jbQH5F+HB89mMavONLE9hO1XUcmyt545u6u76saV7/DGKhfhiZDcNjINB/1tjPfNGpbeLwPMO24dtITDPlznLQ0f4ISQZCTI53RDdk0BBqniiXS0kqhaqMuHRoNsOhFDvLlwWSs2c5hOn+cySF5bFFGOUjCDkbG3Pi6rlWZpH2pSUrkoftuGzx6PbBq4n4V3wS0gQRpABY7cIXLArbMaIdg3qXgyXIAqjAnIgwGZBN/CMbBRRe44XD5aNGeke0tq83lqO4KwVDaLSn18DTSj+91ZHr8CK9mGTdUMa2E97AK521xbNEK9B3F6eCBKDPWONBndXoyiiKiG0WkYvs/BxXkd/o2zbxfW1tb6rr7EazLKssnpj4uTC2mVPk48fEJ4Pth+0kmpQ8+ZBXSLLm3W2RSQ4KujhgZ4ghm372/fb777Ng/K95In9NpGidb+NEJS+22aGNZj5EwpKePDZNkSymT0+GbpBxGrBlFKt5US9J5fPSTHy5fQNu2HioxfPqPGXmMbBCU+9MVrpfP8AxDAwxB1VK3O+pdSFuczMeV6tQFjDsVEJ44KEypJP5Hwm18wx31G0UJYzJQdjfFhaotq0Sq0Lpdx7qKH2sFGjcZHYHr2zk6sh+LRWzqfK7btCceWHRAx+61BaH5PQDRztoLh2t5ezpHmq0g0Lg51bmC3UlvVvQhJvESNEB0LsdgP7w8huHPjkxQsO08T1fu81ScGT99J7H63CGs/nmXXc6qjMp7SwrOqAEBjkhih7u1+gFcSqI+WCWPhUtHlLreOxEIcRCYE5LyzLzHk+8dWbzzmdj3z29Wd89eZra5JYzXApc2aOVlB7fHmGGJhEiUNENCFqJQ0d6KJe3N2Rd4WgwZVs8+JWc9uWs41rSFfE6TVREyF+Qcjqj0J95teNFWcgiCTJn2ShUDkvyru7hSHC1ZiZBiM/bSUNtVQo2Y0EX9ebOoa2ptq/o7OHq6rnOCuqizUZlQAy0nK1QqTD1AGqowAFGpWSBjFQEbjXBah5yPth4MevP2XJC4fdgeN84uu3X/D5Nz+zJpseJoxRiGmgARoMVBEJsnSvSrWSa8vLejNF1KML2mXL2kxRvZmiz0WPRmStVLX6xaLerDJGBswrN9ClAYSo+osEnGgKavWgLpKebUdWD6pv+vDfzePYKpnVnni431N2wJMhPu2RjfVyLn706Cj9w9WDkke7y8NbsR88PvSD87afVeg9ZfR0JEgg54VjTIxj5bRcQ2i1MsE59loSx4T7kA6EOKJUlrqQy5nzcuI0n/ycjvAJLvyikqJ1e13KTC5nlpq5L3eUWlArv0Er5OxWpq1iaq3kMndrt0eM/AYbQ3NX/tX2UoVaKosj7lTjOpqbx7waDLoxdjZjrOtPusUrDZTuMOza0uudCnUTyjKLvnH3pRgYByOmPewmrnY7xtRqX5rl7CzdgYuLaSFDq59ymG+7+T5/IykY4k6796zdk7JmlAmj+2nesmB9pozvT2KAslAxZXR/vuP+eMf9+Z7TfKazOgChKhRhWQyEsNTSr9M8ieh+RPO9odXrrGOsPZfyGCK0yWnEgRB3SDgjMiAymNLeusib39lYOXWWNV/qIBq0kkvzpkzrCEIDFlhtUSu7UE9RbdblhdPnOdBWTtGAQaqoNM+/FbvTx7wrIZ8qKq3O0OeY2q/U4fUpRIZhZBxGci1M847j6R4r9TCQSB+zKKYEo/dWU5tjtUJ0sIN1NXCsX7vkdo8XQoQeDrSIRLeajNUDCKLGVCFGpaShsmXW1J4H+0XwpGKz0FsIZYPq61LHBFcb8A8Oy4W39NTn7btvUVBPSrYPXPtWKG733YQVu5B7cAVPXKV/uPGgtgcVWxI9oemWTwoDUZxdIECMys2NcH0Q9oczp+UrikZitLbntVSjMmlKSiopHhjzParKebl1QteF83J2xdwEUrFFGpW4WJ6nqjEuFy2csnf1zOqhQpxDbF0otWo/5moxbytMbJW3aFItyvlUyAvM8xZOUukxG89FNU/qKRhMfwLSkv79quyaaumLtCmIBuUOMUCw0F6MVhg7jUIKwm6K7KfENBjVkl2HWeQthyMSCP67VQBX9wqiG2jtSXsOIzS4t7HVB0fzWYdhyCVTa0GDlXNbPmIADWR9z1Lv7VmfLWT37v073r1/x3k+8tXbzznPJ97fvaPD/939z9VCaO/v7vhHP/lHjOPE8kllfpbZjze8uLIcZ4MfG2BsvSfLT/l9KiYtJawRAJ/iIsJumHh2eIZQGOKOM2eUmdrC0RchioeGmxcL24ghVbmbj3AUclXGNJHCwC4dSJui1DbfWp7zcmX6rHDBG1qInRa50Q4OgsGNir4iodFRqSkUmoB35eE1BQ66sXEOZQFVdsPIECP15ScMaWBeznzz/ivOy8lQsot5XzHYPDBn1L1nMUUqsiAl04rCezPFZl03kdog661yQNU1m/SlpeIRjKDMTqAcgpCC5atite/qL4aSkrX9RkvEySogHiqMxzaWrF88/KxZSBefPbH7U8d7sOMF3JwnFFTf76EH9wEF9ZSG2lo7F5tbueJ0Ohu+NmsDIOC9aVJUnt3Aq5dCDDOn5UvmLJ78TtbafLGJ3GpCUtwx5CtUlSWfLPxTMov3k8k5m1CiWII1QEg+AMGQTFWt6Zs2jLiHzIydcxX6tdrE9uAQqzVuQsOAEnTPtVY4nwrnk7LMTcEIHaUXnHXclQPtiE0LuXBsYbatDbF6T4WaWy7Or9fRjSJtfgohGWFrDMI0wRCF/c6U1DgkrzNp7SMsvBqj5XFC3CSZXZCbdzv0a24ILaV48euEdfiyPlwhNLb4du1u0YrXkOmIamQp7znWO5a88O7+lnlZ+OrLr/jyyy+Z85n3x7fkskDRDs1vHkfRSkY53y28vX1HjAnRgVqEl8+Ej559SkqD5az6NTRvw1an9ceqm/Xrk1tXk02A3TDZ/dTMEHZEMXoprYtPmYdB8s2i6WFEg5xkhdvzkUWNnHU/HRhjYUr7DkDoXpT/r4Mn2mPp/7UPoy9yKzZ3oV8W9yz95crSvLGVsQJXxOLzrXs4TXD4mFcnwt0P1mNqP+55/eJj7k731J8o7+/ecn++4zifzHufktdSmRGk1WiwLOxmqMWqDTELS45mhMmqmLuiElaWCq93pNqFKlDUohbVjdEggg4Y5VWIxGr7fJ/tB62kYCPwBS6F+lYTbGiP2kfd6dj84pFSesAqgfBB5d+TBQ8Umj6928NNL363VZ4Pltp2rW1c8PU0D7yojYchfv21gqgy7iLjZBX8liuB3TgwpoHWsrzlREKwHkTRKXDUx9sWsU1eL9WwBnMeTmhh/FZ/D61S3uLa6vkRrS2csh0B7de+HR/ZfPsw/7dy2fox1XMDjoLoVfZ93mgfSVlPsI6krnUkfpvdm2rGvq6X2X/eDKcQzZtKURhSK8o1Gh7LTXlvKbFcztrc0GUZegGyanMiSCQG63dVcIJXZ2MQD+GBGJ1N8+5C9OfvLTW6YhMHs0CVI1VOVJkpeibrwqIzSy3kWt1z3AxAH/jGc7F6u7VWjqcj796/JcrA26s3TMOOFEdiNOb65pE8WTPjE8IACZfzoTkXLW/X54QvuJ7n78/OH5Af5+EqsVCygYhOy4laK2M4oskof+z5SPfAVsqp7czp6qx/Jn2Oru8Wvit+baXdYdv7YgL2M7QUgyMKL+ZtGyex+TTGxM3+2o4axJ91RbVQykpJRXCGCryTAAPUQgi2bkKofdjWFemLvI1BcyDDxYD7s2jGonlepbbFiV3XL4KSetTEsLWo3iAoLkvv+i/t7UMeFPRF7gd+vPvmd/Lwt749lYd6Ksx3qQg9Rv3UlT35IVvtujmi+pXb9QUNUANalbzYAvn4ZuD1xzuiCKMTl15fBXZTo/kvIDAkK4hdlYn22pwVtaWEMKA1EKJCLk7LEqgqlArFx6PU5gfZtVaaMvEJ3Hj+vNnc2pxP3Rs0q7LnZXwaqzaloRv+PG8OKFawav2SegCGFhvUbtVun59fYb1UkILfg49HLTZXontPIQbiYEi8cZeIKTAmYRpMMe1HYYjCbkyMyV5TGJjCSCJ5uKdZroY+iy2v6koqycgQ9wZ8KbPdH9FLBsSJXTGW9Vq8qaDBjo/ziSVnZ3IYrWZIbqnhzCJfkuUzMpk5nJgpnPWeYy2OshQrDm4hVxVaEqN3C0YMfYfw+Ref8+WXX/P85ktub+857K/4A7/0B3n9/GOfTy0/YXOo1oy6RyPNLA8bZaQKTsAUxV6NHaJxwpnBFLtR1hWVh2ure4BmQBmYal7Mm0fvQJQUEvfjPVOa2MWJw3AghshYR2vclwaGxkVJWBWQGzNdDYrn/kQZ2vmrUnV2T9a7KovS2oB09ebFU6GFmWWtp9IQbJqgDoawcU8iHKaJf/LH/ySlKl+8+ZzPv/kZp/nIl28/Z17OpBQZBkf8BWuXLDkQ80itmSBnV6ILJWZjVPfWHzgFkkjdEPi0e9VW+NW5DasbiqU6wWwwGrYatTO8f9f2w1ZSG4nfLeqLWLRtKhuP6JG39MRnT3g1H3Kg2i7yYL+nPK6nvKinjvswXfzwt82qvHTaPqRC/Xjd9MetbhjGwOGQSBKYQiSKMA1GYqpqNP2IFVGa5Ysh3lCr4dkQyqq79ETr6BOc8iUEcatW0BoMmuvX0JKnLa/Uugw3g2zrx64KrFmzmyR6G5zajtNe/ch9MJrX5xfwwAN9yqDBBfLGEm4/7zmydbR7SYSj+YLnomKEIeGeVNjkqJzSxq31/qwursms3zUf0n7TGgu6RyLWZt2EsCkPrYVaF0Si1fCow/fLYmmFGEALRe5RTlS5R8OJKpmKEbVWCl4ezOVT2cyyZnJ7DqUFyU7nM7WcCBJ5+/6NEcJ2wEV7oqt1IFLda/aBle1q6BPHFAxml0aJnVz48VOUR95AO9J2n+povCUXTsuZFDLRx4xUSe65Bk9ehhpcsdIBDk+s2n5O8bmhKCrN/ba6LVvQhTWo1tjotV9s+0ZbXVX/yv1QXWnJkgTG3Q4V4f58z/743tdW7AZXm8/i4cMQIuoh76jZQRXOpKFOjK5bZHRzArbuHj4VNz9o16p+h2qFxVF+0WiR2h8XeSgP8cnDCembbt83v3uCJ0+3+19ewSbc1H53IRa/24Pq57+Em19M+kcKqn12cRNstVBTTsERVUaeWhkG4eb1xDBGXr244vn1FSkM7OOeKIEY1Nx9VoRQY1ywZKoJjxos51S11ZKoT9BiDMlxtAp/tb5DLSzQkEcVdS41LwTu6WUcituE8qrUGuNBu/2mzJonWRtqrSHhnKooeigiL9vJIEDtgm07iusQb8K72p5r867YXJdZ0uMukcZIjIE0mQKaJmfYTjANhtSLrd40RFLwGiY8/KXNW8BcT6lrPrFdM63BoyASSXGHgglRsaaGWoq1iIh2N4VMzUeqVs75PXOejfEjZyQUZLxD4kKu915sbWqphX2GwRLqOTikuq8LheL7SbCCzc1aCUEgKHOd+fzNz5ju3iAEvvjyC26un/HJ60+s55W3bUFWpnTn43FjxoQ4NXSvQSSwH674lU/+KT46H/n83e/z5bufULSwlIVt3ygzTuqqq/rCtLfWwXpesnHeBeF8WoghMITELhiv38vrV+zGnREy64HgtEXN0FgZKZoyeagOWUs68FIKBNRzsl4qYDx+DlNv4BF11eVGQBMdLVfVwuhCNXoV4Gra8enLTzldHUkxcZqPvL9/x+3pPSLaSy4kBMIYTLksStAK2VuoiHlV/qjdYw4WzgcfV+3rUARIXn9VV5nalFUuFTRT8rea/n37YSupZko9oaDa9rTV98RnFwpq89nTB+FpBfX0Sb9dQa3nepBRe3gV31NBXd5BcMRQqYVSKtOUePFqYr8fePniwLOra4YwcZWem2WuuYf5XBxTaSzRa8GjJantPUt2T8rUSgymXKpU4wyjJchpjIB2tbV2ZgSa4OlK21WCbMOABvYAnHmbzeKwwWnWflNUw2heTMnKSWpXMihec2MKvW6sOhf/fQwbgs1Ckn5lm6E2BJ4w7AamnQEdOmHsaB2PhyRMqSlae5bmAYzONm91Si65epRARJDa2s2369VNTXYkRqOvCsH6MUktVJ2p/lsUax5YzCg453fM5ciS71h4C6EwxoUYij/f6uPr9DxBGZKaZg7ZORINjabi6MaqTuUUXTiZepEkhFiZ68zdu3sCgdP9mcN4xS/96Je5ubpimnaklKw2Sxvlk/oxHDlJoxpqPIAWaNsPe/6Jj/4AuVY0LNwvb6ylxdkAPJY/Wz1qEd3U063PUH1BLjkzz23fexPkWERrGqx1zPXu2kKoYhGGEALEZAaSK6jAgwXf54rlH8FKFlQNLau6uT+xI/RZ3SebWN8oD3sa8k9QrxO18KuPVTGFfDXuuN4b79+YRk7zmX/4s3/Im/fvbA4mk6MpGv1XrM5kYiR91BIIISOtUD7TufyqFyIbWrAV77ocWnuSrtx/DVSByZFSNovoW7YftJKy7YGy8Emy+hOb7Qnevb7HRmF8n6F7Wuk8oRIf6r2L3R4oJX14dU8c5+LDh4rK/jbl5EAJTxTEIIQxME2R/X5gvx8Yh4khGNx27f8SHh0Pb81+cY8tJEMfcjrc3AVdDxB1O8I9vGBz+mJstC0y6V5LE8iNMNhg1Kv6aBxzLUyhdR0S3XiTfVx67cp2HNf7aCPZP2nH0lVRdfNVNlZxcOi4F5bHSC/YbYCJ1NB+Qk/0926nQbp13UMwIut4ufDZegLbe5N2T06gWtXKA1qhrASsDqYamrIJvqrKXKwcQIqxBRjAUliy9dPKeWWIVyzXFCJEY+ZDVIyFG2Ec9gxppJTK+TxTSuE+33GeZ7aoyaXMnJfA3ekdX739gt1uzwuU/WSeSZKEOIOI/cZZRFqbh05oLD4PPB+IeVqq0pWTKf31UbeQtcj6KPu1NUPkYv6LKxNlKYXb012vp4ohkbw8I6mSQoSQWIEeFybmdqLTwphBvD6pJ2nNg2yhXbuSteYOQNx4wJlFRKXRBRogqLFYyHq8AIzDCAjPrp5xmj+ywvt8pHrYsbYx83UWPE9IhaADWquFAD2CYvlpn6Ea+vzUNmcv/AZdH0AzYr5ftO8HrqTCAwXlrzUpv9k20GvbPuAFXXz3pN7ZCPPt8fXRvhfW2qPTrOe/mIDb3S9+c3nwdSFt3t2aCWrNFajmQaDK/pDY7yPX1yMff3TNYT/ybHrGIT1z2LOfzEMW7RyGK7B8kuDFiGpIoXa/IeChQOs3VTVT6tKVlqDEULulF937CQqhSgc6oIqW0OPZFQdujEbPFKUJe/Ne2qKsYjUdLBZ2uIife7JXsAr6CqxADBtk9WfahFVTxl0ft7/9JYA0yzMJw2Se1LQLpAFSEkb34A6j5fhMIZmCCM6okEJ0dvPoXYpbJ1xXgE0YK81tRGLF2tFvzQmbDaU05vqMcjIy0ViJoT0/E6BB7AmXrNydFYKyi0ospqBKtuaPd8fCPFfOcyUXQTWS0p4Ylauw4ypMTMPA88M1Yxq4uX7J4eqG4/2RL774muPpyP/x0/+Dr95+TUyRaTdCgNNyx1zuyV8duZvfcNgd+IO/8od49fxjrqYbnh1erSJdi7+y6xsTkiJWiowEYrIWIFIDNQc0B6u1q+ptnozlofrAtsLn3vGYZmBdrqzgIKbq7WhymfnJNz8lAK+uX3Gaj0zDzngLhx1DGhmHyUJ5Ifkzj094VdrnUTSadsv6aasdPANixLzSPMfBLl4bd6ZsGiqKG2ugwRSYOpgh1IpUU1LP9tfoHvbTjk9f/5jb43t+/2e/x2k+cl6OnJeztZwZvNg9CKEkaikI0clpz9SwWA8vc6AdFOFyMbQ6qmZgsnpZpS/YFbb+PbYftJLqlfy4qf6U0mnmUv/bf9s/l8td2QqwJ875lFLbaKeGJrrY66nDda9JLv9+sLs8unTd7PDYk1oNl03OAEjRBOc0JaZpYBwHhmTs2hfnczPd0FUm7Y2mxtE9Gxu+13zYzjQghP8FF691XMyT0P43rvjs3bWLC5KuxiWshdvgLAuWS7AYva4em+JeiI+oXo7P5Yhx8Z1udu/K6ql9xa4lRFNUIa6tx6N7VdELc2N0i9+fdfOkgqygiS0B7eXzePB8ZftZ16j2SQtHiiMaqd0b66HDzQhUVbJDLpcCGpwtvmCeVFk7DNuYBGI0NNiUJg5xx26ceHa4YRwGnt084+rqGWMYOd0tRIkMcUS0GT529qoWKj4vwu1RjAvwfM+8nJiSs7G3a3U6rnUNr/OpafA+l4ALHqvu/fq3ba52j8n21e2hN9u2jY/6+C7ZOhPv52NnVZmX2Z5hCMSaHMJt4VB/4JtnuJ2B0sVXEG+T6K06bD8DkZgBtQVTbJ/7OsdXhgo/aPcKTakn6/7IftqThhFFmcadN4tcAO+L5TJARNBgvbAM3VsJugCNpd2upWxMa+38f030ah/6JiPWcXhqZT3eftBKiu7R2MA+FtnwlIK6UE76YL/N9vQQPqUE/c+tEpSn96Erpe21P3H0h4quX/ZTV2UzoFfZqDSeSaLD9J+9GPn4kz37acf1dO1V9eOT+vPilOIKAs+l4Jx5rgQttGfeUy0z1XNazcNVR2upk2uCTeJAszIrlerdZbWPTRAhDYkQjeNuHJMR6/jAqtMyiSe71JVVDQ4/V92uDAtjlU1Bb1/MbvlJK2Jc82e9HqgZDyIr/94YiCmQxsB+b3mocRRisvYb4xRdQUWDSLeQjVgNmQApRXbT6IAHu5ZVeQlJvMAXDwU6gs042I6UpaASIUx+Tz6vteWN1tCVqBKqEwovhfslcz9njvOMSmEmI6lauKwESlHm2djjDdVtze2eXV8zxoHX+xteTjeMKXGzP5hHOO2Iw8iURq53N8xLJg6RV89fc3e65Yu3X1BKJo6VmCAOCqlQw8y709fwrjLnMyJCigO7cU+KCS/N8+djzym6gjcP0ghtRYRxmGxulNCVTK+SbEz2/l6rep/n7VrbrAjdqAFn/4gJUGNf//z9l4xpZCmZ3Tjx/PCc54fnxJioqRJDoMaB5F7VaiI0M0MvZEMQceZ9E+AtD9wL153RnN5x2TRsMwBC8XXpRqZbUpa3UtqDtNBfCDzbX/EHf/wHmfPCl28+5837b5jLzP35lqqF5PRdxvVn980CWkbLU3GmqrX+qLVSNTiyFM9peYhd6irumnKVJre+e/thK6mNgtpMxcfbI0XUFvPDHVfl9e0K6rHiezos+MSlbDy4bZjvQ2d68OsPfiZYnYy0BGUrpI0Qk3B9PfD6ox1T2rMfrxjCSHTCzSe9w4v7CF4AqECgis87R09VD/FVXZwJ3a0wP3rrMtOEZgvVBExJoZhSqc2sVaunGCIxCbspMU3JPDq3lEtXbmroMhc+4qSYzaBunGgWAzcEVB/gpsjE7qM9IFNU2mPmTbA0tgwRseaEg3unDpYYBogBhiEyDtHyVJ2vLvQnHhwNlWJkGhwZ5ovXvvc8SwyrgsKRVp5/q/VMrWeQZMql9/oKKBZ2vfQfjflAtJJL4ZwL55w558VDaNlaktTolFLGa1edokqwduYfXb/katrz8fVLPrp6wRAD+3EkiLCAkf7sR/avb7zfEFwfnvHZV5/xzbs3FC0GyXdFJalQw8Ld6a0bOOqdcneMw4jI6KGjuHpGWI8i8z6UWqx1vCDGaMFiCAabrpvVpN248UdtzBk9V7h92hf+a8+FSjQNcC6Z+/meIZqHsUsTojCliRQtrFodxiluaMRe0LkaT+sa2xhCeGlGcYiRti7YAQ2bKAauQN3L7fyv7pWp33tT1tW7BrT857A7cHP1nNIYIRRuj7e8v3vPkguyM+5GwXuzeejc8oMLrUBYUIpUShVqiRvl27w4H82w3jrehv77bD9sJSXQwnxPOkRda23spCdroC49qyeHTjbT92FY4MG/n0Lz2X5PK8mHu27zWC0BeXkbj33FhowTdWahoqQhcLhKjGNgvxsZ4+TKKXZ2g+/ypNqJpcXRSITeiZQWB/HrcLCG0CemEZV6fkBbaGJzCz7e1TvHqrfnGLCC1KCBIMmsURVEG1FdRlSsJYCHBrUj4OgkpaVa8r8VFdL1oNAZnh8aG9q+b8/D76zVNkVDDaYxOIpPveHcyh4xeH4ptrCVtuNbYSMq5FJZ8mJFoiH2mqnYPChpXph7UIDS2AM2iDXNZjVo8uttoU5rvwBOfqvGk2iXYsW+pVgSXKA3U27MRFSbU0kiaUgchh3Xuyuupz27NPZ7K7VQRajiAOhqilAr7KaJ5zfPOOV7Xr58xnkZYTpDKt4DzsK4RRdyOTHne47zO0qdralfnUkSGbwj8Kpu3AdWLMwmMA57rqZn5i1se1fJZryaYaKrYlB/3u0EbQ6j2gEWTWl1XygEI2qVwJyt/uz96Y4hfcOQLJQ2eAdliwwEiFY8vB6lbe76bISGGSv+QGiwJQPDWJjdi5W76dNChCtcnUrrTNIm8qo7gFZHJyi7ccfzq+ekmJiXM3M+k+uZkq1XVPDlLyEgSaBWA1OorW/8GqrnqutWaGkLyF66EU/JyKe2n1tJ/Z2/83f4j//j/5jf+q3f4qc//Sl/82/+Tf6lf+lfenLff/vf/rf5r/6r/4r/9D/9T/l3/91/t3/+9ddf8+f//J/nv/1v/1tCCPwr/8q/wl/5K3+F6+vrn/NqVq/nsRf1SPRv3i+9r+/yoOTit5dbCw3Btw/6pYIKj77v3z48lcAHiWOb5d3UQ7U6GyOCLYxT4ONP9lxfD7x6fsNVek4KA4NMnVj227bVk3DknxhJadWCcDT57igfW9DBYte+pERYu3pmQ52JF5lWBa0OY67KUqzLbfYQ01Rh2iVroy4j+2htHhq7xZxncs0o1ZksHEoeFCnW0L5UZZ4zx1NlXjbM0O6tqSsy+9sXkfOPCeJ9cOiNAGMKjPtorBFXiWlnNTEhmJ+YgoEhpjCyS3uvbbJnVmpxMAmUbAzcx3PhbrhnTAPTYWRIgaSGmwsirug8n+PAjqpnTBjY/UgYrRZFIjDR6oyiC7CGTKxamTWzaDGG7mB1LstsgiVke2BmCPhlFwO2THFiN0zc7K/4pRcfc7M7kAgkF67n7Jx0ITkXo6B6AoTnz57x/OaG/c3AHN9znO95P7/lnI+uNL19u95zzGc4ZeBMiiOn/J5h2HGze8GLwytT4D7bi5rhYaFBg20/P7ykamI87vjy7jPmfMbYBG2eNM8k4MPlj1sASmOnkEapt0pm6GSoZhcL4oYTKHfzCVBO+cw3d9+wH/f80stP2Y97Drsr67UVEjARQvR6stBW1rqyN+dADBmqGCFvqcU9fFNGIslBChahMOPbFdRqtlq7j4BD1aOj/6q/oBU7vbx+zvPr59yf7rnaX3GaT/yjz3+fr959RQxmlAUR4mChP8nGNGPktNGYKoq14FHFQBXVclTVCXMlbOqpWl3l99i+527rdnd3xz/zz/wz/Bf/xX/xrfv9zb/5N/m7f/fv8ku/9EuPvvs3/o1/g//1f/1f+R/+h/+Bv/W3/hZ/5+/8Hf6tf+vf+nkvBdpC9L+7y9EreLefsVpLsJH38vijJ8+0jSn7/k/84Ckvahs2WP0x6f/d/rYfg8aE1oMTD4526b1s71NokGhhmiLTLjGmwXMfqSfqt9fT7qcr3Ufe4VPhye2/pSuzlsPqHhg2KKZkHt+GQoek1kpP1ndG8c1xGwXONsbfwmNbeHrLLRVdKYyeeiLNuLb7X2mH/JK7gpIGiojeDyqJd301bymE4J5UMNqcMPhrNLb50PIIFnK0+6wsOa8kvFuPtBWGEtaxA1oOzdpSOMy843krW6tJLu7RCGCL0xtZzZS1XqkNHFExWHELF/tcSiEwpYEpjYwxMcTBc4MOCK/VcxK1Gy2lWhF3CpFxHNmNE4f9jv1uZ4S6MXhTxeDeinPL1YU5n5jzkfNyz3m5Z85Hb+uyeJHxmm3rj0uEGBPjMJHi0POz/XE7AEb7+wOTz8O73dvun8uD9SA0ImhrNhkoquRamPPCcTlx8lY1p/nEvMzknMklG+lqzzNtD/rYzN7Kmx5qlCbtvNC684Bsj9e86+1rY+f2+2ovM9Ys9DyxG3fsdwcj2R0mUjCI/YVx766VeF2cefxGyRUfAIFapKsx5W7Lgr5N3m63n9uT+tN/+k/zp//0n/7WfX7yk5/w5//8n+e//+//e/7Ff/FfvPjuf/vf/jf+u//uv+N/+V/+F/65f+6fA+A//8//c/6Ff+Ff4D/5T/6TJ5Xahze3Qi40x4P3i319x0cw9KcVTlco8liXPwWSeFJBXSjDS8V0cRWbY6wHfkoxPVR5xiqBC3eqwc0PV4mrq5GXz244HEYO0xVjOGwU1Ie3rdAGnI07UOpCKee+0MBCEjEMKBWpFq+uLhAtv+OACIJBamsliIWngjZpXcm5kosyZ/OqUrX6nhgUidWsRq19YdWS3TJemSrUldG8VG6PlWVR5kVZvKDYUnDSh7CzzqtzvqF9YYVgeScJ0lvCpBSY9sbNN46BlEJnJAgEdnFkCInD7ornNy+IfdEKd+c73t2/ZcmZhXuyLtyf78llsfoVhd04cTPekMYJNFBrK/zVDu0NHrIJzh5vN1LtvsTygcZsbpRJRa14eq4zx+XIaT7z+Vdf8Ob2Pcf5xOlsrS2GFL1g2J6LiDnBUYRn056Pr14xDROilcU9h6bJmv0Xqgkmq2/KVCdlDQqxBvbhAAne88Y8b6W3JUkpWrtxWTgu7wglkuuZGBLz+R2n41vGNPH88Jox7RjinnFIIEpRo1mSmBnGwDCb0LRGi9lBMFwwHAQHwBA2YUAFioWZQdZmqu5d2TxrnpX/rRBiBI1UvJbqfOQfff1TUoy8vnnFi6uXTMPE82rhtCGNDNG8ZDNemiF2sQppsiKIINGeZwtbV0pnL8c5/5r/bHPaFEtr/SGikD2MKe5hqVKdJLaWgtRCEnhx9YyyuyKI8NGLj7k/3fH1uy/NSKgLuRTzqsbkYfWJUBNSnJpKKyKze4CVLDY/i9rAaRBkW1j/Hds/9pxUrZVf//Vf59//9/99/ul/+p9+9P3/9D/9T7x48aIrKIA/+Sf/JCEE/uf/+X/mX/6X/+VHvzmfz5zP5/7vd+/eARtn6aF1/6SCapGdhyri27cnu+w+MbiPFJR8SEH5tXzAC3twyZtzXXoC7YieUjfLslhB3jQFXrycuDpMXF/t2e9GdnHHECb30j68rQrq8tpbTirX2RRPL9QVJzUNEMRDeq3j7apYkNDh422sBKxy3tm1SzGFslQlO1Cjg50aKax7HHphka4jVKuyZOV0svel4ByECtEtOvfSxH9klrX0+7EQnimpEMBLVUiD8R022HmMwhASU7Lw6S7sGCRxmK55tn9JipExDO5hjZzPGfQMHKm1cqoz52VmXGamGMllYZIdDAYrseJbDNDQgCsXCXZ/klVBzBNBXPgQUHGAiSi5Zs7FrPw379/y1Zs3JkDUEttBg1MoObgFb28vcDWMvLy6MYGqSi5Lt+ABs6oRA114fy4luCAygR9VGONEKcVq+NS8guClBTGawq81M5cTUoSSTwQJlOXIcr5nGvaMcQTUqaQEqBSdUQoEDNASvcGiOq2QF7s2xnrx3Jl2cK32L5WAFvF7EGe1uViQNFXVosVBWl8mY4pflpn7813/RfA2GlMaGdPYvYwQIsEesOdHn5IzvmZawzOKhTm1RQc8SiGxRwGax47XSopXzgfFQBXRZaS08KHScl1BAte7A4owDCMvl4Wv337F7d0ttVovslIVkgGbusGXbaBEw0o+LQt0+if1QmszpG1Mv1+h1D92JfUf/Uf/ESkl/p1/59958vvPPvuMTz755PIiUuLVq1d89tlnT/7mL//lv8xf+kt/6dHnF4AHeOBSte1BOMw/exAQefp3T3gcT3WTfKRcNiGkrbfWEuiPdNHD0zSHr+/82JPqIsqZhsEEqAgcrgZurid208SUjFUiSvpgDmrNl6n/u91/K+q1MEWtC2tx5YqS6qzlWALbKvWcYkcwsENtSKDQFYH44hKUWoIhyQpoUZa58v59Zj5VQ0tJIDjrtTlgzkLuc74qzBlyEeYZzmerAaqOiW0tR2xxenGuh3eChzyUNZwXQuj9tkJSJKmH+Fx4p8iQBoY4sR+uiZK4SleMYWI/HhjCwWhzSAQVplC52SlTPpOzMMQjSz4z5xNVleMyU2plkPdEEikMXI9XpJBIwUJu4OPpo65EhESjKALpAAFjlodcLHd3nk+czyfO87k/F6QJWfNYo4eTIkoMkcO0Y4yJKY1dIRZtzPQFxUoNQrW+VOL9uUwBGdqu1jXMZcwQrgzDRgD3udfmlN1DqTMVq94JWCv2u/NXlHqiVkOXxRgZ987m7lT7w5BshWt1o8i7DEu0eerhW2leKtL4jHztWrmEzZHNQIErhL5yQFbIgmIKx3JahpI855m39+8455kUzaC50soBTOlHHPhhJLlbxdSFiVu87RsDVKz4vmasrfOirmPatGyLZmBOecUNt44ADDi/uRmCmBc9xsTV/sAnr3/EvJx5e/sNx/neFPJifdQM9GusNEENYaw6uLK0QmyRZli2J+wsFd9j+8eqpH7rt36Lv/JX/gp//+///e8MKf0821/8i3+Rv/AX/kL/97t37/iVX/mV9vhs+4CC2vjpDz5ft6dzS489qM48cLFfs/Q3+11cU6vD2Hhzm99efrZqsNVDuPSgcORWUEu+1qKUUklROFwNjGPg1as9H398zZQmrqdnDHFylNi3by0s0qzNEC2DXMqZoubq1zrT8gcrU150JWAtyEMoDkmvSLVQDGWh6kwI9PxRCBGrLxRqWSiLUJdCzcopF352fySmQCmBJRv/3W7nwsUfRFFYPEl7fxaWLLw/wru7usnzGMtzHJIbzQYhtDYbtQMoVGEYhWG0vN2YBlNSQ3UlhdVCBWEaBsZhx3644sX+Y4Yw8mx6xS6ZYhnj2J+TIFwPz9gPn7CUmTE+47jc8ub+K76++xlZK2/v3xOA0/nE7fEt++HAp89+hd2wZ58GhpCAgtCISBNoREmAddXt2Ro1JVW0cj7ecV7uuZvPvDvec1oWlpppBIJSLNc2BEjRlEGgMKXI66sb9sOeq+lADDYXshrFkdaFqnkFeBDd4EiuHEx4GYGwUMtsDBspQRLqIARVDxFCp9rxAmTVSi5nIyHO9yyztcdAjozDjuvdR8z5lv3+muuXf5BpOjDUzFwy9/PO63rcSxRrGxKjjU2M6oXhWCgZU2RE0FLRbHRM1Us6RINz5llJxxZQ0TwqWwfe+bYrB+X96Z53x/fshh3n+cw0THz87CPQSooDdTTOwyGOqDRoffOENoCeLjM8R9qMK4zVXqta2w8pgHEqWk7TwwA0QIyDY6p52hq9rsobkFoi14osUwgMMTKNr3n1/CPmvPAPP/tdvnr7FfenW97cfo1qZRwjKUUboxi9mWKk1kKoMyGcvfGhM2oUIRdhrQf59u0fq5L6H//H/5HPP/+cX/3VX+2flVL49/69f4//7D/7z/jd3/1dPv30Uz7//POL3+Wc+frrr/n000+fPO40TUzT9PRJ15if/3v9ew2pbdWAXOz31DA9VLDborvvg+R7fB1bLXaprLae1Hq5T13V6vvZS9Z7V7MOh9GKSMfBur02XrHgzMrfcrEfVL7dLm8eFPWBF9WsTIuJG61SWyC2cHVz7drf7dvuCVVZmQ38s0UtKX+eC6dToYzSW6mLo/lKVXKxfNySLafVmBLsnrQbER1Gr365HkITfwiq+PGdCy7IRqG6bMKEqvG2DaQ4eo5kYkwHpnTobTTa/YsKsRnrGhjiRK65F3miFia3nMbMvJi1POezsWz3PMnGesYT+MJqJWl7XoakrA0gkY1cNpdCKY3OyjMhoesr91Qts2ECytjJo4eaVBucu1IpVHWB2IrytDGOt+uxJ13dO2mTcGXWEEJDZ3RIoa5/SwXPXVTnllvKEaQy5ztO844QA0s+E9NALktvQ3IRCu5jtK4ki0J4DVj7vv2j64UWWdjM3x7MkM0Hl/JAkfW5qj2DJSyc8wzAOZ85L2fj/4sDUSMxtOaUW/lzqaC2cqzvow1g5RemPm69eH6Flq1CTGi5qxayRFeR1dRvK1JJISJxIIRgwIpxTykLKaSeF6196Bz0E4KXRUWqRvP1g4UfqzyKgX3r9o9VSf36r/86f/JP/smLz/75f/6f59d//df5N//NfxOAP/bH/hhv3rzht37rt/gjf+SPAPCbv/mb1Fr5o3/0j/5fu4BHSkkun/FGxF/sfrHHE8P3QEH1fWUzOS8cnq0q+Ra4+Qdv4uGVNQdZPJ4PTg5tDz8Ju53Bza+uB15e33BIz4ghGdT8g+e6PIViFmUT5qVBvMvZQi+a0d5ao11ja3ooNIRBK6AVddhsxXNJ2UMJJmTnxfjhTqfC+VxYluKxaxsdlUBR4atvZt7dLkxT4OYmWbgtGPdaqU7fU+HumJlzZVlaXYwtjCD08A5ATB5SCvZCBGEECQzJXggE8Qr90DretkcR2Kcbnu1ecjU956ObX2aIOw7jM4a4txxbyf6cXHCoGSsBYZQ9VSpT2LEPI4XM4uHRXM8clxNLsXboQxx5efOaF/UlKUX2owkLE0Ot6aSFdCoG/17qwv18RymZ+/M95/nMaVnIczHwQA2IDAxhIclCEJiSEgNMaWQ37I32aD+xGwYiUNyDzixuqBiziEqgIIRQKRo30QOfE574qVTr8MtCjMouBaMAah65OBmuG0OoEoPYcVShFlQq5/KGRQOn+T1f68+Yxmvez+8ZxytOy8I5Z+6O7znlewjF2SWway82xkGrkeoGkGpGSvLu0xKEOCSPKlS39tt8EqQEpEqn6LIJ0s6hm6XrIfA4kkJCRXh3uiWGwFIzb+/fcZj2fPTsY8Y0si97xmGymrlk7eB7M8WtIb4RQk25Js9HWdg7gxejmzeXzOvuXtVqpAtCKK0mTJoAQD3sWNWNQS2IGqDm4+cf8fzqOe/u3nHYXXFeznz97gvuT/cGVU8ezm8h19zyZQXhjIZCkEwMC/l7aqmfW0nd3t7y27/92/3fv/M7v8M/+Af/gFevXvGrv/qrvH79+mL/YRj49NNP+UN/6A8B8If/8B/mT/2pP8Wf+3N/jr/21/4ay7LwG7/xG/yZP/Nnfk5kX9suPaMuSB6I5gtG9O1cenSoNSG9VUrfqqDY7vdAJbQE/cNTbT5sKvPhT9er1G64da+sT6o1yX99M/D8xcTVsGMM+w0vHE/csKz5Nd3cX4OO4ggirSthbIe8Xh4HD/e1Vp2t35E6H5+2mIj3B7JhEUPzzZV5McWSlwfHFis4vbu3ViG7XaRSiTF4K3ZbmLmYR3V3zJyX2q+qjXODkbd/h43Vrs6iEWPCejMZia2h1rIJmk5DA1RFQmCMO/bpmqvxGde7V4xxYhyuGdKOnJfe2M8KJlei2KCJKIN11pWBQRISlOJQ51oX5rqQ5cxSFkJIxBQZxx2jjozjBMTe78nuaVUMilB0Yclncsmcl4XzsrAshZIrNSt4qDiKMEUDpyR/Hwfr7DqmkWlMDCmZQVSy9wFbjHDVlYv6PEGV4HnLIKGvJXva5m1lCpVMEBg8ea+tOJXWQblacTL4mAfQhmRTFp0hQ5nvyHNgGA4sCEPac5wz5yWz5NlChbJ6b2YvVDeS7Ho7PLt52eo9sYIZJHVRas+TtTUXLtbo6oX7Pj0KIhuP0eqJjssZMHj+8XzPzf6Gw3igjsVydSJoHIgxWYbRlYe0wq12js0WLERgsqO27gO+tdwj4t5WM5odDdic1rY2gBo2+fqW61IjgxbB2tK7Ii21cn+655v337AsBU1GFWblAI5MxMKlWgtEdUYaRST3kP13bT+3kvp7f+/v8cf/+B/v/265oj/7Z/8s//V//V9/r2P89b/+1/mN3/gN/sSf+BO9mPev/tW/+vNeyrrpw7+30v77FezS93mskJ5SUE9exkVe7Omk4IPIw6pV+2f66N1Ce15b3miBitV1HK4S1zeJw2FkP+2ZtqwSsrH+H13rRkG1m+qhD1CtXnzawjqtFufiTtzz6jApwEIcVtOSKc7nV51MsIW8S1VO58Ld3WwTvD5cgLIJQdjiqlU4n614NjuBqxW1WrFlKZdDaQKihUFkNWQcFj5O5jGEODAN11YP0igvRNFgXuOcF5acoRpNUKUyn08c43vPQQ2kNDGMO4a0YykLx9MtWgtBpUUWrUzABXAIkRStXYoUA31obSLR+M9LUUQKb27fknNlGnfMy9khzDtSHG1M6wIUK4hWmPPZeiqVNq6BGITdEBiiAomlVKKcvU1LRTkDhTEG81LFgAvZgSy1mKdQ3JNqUTokGuRcoIRNDlCq5Uw1oyosOlOxFzIb8otCb5jX56U/ewdxiPcTWwkhfP57+61K4Xh+z5zP5kWX5jE1g0j6hFjDkC6oq3s/ItSiq1DfFPNGiZbja1NfvXOwAypUNkquhZK3Tk+f0i1na/N1qYX7+cRXt18zxoGlLFxN10YFhXieyuvrRBHdhuxlc9z1JMFgqWbs0NZ4Bc1NijhAIq7HIfToaosUBlao+roU/d68VCOFwM3e2O9/9PJHHKYDSz5zWu59vGwmiwiSDGEZKIZSdF5RQvvj27efW0n92q/9Gk8h3D60/e7v/u6jz169esXf+Bt/4+c99RNbc4U3/96+P6qHasvhQ4G+R66MOQCb3Tt8+oGi2jjh/fVIF/GUgmq7P9K0rMAEd821WSVKyRYa2+8nfvzjK3a7ieeHG3bDjinsjTz2O8AS2/h6t9Zcq1XN5HIyJdVh59uBcCtXjPBytSaVUjJLNgSWha1yvxdV61O0ZLi9nfn6zb2X21w+O23un7pFLUIpwt39Cl0OPm7SOwlrP8TaC1P7cbTS25Ikiby4esWr5x8zpIlnVy+IceB8OnI+Hq1+JhmV0Ndvv+Dt8gaKeYelKPf376As7IcbhjSxG6+Ydjekcc/96Zb3t19RcmaXBlJo/X9aREVJMTEOOw7TNfMSOZ7eQi4UoLUlt66tldv7n6H6E/bTgR+9+DHTeOD1s095frWnqLKUswm+YrVmuc7My9HbPliNyhAT42Cw7ddX7SHOKPdUXTjNb8j1xBgDUzJ+wVyOlHr2Yl17/urGRiCaAPeW9SpWayZSLajkCL/stTInPZE5UuSMyhHkiATtoLoO+2I19qwjrF6srcarKFUgQ9aFd/dfgRrLSH9poAXI8ZBoIHQqJbNb3JtGWdQAGzEE1FGd1iUgUEuBbPV+WrwJo0ZDrYoHgt1jv8RprTkvAyINgBX+LnnmlGduT++IIfLp/Ckvr16wnw5GRRUTOu5IaSBIJAY/Bk+RmbkB6+AlVbUmkL6OVTMQ0MaBiBsGKpgKEG+OKW4UmCCoca2nsjWpSMlIUaYY+ej5K0qtXO2uOC1nvvjmc37/Z7/nhcszFSWlwDAZc74RIxtDRZBk4d7vsf2wufuAC3/+4t8PFNZ2l6eO8iTc/OE+T3tRj4/7FJbv8rey8aA2duSTR11V3sqIEL01xDBGxil5FX8iNkaJJ6ay3VOXCv0e1/syFx9HV62vlph9cEXdg2oeaFMWhVrXLq/a6AswSPi8FObFCnhLMeHUM2diS64LrO2IqlPhuKWtYLmFTUHv5b1qNzpjiG6ZBvZDIsXIfjwYXNwJTVNMFjscPJeRzGsa08SYhp6Mb3RHxpAwc57vreJ+mJAYKGU2D7JmZ9qO/WYqluurno8J0ghknZ9Pt9wBDUaeydkKW5dSSdVppdTqTtZX+6FguUEDfqgzqFvhqHEM2h1UKgO12vioGh0THjKqNSNeNFy7kdKuzCDErTwB8NyFQdQNqi5kNYbyXBeKzlbTdIEMfTCtNt6HhcvW9L+fxKxyzx9pFbQWo2JCvJDZ3aHtrOiaSTcna59bpEJ9zlQPb7VxvbhAqTSLo1FxmfHh6Dk/1rq/rqfwedxHUZXFGyie85nTciKEwDkbGi6mRKgGaQ8Nrt1D1dtBa/e5ej7dCdK2cs2r6p4q29Yfm6H1+9AeffCjS7OjN3V0XvtoRMBioIrpwJJnztlq82R7Bmmgimi1lN+T7+iHraQeeVHNnX/gQel3eFBy6UU9qoTeHO5JD6o/+JaTWRXnU4riArzTz7V914s7MsYyg5vnXIlRePFqYpoiH390zctnN4xp5DBcMcZpzUN9YGsTdV1/walPIJfzJkTXUFKbuDwuAKU1ZGsKqppFX82LKuW0HgMHUACnOfOzz99xf1y4u1vQKpdCaEP0+VCeuJS/8Dp7jgHTtiqg2Qh2g0AcrC7n2dVzPnr5CeMw8OLmGVMa2Y9X7AerrA+ub9O4Y+dwa002F0YRXhyumJcTd/ffUGthP0TGBKfjl/z27/1dhjTx+sUvc314yen4Ds1voRayJmpfjdY76fb8hrmcUREkWo+maToQQiDXmVwN+VWqKfW6GKikDEKIEyHt0bCjyORZIVMSMTi/mhZi2qFaGbKF6izGkl3GhS4sqygqEU0HqgQP0Z78Obc28W4QiJcPYLU5RQtFlMwJJBBFiZhiW+oAQPGw4zG/5/38uXl55Z5SiwEjPP8TPLxnAABHiDobheUF2wr2yVAj1GRjdC4GUHFkXg9MqM1LcMh8XRyN1rwGGwtTIIZQLP4bS1Gpk/4asXBjGMcJk7VaKLPWuB6zUSaF7TrXHoID3JNwBaGFCnx994Z3x/dcTQeO84lpGHl1/Yqr3VX3ukUMcdkMm9CVTFvLqxKObnlWtLNjWF4ZDKRihdatTkzUPU7EgDWAUHtBuRkA0iMcAlDseLshMabEjz/6lOfXzzktZ3765U+4O77nvJw4nu4MnBJtvluBfOjz9ru2H7aS2mzdc9nkhXTzzYd+9RSH3ZPHlras6Rbfkx7UFnq+ee+WzQMHzybNQwV1eeQ1F2U5kRiF/T5xdT1wdTWy300McWSIxhP3cLvMlen6WVeuuFekbhlnas2rF/TAcmsw023ezeLQBv8tdVkVXONaUysxzLnw/u7E7e1MyXQD4tGzalabbM+7ftnHTSvU7Lk0F76qaFaqiKHiRdgNO55fv2A/7vjoxWt2047EwMBIQzBWLYQ4MARxT8ouI1LZDQPH0x1lvqeUhSEEYlCWfMeX93ekOFohcz6RlzNaj/68stWf+D3lunA6v+Wc70nDgRSvCRJJcbTrrsWUSuORCzZ2jc9QghWuIolKvDCogkQXPAnx7wKmiNBl9Qy8xbpIRCRZWCYMVDWY+lKzP5NGtwMNUCPRvDF1KibFEWUI6rU3IoHGtV7K2cAg5Z55uTUlrA0h6MpIQNq19jM24IGXCYRtvMH6dGlKkN2TXh3xzSLTdR6p1/ZppSEPO8sIgJOgajDjQAQollNMwVrG9OObG+TjY96cSPBUpiso3Ygih+I3Rb/KHPdKVbmfT2g1jr8pjcx54jDuvRWIEqIhdauXA4R+nxe+ymat2MlDcLlRlQ4JxtnT23zpDBWY0vbwiuFO1MAUYT02YkZK9aLhFBOIeVQ3h+cc5yO3d+/IObPkTMlOcZaCIyI9apC+TTav2/8DlNRGwej2s+37B375xNc9/vrQy2ett7k41QaSJ5c/+fAV9GNsFdJDxQSNJFOLAQNCEPb7yDhFnj2buL4ZuT7smeKBFAa3zr7jrpuxpUqHm2MQY9zaqjU7lHVlAGhXJZLYDoRq9dBesTBXt1gXP4eN0f1p4e64cH9cmOeKhfY/3CxEt380ySAXp/bzW3gmpcirZ59w2F9ZPj5bOHQ3DaQUefn8NR8//xFDSkxxJKpV2FedXTE38tJsaDXUQQcKmgkUBqnsxbpgx6qEokQSw2jGQfJiyEBgEKvr615wf96RKV2ZgAig5d7Gu9yhdUbrGdVlnQMKV9M1h/SS66vnvLj5hP10zX58QZSDM4mfsIR+AA12D86ZWPLitVEnVO/8eZmSChRECmhB5zNacr9ms2EsX5HiSIyjwfmjIzmroEWsYLjMpuA9aGtxnAaUyVQqIQhj2hk7Rc3kqgTRXmTePKmLAJQ0g8hCVV3ZYHOnMcFXB7T0RCTOyuB/i+eNdLS5mosR664ooc2qa8A3bcpdyVpBMlbX5R5YsFYqK3K19mNptbyYtbYQOoSQjWzp/zSNFqIzyGMtP055JoXEaTmxHw88VzXFrDsrLQkRYov/XAKXHiwcG99g5Str6L4pLPqoW75K1996zk0UpFFFhSbypBtf1ZGSzYVNIfDq+Wv20543d29IKVFK5rTcseTshNBPGflPb//PUlIf+PzJIN8THtRTjBKwMqZ8WONchgu/XUW2ifGUglJanCIQiGrcWNXpfaZd5HCV2O8Tr14fePZs4mq45jA8M3uoofm+ZVPoID1rdx5dwZypFEo9e96ghdG2t+pAic291lpYPP+ytFBhPVOrFS6KWEHT7f3Czz5/3wtzc8bDFr4wPGewjsTmQfgaV7+EvocacLnUSpKRH3/0K/zo1Y+NjUONsPSwm0hD4mp34OpwA1op8x1aM0WzMSg4zN55GqxgFQWHy1rL7MxI4VrM6M61UhdIgzBNO2IcGbwxXCQS4x5USDoQNFC0krEupvuhMqSZc3nHqXxjNWjlPbWcLcnttS6G6ArcHF6wnz7i+vCCT17+KrvxCq17tExk7DdaC51pWo0wtGpmWe4pZUb1nqrfULGK/1ohCQxgqMVTQYsxa4TRPQ2sX9IuXrMfn1moZjAjpbqgn5czp/OJUhcTlY4kqy1f6cXSEoTdcKDUAc1HwOqyWqfllufzlJhPsSZ8G5Gu2r26oq21dM7HmtXK9KKbd2INB6Pn4kpMhGC9r06nI3M9+7E39Vw98dL8SPPkWx+uINb4MYqFkIPD1sviBp163wKjcjBvJRqZLUqr5qblGqX/D2suGCHXwjf37wginOcTu2HixdVzQ6OmEa1qdFxpAJEOIAo9qtGMx1WubPuhAcaC70wgNtju+nk5Bt6o0w4UHIJua75GMSUuARdPhNrC7RaiHULgx68/RRG+evsl07Dj/nTPT744cTqdGIbIMIanSYKe2H7QSuqSgv6hQpLV23/4u40aaRUE2wRpAxM8+NHjD3r078HfD3bfhviainp8vAcBrycifykJu11rvWEtE1KwturyrQpqY8FdWHHtu9ZmYQVKPBVC6ApZVsRP9TBK3XD6rala9aZ6sCyF81y80Pbxla53/7R9tXLW+b+dDTqGyDDu2U8HrnbXXO1vCNVpoySwGwdrbR5NuFjY0T1mbZZ5Xd+lczasoUq8Ql6M8UK8TgmtRKzBYYyDwf5bTsLHSbQBI8SLeSGKhWTPRZhP2YAU2WqBJARSGC2Hp0ZpM41XHKZn7KYbhrQnpR15js5d6PkRr0kzfV9oxbZWz5Tdu2oC3o3/FpJSH8/ixnPFBHxMiCRiGIz7kYA0NJgoISg1VmIcaTNfq3u8/jibt57CALojSGTSg4fxWh2Rs8939orVc+/cBA7SsHFZW7FsnPyL2fTQUDTnx0EIIbpXcnmMJtdXAIQrHVeabd5UvJNtW+vi4TAPydPmFxiPnf++ARPanbU5rX30sLwP5p0stRDywmk5c5yP5FqI0UW2CDEkQ9y18PR6lKcGpcs6udizealrblfcp22AJHzuqjOmd7ae1Vlb/TYXnq2lzpisNEZV2U8HAz6FLSPGd28/aCXVgAoX7vrm/cPu5MZ7eqDJHsLNNzte/r4L2svczKMzPbVavpX2yODgooKDpsxii8r1zcCPf/mK3TTy/Oo5+7RnCON3KKj1vtSFTyu2VFp/ocVIOzuJbH7w6+QJ7Ng90NaCo5SFeTn1hHv1ol9CoOTC2/cnznPh62+OvHt3NsFQkyXNFVrLj4uxfahJL8bOPs5zpeTCqxev+Cd+/CtcH675A5/+U3z04mMTtssaqoNKqLCcHFJf7B6V5rVoF+CmpJz2x1kWojoII0Wm/QEtBTnN5HlhN+55Pr0ipZEYrghMnrtp+cnQPRxBUKmWWyDz5vZrfvaTd6hk0r4QkrC/umG/fwa0hHzk9fN/ilfP/gDDuOOwf00MA8t8xzwfLcQ6W7hNvEtxrTOlHv0eT8BCrSdyPndDwnIqwRLhJaBLoi4RKQWyElPgcPOcYdiTwkRiByrUbJI1poE0DCzDgsTJcm33b1lOt4QUGabBasHCRAhWz2Vum1L4lEpmzrfczV/Zc3DGiVIXK8TF4gk2d01Aag2UbDDmmoNHoxXv0u5Wq6MGQ0OvVWq1CRTTQFRF9oE67qzYeW4Qe2eXkGCucp+O2g0XEZg1O22W5STF50UQsS4EpXaPDxVq2fL+2dhZCNAO30pve0RQAjFNgDLXwlKMj/DufM8YRz558THX05UJ/L0x04/DjujNFKM0WPzmHhrCT0y+xBAxp9/yb2aYzm48xs3FmGHSElKdtkmb0yluPwRX0p53U7Vwv8BhnPjx60+Zl5nD7sDxfOLrd1/w5dsvrLD8e2w/cCW1VVDbz+RbFNRmP/iggup7PSH99aFSfOAYdZkq7X0Vtht/7emrUm+94Zau+HFEhHGMXN8MTMPIlMaV3Zytd/iB+9lGFMNqRTUPqOWVHgMlPFzQkXzb3xr8uFSrxaiaqeS+T1U4nQvH08LplJln43pL0RTxY/aK7Qjqo0+2W61KzZUxTLy8fs3N1Q3PDy+43t8YaCJa3U7OjTG7GIhBN9B4WojRmSE6/U1dx8ZFZWPUiGlAJRKkELSQSExpR4oTRvTqvWObMhdXUM7+4eBtlEiZhbt3M4TMIVQGIDKxG26A4B1NI1e7l9wcPiKmkSFdmSDVlsvK1OJebDBFZaCVBvVeQCxcWatTDmEtw83YCBaaKsYsYWFGq0MbZWKMe4IMBByQY1EtEgbUkRCZqIS6sBzvmHO1ccKModb40Twq5yoMNrHvZWDOd3a9wRFnamwEJvCkSUMaaa6RAjvooS0rezSbCQ5rEbd7ChvjbBBBY4JFmPO88QDa/m1d+zlCu+82M7SfNzhPXWOskFYgXH2VtLqucMmT5/DBPrnVLyGI9PVZyoLWQq6F83JiTCNXu4P1KAuB3TChcSDFQiOebZ5SH4u+fmS1/UT6Cqt+R1thoVKsBsxVqB2vKSr6mFibKKulonvlbdwNITnExDjumIaJqsphN3M83yP61cbQ//btB66k2iYPXt9n38vt+yuoS7P+Q4n/Jz0oO8ITe2s/UveiKhSHm18/H9nvIi+e79kPV4xpJLmC+s481AMPUET6Sqk1Wz6kmnJpS3DdPPkscf0bs8ByWaglk8u5F/u23EEplaUqp9PCm7dH7u5nTqfS2ajd3How5u0uHgf+1qHTXid1fXXDcJ348Se/zP/rl//f1k00XVPPHpLRy/vxAN7mXXsSufH8mVPd6n60wQAYJDAE84pETcgOhwNlhGnamwDXYCwEbrIGccZ1NZBC9NCdUjiVI6XOiCjTfjBqp2WmVOXmemRKzwhxIMUrQhzY758jg/G/5WzIu1IyxWvRtvP0QytAQiClyRRyzQjViGQ9Zxj2EVJAQiLEiZgmUtwTws5ybJIcMm9ui0ikZDMWdK7WuPKYOR8Xxv9/e9caY9VVtp+11t77nLkwM1w+ZhhaCjZNsC02WCxBTPxRYjWNVWs0EkSiJk2VptAapNFgf5hKqfHW2lD1h/6wWm1S1JI0BgGpJNw6gBWplERCaWHgo3SY6cycsy/r/X68a6199nAGxkuYc/jWQ06GOXvPOe+79lrrvaz3QgLlNm4aKE3DSCkUQslh1EJydJdCgEBEXMaJhpFRglRVEOsRUzqogiRLkJo+TZzEbrwCGThAQduCxrkjKxdMNZqZKQNUuzADFaCl3AqtNeI4r9ChTRVwNwG1gI3oIDsPQVzISWsAqTmfAp8tEdxaIOdbNdGPxr5zpSrMcZCltTZU3fVgM/M0JY0LwwMYqY5gSksH0ixDGEToaNMoBSXTUDE01hLys6jCjKDCOEhpcvNMABIragmPpeBgCoLdY4ylBcENTs3fcv0/UdOfy+SrgSu1I0shSKMcRgiUwsypMxGqANU4wT701ZmtRVwDQqr2ARj3QF1BYIe5voBySo0o/izcV/isS7eDsRZUUUDVLpjiJxqnEDv6TFUJZBpZqiGlRGdXCVOnltDR3oa2aAprJ6qEQIR16RzLmyXCtXQ238uulYox99N8cVuqjHtP2K5/yC2oNI2RZrEpPlsFb/2mvlqmMVpNMTwS48I7wxgcqkLJCMq6fQjjnHvZ0ajxr9ckLxKxO0XJAJ3tneho7cCcWXMxf+4tCIMIQwNDqI5WQVKDVGpEkUlMNZ/C9NuTJsrPZuw/1/eKuC28EIikQiSV0ZxDViKiNkBwSwhprCWkYGtEcEAKhKzZmAJIESCjFFmaIc6qEJLQ0hYiSYGREe4nRdNKKIddiKIWtLbORBCUEJTaIMMIRECSxtCakKaxSRPInKXu5i4AVxnbBuIohVCUeQSyBKAMSkgT7AGegSUBKUqQkl9B2AYlWxDAJFsrBYpK7MpNUmRJxsnYFQ1kGdKRFNXhhCvAC+67ZYVUIJWxygJ2AYoAFHSio9SNjFIMJ+cR6xEkVEFVD3OJnep56AxIUqCapBzNZ84iudxUblHZOnC5UmKqsbtgAA1CABuNK4RAEIQIQw79l2IYccKCKtOJmRRBboG4keXSSdrMR5ZN3BKEzz4DtqiEneOaO0gbN7cAV8OwMSHSKo1WcatZs3YcbXX5RGucH7oA0hpdbcNIsxTlsAwpJHQpRRSWWDCYpD8pa4rU2v3ALUD+3eVTEUEQJxanWWzYJcC032HrVORzBcJ4Vo1VZnQDLWtKKhnBJ5FACIHWqAQIbgD5P1O7UalU6qz/S9HcQqrGqpnIIVyhqgQVfoy5D5eoo+S+L3/ZhybG/i2T5DbZgouvILDs/2s0HqN4CQlEkUJUkiiVApRKIaLABEoYt8nlLb38e/gsUzj+XYKjc3vZAOlauuz9eXgra1tZ4WUtKGeNgHOhRisJqtXU1NOrpxhcOvLjC9xccDFdrLFKpTiQQdbUD3RnZnnRTzJablEs1jxLYc6P7BiZ8VLSBjqY79A20tNaAyYy0dZss7sXjAYNsDbsrFd+JvZZKKUQRRzarU134igqm3DvCEqGkDJibZbAWr4N9iAb7EOmkKo9+LYBLFYkk3u+roiq5HMyJWp6Fyljx5uzDd7orHivSQ7PCy6Y+n18xgEKEIZcADcIQhNcYxUAO8fsywpVk9JAQChLALQZSg2hFMphOwQpEI0iSbhCBwfiUL6+zKPMl1XtGjdzxj6fwmIVhTnHwRRMi1KmBJKumadk7q0NGjBBIlpwCL0WBC11TdyHyF9mDtcKCc7pq5naNd6E4lrI56ptvJHqDJWkAgJhNB4xwrKmcohNcJdOjNR8/tjfLbk2HcAOJTlBbAMd8mAKm0+VD6tTGNzQW57z9wXI9CYTyJTCRNDcQgpAbfDEZS0oUczJsVp04c7aOVWD4hlUMRep9uf4Lr7Cp6HWquJPFFDgNgdpxu6G1laFzs4I5XKAGdPa0dnRgpagHeWgjWt5XaGmCJkFm1uIEkopk3BbNQm7sTlczze8XBAoCBE6fgGYahKc9JqmFeMqTEwyZ+5uGRqOcfrMRcSxRpoK3nRFXhroklIzl4yP+WkWrjCCAUKbRnUcrosA0ILzdAjsG5dKIdMaOjYLWtpw6swdUkOYlhLugeUuIz4v0QiEQGugWNM0+TdSSsiUtWEhQke6G+NMQKQSSDXSuMpjXpaQoQJJgpYJNDIEgQRkiPa2diRiBmygCYRER0c3SuVOBEEZMmyDVCVoSGQJGUsy4z5RpjMuiRSkYgDsuiWT72XPF20HXdPIgy0cUTbuNq6/x/NDcFcHwcJXCglBMW/EMoIQETMa85mjIkBAQskApZY2EDRkkKJ1SghSZGr5CWRGeApKEIsR0yGaBYcUkkPESUGiA6TbkCBGoivIKEN7NA2pTvH24HmcTfsRJzEq8UXEaYYw1BChcOuu9oiHzBzjGW2kakGpY+WCSCAzQRJhGCEMQqRZynk9OkO1WkWWcd27PETd7AGk+S0Y5U3AuM85VD0w+WRcYcFElaa2fiUBxMqTSE1BMCVyWWbotLUoeb7x/FCG0WqW4tzg2wgV51KVwzKmtnVhxpTp3AE4aoFSHAGMIAQ/rVqrij+nIE/NOpCKBWGmbR85yYoQBITQzrMixoTvu9qiAGzXFhISWhoTQue1SAMhJix8mlpI1bbzuhyuVGiV76n5mSs0YzRv87/aTPVxPsdZxvwHGKvHw23p5uVmPPvelRRoaQ1QLgcolyKUoohDnUWIel12a2vyubPLGmlZ22nY1tazTQxzdc7yYO8da0VxmwGb7Kt1arR37bgjEoiTDMMjMbKUQFoZASVw6cMqarO1Y1Mcz1x7EE6T4HHNoJFkKTh73qi7BNaCrZUkbQZibu2xpi/Y0iE+7LcuIgm2MgLJuVbuqAm2maFJcjTzj4ymzikRHOVFMUerISTjxs9D26UReGEQohyVAQmoMGLrodwGpTgiTsgQEAGs0k4aedg5WQtJgwT7GTVMpQ+rdNSE19vVYjsiK/B5poRxaUn3NGDDxgXYenGJdUTcwMts1jbMWCnexErlMihMkVKGqq7C5h1qraGFrUzOFSokKfNY+YwrIObVhuwTNAJEyJBhZLSCUJaRCQAkQZkABcI9zUK+rJk9GZlQ6kK4rqEduZULGzItcyVWa3bfJbKKjIsk1hjCxp1Fxt0l8vXmzjolW8l2LTkPuzMxbOKvzHPCbLqSmfQuhL3G8uNrHH1nFcYkUwiUQpKlKAcRkpYpICIEigNdpOR8yzwqt96+le8NLgCDCFrUVJxxAtrkf8GGqdesVxIQpvshmVxprpVs1glpZzAK9+6V0dRCqqB2jHNd1LlnvDbwY1HPNVQ3D2rc768vnJy7w2yIIIEs4w0yiiRESWBKRwnTprWiXArRVm5H2VU2vwy7BR4tXyxoyETh5RUhTPsMGuPms+dPzlJjwcTtvOMxVphp2yAkskybcPMUQ0NVpAlM6O8YC7ZehEo91Bo6hgcJdqtIEEZGh5CmVTd+5agF09tmoKXUCklwYclCmZUvAwgdGmuEtWhhBYex1Lj3TQChuQ2IEGZ52D1NK4gsMKVvpBOa0rW3NYfK5hQn18B5gWrTM0kIiUCEaDHtQUgAMggBqVCKOlEK20wn1JDdiraWgyIQQhBlqMYXkegqMj2KOHsHmmwaAVs/lFmXEkf8kcgjDCU4hFqClR4B4R43wXpxFGxLExYCmqtMpOCmf1AmkMJEbEsBJUKEsoVdTVJy5JgVVFmGBBXz/Vy3TVPAVhZYAzfOJkgRgUAIhUIgCNM7elAut6NSHcWZ86cxUhlGnA6jmgyzdJLFKFEhAGXkD7nHx+eNuTYKUyXBbMBQxuASCIKAzxJLrQiDlAOBUhNxaF2IxlPhlB9Bbp5oAhKROZex9XrIQLkb8momtlOyWaduAxfGiZGvzho/ByAUZMCFXasmiOZtIZBmfDY1tX0aylEJ5awFFGlIqRCaqiEuzcUOROHT3fC4WpBELPSZXo6U5bAiQt76w0aWmMLGYEvRRKabkxKZ5+Whjs46DppcSOW4jKOveN84AqreORT/gbUonC5TV0DlwqNWVSm69vI/Mhogcckc0lxVQghCS0uIqCTR0Rlh2rRWlKII7WE7SqrVGRCXgzsHIMsXa8UsnGIX0VfoE1XgRyGvKmGV59SUk8mFlHUtwRS7zDRh4OIohoYqGB5JkZq6fNI2c3MLfOzIFah34yQKt/Emwq4q1uyHRy7iXSK8OzKEs+/8L1rLbbj1xvdh5rRulGWEloAL7cqABa7UhEwQSHOXUa0BV4THaPQCGoEOEJAJMkHeYgMEiExBZsrUUTS5L1JCcigVtJCwDlzA+Ts4UVZkJneE3DlQS9iOlqjdFC3l6g5B1IYwagMJBS1DwLjfhDlEF8pEHyog0RUk6TCGqxeQ6RgZjSKjmDffjCkJRYBAKFN5gTc1KVi7VgigROS0ZwFuDJiRhiBpuhrnxUZBAiIhrgtlFbZAQIdgV6uIECkBbjgiocEtKbjqe2aCPExldiTQIjRnHpLP37jQIiQ4wIYtSUJrZwdmlSKMVkegZISh4UFcGOhHtVIBkCH3SudzJ2/fnjsKNIxV5KoACLdQ8srpgq0QxedURIRqwu5HIm16PRKcAgLwGjLyyooUjcxYEly+SBrrSggBnabIk8lN+SgNrjBSY3XVnmUWFUkYlyx3La6mMSqkUU1jDA4PsnUOoK3Uhkyz8hsoznW0feZsexFZs87HelOscNVkgz9gXMiC94iaNcKBK3nVC5sbxrKb55c2+WF8MKDz1jpXQFMKKVftIKvRk+rw67qxOsOSLiukat0F7jOp9jN49uTuvqJPl3/mQorGcfPZhENt3CiUgcu6CCDLuMBommgkcQoJiZhiCBWaxcfffOmg2MlmItY08y+V+S4dQ5MtX5SYTSPv85SPBcfE5u4BDjfPshSp5i6vnBBrgiZM8c8k5krdSaKRpaaWmuFXOLrqT8qCgLcbjVEacncCT2qb/2LrtqVJhkQmSGSMarWKarUKSA2RcQ6LzFLW4LSx/jSXgCLSyJAhA4+BEBkEtGkroSEFkAYmWtR4PKR5NpLycHwOOWZ3IsUSiBUQCyAxLs6YQ9C1yoVUIZlbgGugKXY5ZjJAKgJAKmhFTkgBypzH8cZWrVYRxzHiNEZc5aK+mc1Tq3VRCT7qVgKAyrhSuU5BtmK6tIIBZk6S29hSZV2DGgE0kAnoqjBTJgOgAC2gAzOHEbOFhBQxYmjSiLMEmU4dr1IIkK4iVFy7L5C84SqpWUjVJsdLPoPMoKEFEFcTpEmKNMmQpho60VzCSmhTgHaMEkTCCSnKDR13Jias+SgE8k58uTLK0YTczZhSM+e0mQ+oOWywFpn9GMG17ITgz0iJo3SF4r/RKVu65D4LZk5kEJIr8hsSawrr1gpg3nvssmHPABmLGVDIUK2mCETiXkqx610p2wyVlUdpLbh6niWRj0PmhJRZ0SKFcPtEAFtF3dp6bDUZoSTZqtL2FrOeq9WqGb7LCytB/0oHwwbBm2++ieuvv36yyfDw8PDw+A9x6tQpXHfddeNeb0ohpbXGsWPHcPPNN+PUqVPo6OiYbJL+bQwODuL6669vaj48D42Ba4EH4Nrgw/NwZRARhoaG0Nvba1Ie6qMp3X1SSsyePRsA0NHR0bSToBbXAh+eh8bAtcADcG3w4Xm4PDo7O694z+WTbTw8PDw8PCYRXkh5eHh4eDQsmlZIlUolPProoyiVSpNNyn+Ea4EPz0Nj4FrgAbg2+PA8/PfQlIETHh4eHh7/P9C0lpSHh4eHx7UPL6Q8PDw8PBoWXkh5eHh4eDQsvJDy8PDw8GhYeCHl4eHh4dGwaFoh9fTTT2Pu3Lkol8tYvHgx9u/fP9kkjYuNGzfiAx/4AKZMmYKZM2fik5/8JI4dO1a4p1KpYPXq1Zg+fTra29vx6U9/GmfPnp0kiq+Mxx9/HEIIrF271r3XDDy89dZb+PznP4/p06ejpaUFCxYswCuvvOKuExG+9a1vYdasWWhpacGyZctw/PjxSaT4UmRZhg0bNmDevHloaWnBjTfeiG9/+9uFQp2NxsfLL7+Mj3/84+jt7YUQAr/73e8K1ydC74ULF7BixQp0dHSgq6sLX/7yl/Huu+82BA9JkmD9+vVYsGAB2tra0Nvbiy984Qs4ffp0Q/FwJT7G4v7774cQAj/84Q8L719NPppSSP3mN7/Bww8/jEcffRQHDx7Ebbfdhrvuugvnzp2bbNLqYteuXVi9ejX27t2Lbdu2IUkSfOQjH8Hw8LC756GHHsKLL76I559/Hrt27cLp06dx7733TiLV4+PAgQP4yU9+gve9732F9xudh3feeQdLly5FGIZ46aWXcPToUXzve9/D1KlT3T1PPPEEnnzySTzzzDPYt28f2tracNddd6FSqUwi5UVs2rQJmzdvxo9//GO89tpr2LRpE5544gk89dRT7p5G42N4eBi33XYbnn766brXJ0LvihUr8Pe//x3btm3D1q1b8fLLL+O+++67WixcloeRkREcPHgQGzZswMGDB/HCCy/g2LFjuOeeewr3TTYPwJWfhcWWLVuwd+9e9Pb2XnLtqvJBTYg77riDVq9e7X7Psox6e3tp48aNk0jVxHHu3DkCQLt27SIiooGBAQrDkJ5//nl3z2uvvUYAaM+ePZNFZl0MDQ3RTTfdRNu2baMPf/jDtGbNGiJqDh7Wr19PH/rQh8a9rrWmnp4e+u53v+veGxgYoFKpRL/+9a+vBokTwt13301f+tKXCu/de++9tGLFCiJqfD4A0JYtW9zvE6H36NGjBIAOHDjg7nnppZdICEFvvfXWVaPdYiwP9bB//34CQCdPniSixuOBaHw+3nzzTZo9ezYdOXKEbrjhBvrBD37grl1tPprOkorjGH19fVi2bJl7T0qJZcuWYc+ePZNI2cRx8eJFAMC0adMAAH19fUiSpMDT/PnzMWfOnIbjafXq1bj77rsLtALNwcMf/vAHLFq0CJ/5zGcwc+ZMLFy4ED/72c/c9RMnTqC/v7/AQ2dnJxYvXtwwPADABz/4QWzfvh2vv/46AOCvf/0rdu/ejY997GMAmocPi4nQu2fPHnR1dWHRokXunmXLlkFKiX379l11mieCixcvQgiBrq4uAM3Dg9YaK1euxLp163DLLbdccv1q89F0VdDPnz+PLMvQ3d1deL+7uxv/+Mc/JomqiUNrjbVr12Lp0qW49dZbAQD9/f2IoshNZovu7m709/dPApX18dxzz+HgwYM4cODAJdeagYd//vOf2Lx5Mx5++GF84xvfwIEDB/Dggw8iiiKsWrXK0VlvbjUKDwDwyCOPYHBwEPPnz4dSClmW4bHHHsOKFSsAoGn4sJgIvf39/Zg5c2bhehAEmDZtWkPyVKlUsH79eixfvtxVEG8WHjZt2oQgCPDggw/WvX61+Wg6IdXsWL16NY4cOYLdu3dPNin/Ek6dOoU1a9Zg27ZtKJfLk03OvwWtNRYtWoTvfOc7AICFCxfiyJEjeOaZZ7Bq1apJpm7i+O1vf4tnn30Wv/rVr3DLLbfg8OHDWLt2LXp7e5uKj2sVSZLgs5/9LIgImzdvnmxy/iX09fXhRz/6EQ4ePOg6m082ms7dN2PGDCilLokaO3v2LHp6eiaJqonhgQcewNatW7Fz585CJ8qenh7EcYyBgYHC/Y3EU19fH86dO4f3v//9CIIAQRBg165dePLJJxEEAbq7uxueh1mzZuHmm28uvPfe974Xb7zxBgA4Oht9bq1btw6PPPIIPve5z2HBggVYuXIlHnroIWzcuBFA8/BhMRF6e3p6LgmMStMUFy5caCierIA6efIktm3bVujD1Aw8/OUvf8G5c+cwZ84ct85PnjyJr33ta5g7dy6Aq89H0wmpKIpw++23Y/v27e49rTW2b9+OJUuWTCJl44OI8MADD2DLli3YsWMH5s2bV7h+++23IwzDAk/Hjh3DG2+80TA83Xnnnfjb3/6Gw4cPu9eiRYuwYsUK9/9G52Hp0qWXhP6//vrruOGGGwAA8+bNQ09PT4GHwcFB7Nu3r2F4ADiSbGwnU6UUtNYAmocPi4nQu2TJEgwMDKCvr8/ds2PHDmitsXjx4qtOcz1YAXX8+HH86U9/wvTp0wvXm4GHlStX4tVXXy2s897eXqxbtw5//OMfAUwCH//1UIyrgOeee45KpRL94he/oKNHj9J9991HXV1d1N/fP9mk1cVXvvIV6uzspD//+c905swZ9xoZGXH33H///TRnzhzasWMHvfLKK7RkyRJasmTJJFJ9ZdRG9xE1Pg/79++nIAjoscceo+PHj9Ozzz5Lra2t9Mtf/tLd8/jjj1NXVxf9/ve/p1dffZU+8YlP0Lx582h0dHQSKS9i1apVNHv2bNq6dSudOHGCXnjhBZoxYwZ9/etfd/c0Gh9DQ0N06NAhOnToEAGg73//+3To0CEX+TYRej/60Y/SwoULad++fbR792666aabaPny5Q3BQxzHdM8999B1111Hhw8fLqzzarXaMDxciY96GBvdR3R1+WhKIUVE9NRTT9GcOXMoiiK64447aO/evZNN0rgAUPf185//3N0zOjpKX/3qV2nq1KnU2tpKn/rUp+jMmTOTR/QEMFZINQMPL774It16661UKpVo/vz59NOf/rRwXWtNGzZsoO7ubiqVSnTnnXfSsWPHJona+hgcHKQ1a9bQnDlzqFwu03ve8x765je/WdgMG42PnTt31l0Dq1atmjC9b7/9Ni1fvpza29upo6ODvvjFL9LQ0FBD8HDixIlx1/nOnTsbhocr8VEP9YTU1eTD95Py8PDw8GhYNN2ZlIeHh4fH/x94IeXh4eHh0bDwQsrDw8PDo2HhhZSHh4eHR8PCCykPDw8Pj4aFF1IeHh4eHg0LL6Q8PDw8PBoWXkh5eHh4eDQsvJDy8PDw8GhYeCHl4eHh4dGw8ELKw8PDw6Nh8X9RTpcNcaC1SQAAAABJRU5ErkJggg==", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fnames = [os.path.join(train_dir+\"/bee\", fname) for\n", " fname in os.listdir(train_dir+\"/bee\")]\n", "\n", "img_path = fnames[0]\n", "\n", "img = image.load_img(img_path, target_size=(150, 150))\n", "\n", "x = image.img_to_array(img)\n", "\n", "x = x.reshape((1,) + x.shape)\n", "\n", "i=0\n", "for batch in datagen.flow(x, batch_size=1):\n", " plt.figure(i)\n", " imgplot = plt.imshow(image.array_to_img(batch[0]))\n", " i += 1\n", " if i % 4 == 0:\n", " break\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "id": "bf2usfn-r6lE", "tags": [] }, "outputs": [], "source": [ "train_datagen = ImageDataGenerator(\n", " rescale=1./255,\n", " rotation_range=50,\n", " width_shift_range=0.1,\n", " height_shift_range=0.1,\n", " zoom_range=0.1,\n", " horizontal_flip=True\n", ")" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "id": "0U56MXMVsMlU", "tags": [] }, "outputs": [], "source": [ "test_datagen = ImageDataGenerator(rescale=1./255)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "h-SyqCjksSDo", "outputId": "7674f7ae-e94d-4904-cba0-6635118f3319", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 3677 images belonging to 2 classes.\n" ] } ], "source": [ "train_generator = train_datagen.flow_from_directory(\n", " train_dir,\n", " target_size=(150, 150),\n", " batch_size=20,\n", " class_mode='binary'\n", ")" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "GH4twLrfsdYV", "outputId": "13f4db46-b473-4bb1-d2eb-000450d70b3a", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 918 images belonging to 2 classes.\n" ] } ], "source": [ "validation_generator = test_datagen.flow_from_directory(\n", " test_dir,\n", " target_size=(150, 150),\n", " batch_size=20,\n", " class_mode='binary'\n", ")" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "AnN_TIx_srOi", "outputId": "bfe07c2d-4fa5-4064-e785-f1092b959440", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/10\n", "184/184 [==============================] - 41s 222ms/step - loss: 0.4999 - acc: 0.7645 - val_loss: 0.4804 - val_acc: 0.7745\n", "Epoch 2/10\n", "184/184 [==============================] - 41s 223ms/step - loss: 0.4893 - acc: 0.7726 - val_loss: 0.4848 - val_acc: 0.7614\n", "Epoch 3/10\n", "184/184 [==============================] - 44s 239ms/step - loss: 0.4868 - acc: 0.7767 - val_loss: 0.4776 - val_acc: 0.7734\n", "Epoch 4/10\n", "184/184 [==============================] - 43s 231ms/step - loss: 0.4897 - acc: 0.7705 - val_loss: 0.5060 - val_acc: 0.7582\n", "Epoch 5/10\n", "184/184 [==============================] - 42s 227ms/step - loss: 0.4769 - acc: 0.7824 - val_loss: 0.4722 - val_acc: 0.7778\n", "Epoch 6/10\n", "184/184 [==============================] - 42s 227ms/step - loss: 0.4729 - acc: 0.7876 - val_loss: 0.4487 - val_acc: 0.8039\n", "Epoch 7/10\n", "184/184 [==============================] - 41s 225ms/step - loss: 0.4631 - acc: 0.7925 - val_loss: 0.4677 - val_acc: 0.7767\n", "Epoch 8/10\n", "184/184 [==============================] - 41s 224ms/step - loss: 0.4631 - acc: 0.7852 - val_loss: 0.4996 - val_acc: 0.7691\n", "Epoch 9/10\n", "184/184 [==============================] - 42s 227ms/step - loss: 0.4526 - acc: 0.7993 - val_loss: 0.5490 - val_acc: 0.7331\n", "Epoch 10/10\n", "184/184 [==============================] - 42s 226ms/step - loss: 0.4557 - acc: 0.7996 - val_loss: 0.5028 - val_acc: 0.7712\n" ] } ], "source": [ "history = model.fit(\n", " train_generator,\n", " epochs=10,\n", " validation_data=validation_generator\n", ")" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 887 }, "id": "hxhLYTaxs3GG", "outputId": "e2c65829-c983-48f6-9451-aae24bb3d655", "tags": [] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGzCAYAAAAMr0ziAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAByI0lEQVR4nO3dd1xV9f8H8NflIpeNCsoQFEVzIporNRxJ4sxR5t6jZWWmpZVYNmyaaf60DMNyZqENcyBiztTcpDlxA24QVJDL5/fH53svXPZl3HPH6/l43Mc993DuOe97GffNZ71VQggBIiIiIjNmp3QARERERMVhwkJERERmjwkLERERmT0mLERERGT2mLAQERGR2WPCQkRERGaPCQsRERGZPSYsREREZPaYsBAREZHZY8JCNmfUqFEIDAws1XPfffddqFSq8g3IzJw/fx4qlQpRUVEmv7ZKpcK7776rfxwVFQWVSoXz588X+9zAwECMGjWqXOMpy88KEZUvJixkNlQqVYlu27ZtUzpUm/fKK69ApVLhzJkzhR7z9ttvQ6VS4ejRoyaMzHhXr17Fu+++i8OHDysdSoFOnDgBlUoFR0dH3LlzR+lwiBTDhIXMxo8//mhwe/LJJwvc37BhwzJdZ/HixTh58mSpnvvOO+/g/v37Zbq+NRg6dCgAYMWKFYUes3LlSgQHB6Np06alvs7w4cNx//591KpVq9TnKM7Vq1fx3nvvFZiwlOVnpbwsW7YMPj4+AICff/5Z0ViIlGSvdABEOsOGDTN4/PfffyMmJibf/rzu3bsHZ2fnEl+nUqVKpYoPAOzt7WFvz1+bNm3aoG7duli5ciUiIiLyfX3Pnj1ISEjAxx9/XKbrqNVqqNXqMp2jLMrys1IehBBYsWIFhgwZgoSEBCxfvhzjxo1TNKbCpKenw8XFRekwyIqxhYUsSqdOndCkSRMcOHAAHTp0gLOzM9566y0AwK+//oqePXvCz88PGo0GQUFBeP/996HVag3OkXdcgm7Mxueff45vv/0WQUFB0Gg0aNWqFfbv32/w3ILGsKhUKkycOBHr1q1DkyZNoNFo0LhxY2zcuDFf/Nu2bUPLli3h6OiIoKAgfPPNNyUeF7Njxw4MGDAANWvWhEajQUBAAF577bV8LT6jRo2Cq6srrly5gr59+8LV1RXVqlXDlClT8r0Xd+7cwahRo+Dh4YHKlStj5MiRJe52GDp0KP777z8cPHgw39dWrFgBlUqFwYMHIzMzExEREWjRogU8PDzg4uKC0NBQxMXFFXuNgsawCCHwwQcfwN/fH87OzujcuTP+/ffffM+9desWpkyZguDgYLi6usLd3R3du3fHkSNH9Mds27YNrVq1AgCMHj1a3+2oG79T0BiW9PR0vP766wgICIBGo0H9+vXx+eefI2/he2N+Lgqza9cunD9/HoMGDcKgQYOwfft2XL58Od9x2dnZ+OqrrxAcHAxHR0dUq1YN3bp1wz///GNw3LJly9C6dWs4OzujSpUq6NChAzZv3mwQc+4xRDp5xwfpvi9//fUXXnzxRVSvXh3+/v4AgAsXLuDFF19E/fr14eTkBE9PTwwYMKDAcUh37tzBa6+9hsDAQGg0Gvj7+2PEiBG4ceMG0tLS4OLigldffTXf8y5fvgy1Wo3Zs2eX8J0ka8B/Fcni3Lx5E927d8egQYMwbNgweHt7A5B/RF1dXTF58mS4urpi69atiIiIQGpqKj777LNiz7tixQrcvXsXzz33HFQqFT799FP0798f586dK/Y/7Z07dyI6Ohovvvgi3NzcMG/ePDz99NO4ePEiPD09AQCHDh1Ct27d4Ovri/feew9arRazZs1CtWrVSvS616xZg3v37uGFF16Ap6cn9u3bh/nz5+Py5ctYs2aNwbFarRbh4eFo06YNPv/8c2zZsgVffPEFgoKC8MILLwCQH/x9+vTBzp078fzzz6Nhw4ZYu3YtRo4cWaJ4hg4divfeew8rVqzAo48+anDtn376CaGhoahZsyZu3LiB7777DoMHD8b48eNx9+5dREZGIjw8HPv27UOzZs1KdD2diIgIfPDBB+jRowd69OiBgwcPomvXrsjMzDQ47ty5c1i3bh0GDBiA2rVrIzk5Gd988w06duyI48ePw8/PDw0bNsSsWbMQERGBCRMmIDQ0FADQrl27Aq8thMBTTz2FuLg4jB07Fs2aNcOmTZswdepUXLlyBV9++aXB8SX5uSjK8uXLERQUhFatWqFJkyZwdnbGypUrMXXqVIPjxo4di6ioKHTv3h3jxo1DVlYWduzYgb///hstW7YEALz33nt499130a5dO8yaNQsODg7Yu3cvtm7diq5du5b4/c/txRdfRLVq1RAREYH09HQAwP79+7F7924MGjQI/v7+OH/+PBYuXIhOnTrh+PHj+tbQtLQ0hIaG4sSJExgzZgweffRR3LhxA7/99hsuX76MZs2aoV+/fli9ejXmzJlj0NK2cuVKCCH0XZNkIwSRmXrppZdE3h/Rjh07CgBi0aJF+Y6/d+9evn3PPfeccHZ2Fg8ePNDvGzlypKhVq5b+cUJCggAgPD09xa1bt/T7f/31VwFA/P777/p9M2fOzBcTAOHg4CDOnDmj33fkyBEBQMyfP1+/r3fv3sLZ2VlcuXJFv+/06dPC3t4+3zkLUtDrmz17tlCpVOLChQsGrw+AmDVrlsGxzZs3Fy1atNA/XrdunQAgPv30U/2+rKwsERoaKgCI77//vtiYWrVqJfz9/YVWq9Xv27hxowAgvvnmG/05MzIyDJ53+/Zt4e3tLcaMGWOwH4CYOXOm/vH3338vAIiEhAQhhBDXrl0TDg4OomfPniI7O1t/3FtvvSUAiJEjR+r3PXjwwCAuIeT3WqPRGLw3+/fvL/T15v1Z0b1nH3zwgcFxzzzzjFCpVAY/AyX9uShMZmam8PT0FG+//bZ+35AhQ0RISIjBcVu3bhUAxCuvvJLvHLr36PTp08LOzk7069cv33uS+33M+/7r1KpVy+C91X1fHn/8cZGVlWVwbEE/p3v27BEAxA8//KDfFxERIQCI6OjoQuPetGmTACA2bNhg8PWmTZuKjh075nseWTd2CZHF0Wg0GD16dL79Tk5O+u27d+/ixo0bCA0Nxb179/Dff/8Ve96BAweiSpUq+se6/7bPnTtX7HPDwsIQFBSkf9y0aVO4u7vrn6vVarFlyxb07dsXfn5++uPq1q2L7t27F3t+wPD1paen48aNG2jXrh2EEDh06FC+459//nmDx6GhoQav5c8//4S9vb2+xQWQY0ZefvnlEsUDyHFHly9fxvbt2/X7VqxYAQcHBwwYMEB/TgcHBwCy6+LWrVvIyspCy5YtC+xOKsqWLVuQmZmJl19+2aAbbdKkSfmO1Wg0sLOTf+K0Wi1u3rwJV1dX1K9f3+jr6vz5559Qq9V45ZVXDPa//vrrEEJgw4YNBvuL+7koyoYNG3Dz5k0MHjxYv2/w4ME4cuSIQRfYL7/8ApVKhZkzZ+Y7h+49WrduHbKzsxEREaF/T/IeUxrjx4/PN8Yo98/pw4cPcfPmTdStWxeVK1c2eN9/+eUXhISEoF+/foXGHRYWBj8/Pyxfvlz/tfj4eBw9erTYsW1kfZiwkMWpUaOG/gMwt3///Rf9+vWDh4cH3N3dUa1aNf0ftZSUlGLPW7NmTYPHuuTl9u3bRj9X93zdc69du4b79++jbt26+Y4raF9BLl68iFGjRqFq1ar6cSkdO3YEkP/16cYxFBYPIMca+Pr6wtXV1eC4+vXrlygeABg0aBDUarV+ttCDBw+wdu1adO/e3SD5W7p0KZo2bQpHR0d4enqiWrVqWL9+fYm+L7lduHABAFCvXj2D/dWqVTO4HiCToy+//BL16tWDRqOBl5cXqlWrhqNHjxp93dzX9/Pzg5ubm8F+3cw1XXw6xf1cFGXZsmWoXbs2NBoNzpw5gzNnziAoKAjOzs4GH+Bnz56Fn58fqlatWui5zp49Czs7OzRq1KjY6xqjdu3a+fbdv38fERER+jE+uvf9zp07Bu/72bNn0aRJkyLPb2dnh6FDh2LdunW4d+8eANlN5ujoqE+IyXYwYSGLk/s/OJ07d+6gY8eOOHLkCGbNmoXff/8dMTEx+OSTTwDID6/iFDYbReQZTFnezy0JrVaLJ598EuvXr8ebb76JdevWISYmRj84NO/rM9XMmurVq+PJJ5/EL7/8gocPH+L333/H3bt3DcYWLFu2DKNGjUJQUBAiIyOxceNGxMTE4IknnijR96W0PvroI0yePBkdOnTAsmXLsGnTJsTExKBx48YVet3cSvtzkZqait9//x0JCQmoV6+e/taoUSPcu3cPK1asKLefrZLIO1hbp6DfxZdffhkffvghnn32Wfz000/YvHkzYmJi4OnpWar3fcSIEUhLS8O6dev0s6Z69eoFDw8Po89Flo2DbskqbNu2DTdv3kR0dDQ6dOig35+QkKBgVDmqV68OR0fHAhdaK2rxNZ1jx47h1KlTWLp0KUaMGKHfHxMTU+qYatWqhdjYWKSlpRm0shi77sjQoUOxceNGbNiwAStWrIC7uzt69+6t//rPP/+MOnXqIDo62qD7oaAujJLEDACnT59GnTp19PuvX7+er9Xi559/RufOnREZGWmw/86dO/Dy8tI/NqZLpFatWtiyZQvu3r1r0Mqi63Isr/VioqOj8eDBAyxcuNAgVkB+f9555x3s2rULjz/+OIKCgrBp0ybcunWr0FaWoKAgZGdn4/jx40UOcq5SpUq+WWKZmZlITEwscew///wzRo4ciS+++EK/78GDB/nOGxQUhPj4+GLP16RJEzRv3hzLly+Hv78/Ll68iPnz55c4HrIebGEhq6D7Tzb3f52ZmZn4v//7P6VCMqBWqxEWFoZ169bh6tWr+v1nzpzJN+6hsOcDhq9PCIGvvvqq1DH16NEDWVlZWLhwoX6fVqs1+sOgb9++cHZ2xv/93/9hw4YN6N+/PxwdHYuMfe/evdizZ4/RMYeFhaFSpUqYP3++wfnmzp2b71i1Wp2vFWLNmjW4cuWKwT7d2iElmc7do0cPaLVafP311wb7v/zyS6hUqhKPRyrOsmXLUKdOHTz//PN45plnDG5TpkyBq6urvlvo6aefhhAC7733Xr7z6F5/3759YWdnh1mzZuVr5cj9HgUFBRmMRwKAb7/9ttAWloIU9L7Pnz8/3zmefvppHDlyBGvXri00bp3hw4dj8+bNmDt3Ljw9PcvtfSbLwhYWsgrt2rVDlSpVMHLkSP2y8T/++KNJm82L8+6772Lz5s1o3749XnjhBf0HX5MmTYpdFr5BgwYICgrClClTcOXKFbi7u+OXX34p0ViIwvTu3Rvt27fHtGnTcP78eTRq1AjR0dFGj+9wdXVF37599eNY8k417dWrF6Kjo9GvXz/07NkTCQkJWLRoERo1aoS0tDSjrqVbT2b27Nno1asXevTogUOHDmHDhg35WiJ69eqFWbNmYfTo0WjXrh2OHTuG5cuXG7TMAPJDunLlyli0aBHc3Nzg4uKCNm3aFDg+o3fv3ujcuTPefvttnD9/HiEhIdi8eTN+/fVXTJo0yWCAbWldvXoVcXFx+Qb26mg0GoSHh2PNmjWYN28eOnfujOHDh2PevHk4ffo0unXrhuzsbOzYsQOdO3fGxIkTUbduXbz99tt4//33ERoaiv79+0Oj0WD//v3w8/PTr2cybtw4PP/883j66afx5JNP4siRI9i0aVO+97YovXr1wo8//ggPDw80atQIe/bswZYtW/JN4546dSp+/vlnDBgwAGPGjEGLFi1w69Yt/Pbbb1i0aBFCQkL0xw4ZMgRvvPEG1q5dixdeeEHxBf1IISaelURUYoVNa27cuHGBx+/atUs89thjwsnJSfj5+Yk33nhDPy0yLi5Of1xh05o/++yzfOdEnmmehU1rfumll/I9N+9UUCGEiI2NFc2bNxcODg4iKChIfPfdd+L1118Xjo6OhbwLOY4fPy7CwsKEq6ur8PLyEuPHj9dPk809JXfkyJHCxcUl3/MLiv3mzZti+PDhwt3dXXh4eIjhw4eLQ4cOlXhas8769esFAOHr61vgtNmPPvpI1KpVS2g0GtG8eXPxxx9/5Ps+CFH8tGYhhNBqteK9994Tvr6+wsnJSXTq1EnEx8fne78fPHggXn/9df1x7du3F3v27BEdO3bMNyX2119/FY0aNdJPMde99oJivHv3rnjttdeEn5+fqFSpkqhXr5747LPPDKYH615LSX8ucvviiy8EABEbG1voMVFRUQKA+PXXX4UQcur4Z599Jho0aCAcHBxEtWrVRPfu3cWBAwcMnrdkyRLRvHlzodFoRJUqVUTHjh1FTEyM/utarVa8+eabwsvLSzg7O4vw8HBx5syZQqc179+/P19st2/fFqNHjxZeXl7C1dVVhIeHi//++6/A133z5k0xceJEUaNGDeHg4CD8/f3FyJEjxY0bN/Kdt0ePHgKA2L17d6HvC1k3lRBm9C8okQ3q27cv/v33X5w+fVrpUIjMVr9+/XDs2LESjfki68QxLEQmlHcZ/dOnT+PPP/9Ep06dlAmIyAIkJiZi/fr1GD58uNKhkILYwkJkQr6+vhg1ahTq1KmDCxcuYOHChcjIyMChQ4fyrS1CZOsSEhKwa9cufPfdd9i/fz/Onj2rr1xNtoeDbolMqFu3bli5ciWSkpKg0WjQtm1bfPTRR0xWiArw119/YfTo0ahZsyaWLl3KZMXGsYWFiIiIzB7HsBAREZHZY8JCREREZs8qxrBkZ2fj6tWrcHNzK1PlUSIiIjIdIQTu3r0LPz+/fJXE87KKhOXq1asICAhQOgwiIiIqhUuXLsHf37/IY6wiYdEVIbt06RLc3d0VjoaIiIhKIjU1FQEBAQbFRAtjFQmLrhvI3d2dCQsREZGFKclwDg66JSIiIrPHhIWIiIjMHhMWIiIiMntWMYalJIQQyMrKglarVToUslBqtRr29vacOk9EpACbSFgyMzORmJiIe/fuKR0KWThnZ2f4+vrCwcFB6VCIiGyK1Scs2dnZSEhIgFqthp+fHxwcHPgfMhlNCIHMzExcv34dCQkJqFevXrGLHBERUfmx+oQlMzMT2dnZCAgIgLOzs9LhkAVzcnJCpUqVcOHCBWRmZsLR0VHpkIiIbIbN/IvI/4apPPDniIhIGfzrS0RERGaPCQsRERGZPSYsRtBqgW3bgJUr5b0lzpAODAzE3LlzS3z8tm3boFKpcOfOnQqLiYiIqDhMWEooOhoIDAQ6dwaGDJH3gYFyf0VQqVRF3t59991SnXf//v2YMGFCiY9v164dEhMT4eHhUarrERERlQernyVUHqKjgWeeAYQw3H/litz/889A//7le83ExET99urVqxEREYGTJ0/q97m6uuq3hRDQarWwty/+21mtWjWj4nBwcICPj49RzyGyNLdvA4sWAePGAUb+ihCRibCFpRhaLfDqq/mTFSBn36RJ5d895OPjo795eHhApVLpH//3339wc3PDhg0b0KJFC2g0GuzcuRNnz55Fnz594O3tDVdXV7Rq1QpbtmwxOG/eLiGVSoXvvvsO/fr1g7OzM+rVq4fffvtN//W8XUJRUVGoXLkyNm3ahIYNG8LV1RXdunUzSLCysrLwyiuvoHLlyvD09MSbb76JkSNHom/fvoW+3ps3b2Lw4MGoUaMGnJ2dERwcjJUrVxock52djU8//RR169aFRqNBzZo18eGHH+q/fvnyZQwePBhVq1aFi4sLWrZsib1795bi3SdbM3Uq8NZb8neZiMwTE5Zi7NgBXL5c+NeFAC5dkseZ2rRp0/Dxxx/jxIkTaNq0KdLS0tCjRw/Exsbi0KFD6NatG3r37o2LFy8WeZ733nsPzz77LI4ePYoePXpg6NChuHXrVqHH37t3D59//jl+/PFHbN++HRcvXsSUKVP0X//kk0+wfPlyfP/999i1axdSU1Oxbt26ImN48OABWrRogfXr1yM+Ph4TJkzA8OHDsW/fPv0x06dPx8cff4wZM2bg+PHjWLFiBby9vQEAaWlp6NixI65cuYLffvsNR44cwRtvvIHs7OwSvJNky1JS5Lg0APjlF9naQkRmSFiBlJQUAUCkpKTk+9r9+/fF8ePHxf3790t17hUrhJBpSdG3FSvK+ioK9/333wsPDw/947i4OAFArFu3rtjnNm7cWMyfP1//uFatWuLLL7/UPwYg3nnnHf3jtLQ0AUBs2LDB4Fq3b9/WxwJAnDlzRv+cBQsWCG9vb/1jb29v8dlnn+kfZ2VliZo1a4o+ffqU9CULIYTo2bOneP3114UQQqSmpgqNRiMWL15c4LHffPONcHNzEzdv3jTqGsYq688TmZ+vvzb8Xc7160JEFayoz++82MJSDF/f8j2uPLVs2dLgcVpaGqZMmYKGDRuicuXKcHV1xYkTJ4ptYWnatKl+28XFBe7u7rh27Vqhxzs7OyMoKEj/2NfXV398SkoKkpOT0bp1a/3X1Wo1WrRoUWQMWq0W77//PoKDg1G1alW4urpi06ZN+thPnDiBjIwMdOnSpcDnHz58GM2bN0fVqlWLvA5RbkLIsSsAEBIi7yMjlYuHiArHhKUYoaGAvz9QWPkhlQoICJDHmZqLi4vB4ylTpmDt2rX46KOPsGPHDhw+fBjBwcHIzMws8jyVKlUyeKxSqYrsSinoeFHQIB8jfPbZZ/jqq6/w5ptvIi4uDocPH0Z4eLg+dicnpyKfX9zXiQqyZw8QHw84OcnB9RoNcPgwcPCg0pERUV5MWIqhVgNffSW38yYtusdz58rjlLZr1y6MGjUK/fr1Q3BwMHx8fHD+/HmTxuDh4QFvb2/s379fv0+r1eJgMZ8Au3btQp8+fTBs2DCEhISgTp06OHXqlP7r9erVg5OTE2JjYwt8ftOmTXH48OEix94Q5aVrXRk0CKhTJ2e233ffKRcTERWMCUsJ9O8vpy7XqGG439+/YqY0l1a9evUQHR2Nw4cP48iRIxgyZIgig05ffvllzJ49G7/++itOnjyJV199Fbdv3y6ySna9evUQExOD3bt348SJE3juueeQnJys/7qjoyPefPNNvPHGG/jhhx9w9uxZ/P3334j8X/v94MGD4ePjg759+2LXrl04d+4cfvnlF+zZs6fCXy9Zplu3gJ9+ktvPPSfvx46V9ytWAPfvKxMXERWM67CUUP/+QJ8+cjZQYqIcsxIaah4tKzpz5szBmDFj0K5dO3h5eeHNN99EamqqyeN48803kZSUhBEjRkCtVmPChAkIDw+Huog365133sG5c+cQHh4OZ2dnTJgwAX379kVKSor+mBkzZsDe3h4RERG4evUqfH198fzzzwOQ68Vs3rwZr7/+Onr06IGsrCw0atQICxYsqPDXS5bphx+AjAygWTNAN+Sqc2egdm0gIUHOGBo2TNEQiSgXlSjr4AMzkJqaCg8PD6SkpMDd3d3gaw8ePEBCQgJq164NR0dHhSK0bdnZ2WjYsCGeffZZvP/++0qHUyb8ebIOQgANGwInTwILFwL/y3sBAO+/D0REAJ06AXFxioVIZBOK+vzOi11CVO4uXLiAxYsX49SpUzh27BheeOEFJCQkYMiQIUqHRgQA2L5dJisuLrLURm6jRgF2drJe2JkzSkRHRAVhwkLlzs7ODlFRUWjVqhXat2+PY8eOYcuWLWjYsKHSoREBAL75Rt4PHQrk/acuIAAID5fbS5aYNi4iKhzHsFC5CwgIwK5du5QOg6hA16/LwfJAzmDbvMaOBTZsAKKigFmzgBKU6SKiCsYWFiKyKVFRwMOHQMuWwKOPFnxM796yCGJiIrBxo0nDI6JCMGEhIpuRnZ3THZR7oG1eDg7AiBFym2uyEJkHJixEZDO2bgXOnpXjVgYNKvpY3Zosf/wBJCVVfGxEVLRSJSwLFixAYGAgHB0d0aZNG4OKugWZO3cu6tevDycnJwQEBOC1117DgwcPynROIiJj6VpXhg+XM4SK0rAh0LYtoNXKNVuISFlGJyyrV6/G5MmTMXPmTBw8eBAhISEIDw8vtFjeihUrMG3aNMycORMnTpxAZGQkVq9ejbfeeqvU5yQiMlZSErBundwubLBtXrpWlshIuXYLkS3SauU0/5Ur5b1Wq0wcRicsc+bMwfjx4zF69Gg0atQIixYtgrOzM5YUMv9v9+7daN++PYYMGYLAwEB07doVgwcPNmhBMfacRETGWrIEyMqSrSbBwSV7zsCBgKsrcOoUsHNnxcZH1sdcPujLIjoaCAyUq0APGSLvAwPlflMzKmHJzMzEgQMHEBYWlnMCOzuEhYUVWrOlXbt2OHDggD5BOXfuHP7880/06NGj1OfMyMhAamqqwY0K1qlTJ0yaNEn/ODAwEHPnzi3yOSqVCut0/4qWQXmdh6istFrg22/ldlGDbfNydZVJCyBbWYhKypw+6EsrOhp45hng8mXD/VeuyP2mfi1GJSw3btyAVquFt7e3wX5vb28kFTIqbciQIZg1axYef/xxVKpUCUFBQejUqZO+S6g055w9ezY8PDz0t4CAAGNehkXo3bs3unXrVuDXduzYAZVKhaNHjxp93v3792PChAllDc/Au+++i2bNmuXbn5iYiO7du5frtYhKY/Nm4MIFoEoVYMAA456r6xZaswbIVdqKqFDm9kFfGlot8OqrBXeF6vZNmmTaVqMKnyW0bds2fPTRR/i///s/HDx4ENHR0Vi/fn2ZaspMnz4dKSkp+tulS5fKMWLzMHbsWMTExOBy3p94AN9//z1atmyJpk2bGn3eatWqwdnZuTxCLJaPjw80Go1JrkVUFN1g25EjAScn45772GNyAO69e8CqVeUfG1kXc/ygL40dO/InXLkJAVy6JI8zFaMSFi8vL6jVaiQnJxvsT05Oho+PT4HPmTFjBoYPH45x48YhODgY/fr1w0cffYTZs2cjOzu7VOfUaDRwd3c3uBlDCCA9XZlbSQfu9erVC9WqVUNUVJTB/rS0NKxZswZjx47FzZs3MXjwYNSoUQPOzs4IDg7GypUrizxv3i6h06dPo0OHDnB0dESjRo0QExOT7zlvvvkmHnnkETg7O6NOnTqYMWMGHj58CACIiorCe++9hyNHjkClUkGlUuljztsldOzYMTzxxBNwcnKCp6cnJkyYgLS0NP3XR40ahb59++Lzzz+Hr68vPD098dJLL+mvVZCzZ8+iT58+8Pb2hqurK1q1aoUtW7YYHJORkYE333wTAQEB0Gg0qFu3LiJzte//+++/6NWrF9zd3eHm5obQ0FCcPXu2yPeRLMfly8Dvv8vt0jQuqlTAuHFym91CVBxz/KAvjcTE8j2uPBiVsDg4OKBFixaIjY3V78vOzkZsbCzatm1b4HPu3bsHOzvDy6jVagCAEKJU5yyre/dk37QSt3v3Shajvb09RowYgaioKOQuqL1mzRpotVoMHjwYDx48QIsWLbB+/XrEx8djwoQJGD58eImnhGdnZ6N///5wcHDA3r17sWjRIrz55pv5jnNzc0NUVBSOHz+Or776CosXL8aXX34JABg4cCBef/11NG7cGImJiUhMTMRAXad/Lunp6QgPD0eVKlWwf/9+rFmzBlu2bMHEiRMNjouLi8PZs2cRFxeHpUuXIioqKl/SlltaWhp69OiB2NhYHDp0CN26dUPv3r1x8eJF/TEjRozAypUrMW/ePJw4cQLffPMNXF1dAQBXrlxBhw4doNFosHXrVhw4cABjxoxBVlZWid5DMn+RkXLBuA4dZEtJaQwfDlSqBOzfDxw7Vr7xkXUxxw/60vD1Ld/jyoUw0qpVq4RGoxFRUVHi+PHjYsKECaJy5coiKSlJCCHE8OHDxbRp0/THz5w5U7i5uYmVK1eKc+fOic2bN4ugoCDx7LPPlvicxUlJSREAREpKSr6v3b9/Xxw/flzcv39fvy8tTQiZ55r+lpZW8vf6xIkTAoCIi4vT7wsNDRXDhg0r9Dk9e/YUr7/+uv5xx44dxauvvqp/XKtWLfHll18KIYTYtGmTsLe3F1euXNF/fcOGDQKAWLt2baHX+Oyzz0SLFi30j2fOnClCQkLyHZf7PN9++62oUqWKSMv1Bqxfv17Y2dnpv88jR44UtWrVEllZWfpjBgwYIAYOHFhoLAVp3LixmD9/vhBCiJMnTwoAIiYmpsBjp0+fLmrXri0yMzNLdO6Cfp7IfD18KIS/v/zdW7GibOd6+ml5nly/TkT5xMWV7LMg1591s5SVJX93VKqC41ephAgIkMeVRVGf33kZXdJr4MCBuH79OiIiIpCUlIRmzZph48aN+kGzFy9eNGhReeedd6BSqfDOO+/gypUrqFatGnr37o0PP/ywxOcsb87OQK6eCJMyZvhIgwYN0K5dOyxZsgSdOnXCmTNnsGPHDsyaNQsAoNVq8dFHH+Gnn37ClStXkJmZiYyMjBKPUTlx4gQCAgLg5+en31dQq9bq1asxb948nD17FmlpacjKyjK6G+7EiRMICQmBS67Vutq3b4/s7GycPHlS/71u3LixvgUOAHx9fXGsiH9p09LS8O6772L9+vVITExEVlYW7t+/r29hOXz4MNRqNTp27Fjg8w8fPozQ0FBUqlTJqNdDluHPP2XzvJcX0L9/2c41dizwyy/Ajz8Cn3wCcHgWFSQ0FPD3lwNsCxoCoFLJr4eGmj42Y6jVwFdfyUHCKpXha1Gp5P3cufI4UylVDdKJEyfma8rX2bZtm+EF7O0xc+ZMzJw5s9TnLG8qVfGrXJqLsWPH4uWXX8aCBQvw/fffIygoSP/h+9lnn+Grr77C3LlzERwcDBcXF0yaNAmZmZnldv09e/Zg6NCheO+99xAeHg4PDw+sWrUKX3zxRbldI7e8iYNKpUJ2dnahx0+ZMgUxMTH4/PPPUbduXTg5OeGZZ57RvwdOxYywLO7rZNl0g21HjSp7gtG1q/yguXxZLkBXQM8nkVl+0JdW//6ysvmrrxqOy/H3l6+hrP8EGIu1hMzcs88+Czs7O6xYsQI//PADxowZA9X/fup37dqFPn36YNiwYQgJCUGdOnVw6tSpEp+7YcOGuHTpEhJzdab+/fffBsfs3r0btWrVwttvv42WLVuiXr16uHDhgsExDg4O0BYz5L1hw4Y4cuQI0tPT9ft27doFOzs71K9fv8Qx57Vr1y6MGjUK/fr1Q3BwMHx8fHD+/Hn914ODg5GdnY2//vqrwOc3bdoUO3bsKHJgL1mm8+eBDRvkdnnM5FergdGj5TYH31JRdB/0NWoY7vf3l/tN/UFfFv37y9+luDhgxQp5n5CgzGtgwmLmXF1dMXDgQEyfPh2JiYkYNWqU/mv16tVDTEwMdu/ejRMnTuC5557LN9uqKGFhYXjkkUcwcuRIHDlyBDt27MDbb79tcEy9evVw8eJFrFq1CmfPnsW8efOwdu1ag2MCAwORkJCAw4cP48aNG8jIyMh3raFDh8LR0REjR45EfHw84uLi8PLLL2P48OFl6vqrV68eoqOjcfjwYRw5cgRDhgwxaJEJDAzEyJEjMWbMGKxbtw4JCQnYtm0bfvrpJwCyZS81NRWDBg3CP//8g9OnT+PHH3/EyZMnSx0TmYfvvpP/3XbpAtSrVz7n1CUsW7bIP+JEhTGnD/qyUquBTp2AwYPlvVKtQ0xYLMDYsWNx+/ZthIeHG4w3eeedd/Doo48iPDwcnTp1go+PD/r27Vvi89rZ2WHt2rW4f/8+WrdujXHjxhmMLQKAp556Cq+99homTpyIZs2aYffu3ZgxY4bBMU8//TS6deuGzp07o1q1agVOrXZ2dsamTZtw69YttGrVCs888wy6dOmCr7/+2rg3I485c+agSpUqaNeuHXr37o3w8HA8+uijBscsXLgQzzzzDF588UU0aNAA48eP17f0eHp6YuvWrUhLS0PHjh3RokULLF68mGNaLNzDhzmtIMasbFuc2rVlAiQE8P335Xdesk7m8kFvLVRCWH5Jr9TUVHh4eCAlJSXfYNAHDx4gISEBtWvXhqOjo0IRkrXgz5Nl+OUXOYbA21uueVGe+efKlXKp9YAA+R8zP4SISq+oz++82MJCRFZHN9h2zJjyTVYAoF8/ucT/pUuya4iITIMJCxFZlTNngJgYOSNj/PjyP7+jIzBsmNzm4Fsi02HCQkRWZfFieR8eLsecVARdQcR164Dr1yvmGkRkiAkLEVmNjIycwbDlOdg2r5AQoEULObh32bKKuw4R5bCZhMUKxhaTGeDPkXlbu1a2eNSoAfTsWbHXyl0QkT8WRBXP6hMW3fTUeyWtOkhUBN3PEac9myfdYNuxYwH7Uq3jXXKDBwNOTsC//wIlrDdKRGVQwb/SylOr1ahcuTKuXbsGQK4HolsplqikhBC4d+8erl27hsqVKxvUOyLz8N9/wLZtgJ1dTutHRfLwkFOnf/xRLlLXpk3FX5PIlll9wgIAPj4+AKBPWohKq3LlyvqfJzIv334r73v2lGukmMLYsTJhWbUK+PJLwNXVNNclskU2kbCoVCr4+vqievXqrBlDpVapUiW2rJip+/eBpUvldkUOts2rQwegbl05lXrNmpyl+4mo/NlEwqKjVqv5gUNkhX7+Gbh1C6hZU05nNhWVSrayTJ8uB98yYSGqOFY/6JaIrJ9usO348aZfKn/kSHnNXbuAEydMe20iW8KEhYgsWny8TBbU6pwF3UzJ1xfo0UNuL1li+usT2QomLERk0XStK336yORBCbpZST/8IBeTI6Lyx4SFiCxWerqcpQMAzz2nXBw9egA+PsC1a8AffygXB5E1Y8JCRBZr9WogJQWoUwcIC1MuDnt7OZYFkGuyEFH5Y8JCRBZL1x00YYJcME5JY8bI+40bgStXlI2FyBoxYSEii3TokFwSv1Il85hO/Mgjcl2W7GwgKkrpaIisDxMWIrJIutaV/v2B6tWVjUVHN0tpyRKZuBBR+WHCQkQW5+5dYPlyua3kYNu8nnkGcHcHzp2TdY2IqPwwYSEii7NyJZCWJrthOnVSOpoczs6yijMgV74lovLDhIWILIoQwKJFcvu55+Ty+OZEtybLL78At2+b9tparWzZWblS3mu1pr0+UUViwkJEFuWff+SAW40mZyqxOWnRAmjaFMjIAFasMN11o6OBwECgc2dgyBB5Hxgo9xNZAyYsRGRRdK0rAwYAnp7KxlIQXUFEwHRrskRHy/Ezly8b7r9yRe5n0kLWQCWEEEoHUVapqanw8PBASkoK3N3dlQ6HiCpISgrg5wfcuwfs2AE8/rjSERXs5k0ZZ2YmcOAA8OijFXctrVa2pORNVnRUKsDfH0hIMH1hSKLiGPP5zRYWIrIYy5bJZKVxY6B9e6WjKZynp5xuDVT84NsdOwpPVgA55ufSJXkckSVjwkJEFsHcB9vmpesWWr4cuH+/4q6TmFi+xxGZKyYsRGQR9uwB4uMBJydg+HCloyneE0/IrpqUFDljqKKUtEK1UpWsicoLExYisgi61pVBg4DKlRUNpUTs7HJKBlRkt1BoqByjUliLk0oFBATI44gsGRMWIjJ7t24BP/0kt81pZdvijB4tE4Zt24CzZyvmGmo18NVXcjtv0qJ7PHcuB9yS5WPCQkRm74cf5LomzZoBrVsrHU3JBQQA4eFye8mSirtO//7Azz8DNWoY7vf3l/t1A4CJLBkTFiIya5Y22DYv3eDb778HsrIq7jr9+wPnzwNxcXLBurg4OZWZyQpZC3ulAyAiKsr27cDJk4CLi1zB1dI89RTg5SVn6WzcCPTqVXHXUqvNq7YSUXliCwsRmTVd68rQobISsqVxcABGjJDbLIhIVHqlSlgWLFiAwMBAODo6ok2bNti3b1+hx3bq1AkqlSrfrWfPnvpjkpOTMWrUKPj5+cHZ2RndunXD6dOnSxMaEVmR69dzpgRb0mDbvHTdQn/8ASQlKRsLkaUyOmFZvXo1Jk+ejJkzZ+LgwYMICQlBeHg4rl27VuDx0dHRSExM1N/i4+OhVqsxYMAAAIAQAn379sW5c+fw66+/4tChQ6hVqxbCwsKQnp5etldHRBYtKgp4+BBo1apil7evaI0aAY89Jsew/PCD0tEQWSajE5Y5c+Zg/PjxGD16NBo1aoRFixbB2dkZSwoZAl+1alX4+PjobzExMXB2dtYnLKdPn8bff/+NhQsXolWrVqhfvz4WLlyI+/fvY+XKlWV7dURksbKzgW++kduW3Lqio2tliYyUA4mJyDhGJSyZmZk4cOAAwsLCck5gZ4ewsDDs2bOnROeIjIzEoEGD4OLiAgDIyMgAADg6OhqcU6PRYOfOnQWeIyMjA6mpqQY3IrIuW7fKtUvc3eVicZZu4EA5cPjUKWDXLqWjIbI8RiUsN27cgFarhbe3t8F+b29vJJWgY3bfvn2Ij4/HuHHj9PsaNGiAmjVrYvr06bh9+zYyMzPxySef4PLly0gspPjF7Nmz4eHhob8FBAQY8zKIyALoWleGD5cf9JbOzU0mLQAH3xKVhklnCUVGRiI4OBitc638VKlSJURHR+PUqVOoWrUqnJ2dERcXh+7du8POruDwpk+fjpSUFP3t0qVLpnoJRGQCSUnAunVy2xq6g3R03UI//QSwYZjIOEYlLF5eXlCr1UhOTjbYn5ycDB8fnyKfm56ejlWrVmGs7jc2lxYtWuDw4cO4c+cOEhMTsXHjRty8eRN16tQp8FwajQbu7u4GNyKyHkuWyAGq7doBwcFKR1N+2rYFGjQA7t0DVq1SOhoiy2JUwuLg4IAWLVogNjZWvy87OxuxsbFo27Ztkc9ds2YNMjIyMGzYsEKP8fDwQLVq1XD69Gn8888/6NOnjzHhEZEV0GqBb7+V29bUugLIVXp1PeLsFiIyjtFdQpMnT8bixYuxdOlSnDhxAi+88ALS09Mx+n9lSUeMGIHp06fne15kZCT69u0LT0/PfF9bs2YNtm3bpp/a/OSTT6Jv377o2rVrKV4SEVmyzZuBCxeAKlWA/00mtCrDhwP29sC+fcCxY0pHQ2Q5jF6af+DAgbh+/ToiIiKQlJSEZs2aYePGjfqBuBcvXsw39uTkyZPYuXMnNm/eXOA5ExMTMXnyZCQnJ8PX1xcjRozAjBkzSvFyiMjS6QbbjhwJODkpG0tFqF5dLtcfHS1bWebOVToiIsugEsLyVwRITU2Fh4cHUlJSOJ6FyIJdvgzUqiXXYDl+HGjY0DTX1WqBHTtkvR9fXyA0VNblqSh//gn07AlUrQpcvQpoNBV3LSJzZsznN2sJEZHZiIyUyUqHDqZLVqKjgcBAoHNnWVyxc2f5ODq64q4ZHg7UqAHcugX8+mvFXYfImjBhISKzkJUFLF4st59/3jTXjI4GnnlGtuzkduWK3F9RSYtaDfxv2B8H3xKVEBMWIjILf/4pEwUvL6B//4q/nlYLvPpqwcvk6/ZNmiSPqwi6hCUmRg4yJqKiMWEhIrOgG2w7erRpxnTs2JG/ZSU3IYBLl+RxFaFOHeCJJ+R1vv++Yq5BZE2YsBCR4s6fBzZskNsTJpjmmoVU/ij1caWhW0fz++8rriWHyFowYSEixX33nWxp6NIFqFvXNNf09S3f40qjf3+53szFi8CWLRV3HSJrwISFiBT18GHOwFNTDbYF5NRlf3+5+mxBVCogIEAeV1EcHYGhQ+U2B98SFY0JCxEp6rffZLFDb2/AlNU41Grgq6/kdt6kRfd47tyKXY8FyOkWWrcOuHGjYq9FZMmYsBCRonSDbceOBSpVMu21+/cHfv5ZromSm7+/3G+K2UrNmgGPPipbmpYtq/jrEVkqrnRLRIo5cwaoV0+2aJw7JxdsU4KpV7rNa+FC4MUXgcaNZX2hwrqpiKwNV7olIougWyguPFy5ZAWQyUmnTsDgwfLelMkKIK/r6Aj8+68sikhE+TFhISJFZGTkrD9iysG25qhyZbmyLsDBt4Bs8dq2DVi5Ut5zyjcBTFiISCFr1wLXr8vxIz17Kh2N8nSDb1euBNLSlI1FSUrUdiLLwISFiBSRe7Ctvb2ysZiDjh3lGjRpacCaNUpHowylajuRZWDCQkQm999/sqnfzg4YN07paMyDSgWMGSO3bbFbSOnaTmT+mLAQkcl9+62879lTLs5G0siRMonbtUsmdbZE6dpOZP6YsBCRSd2/DyxdKrdtfbBtXn5+QI8ecnvJEmVjMTVzqO1E5o0JCxGZ1M8/A7duATVryunMZEjXRbZ0qVxMzlaYQ20nMm9MWIjIpHSDbcePN/16J5agRw9ZpuDaNeCPP5SOxnTMobYTmTcmLERkMvHxcnyGWp0zjZcMVaokx7IAtjX41lxqO5H5YsJCRCaja13p04dN+0XRzRbasEFO6bUV5lDbicwXExYiMon0dODHH+U2B9sWrX592fWRnQ1ERSkdjWn17w+cPw/ExQErVsj7hAQmK8SEhYhMZPVqICUFqFMH6NJF6WjMn67LbMkSmbjYEqVrO5F5YsJCRKVibL0XXXfQhAlyrREq2jPPAG5usor1X38pHQ2R8vhng4iMZmy9l0OHZBXiSpWA0aNNGanlcnGRLQyAbQ2+JSoMExYiMkpp6r3oWlf69weqV6/4GK2Fbk2Wn38Gbt9WNhYipTFhIaISK029l7t3geXL5fZzz1V4iFalZUsgOBjIyJADUIlsGRMWIiqx0tR7WbFCViB+5BE5gJJKTqXKGXzLbiGydUxYiKjEjK33IkROd9BzzxW+iikVbtgwwMFBjgM6eFDpaIiUw4SFiErM2Hov//wjP2g1mpzVW8k4np5Av35ym60sZMuYsBBRiRlb72XRInk/YID84KXS0XULLV8uq10T2SImLERUYsbUe0lJAVatkvs42LZsunQBatWS72lhU8eJrB0TFiIySknrvSxbBty7BzRuDLRvb/o4rYmdXc76NewWIlulEqKgCYqWJTU1FR4eHkhJSYG7u7vS4RDZBK1WzgZKTJRjVkJDc5ZQFwJo2lRWZ543D3j5ZWVjtQYXL8rF+YQAzpwBgoKUjoio7Iz5/GYLCxGVSlH1XvbskcmKkxMwfLhSEVqXmjWBrl3l9pIlysZCpAQmLERU7nSDbQcNAipXVjQUq6IbfBsVBWRlKRoKkcmVKmFZsGABAgMD4ejoiDZt2mDfvn2FHtupUyeoVKp8t549e+qPSUtLw8SJE+Hv7w8nJyc0atQIi3R/8YjIoty6Bfz0k9zmYNvy9dRTcrbV1avApk1KR0NkWkYnLKtXr8bkyZMxc+ZMHDx4ECEhIQgPD8e1a9cKPD46OhqJiYn6W3x8PNRqNQYMGKA/ZvLkydi4cSOWLVuGEydOYNKkSZg4cSJ+++230r8yIlLEDz/IpeSbNQNat1Y6Guui0QAjRsjt775TNhYiUzM6YZkzZw7Gjx+P0aNH61tCnJ2dsaSQTtWqVavCx8dHf4uJiYGzs7NBwrJ7926MHDkSnTp1QmBgICZMmICQkJAiW26IyPwIkdMdxJVtK4auW+iPP4DkZGVjITIloxKWzMxMHDhwAGFhYTknsLNDWFgY9uzZU6JzREZGYtCgQXBxcdHva9euHX777TdcuXIFQgjExcXh1KlT6KobYZZHRkYGUlNTDW5EpLzt24GTJwFXV2DoUKWjsU6NGwNt2sgxLD/8oHQ0RKZjVMJy48YNaLVaeHt7G+z39vZGUlJSsc/ft28f4uPjMU5XM/1/5s+fj0aNGsHf3x8ODg7o1q0bFixYgA4dOhR4ntmzZ8PDw0N/CwgIMOZlEFEF0bWuDBkCuLkpG4s1y10Q0fIXpiAqGZPOEoqMjERwcDBa5+nYnj9/Pv7++2/89ttvOHDgAL744gu89NJL2LJlS4HnmT59OlJSUvS3S5cumSJ8IirC9evAL7/IbQ62rViDBgEuLrI1a9cupaMhMg17Yw728vKCWq1Gcp6O0+TkZPj4+BT53PT0dKxatQqzZs0y2H///n289dZbWLt2rX7mUNOmTXH48GF8/vnnBt1POhqNBhqNxpjQiaiCRUUBDx8CrVoBjz6qdDTWzc0NePZZ4PvvZSvL448rHRFRxTOqhcXBwQEtWrRAbGysfl92djZiY2PRtm3bIp+7Zs0aZGRkYNiwYQb7Hz58iIcPH8LOzjAUtVqN7OxsY8IjIoVkZwPffCO32bpiGrpuoZ9+AjiMj2yB0V1CkydPxuLFi7F06VKcOHECL7zwAtLT0zH6f4UuRowYgenTp+d7XmRkJPr27QvPPCVb3d3d0bFjR0ydOhXbtm1DQkICoqKi8MMPP6CfrqY6EZm1rVuBs2cBd3fZXUEVr107oH59Wa9p9WqloyGqeEZ1CQHAwIEDcf36dURERCApKQnNmjXDxo0b9QNxL168mK+15OTJk9i5cyc2b95c4DlXrVqF6dOnY+jQobh16xZq1aqFDz/8EM8//3wpXhIRmZqudWX4cDm2giqeSgWMGwdMnSrXZBk/XumIiCoWix8SUZkkJQEBAXKa7dGjQHCw0hHZjmvXZNXsrCzg2DGgSROlIyIyDosfEpHJLFkiPzDbtWOyYmrVqwO9e8vtyEhlYyGqaExYiKjUtFrg22/lNgfbKkM3+PbHH2VJBCJrxYSFiEpt82bgwgWgShUgV7UNMqHwcNktdPMm8OuvSkdDVHGYsBBRqQgBfPaZ3B4xAnByUjYeW2VvD4waJbfZLUTWjAkLWQytFti2DVi5Ut5rtUpHZNs2bQLi4gAHB+C115SOxraNGSPvY2JkixeRNWLCQhYhOhoIDAQ6d5Z1ajp3lo+jo5WOzDZlZwNvvim3X34ZqFVL2XhsXZ068ndCCLniMJE1YsJCZi86GnjmGeDyZcP9V67I/UxaTG/FCjmF2cMDKGCdSFKAbvDtkiVsfSTrxISFzJpWC7z6asEVaXX7Jk3iH2hTysgAZsyQ29OmAXkWryaF9O8PVK4MXLwI5KqeQmQ1mLCQWduxI3/LSm5CAJcuyePINBYtAs6fB/z8gFdeUToa0nFyAoYOldvjxvF3gqwPExYya4mJ5XsclU1KCvD++3L73XcBZ2dFw6E8pk0DgoJkEt+pEzBzplzUj8gaMGEhs+brW77HUdl8/rlc76N+feB/9U7JjPj7A4cOyWnm2dnArFkyceHMIbIGTFjIrIWGyj/CKlXBX1epZB2b0FDTxmWLEhOBOXPk9uzZcv0PMj9ubsDSpcDy5XJ71y4gJAT46SelIyMqGyYsZNbUauCrr+R23qRF93juXHkcVaxZs4B794DHHgP69lU6GirOkCHA4cNAmzayK2/gQDmTKC1N6ciISocJC5m9/v2Bn3+Wy4/n5u8v9/fvr0xctuTUKWDxYrn9ySeFt3iRealTRw6+fftt+T1bsgRo0QI4eFDpyIiMpxKioAmjlsWY8tRkubRa+cc3MVGOWQkNZcuKqTz7LLBmDdCzJ/DHH0pHQ6WxbRswbJhcv6hSJdmt99prgB3/bSUFGfP5zYSFiIq0b5/sVlCpgCNHgOBgpSOi0rp5U055XrdOPu7aVY538fFRNCyyYcZ8fjO3JqJCCZGzBP+IEUxWLJ2np1wZeuFCwNFRVtsOCQE2bFA6MqLiMWEpxt27wLlzSkdBpIxNm2RXgkYjB92S5VOpgOefB/75Ryag164BPXrI7qGMDKWjIyocE5YinD8PtG0LdOsG3LmjdDREppW7wOHEiUDNmsrGQ+WrcWPZ3ffyy/Lx3LlyBth//ykaFlGhmLAUwcVFTgE8fVpOEWS9GrIlLHBo/RwdgXnzgN9/B7y85DToFi2A774ruH4XkZKYsBShWjU5OM3JSfbxvvOO0hERmQYLHNqWXr3kgOouXeRaO+PHy5lht28rHRlRDiYsxWjWTK5dAAAffwysXq1oOEQmwQKHtsfPTw7C/eQTuYrxzz/LAbksokjmgglLCQwaBLzxhtwePVo2mxJZKxY4tF12dvJv3e7dLKJI5ocJSwl99JEcfHv/vlyW/MYNpSMqOa1WzvRYuVLeW/JYnK++kk3VlvT+WxoWOKRWrVhEkcwPE5YSUqvlIMS6deUv7bPPAg8fKh1V8aKjgcBAoHNnOXC4c2f5ODpa6ciMN38+MGmSXHF1wgQOCqwILHBIOiyiSOaGCYsRqlQBfv0VcHUF4uKAKVOUjqho0dHAM88Aly8b7r9yRe63pKRl7Vrg1VcNH//wg3LxWCsWOKS8WESRzAUTFiM1agQsWya3580Dvv9e2XgKo9XKD/iCWiF0+yZNsozuoT175B9NIYDnnpP/+QNy/Yjz5xUNzaqwwCEVhkUUyRwwYSmFPn3kYERArhi5d6+i4RRox478LSu5CSEH1Jn7DIBTp4DevYEHD+TUy6+/BqZOBdq3l6sQjxol+9ip7N55RyawPXsCHTooHQ2Zm0qVgA8+ALZulZXTT52SLXFffMHfQTINJiylNGOGbDLPzAT695d9/+akpPGYW9y5XbsGdO8uB4C2agWsWiXHVKjVsm/dxQX46y/gyy+VjtTy7dsnxwapVDktWEQF6dRJrtnSt68cxzdlivw9TUpSOjKydkxYSsnOTo6haNQIuHoVePpp86rD4etbvseZWnq6bFE5d042R//+u0xQdIKC5FLiAPDWW0B8vCJhWgUWOCRjsYgiKYEJSxm4uclBuJUry3EWEyeaz8yV0FDA37/wcQgqFRAQII8zN1lZcu2b/fvlH8YNGwBv7/zHjR0ru4syM4Fhw8wrYbQkLHBIpcEiimRqTFjKqG5d2VVhZyfrbyxcqHREklot1ywB8ictusdz58rjzIkQMvH74w/5n9tvvwGPPFLwsSqVHCTq5SWbqHXjiqjksrPl0vsACxxS6bCIIpkKE5ZyEB4ul+0H5Myc7duVjUenf3+5vHaNGob7/f3l/v79lYmrKB9/DHzzjUxGVqwA2rUr+nhvb+Dbb+X2p5/KtSKo5FaulMkeCxxSWbCIIpmCSgjL/3FKTU2Fh4cHUlJS4O7urkgMQgBDh8oPgGrVZDOpufy3qtXK2UCJiXLMSmio+bWsAHK6+PDhcnvevJz/2Epi9GggKkqOdzl8WHbXmStz+X5kZAANGsip4bNn57S0EJXF1atyLFRsrHz8zDPyn4oqVZSNi0pPCPnPeIsWwIAB5Vuuw6jPb2EFUlJSBACRkpKiaBzp6UI0by4EIMSjj8rHVDKxsUJUqiTfuylTjH9+SooQtWrJ548fX+7hlZtffhHC31/Gqbv5+8v9pjZ3rry+nx9/Vql8abVCfPKJEPb28mcsIECI7duVjopK69Qp+X2sVEmIu3fL99zGfH6zS6gcOTvLFVi9vOSCSuPHszm0JI4dA/r1k1MkBw6Ui5YZy91dTnXWjWv5/ffyj7OszGnlYRY4pIrEIorWZdMmef/443Kld6UwYSlntWrJ8SH29nIMhq4uCxXs8mW5hkNqqlysLCpK/rErjY4dgcmT5fa4ccD16+UWZpmZ28rDLHBIpsAiitZBl7B07apsHKX6aFiwYAECAwPh6OiINm3aYN++fYUe26lTJ6hUqny3nj176o8p6OsqlQqfffZZacJTXMeOOWuEvPGGXKOA8ktJkdMgr1wBGjYE1q2Tg/fK4oMPgCZN5BTL554znxYuc1p5mAUOyZRYRNGyZWbK2nmAnGCiJKMTltWrV2Py5MmYOXMmDh48iJCQEISHh+PatWsFHh8dHY3ExET9LT4+Hmq1GgMGDNAfk/vriYmJWLJkCVQqFZ5++unSvzKFvfgiMGaM/K9i0CDg7FmlIzIvmZlysb1jxwAfH7nWSnkMynN0BH78US4jbk4FEs1p5WEWOCQlsIiiZdq9Wy7kWb26TDQVZewAmdatW4uXXnpJ/1ir1Qo/Pz8xe/bsEj3/yy+/FG5ubiItLa3QY/r06SOeeOKJQr/+4MEDkZKSor9dunTJLAbd5vXggRCPPSYHKzVuLERqqtIRmYfsbCGGDZPvi6urEAcPlv81Zs+W53dzEyIhofzPb6y4OMOBtoXd4uIqNo6TJ4VQq+W1/vqrYq9FVJDMTCHeflsIlUr+HD7yiBAHDigdFRVm2jT5fRo2rGLOb8ygW6MSloyMDKFWq8XatWsN9o8YMUI89dRTJTpHkyZNxPgipnEkJSUJe3t7sXz58kKPmTlzpgCQ72ZuCYsQQly5IoSvr/yG9+snR8/burfeku+HWi3Exo0Vc42sLCHat5fX6dhR+fc9K0vOBtL9kc57U6nkTIqsrIqNY8AAeb2ePSv2OkTFiYsTokaNnNknn3+u/O8p5aeb+frjjxVz/gqbJXTjxg1otVp451kn3dvbG0klqHy1b98+xMfHY9y4cYUes3TpUri5uaF/EauaTZ8+HSkpKfrbpUuXSv4iTMzPT87+cHCQXRQffqh0RMr65hvgo4/k9uLFFdcnam4FEs1h5WEWOCRzwiKK5i85WQ6aBpQfcAuYeJZQZGQkgoOD0bp160KPWbJkCYYOHQrHIkZfajQauLu7G9zM2WOP5SzZHxEhl5u3RX/8Icf2AHIqbUXPTjG3AolKrjzMAodkjlhE0bzFxMj75s3lGBalGZWweHl5Qa1WIzk52WB/cnIyfHx8inxueno6Vq1ahbFjxxZ6zI4dO3Dy5MkiW2As1ZgxslYLIAv1nTihbDymtn+/HGSXnS3fi4gI01zX3Aok9u8vV5aNi5PT3uPigISEii+TwAKHZK5YRNF86aYzKz07SMeohMXBwQEtWrRArG7NZQDZ2dmIjY1F27Zti3zumjVrkJGRgWHDhhV6TGRkJFq0aIEQxYciV4w5c2Qz6N27QJ8+wJ07SkdkGmfPAj17ypkp4eHAokWFV5Eub+ZYIFGtlj8HgwfL+4pelp8FDskSFFRE8fnnFQ3JpmVn5yzJYS4Ji9GzhFatWiU0Go2IiooSx48fFxMmTBCVK1cWSUlJQgghhg8fLqZNm5bveY8//rgYOHBgkQNvnJ2dxcKFC40NyWyW5i+Ja9eEqFlTDmLq3r3iB1kq7fp1IerVk6+3eXPlZkpFR8sY7OyE2LlTmRiUsmyZfO0eHkLcuKF0NETFW7VK/sw6Owtx/77S0dimgwfl98DFRYiMjIq7ToUuzT9w4EB8/vnniIiIQLNmzXD48GFs3LhRPxD34sWLSMyzmMTJkyexc+fOIruDVq1aBSEEBg8ebGxIFqVaNblAmpOT7Kd95x2lI6o49+8DTz0FnD4tVwBev165ooT9+gEjR8r/GkaMkK1ctiAjI+dnbNo0OWaAyNw9+6wc63XvnuzKJNPTdQd17iwnjZiFisubTMeSWlh0VqzImdK6apXS0ZS/rCw5jRsQonJlIY4fVzoiIe7cySmQOG6c0tGYBgsckqUaP17+7E6cqHQktqlzZ/n+z59fsddh8UMLMHiwXLYfkLNlDh9WNJxyJYQcMLd2rczMf/tNLr2vNA+PnAKJ331nngUSyxMLHJIl69VL3q9fbz4lNmxFWhqwc6fcNpvxK2DxQ0V99JH8Ybh/X65FcOOG0hGVjzlzgPnz5faPPwKhocrGk5s5F0gsbyxwSJasSxc5qy0hAfjvP6WjsS3btsm1cWrXBurWVTqaHExYFKRWAytXyh+ICxdkv+3Dh0pHVTarV8sFoADgiy/kazI3uQskTphgnf+9scAhWToXFzmLDpCtLGQ6uaczm2pGZ0kwYVFYlSpyEK6rq1yTQ/dhb4m2b5cDWgHglVdkt5A5yl0gcd062U1kbd5/nwUOyfL17Cnv//hD2Thsjbmtv6LDhMUMNG4MLFsmt+fNA77/Xtl4SuP4cbm2TGamXARtzhzzyszzatYsZwG1V16Ri7lZi1OngG+/lduffGLe3weiougSlp07bWfdKqUlJMiZnfb2wBNPKB2NISYsZqJPn5xFzZ5/Hti7V9FwjHL1qqwBcucO0K6dTL4qejG08jB1KtC+vZziPGqUnPJsDd55B9Bq5R/7Dh2Ujoao9OrUkQP2tdqcRcyoYulaV9q2Bcyt6g0TFjMyY4Zsvte1UuRZzsYs3b0rPxgvXgQeeQT49Ve5xowlMLcCieWBBQ7J2uhaWTiOxTTMtTsIYMJiVuzsgB9+ABo1kq0WTz9t3rU0Hj4EBgyQU7KrV5cL4Xl5KR2VcfIWSDx2TNFwyoQFDska6RKWDRtkSwtVnIcPAV3lHXOozpwXExYz4+YmWykqVwb27JG1X8xxFosQwHPPyWzc2Vn+91OnjtJRlU7uAonDh5t3klgUFjgka9S+vVxD6fp1WUSVKs7evbLV3NMTePRRpaPJjwmLGapbF1i1Sra4fPedLBZobmbNkoOD7eyAn34CWrZUOqLSM8cCicZigUOyVpUq5fy3z26hiqXrDnrySfMch8iExUyFh+eMQXjlFTll2FwsWZLzob5wYU6TrSXz9s6ZWfPppzmrPFqKlStlsuXhAUyfrnQ0ROUr96q3VHHMefwKwITFrE2dKpfwz8oCnnlGDmxV2saNcrE1AHj77Zxta2CpBRJzFzh8800WOCTr0727bAk9dEiO76Pyd+MG8M8/ctscx68ATFjMmq7mTfPmsv+2Xz+5GJhSDh6Ug2y1WjnWQ1enxpp89ZWsLJ2QkLOEv7lbtEiuI+PrC7z6qtLREJW/atWA1q3l9p9/KhuLtdqyRY5NDA4G/PyUjqZgTFjMnLOzLCLo5SUTBqWWkj9/Xnb9pKXJGh/ffWedC5JZWoHE3AUO33uPBQ7JenHV24pl7t1BABOWImm1ctbFypXyXqkpdbVqybU11Gpg+fKcGjGmcusW0KMHkJQENG0K/PKLrMJsrSypQCILHJKt0CUsW7ZY7kw+cyVEzsJ8TFgsUHQ0EBgIdO4MDBki7wMD5X4ldOqUs17IG2+YbtXHBw/kYnYnTgD+/rI51sPDNNdWkiUUSGSBQ7IlzZvLror0dLnQI5Wf+Hg5NsjJCXj8caWjKRwTlgJER8tBrpcvG+6/ckXuVyppeeklYMwYOSh00CDg7NmKvV52thyEumOHTFI2bABq1KjYa5oLSyiQyAKHZEtUKtnSC3C2UHnTdQd17Cj/9pkrJix5aLVy4GJB/1Hr9k2apEz3kEoF/N//yQ+o27dl/aG0tIq73htvyDVWKlWS42iaNKm4a5kjcy6QyAKHZItyL9Nvjq2elsoSuoMAJiz57NiRv2UlNyGAS5fkcUrQaOQYEl9f4N9/c6bhlrd584AvvpDbUVGyS8wW5S6QOHKk+SwNzgKHZIvCwuT4ubNnZdJOZXfvXs46X0xYLExJCw4qWZjQz092Szk4yPsPPyzf80dHy1YkQI6NGDKkfM9vSXIXSNy+3TwKJLLAIdkqV1fZbQFwtlB52b5dDmIOCAAaNFA6mqIxYcnD17d8j6sojz0mV5kFgIgI4Lffyue8u3cDQ4fKlqQXXsgppmfLgoJyEpW331a2QCILHJKtY/Xm8pV7OrO5dy0zYckjNFTOhinsG6dSyUw0NNS0cRVkzBhZNwYAhg2TM3nK4uRJWQTwwQPgqaeA+fPN/wfYVMaNk8uDK10gkQUOydbplunfsUOuQ0RlYwnrr+gwYclDrZarnQL5P6x1j+fONZ/CUHPmyCbSu3flINw7d0p3nuRkufz1rVtyRcmVK83nNZoD3UJyShZIZIFDItniWb++LFkSE6N0NJbt0iX5j66dnVwQ1NwxYSlA//7Azz/nn8Lr7y/39++vTFwFqVRJjmeoWRM4fVqONzF2YGh6uvyvJSFB/jH4/XeumFqQ3AUSP/nE9AUSWeCQSGK3UPnQta60aQNUqaJsLCXBhKUQ/fvLaaxxccCKFfI+IcG8khWdatXkWiFOTnKtFF0hvJLIygIGDpRFr7y85POrV6+wUC2erkCiEKYtkMgCh0Q5dAnLn39WzCxJW2FJ3UEAE5YiqdVyhdnBg+W9OXeRNG8OREbK7Y8/BlavLv45QsjF6Navl4sF/f47UK9excZpDZQokMgCh0Q5Hn8ccHOTK1HrKgyTcbKyZJkDwHyrM+fFhMWKDB4s1w0BZF2ZI0eKPn72bNnFoVLJ7obHHqv4GK2BqQskssAhkSEHh5xWAXYLlc4//8gxj5UrA61aKR1NyTBhsTKzZ8tf5Pv35SDcGzcKPu7HH+UUXUDOBuLS7sYxZYFEFjgkyo/jWMpG1x0UFmY5dciYsFgZtVq2ltStC1y4ADz7LPDwoeExW7bIKdGAXH7/pZdMH6c1MEWBRBY4JCpY9+7y/sABZRfytFSWNn4FYMJilapUkYNwXV3lYOEpU3K+dvSoHDiclSULKHKl1NIzRYFEFjgkKpi3d05Xxp9/KhuLpbl9G9i7V24zYSHFNW4sP0wBWRcoKkrOue/RQ85s6dhR7rPjT0CZVGSBRBY4JCoau4VKJzZWzq5q2FAuhGop+HFlxfr2BWbOlNvPPy8XBrpyBWjUSLYIaDRKRmc9KqpAIgscEhVNt+ptTIxyq09bIkvsDgKYsFi9iAiZuGRkyIXlfH3lWiuVKysdmfWoiAKJLHBIVLzmzQEfHyAtTS7VT8UTggkLmSk7O+CHH2Rfb/Xqsq+XS7qXv/IskMgCh0QlY2cnu7kBdguV1H//yeEBGo3ltdwyYbEBbm7A338DFy/KMRdUMcqrQCILHBKVnG4cyx9/KBuHpdC1roSGWt6aTkxYbISdHcesVLS8BRJ144eMwQKHRMZ58kk5U+/MGTlQnYq2ebO8t7TuIKCUCcuCBQsQGBgIR0dHtGnTBvv27Sv02E6dOkGlUuW79dSlxf9z4sQJPPXUU/Dw8ICLiwtatWqFixcvliY8IsXkLpD46afGF0hkgUMi47i5yVmPALuFivPggWy9BWwkYVm9ejUmT56MmTNn4uDBgwgJCUF4eDiuXbtW4PHR0dFITEzU3+Lj46FWqzFgwAD9MWfPnsXjjz+OBg0aYNu2bTh69ChmzJgBR0fH0r8yIoWUtkAiCxwSlQ6nN5fMzp1yFXQ/P7nopcURRmrdurV46aWX9I+1Wq3w8/MTs2fPLtHzv/zyS+Hm5ibS0tL0+wYOHCiGDRtmbCh6KSkpAoBISUkp9TmIytOdO0LUrCkEIMS4cSV7zty58nhfXyHS0ys2PiJrcuqU/N2pVEkIfgwUbsoU+T6NGqV0JDmM+fw2qoUlMzMTBw4cQFhYmH6fnZ0dwsLCsGfPnhKdIzIyEoMGDYKLiwsAIDs7G+vXr8cjjzyC8PBwVK9eHW3atMG6desKPUdGRgZSU1MNbkTmxMNDzs7SjWv57beij2eBQ6LSq1dP3h4+lGuyUMEsdTqzjlEJy40bN6DVauHt7W2w39vbG0lJScU+f9++fYiPj8e4ceP0+65du4a0tDR8/PHH6NatGzZv3ox+/fqhf//++Ouvvwo8z+zZs+Hh4aG/BVjSUn1kM3IXSBw/vugCiSxwSFQ27BYq2tWrcrkFlUoOVLZEJp0lFBkZieDgYLRu3Vq/Lzs7GwDQp08fvPbaa2jWrBmmTZuGXr16YdGiRQWeZ/r06UhJSdHfLl26ZJL4iYxVkgKJSUkscEhUVrpVb//8U862I0O62UEtW1ru+DijEhYvLy+o1WokJycb7E9OToaPj0+Rz01PT8eqVaswduzYfOe0t7dHo0aNDPY3bNiw0FlCGo0G7u7uBjcic1SSAomzZrHAIVFZhYbKGUPJycDBg0pHY34svTsIMDJhcXBwQIsWLRAbG6vfl52djdjYWLRt27bI565ZswYZGRkYNmxYvnO2atUKJ0+eNNh/6tQp1KpVy5jwiMxSUQUSWeCQqHw4OOR0dbBbyJBWmzO2x2YSFgCYPHkyFi9ejKVLl+LEiRN44YUXkJ6ejtH/63gfMWIEphewgERkZCT69u0LzwLaoqZOnYrVq1dj8eLFOHPmDL7++mv8/vvvePHFF0vxkojMT2EFElngkKj8cNXbgh06JMfIubkBbdooHU3pGd1bPnDgQFy/fh0RERFISkpCs2bNsHHjRv1A3IsXL8LOzjAPOnnyJHbu3InNuk60PPr164dFixZh9uzZeOWVV1C/fn388ssvePzxx0vxkojMj65AYkhIToHEDh1Y4JCoPOnqCv3zjxwbVsxIBZuh6w7q0kV2T1sqlRAFDQO0LKmpqfDw8EBKSgrHs5BZW7xYDr51cAAaNACOHpUtLlFRSkdGZB1atgQOHACWLOGMO50OHWQ164ULgeefVzoaQ8Z8frOWEJEJ5S6QePQoCxwSlTfdbCGOY5FSUwHdMmmWPH4FYMJCZFIqlWxl8fKSj1ngkKh86caxbN4s/zGwdVu3AllZcmG92rWVjqZsmLAQmZiPj/zvb9o04N13lY6GyLq0aCGLkN69a3zxUWtkDdOZdZiwECmgdWs50NbVVelIiKyLnR3QvbvctvXZQkIwYSEiIjJbXKZfOnMGSEiQM4M6dVI6mrJjwkJERFala1dZ4uLUKfmhbat0rSuPP24drblMWIiIyKq4u+csxGjLrSy6pc+6dlU2jvLChIWIiKyOrXcLZWYCcXFy2xrGrwBMWIiIyArpEpZt2+SMIVuzezeQlgZUry5X2LYGTFiIiMjqPPIIEBQEPHwIbNmidDSmpxu/0rWrnDllDazkZRAREeVQqWx71Vtrms6sw4SFiIiskq5b6M8/5ZoktiI5WVZoBqxnwC3AhIWIiKxUhw6AiwuQmJjzAW4LYmLkffPmcgyLtWDCQkREVkmjAZ58Um7b0qq31tgdBDBhISIiK2Zr05uzs3PWX2HCQkREZCF69JD3+/cD164pG4spHD0qX6eLC9CundLRlC8mLEREZLX8/IBHH5WDbjdsUDqaiqfrDurcGXBwUDaW8saEhYiIrJotdQtZ6/gVgAkLERFZOV3CsmmTXEjOWqWlATt3ym0mLERERBamVSugWjUgNTXnA90abdsmE7LatYG6dZWOpvwxYSEiIqtmZ5cz+Naau4VydwepVMrGUhGYsBARkdWzhXEs1jx+BWDCQkRENqBrV8DeHvjvP+DsWaWjKX8JCcDp0/I1PvGE0tFUDCYsRERk9Tw8gMcfl9vW2Mqia11p2xZwd1c2lorChIWIiGyCNXcL6Va3taZih3kxYSEiIpvQq5e837ZNTgG2Fg8fArGxcttax68ATFiIiMhG1K8P1KkDZGbmfMBbg7175ZRtT0+5qq+1YsJCREQ2QaWyzm4h3fiVJ58E1GplY6lITFiIiMhm5E5YhFA2lvJi7dOZdZiwEBGRzejYEXB2Bq5eBQ4fVjqasrtxA/jnH7ltzQNuASYsRERkQxwdgbAwuW0N3UJbtsiWouBgWZnamjFhISIim6KbLWQNCYutdAcBTFiIiMjG6OoK7d0LXL+ubCxlIUTO+itMWIiIiKxMjRpAs2byA3/jRqWjKb1//5VjcZycclbxtWZMWIiIyOboZgv98YeycZSFrjuoY0c5NsfaMWEhIiKbo0tYNm2SK8VaIlsavwIwYSEiIhvUujXg5QWkpAC7dysdjfHu3QO2b5fbTFiKsGDBAgQGBsLR0RFt2rTBvn37Cj22U6dOUKlU+W49dektgFGjRuX7erdu3UoTGhERUbHUaqB7d7ltibOFtm8HMjKAgACgQQOlozENoxOW1atXY/LkyZg5cyYOHjyIkJAQhIeH49q1awUeHx0djcTERP0tPj4earUaAwYMMDiuW7duBsetXLmydK+IiIioBCx5mf7c3UEqlbKxmIrRCcucOXMwfvx4jB49Go0aNcKiRYvg7OyMJUuWFHh81apV4ePjo7/FxMTA2dk5X8Ki0WgMjqtSpUqhMWRkZCA1NdXgRkREZIzwcNnScvw4kJCgdDTGsbXxK4CRCUtmZiYOHDiAMN0ygQDs7OwQFhaGPXv2lOgckZGRGDRoEFxcXAz2b9u2DdWrV0f9+vXxwgsv4ObNm4WeY/bs2fDw8NDfAgICjHkZREREqFwZaN9ebltSK8ulS8CJE4CdHdCli9LRmI5RCcuNGzeg1Wrh7e1tsN/b2xtJSUnFPn/fvn2Ij4/HuHHjDPZ369YNP/zwA2JjY/HJJ5/gr7/+Qvfu3aHVags8z/Tp05GSkqK/Xbp0yZiXQUREBMAyV73Vta60aQMU0RlhdexNebHIyEgEBwejdevWBvsHDRqk3w4ODkbTpk0RFBSEbdu2oUsB6aNGo4FGo6nweImIyLr17Am88QYQFwekpwN5Gv/Nki2tbpubUS0sXl5eUKvVSE5ONtifnJwMHx+fIp+bnp6OVatWYezYscVep06dOvDy8sKZM2eMCY+IiMgoDRsCgYFyxs3WrUpHUzytVhY8BKy/OnNeRiUsDg4OaNGiBWJjY/X7srOzERsbi7Zt2xb53DVr1iAjIwPDhg0r9jqXL1/GzZs34evra0x4RERERlGpLGvV2/37gdu35fibVq2Ujsa0jJ4lNHnyZCxevBhLly7FiRMn8MILLyA9PR2jR48GAIwYMQLTp0/P97zIyEj07dsXnp6eBvvT0tIwdepU/P333zh//jxiY2PRp08f1K1bF+G21t5FREQmp0tY/vxT1hcyZ7rxK2FhgL1JB3Uoz+iXO3DgQFy/fh0RERFISkpCs2bNsHHjRv1A3IsXL8LOzjAPOnnyJHbu3InNuo63XNRqNY4ePYqlS5fizp078PPzQ9euXfH+++9znAoREVW4zp0BZ2fg8mXg6FEgJETpiApni9OZdVRCmHs+WbzU1FR4eHggJSUF7u7uSodDREQW5qmngN9/Bz78EHjrLaWjKdjt27KcQHY2cPGiXOXW0hnz+c1aQkREZPMsYdXb2FiZrDRsaB3JirGYsBARkc3r0UPe79kD3LihbCyFseXuIIAJCxEREQICgKZN5aDbjRuVjiY/IZiwMGEhIiKCea96e/KkXJJfowE6dFA6GmUwYSEiIkLOOJaNG4GsLGVjyUvXuhIaKmc02SImLERERJC1eTw9gTt35FgWc2Lr3UEAExYiIiIAgFoNdOsmt82pW+jBA2DbNrnNhIWIiIjMcpn+nTuB+/cBPz+gSROlo1EOExYiIqL/CQ8H7OyAf/8FLlxQOhpJ1x3UtausfWSrmLAQERH9T9WqQPv2cttcuoU4fkViwkJERJSLOa16e/UqcOyYbFl58kmlo1EWExYiIqJcdAnL1q3AvXvKxqKrGdyypZzBZMuYsBAREeXSuDFQs6acnbN1q7Kx6BIWW+8OApiwEBERGVCpzKNbKDsbiImR2127KheHuWDCQkRElEfuZfqFUCaGgwdlIUY3N+Cxx5SJwZwwYSEiIsqjc2fAyUnW74mPVyYG3eygLl2ASpWUicGcMGEhIiLKw8kJeOIJua1UtxCnMxtiwkJERFQAJVe9TU3NqWfEhEViwkJERFQAXcKyZw9w86Zpr711q6wYXa8eULu2aa9trpiwEBERFaBmTSA4WM7W0XXPmAq7g/JjwkJERFQIJaY3C8GEpSBMWIiIiAqhS1g2bpRdNKZw9iyQkCBnBnXqZJprWgImLERERIV47DGgShXg1i3g779Nc01d60r79oCrq2muaQmYsBARERXC3h7o1k1um6pbiN1BBWPCQkREVITcq95WtMxMIC5ObjNhMcSEhYiIqAjdugF2dsCxY8DFixV7rd27gbQ0oHp1ICSkYq9laZiwEBERFaFqVaBtW7n9558Vey1dd1DXrjJJohx8O4iIiIphqlVvOX6lcExYiIiIiqFLWLZuBe7fr5hrJCcDhw7J7a5dK+YalowJCxERUTGCg4GAAJms6AbFlreYGHnfvLkcw0KGmLAQEREVQ6Wq+FVvN2+W9+wOKhgTFiIiohLInbAIUb7nzs5mwlIcJixEREQl8MQTgKMjcOECcPx4+Z776FE5hsXFBWjXrnzPbS2YsBAREZWAszPQubPcLu/ZQrrZQZ07Aw4O5Xtua8GEhYiIqIQqatVbTmcuHhMWIiKiEtKNY9m9G7h9u3zOmZYG7Nwpt5mwFK5UCcuCBQsQGBgIR0dHtGnTBvv27Sv02E6dOkGlUuW79dR91/N4/vnnoVKpMHfu3NKERkREVGFq1QIaNwa02pxWkbLatg14+BCoXRuoW7d8zmmNjE5YVq9ejcmTJ2PmzJk4ePAgQkJCEB4ejmvXrhV4fHR0NBITE/W3+Ph4qNVqDBgwIN+xa9euxd9//w0/Pz/jXwkREZEJlPf05tzdQSpV+ZzTGhmdsMyZMwfjx4/H6NGj0ahRIyxatAjOzs5YsmRJgcdXrVoVPj4++ltMTAycnZ3zJSxXrlzByy+/jOXLl6NSpUqlezVEREQVTJewbNggW1rKiuNXSsaohCUzMxMHDhxAWFhYzgns7BAWFoY9e/aU6ByRkZEYNGgQXFxc9Puys7MxfPhwTJ06FY0bNy72HBkZGUhNTTW4ERERmUK7dkDlysDNm8DevWU7V0ICcPo0YG8vp01T4YxKWG7cuAGtVgtvb2+D/d7e3khKSir2+fv27UN8fDzGjRtnsP+TTz6Bvb09XnnllRLFMXv2bHh4eOhvAQEBJX8RREREZWBvD3TrJrfL2i2kWyyubVvA3b1s57J2Jp0lFBkZieDgYLRu3Vq/78CBA/jqq68QFRUFVQk776ZPn46UlBT97dKlSxUVMhERUT7lNY5F1x3EYofFMyph8fLyglqtRnJyssH+5ORk+Pj4FPnc9PR0rFq1CmPHjjXYv2PHDly7dg01a9aEvb097O3tceHCBbz++usIDAws8FwajQbu7u4GNyIiIlPp1k0OkD1yBLh8uXTnePgQiI2V2xy/UjyjEhYHBwe0aNECsbp3GHL8SWxsLNq2bVvkc9esWYOMjAwMGzbMYP/w4cNx9OhRHD58WH/z8/PD1KlTsam85owRERGVIy8v4LHH5HZpW1n27gVSUwFPT+DRR8svNmtlb+wTJk+ejJEjR6Jly5Zo3bo15s6di/T0dIwePRoAMGLECNSoUQOzZ882eF5kZCT69u0LT09Pg/2enp759lWqVAk+Pj6oX7++seERERGZRM+ewJ49MmF57jnjn6/7n/zJJwG1unxjs0ZGJywDBw7E9evXERERgaSkJDRr1gwbN27UD8S9ePEi7OwMG25OnjyJnTt3YrNudBEREZGF69ULeOcd2a3z4IEsjGgMTmc2jkqI8i6SbXqpqanw8PBASkoKx7MQEZFJCAHUrCnHsGzYkDNzqCRu3ACqV5fnuHIFsNX1Uo35/GYtISIiolJQqYAePeS2seNYtmyRyUpwsO0mK8ZiwkJERFRKuunNf/whE5CS0o2QYHdQyTFhISIiKqUuXQCNBjh/HjhxomTPEYLjV0qDCQsREVEpubgAnTvL7ZJ2C/37L3D1KuDkBDz+eMXFZm2YsBAREZWBsave6lpXOnY0fmaRLWPCQkREVAa6hGXnTuDOneKPZ3dQ6TBhISIiKoPatYGGDQGtNicZKcy9e8D27XKbCYtxmLAQERGVUUm7hbZvBzIygIAAoEGDio/LmjBhISIiKqNeveT9hg2ypaUwubuDVKqKj8uaMGEhIiIqo3btAA8PuYLt/v2FH8fxK6XHhIWIiKiMKlXKSUIK6xa6dEmu1WJnJ9dvIeMwYSEiIioHxY1j0a1u26YNUKWKaWKyJkxYiIiIykH37nJcyqFDsqBhXrruoK5dTRuXtWDCQkREVA6qVZOtJwDw55+GX9NqZcFDgONXSosJCxERUTkprFto/37g9m2gcmWgVSuTh2UVmLAQERGVE13CsmWLXG9FR9cdFBYG2NubPi5rwISFiIionDRrBvj5AenpwF9/5ezndOayY8JCRERUTlQqoEcPuf3HH/L+9m1g7165zYSl9JiwEBERlaPc41iEAGJjgexsWW8oIEDZ2CwZExYiIqJyFBYGODgA584BJ0/mrL/C1pWyYcJCRERUjlxdgU6d5Pb69Ry/Ul6YsBAREZUzXbfQ118DFy8CGg3QoYOyMVk6JixERETlTJewnD8v70NDAWdnxcKxCkxYiIiIyllQEFC/fs5jdgeVHRMWIiKiCtCrV842E5ayY8JCRERUAfr0kfc1awJNmigbizXgAsFEREQVIDQUWL0aqFdPLihHZcOEhYiIqII8+6zSEVgPdgkRERGR2WPCQkRERGaPCQsRERGZPSYsREREZPaYsBAREZHZY8JCREREZo8JCxEREZk9JixERERk9kqVsCxYsACBgYFwdHREmzZtsG/fvkKP7dSpE1QqVb5bT10pSwDvvvsuGjRoABcXF1SpUgVhYWHYu3dvaUIjIiIiK2R0wrJ69WpMnjwZM2fOxMGDBxESEoLw8HBcu3atwOOjo6ORmJiov8XHx0OtVmPAgAH6Yx555BF8/fXXOHbsGHbu3InAwEB07doV169fL/0rIyIiIquhEkIIY57Qpk0btGrVCl9//TUAIDs7GwEBAXj55Zcxbdq0Yp8/d+5cREREIDExES4uLgUek5qaCg8PD2zZsgVdunQp9py641NSUuDu7m7MyyEiIiKFGPP5bVQLS2ZmJg4cOICwsLCcE9jZISwsDHv27CnROSIjIzFo0KBCk5XMzEx8++238PDwQEhISIHHZGRkIDU11eBGRERE1suohOXGjRvQarXw9vY22O/t7Y2kpKRin79v3z7Ex8dj3Lhx+b72xx9/wNXVFY6Ojvjyyy8RExMDLy+vAs8ze/ZseHh46G8BAQHGvAwiIiKyMCat1hwZGYng4GC0bt0639c6d+6Mw4cP48aNG1i8eDGeffZZ7N27F9WrV8937PTp0zF58mT945SUFNSsWZMtLURERBZE97ldktEpRiUsXl5eUKvVSE5ONtifnJwMHx+fIp+bnp6OVatWYdasWQV+3cXFBXXr1kXdunXx2GOPoV69eoiMjMT06dPzHavRaKDRaPSPdS+YLS1ERESW5+7du/Dw8CjyGKMSFgcHB7Ro0QKxsbHo27cvADnoNjY2FhMnTizyuWvWrEFGRgaGDRtWomtlZ2cjIyOjRMf6+fnh0qVLcHNzg0qlKtFzbE1qaioCAgJw6dIlDkw2A/x+mB9+T8wLvx/mpaK+H0II3L17F35+fsUea3SX0OTJkzFy5Ei0bNkSrVu3xty5c5Geno7Ro0cDAEaMGIEaNWpg9uzZBs+LjIxE37594enpabA/PT0dH374IZ566in4+vrixo0bWLBgAa5cuWIw9bkodnZ28Pf3N/al2CR3d3f+8psRfj/MD78n5oXfD/NSEd+P4lpWdIxOWAYOHIjr168jIiICSUlJaNasGTZu3KgfiHvx4kXY2RmO5T158iR27tyJzZs35zufWq3Gf//9h6VLl+LGjRvw9PREq1atsGPHDjRu3NjY8IiIiMgKGb0OC1kmrlVjXvj9MD/8npgXfj/Mizl8P1hLyEZoNBrMnDnTYLAyKYffD/PD74l54ffDvJjD94MtLERERGT22MJCREREZo8JCxEREZk9JixERERk9piwEBERkdljwkJERERmjwmLlZs9ezZatWoFNzc3VK9eHX379sXJkyeVDov+5+OPP4ZKpcKkSZOUDsVmXblyBcOGDYOnpyecnJwQHByMf/75R+mwbJJWq8WMGTNQu3ZtODk5ISgoCO+//36JCuNR+di+fTt69+4NPz8/qFQqrFu3zuDrQghERETA19cXTk5OCAsLw+nTp00SGxMWK/fXX3/hpZdewt9//42YmBg8fPgQXbt2RXp6utKh2bz9+/fjm2++QdOmTZUOxWbdvn0b7du3R6VKlbBhwwYcP34cX3zxBapUqaJ0aDbpk08+wcKFC/H111/jxIkT+OSTT/Dpp59i/vz5SodmM9LT0xESEoIFCxYU+PVPP/0U8+bNw6JFi7B37164uLggPDwcDx48qPDYuA6Ljbl+/TqqV6+Ov/76Cx06dFA6HJuVlpaGRx99FP/3f/+HDz74AM2aNcPcuXOVDsvmTJs2Dbt27cKOHTuUDoUA9OrVC97e3oiMjNTve/rpp+Hk5IRly5YpGJltUqlUWLt2rb7YsRACfn5+eP311zFlyhQAQEpKCry9vREVFYVBgwZVaDxsYbExKSkpAICqVasqHIlte+mll9CzZ0+EhYUpHYpN++2339CyZUsMGDAA1atXR/PmzbF48WKlw7JZ7dq1Q2xsLE6dOgUAOHLkCHbu3Inu3bsrHBkBQEJCApKSkgz+bnl4eKBNmzbYs2dPhV/f6OKHZLmys7MxadIktG/fHk2aNFE6HJu1atUqHDx4EPv371c6FJt37tw5LFy4EJMnT8Zbb72F/fv345VXXoGDgwNGjhypdHg2Z9q0aUhNTUWDBg2gVquh1Wrx4YcfYujQoUqHRgCSkpIAQF/sWMfb21v/tYrEhMWGvPTSS4iPj8fOnTuVDsVmXbp0Ca+++ipiYmLg6OiodDg2Lzs7Gy1btsRHH30EAGjevDni4+OxaNEiJiwK+Omnn7B8+XKsWLECjRs3xuHDhzFp0iT4+fnx+0HsErIVEydOxB9//IG4uDj4+/srHY7NOnDgAK5du4ZHH30U9vb2sLe3x19//YV58+bB3t4eWq1W6RBtiq+vLxo1amSwr2HDhrh48aJCEdm2qVOnYtq0aRg0aBCCg4MxfPhwvPbaa5g9e7bSoREAHx8fAEBycrLB/uTkZP3XKhITFisnhMDEiROxdu1abN26FbVr11Y6JJvWpUsXHDt2DIcPH9bfWrZsiaFDh+Lw4cNQq9VKh2hT2rdvn2+a/6lTp1CrVi2FIrJt9+7dg52d4ceSWq1Gdna2QhFRbrVr14aPjw9iY2P1+1JTU7F37160bdu2wq/PLiEr99JLL2HFihX49ddf4ebmpu9n9PDwgJOTk8LR2R43N7d844dcXFzg6enJcUUKeO2119CuXTt89NFHePbZZ7Fv3z58++23+Pbbb5UOzSb17t0bH374IWrWrInGjRvj0KFDmDNnDsaMGaN0aDYjLS0NZ86c0T9OSEjA4cOHUbVqVdSsWROTJk3CBx98gHr16qF27dqYMWMG/Pz89DOJKpQgqwagwNv333+vdGj0Px07dhSvvvqq0mHYrN9//100adJEaDQa0aBBA/Htt98qHZLNSk1NFa+++qqoWbOmcHR0FHXq1BFvv/22yMjIUDo0mxEXF1fgZ8bIkSOFEEJkZ2eLGTNmCG9vb6HRaESXLl3EyZMnTRIb12EhIiIis8cxLERERGT2mLAQERGR2WPCQkRERGaPCQsRERGZPSYsREREZPaYsBAREZHZY8JCREREZo8JCxEREZk9JixERERk9piwEBERkdljwkJERERm7/8BSwvEVMBcBpcAAAAASUVORK5CYII=", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "acc_aug = history.history['acc']\n", "val_acc_aug = history.history['val_acc']\n", "loss_aug = history.history['loss']\n", "val_loss_aug = history.history['val_loss']\n", "\n", "epochs_aug = range(1, len(acc) + 1)\n", "\n", "plt.plot(epochs_aug, acc_aug, 'bo', label='Training acc')\n", "plt.plot(epochs_aug, val_acc_aug, 'b', label='Validation acc')\n", "plt.title('Training and Validation Accuracy')\n", "plt.legend()\n", "\n", "plt.figure()\n", "\n", "plt.plot(epochs_aug, loss_aug, 'bo', label='Training loss')\n", "plt.plot(epochs_aug, val_loss_aug, 'b', label='Validation loss')\n", "plt.title('Training and Validation Loss')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "RWv-9sM6tNhO", "outputId": "4d798e3a-b07b-475d-f2ce-bfc7fd7e9315", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "0.4888812839984894" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "loss_mean_aug = np.mean(val_loss_aug)\n", "loss_mean_aug" ] }, { "cell_type": "markdown", "metadata": { "id": "UdgMRJaDtamu" }, "source": [ "- Answer for Question5: 0.48" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "N2DQ_1FptX8F", "outputId": "06ec0337-c632-4907-a6cf-9f62062258d4", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[0.8039215803146362,\n", " 0.7766884565353394,\n", " 0.7690631747245789,\n", " 0.7331154942512512,\n", " 0.7712418437004089]" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val_acc_aug[5:10]" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "kr_d1vNJt4Xq", "outputId": "aa21b69b-738d-4291-ab44-643ce99a3317", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "0.7708061099052429" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "acc_mean_aug = np.mean(val_acc_aug[5:10])\n", "acc_mean_aug" ] }, { "cell_type": "markdown", "metadata": { "id": "KHW34IatuQYO" }, "source": [ "Answer for Question6: 0.78" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "J9olPQHXB0nc" }, "outputs": [], "source": [] } ], "metadata": { "accelerator": "GPU", "colab": { "provenance": [] }, "gpuClass": "standard", "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.10.12" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: cohorts/2023/08-deep-learning/homework.md ================================================ ## Homework > **Note**: sometimes your answer doesn't match one of > the options exactly. That's fine. > Select the option that's closest to your solution. > If it's exactly in between two options, select the higher value. ### Dataset In this homework, we'll build a model for predicting if we have an image of a bee or a wasp. For this, we will use the "Bee or Wasp?" dataset that was obtained from [Kaggle](https://www.kaggle.com/datasets/jerzydziewierz/bee-vs-wasp) and slightly rebuilt. You can download the dataset for this homework from [here](https://github.com/SVizor42/ML_Zoomcamp/releases/download/bee-wasp-data/data.zip): ```bash wget https://github.com/SVizor42/ML_Zoomcamp/releases/download/bee-wasp-data/data.zip unzip data.zip ``` In the lectures we saw how to use a pre-trained neural network. In the homework, we'll train a much smaller model from scratch. > **Note:** you will need an environment with a GPU for this homework. We recommend to use [Saturn Cloud](https://bit.ly/saturn-mlzoomcamp). > You can also use a computer without a GPU (e.g. your laptop), but it will be slower. ### Data Preparation The dataset contains around 2500 images of bees and around 2100 images of wasps. The dataset contains separate folders for training and test sets. ### Model For this homework we will use Convolutional Neural Network (CNN). Like in the lectures, we'll use Keras. You need to develop the model with following structure: * The shape for input should be `(150, 150, 3)` * Next, create a convolutional layer ([`Conv2D`](https://keras.io/api/layers/convolution_layers/convolution2d/)): * Use 32 filters * Kernel size should be `(3, 3)` (that's the size of the filter) * Use `'relu'` as activation * Reduce the size of the feature map with max pooling ([`MaxPooling2D`](https://keras.io/api/layers/pooling_layers/max_pooling2d/)) * Set the pooling size to `(2, 2)` * Turn the multi-dimensional result into vectors using a [`Flatten`](https://keras.io/api/layers/reshaping_layers/flatten/) layer * Next, add a `Dense` layer with 64 neurons and `'relu'` activation * Finally, create the `Dense` layer with 1 neuron - this will be the output * The output layer should have an activation - use the appropriate activation for the binary classification case As optimizer use [`SGD`](https://keras.io/api/optimizers/sgd/) with the following parameters: * `SGD(lr=0.002, momentum=0.8)` For clarification about kernel size and max pooling, check [Office Hours](https://www.youtube.com/watch?v=1WRgdBTUaAc). ### Question 1 Since we have a binary classification problem, what is the best loss function for us? * `mean squared error` * `binary crossentropy` * `categorical crossentropy` * `cosine similarity` > **Note:** since we specify an activation for the output layer, we don't need to set `from_logits=True` ### Question 2 What's the number of parameters in the convolutional layer of our model? You can use the `summary` method for that. * 1 * 65 * 896 * 11214912 ### Generators and Training For the next two questions, use the following data generator for both train and test sets: ```python ImageDataGenerator(rescale=1./255) ``` * We don't need to do any additional pre-processing for the images. * When reading the data from train/test directories, check the `class_mode` parameter. Which value should it be for a binary classification problem? * Use `batch_size=20` * Use `shuffle=True` for both training and test sets. For training use `.fit()` with the following params: ```python model.fit( train_generator, epochs=10, validation_data=test_generator ) ``` ### Question 3 What is the median of training accuracy for all the epochs for this model? * 0.20 * 0.40 * 0.60 * 0.80 ### Question 4 What is the standard deviation of training loss for all the epochs for this model? * 0.031 * 0.061 * 0.091 * 0.131 ### Data Augmentation For the next two questions, we'll generate more data using data augmentations. Add the following augmentations to your training data generator: * `rotation_range=50,` * `width_shift_range=0.1,` * `height_shift_range=0.1,` * `zoom_range=0.1,` * `horizontal_flip=True,` * `fill_mode='nearest'` ### Question 5 Let's train our model for 10 more epochs using the same code as previously. > **Note:** make sure you don't re-create the model - we want to continue training the model we already started training. What is the mean of test loss for all the epochs for the model trained with augmentations? * 0.18 * 0.48 * 0.78 * 0.108 ### Question 6 What's the average of test accuracy for the last 5 epochs (from 6 to 10) for the model trained with augmentations? * 0.38 * 0.58 * 0.78 * 0.98 ## Submit the results - Submit your results here: https://forms.gle/5sjtM3kzY9TmLmU17 - If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. - You can submit your solution multiple times. In this case, only the last submission will be used ## Deadline The deadline for submitting is November 20 (Monday), 23:00 CET. After that the form will be closed. ================================================ FILE: cohorts/2023/09-serverless/homework.md ================================================ ## Homework In this homework, we'll deploy the bees vs wasps model we trained in the [previous homework](../08-deep-learning/homework.md). Download the model from here: https://github.com/alexeygrigorev/large-datasets/releases/download/wasps-bees/bees-wasps.h5 ## Question 1 Now convert this model from Keras to TF-Lite format. What's the size of the **converted** model? * 21 Mb * 43 Mb * 80 Mb * 164 Mb ## Question 2 To be able to use this model, we need to know the index of the input and the index of the output. What's the output index for this model? * 3 * 7 * 13 * 24 ## Preparing the image You'll need some code for downloading and resizing images. You can use this code: ```python from io import BytesIO from urllib import request from PIL import Image def download_image(url): with request.urlopen(url) as resp: buffer = resp.read() stream = BytesIO(buffer) img = Image.open(stream) return img def prepare_image(img, target_size): if img.mode != 'RGB': img = img.convert('RGB') img = img.resize(target_size, Image.NEAREST) return img ``` For that, you'll need to have `pillow` installed: ```bash pip install pillow ``` Let's download and resize this image: https://habrastorage.org/webt/rt/d9/dh/rtd9dhsmhwrdezeldzoqgijdg8a.jpeg Based on the previous homework, what should be the target size for the image? ## Question 3 Now we need to turn the image into numpy array and pre-process it. > Tip: Check the previous homework. What was the pre-processing > we did there? After the pre-processing, what's the value in the first pixel, the R channel? * 0.3450980 * 0.5450980 * 0.7450980 * 0.9450980 ## Question 4 Now let's apply this model to this image. What's the output of the model? * 0.258 * 0.458 * 0.658 * 0.858 ## Prepare the lambda code Now you need to copy all the code into a separate python file. You will need to use this file for the next two questions. Tip: you can test this file locally with `ipython` or Jupyter Notebook by importing the file and invoking the function from this file. ## Docker For the next two questions, we'll use a Docker image that we already prepared. This is the Dockerfile that we used for creating the image: ```docker FROM public.ecr.aws/lambda/python:3.10 COPY bees-wasps-v2.tflite . ``` And pushed it to [`agrigorev/zoomcamp-bees-wasps:v2`](https://hub.docker.com/r/agrigorev/zoomcamp-bees-wasps/tags). A few notes: * The image already contains a model and it's not the same model as the one we used for questions 1-4. * The version of Python is 3.10, so you need to use the right wheel for TF-Lite. For Tensorflow 2.14.0, it's https://github.com/alexeygrigorev/tflite-aws-lambda/raw/main/tflite/tflite_runtime-2.14.0-cp310-cp310-linux_x86_64.whl ## Question 5 Download the base image `agrigorev/zoomcamp-bees-wasps:v2`. You can easily make it by using [docker pull](https://docs.docker.com/engine/reference/commandline/pull/) command. So what's the size of this base image? * 162 Mb * 362 Mb * 662 Mb * 962 Mb You can get this information when running `docker images` - it'll be in the "SIZE" column. ## Question 6 Now let's extend this docker image, install all the required libraries and add the code for lambda. You don't need to include the model in the image. It's already included. The name of the file with the model is `bees-wasps-v2.tflite` and it's in the current workdir in the image (see the Dockerfile above for the reference). The provided model requires the same preprocessing for images regarding target size and rescaling the value range than used in homework 8. Now run the container locally. Score this image: https://habrastorage.org/webt/rt/d9/dh/rtd9dhsmhwrdezeldzoqgijdg8a.jpeg What's the output from the model? * 0.2453 * 0.4453 * 0.6453 * 0.8453 ## Publishing it to AWS Now you can deploy your model to AWS! * Publish your image to ECR * Create a lambda function in AWS, use the ECR image * Give it more RAM and increase the timeout * Test it * Expose the lambda function using API Gateway This is optional and not graded. ## Publishing to Docker hub This is just for reference, this is how we published our image to Docker hub: ```bash docker build -t zoomcamp-bees-wasps -f homework.dockerfile . docker tag zoomcamp-bees-wasps:latest agrigorev/zoomcamp-bees-wasps:v2 docker push agrigorev/zoomcamp-bees-wasps:v2 ``` ## Submit the results - Submit your results here: https://forms.gle/CrgtJVVs64DTGbCp9 - If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. - You can submit your solution multiple times. In this case, only the last submission will be used ## Deadline The deadline for submitting is November 27 (Monday), 23:00 CET. After that the form will be closed. ================================================ FILE: cohorts/2023/10-kubernetes/homework.md ================================================ ## Homework In this homework, we'll deploy the credit scoring model from the homework 5. We already have a docker image for this model - we'll use it for deploying the model to Kubernetes. ## Bulding the image Clone the course repo if you haven't: ``` git clone https://github.com/DataTalksClub/machine-learning-zoomcamp.git ``` Go to the `course-zoomcamp/cohorts/2023/05-deployment/homework` folder and execute the following: ```bash docker build -t zoomcamp-model:hw10 . ``` > **Note:** If you have troubles building the image, you can > use the image we built and published to docker hub: > `docker pull svizor/zoomcamp-model:hw10` ## Question 1 Run it to test that it's working locally: ```bash docker run -it --rm -p 9696:9696 zoomcamp-model:hw10 ``` And in another terminal, execute `q6_test.py` file: ```bash python q6_test.py ``` You should see this: ```python {'get_credit': True, 'get_credit_probability': } ``` Here `` is the probability of getting a credit card. You need to choose the right one. * 0.3269 * 0.5269 * 0.7269 * 0.9269 Now you can stop the container running in Docker. ## Installing `kubectl` and `kind` You need to install: * `kubectl` - https://kubernetes.io/docs/tasks/tools/ (you might already have it - check before installing) * `kind` - https://kind.sigs.k8s.io/docs/user/quick-start/ ## Question 2 What's the version of `kind` that you have? Use `kind --version` to find out. ## Creating a cluster Now let's create a cluster with `kind`: ```bash kind create cluster ``` And check with `kubectl` that it was successfully created: ```bash kubectl cluster-info ``` ## Question 3 Now let's test if everything works. Use `kubectl` to get the list of running services. What's `CLUSTER-IP` of the service that is already running there? ## Question 4 To be able to use the docker image we previously created (`zoomcamp-model:hw10`), we need to register it with `kind`. What's the command we need to run for that? * `kind create cluster` * `kind build node-image` * `kind load docker-image` * `kubectl apply` ## Question 5 Now let's create a deployment config (e.g. `deployment.yaml`): ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: credit spec: selector: matchLabels: app: credit replicas: 1 template: metadata: labels: app: credit spec: containers: - name: credit image: resources: requests: memory: "64Mi" cpu: "100m" limits: memory: cpu: ports: - containerPort: ``` Replace ``, ``, ``, `` with the correct values. What is the value for ``? Apply this deployment using the appropriate command and get a list of running Pods. You can see one running Pod. ## Question 6 Let's create a service for this deployment (`service.yaml`): ```yaml apiVersion: v1 kind: Service metadata: name: spec: type: LoadBalancer selector: app: ports: - port: 80 targetPort: ``` Fill it in. What do we need to write instead of ``? Apply this config file. ## Testing the service We can test our service locally by forwarding the port 9696 on our computer to the port 80 on the service: ```bash kubectl port-forward service/ 9696:80 ``` Run `q6_test.py` (from the homework 5) once again to verify that everything is working. You should get the same result as in Question 1. ## Autoscaling Now we're going to use a [HorizontalPodAutoscaler](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/) (HPA for short) that automatically updates a workload resource (such as our deployment), with the aim of automatically scaling the workload to match demand. Use the following command to create the HPA: ```bash kubectl autoscale deployment credit --name credit-hpa --cpu-percent=20 --min=1 --max=3 ``` You can check the current status of the new HPA by running: ```bash kubectl get hpa ``` The output should be similar to the next: ```bash NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE credit-hpa Deployment/credit 1%/20% 1 3 1 27s ``` `TARGET` column shows the average CPU consumption across all the Pods controlled by the corresponding deployment. Current CPU consumption is about 0% as there are no clients sending requests to the server. > >Note: In case the HPA instance doesn't run properly, try to install the latest Metrics Server release > from the `components.yaml` manifest: > ```bash > kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml >``` ## Increase the load Let's see how the autoscaler reacts to increasing the load. To do this, we can slightly modify the existing `q6_test.py` script by putting the operator that sends the request to the credit service into a loop. ```python while True: sleep(0.1) response = requests.post(url, json=client).json() print(response) ``` Now you can run this script. ## Question 7 (optional) Run `kubectl get hpa credit-hpa --watch` command to monitor how the autoscaler performs. Within a minute or so, you should see the higher CPU load; and then - more replicas. What was the maximum amount of the replicas during this test? * 1 * 2 * 3 * 4 > Note: It may take a few minutes to stabilize the number of replicas. Since the amount of load is not controlled > in any way it may happen that the final number of replicas will differ from initial. ## Submit the results * Submit your results here: https://forms.gle/35gEVapd3uBoExFW7 * You can submit your solution multiple times. In this case, only the last submission will be used * If your answer doesn't match options exactly, select the closest one ## Deadline The deadline for submitting is **4 December 2022 (Monday), 23:00 CET (Berlin time)**. After that, the form will be closed. ================================================ FILE: cohorts/2023/README.md ================================================ ## Machine Learning Zoomcamp 2023 * [Pre-course Q&A session](https://www.youtube.com/watch?v=a7phcSmuNY0) * [Launch stream with course overview](https://www.youtube.com/watch?v=OP_9LOOrsXw) * [FAQ](https://datatalks.club/faq/machine-learning-zoomcamp.html) * [Course Playlist: Only 2023 Live videos & homeworks](https://www.youtube.com/watch?v=a7phcSmuNY0&list=PL3MmuxUbc_hJo_PzMibLDcEGyazxYAtV0) * Leaderboard * [Private leaderboad](https://docs.google.com/spreadsheets/d/e/2PACX-1vSNK_yGtELX1RJK1SSRl4xiUbD0XZMYS6uwHnybc7Mql-WMnMgO7hHSu59w-1cE7FeFZjkopbh684UE/pubhtml) * [Public top-100 leaderboard](leaderboard.md) ### Syllabus [**1. Introduction to Machine Learning**](01-intro/) * [Module materials](../../01-intro) * [Homework](01-intro/homework.md) * Homework solution: * [Notebook](01-intro/homework_1.ipynb) [**2. Machine Learning for Regression**](02-regression/) * [Module materials](../../02-regression) * [Homework](02-regression/homework.md) * Homework solution: * [Notebook](02-regression/homework.ipynb) [**3. Machine Learning for Classification**](03-classification/) * [Module materials](../../03-classification) * [Homework](03-classification/homework.md) * Homework solution: * [Notebook](03-classification/homework_3.ipynb) [**4. Evaluation Metrics for Classification**](04-evaluation/) * [Module materials](../../04-evaluation) * [Homework](04-evaluation/homework.md) * Homework solution: * [Notebook](04-evaluation/homework.ipynb) [**5. Deploying Machine Learning Models**](05-deployment/) * [Module materials](../../05-deployment) * [Homework](05-deployment/homework.md) * Homework solution: * [Code](05-deployment/homework/) [**6. Decision Trees and Ensemble Learning**](06-trees/) * [Module materials](../../06-trees) * [Homework](06-trees/homework.md) * Homework solution: * [Notebook](06-trees/homework.ipynb) [**Midterm Project**](projects.md#midterm-project) * More information: [projects.md](projects.md#midterm-project) [**8. Neural Networks and Deep Learning**](08-deep-learning/) * [Module materials](../../08-deep-learning) * [Homework](08-deep-learning/homework.md) * Homework solution: * [Notebook](08-deep-learning/homework.ipynb) * Saturn Cloud * Sign up link: https://bit.ly/saturn-mlzoomcamp * Write in the chat "I’m participating in ML Zoomcamp" to get 150 hours of compute [**9. Serverless Deep Learning**](09-serverless/) * [Module materials](../../09-serverless) * [Homework](09-serverless/homework.md) * Homework solution: * TODO [**10. Kubernetes and TensorFlow Serving**](10-kubernetes/) * [Module materials](../../10-kubernetes) * [Homework](10-kubernetes/homework.md) * Homework solution: * TODO **11. KServe (optional)** * [Module materials](../../11-kserve) * No homework [**Capstone Project**](projects.md#capstone-1) * More information: [projects.md](projects.md#capstone-1) [**Capstone Project 2**](projects.md#capstone-2) * More information: [projects.md](projects.md#capstone-2) **[Article](article.md) (Optional)** * More information: [article.md](article.md) **Competition** [Competition](https://www.kaggle.com/competitions/dtc-zoomcamp-qa-challenge) Submit your progress and learning in public links [here](https://forms.gle/S3bSj7TSKVAcDfjPA) ================================================ FILE: cohorts/2023/article.md ================================================ ## Article (optional) The best way to learn about something - to teach it. In this part of the course, we'll explore some topics that weren't covered in the course. You'll need to learn about this topic and then write about what you learned in an article. [More information about articles](../../article/README.md) ## Submitting the results * Submit your article to [`#course-ml-zoomcamp-articles`](https://app.slack.com/client/T01ATQK62F8/C02QXBFS1PU) - just share the link to your article there * Submit the same link to [this form](https://forms.gle/Q5v2K19QitvzegoE9) so we could link it to your message from the channel ## Evaluating We'll use voting for scoring your articles. * Check the articles in the [`#course-ml-zoomcamp-articles`](https://app.slack.com/client/T01ATQK62F8/C02QXBFS1PU) channel and put a :+1: reaction to articles that you liked * The top voted articles will get 20 points ## Deadline The deadline for finishing the article is 31 January, 23:00 CET. ## Articles from 2023 * [A Learning Based Approach For Predicting Heart Disease by Oscar Garcia](https://www.ozkary.dev/ai-engineering-predicting-heart-disease-machine-learning/) * [Understanding Convolutional Layers in a Convolutional Neural Network](https://marcosbenicio.github.io/2023/11/27/cnn.html) by Marcos Benício * [From Pixels to Predictions: A Journey into Image Segmentation](https://knowmledge.com/2024/01/26/from-pixels-to-predictions-a-journey-into-image-segmentation/) by Peter Ernicke * Add your article above this line ### Past articles See examples of articles from the previous cohorts [here](../../article/README.md) ================================================ FILE: cohorts/2023/leaderboard.md ================================================ ## Leaderboard This is the top [100 leaderboard](https://docs.google.com/spreadsheets/d/e/2PACX-1vSNK_yGtELX1RJK1SSRl4xiUbD0XZMYS6uwHnybc7Mql-WMnMgO7hHSu59w-1cE7FeFZjkopbh684UE/pubhtml) of participants of Machine Learning Zoomcamp 2023 edition!
    Name Project Social Links and comments
    Rileen Sinha Project
    More info Links: > Kudos & a big thanks to Alexey, Timur & the DataTalks.Club team for this wonderful course, and their generosity, patience & flexibility throughout these 5 months. Strongly recommended for anyone interested in the foundations of Machine Learning, Deep Learning, and Machine Learning Engineering.
    Krishna Anand Project
    More info Links:
    Peter Ernicke Project
    More info Links: > Thank you Alexey for that great journey! Feel free to connect.
    Olga Braginskaya Project
    More info Links:
    Daniel Augusto Muñoz Viveros Project
    More info Links:
    • https://github.com/16danielvm/Human-Stress-Detection-in-and-through-Sleep
    Jorge Vladimir Abrego Arevalo Project
    Harold Uribe Romero Project
    Evan Hofmeister Project
    More info Links:
    Abhijit Chakraborty Project
    More info Links: > In the lookout for challenging roles in data science/machine learning (preferably Remote)
    Dashel Ruiz Project
    More info Links:
    Steven Christolis
    Kabir Olawale Mohammed Project
    More info Links:
    Inri Staka Project
    More info Links: > Hi, I am a Data Engineer with experience in Data Science and Machine Learning, you can gladly take a look at my projects and socials.
    Daniel Takeshi Project
    Sumedha Koranga Project
    Mélanie Fouesnard Project
    More info Links:
    Timur Pitsuev
    Alex Litvinov Project
    More info Links:
    • [X] https://twitter.com/aaalexlit
    • [Medium] https://medium.com/@aaalex.lit
    • [YouTube] https://www.youtube.com/@aaalexlit
    Lokman Efe Project
    Dese Narfa Firmansyah Project
    More info Links:
    • [Personal Website] (https://desenfirman.github.io)
    • [Capstone 1 Project] (https://github.com/desenfirman/machine-learning-zoomcamp/tree/master/.__CAPSTONE_1)
    • [Capstone 2 Project] (https://github.com/desenfirman/machine-learning-zoomcamp/tree/master/.__CAPSTONE_2)
    > You can also reach me on desenfirman@gmail.com . Anyway, thanks for the course. It was an amazing journey.
    Bergi Massimo Project
    Marcos Benício de Andrade Alonso Project
    More info Links: > If you're interested in my work and would like to connect, follow my journey and contributions on LinkedIn and GitHub.
    Ella Sahnan Project
    More info Links:
    Sumeet Lalla
    Gabriel Galperin Project
    Wong Chee Fah Project
    More info Links:
    Akhyar Ahmed Project
    More info Links:
    Phyo Min Khant Project
    More info > Trying to be advanced in ML and every step elevates me to a higher level.
    David Schmid Project
    More info > Feel free to connect.
    Denys Soloviov Project
    Alla Fedorova
    More info > That was a great course full of hands-on experience, I'm happy to recommend it and I'll be revisiting it
    Alex Ionescu Project
    Yishan Zhan Project
    Michael Fronda
    More info > Hello! Feel free to add me on LinkedIn :)
    Mina Sonbol Project
    More info Links: > 🎊💪
    Sergio Andres Sosa Bautista Project
    More info Links:
    Murat Kıran Project
    Murat Kıran Project
    More info Links:
    Matias Roubaud Project
    Richard Longlands Project
    Ekaterina Balakina Project
    Chun Hanssen
    José Alvarado
    Cécile Guillot Project
    More info Links:
    Vitalii Uliantsev
    Özge Kart Tokmak Project
    Taras Sh
    Madhav Bhatia Project
    More info Links:
    Valery Karnevich Project
    Aleksandra Kocot Project
    Amit Kooner
    Murat Kahraman Project
    Denys Savytskyi Project
    More info Links: > I have two backgrounds with master dergee's and work experience - Computer and Data Science and Cinema, TV and Art. Looking for a role where I can fully realize my potential.
    Rahma Hayuning Astuti
    Juan Carlos Gutiérrez Concha Project
    More info Links:
    Kevin Moore
    More info > Available for hire!
    Abhirup Ghosh Project
    More info Links:
    Shayan Shafiee Moghadam Project
    More info Links:
    Mariia Boiarchuk Project
    More info Links:
    Ryan Pramana Project
    More info > Email : ryan46pramana@gmail.com
    Gonçalo Dumiense
    Adam Fieleborn Project
    More info Links:
    Toms Kursits
    Carise F Project
    Angelo Varlotta Project
    More info Links:
    Gopakumar Gopinathan
    More info > Weather image classification app
    Vladyslav
    Oscar Garcia Project
    More info Links: > Thanks ML Zoomcamp 2023 for such a great experience.
    Pinku Deb Nath Project
    David Kirwan Project
    Isaac Ndirangu Muturi Project
    More info Links:
    Emmanuel Eigbedion Project
    More info > Just grateful to your team for this amazing experience. I am also open to available job openings.
    Avinash Vootkuri Project
    ================================================ FILE: cohorts/2023/projects.md ================================================ # Projects See more information about projects [here](../../projects/) ## Evaluation * [Evaluation criteria](https://docs.google.com/spreadsheets/d/e/2PACX-1vQCwqAtkjl07MTW-SxWUK9GUvMQ3Pv_fF8UadcuIYLgHa0PlNu9BRWtfLgivI8xSCncQs82HDwGXSm3/pubhtml) * [Video with instructions](https://www.youtube.com/watch?v=jQ4KVYmatBU) ## Midterm Project * Project due date: 8 November 2023 (Wednesday), 23:00 CET (Berlin time) * Submit your project here: https://forms.gle/1BUbuRkGGmLeqrxF8 * Evaluation due date: 15 November 2023 (Wednesday), 23:00 CET (Berlin time) * Evaluation assignments: [link](https://docs.google.com/spreadsheets/d/e/2PACX-1vR-7RRtq7AMx5OzI-tDbkzsbxNLm-NvFOP5OfJmhCek9oYcDx5jzxtZW2ZqWvBqc395UZpHBv1of9R1/pubhtml?gid=0&single=true) ("midterm" tab) * Submit your evaluation here: https://forms.gle/A5DqzSwPKgLru43AA * Feedback: [link](https://docs.google.com/spreadsheets/d/e/2PACX-1vQMT0Pr_EYLGR_8dXQ384cVkrN2w73VNr_H-mgsgIV2XDjKHrm0cznHaDGaWUyI146sx8-AkBL1QFrF/pubhtml?gid=973195155&single=true) ("midterm" tab) ## Capstone 1 * Project due date: 18 December (Monday), 23:00 CET (Berlin time) * Submit your project here: https://forms.gle/CJA2TgfGkYc7Qm6A7 * Evaluation due date: 8 January (Monday), 23:00 CET (Berlin time) * Evaluation assignments: [link](https://docs.google.com/spreadsheets/d/e/2PACX-1vR-7RRtq7AMx5OzI-tDbkzsbxNLm-NvFOP5OfJmhCek9oYcDx5jzxtZW2ZqWvBqc395UZpHBv1of9R1/pubhtml?gid=876309294&single=true) ("capstone-1" tab) * Submit your evaluation here: https://forms.gle/hsKW4fWWKjhBNXtWA * Feedback: [link](https://docs.google.com/spreadsheets/d/e/2PACX-1vQMT0Pr_EYLGR_8dXQ384cVkrN2w73VNr_H-mgsgIV2XDjKHrm0cznHaDGaWUyI146sx8-AkBL1QFrF/pubhtml?gid=1337692157&single=true) ("capstone-1" tab) ## Capstone 2 * Project due date: 22 January (Monday), 23:00 CET * Submit your project here: https://forms.gle/MMj6W3JB4sobUajN9 * Evaluation due date: 1 Ferbuary (Thursday), 23:00 CET * Evaluation assignments: [link](https://docs.google.com/spreadsheets/d/e/2PACX-1vR-7RRtq7AMx5OzI-tDbkzsbxNLm-NvFOP5OfJmhCek9oYcDx5jzxtZW2ZqWvBqc395UZpHBv1of9R1/pubhtml?gid=762712061&single=true) ("capstone-2" tab) * Submit your evaluation here: https://forms.gle/v7pDqCAaWCWDQjA47 * Feedback: [link](https://docs.google.com/spreadsheets/d/e/2PACX-1vQMT0Pr_EYLGR_8dXQ384cVkrN2w73VNr_H-mgsgIV2XDjKHrm0cznHaDGaWUyI146sx8-AkBL1QFrF/pubhtml?gid=1494371040&single=true) ("capstone-2" tab) ================================================ FILE: cohorts/2024/01-intro/homework.md ================================================ ## Homework ### Set up the environment You need to install Python, NumPy, Pandas, Matplotlib and Seaborn. For that, you can use the instructions from [06-environment.md](../../../01-intro/06-environment.md). ### Q1. Pandas version What's the version of Pandas that you installed? You can get the version information using the `__version__` field: ```python pd.__version__ ``` ### Getting the data For this homework, we'll use the Laptops Price dataset. Download it from [here](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/laptops.csv). You can do it with wget: ```bash wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/laptops.csv ``` Or just open it with your browser and click "Save as...". Now read it with Pandas. ### Q2. Records count How many records are in the dataset? - 12 - 1000 - 2160 - 12160 ### Q3. Laptop brands How many laptop brands are presented in the dataset? - 12 - 27 - 28 - 2160 ### Q4. Missing values How many columns in the dataset have missing values? - 0 - 1 - 2 - 3 ### Q5. Maximum final price What's the maximum final price of Dell notebooks in the dataset? - 869 - 3691 - 3849 - 3936 ### Q6. Median value of Screen 1. Find the median value of `Screen` column in the dataset. 2. Next, calculate the most frequent value of the same `Screen` column. 3. Use `fillna` method to fill the missing values in `Screen` column with the most frequent value from the previous step. 4. Now, calculate the median value of `Screen` once again. Has it changed? > Hint: refer to existing `mode` and `median` functions to complete the task. - Yes - No ### Q7. Sum of weights 1. Select all the "Innjoo" laptops from the dataset. 2. Select only columns `RAM`, `Storage`, `Screen`. 3. Get the underlying NumPy array. Let's call it `X`. 4. Compute matrix-matrix multiplication between the transpose of `X` and `X`. To get the transpose, use `X.T`. Let's call the result `XTX`. 5. Compute the inverse of `XTX`. 6. Create an array `y` with values `[1100, 1300, 800, 900, 1000, 1100]`. 7. Multiply the inverse of `XTX` with the transpose of `X`, and then multiply the result by `y`. Call the result `w`. 8. What's the sum of all the elements of the result? > **Note**: You just implemented linear regression. We'll talk about it in the next lesson. - 0.43 - 45.29 - 45.58 - 91.30 ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2024/homework/hw01 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2024/02-regression/homework.md ================================================ ## Homework > Note: sometimes your answer doesn't match one of > the options exactly. That's fine. > Select the option that's closest to your solution. > If it's exactly in between two options, select the higher value. Solution: [homework.ipynb](homework.ipynb) ### Dataset In this homework, we will use the Laptops price dataset from [Kaggle](https://www.kaggle.com/datasets/juanmerinobermejo/laptops-price-dataset). Here's a wget-able [link](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/laptops.csv): ```bash wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/laptops.csv ``` The goal of this homework is to create a regression model for predicting the prices (column `'Final Price'`). ### Preparing the dataset First, we'll normalize the names of the columns: ```python df.columns = df.columns.str.lower().str.replace(' ', '_') ``` Now, instead of `'Final Price'`, we have `'final_price'`. Next, use only the following columns: * `'ram'`, * `'storage'`, * `'screen'`, * `'final_price'` ### EDA * Look at the `final_price` variable. Does it have a long tail? ### Question 1 There's one column with missing values. What is it? * `'ram'` * `'storage'` * `'screen'` * `'final_price'` ### Question 2 What's the median (50% percentile) for variable `'ram'`? - 8 - 16 - 24 - 32 ### Prepare and split the dataset * Shuffle the dataset (the filtered one you created above), use seed `42`. * Split your data in train/val/test sets, with 60%/20%/20% distribution. Use the same code as in the lectures ### Question 3 * We need to deal with missing values for the column from Q1. * We have two options: fill it with 0 or with the mean of this variable. * Try both options. For each, train a linear regression model without regularization using the code from the lessons. * For computing the mean, use the training only! * Use the validation dataset to evaluate the models and compare the RMSE of each option. * Round the RMSE scores to 2 decimal digits using `round(score, 2)` * Which option gives better RMSE? Options: - With 0 - With mean - Both are equally good ### Question 4 * Now let's train a regularized linear regression. * For this question, fill the NAs with 0. * Try different values of `r` from this list: `[0, 0.01, 0.1, 1, 5, 10, 100]`. * Use RMSE to evaluate the model on the validation dataset. * Round the RMSE scores to 2 decimal digits. * Which `r` gives the best RMSE? If there are multiple options, select the smallest `r`. Options: - 0 - 0.01 - 1 - 10 - 100 ### Question 5 * We used seed 42 for splitting the data. Let's find out how selecting the seed influences our score. * Try different seed values: `[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]`. * For each seed, do the train/validation/test split with 60%/20%/20% distribution. * Fill the missing values with 0 and train a model without regularization. * For each seed, evaluate the model on the validation dataset and collect the RMSE scores. * What's the standard deviation of all the scores? To compute the standard deviation, use `np.std`. * Round the result to 3 decimal digits (`round(std, 3)`) What's the value of std? - 19.176 - 29.176 - 39.176 - 49.176 > Note: Standard deviation shows how different the values are. > If it's low, then all values are approximately the same. > If it's high, the values are different. > If standard deviation of scores is low, then our model is *stable*. ### Question 6 * Split the dataset like previously, use seed 9. * Combine train and validation datasets. * Fill the missing values with 0 and train a model with `r=0.001`. * What's the RMSE on the test dataset? Options: - 598.60 - 608.60 - 618.60 - 628.60 ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2024/homework/hw02 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2024/03-classification/homework.md ================================================ ## Homework > Note: sometimes your answer doesn't match one of the options exactly. > That's fine. > Select the option that's closest to your solution. > If it's exactly in between two options, select the higher value. ### Dataset In this homework, we will use the Bank Marketing dataset. Download it from [here](https://archive.ics.uci.edu/static/public/222/bank+marketing.zip). Or you can do it with `wget`: ```bash wget https://archive.ics.uci.edu/static/public/222/bank+marketing.zip ``` We need to take `bank/bank-full.csv` file from the downloaded zip-file. Please use semicolon as a separator in the `read_csv` function. In this dataset our desired target for classification task will be `y` variable - has the client subscribed a term deposit or not. ### Features For the rest of the homework, you'll need to use only these columns: * `age`, * `job`, * `marital`, * `education`, * `balance`, * `housing`, * `contact`, * `day`, * `month`, * `duration`, * `campaign`, * `pdays`, * `previous`, * `poutcome`, * `y` ### Data preparation * Select only the features from above. * Check if the missing values are presented in the features. ### Question 1 What is the most frequent observation (mode) for the column `education`? - `unknown` - `primary` - `secondary` - `tertiary` ### Question 2 Create the [correlation matrix](https://www.google.com/search?q=correlation+matrix) for the numerical features of your dataset. In a correlation matrix, you compute the correlation coefficient between every pair of features. What are the two features that have the biggest correlation? - `age` and `balance` - `day` and `campaign` - `day` and `pdays` - `pdays` and `previous` ### Target encoding * Now we want to encode the `y` variable. * Let's replace the values `yes`/`no` with `1`/`0`. ### Split the data * Split your data in train/val/test sets with 60%/20%/20% distribution. * Use Scikit-Learn for that (the `train_test_split` function) and set the seed to `42`. * Make sure that the target value `y` is not in your dataframe. ### Question 3 * Calculate the mutual information score between `y` and other categorical variables in the dataset. Use the training set only. * Round the scores to 2 decimals using `round(score, 2)`. Which of these variables has the biggest mutual information score? - `contact` - `education` - `housing` - `poutcome` ### Question 4 * Now let's train a logistic regression. * Remember that we have several categorical variables in the dataset. Include them using one-hot encoding. * Fit the model on the training dataset. - To make sure the results are reproducible across different versions of Scikit-Learn, fit the model with these parameters: - `model = LogisticRegression(solver='liblinear', C=1.0, max_iter=1000, random_state=42)` * Calculate the accuracy on the validation dataset and round it to 2 decimal digits. What accuracy did you get? - 0.6 - 0.7 - 0.8 - 0.9 ### Question 5 * Let's find the least useful feature using the *feature elimination* technique. * Train a model using the same features and parameters as in Q4 (without rounding). * Now exclude each feature from this set and train a model without it. Record the accuracy for each model. * For each feature, calculate the difference between the original accuracy and the accuracy without the feature. Which of following feature has the smallest difference? - `age` - `balance` - `marital` - `previous` > **Note**: The difference doesn't have to be positive. ### Question 6 * Now let's train a regularized logistic regression. * Let's try the following values of the parameter `C`: `[0.01, 0.1, 1, 10, 100]`. * Train models using all the features as in Q4. * Calculate the accuracy on the validation dataset and round it to 3 decimal digits. Which of these `C` leads to the best accuracy on the validation set? - 0.01 - 0.1 - 1 - 10 - 100 > **Note**: If there are multiple options, select the smallest `C`. ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2024/homework/hw03 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2024/04-evaluation/homework.md ================================================ ## Homework > Note: sometimes your answer doesn't match one of > the options exactly. That's fine. > Select the option that's closest to your solution. > If it's exactly in between two options, select the higher value. Solution: [homework.ipynb](homework.ipynb) In this homework, we will use the Bank Marketing dataset. Download it from [here](https://archive.ics.uci.edu/static/public/222/bank+marketing.zip). You can do it with `wget`: ```bash wget https://archive.ics.uci.edu/static/public/222/bank+marketing.zip unzip bank+marketing.zip unzip bank.zip ``` We need `bank-full.csv`. In this dataset the target variable is `y` variable - has the client subscribed a term deposit or not. ### Dataset preparation For the rest of the homework, you'll need to use only these columns: * `'age'`, * `'job'`, * `'marital'`, * `'education'`, * `'balance'`, * `'housing'`, * `'contact'`, * `'day'`, * `'month'`, * `'duration'`, * `'campaign'`, * `'pdays'`, * `'previous'`, * `'poutcome'`, * `'y'` Split the data into 3 parts: train/validation/test with 60%/20%/20% distribution. Use `train_test_split` function for that with `random_state=1` ### Question 1: ROC AUC feature importance ROC AUC could also be used to evaluate feature importance of numerical variables. Let's do that * For each numerical variable, use it as score (aka prediction) and compute the AUC with the `y` variable as ground truth. * Use the training dataset for that If your AUC is < 0.5, invert this variable by putting "-" in front (e.g. `-df_train['engine_hp']`) AUC can go below 0.5 if the variable is negatively correlated with the target variable. You can change the direction of the correlation by negating this variable - then negative correlation becomes positive. Which numerical variable (among the following 4) has the highest AUC? - `balance` - `day` - `duration` - `previous` ### Question 2: Training the model Apply one-hot-encoding using `DictVectorizer` and train the logistic regression with these parameters: ```python LogisticRegression(solver='liblinear', C=1.0, max_iter=1000) ``` What's the AUC of this model on the validation dataset? (round to 3 digits) - 0.69 - 0.79 - 0.89 - 0.99 ### Question 3: Precision and Recall Now let's compute precision and recall for our model. * Evaluate the model on all thresholds from 0.0 to 1.0 with step 0.01 * For each threshold, compute precision and recall * Plot them At which threshold precision and recall curves intersect? * 0.265 * 0.465 * 0.665 * 0.865 ### Question 4: F1 score Precision and recall are conflicting - when one grows, the other goes down. That's why they are often combined into the F1 score - a metrics that takes into account both This is the formula for computing F1: $$F_1 = 2 \cdot \cfrac{P \cdot R}{P + R}$$ Where $P$ is precision and $R$ is recall. Let's compute F1 for all thresholds from 0.0 to 1.0 with increment 0.01 At which threshold F1 is maximal? - 0.02 - 0.22 - 0.42 - 0.62 ### Question 5: 5-Fold CV Use the `KFold` class from Scikit-Learn to evaluate our model on 5 different folds: ``` KFold(n_splits=5, shuffle=True, random_state=1) ``` * Iterate over different folds of `df_full_train` * Split the data into train and validation * Train the model on train with these parameters: `LogisticRegression(solver='liblinear', C=1.0, max_iter=1000)` * Use AUC to evaluate the model on validation How large is standard deviation of the scores across different folds? - 0.0001 - 0.006 - 0.06 - 0.26 ### Question 6: Hyperparameter Tuning Now let's use 5-Fold cross-validation to find the best parameter `C` * Iterate over the following `C` values: `[0.000001, 0.001, 1]` * Initialize `KFold` with the same parameters as previously * Use these parameters for the model: `LogisticRegression(solver='liblinear', C=C, max_iter=1000)` * Compute the mean score as well as the std (round the mean and std to 3 decimal digits) Which `C` leads to the best mean score? - 0.000001 - 0.001 - 1 If you have ties, select the score with the lowest std. If you still have ties, select the smallest `C`. ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2024/homework/hw04 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2024/05-deployment/homework.md ================================================ ## Homework > Note: sometimes your answer doesn't match one of the options exactly. > That's fine. > Select the option that's closest to your solution. > If it's exactly in between two options, select the higher value. > Note: we recommend using python 3.11 in this homework. ## Question 1 * Install Pipenv * What's the version of pipenv you installed? * Use `--version` to find out ## Question 2 * Use Pipenv to install Scikit-Learn version 1.5.2 * What's the first hash for scikit-learn you get in Pipfile.lock? > **Note**: you should create an empty folder for homework and do it there. ## Models We've prepared a dictionary vectorizer and a model. They were trained (roughly) using this code: ```python features = ['job', 'duration', 'poutcome'] dicts = df[features].to_dict(orient='records') dv = DictVectorizer(sparse=False) X = dv.fit_transform(dicts) model = LogisticRegression().fit(X, y) ``` > **Note**: You don't need to train the model. This code is just for your reference. And then saved with Pickle. Download them: * [DictVectorizer](https://github.com/DataTalksClub/machine-learning-zoomcamp/tree/master/cohorts/2024/05-deployment/homework/dv.bin?raw=true) * [LogisticRegression](https://github.com/DataTalksClub/machine-learning-zoomcamp/tree/master/cohorts/2024/05-deployment/homework/model1.bin?raw=true) With `wget`: ```bash PREFIX=https://raw.githubusercontent.com/DataTalksClub/machine-learning-zoomcamp/master/cohorts/2024/05-deployment/homework wget $PREFIX/model1.bin wget $PREFIX/dv.bin ``` ## Question 3 Let's use these models! * Write a script for loading these models with pickle * Score this client: ```json {"job": "management", "duration": 400, "poutcome": "success"} ``` What's the probability that this client will get a subscription? * 0.359 * 0.559 * 0.759 * 0.959 If you're getting errors when unpickling the files, check their checksum: ```bash $ md5sum model1.bin dv.bin 3d8bb28974e55edefa000fe38fd3ed12 model1.bin 7d37616e00aa80f2152b8b0511fc2dff dv.bin ``` ## Question 4 Now let's serve this model as a web service * Install Flask and gunicorn (or waitress, if you're on Windows) * Write Flask code for serving the model * Now score this client using `requests`: ```python url = "YOUR_URL" client = {"job": "student", "duration": 280, "poutcome": "failure"} requests.post(url, json=client).json() ``` What's the probability that this client will get a subscription? * 0.335 * 0.535 * 0.735 * 0.935 ## Docker Install [Docker](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/05-deployment/06-docker.md). We will use it for the next two questions. For these questions, we prepared a base image: `svizor/zoomcamp-model:3.11.5-slim`. You'll need to use it (see Question 5 for an example). This image is based on `python:3.11.5-slim` and has a logistic regression model (a different one) as well a dictionary vectorizer inside. This is how the Dockerfile for this image looks like: ```docker FROM python:3.11.5-slim WORKDIR /app COPY ["model2.bin", "dv.bin", "./"] ``` We already built it and then pushed it to [`svizor/zoomcamp-model:3.11.5-slim`](https://hub.docker.com/r/svizor/zoomcamp-model). > **Note**: You don't need to build this docker image, it's just for your reference. ## Question 5 Download the base image `svizor/zoomcamp-model:3.11.5-slim`. You can easily make it by using [docker pull](https://docs.docker.com/engine/reference/commandline/pull/) command. So what's the size of this base image? * 45 MB * 130 MB * 245 MB * 330 MB You can get this information when running `docker images` - it'll be in the "SIZE" column. ## Dockerfile Now create your own Dockerfile based on the image we prepared. It should start like that: ```docker FROM svizor/zoomcamp-model:3.11.5-slim # add your stuff here ``` Now complete it: * Install all the dependencies form the Pipenv file * Copy your Flask script * Run it with Gunicorn After that, you can build your docker image. ## Question 6 Let's run your docker container! After running it, score this client once again: ```python url = "YOUR_URL" client = {"job": "management", "duration": 400, "poutcome": "success"} requests.post(url, json=client).json() ``` What's the probability that this client will get a subscription now? * 0.287 * 0.530 * 0.757 * 0.960 ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2024/homework/hw05 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2024/06-trees/homework.md ================================================ ## Homework > Note: sometimes your answer doesn't match one of > the options exactly. That's fine. > Select the option that's closest to your solution. > If it's exactly in between two options, select the higher value. Solution: [homework.ipynb](homework.ipynb) ### Dataset In this homework, we will use the Students Performance in 2024 JAMB dataset from [Kaggle](https://www.kaggle.com/datasets/idowuadamo/students-performance-in-2024-jamb). Here's a wget-able [link](https://github.com/alexeygrigorev/datasets/raw/refs/heads/master/jamb_exam_results.csv): ```bash wget https://github.com/alexeygrigorev/datasets/raw/refs/heads/master/jamb_exam_results.csv ``` The goal of this homework is to create a regression model for predicting the performance of students on a standardized test (column `'JAMB_Score'`). ### Preparing the dataset First, let's make the names lowercase: ```python df.columns = df.columns.str.lower().str.replace(' ', '_') ``` Preparation: * Remove the `student_id` column. * Fill missing values with zeros. * Do train/validation/test split with 60%/20%/20% distribution. * Use the `train_test_split` function and set the `random_state` parameter to 1. * Use `DictVectorizer(sparse=True)` to turn the dataframes into matrices. ## Question 1 Let's train a decision tree regressor to predict the `jamb_score` variable. * Train a model with `max_depth=1`. Which feature is used for splitting the data? * `study_hours_per_week` * `attendance_rate` * `teacher_quality` * `distance_to_school` ## Question 2 Train a random forest regressor with these parameters: * `n_estimators=10` * `random_state=1` * `n_jobs=-1` (optional - to make training faster) What's the RMSE of this model on the validation data? * 22.13 * 42.13 * 62.13 * 82.12 ## Question 3 Now let's experiment with the `n_estimators` parameter * Try different values of this parameter from 10 to 200 with step 10. * Set `random_state` to `1`. * Evaluate the model on the validation dataset. After which value of `n_estimators` does RMSE stop improving? Consider 3 decimal places for calculating the answer. - 10 - 25 - 80 - 200 ## Question 4 Let's select the best `max_depth`: * Try different values of `max_depth`: `[10, 15, 20, 25]` * For each of these values, * try different values of `n_estimators` from 10 till 200 (with step 10) * calculate the mean RMSE * Fix the random seed: `random_state=1` What's the best `max_depth`, using the mean RMSE? * 10 * 15 * 20 * 25 # Question 5 We can extract feature importance information from tree-based models. At each step of the decision tree learning algorithm, it finds the best split. When doing it, we can calculate "gain" - the reduction in impurity before and after the split. This gain is quite useful in understanding what are the important features for tree-based models. In Scikit-Learn, tree-based models contain this information in the [`feature_importances_`](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html#sklearn.ensemble.RandomForestRegressor.feature_importances_) field. For this homework question, we'll find the most important feature: * Train the model with these parameters: * `n_estimators=10`, * `max_depth=20`, * `random_state=1`, * `n_jobs=-1` (optional) * Get the feature importance information from this model What's the most important feature (among these 4)? * `study_hours_per_week` * `attendance_rate` * `distance_to_school` * `teacher_quality` ## Question 6 Now let's train an XGBoost model! For this question, we'll tune the `eta` parameter: * Install XGBoost * Create DMatrix for train and validation * Create a watchlist * Train a model with these parameters for 100 rounds: ``` xgb_params = { 'eta': 0.3, 'max_depth': 6, 'min_child_weight': 1, 'objective': 'reg:squarederror', 'nthread': 8, 'seed': 1, 'verbosity': 1, } ``` Now change `eta` from `0.3` to `0.1`. Which eta leads to the best RMSE score on the validation dataset? * 0.3 * 0.1 * Both give equal value ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2024/homework/hw06 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2024/08-deep-learning/homework.md ================================================ ## Homework > **Note**: it's very likely that in this homework your answers won't match > the options exactly. That's okay and expected. Select the option that's > closest to your solution. > If it's exactly in between two options, select the higher value. ### Dataset In this homework, we'll build a model for classifying various hair types. For this, we will use the Hair Type dataset that was obtained from [Kaggle](https://www.kaggle.com/datasets/kavyasreeb/hair-type-dataset) and slightly rebuilt. You can download the target dataset for this homework from [here](https://github.com/SVizor42/ML_Zoomcamp/releases/download/straight-curly-data/data.zip): ```bash wget https://github.com/SVizor42/ML_Zoomcamp/releases/download/straight-curly-data/data.zip unzip data.zip ``` In the lectures we saw how to use a pre-trained neural network. In the homework, we'll train a much smaller model from scratch. > **Note:** you will need an environment with a GPU for this homework. We recommend to use [Saturn Cloud](https://bit.ly/saturn-mlzoomcamp). > You can also use a computer without a GPU (e.g. your laptop), but it will be slower. ### Data Preparation The dataset contains around 1000 images of hairs in the separate folders for training and test sets. ### Reproducibility Reproducibility in deep learning is a multifaceted challenge that requires attention to both software and hardware details. In some cases, we can't guarantee exactly the same results during the same experiment runs. Therefore, in this homework we suggest to: * install tensorflow version 2.17.1 * set the seed generators by: ```python import numpy as np import tensorflow as tf SEED = 42 np.random.seed(SEED) tf.random.set_seed(SEED) ``` ### Model For this homework we will use Convolutional Neural Network (CNN). Like in the lectures, we'll use Keras. You need to develop the model with following structure: * The shape for input should be `(200, 200, 3)` * Next, create a convolutional layer ([`Conv2D`](https://keras.io/api/layers/convolution_layers/convolution2d/)): * Use 32 filters * Kernel size should be `(3, 3)` (that's the size of the filter) * Use `'relu'` as activation * Reduce the size of the feature map with max pooling ([`MaxPooling2D`](https://keras.io/api/layers/pooling_layers/max_pooling2d/)) * Set the pooling size to `(2, 2)` * Turn the multi-dimensional result into vectors using a [`Flatten`](https://keras.io/api/layers/reshaping_layers/flatten/) layer * Next, add a `Dense` layer with 64 neurons and `'relu'` activation * Finally, create the `Dense` layer with 1 neuron - this will be the output * The output layer should have an activation - use the appropriate activation for the binary classification case As optimizer use [`SGD`](https://keras.io/api/optimizers/sgd/) with the following parameters: * `SGD(lr=0.002, momentum=0.8)` For clarification about kernel size and max pooling, check [Office Hours](https://www.youtube.com/watch?v=1WRgdBTUaAc). ### Question 1 Since we have a binary classification problem, what is the best loss function for us? * `mean squared error` * `binary crossentropy` * `categorical crossentropy` * `cosine similarity` > **Note:** since we specify an activation for the output layer, we don't need to set `from_logits=True` ### Question 2 What's the total number of parameters of the model? You can use the `summary` method for that. * 896 * 11214912 * 15896912 * 20072512 ### Generators and Training For the next two questions, use the following data generator for both train and test sets: ```python ImageDataGenerator(rescale=1./255) ``` * We don't need to do any additional pre-processing for the images. * When reading the data from train/test directories, check the `class_mode` parameter. Which value should it be for a binary classification problem? * Use `batch_size=20` * Use `shuffle=True` for both training and test sets. For training use `.fit()` with the following params: ```python model.fit( train_generator, epochs=10, validation_data=test_generator ) ``` ### Question 3 What is the median of training accuracy for all the epochs for this model? * 0.10 * 0.32 * 0.50 * 0.72 ### Question 4 What is the standard deviation of training loss for all the epochs for this model? * 0.028 * 0.068 * 0.128 * 0.168 ### Data Augmentation For the next two questions, we'll generate more data using data augmentations. Add the following augmentations to your training data generator: * `rotation_range=50,` * `width_shift_range=0.1,` * `height_shift_range=0.1,` * `zoom_range=0.1,` * `horizontal_flip=True,` * `fill_mode='nearest'` ### Question 5 Let's train our model for 10 more epochs using the same code as previously. > **Note:** make sure you don't re-create the model - we want to continue training the model we already started training. What is the mean of test loss for all the epochs for the model trained with augmentations? * 0.26 * 0.56 * 0.86 * 1.16 ### Question 6 What's the average of test accuracy for the last 5 epochs (from 6 to 10) for the model trained with augmentations? * 0.31 * 0.51 * 0.71 * 0.91 ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2024/homework/hw08 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2024/09-serverless/homework.md ================================================ ## Homework In this homework, we'll deploy the Straight vs Curly Hair Type model we trained in the [previous homework](../08-deep-learning/homework.md). Download the model from here: https://github.com/alexeygrigorev/large-datasets/releases/download/hairstyle/model_2024_hairstyle.keras ## Question 1 Now convert this model from Keras to TF-Lite format. What's the size of the **converted** model? * 27 Mb * 43 Mb * 77 Mb * 127 Mb ## Question 2 To be able to use this model, we need to know the index of the input and the index of the output. What's the output index for this model? * 3 * 7 * 13 * 24 ## Preparing the image You'll need some code for downloading and resizing images. You can use this code: ```python from io import BytesIO from urllib import request from PIL import Image def download_image(url): with request.urlopen(url) as resp: buffer = resp.read() stream = BytesIO(buffer) img = Image.open(stream) return img def prepare_image(img, target_size): if img.mode != 'RGB': img = img.convert('RGB') img = img.resize(target_size, Image.NEAREST) return img ``` For that, you'll need to have `pillow` installed: ```bash pip install pillow ``` Let's download and resize this image: https://habrastorage.org/webt/yf/_d/ok/yf_dokzqy3vcritme8ggnzqlvwa.jpeg Based on the previous homework, what should be the target size for the image? ## Question 3 Now we need to turn the image into numpy array and pre-process it. > Tip: Check the previous homework. What was the pre-processing > we did there? After the pre-processing, what's the value in the first pixel, the R channel? * 0.24 * 0.44 * 0.64 * 0.84 ## Question 4 Now let's apply this model to this image. What's the output of the model? * 0.293 * 0.493 * 0.693 * 0.893 ## Prepare the lambda code Now you need to copy all the code into a separate python file. You will need to use this file for the next two questions. Tip: you can test this file locally with `ipython` or Jupyter Notebook by importing the file and invoking the function from this file. ## Docker For the next two questions, we'll use a Docker image that we already prepared. This is the Dockerfile that we used for creating the image: ```docker FROM public.ecr.aws/lambda/python:3.10 COPY model_2024_hairstyle_v2.tflite . RUN pip install numpy==1.23.1 ``` Note that it uses Python 3.10. The latest models of TF Lite do not support Python 3.12 yet, so we need to use 3.10. Also, for this part, we will use TensorFlow 2.14.0. We have tested it, and the models created with 2.17 could be served with 2.14.0. For that image, we also needed to use an older version of numpy (1.23.1) The docker image is published to [`agrigorev/model-2024-hairstyle:v3`](https://hub.docker.com/r/agrigorev/model-2024-hairstyle/tags). A few notes: * The image already contains a model and it's not the same model as the one we used for questions 1-4. * The wheel for this combination that you'll need to use in your Docker image is https://github.com/alexeygrigorev/tflite-aws-lambda/raw/main/tflite/tflite_runtime-2.14.0-cp310-cp310-linux_x86_64.whl ## Question 5 Download the base image `agrigorev/model-2024-hairstyle:v3`. You can do it with [`docker pull`](https://docs.docker.com/engine/reference/commandline/pull/). So what's the size of this base image? * 182 Mb * 382 Mb * 582 Mb * 782 Mb You can get this information when running `docker images` - it'll be in the "SIZE" column. ## Question 6 Now let's extend this docker image, install all the required libraries and add the code for lambda. You don't need to include the model in the image. It's already included. The name of the file with the model is `model_2024_hairstyle_v2.tflite` and it's in the current workdir in the image (see the Dockerfile above for the reference). The provided model requires the same preprocessing for images regarding target size and rescaling the value range than used in homework 8. Now run the container locally. Score this image: https://habrastorage.org/webt/yf/_d/ok/yf_dokzqy3vcritme8ggnzqlvwa.jpeg What's the output from the model? * 0.229 * 0.429 * 0.629 * 0.829 ## Publishing it to AWS Now you can deploy your model to AWS! * Publish your image to ECR * Create a lambda function in AWS, use the ECR image * Give it more RAM and increase the timeout * Test it * Expose the lambda function using API Gateway This is optional and not graded. ## Publishing to Docker hub Just for the reference, this is how we published our image to Docker hub: ```bash docker build -t model-2024-hairstyle -f homework.dockerfile . docker tag model-2024-hairstyle:latest agrigorev/model-2024-hairstyle:v3 docker push agrigorev/model-2024-hairstyle:v3 ``` (You don't need to execute this code) ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2024/homework/hw09 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2024/10-kubernetes/homework.md ================================================ ## Homework In this homework, we'll deploy the Bank Marketing model from the homework 5. We already have a docker image for this model - we'll use it for deploying the model to Kubernetes. ## Building the image Clone the course repo if you haven't: ``` git clone https://github.com/DataTalksClub/machine-learning-zoomcamp.git ``` Go to the `course-zoomcamp/cohorts/2024/05-deployment/homework` folder and execute the following: ```bash docker build -t zoomcamp-model:3.11.5-hw10 . ``` > **Note:** If you have troubles building the image, you can > use the image we built and published to docker hub: > `docker pull svizor/zoomcamp-model:3.11.5-hw10` ## Question 1 Run it to test that it's working locally: ```bash docker run -it --rm -p 9696:9696 zoomcamp-model:3.11.5-hw10 ``` And in another terminal, execute `q6_test.py` file: ```bash python q6_test.py ``` You should see this: ```python {'has_subscribed': True, 'has_subscribed_probability': } ``` Here `` is the probability of getting a subscription. You need to choose the right one. * 0.287 * 0.530 * 0.757 * 0.960 Now you can stop the container running in Docker. ## Installing `kubectl` and `kind` You need to install: * `kubectl` - https://kubernetes.io/docs/tasks/tools/ (you might already have it - check before installing) * `kind` - https://kind.sigs.k8s.io/docs/user/quick-start/ ## Question 2 What's the version of `kind` that you have? Use `kind --version` to find out. ## Creating a cluster Now let's create a cluster with `kind`: ```bash kind create cluster ``` And check with `kubectl` that it was successfully created: ```bash kubectl cluster-info ``` ## Question 3 What's the smallest deployable computing unit that we can create and manage in Kubernetes (`kind` in our case)? * Node * Pod * Deployment * Service ## Question 4 Now let's test if everything works. Use `kubectl` to get the list of running services. What's the `Type` of the service that is already running there? * NodePort * ClusterIP * ExternalName * LoadBalancer ## Question 5 To be able to use the docker image we previously created (`zoomcamp-model:3.11.5-hw10`), we need to register it with `kind`. What's the command we need to run for that? * `kind create cluster` * `kind build node-image` * `kind load docker-image` * `kubectl apply` ## Question 6 Now let's create a deployment config (e.g. `deployment.yaml`): ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: subscription spec: selector: matchLabels: app: subscription replicas: 1 template: metadata: labels: app: subscription spec: containers: - name: subscription image: resources: requests: memory: "64Mi" cpu: "100m" limits: memory: cpu: ports: - containerPort: ``` Replace ``, ``, ``, `` with the correct values. What is the value for ``? Apply this deployment using the appropriate command and get a list of running Pods. You can see one running Pod. ## Question 7 Let's create a service for this deployment (`service.yaml`): ```yaml apiVersion: v1 kind: Service metadata: name: spec: type: LoadBalancer selector: app: ports: - port: 80 targetPort: ``` Fill it in. What do we need to write instead of ``? Apply this config file. ## Testing the service We can test our service locally by forwarding the port 9696 on our computer to the port 80 on the service: ```bash kubectl port-forward service/ 9696:80 ``` Run `q6_test.py` (from the homework 5) once again to verify that everything is working. You should get the same result as in Question 1. ## Autoscaling Now we're going to use a [HorizontalPodAutoscaler](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/) (HPA for short) that automatically updates a workload resource (such as our deployment), with the aim of automatically scaling the workload to match demand. Use the following command to create the HPA: ```bash kubectl autoscale deployment subscription --name subscription-hpa --cpu-percent=20 --min=1 --max=3 ``` You can check the current status of the new HPA by running: ```bash kubectl get hpa ``` The output should be similar to the next: ```bash NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE subscription-hpa Deployment/subscription 1%/20% 1 3 1 27s ``` `TARGET` column shows the average CPU consumption across all the Pods controlled by the corresponding deployment. Current CPU consumption is about 0% as there are no clients sending requests to the server. > >Note: In case the HPA instance doesn't run properly, try to install the latest Metrics Server release > from the `components.yaml` manifest: > ```bash > kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml >``` ## Increase the load Let's see how the autoscaler reacts to increasing the load. To do this, we can slightly modify the existing `q6_test.py` script by putting the operator that sends the request to the subscription service into a loop. ```python while True: sleep(0.1) response = requests.post(url, json=client).json() print(response) ``` Now you can run this script. ## Question 8 (optional) Run `kubectl get hpa subscription-hpa --watch` command to monitor how the autoscaler performs. Within a minute or so, you should see the higher CPU load; and then - more replicas. What was the maximum amount of the replicas during this test? * 1 * 2 * 3 * 4 > Note: It may take a few minutes to stabilize the number of replicas. Since the amount of load is not controlled > in any way it may happen that the final number of replicas will differ from initial. ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2024/homework/hw10 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2024/README.md ================================================ ## Machine Learning Zoomcamp 2024 * [Pre-course Q&A session](https://www.youtube.com/watch?v=a7phcSmuNY0) * [Launch stream with course overview](https://www.youtube.com/watch?v=8wuR_Oz-to0) * [Course management platform](https://courses.datatalks.club/ml-zoomcamp-2024/) * [FAQ](https://datatalks.club/faq/machine-learning-zoomcamp.html) * [Course Playlist: Only 2023 Live videos & homeworks](https://www.youtube.com/playlist?list=PL3MmuxUbc_hJoui-E7wf2r5wWgET3MMZt) * [Leaderboard](https://courses.datatalks.club/ml-zoomcamp-2024/leaderboard) ### Syllabus [**1. Introduction to Machine Learning**](01-intro/) * [Module materials](../../01-intro) * [Homework](01-intro/homework.md) * [Homework solution](01-intro/homework_1.ipynb) [**2. Machine Learning for Regression**](02-regression/) * [Module materials](../../02-regression) * [Homework](02-regression/homework.md) * [Homework solution](02-regression/homework.ipynb) [**3. Machine Learning for Classification**](03-classification/) * [Module materials](../../03-classification) * [Homework](03-classification/homework.md) * [Homework solution](03-classification/homework_3.ipynb) [**4. Evaluation Metrics for Classification**](04-evaluation/) * [Module materials](../../04-evaluation) * [Homework](04-evaluation/homework.md) [**5. Deploying Machine Learning Models**](05-deployment/) * [Module materials](../../05-deployment) * [Homework](05-deployment/homework.md) * [Homework solution](05-deployment/homework/) [**6. Decision Trees and Ensemble Learning**](06-trees/) * [Module materials](../../06-trees) * [Homework](06-trees/homework.md) [**Midterm Project**](projects.md#midterm-project) * More information: [projects.md](projects.md#midterm-project) [**8. Neural Networks and Deep Learning**](08-deep-learning/) * [Module materials](../../08-deep-learning) * [Homework](08-deep-learning/homework.md) * [Homework solution](08-deep-learning/homework_8.ipynb) * Saturn Cloud * Sign up link: https://zoomcamp.internal.saturnenterprise.io/ [**9. Serverless Deep Learning**](09-serverless/) * [Module materials](../../09-serverless) * [Homework](09-serverless/homework.md) * [Homework solution](09-serverless/homework) [**10. Kubernetes and TensorFlow Serving**](10-kubernetes/) * [Module materials](../../10-kubernetes) * [Homework](10-kubernetes/homework.md) * [Homework solution](10-kubernetes/homework) **11. KServe (optional)** * [Module materials](../../11-kserve) * No homework [**Capstone Project**](projects.md#capstone-1) * More information: [projects.md](projects.md#capstone-1) [**Capstone Project 2**](projects.md#capstone-2) * More information: [projects.md](projects.md#capstone-2) **[Article](article.md) (Optional)** * More information: [article.md](article.md) [**Competition**](https://www.kaggle.com/competitions/ml-zoomcamp-2024-competition/) ================================================ FILE: cohorts/2024/article.md ================================================ ## Article (optional) The best way to learn about something - to teach it. In this part of the course, we'll explore some topics that weren't covered in the course. You'll need to learn about this topic and then write about what you learned in an article. [More information about articles](../../article/README.md) ## Submitting the results * Submit your article to [`#course-ml-zoomcamp-articles`](https://app.slack.com/client/T01ATQK62F8/C02QXBFS1PU) - just share the link to your article there * Submit the same link to [this form](https://courses.datatalks.club/ml-zoomcamp-2024/homework/article) so we could link it to your message from the channel ## Evaluating We'll use voting for scoring your articles. * Check the articles in the [`#course-ml-zoomcamp-articles`](https://app.slack.com/client/T01ATQK62F8/C02QXBFS1PU) channel and put a :+1: reaction to articles that you liked * The top voted articles will get 20 points ## Deadline The deadline for finishing the article is 31 January ## Articles from 2024 * [You will like my offer](https://markogolovko.com/blog/you-will-like-my-offer/) by Marko Golovko * [Natural Language Processing using spaCy, TensorFlow and BERT model architecture](https://volcano-camp-325.notion.site/Natural-Language-Processing-using-spaCy-TensorFlow-and-BERT-model-architecture-1895067176b380d09484d4b0338b0c5e?pvs=4) by Alexander Daniel Rios * [Setting up the environments for ML Zoomcamp 2024 - macOS](https://medium.com/@till.meineke/setting-up-the-environments-for-ml-zoomcamp-2024-eceb6e42e36e) by Till Meineke ### Past articles See examples of articles from the previous cohorts [here](../../article/README.md) ================================================ FILE: cohorts/2024/projects.md ================================================ # Projects See more information about projects [here](../../projects/) ## Evaluation Evaluation via [course management system](https://courses.datatalks.club/ml-zoomcamp-2024/) * [Evaluation criteria](https://docs.google.com/spreadsheets/d/e/2PACX-1vQCwqAtkjl07MTW-SxWUK9GUvMQ3Pv_fF8UadcuIYLgHa0PlNu9BRWtfLgivI8xSCncQs82HDwGXSm3/pubhtml) * [Video with instructions](https://www.loom.com/share/4f5c155c550e48ddb54b71ba76516b04) ## Midterm Project - Project due date: 26 November 2024, 00:00 CET (Berlin time) - Submit your project [here](https://courses.datatalks.club/ml-zoomcamp-2024/project/midterm) - Evaluation due date: 03 December 2024, 00:00 CET (Berlin time) - [Projects of Midterm Project](https://courses.datatalks.club/ml-zoomcamp-2024/project/midterm/list) ## Capstone 1 - Project due date: 14 January 2025, 00:00 CET (Berlin time) - Submit your project [here](https://courses.datatalks.club/ml-zoomcamp-2024/project/capstone1) - Evaluation due date: 21 January 2025, 00:00 CET (Berlin time) - [Projects of Capstone 1](https://courses.datatalks.club/ml-zoomcamp-2024/project/capstone1/list) ## Capstone 2 - Project due date: 28 January 2025, 00:00 CET (Berlin time) - Submit your project [here](https://courses.datatalks.club/ml-zoomcamp-2024/project/capstone2) - Evaluation due date: 04 February 2025, 00:00 CET (Berlin time) - [Projects of Capstone 2](https://courses.datatalks.club/ml-zoomcamp-2024/project/capstone2/list) ================================================ FILE: cohorts/2025/01-intro/homework.md ================================================ # Homework ## Set up the environment You need to install Python, NumPy, Pandas, Matplotlib, and Seaborn. For that, you can use the instructions from [06-environment.md](../../../01-intro/06-environment.md). ## Q1. Pandas version What version of Pandas did you install? You can get the version information using the `__version__` field: ```python pd.__version__ ``` ## Getting the data For this homework, we'll use the Car Fuel Efficiency dataset. Download it from here. You can do it with wget: ```bash wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/car_fuel_efficiency.csv ``` Or just open it with your browser and click "Save as...". Now read it with Pandas. ## Q2. Records count How many records are in the dataset? - 4704 - 8704 - 9704 - 17704 ## Q3. Fuel types How many fuel types are presented in the dataset? - 1 - 2 - 3 - 4 ## Q4. Missing values How many columns in the dataset have missing values? - 0 - 1 - 2 - 3 - 4 ## Q5. Max fuel efficiency What's the maximum fuel efficiency of cars from Asia? - 13.75 - 23.75 - 33.75 - 43.75 ## Q6. Median value of horsepower 1. Find the median value of the `horsepower` column in the dataset. 2. Next, calculate the most frequent value of the same `horsepower` column. 3. Use the `fillna` method to fill the missing values in the `horsepower` column with the most frequent value from the previous step. 4. Now, calculate the median value of `horsepower` once again. Has it changed? - Yes, it increased - Yes, it decreased - No ## Q7. Sum of weights 1. Select all the cars from Asia 2. Select only columns `vehicle_weight` and `model_year` 3. Select the first 7 values 4. Get the underlying NumPy array. Let's call it `X`. 5. Compute matrix-matrix multiplication between the transpose of `X` and `X`. To get the transpose, use `X.T`. Let's call the result `XTX`. 6. Invert `XTX`. 7. Create an array `y` with values `[1100, 1300, 800, 900, 1000, 1100, 1200]`. 8. Multiply the inverse of `XTX` with the transpose of `X`, and then multiply the result by `y`. Call the result `w`. 9. What's the sum of all the elements of the result? > **Note**: You just implemented linear regression. We'll talk about it in the next lesson. - 0.051 - 0.51 - 5.1 - 51 ## Learning in Public As part of this course, we encourage you to learn in public. Sharing your progress helps you reflect, stay accountable, and connect with others. Write posts on your social media about Module 1 of this course. How to do it - Pick one platform (or more!) and post using the templates below - Don't forget to tag Alexey Grigorev and use #mlzoomcamp hashtag Alexey on social media: [LinkedIn](https://www.linkedin.com/in/agrigorev/), [Twitter/X](https://x.com/Al_Grigor) DTC on social media: [LinkedIn](https://www.linkedin.com/company/datatalks-club/), [Twitter/X](https://x.com/DataTalksClub) --- ### LinkedIn Template I just completed Module 1: Introduction to Machine Learning from ML Zoomcamp 2025 🎉 This module covered: 🔹 Difference between ML and rule-based systems 🔹 What supervised machine learning is 🔹 CRISP-DM: a framework for structuring ML projects 🔹 The model selection step 🔹 Setting up the environment (Python, Jupyter, etc.) 🔹 Quick refreshers on NumPy, linear algebra, and Pandas ✨ My key takeaway: [insert your personal insight] 🤔 Something I struggled with or found interesting: [insert challenge, surprise, or aha-moment] ➡️ Next step → Module 2: [your personal goal or excitement] #mlzoomcamp @Alexey Grigorev --- ### Twitter / X Template #### Single tweet version Just wrapped up Module 1 of #mlzoomcamp 🚀 Learned about: 🔹 ML vs. rule-based systems 🔹 Supervised ML basics 🔹 CRISP-DM framework 🔹 Setting up environment + NumPy/Pandas/Linear Algebra refreshers ✨ Key takeaway: [insert insight] ➡️ Next up: Module 2! @Al_Grigor #### Thread starter Day 1 of #mlzoomcamp ✅ Module 1: Intro to ML Here’s what I learned 👇 (then add 2–3 tweets: 💡 takeaway, 🤔 challenge, 🚀 goal for Module 2) ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2025/homework/hw01 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2025/01-intro/homework_1.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "251d40a3", "metadata": { "_sphinx_cell_id": "cea17dc6-60e5-4bba-951e-5b60c373e223", "id": "251d40a3" }, "source": [ "## Homework #1" ] }, { "cell_type": "markdown", "id": "b1cfc63c", "metadata": { "_sphinx_cell_id": "5e1f329f-a990-4e7f-b9c0-83d8e2e28ec2", "id": "b1cfc63c" }, "source": [ "### Set up the environment" ] }, { "cell_type": "markdown", "id": "545d3529", "metadata": { "_sphinx_cell_id": "d254ca3c-6ed9-40fe-941a-501046a7f4c3", "id": "545d3529" }, "source": [ "You need to install Python, NumPy, Pandas, Matplotlib and Seaborn. For that, you can the instructions from 06-environment.md." ] }, { "cell_type": "code", "execution_count": 1, "id": "92a54c41", "metadata": { "_sphinx_cell_id": "9219200a-172c-47d5-aedc-e9d48e89a8c7", "executionInfo": { "elapsed": 706, "status": "ok", "timestamp": 1694208135401, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "92a54c41", "tags": [] }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "markdown", "id": "351c8283", "metadata": { "_sphinx_cell_id": "b0512789-14be-4086-86d6-b6f1bbc0e521", "id": "351c8283" }, "source": [ "### Question 1" ] }, { "cell_type": "markdown", "id": "e8024830", "metadata": { "_sphinx_cell_id": "681ea8a0-96ad-4361-a116-b0b3a0b69dbf", "id": "e8024830" }, "source": [ "What's the version of Pandas that you installed?\n", "\n", "You can get the version information using the `__version__` field:" ] }, { "cell_type": "code", "execution_count": 2, "id": "cd014841", "metadata": { "_sphinx_cell_id": "ce6b9101-8e55-48ac-b2ba-65a8ecce8a35", "colab": { "base_uri": "https://localhost:8080/", "height": 36 }, "executionInfo": { "elapsed": 8, "status": "ok", "timestamp": 1694208136053, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "cd014841", "outputId": "69d7c606-95a6-4a40-98a0-0f85927705e2", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "'2.2.3'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.__version__" ] }, { "cell_type": "markdown", "id": "4ceefa5c", "metadata": { "_sphinx_cell_id": "2dcdb9a6-baf6-4079-97cf-e1698f278a65", "id": "4ceefa5c" }, "source": [ "### Getting the data" ] }, { "cell_type": "markdown", "id": "2cf7db9d", "metadata": { "_sphinx_cell_id": "72fa8ffd-806c-4d63-b866-349d1d0ea19b", "id": "2cf7db9d" }, "source": [ "For this homework, we'll use the Car Fuel Efficiency dataset. Download it from here.\n", "\n", "You can do it with wget:\n", "```bash\n", "wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/car_fuel_efficiency.csv\n", "```\n", "Or just open it with your browser and click \"Save as...\".\n", "\n", "Now read it with Pandas." ] }, { "cell_type": "code", "execution_count": 47, "id": "1fa83ea3", "metadata": { "_sphinx_cell_id": "f1ad1727-65ca-433d-a1ad-9010e8eeb8fe", "executionInfo": { "elapsed": 284, "status": "ok", "timestamp": 1694208138879, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "1fa83ea3", "tags": [] }, "outputs": [], "source": [ "data = pd.read_csv(\"https://raw.githubusercontent.com/alexeygrigorev/datasets/master/car_fuel_efficiency.csv\")\n", "# data = pd.read_csv(\"car_fuel_efficiency.csv\")" ] }, { "cell_type": "code", "execution_count": 48, "id": "cf2aa356", "metadata": { "_sphinx_cell_id": "0db9f6eb-8e97-44c8-b4b4-73d44cee4b55", "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "executionInfo": { "elapsed": 7, "status": "ok", "timestamp": 1694208139499, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "cf2aa356", "outputId": "319e25c2-3ce0-45bd-e707-8b124a62fd3d", "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    engine_displacementnum_cylindershorsepowervehicle_weightaccelerationmodel_yearoriginfuel_typedrivetrainnum_doorsfuel_efficiency_mpg
    01703.0159.03413.43375917.72003EuropeGasolineAll-wheel drive0.013.231729
    11305.097.03149.66493417.82007USAGasolineFront-wheel drive0.013.688217
    2170NaN78.03079.03899715.12018EuropeGasolineFront-wheel drive0.014.246341
    32204.0NaN2542.39240220.22009USADieselAll-wheel drive2.016.912736
    42101.0140.03460.87099014.42009EuropeGasolineAll-wheel drive2.012.488369
    \n", "
    " ], "text/plain": [ " engine_displacement num_cylinders horsepower vehicle_weight \\\n", "0 170 3.0 159.0 3413.433759 \n", "1 130 5.0 97.0 3149.664934 \n", "2 170 NaN 78.0 3079.038997 \n", "3 220 4.0 NaN 2542.392402 \n", "4 210 1.0 140.0 3460.870990 \n", "\n", " acceleration model_year origin fuel_type drivetrain num_doors \\\n", "0 17.7 2003 Europe Gasoline All-wheel drive 0.0 \n", "1 17.8 2007 USA Gasoline Front-wheel drive 0.0 \n", "2 15.1 2018 Europe Gasoline Front-wheel drive 0.0 \n", "3 20.2 2009 USA Diesel All-wheel drive 2.0 \n", "4 14.4 2009 Europe Gasoline All-wheel drive 2.0 \n", "\n", " fuel_efficiency_mpg \n", "0 13.231729 \n", "1 13.688217 \n", "2 14.246341 \n", "3 16.912736 \n", "4 12.488369 " ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "markdown", "id": "aecac649", "metadata": { "_sphinx_cell_id": "39bedcef-55fb-4de2-8a4f-b18829a831da", "id": "aecac649" }, "source": [ "### Question 2" ] }, { "cell_type": "markdown", "id": "ab65645c", "metadata": { "_sphinx_cell_id": "20d1a919-a024-47d1-8eab-f3be8320ee28", "id": "ab65645c" }, "source": [ "How many records are in the dataset?" ] }, { "cell_type": "code", "execution_count": 6, "id": "c73d4d30", "metadata": { "_sphinx_cell_id": "141e970d-f6a6-454c-9cfe-9add9b3c64f3", "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 286, "status": "ok", "timestamp": 1694208141779, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "c73d4d30", "outputId": "e16c4908-c136-49ff-b6a5-b9168e06f18c", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "9704" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.shape[0]" ] }, { "cell_type": "markdown", "id": "b5d128d0", "metadata": { "_sphinx_cell_id": "4c800cf0-cf2d-48c9-a51c-5f703bfabc21", "id": "b5d128d0" }, "source": [ "### Question 3" ] }, { "cell_type": "markdown", "id": "511821c3-8513-4648-bd75-7955bb362fce", "metadata": { "_sphinx_cell_id": "255074e7-bdf3-433c-a47c-62cf3567e68e" }, "source": [ "How many fuel types are presented in the dataset?" ] }, { "cell_type": "code", "execution_count": 10, "id": "ed9eaa6e-6184-4d05-ace5-b2507a008ccf", "metadata": { "_sphinx_cell_id": "8c1e4076-a2d5-4c32-b765-bc534c3169e6", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.fuel_type.nunique()" ] }, { "cell_type": "code", "execution_count": 11, "id": "d88d5778-9334-4b49-9a2b-47d375fefa41", "metadata": { "_sphinx_cell_id": "1f102107-4ae9-4b0a-b63d-931267018e87", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "engine_displacement 36\n", "num_cylinders 14\n", "horsepower 192\n", "vehicle_weight 9704\n", "acceleration 162\n", "model_year 24\n", "origin 3\n", "fuel_type 2\n", "drivetrain 2\n", "num_doors 9\n", "fuel_efficiency_mpg 9704\n", "dtype: int64" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.nunique()" ] }, { "cell_type": "markdown", "id": "90b3262c", "metadata": { "_sphinx_cell_id": "a5e29db2-1175-4561-b2d4-d3a0f4b64246", "id": "90b3262c" }, "source": [ "### Question 4" ] }, { "cell_type": "markdown", "id": "JtB8acmV4jrf", "metadata": { "_sphinx_cell_id": "e59d71d6-786f-47d3-a0c2-cb4e88631da9", "id": "JtB8acmV4jrf" }, "source": [ "How many columns in the dataset have missing values?" ] }, { "cell_type": "code", "execution_count": 12, "id": "7e6b2e07-871d-405c-a7aa-bc957ed4e530", "metadata": { "_sphinx_cell_id": "089ff480-b88a-44d9-aa8b-c8c426a359c1", "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 301, "status": "ok", "timestamp": 1694208145679, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "7e6b2e07-871d-405c-a7aa-bc957ed4e530", "outputId": "6d9697ce-752f-4a9c-aebc-486be364ed88", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "engine_displacement 0\n", "num_cylinders 482\n", "horsepower 708\n", "vehicle_weight 0\n", "acceleration 930\n", "model_year 0\n", "origin 0\n", "fuel_type 0\n", "drivetrain 0\n", "num_doors 502\n", "fuel_efficiency_mpg 0\n", "dtype: int64" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.isnull().sum()" ] }, { "cell_type": "code", "execution_count": 13, "id": "381675c1-51f3-405a-90ec-79ad61b694a8", "metadata": { "_sphinx_cell_id": "2fa986d8-5bf3-457c-a72c-cafaad2e1548", "id": "ctux01eQsN2p" }, "outputs": [ { "data": { "text/plain": [ "np.int64(4)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(data.isnull().sum() > 0).sum()" ] }, { "cell_type": "markdown", "id": "987507a8", "metadata": { "_sphinx_cell_id": "8f175bee-101c-4729-89d4-8bc419fc102a", "id": "987507a8" }, "source": [ "### Question 5" ] }, { "cell_type": "markdown", "id": "n0kM9M3O3Zuz", "metadata": { "_sphinx_cell_id": "98d0c256-c66f-4bd3-9753-073cf504af4e", "id": "n0kM9M3O3Zuz" }, "source": [ "What's the maximum fuel efficiency of cars from Asia in the dataset?" ] }, { "cell_type": "code", "execution_count": 15, "id": "SgnkG0qUvJMd", "metadata": { "_sphinx_cell_id": "92a9492e-a9cf-4f2d-b734-435bd4a51420", "colab": { "base_uri": "https://localhost:8080/", "height": 237 }, "executionInfo": { "elapsed": 247, "status": "ok", "timestamp": 1694208167900, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "SgnkG0qUvJMd", "outputId": "110e64c6-859b-4a16-9f3f-3fd0b4163c6e" }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    minmeanmax
    origin
    Asia6.88624514.97383023.759123
    Europe6.20097114.94253225.967222
    USA6.69548315.04020424.971452
    \n", "
    " ], "text/plain": [ " min mean max\n", "origin \n", "Asia 6.886245 14.973830 23.759123\n", "Europe 6.200971 14.942532 25.967222\n", "USA 6.695483 15.040204 24.971452" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.groupby('origin')['fuel_efficiency_mpg'].agg(['min', 'mean', 'max'])" ] }, { "cell_type": "code", "execution_count": 16, "id": "McMWSfTPtqDR", "metadata": { "_sphinx_cell_id": "e4a54337-e5c2-47d0-b83e-5884e2d2f667", "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 272, "status": "ok", "timestamp": 1694208169667, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "McMWSfTPtqDR", "outputId": "a1782e85-9771-4e22-f882-85e1bcd4ab72" }, "outputs": [ { "data": { "text/plain": [ "23.759122836520497" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[data.origin == 'Asia']['fuel_efficiency_mpg'].max()" ] }, { "cell_type": "markdown", "id": "a5758929", "metadata": { "_sphinx_cell_id": "9035bba6-3d78-4932-8442-d782e3572173", "id": "a5758929" }, "source": [ "### Question 6" ] }, { "cell_type": "markdown", "id": "0c359a2a", "metadata": { "_sphinx_cell_id": "d39a6613-08b1-4cb9-98c3-68d4f6c484cb", "id": "0c359a2a" }, "source": [ "\n", "\n", "1. Find the median value of `horsepower` column in the dataset.\n", "2. Next, calculate the most frequent value of the same `horsepower` column.\n", "3. Use `fillna` method to fill the missing values in `horsepower` column with the most frequent value from the previous step.\n", "4. Now, calculate the median value of `horsepower` once again.\n", "\n", "Has it changed?" ] }, { "cell_type": "code", "execution_count": 20, "id": "h50zj0Na5p6y", "metadata": { "_sphinx_cell_id": "8f5c559b-a5d5-4958-a1f1-3a4f175807a7", "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 277, "status": "ok", "timestamp": 1694210300971, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "h50zj0Na5p6y", "outputId": "07067b58-ce33-45f3-f784-ff689d336544" }, "outputs": [ { "data": { "text/plain": [ "149.0" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "median_screen = data['horsepower'].median()\n", "median_screen" ] }, { "cell_type": "code", "execution_count": 21, "id": "lW-cYPtprtGX", "metadata": { "_sphinx_cell_id": "220fdc56-360c-435c-8aa3-a5adf26155be", "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 246, "status": "ok", "timestamp": 1694208397959, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "lW-cYPtprtGX", "outputId": "1566f283-0337-463f-f5b2-7dc795f48114" }, "outputs": [ { "data": { "text/plain": [ "152.0" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['horsepower'].fillna(mode_screen).median()" ] }, { "cell_type": "markdown", "id": "7b1263c0", "metadata": { "_sphinx_cell_id": "d6d9c466-4f3f-4f8f-8202-0c5fc09e2325", "id": "7b1263c0" }, "source": [ "Yes, it's higher" ] }, { "cell_type": "markdown", "id": "3f44769a", "metadata": { "_sphinx_cell_id": "2cc5742e-9ae3-4e11-bcc6-bcb18096847f", "id": "3f44769a" }, "source": [ "### Question 7" ] }, { "cell_type": "markdown", "id": "fe2faf20", "metadata": { "_sphinx_cell_id": "a863614f-1d65-4eba-870e-09b08bc7b0f2", "id": "fe2faf20" }, "source": [ "1. Select all the cars from Europe\n", "2. Select only columns `vehicle_weight` and `model_year`\n", "3. Select the first 7 values\n", "4. Get the underlying NumPy array. Let's call it `X`.\n", "5. Compute matrix-matrix multiplication between the transpose of `X` and `X`. To get the transpose, use `X.T`. Let's call the result `XTX`.\n", "6. Invert `XTX`.\n", "7. Create an array `y` with values `[1100, 1300, 800, 900, 1000, 1100, 1200]`.\n", "8. Multiply the inverse of `XTX` with the transpose of `X`, and then multiply the result by `y`. Call the result `w`.\n", "9. What's the sum of all the elements of the result?" ] }, { "cell_type": "code", "execution_count": 40, "id": "35999647-d77e-4ac4-a6d3-906ea63fd798", "metadata": { "_sphinx_cell_id": "2f6fadc4-a0dc-4864-bd58-197bfe8cf38e" }, "outputs": [], "source": [ "df_test = data[data.origin == 'Asia'][['vehicle_weight', 'model_year']][:7]" ] }, { "cell_type": "code", "execution_count": 41, "id": "03f9b08a-a844-410c-a9c8-2531900fb77f", "metadata": { "_sphinx_cell_id": "e95205ed-3557-4389-ab8e-7a9983d674fe" }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    vehicle_weightmodel_year
    82714.2193102016
    122783.8689742010
    143582.6873682007
    202231.8081422011
    212659.4314512016
    342844.2275342014
    383761.9940382019
    \n", "
    " ], "text/plain": [ " vehicle_weight model_year\n", "8 2714.219310 2016\n", "12 2783.868974 2010\n", "14 3582.687368 2007\n", "20 2231.808142 2011\n", "21 2659.431451 2016\n", "34 2844.227534 2014\n", "38 3761.994038 2019" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_test" ] }, { "cell_type": "code", "execution_count": 42, "id": "BMSgjlTV6a48", "metadata": { "_sphinx_cell_id": "030ac842-3c41-4b1b-84d6-b096c28164b7", "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 241, "status": "ok", "timestamp": 1694209443845, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "BMSgjlTV6a48", "outputId": "94d51bb0-019c-4180-97da-201c850da575" }, "outputs": [ { "data": { "text/plain": [ "array([[ 5.71497081e-07, -8.34509443e-07],\n", " [-8.34509443e-07, 1.25380877e-06]])" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X = df_test.values\n", "XTX = X.T.dot(X)\n", "\n", "XTX_inv = np.linalg.inv(XTX)\n", "XTX_inv" ] }, { "cell_type": "code", "execution_count": 43, "id": "0AoSPilS6a7S", "metadata": { "_sphinx_cell_id": "793d6bd7-8729-4e89-a7e5-530e9ae9a486", "executionInfo": { "elapsed": 5, "status": "ok", "timestamp": 1694209445937, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "0AoSPilS6a7S" }, "outputs": [], "source": [ "y = np.array([1100, 1300, 800, 900, 1000, 1100, 1200])" ] }, { "cell_type": "code", "execution_count": 44, "id": "dz3BmJfIvfdp", "metadata": { "_sphinx_cell_id": "e6f129ed-d498-4bc5-97cc-8e665758b8ab", "executionInfo": { "elapsed": 3, "status": "ok", "timestamp": 1694209446791, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "dz3BmJfIvfdp" }, "outputs": [], "source": [ "w = (XTX_inv @ X.T) @ y" ] }, { "cell_type": "code", "execution_count": 45, "id": "5e62860c-4afe-4a33-942f-ec238924b027", "metadata": { "_sphinx_cell_id": "696bbab1-0a2b-4871-a21c-08247aeca787", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "array([0.01386421, 0.5049067 ])" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w" ] }, { "cell_type": "code", "execution_count": 46, "id": "ouoIQygN6bD3", "metadata": { "_sphinx_cell_id": "41648b80-0d97-42e1-be74-18b85568d7a1", "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 5, "status": "ok", "timestamp": 1694209447851, "user": { "displayName": "Timur Kamaliev", "userId": "12270392991844786490" }, "user_tz": -180 }, "id": "ouoIQygN6bD3", "outputId": "895ebf5f-51b4-4ec5-ae5b-dce89abb2cb5" }, "outputs": [ { "data": { "text/plain": [ "np.float64(0.5187709081074016)" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(w)" ] }, { "cell_type": "markdown", "id": "70e3eaa9", "metadata": { "_sphinx_cell_id": "ed49fe3a-6db2-4032-ae7f-866d37303034", "id": "70e3eaa9" }, "source": [ "> **Note**: we just implemented normal equation\n", "\n", "\n", "$$w = (X^T X)^{-1} X^T y$$\n", "\n", "\n", "We'll talk about it more in the next week (Machine Learning for Regression)" ] } ], "metadata": { "colab": { "provenance": [] }, "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.13.5" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: cohorts/2025/02-regression/homework.md ================================================ ## Homework > Note: sometimes your answer doesn't match one of > the options exactly. That's fine. > Select the option that's closest to your solution. > If it's exactly in between two options, select the higher value. ### Dataset For this homework, we'll use the Car Fuel Efficiency dataset. Download it from here. You can do it with wget: ```bash wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/car_fuel_efficiency.csv ``` The goal of this homework is to create a regression model for predicting the car fuel efficiency (column `'fuel_efficiency_mpg'`). ### Preparing the dataset Use only the following columns: * `'engine_displacement'`, * `'horsepower'`, * `'vehicle_weight'`, * `'model_year'`, * `'fuel_efficiency_mpg'` ### EDA * Look at the `fuel_efficiency_mpg` variable. Does it have a long tail? ### Question 1 There's one column with missing values. What is it? * `'engine_displacement'` * `'horsepower'` * `'vehicle_weight'` * `'model_year'` ### Question 2 What's the median (50% percentile) for variable `'horsepower'`? - 49 - 99 - 149 - 199 ### Prepare and split the dataset * Shuffle the dataset (the filtered one you created above), use seed `42`. * Split your data in train/val/test sets, with 60%/20%/20% distribution. Use the same code as in the lectures ### Question 3 * We need to deal with missing values for the column from Q1. * We have two options: fill it with 0 or with the mean of this variable. * Try both options. For each, train a linear regression model without regularization using the code from the lessons. * For computing the mean, use the training only! * Use the validation dataset to evaluate the models and compare the RMSE of each option. * Round the RMSE scores to 2 decimal digits using `round(score, 2)` * Which option gives better RMSE? Options: - With 0 - With mean - Both are equally good ### Question 4 * Now let's train a regularized linear regression. * For this question, fill the NAs with 0. * Try different values of `r` from this list: `[0, 0.01, 0.1, 1, 5, 10, 100]`. * Use RMSE to evaluate the model on the validation dataset. * Round the RMSE scores to 2 decimal digits. * Which `r` gives the best RMSE? If multiple options give the same best RMSE, select the smallest `r`. Options: - 0 - 0.01 - 1 - 10 - 100 ### Question 5 * We used seed 42 for splitting the data. Let's find out how selecting the seed influences our score. * Try different seed values: `[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]`. * For each seed, do the train/validation/test split with 60%/20%/20% distribution. * Fill the missing values with 0 and train a model without regularization. * For each seed, evaluate the model on the validation dataset and collect the RMSE scores. * What's the standard deviation of all the scores? To compute the standard deviation, use `np.std`. * Round the result to 3 decimal digits (`round(std, 3)`) What's the value of std? - 0.001 - 0.006 - 0.060 - 0.600 > Note: Standard deviation shows how different the values are. > If it's low, then all values are approximately the same. > If it's high, the values are different. > If standard deviation of scores is low, then our model is *stable*. ### Question 6 * Split the dataset like previously, use seed 9. * Combine train and validation datasets. * Fill the missing values with 0 and train a model with `r=0.001`. * What's the RMSE on the test dataset? Options: - 0.15 - 0.515 - 5.15 - 51.5 ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2025/homework/hw02 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2025/02-regression/homework_2.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "id": "c451dfc9", "metadata": { "_sphinx_cell_id": "5daa4957-2082-4ef7-a825-8f76a534e3e0" }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "import seaborn as sns" ] }, { "cell_type": "code", "execution_count": 2, "id": "b73eb3e7", "metadata": { "_sphinx_cell_id": "c0d16f30-d2fc-43a5-a7ba-83fa90e5fb07" }, "outputs": [], "source": [ "df = pd.read_csv(\"https://raw.githubusercontent.com/alexeygrigorev/datasets/master/car_fuel_efficiency.csv\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "_sphinx_cell_id": "3e333ee7-f804-41e5-86d5-13fea429b34f" }, "outputs": [ { "data": { "text/plain": [ "Index(['engine_displacement', 'num_cylinders', 'horsepower', 'vehicle_weight',\n", " 'acceleration', 'model_year', 'origin', 'fuel_type', 'drivetrain',\n", " 'num_doors', 'fuel_efficiency_mpg'],\n", " dtype='object')" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "_sphinx_cell_id": "a1332cd4-99d5-4ffa-afa1-b1d6a52558a9" }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    engine_displacementnum_cylindershorsepowervehicle_weightaccelerationmodel_yearoriginfuel_typedrivetrainnum_doorsfuel_efficiency_mpg
    01703.0159.03413.43375917.72003EuropeGasolineAll-wheel drive0.013.231729
    11305.097.03149.66493417.82007USAGasolineFront-wheel drive0.013.688217
    2170NaN78.03079.03899715.12018EuropeGasolineFront-wheel drive0.014.246341
    32204.0NaN2542.39240220.22009USADieselAll-wheel drive2.016.912736
    42101.0140.03460.87099014.42009EuropeGasolineAll-wheel drive2.012.488369
    \n", "
    " ], "text/plain": [ " engine_displacement num_cylinders horsepower vehicle_weight \\\n", "0 170 3.0 159.0 3413.433759 \n", "1 130 5.0 97.0 3149.664934 \n", "2 170 NaN 78.0 3079.038997 \n", "3 220 4.0 NaN 2542.392402 \n", "4 210 1.0 140.0 3460.870990 \n", "\n", " acceleration model_year origin fuel_type drivetrain num_doors \\\n", "0 17.7 2003 Europe Gasoline All-wheel drive 0.0 \n", "1 17.8 2007 USA Gasoline Front-wheel drive 0.0 \n", "2 15.1 2018 Europe Gasoline Front-wheel drive 0.0 \n", "3 20.2 2009 USA Diesel All-wheel drive 2.0 \n", "4 14.4 2009 Europe Gasoline All-wheel drive 2.0 \n", "\n", " fuel_efficiency_mpg \n", "0 13.231729 \n", "1 13.688217 \n", "2 14.246341 \n", "3 16.912736 \n", "4 12.488369 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 9, "id": "7da45f27-bb6c-4f80-bba3-dc78fe0d9a0a", "metadata": { "_sphinx_cell_id": "79788557-4b44-49bb-97a7-0cae1617e3e3" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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Zxw5csQ4cuSIIclYvXq1ceTIEfudSI8//rgREhJivPbaa8ZHH31kTJw40YiOjja+++47+zpGjx5tPPvss/bpzZs3GwEBAUZGRobxySefGPfff78REhJiFBUVuX18htH4GKurq40f/ehHRo8ePYyjR48ahYWF9k9VVZV9HReP8eGHHzb27dtn5OXlGe+++64RHx9vdO3a1SgpKfHEEBsd47lz54xHHnnEyMrKMvLy8ow9e/YYN998s9GnTx+jsrLSvo62vB8blJeXGx06dDCef/55p+vw9v04Z84cIzg42Ni3b5/D7+K3335r7/OrX/3KiIyMNPbu3WscPnzYsNlshs1mc1hP3759jVdeecU+fSXfY3e53BjLy8uN4cOHGwMGDDByc3Md+tTW1jod45X+jnvLGHNzc420tDTj8OHDRl5envHaa68ZN9xwgzFq1CiH9XjzfmwKwk4b9OabbxqSjJycnEvabr31ViMpKck+/dBDDxmRkZGGv7+/YbVajTvvvNP44IMP3Fjt5b399tuGpEs+DeOor683Fi9ebFitViMgIMAYM2bMJWOPiooyli5d6jDv2WeftY992LBhxsGDB900oks1Nsa8vDynbZKMt99+276Oi8f405/+1IiIiDD8/f2N66+/3vjpT39q5Obmun9w/19jY/z222+NsWPHGt26dTP8/PyMqKgoY/bs2ZeElra8Hxu88MILRvv27Y2ysjKn6/D2/ejqd3HDhg32Pt99953x61//2rjuuuuMDh06GJMnTzYKCwsvWc9/L3Ml32N3udwYXe1nSUZeXp7DehqWudLfcXe53Bjz8/ONUaNGGV26dDECAgKM733ve8bChQuN8vLyS9bjrfuxKXjrOQAAMDWu2QEAAKZG2AEAAKZG2AEAAKZG2AEAAKZG2AEAAKZG2AEAAKZG2AEAAKZG2AEAAKZG2AFMyDAM3X///erSpYssFov9nTdXY9myZRo0aNBVr6fBp59+qhEjRigwMNC+3ovnnTp1qkn133vvvZo0aVKL1QjAHHw9XQCAlrdr1y5lZGRo37599jcve5ulS5eqY8eOysnJUadOnZzOCwkJUWFh4RXX/8c//lE8FB7AxQg7gAk1vDV75MiRni7FpZMnTyoxMVFRUVGNzgsPD7/idQYHB7dojQDMgdNYgMnce++9mjdvnvLz82WxWNSrVy/16tVLTz/9tEO/QYMGadmyZfbpsrIy3XffferWrZuCgoI0evRoffjhh82u4y9/+YtiYmIUGBiofv366bnnnrO3WSwWZWdnKy0tTRaLRcuWLXM6z9lprOPHj+uuu+5SUFCQOnfurFtuuUUnT560j/2/T2PV19dr5cqVio6OVvv27RUXF6d//OMf9vZ9+/bJYrEoMzNTQ4YMUYcOHTRy5Ejl5OQ4jGXbtm0aOnSoAgMD1bVrV02ePFmSlJaWpv79+18y9kGDBmnx4sWX/Rk11Pv73/9eVqtVISEhSktLU21trRYuXKguXbqoR48e2rBhg32Zhp/J5s2bNXLkSAUGBqp///7av3+/w7pff/119enTR4GBgbr99tu1ceNGWSwWlZWVXbYuwGwIO4DJ/PGPf1RaWpp69OihwsJCvf/++1e03E9+8hOVlJTojTfeUHZ2tm6++WaNGTNGZ8+ebXINL774opYsWaLHHntMJ06c0O9//3stXrxYGzdulCQVFhbqpptu0sMPP6zCwkI98sgjTudd7KuvvtKoUaMUEBCgvXv3Kjs7WzNnzlRtba3TOlauXKm//vWvWrt2rY4fP6758+fr5z//+SXB4NFHH9Uf/vAHHT58WL6+vpo5c6a9bceOHZo8ebLuvPNOHTlyRJmZmRo2bJgkaebMmTpx4oTDz/jIkSP66KOP9Mtf/vKKflZ79+5VQUGB3nnnHa1evVpLly7VXXfdpeuuu06HDh3Sr371Kz3wwAP68ssvHZZbuHChHn74YR05ckQ2m00TJkxQaWmpJCkvL08//vGPNWnSJH344Yd64IEH9Oijj15RPYApefal6wBaw5o1a4yoqCj7dFRUlLFmzRqHPnFxccbSpUsNwzCMf/7zn0ZQUJBRWVnp0Kd3797GCy+8YBiGYSxdutSIi4u7ou337t3b2LRpk8O8FStWGDabzen2Xc3Ly8szJBlHjhwxDMMwUlNTjejoaKO6utrpdpOSkoyJEycahmEYlZWVRocOHYwDBw449Jk1a5Zxzz33GIZhGG+//bYhydizZ4+9fceOHYYk47vvvjMMwzBsNpsxffp0l2MdP368MWfOHPv0vHnzjNtuu81l/4vrjYqKMurq6uzz+vbta9xyyy326draWqNjx47GSy+9ZBjGf34mjz/+uL1PTU2N0aNHD+OJJ54wDMMwUlJSjP79+zts69FHHzUkGd98880V1QaYCdfsANCHH36o8+fPKzQ01GH+d999Zz9FdKUuXLigkydPatasWZo9e7Z9fm1t7VVfU3P06FHdcsst8vPzu2zf3Nxcffvtt7rjjjsc5ldXV+v73/++w7yBAwfa/xwRESFJKikpUWRkpI4ePeowjovNnj1bM2fO1OrVq+Xj46NNmzZpzZo1Vzymm266ST4+/znIbrVaHU6NtWvXTqGhoSopKXFYzmaz2f/s6+urIUOG6MSJE5KknJwcDR061KF/w9Eo4FpE2AGuAT4+PpfcpVRTU2P/8/nz5xUREaF9+/ZdsmxISEiTtnX+/HlJ0p///GcNHz7coa1du3ZNWtfF2rdv3+Q6duzYoeuvv96hLSAgwGH6v8OTxWKR9O/rfa5kmxMmTFBAQIC2bt0qf39/1dTU6Mc//vEV13lxcLNYLE7nNdQDoOkIO8A1oFu3biosLLRPV1RUKC8vzz598803q6ioSL6+vurVq9dVbctqtap79+76/PPPNX369Kta18UGDhyojRs3qqam5rJHd2JjYxUQEKD8/HzdeuutV7XNzMxMl9fg+Pr6KikpSRs2bJC/v7+mTZvWpFDWXAcPHtSoUaMk/fuoWXZ2tubOnStJ6tu3r3bu3OnQ/0qv3QLMiLADXANGjx6tjIwMTZgwQSEhIVqyZInDUZb4+HjZbDZNmjRJq1at0o033qiCggL7xblDhgxp0vaWL1+u3/zmNwoODta4ceNUVVWlw4cP65tvvtGCBQuaPY65c+fq2Wef1bRp05Samqrg4GAdPHhQw4YNU9++fR36du7cWY888ojmz5+v+vp6/fCHP1R5ebneffddBQUFKSkp6Yq2uXTpUo0ZM0a9e/fWtGnTVFtbq507dyolJcXe57777lNMTIwk6d133232+JoiPT1dffr0UUxMjNasWaNvvvnGfmH1Aw88oNWrVyslJUWzZs3S0aNHlZGRIek/R66Aawl3YwHXgNTUVN1666266667lJiYqEmTJql37972dovFop07d2rUqFH65S9/qRtvvFHTpk3TF198IavV2uTt3XffffrLX/6iDRs2aMCAAbr11luVkZGh6OjoqxpHaGio9u7dq/Pnz+vWW2/V4MGD9ec//9nlUZ4VK1Zo8eLFWrlypWJiYjRu3Djt2LGjSXXcdttt2rJli15//XUNGjRIo0eP1nvvvefQp0+fPho5cqT69et3yam71vL444/r8ccfV1xcnP71r3/p9ddftz98MTo6Wv/4xz/0yiuvaODAgXr++eftd2NdfAoPuBZYjItP5AMAmsQwDPXp00e//vWvr+rI1ZU4deqUoqOjdeTIkSa9vuOxxx7T2rVrdfr06dYrDvBSnMYCgKtw5swZbd68WUVFRVf8bB13eO655zR06FCFhobq3Xff1ZNPPmm/pge41hB2ADRZw7usnHnjjTd0yy23uLEazwoLC1PXrl31pz/9Sdddd51Dmyd/Tp999pl+97vf6ezZs4qMjNTDDz+s1NTUVtse4M04jQWgyXJzc122XX/99W65G6kt4OcEeAfCDgAAMDXuxgIAAKZG2AEAAKZG2AEAAKZG2AEAAKZG2AEAAKZG2AEAAKZG2AEAAKZG2AEAAKb2/wDeel3G7RnUGwAAAABJRU5ErkJggg==", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.histplot(df['fuel_efficiency_mpg'])" ] }, { "cell_type": "code", "execution_count": 10, "id": "48706b7b-5900-4540-b5fd-2ca54f65461a", "metadata": { "_sphinx_cell_id": "231ecc1f-9c7c-47f6-a688-ed747c690098" }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    engine_displacementnum_cylindershorsepowervehicle_weightaccelerationmodel_yearnum_doorsfuel_efficiency_mpg
    count9704.0000009222.0000008996.0000009704.0000008774.0000009704.0000009202.0000009704.000000
    mean199.7083683.962481149.6572923001.28099315.0219282011.484027-0.00641214.985243
    std49.4553191.99932329.879555497.8948602.5103396.6598081.0481622.556468
    min10.0000000.00000037.000000952.6817616.0000002000.000000-4.0000006.200971
    25%170.0000003.000000130.0000002666.24898513.3000002006.000000-1.00000013.267459
    50%200.0000004.000000149.0000002993.22629615.0000002012.0000000.00000015.006037
    75%230.0000005.000000170.0000003334.95703916.7000002017.0000001.00000016.707965
    max380.00000013.000000271.0000004739.07708924.3000002023.0000004.00000025.967222
    \n", "
    " ], "text/plain": [ " engine_displacement num_cylinders horsepower vehicle_weight \\\n", "count 9704.000000 9222.000000 8996.000000 9704.000000 \n", "mean 199.708368 3.962481 149.657292 3001.280993 \n", "std 49.455319 1.999323 29.879555 497.894860 \n", "min 10.000000 0.000000 37.000000 952.681761 \n", "25% 170.000000 3.000000 130.000000 2666.248985 \n", "50% 200.000000 4.000000 149.000000 2993.226296 \n", "75% 230.000000 5.000000 170.000000 3334.957039 \n", "max 380.000000 13.000000 271.000000 4739.077089 \n", "\n", " acceleration model_year num_doors fuel_efficiency_mpg \n", "count 8774.000000 9704.000000 9202.000000 9704.000000 \n", "mean 15.021928 2011.484027 -0.006412 14.985243 \n", "std 2.510339 6.659808 1.048162 2.556468 \n", "min 6.000000 2000.000000 -4.000000 6.200971 \n", "25% 13.300000 2006.000000 -1.000000 13.267459 \n", "50% 15.000000 2012.000000 0.000000 15.006037 \n", "75% 16.700000 2017.000000 1.000000 16.707965 \n", "max 24.300000 2023.000000 4.000000 25.967222 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe()" ] }, { "cell_type": "code", "execution_count": 22, "id": "992a75b5", "metadata": { "_sphinx_cell_id": "c8944844-faa3-490e-adcc-7bfcb7e7a4f2" }, "outputs": [], "source": [ "columns = [\n", " 'engine_displacement',\n", " 'horsepower',\n", " 'vehicle_weight',\n", " 'model_year',\n", " 'fuel_efficiency_mpg'\n", "]\n", "\n", "df = df[columns]" ] }, { "cell_type": "markdown", "id": "b25b0177", "metadata": { "_sphinx_cell_id": "07be0bc9-4cc7-434f-ab2c-9cb2a913b559" }, "source": [ "**Question 1**: Feature with missing values" ] }, { "cell_type": "code", "execution_count": 23, "id": "5f9ca847", "metadata": { "_sphinx_cell_id": "e1fc4d59-c8d4-42a2-b809-5a38b063ad76" }, "outputs": [ { "data": { "text/plain": [ "engine_displacement 0\n", "horsepower 708\n", "vehicle_weight 0\n", "model_year 0\n", "fuel_efficiency_mpg 0\n", "dtype: int64" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isnull().sum()" ] }, { "cell_type": "markdown", "id": "5875e9d3", "metadata": { "_sphinx_cell_id": "798e6ea4-d5a3-4732-ba0b-b2e27fe0f1fa" }, "source": [ "Answer: `horsepower`" ] }, { "cell_type": "markdown", "id": "cedf28ee", "metadata": { "_sphinx_cell_id": "7761e1d8-9b98-48cf-b542-4f7e4be89e73" }, "source": [ "**Question 2**: Median for horsepower" ] }, { "cell_type": "code", "execution_count": 24, "id": "aa66e0f5-a024-4817-8532-6927cecafb01", "metadata": { "_sphinx_cell_id": "bd18aef2-f607-4569-b3e0-5431e27a31ee" }, "outputs": [ { "data": { "text/plain": [ "149.0" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['horsepower'].median()" ] }, { "cell_type": "markdown", "id": "aefaa53f", "metadata": { "_sphinx_cell_id": "0bcf3932-468d-42ed-8eb1-b144690c2f39" }, "source": [ "Splitting and preparing the dataset" ] }, { "cell_type": "code", "execution_count": 19, "id": "e4335d7d", "metadata": { "_sphinx_cell_id": "06a558e6-a947-49c6-89ad-a7c49d829bbb" }, "outputs": [], "source": [ "n = len(df)\n", "\n", "n_val = int(0.2 * n)\n", "n_test = int(0.2 * n)\n", "n_train = n - (n_val + n_test)\n", "\n", "idx = np.arange(n)\n", "np.random.seed(42)\n", "np.random.shuffle(idx)\n", "\n", "df_shuffled = df.iloc[idx]\n", "\n", "df_train = df_shuffled.iloc[:n_train].copy()\n", "df_val = df_shuffled.iloc[n_train:n_train+n_val].copy()\n", "df_test = df_shuffled.iloc[n_train+n_val:].copy()\n", "\n", "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 20, "id": "af8ec23d", "metadata": { "_sphinx_cell_id": "47ed2aa8-0709-4f1a-bee7-ea5f89e3bc18" }, "outputs": [], "source": [ "y_train = df_train.fuel_efficiency_mpg.values\n", "y_val = df_val.fuel_efficiency_mpg.values\n", "y_test = df_test.fuel_efficiency_mpg.values\n", "\n", "del df_train['fuel_efficiency_mpg']\n", "del df_val['fuel_efficiency_mpg']\n", "del df_test['fuel_efficiency_mpg']" ] }, { "cell_type": "markdown", "id": "ff693918", "metadata": { "_sphinx_cell_id": "90d86970-a4ef-45cd-9092-0b1395282970" }, "source": [ "**Question 3**: Mean vs zero" ] }, { "cell_type": "code", "execution_count": 21, "id": "da978b10", "metadata": { "_sphinx_cell_id": "9ad758b1-3e28-45ef-acff-5b6bc955ce3b" }, "outputs": [], "source": [ "def train_linear_regression(X, y):\n", " ones = np.ones(X.shape[0])\n", " X = np.column_stack([ones, X])\n", "\n", " XTX = X.T.dot(X)\n", " XTX_inv = np.linalg.inv(XTX)\n", " w = XTX_inv.dot(X.T).dot(y)\n", " \n", " return w[0], w[1:]\n", "\n", "def prepare_X(df, fillna_value):\n", " df = df.fillna(fillna_value)\n", " X = df.values\n", " return X\n", "\n", "def rmse(y, y_pred):\n", " error = y_pred - y\n", " mse = (error ** 2).mean()\n", " return np.sqrt(mse)" ] }, { "cell_type": "markdown", "id": "1ac2bcfd", "metadata": { "_sphinx_cell_id": "82204b38-3036-4bb2-9197-ca6bcd84d941" }, "source": [ "with mean:" ] }, { "cell_type": "code", "execution_count": 25, "id": "667f94fc", "metadata": { "_sphinx_cell_id": "6971debe-de2f-4e05-a4f2-54c481d76bb5" }, "outputs": [ { "data": { "text/plain": [ "np.float64(0.463389742732731)" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean = df_train.horsepower.mean()\n", "\n", "X_train = prepare_X(df_train, fillna_value=mean)\n", "w_0, w = train_linear_regression(X_train, y_train)\n", "\n", "X_val = prepare_X(df_val, fillna_value=mean)\n", "y_pred = w_0 + X_val.dot(w)\n", "\n", "rmse(y_val, y_pred)" ] }, { "cell_type": "markdown", "id": "86b1b2a4", "metadata": { "_sphinx_cell_id": "3eacf0eb-87a1-4da3-86b3-ee0b3a9ef4c1" }, "source": [ "with 0:" ] }, { "cell_type": "code", "execution_count": 26, "id": "b0ae2b32", "metadata": { "_sphinx_cell_id": "35da4e05-ac04-4240-bbbb-b7a91fc792e0" }, "outputs": [ { "data": { "text/plain": [ "np.float64(0.5060986960748592)" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train = prepare_X(df_train, fillna_value=0)\n", "w_0, w = train_linear_regression(X_train, y_train)\n", "\n", "X_val = prepare_X(df_val, fillna_value=0)\n", "y_pred = w_0 + X_val.dot(w)\n", "\n", "rmse(y_val, y_pred)" ] }, { "cell_type": "markdown", "id": "dfd537dc", "metadata": { "_sphinx_cell_id": "220d8726-f3bb-4be3-8570-b5e9b359aafe" }, "source": [ "The answer: **with median**" ] }, { "cell_type": "markdown", "id": "09a8e086", "metadata": { "_sphinx_cell_id": "e248edb8-0d68-4873-9ccd-5c58ab1f3b08" }, "source": [ "**Question 4**: Regularization" ] }, { "cell_type": "code", "execution_count": 27, "id": "9642eb7d", "metadata": { "_sphinx_cell_id": "df63bcf6-5f8b-4e69-8177-f326a599eb2d" }, "outputs": [], "source": [ "def train_linear_regression_reg(X, y, r=0.0):\n", " ones = np.ones(X.shape[0])\n", " X = np.column_stack([ones, X])\n", "\n", " XTX = X.T.dot(X)\n", " reg = r * np.eye(XTX.shape[0])\n", " XTX = XTX + reg\n", "\n", " XTX_inv = np.linalg.inv(XTX)\n", " w = XTX_inv.dot(X.T).dot(y)\n", " \n", " return w[0], w[1:]" ] }, { "cell_type": "code", "execution_count": 31, "id": "110bbed7", "metadata": { "_sphinx_cell_id": "4347bcd2-5db3-427e-aca0-fd392334d78c" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0 0.50610\n", " 0.01 0.50595\n", " 1 0.51186\n", " 10 0.51266\n", " 100 0.51275\n" ] } ], "source": [ "for r in [0, 0.01, 1, 10, 100]:\n", " w_0, w = train_linear_regression_reg(X_train, y_train, r=r)\n", " y_pred = w_0 + X_val.dot(w)\n", " rmse_val = rmse(y_val, y_pred)\n", " print('%06s %0.5f' % (r, rmse_val))" ] }, { "cell_type": "markdown", "id": "58525d07", "metadata": { "_sphinx_cell_id": "98baf689-039c-4436-9ce6-4098dbe94c07" }, "source": [ "The answer: `r=0`" ] }, { "cell_type": "markdown", "id": "f330354e", "metadata": { "_sphinx_cell_id": "38e79ed6-f5e7-4874-b6c0-22f4c0bf013d" }, "source": [ "**Question 5**: Standard deviation of RMSE" ] }, { "cell_type": "code", "execution_count": 33, "id": "c8bf8f06", "metadata": { "_sphinx_cell_id": "dfec3f60-0b12-4d60-9862-35a4007dfe73" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 0.5206531296292951\n", "1 0.5213388912860217\n", "2 0.5228069974785726\n", "3 0.5159516741108942\n", "4 0.5109129460108117\n", "5 0.5283406460133415\n", "6 0.5313910658151165\n", "7 0.5090670387365963\n", "8 0.5147399129426932\n", "9 0.5131865908408015\n" ] } ], "source": [ "rmses = []\n", "\n", "for s in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:\n", "\n", " n = len(df)\n", "\n", " n_val = int(0.2 * n)\n", " n_test = int(0.2 * n)\n", " n_train = n - (n_val + n_test)\n", "\n", " idx = np.arange(n)\n", " np.random.seed(s)\n", " np.random.shuffle(idx)\n", "\n", " df_shuffled = df.iloc[idx]\n", "\n", " df_train = df_shuffled.iloc[:n_train].copy()\n", " df_val = df_shuffled.iloc[n_train:n_train+n_val].copy()\n", " df_test = df_shuffled.iloc[n_train+n_val:].copy()\n", "\n", " df_train = df_train.reset_index(drop=True)\n", " df_val = df_val.reset_index(drop=True)\n", " df_test = df_test.reset_index(drop=True)\n", " \n", " y_train = df_train.fuel_efficiency_mpg.values\n", " y_val = df_val.fuel_efficiency_mpg.values\n", " y_test = df_test.fuel_efficiency_mpg.values\n", "\n", " del df_train['fuel_efficiency_mpg']\n", " del df_val['fuel_efficiency_mpg']\n", " del df_test['fuel_efficiency_mpg']\n", "\n", " X_train = prepare_X(df_train, fillna_value=0)\n", " w_0, w = train_linear_regression(X_train, y_train)\n", "\n", " X_val = prepare_X(df_val, fillna_value=0)\n", " y_pred = w_0 + X_val.dot(w)\n", "\n", " result = rmse(y_val, y_pred)\n", " print(s, result)\n", " \n", " rmses.append(result)" ] }, { "cell_type": "code", "execution_count": 34, "id": "a1ea59b7", "metadata": { "_sphinx_cell_id": "ec983dd3-86c0-4dd7-8ad7-b3bcccafa323" }, "outputs": [ { "data": { "text/plain": [ "np.float64(0.006989446425721602)" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.std(rmses)" ] }, { "cell_type": "markdown", "id": "c29fe6fa", "metadata": { "_sphinx_cell_id": "b7df5a7e-e964-4051-8156-c0b59fda37da" }, "source": [ "**Question 6**: RMSE for Test" ] }, { "cell_type": "code", "execution_count": 35, "id": "b9d8d0e4", "metadata": { "_sphinx_cell_id": "eb9c29a8-b80f-4fa4-a1ec-9a0da53fea95" }, "outputs": [], "source": [ "n = len(df)\n", "\n", "n_val = int(0.2 * n)\n", "n_test = int(0.2 * n)\n", "n_train = n - (n_val + n_test)\n", "\n", "idx = np.arange(n)\n", "np.random.seed(9)\n", "np.random.shuffle(idx)\n", "\n", "df_shuffled = df.iloc[idx]\n", "\n", "df_train = df_shuffled.iloc[:n_train].copy()\n", "df_val = df_shuffled.iloc[n_train:n_train+n_val].copy()\n", "df_test = df_shuffled.iloc[n_train+n_val:].copy()\n", "\n", "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)\n", "\n", "y_train = df_train.fuel_efficiency_mpg.values\n", "y_val = df_val.fuel_efficiency_mpg.values\n", "y_test = df_test.fuel_efficiency_mpg.values\n", "\n", "del df_train['fuel_efficiency_mpg']\n", "del df_val['fuel_efficiency_mpg']\n", "del df_test['fuel_efficiency_mpg']" ] }, { "cell_type": "code", "execution_count": 36, "id": "dfe80373", "metadata": { "_sphinx_cell_id": "28cbba47-6e70-4e07-b6e2-b89609c5c077" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.5156261299167999\n" ] } ], "source": [ "df_full_train = pd.concat([df_train, df_val])\n", "df_full_train = df_full_train.reset_index(drop=True)\n", "\n", "X_full_train = prepare_X(df_full_train, fillna_value=0)\n", "y_full_train = np.concatenate([y_train, y_val])\n", "w_0, w = train_linear_regression_reg(X_full_train, y_full_train, r=0.001)\n", "\n", "X_test = prepare_X(df_test, fillna_value=0)\n", "y_pred = w_0 + X_test.dot(w)\n", "\n", "result = rmse(y_test, y_pred)\n", "print(result)" ] } ], "metadata": { "__sphinx_history__.5839cd5f-a2c9-4cb8-941f-d0a2d1b22527": "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", "kernelspec": { "display_name": "base", "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.13.5" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: cohorts/2025/03-classification/homework.md ================================================ ## Homework > Note: sometimes your answer doesn't match one of the options exactly. > That's fine. > Select the option that's closest to your solution. > If it's exactly in between two options, select the higher value. ### Dataset In this homework, we will use the lead scoring dataset. Download it from [here](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/course_lead_scoring.csv). Or you can do it with `wget`: ```bash wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/course_lead_scoring.csv ``` In this dataset our desired target for classification task will be `converted` variable - has the client signed up to the platform or not. ### Data preparation * Check if the missing values are presented in the features. * If there are missing values: * For categorical features, replace them with 'NA' * For numerical features, replace with with 0.0 ### Question 1 What is the most frequent observation (mode) for the column `industry`? - `NA` - `technology` - `healthcare` - `retail` ### Question 2 Create the [correlation matrix](https://www.google.com/search?q=correlation+matrix) for the numerical features of your dataset. In a correlation matrix, you compute the correlation coefficient between every pair of features. What are the two features that have the biggest correlation? - `interaction_count` and `lead_score` - `number_of_courses_viewed` and `lead_score` - `number_of_courses_viewed` and `interaction_count` - `annual_income` and `interaction_count` Only consider the pairs above when answering this question. ### Split the data - Split your data in train/val/test sets with 60%/20%/20% distribution. - Use Scikit-Learn for that (the `train_test_split` function) and set the seed to `42`. - Make sure that the target value `converted` is not in your dataframe. ### Question 3 - Calculate the mutual information score between `converted` and other categorical variables in the dataset. Use the training set only. - Round the scores to 2 decimals using `round(score, 2)`. Which of these variables has the biggest mutual information score? - `industry` - `location` - `lead_source` - `employment_status` ### Question 4 - Now let's train a logistic regression. - Remember that we have several categorical variables in the dataset. Include them using one-hot encoding. - Fit the model on the training dataset. - To make sure the results are reproducible across different versions of Scikit-Learn, fit the model with these parameters: - `model = LogisticRegression(solver='liblinear', C=1.0, max_iter=1000, random_state=42)` - Calculate the accuracy on the validation dataset and round it to 2 decimal digits. What accuracy did you get? - 0.64 - 0.74 - 0.84 - 0.94 ### Question 5 - Let's find the least useful feature using the _feature elimination_ technique. - Train a model using the same features and parameters as in Q4 (without rounding). - Now exclude each feature from this set and train a model without it. Record the accuracy for each model. - For each feature, calculate the difference between the original accuracy and the accuracy without the feature. Which of following feature has the smallest difference? - `'industry'` - `'employment_status'` - `'lead_score'` > **Note**: The difference doesn't have to be positive. ### Question 6 - Now let's train a regularized logistic regression. - Let's try the following values of the parameter `C`: `[0.01, 0.1, 1, 10, 100]`. - Train models using all the features as in Q4. - Calculate the accuracy on the validation dataset and round it to 3 decimal digits. Which of these `C` leads to the best accuracy on the validation set? - 0.01 - 0.1 - 1 - 10 - 100 > **Note**: If there are multiple options, select the smallest `C`. ## Submit the results - Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2025/homework/hw03 - If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2025/03-classification/homework_3.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "e7f165fc", "metadata": { "_sphinx_cell_id": "66ec4656-52b0-4655-82cb-5fdce42c9a65" }, "source": [ "# Homework #3" ] }, { "cell_type": "markdown", "id": "efbc91ba", "metadata": { "_sphinx_cell_id": "7074185a-94db-4514-8ae2-b28acfbfa9fa" }, "source": [ "## Dataset" ] }, { "cell_type": "markdown", "id": "c6e10879", "metadata": { "_sphinx_cell_id": "df670748-99d6-454e-a6f7-0f6ea1069765" }, "source": [ "In this homework, we will use Course Management Platform lead scoring dataset. Download it from [here](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/course_lead_scoring.csv)." ] }, { "cell_type": "code", "execution_count": 1, "id": "b801170a", "metadata": { "_sphinx_cell_id": "d09d5777-eb88-476c-9696-54332e0b11f7", "tags": [] }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import mutual_info_score, accuracy_score\n", "\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "code", "execution_count": 2, "id": "392e58e0", "metadata": { "_sphinx_cell_id": "0b32b05b-df14-4836-9649-ba779ef5fb10", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "(1462, 9)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = pd.read_csv('https://raw.githubusercontent.com/alexeygrigorev/datasets/master/course_lead_scoring.csv')\n", "data.shape" ] }, { "cell_type": "code", "execution_count": 3, "id": "b9afaf70", "metadata": { "_sphinx_cell_id": "e4c5a902-cd0f-4548-89c4-caccdaa3811d", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 1462 entries, 0 to 1461\n", "Data columns (total 9 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 lead_source 1334 non-null object \n", " 1 industry 1328 non-null object \n", " 2 number_of_courses_viewed 1462 non-null int64 \n", " 3 annual_income 1281 non-null float64\n", " 4 employment_status 1362 non-null object \n", " 5 location 1399 non-null object \n", " 6 interaction_count 1462 non-null int64 \n", " 7 lead_score 1462 non-null float64\n", " 8 converted 1462 non-null int64 \n", "dtypes: float64(2), int64(3), object(4)\n", "memory usage: 102.9+ KB\n" ] } ], "source": [ "data.info()" ] }, { "cell_type": "code", "execution_count": 4, "id": "f278e656", "metadata": { "_sphinx_cell_id": "a93e3390-a1db-4c77-b5bf-6818305ef060", "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    lead_sourceindustrynumber_of_courses_viewedannual_incomeemployment_statuslocationinteraction_countlead_scoreconverted
    0paid_adsNaN179450.0unemployedsouth_america40.941
    1social_mediaretail146992.0employedsouth_america10.800
    2eventshealthcare578796.0unemployedaustralia30.691
    3paid_adsretail283843.0NaNaustralia10.870
    4referraleducation385012.0self_employedeurope30.621
    \n", "
    " ], "text/plain": [ " lead_source industry number_of_courses_viewed annual_income \\\n", "0 paid_ads NaN 1 79450.0 \n", "1 social_media retail 1 46992.0 \n", "2 events healthcare 5 78796.0 \n", "3 paid_ads retail 2 83843.0 \n", "4 referral education 3 85012.0 \n", "\n", " employment_status location interaction_count lead_score converted \n", "0 unemployed south_america 4 0.94 1 \n", "1 employed south_america 1 0.80 0 \n", "2 unemployed australia 3 0.69 1 \n", "3 NaN australia 1 0.87 0 \n", "4 self_employed europe 3 0.62 1 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "code", "execution_count": 5, "id": "ee382c0a", "metadata": { "_sphinx_cell_id": "60fa172a-8b25-4247-a8eb-3212f86533cd", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "lead_source 5\n", "industry 7\n", "number_of_courses_viewed 10\n", "annual_income 1267\n", "employment_status 4\n", "location 7\n", "interaction_count 12\n", "lead_score 101\n", "converted 2\n", "dtype: int64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.nunique()" ] }, { "cell_type": "code", "execution_count": 6, "id": "db2a5810", "metadata": { "_sphinx_cell_id": "96d85cc6-6d1a-495c-b5b4-7ec13374de0e", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "lead_source 128\n", "industry 134\n", "number_of_courses_viewed 0\n", "annual_income 181\n", "employment_status 100\n", "location 63\n", "interaction_count 0\n", "lead_score 0\n", "converted 0\n", "dtype: int64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.isna().sum()" ] }, { "cell_type": "markdown", "id": "ccfa73b6", "metadata": { "_sphinx_cell_id": "08f855aa-63df-48bd-a176-3bc9f7a28684" }, "source": [ "## Question 1" ] }, { "cell_type": "markdown", "id": "74099f56", "metadata": { "_sphinx_cell_id": "92b2ff4c-b91b-4058-b6ad-a2a518293fb4" }, "source": [ "What is the most frequent observation (mode) for the column `industry`?" ] }, { "cell_type": "code", "execution_count": 7, "id": "177af65f", "metadata": { "_sphinx_cell_id": "2b7408d2-c464-420d-8572-a4c0d18cd8a6", "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    lead_sourceindustryemployment_statuslocation
    count1334132813621399
    unique5747
    toporganic_searchretailself_employednorth_america
    freq282203352225
    \n", "
    " ], "text/plain": [ " lead_source industry employment_status location\n", "count 1334 1328 1362 1399\n", "unique 5 7 4 7\n", "top organic_search retail self_employed north_america\n", "freq 282 203 352 225" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.describe(include=[\"O\"])" ] }, { "cell_type": "code", "execution_count": 8, "id": "6bd24972", "metadata": { "_sphinx_cell_id": "87d40f89-f7ad-4ba3-9e06-cd3d188b9e40", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "industry\n", "retail 203\n", "finance 200\n", "other 198\n", "education 187\n", "healthcare 187\n", "technology 179\n", "manufacturing 174\n", "Name: count, dtype: int64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data['industry'].value_counts()" ] }, { "cell_type": "markdown", "id": "1d345600", "metadata": { "_sphinx_cell_id": "c5034496-2694-4d72-8cc3-8b557ae611d3" }, "source": [ "## Question 2" ] }, { "cell_type": "markdown", "id": "e0cfc5d6", "metadata": { "_sphinx_cell_id": "1a89c3b6-c31e-4a1c-bb24-750f8ad86dbe" }, "source": [ "* Create the correlation matrix for the numerical features of your dataset\n", "* In a correlation matrix, you compute the correlation coefficient between every pair of features in the dataset\n", "* What are the two features that have the biggest correlation in this dataset?" ] }, { "cell_type": "code", "execution_count": 9, "id": "d266a309", "metadata": { "_sphinx_cell_id": "cfcd5eff-9ad2-4b2a-ae58-1686ee8901d8", "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    number_of_courses_viewedannual_incomeinteraction_countlead_score
    count1462.0000001281.0000001462.0000001462.000000
    mean2.03146459886.2732242.9767440.506108
    std1.44971715070.1403891.6815640.288465
    min0.00000013929.0000000.0000000.000000
    25%1.00000049698.0000002.0000000.262500
    50%2.00000060148.0000003.0000000.510000
    75%3.00000069639.0000004.0000000.750000
    max9.000000109899.00000011.0000001.000000
    \n", "
    " ], "text/plain": [ " number_of_courses_viewed annual_income interaction_count lead_score\n", "count 1462.000000 1281.000000 1462.000000 1462.000000\n", "mean 2.031464 59886.273224 2.976744 0.506108\n", "std 1.449717 15070.140389 1.681564 0.288465\n", "min 0.000000 13929.000000 0.000000 0.000000\n", "25% 1.000000 49698.000000 2.000000 0.262500\n", "50% 2.000000 60148.000000 3.000000 0.510000\n", "75% 3.000000 69639.000000 4.000000 0.750000\n", "max 9.000000 109899.000000 11.000000 1.000000" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_numeric = data.copy()\n", "data_numeric = data.drop(\n", " ['lead_source', 'industry', 'employment_status', 'location', 'converted'],\n", " axis=1\n", ")\n", "data_numeric.describe()" ] }, { "cell_type": "code", "execution_count": 10, "id": "c789d653", "metadata": { "_sphinx_cell_id": "546f8dde-b281-48da-a607-7b3eb153c6e9", "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    number_of_courses_viewedannual_incomeinteraction_countlead_score
    number_of_courses_viewed1.0000000.031551-0.023565-0.004879
    annual_income0.0315511.0000000.0486180.005334
    interaction_count-0.0235650.0486181.0000000.009888
    lead_score-0.0048790.0053340.0098881.000000
    \n", "
    " ], "text/plain": [ " number_of_courses_viewed annual_income \\\n", "number_of_courses_viewed 1.000000 0.031551 \n", "annual_income 0.031551 1.000000 \n", "interaction_count -0.023565 0.048618 \n", "lead_score -0.004879 0.005334 \n", "\n", " interaction_count lead_score \n", "number_of_courses_viewed -0.023565 -0.004879 \n", "annual_income 0.048618 0.005334 \n", "interaction_count 1.000000 0.009888 \n", "lead_score 0.009888 1.000000 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_numeric.corr()" ] }, { "cell_type": "code", "execution_count": 11, "id": "f39d4ab1", "metadata": { "_sphinx_cell_id": "58fcc9de-aec3-47ea-80d8-6bae9a134286", "tags": [] }, "outputs": [ { "data": { "image/png": "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pUuXYtu2bRgzZky+jssui0REREREJJ1C7LKYHxcuXECjRo3E11ljz1xdXbF+/Xr8888/YuMMACpWrIg9e/ZgzJgxWLhwIcqUKYPVq1fDxcUlX8flc8iIChAn9aC84qQelFec1IPyg5N6UF79SJN6qNvmL6KUH8kX5hda3gWFETIiIiIiIpJOPrsW/tf8GPFBIiIiIiKiIogRMiIiIiIiks4PMoZMKkX77ImIiIiIiCTECBkREREREUmHY8iIiIiIiIhICoyQERERERGRdIr4GDI2yIiIiIiISDrsskhERERERERSYISMiIiIiIikU8S7LBbtsyciIiIiIpIQI2RERERERCQdjiEjIiIiIiIiKTBCRkRERERE0uEYMiIiIiIiIpICI2RERERERCSdIj6GjA0yIiIiIiKSDrssEhERERERkRQYISMiIiIiIukwQkZERERERERSYISMiIiIiIiko1C0J/VghIyIiIiIiEgijJAREREREZF0OIaMiIiIiIiIpMAIGRERERERSYcPhiYiIiIiIpIIuywSERERERGRFBghIyIiIiIi6RTxLouMkBEREREREUmEETIiIiIiIpIOx5ARERERERGRFBghIyIiIiIi6XAMGREREREREUmBETIiIiIiIpJOER9DxgYZERERERFJh10WiYiIiIiISAqMkBERERERkXSKeJfFon32REREREREEmKEjIiIiIiIpMMxZERERERERCQFRsiIiIiIiEg6HENGREREREREUmCEjIiIiIiIpFPEI2RskBERERERkXQ4qcePz8nJCaNHj5a6GDm6desW6tSpAzU1NdSoUUPq4vx0fH19f7jrFhYWBplMhoSEBKmLQkRERET/cT9Fg+xH5uPjA01NTdy+fRuhoaFSF+en4+npyev2H1Svlil2LHDHg4PTkXw5EG2crKQuEn0HO0KC0aFVEzSsUwP9+3TDjetXP5s+9NB+dOvYCg3r1ECvru3w98ljcttXLw9Et46t0KiuDZo1rIMRg/vhxrVwcfs/z59hut8kdGzdFA0daqJzWxesWrYYaWmphXJ+VHAEQcCSxQvh3NARdrWsMKi/Gx4/fvTF/bYGB6FF08aoXdMSvbp3wbWrH+rYq4QEBEyfiratXGBXywouzk6Y4T8Nb968yTGvhIR4NG3cANbVzPH69euCOjX6RoIgYFngIjRrVB8O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XryIJk2aiOsUFBTQpEkTnD59Osd96tati4sXL4oNsAcPHmDv3r1o2bJlnsvIBhkREREREUlGJpMV2hIQEABdXV25JSAgIMdyxMTEID09HSVKlJBbX6JECbx48SLHfXr27IkpU6bA0dERysrKMDU1hZOTEyZMmJDn82eDjIiIiIiI/pO8vLzw6tUrucXLy6vA8g8LC4O/vz+WLl2KS5cuYdeuXdizZw+mTp2a5zw4qQcREREREUmmMCf1UFVVhaqqap7SGhoaQlFRES9fvpRb//LlS5QsWTLHfSZPnozevXtjwIABAABLS0skJSVh0KBBmDhxIhQUvhz/YoSMiIiIiIiKPBUVFdjY2CA0NFRcl5GRgdDQUDg4OOS4z9u3b7M1uhQVFQEAgiDk6biMkBERERERkWR+pGnvPTw84OrqCltbW9jZ2WHBggVISkpC3759AQB9+vSBsbGxOA6tTZs2mDdvHmrWrAl7e3vcu3cPkydPRps2bcSG2ZewQUZERERERASgW7duiI6Ohre3N168eIEaNWpg//794kQfkZGRchGxSZMmQSaTYdKkSXj27BmMjIzQpk0bTJ8+Pc/HlAl5jaUR0Rep1xwudRHoJ5F8ORBxSelSF4N+Avqainj3XupS0M9CTQlISuVXO/oyTZUfJypV2n1XoeX9fEXHQsu7oDBCRkRERERE0vlx2oaS4KQeREREREREEmGEjIiIiIiIJPMjTeohBUbIiIiIiIiIJMIIGRERERERSYYRMiIiIiIiIpIEI2RERERERCQZRsiIiIiIiIhIEoyQERERERGRdIp2gIwNMiIiIiIikg67LBIREREREZEkGCEjIiIiIiLJMEJGREREREREkmCEjIiIiIiIJMMIGREREREREUmCETIiIiIiIpIMI2REREREREQkCUbIiIiIiIhIOkU7QMYGGVFBSr4cKHUR6Ceir6kodRHoJ6HGT2vKB02VIv7tln46Rb3LIm/xRAUoLild6iLQT0JfUxHqNYdLXQz6CSRfDkTUmzSpi0E/ieLaynjzLkPqYtBPQFuNI5d+FGyQERERERGRZIp6hIxNYyIiIiIiIokwQkZERERERJIp4gEyRsiIiIiIiIikwggZERERERFJhmPIiIiIiIiISBKMkBERERERkWSKeICMDTIiIiIiIpIOuywSERERERGRJBghIyIiIiIiyRTxABkjZERERERERFJhhIyIiIiIiCSjoFC0Q2SMkBEREREREUmEETIiIiIiIpIMx5ARERERERGRJBghIyIiIiIiyRT155CxQUZERERERJIp4u0xdlkkIiIiIiKSCiNkREREREQkmaLeZZERMiIiIiIiIokwQkZERERERJJhhIyIiIiIiIgkwQgZERERERFJpogHyBghIyIiIiIikgojZEREREREJJmiPoaMDTIiIiIiIpJMEW+PscsiERERERGRVBghIyIiIiIiyRT1LouMkBEREREREUmEETIiIiIiIpJMEQ+QMUJGREREREQkFUbIiIiIiIhIMhxDRkRERERERJJghIyIiIiIiCRTxANkbJAREREREZF02GWRiIiIiIiIJMEIGRERERERSaaIB8gYISMiIiIiIpIKI2RERERERCQZjiEjIiIiIiIiSTBCRkREREREkiniATJGyIiIiIiIiKTCCBkREREREUmGY8iIiIiIiIhIEoyQERERERGRZIp4gIwNMiIiIiIikg67LBIREREREZEkGCEjIiIiIiLJMEJGREREREREkmCEjIiIiIiIJFPEA2SMkFH+hIWFQSaTISEh4Ytp169fDz09vUIvExERERHRz4oNMio03bp1w507d6QuBn2DHSHB6NCqCRrWqYH+fbrhxvWrn00femg/unVshYZ1aqBX13b4++Qxue2rlweiW8dWaFTXBs0a1sGIwf1w41q4uP2f588w3W8SOrZuioYONdG5rQtWLVuMtLTUQjk/kl69WqbYscAdDw5OR/LlQLRxspK6SPQd7Nq2BV3aNINz3VoY5NoDN69f+2z6o4cPoFenNnCuWwuu3Trg9Mnjuaad4++H+rbVsS14k9z627duYszQAWjh5IBWzvUwa7ov3r59WyDnQwVn29YgtGnhjLq1reHaqxuuX/v8587hg/vRqV1L1K1tjW6d2uLkCfnPHUEQsHzJIrg410c9uxoYOqgvIh8/kkvTpoUzbK0t5Jb1a1aJ2x89egj3/q5o1sgRdWtbo13LplgauADv09IK7LyLOplMVmjLz4ANMio06urqKF68uNTFoK90+MA+LJo3E/0HDcX64B0wM6uCMcMGIS4uNsf0V8Mvw2fCWLRp1xEbgneigZMzxnmMwP17d8U0ZctXwK/jJmLztj+wfO0mlCptjFHDBiI+Pg4A8OjhAwgZGRg30RfB23dj1K/j8PvObVgWuOB7nDJJQFNdFdfuPMPogBCpi0LfSejBfQicPwtuA4dg9ebtqFTZHL+OcEd8LveWa+GX4TfxN7Rq1wFrgrajvlNjTPAciQcf3VuyHD96GDeuX4WhkfxnT0x0FMYMHQDjsuWwYn0w5ixajof378Hfd2KhnCN9nYP792L+nJkY6D4Mm7fuRGVzc4wYMhBxsTnXjfArlzFxvCfadeiEoJBdcGrkDM/RI3Dv7ocfgzesW42tWzbDa5Iv1m8OgZq6BkYMGYiUlBS5vAYPHYH9ocfFpVuPXuI2JSUltGrTDoHLV2Pnn3vh8ZsX/ti5AyuWBRbOhaAihw2yH8T+/fvh6OgIPT09GBgYoHXr1rh//z4A4NGjR5DJZNi1axcaNWoEDQ0NWFtb4/Tp0+L+Wd0DDxw4AAsLC2hpaaF58+b4559/xDROTk4YPXq03HHbt28PNzc38fWmTZtga2sLbW1tlCxZEj179kRUVNRXndOnXRZ9fX1Ro0YNbNq0CRUqVICuri66d++ON2/eiGkyMjIwa9YsVKpUCaqqqihXrhymT58ubr927RoaN24MdXV1GBgYYNCgQUhMTBS3u7m5oX379vD390eJEiWgp6eHKVOm4P379xg7diz09fVRpkwZrFu3Tq6sT548QdeuXaGnpwd9fX20a9cOjx49+qrz/q/YErQebTt0Qet2HVHRpBJ+m+gDVTU1/PXnrhzTbwveBHsHR/zi2h8VTEzhPnQkzKtUxY6QIDGNS4vWsLOvC+MyZWFiaoZRHuOQlJiIe3duAwAc6tXHJD9/2DvUg3GZsqjfsDF69nbDsSOHv8s50/d38NRN+C39C7uPfv5XcPrvCAnaiDbtO6NV2w6oaGIKTy9vqKmpYc/u33NMv2PrZtg51EPPPv1QoaIpBgwZgcpVqmLXtmC5dNFRL7FgdgC8p86EkpL8EPm/TxyDkpISPMZNQrkKFWFRzRKeE7xx7MghPH0SWWjnSvkTtGkD2nfsgrbtO8LEtBK8JvlCTU0Nu//I+XNna9BGONR1RB+3/qhoYoohw0ehioUFtm3NrBuCIGBL0Eb0HzgYTo2cYVbZHFOmzUB0dBTCPvlc0dDUhKGhkbioa2iI28qUKYu27TuisnkVlCptjIZOjdG8ZWtcvnSx8C5GESOTFd7yM2CD7AeRlJQEDw8PXLhwAaGhoVBQUECHDh2QkZEhppk4cSI8PT1x5coVVK5cGT169MD79+/F7W/fvsWcOXOwadMmHD9+HJGRkfD09MxXOdLS0jB16lSEh4fjjz/+wKNHj+QabN/q/v37+OOPP/DXX3/hr7/+wrFjxzBjxgxxu5eXF2bMmIHJkyfj5s2bCA4ORokSJQBkXiMXFxcUK1YM58+fx/bt23H48GEMHz5c7hhHjhzB8+fPcfz4ccybNw8+Pj5o3bo1ihUrhrNnz2Lw4MFwd3fH06dPxXN2cXGBtrY2Tpw4gVOnTokN2tTUotlVLi0tFbcjbqK2fR1xnYKCAmrbO+D61Ss57nP92hXUtneQW2fvUA/Xr4bnmD4tLRV/7NoGLS1tmFWukmtZkhIToaOjm/+TIKIfTlpaGu7cugmbT+4ttnZ1cCOXe8X1q+GwtZO/t9g51MX1j7o7Z2RkYJq3F3r0dkNF00rZ8khNTYWysjIUFD587VFVVQMAXL1y6ZvOiQpGWloqbkXcgH2dD++1goIC7Oo44GounztXr4bDro583XCo64hr/6Z/9uwpYmNiYPfRZ5OWtjaqW1rh2if1bcPa1XBuUAc9u3bExvVr5L5ffepJ5GOc/vskatna5vMsKTdFvcsiZ1n8QXTq1Enu9dq1a2FkZISbN29CS0sLAODp6YlWrVoBAPz8/FCtWjXcu3cPVapkfplNS0vD8uXLYWpqCgAYPnw4pkyZkq9y9OvXT/x/ExMTLFq0CLVr10ZiYqJYjm+RkZGB9evXQ1tbGwDQu3dvhIaGYvr06Xjz5g0WLlyIwMBAuLq6AgBMTU3h6OgIAAgODsa7d++wceNGaGpqAgACAwPRpk0bzJw5U2y46evrY9GiRVBQUIC5uTlmzZqFt2/fYsKECQA+NPpOnjyJ7t27IyQkBBkZGVi9erX4h7tu3Tro6ekhLCwMzZo1y3YeKSkp2bo7qKqq4r/yJ5WQkID09HTo6xvKrdfXN8DjRw9y3Cc2Jgb6Bgby6Q0MERsbI7fu5PEweHv9infv3sHA0AgLl62GXrFiOeb5JPIxtocEYcTosd9wNkT0o3iVEP/vvUX+XlFM3wCPHz3McZ+42Jhs6fX1DRH30b0laMMaKCoqonP3X3LMw6a2PQLnz0bwxrXo0qM33iW/xfLF8wEAsTHR33JKVEAS4v/93Mn2OWKARw9zrhuZnzuG2dLHxsSI2wHAIKfPpo/e9249eqOKRVXo6uoi/MplLFk0HzHR0fAYO15uv359euBWxE2kpqaiQ6euGDx05NedLNEnGCH7Qdy9exc9evSAiYkJdHR0UKFCBQBAZOSHrhRWVh8Gu5cqVQoA5LoTamhoiI2xrDT57W548eJFtGnTBuXKlYO2tjYaNmyYrRzfokKFCmJj7NMyRkREICUlBc7OzjnuGxERAWtra7ExBgD16tVDRkYGbt++La6rVq2a3K+gJUqUgKWlpfhaUVERBgYG4nHDw8Nx7949aGtrQ0tLC1paWtDX18e7d+/EbqOfCggIgK6urtwSEBDwFVek6LGpbYcNW3Zh5bpg1KnriEnjPHIclxYV9RJjhg9C4yYuaNexiwQlJaKfwe2IG9ixdTMm+E7P9dfwiqaVMNFvOkKCNqCpoy3auTihlLEx9A0MoCDjV6Gi7pc+brCtbQezyubo3LU7Rv/6G0K2BmXrJeM/ax42b92JaTPm4NSJY9i0Ya1EJf7vKepdFv8bP+f/B7Rp0wbly5fHqlWrULp0aWRkZKB69epyNwNlZWXx/7M+dD7u0vjx9qw0giCIrxUUFOReA5lRtSxZXQJdXFwQFBQEIyMjREZGwsXFpcC67uVUxqxzUFdXL7RjfO64iYmJsLGxQVBQED5lZGSU4zG8vLzg4eEht05VVRVJufdw+Kno6elBUVERcXHy0a24uFgYfPJrZBYDQ8NsA6/jYmOypVdX10DZcuVRtlx5VLeyRpd2zfG/P3bCtd8gMU10dBSGD3KDpXVNjJ/kV0BnRURS09Ur9u+9Rf5eEf+Ze4u+gWG29HFxHyIj4ZcvIT4uDp1bNxW3p6enY8mC2di+ZRO2/+8gAKBp81Zo2rwV4mJjoKauAZkM2Ba0EaXLlCnIU6SvpFfs38+dbJ8jsTAw/NznTkyu6bP+jY2NlZvoJS42BpXNLXItS3VLK6S/f4/nz5+hQoWK4vqSJTN/DDcxrYSM9HRMn+qDX/r0haKiYj7OlCg7/iz0A4iNjcXt27cxadIkODs7w8LCAvHx8QV+HCMjI7lJPtLT03H9+nXx9a1btxAbG4sZM2agfv36qFKlyldP6PE1zMzMoK6ujtDQ0By3W1hYIDw8HElJSeK6U6dOiV0Tv1atWrVw9+5dFC9eHJUqVZJbdHVzHrukqqoKHR0duSWzy+J/g7KyCswtquLCuTPiuoyMDFw4dwbVrWrkuE91yxpy6QHg3NnTqG5l/dljCYKAtI8a/FFRLzFsoCuqWFTDJN/pctFOIvq5KSsro3KVqrh47qy4LiMjAxfPn0W1XO4V1a2scfG8/L3lwtnTqG6Zmd6lZRus37ILa4N2iIuhUXH06N0XcxevyJafvoEhNDQ0cOTgfqioqML2k7GvJA1lZRVUsaiGc2flP3fOnz0Dq1w+d6ysrHH+rHzdOHvmb1j+m97YuAwMDA3l0iQmJuL6tauw/Mxn053bt6CgoAB9ff1c02QIGXj//j2Ej34Yp6+nIJMV2vIz4DedH0CxYsVgYGCAlStX4t69ezhy5Ei26EtBaNy4Mfbs2YM9e/bg1q1bGDJkiNwDnsuVKwcVFRUsXrwYDx48wO7duzF16tQCL0du1NTUMG7cOPz222/YuHEj7t+/jzNnzmDNmjUAgF69ekFNTQ2urq64fv06jh49ihEjRqB3797i+LGv0atXLxgaGqJdu3Y4ceIEHj58iLCwMIwcOVKc+KMo6tHLDbt/34E9//sDjx7cxyx/P7xLTkbrth0AAH6Tx2Pp4nli+q49e+PM6ZMI3rQOjx4+wOrlgbh18zo6d8ucOjg5+S2WLZ6P61fD8c/zZ7h18wam+U5EdNRLNG7qAuBDY6xEyVIYPmYsEuLjEBsTzTEe/2Ga6iqwqmwMq8rGAIAKxgawqmyMsiVzHldIP79uvfrgrz92YN9ff+LRw/uYGzAVycnJaNmmPQBgmrcXlgfOF9N37v4Lzv59Cls3r8fjRw+wdsUS3Lp5Ax279gQA6OrpwaSSmdyipKQEfQNDlPsourEzJBi3b91E5ONH2LVtC+bP8of78FHQ1tb5rudPuevV2xV/7NqOv3b/gYcP7iNgmh+Sk5PRpn3m5473xHEIXPjhc6d7rz74+++T2Lwh83NnxbJA3LxxA127Z9YNmUyGHr36YM2q5TgWdgT37t6Bz6TxMDIqDqfGTQBkPrIlePMG3Ll9C0+fPsG+Pf/DvNkz0KJVG3FCqX17/odDB/bh4YP7ePr0CQ4d2IclC+ejWbMWUPqkBw79NyxZsgQVKlSAmpoa7O3tce7cuc+mT0hIwLBhw1CqVCmoqqqicuXK2Lt3b56Pxy6LPwAFBQVs3boVI0eORPXq1WFubo5FixbBycmpQI/Tr18/hIeHo0+fPlBSUsKYMWPQqFEjcbuRkRHWr1+PCRMmYNGiRahVqxbmzJmDtm3bFmg5Pmfy5MlQUlKCt7c3nj9/jlKlSmHw4MEAMsfIHThwAKNGjULt2rWhoaGBTp06Yd68eV/I9fM0NDRw/PhxjBs3Dh07dsSbN29gbGwMZ2dn6OgU3Q/qJi4tEB8fh9XLFiM2NgZm5lUwP3CF2E3o5Yt/5KJXVtY14Td9FlYuXYTlgQtQtlx5zJy3GKaVzAAACgqKePzoIfb+NQqvEuKhq6sHi2rVsWzNJpiYZqY5f+ZvPH0SiadPItGueSO58py+dPM7nTl9T7WqlsfB1aPE17M8Myc42rT7DAb5bJaqWFSInJu1QEJ8PNYsD0RcbAwqVa6COYuXy91bZB/dWyyta8Jn+kysWroYK5csRJmy5eE/ZxFM/r235FXEjWtYu3IJkt++RbkKFeE5wRvNW32/zzf6smbNWyI+Ph7Lly5CbExmt8LFS1eK3VlffPK5Y12jJqYHzMbSwIVYsng+ypYrjzkLFqOSWWUxjWvfAXiXnAz/KT548+Y1atSshUVLV4q9WlRUVHBw/16sXL4EaampKG1cBj17u6JXbzcxD0VFRWxYtxqRjx9BEDLHv3ft0Qs9f3H9PhemCPiRAlkhISHw8PDA8uXLYW9vjwULFsDFxQW3b9/O8fm6qampaNq0KYoXL44dO3bA2NgYjx8/lnv005fIhE8HFRHRV4tLSpe6CPST0NdUhHrN4V9OSEVe8uVARL1J+3JCIgDFtZXx5h270dGXaav9OB3lmi058+VEX+ngsDpfTvQRe3t71K5dG4GBmQ/+zsjIQNmyZTFixAiMHz8+W/rly5dj9uzZuHXrVrY5C/Lqx3kniIiIiIioyCnM55ClpKTg9evXcsunjy7KkpqaiosXL6JJkybiOgUFBTRp0gSnT5/OcZ/du3fDwcEBw4YNQ4kSJVC9enX4+/sjPT3vP9KzQUZfrUWLFuI08Z8u/v7+UhePiIiIiH4CCrLCW/LzqKKYmBikp6dnm5ugRIkSePHiRY77PHjwADt27EB6ejr27t2LyZMnY+7cuZg2bVqez59jyOirrV69GsnJyTlu+9zMRERERERE30NujyoqKBkZGShevDhWrlwJRUVF2NjY4NmzZ5g9ezZ8fHzylAcbZPTVjI2NpS4CEREREf3kcnuoe0FQVVXNcwPM0NAQioqKePnypdz6ly9fomTJkjnuU6pUKSgrK8s9j87CwgIvXrxAamoqVFRUvnhcdlkkIiIiIqIiT0VFBTY2NnLPxM3IyEBoaCgcHHJ+ZmG9evVw7949ZHz0TLo7d+6gVKlSeWqMAWyQERERERGRhGSywlvyy8PDA6tWrcKGDRsQERGBIUOGICkpCX379gUA9OnTB15eXmL6IUOGIC4uDqNGjcKdO3ewZ88e+Pv7Y9iwYXk+JrssEhERERERAejWrRuio6Ph7e2NFy9eoEaNGti/f7840UdkZKTc8/DKli2LAwcOYMyYMbCysoKxsTFGjRqFcePG5fmYfA4ZUQHic8gor/gcMsorPoeM8oPPIaO8+pGeQ9Z6xflCy/sv99qFlndB+XHeCSIiIiIioiKGXRaJiIiIiEgyCoU3yeJPgQ0yIiIiIiKSTGFOe/8zYJdFIiIiIiIiiTBCRkREREREkiniATJGyIiIiIiIiKTCCBkREREREUlGoYiHyBghIyIiIiIikggjZEREREREJJkiHiBjhIyIiIiIiEgqjJAREREREZFkivpzyNggIyIiIiIiyRTx9hi7LBIREREREUmFETIiIiIiIpIMp70nIiIiIiIiSTBCRkREREREkina8TFGyIiIiIiIiCTDCBkREREREUmmqE97zwgZERERERGRRBghIyIiIiIiySgU7QAZG2RERERERCQddlkkIiIiIiIiSTBCRkREREREkiniATJGyIiIiIiIiKTCCBkREREREUmGY8iIiIiIiIhIEoyQERERERGRZIr6tPeMkBEREREREUmEETIiIiIiIpJMUR9DxgYZERERERFJpmg3x9hlkYiIiIiISDKMkBERERERkWQUiniXRUbIiIiIiIiIJMIIGRERERERSaaIB8gYISMiIiIiIpIKI2RERERERCSZoj7tPSNkREREREREEmGEjIiIiIiIJFPEA2RskBERERERkXQ47T0RERERERFJghEyIiIiIiKSTBEPkDFCRkREREREJBVGyIiIiIiISDKc9p6IiIiIiIgkwQgZUQHS11SUugj0E0m+HCh1EegnUVxbWeoi0E9EW42/t9PPpajXWDbIiArQu/dSl4B+FmpKQNSbNKmLQT+B4trKUK85XOpi0E8i+XIgXr/LkLoY9BPQYcP9h8EGGRERERERSYZjyIiIiIiIiEgSjJAREREREZFkFIp2gIwNMiIiIiIikk5Rb5CxyyIREREREZFEGCEjIiIiIiLJcFIPIiIiIiIikgQjZEREREREJBmOISMiIiIiIiJJMEJGRERERESSKeJDyBghIyIiIiIikgojZEREREREJBmFIh4iY4OMiIiIiIgkU9S77BX18yciIiIiIpIMI2RERERERCSZIt5jkREyIiIiIiIiqTBCRkREREREkinqk3owQkZERERERCQRRsiIiIiIiEgyRTxAxggZERERERGRVBghIyIiIiIiySgU8QgZG2RERERERCQZTupBREREREREkmCEjIiIiIiIJFPEA2SMkBEREREREUmFETIiIiIiIpJMUZ/UgxEyIiIiIiIiiTBCRkREREREkpGhaIfIGCEjIiIiIiKSCCNkREREREQkmaI+howNMiIiIiIikkxRb5CxyyIREREREZFEGCEjIiIiIiLJyIr4k6EZISMiIiIiIpIIG2RERERERCQZBVnhLV9jyZIlqFChAtTU1GBvb49z587lab+tW7dCJpOhffv2+ToeG2REREREREQAQkJC4OHhAR8fH1y6dAnW1tZwcXFBVFTUZ/d79OgRPD09Ub9+/Xwfkw0yIiIiIiKSjExWeEt+zZs3DwMHDkTfvn1RtWpVLF++HBoaGli7dm2u+6Snp6NXr17w8/ODiYlJvo/JBhkREREREf0npaSk4PXr13JLSkpKjmlTU1Nx8eJFNGnSRFynoKCAJk2a4PTp07keY8qUKShevDj69+//VWVkg4yIiIiIiCSjIJMV2hIQEABdXV25JSAgIMdyxMTEID09HSVKlJBbX6JECbx48SLHfU6ePIk1a9Zg1apVX33+nPaeiIiIiIgkU5gPhvby8oKHh4fcOlVV1QLJ+82bN+jduzdWrVoFQ0PDr86HDTIiIiIiIvpPUlVVzXMDzNDQEIqKinj58qXc+pcvX6JkyZLZ0t+/fx+PHj1CmzZtxHUZGRkAACUlJdy+fRumpqZfPC67LBIRERERkWR+lEk9VFRUYGNjg9DQUHFdRkYGQkND4eDgkC19lSpVcO3aNVy5ckVc2rZti0aNGuHKlSsoW7Zsno7LCBkREREREREADw8PuLq6wtbWFnZ2dliwYAGSkpLQt29fAECfPn1gbGyMgIAAqKmpoXr16nL76+npAUC29Z/DBhkREREREUlGAYU4iCyfunXrhujoaHh7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ycjYZZGIiIiIiIikwAgZERERERFJpqh3WWSEjIiIiIiISCKMkBERERERkWQ47T0RERERERFJghEyIiIiIiKSDMeQERERERERkSQYISMiIiIiIskU9QgZG2RERERERCQZPhiaiIiIiIiIJMEIGRERERERSUahaAfIGCEjIiIiIiKSCiNkREREREQkGY4hIyIiIiIiIkkwQkZERERERJIp6tPeM0JGREREREQkEUbIiIiIiIhIMkV9DBkbZEREREREJBlOe09ERERERESSYISMiIiIiIgkU9S7LDJCRkREREREJBFGyIiIiIiISDKc9p6IiIiIiIgkwQgZERERERFJpogHyBghIyIiIiIikgojZEREREREJBmFIj6ITCYIgiB1IYiIiIiIqGg6cy+h0PKuU0mv0PIuKIyQERWgpFT+vkF5o6kiw5t3GVIXg34C2moKeM26Qnmko6YA9ZrDpS4G/QSSLwdKXQT6FxtkREREREQknaLdY5GTehAREREREUmFETIiIiIiIpKMrIiHyBghIyIiIiIikggjZEREREREJJkiPus9I2RERERERERSYYSMiIiIiIgkU8QDZGyQERERERGRhIp4i4xdFomIiIiIiCTCBhkREREREUlGVoj/fY0lS5agQoUKUFNTg729Pc6dO5dr2lWrVqF+/fooVqwYihUrhiZNmnw2fU7YICMiIiIiIgIQEhICDw8P+Pj44NKlS7C2toaLiwuioqJyTB8WFoYePXrg6NGjOH36NMqWLYtmzZrh2bNneT6mTBAEoaBOgKioS0rlnxPljaaKDG/eZUhdDPoJaKsp4DXrCuWRjpoC1GsOl7oY9BNIvhwodRFEFx+9LrS8bSro5Cu9vb09ateujcDAzOuTkZGBsmXLYsSIERg/fvwX909PT0exYsUQGBiIPn365OmYjJAREREREdF/UkpKCl6/fi23pKSk5Jg2NTUVFy9eRJMmTcR1CgoKaNKkCU6fPp2n4719+xZpaWnQ19fPcxnZICMiIiIiIsnICnEJCAiArq6u3BIQEJBjOWJiYpCeno4SJUrIrS9RogRevHiRp3MZN24cSpcuLdeo+xJOe09ERERERP9JXl5e8PDwkFunqqpaKMeaMWMGtm7dirCwMKipqeV5PzbIiIiIiIhIOoX4HDJVVdU8N8AMDQ2hqKiIly9fyq1/+fIlSpYs+dl9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", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(9, 6))\n", "sns.heatmap(data_numeric.corr(),annot=True,linewidths=.5, cmap=\"Blues\")\n", "plt.title('Heatmap showing correlations between numerical data')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 12, "id": "3752b5a1", "metadata": { "_sphinx_cell_id": "1bc41379-32e6-4a75-92a4-3a1495a028c3", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "number_of_courses_viewed number_of_courses_viewed 1.000000\n", "annual_income annual_income 1.000000\n", "lead_score lead_score 1.000000\n", "interaction_count interaction_count 1.000000\n", "annual_income interaction_count 0.048618\n", "interaction_count annual_income 0.048618\n", "annual_income number_of_courses_viewed 0.031551\n", "number_of_courses_viewed annual_income 0.031551\n", "lead_score interaction_count 0.009888\n", "interaction_count lead_score 0.009888\n", "annual_income lead_score 0.005334\n", "lead_score annual_income 0.005334\n", " number_of_courses_viewed -0.004879\n", "number_of_courses_viewed lead_score -0.004879\n", " interaction_count -0.023565\n", "interaction_count number_of_courses_viewed -0.023565\n", "dtype: float64" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_numeric.corr().unstack().sort_values(ascending=False)" ] }, { "cell_type": "markdown", "id": "e76464e1", "metadata": { "_sphinx_cell_id": "aca4e70a-66eb-4baf-80f3-ed1fc7753bfe" }, "source": [ "`number_of_courses_viewed` and `interaction_count`" ] }, { "cell_type": "markdown", "id": "2a213a5c", "metadata": { "_sphinx_cell_id": "cd3cb932-5086-45f8-8fed-a4454896509e" }, "source": [ "## Split the data" ] }, { "cell_type": "markdown", "id": "199bdbda", "metadata": { "_sphinx_cell_id": "0fdb97c3-b15b-48d9-8744-8184bcfef73c" }, "source": [ "* Split your data in train/val/test sets with 60%/20%/20% distribution\n", "* Use Scikit-Learn for that (the `train_test_split` function) and set the seed to `42`\n", "* Make sure that the target value `y` is not in your dataframe" ] }, { "cell_type": "code", "execution_count": 13, "id": "cf07feae", "metadata": { "_sphinx_cell_id": "4fcac42c-b28d-4d38-8e8c-47f4142c7486", "tags": [] }, "outputs": [], "source": [ "SEED = 42" ] }, { "cell_type": "code", "execution_count": 14, "id": "e641c553", "metadata": { "_sphinx_cell_id": "7cb09371-8842-4ec4-9918-cf5ca19ed880", "tags": [] }, "outputs": [], "source": [ "df_full_train, df_test = train_test_split(data, test_size=0.2, random_state=SEED)\n", "df_train, df_val = train_test_split(df_full_train, test_size=0.25, random_state=SEED)\n", "\n", "assert len(data) == (len(df_train) + len(df_val) + len(df_test))" ] }, { "cell_type": "code", "execution_count": 15, "id": "8adcc7d1", "metadata": { "_sphinx_cell_id": "6a7effad-14e3-4bad-b9cf-b33301b9c072", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "(876, 293, 293)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(df_train), len(df_val), len(df_test)" ] }, { "cell_type": "code", "execution_count": 16, "id": "3416c2ef", "metadata": { "_sphinx_cell_id": "821ac416-0c61-4c35-a706-5ef4730ab4be", "tags": [] }, "outputs": [], "source": [ "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)" ] }, { "cell_type": "code", "execution_count": 17, "id": "f8073275", "metadata": { "_sphinx_cell_id": "46089cba-b903-4312-8493-28bd0b482ca7", "tags": [] }, "outputs": [], "source": [ "y_train = df_train.converted.values\n", "y_val = df_val.converted.values\n", "y_test = df_test.converted.values" ] }, { "cell_type": "markdown", "id": "4d3c270f", "metadata": { "_sphinx_cell_id": "8f2ae701-76c9-4d39-bcad-1b8ca9c9e526" }, "source": [ "## Question 3" ] }, { "cell_type": "markdown", "id": "e77812a2", "metadata": { "_sphinx_cell_id": "9e72c0b1-ebe0-45f2-8928-05ddbb676c06" }, "source": [ "* Calculate the mutual information score between `y` and other categorical variables in the dataset. Use the training set only\n", "* Round the scores to 2 decimals using `round(score, 2)`\n", "* Which of these variables has the biggest score?" ] }, { "cell_type": "code", "execution_count": 18, "id": "2a3b6ab2", "metadata": { "_sphinx_cell_id": "429a1de7-3463-4f53-948d-9fe89ceed179", "tags": [] }, "outputs": [], "source": [ "def calculate_mi(series):\n", " return mutual_info_score(series, df_train.converted)" ] }, { "cell_type": "code", "execution_count": 19, "id": "20f1887a", "metadata": { "_sphinx_cell_id": "84d05268-7a74-47d6-beab-bc6ddf3ce0ae" }, "outputs": [], "source": [ "cat = ['lead_source', 'industry', 'employment_status', 'location']\n", "numeric = ['number_of_courses_viewed', 'annual_income', 'interaction_count',\n", " 'lead_score']" ] }, { "cell_type": "code", "execution_count": 20, "id": "0d100616", "metadata": { "_sphinx_cell_id": "78a8367b-15a2-41c1-af13-1751095ce153", "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    MI
    lead_source0.035396
    employment_status0.012938
    industry0.011575
    location0.004464
    \n", "
    " ], "text/plain": [ " MI\n", "lead_source 0.035396\n", "employment_status 0.012938\n", "industry 0.011575\n", "location 0.004464" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_mi = df_train[cat].fillna('NA').apply(calculate_mi)\n", "df_mi = df_mi.sort_values(ascending=False).to_frame(name='MI')\n", "df_mi" ] }, { "cell_type": "markdown", "id": "067dc099", "metadata": { "_sphinx_cell_id": "4e21b645-8331-4a87-9c7e-50cc2d799301" }, "source": [ "`lead_source` has the biggest score." ] }, { "cell_type": "code", "execution_count": 21, "id": "7ab12289", "metadata": { "_sphinx_cell_id": "94d8aa48-352f-4100-90b2-be118a363ca9", "tags": [] }, "outputs": [], "source": [ "df_train = df_train.drop('converted', axis=1)\n", "df_val = df_val.drop('converted', axis=1)\n", "df_test = df_test.drop('converted', axis=1)\n", "\n", "assert 'converted' not in df_train.columns\n", "assert 'converted' not in df_val.columns\n", "assert 'converted' not in df_test.columns" ] }, { "cell_type": "markdown", "id": "0fe5bfa7", "metadata": { "_sphinx_cell_id": "6aab413a-0475-4288-bb6e-fdcae221a42b" }, "source": [ "## Question 4" ] }, { "cell_type": "markdown", "id": "4cac43da", "metadata": { "_sphinx_cell_id": "d8d55d46-5fee-4299-b377-9320503579b7" }, "source": [ "* Now let's train a logistic regression\n", "* Remember that we have several categorical variables in the dataset. Include them using one-hot encoding\n", "* Fit the model on the training dataset:\n", " * To make sure the results are reproducible across different versions of Scikit-Learn, fit the model with these parameters:\n", "\n", "```\n", "model = LogisticRegression(\n", " C=1.0,\n", " max_iter=1000,\n", " random_state=42\n", ")\n", "```\n", "* Calculate the accuracy on the validation dataset and round it to 2 decimal digits" ] }, { "cell_type": "code", "execution_count": 22, "id": "7bf5a1f5", "metadata": { "_sphinx_cell_id": "12b56086-acf9-4347-b20f-163b520994b2", "tags": [] }, "outputs": [], "source": [ "df_train[cat] = df_train[cat].fillna('NA')\n", "df_train[numeric] = df_train[numeric].fillna(0)\n", "\n", "dv = DictVectorizer(sparse=False)\n", "train_dict = df_train.to_dict(orient='records')\n", "X_train = dv.fit_transform(train_dict)" ] }, { "cell_type": "code", "execution_count": 59, "id": "eec786c2", "metadata": { "_sphinx_cell_id": "357b5381-1622-4abf-913f-288301e7ef3f", "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\alexe\\miniconda3\\Lib\\site-packages\\sklearn\\linear_model\\_logistic.py:465: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. OF ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " n_iter_i = _check_optimize_result(\n" ] }, { "data": { "text/html": [ "
    LogisticRegression(max_iter=1000, random_state=42)
    In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
    On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
    " ], "text/plain": [ "LogisticRegression(max_iter=1000, random_state=42)" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = LogisticRegression(\n", " C=1.0,\n", " max_iter=1000,\n", " random_state=42\n", ")\n", "model.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 60, "id": "fb0ae94c", "metadata": { "_sphinx_cell_id": "69f99ff2-6e4f-4142-b05a-b6593546af00", "tags": [] }, "outputs": [], "source": [ "df_val[cat] = df_val[cat].fillna('NA')\n", "df_val[numeric] = df_val[numeric].fillna(0)\n", "\n", "val_dict = df_val.to_dict(orient='records')\n", "X_val = dv.transform(val_dict)\n", "\n", "y_pred = model.predict(X_val)" ] }, { "cell_type": "code", "execution_count": 61, "id": "8ea66aeb", "metadata": { "_sphinx_cell_id": "4b409c54-bf90-4cd2-88d5-36199edee673" }, "outputs": [ { "data": { "text/plain": [ "0.856655290102389" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "original_score = accuracy_score(y_val, y_pred)\n", "original_score" ] }, { "cell_type": "code", "execution_count": 62, "id": "96ed5589", "metadata": { "_sphinx_cell_id": "9a6f34ed-3a0b-482e-9fb1-2a6272f3d1a5", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy = 0.86\n" ] } ], "source": [ "accuracy = np.round(original_score, 2)\n", "print(f'Accuracy = {accuracy}')" ] }, { "cell_type": "markdown", "id": "41fa18b1", "metadata": { "_sphinx_cell_id": "120eceb2-5194-4b9d-9431-786d77c5db54" }, "source": [ "## Question 5" ] }, { "cell_type": "markdown", "id": "e247849e", "metadata": { "_sphinx_cell_id": "86b758d6-4e2c-4abc-a5ed-dd7e0a06111f" }, "source": [ "* Let's find the least useful feature using the _feature elimination_ technique\n", "* Train a model with all these features (using the same parameters as in Q4)\n", "* Now exclude each feature from this set and train a model without it. Record the accuracy for each model\n", "* For each feature, calculate the difference between the original accuracy and the accuracy without the feature\n", "* Which of following feature has the smallest difference?\n", " - 'industry',\n", " - 'employment_status',\n", " - 'lead_score'\n", "* Round your answer to 2 decimal digits\n", " \n", "> **note:** the difference doesn't have to be positive" ] }, { "cell_type": "code", "execution_count": 63, "id": "748a7867", "metadata": { "_sphinx_cell_id": "7994c43b-a4f2-473e-9ca4-abbd09944919", "tags": [] }, "outputs": [], "source": [ "features = df_train.columns.to_list()\n", "eliminate = [\n", " 'industry',\n", " 'employment_status',\n", " 'lead_score']" ] }, { "cell_type": "code", "execution_count": 64, "id": "cabc785c", "metadata": { "_sphinx_cell_id": "c6f06f4c-7be9-4d75-a870-affba17dfd41", "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\alexe\\miniconda3\\Lib\\site-packages\\sklearn\\linear_model\\_logistic.py:465: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. OF ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " n_iter_i = _check_optimize_result(\n", "c:\\Users\\alexe\\miniconda3\\Lib\\site-packages\\sklearn\\linear_model\\_logistic.py:465: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. OF ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " n_iter_i = _check_optimize_result(\n" ] } ], "source": [ "scores = pd.DataFrame(columns=['eliminated_feature', 'accuracy', 'difference'])\n", "for feature in eliminate:\n", " subset = features.copy()\n", " subset.remove(feature)\n", " \n", " dv = DictVectorizer(sparse=False)\n", " train_dict = df_train[subset].to_dict(orient='records')\n", " X_train = dv.fit_transform(train_dict)\n", "\n", " model = LogisticRegression(\n", " C=1,\n", " max_iter=1000,\n", " random_state=42\n", " )\n", " model.fit(X_train, y_train)\n", " \n", " val_dict = df_val[subset].to_dict(orient='records')\n", " X_val = dv.transform(val_dict)\n", " \n", " y_pred = model.predict(X_val)\n", " score = accuracy_score(y_val, y_pred)\n", " \n", " scores.loc[len(scores)] = [feature, score, original_score - score]" ] }, { "cell_type": "code", "execution_count": 65, "id": "7c253ea7", "metadata": { "_sphinx_cell_id": "b4144221-9832-4a24-a6ac-8acb197bb0c1", "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    eliminated_featureaccuracydifference
    0industry0.8361770.020478
    1employment_status0.8293520.027304
    2lead_score0.8157000.040956
    \n", "
    " ], "text/plain": [ " eliminated_feature accuracy difference\n", "0 industry 0.836177 0.020478\n", "1 employment_status 0.829352 0.027304\n", "2 lead_score 0.815700 0.040956" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scores" ] }, { "cell_type": "code", "execution_count": 66, "id": "6fddefae", "metadata": { "_sphinx_cell_id": "8d941a20-173e-4ed1-bb5e-ca49fd696257", "tags": [] }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    eliminated_featureaccuracydifference
    0industry0.8361770.020478
    \n", "
    " ], "text/plain": [ " eliminated_feature accuracy difference\n", "0 industry 0.836177 0.020478" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scores[scores.index == scores.difference.idxmin()]" ] }, { "cell_type": "markdown", "id": "a2c45b41", "metadata": { "_sphinx_cell_id": "6f15e485-4e6c-41a5-9b0c-59c896dc2f12" }, "source": [ "industry (closely followed by employment_status)" ] }, { "cell_type": "markdown", "id": "e5dede5e", "metadata": { "_sphinx_cell_id": "b5d0e62a-c4f8-47db-b954-12d7b15ae7ee" }, "source": [ "## Question 6" ] }, { "cell_type": "markdown", "id": "527539a6", "metadata": { "_sphinx_cell_id": "02eaeef0-ceb3-4a32-a492-bbf2c03437bf" }, "source": [ "* Now let's train a regularized logistic regression\n", "* Let's try the following values of the parameter `C`: `[0, 0.01, 0.1, 1, 10]`\n", "* Train models using all the features as in Q4\n", "* Calculate the accuracy on the validation dataset and round it to 3 decimal digits\n", "* Which of these `C` leads to the best accuracy on the validation set?\n", "> **note:** If there are multiple options, select the smallest `C`." ] }, { "cell_type": "code", "execution_count": 67, "id": "ee58b860", "metadata": { "_sphinx_cell_id": "60782bd9-e85f-44fc-a1df-76ffae6f23ca", "tags": [] }, "outputs": [ { "data": { "text/plain": [ "((876,), (293,))" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_train.shape, y_val.shape" ] }, { "cell_type": "code", "execution_count": 68, "id": "82bd46e8", "metadata": { "_sphinx_cell_id": "fc161e53-aa26-46c7-a2b1-88cc74426c28", "tags": [] }, "outputs": [], "source": [ "dv = DictVectorizer(sparse=False)\n", "train_dict = df_train.to_dict(orient='records')\n", "X_train = dv.fit_transform(train_dict)\n", "\n", "val_dict = df_val.to_dict(orient='records')\n", "X_val = dv.transform(val_dict)" ] }, { "cell_type": "code", "execution_count": 70, "id": "fbcdf686", "metadata": { "_sphinx_cell_id": "18476566-49e0-4a4f-9c6b-2cbca81e5dd5", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C = 0.01:\t Accuracy = 0.8122866894197952\n", "C = 0.1:\t Accuracy = 0.8430034129692833\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\alexe\\miniconda3\\Lib\\site-packages\\sklearn\\linear_model\\_logistic.py:465: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. OF ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " n_iter_i = _check_optimize_result(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "C = 1:\t Accuracy = 0.856655290102389\n", "C = 10:\t Accuracy = 0.8532423208191127\n", "C = 100:\t Accuracy = 0.8532423208191127\n" ] } ], "source": [ "scores = {}\n", "for C in [0.01, 0.1, 1, 10, 100]:\n", " model = LogisticRegression(\n", " max_iter=1000,\n", " C=C,\n", " random_state=SEED\n", " )\n", " model.fit(X_train, y_train)\n", " \n", " y_pred = model.predict(X_val)\n", " \n", " score = accuracy_score(y_val, y_pred)\n", " scores[C] = round(score, 3)\n", " print(f'C = {C}:\\t Accuracy = {score}')" ] }, { "cell_type": "code", "execution_count": 71, "id": "ceaa5761", "metadata": { "_sphinx_cell_id": "5e416405-0fe4-419f-ad54-6655aa40de22" }, "outputs": [ { "data": { "text/plain": [ "{0.01: 0.812, 0.1: 0.843, 1: 0.857, 10: 0.853, 100: 0.853}" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scores" ] }, { "cell_type": "code", "execution_count": 72, "id": "11cabb9c", "metadata": { "_sphinx_cell_id": "dd80d747-1a29-4c55-95d8-f3e938674878", "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The best `C` is 1.\n" ] } ], "source": [ "print(f'The best `C` is {max(scores, key=scores.get)}.')" ] }, { "cell_type": "code", "execution_count": null, "id": "40a23b87", "metadata": { "_sphinx_cell_id": "7ebc1f03-e120-49ef-8e71-8b27752edacf" }, "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.13.5" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: cohorts/2025/04-evaluation/homework.md ================================================ ## Homework > Note: sometimes your answer doesn't match one of > the options exactly. That's fine. > Select the option that's closest to your solution. > If it's exactly in between two options, select the higher value. In this homework, we will use the lead scoring dataset. Download it from [here](https://raw.githubusercontent.com/alexeygrigorev/datasets/master/course_lead_scoring.csv). In this dataset our desired target for classification task will be `converted` variable - has the client signed up to the platform or not. ### Data preparation * Check if the missing values are presented in the features. * If there are missing values: * For caterogiral features, replace them with 'NA' * For numerical features, replace with with 0.0 Split the data into 3 parts: train/validation/test with 60%/20%/20% distribution. Use `train_test_split` function for that with `random_state=1` ### Question 1: ROC AUC feature importance ROC AUC could also be used to evaluate feature importance of numerical variables. Let's do that * For each numerical variable, use it as score (aka prediction) and compute the AUC with the `y` variable as ground truth. * Use the training dataset for that If your AUC is < 0.5, invert this variable by putting "-" in front (e.g. `-df_train['balance']`) AUC can go below 0.5 if the variable is negatively correlated with the target variable. You can change the direction of the correlation by negating this variable - then negative correlation becomes positive. Which numerical variable (among the following 4) has the highest AUC? - `lead_score` - `number_of_courses_viewed` - `interaction_count` - `annual_income` ### Question 2: Training the model Apply one-hot-encoding using `DictVectorizer` and train the logistic regression with these parameters: ```python LogisticRegression(solver='liblinear', C=1.0, max_iter=1000) ``` What's the AUC of this model on the validation dataset? (round to 3 digits) - 0.32 - 0.52 - 0.72 - 0.92 ### Question 3: Precision and Recall Now let's compute precision and recall for our model. * Evaluate the model on all thresholds from 0.0 to 1.0 with step 0.01 * For each threshold, compute precision and recall * Plot them At which threshold precision and recall curves intersect? * 0.145 * 0.345 * 0.545 * 0.745 ### Question 4: F1 score Precision and recall are conflicting - when one grows, the other goes down. That's why they are often combined into the F1 score - a metrics that takes into account both This is the formula for computing F1: $$F_1 = 2 \cdot \cfrac{P \cdot R}{P + R}$$ Where $P$ is precision and $R$ is recall. Let's compute F1 for all thresholds from 0.0 to 1.0 with increment 0.01 At which threshold F1 is maximal? - 0.14 - 0.34 - 0.54 - 0.74 ### Question 5: 5-Fold CV Use the `KFold` class from Scikit-Learn to evaluate our model on 5 different folds: ``` KFold(n_splits=5, shuffle=True, random_state=1) ``` * Iterate over different folds of `df_full_train` * Split the data into train and validation * Train the model on train with these parameters: `LogisticRegression(solver='liblinear', C=1.0, max_iter=1000)` * Use AUC to evaluate the model on validation How large is standard deviation of the scores across different folds? - 0.0001 - 0.006 - 0.06 - 0.36 ### Question 6: Hyperparameter Tuning Now let's use 5-Fold cross-validation to find the best parameter `C` * Iterate over the following `C` values: `[0.000001, 0.001, 1]` * Initialize `KFold` with the same parameters as previously * Use these parameters for the model: `LogisticRegression(solver='liblinear', C=C, max_iter=1000)` * Compute the mean score as well as the std (round the mean and std to 3 decimal digits) Which `C` leads to the best mean score? - 0.000001 - 0.001 - 1 If you have ties, select the score with the lowest std. If you still have ties, select the smallest `C`. ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2025/homework/hw04 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2025/04-evaluation/homework_4.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": { "_sphinx_cell_id": "4c59b3dd-ba6d-4cfe-bb44-51d8be10257a" }, "source": [ "## Homework 4\n" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "_sphinx_cell_id": "24f19113-6184-4b34-aaa8-c787977bf86a" }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "_sphinx_cell_id": "42907855-2945-4393-97a4-bde01006f1f4" }, "outputs": [], "source": [ "df = pd.read_csv('https://raw.githubusercontent.com/alexeygrigorev/datasets/master/course_lead_scoring.csv')" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "_sphinx_cell_id": "374fa40c-a1e2-4abd-9e0b-34e3a54f996c" }, "outputs": [], "source": [ "categorical = ['lead_source', 'industry', 'employment_status', 'location']\n", "numeric = ['number_of_courses_viewed', 'annual_income', 'interaction_count',\n", " 'lead_score']\n", "\n", "df[categorical] = df[categorical].fillna('NA')\n", "df[numeric] = df[numeric].fillna(0)\n" ] }, { "cell_type": "markdown", "metadata": { "_sphinx_cell_id": "d1a34418-5a8f-4867-a186-f8d1abe97542" }, "source": [ "Split the data into 3 parts: train/validation/test with 60%/20%/20% distribution. Use `train_test_split` funciton for that with `random_state=1`" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "_sphinx_cell_id": "17d94972-e9cd-4c27-9dea-615e89420fe9" }, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "_sphinx_cell_id": "b7ca895b-e71b-4395-b450-99ac3eb023f3" }, "outputs": [], "source": [ "df_full_train, df_test = train_test_split(df, test_size=0.2, random_state=1)\n", "df_train, df_val = train_test_split(df_full_train, test_size=0.25, random_state=1)\n", "\n", "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)\n", "\n", "y_train = df_train.converted.values\n", "y_val = df_val.converted.values\n", "y_test = df_test.converted.values\n", "\n", "del df_train['converted']\n", "del df_val['converted']\n", "del df_test['converted']" ] }, { "cell_type": "markdown", "metadata": { "_sphinx_cell_id": "acc7bb5c-943b-4fbc-b42d-84aa495a362e" }, "source": [ "## Question 1: ROC AUC feature importance\n", "\n", "ROC AUC could also be used to evaluate feature importance of numerical variables. \n", "\n", "Let's do that\n", "\n", "* For each numerical variable, use it as score and compute AUC with the `above_average` variable\n", "* Use the training dataset for that\n", "\n", "\n", "If your AUC is < 0.5, invert this variable by putting \"-\" in front\n", "\n", "(e.g. `-df_train['engine_hp']`)\n", "\n", "AUC can go below 0.5 if the variable is negatively correlated with the target varialble. You can change the direction of the correlation by negating this variable - then negative correlation becomes positive." ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "_sphinx_cell_id": "0f759496-3754-4fc1-84e6-20f6ce7aa456" }, "outputs": [], "source": [ "from sklearn.metrics import roc_auc_score, roc_curve" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "_sphinx_cell_id": "5114d29c-fd5e-4d2c-8741-109759ffbdb2" }, "outputs": [ { "data": { "text/plain": [ "Index(['number_of_courses_viewed', 'annual_income', 'interaction_count',\n", " 'lead_score', 'converted'],\n", " dtype='object')" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.dtypes[df.dtypes != 'object'].index" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "_sphinx_cell_id": "b85f880d-db51-4368-863c-7ac89085501b" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "number_of_courses_viewed, 0.764\n", " annual_income, 0.552\n", "interaction_count, 0.738\n", " lead_score, 0.614\n" ] } ], "source": [ "for c in numeric:\n", " auc = roc_auc_score(y_train, df_train[c])\n", " if auc < 0.5:\n", " auc = roc_auc_score(y_train, -df_train[c])\n", " print('%16s, %.3f' % (c, auc))" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "_sphinx_cell_id": "fed814a7-d5f3-402e-80e2-88f3d4119494" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(5, 5))\n", "\n", "fpr, tpr, _ = roc_curve(y_train, df_train.number_of_courses_viewed)\n", "plt.plot(fpr, tpr, label='number_of_courses_viewed')\n", "\n", "fpr, tpr, _ = roc_curve(y_train, df_train.interaction_count)\n", "plt.plot(fpr, tpr, label='interaction_count')\n", "\n", "plt.plot([0, 1], [0, 1], color='grey', linestyle='--')\n", "\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "_sphinx_cell_id": "d393c626-26e8-4a79-add5-18408276fc81" }, "outputs": [ { "data": { "image/png": "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72F5uLnZjRs33JqRktLmq9WrV7sdW7lyZbJ9dJSfn59rqLlzAwAA9mVpnxutVWnevLmUKlVKLl++LPPmzZO1a9fK8uXLzflOnTpJiRIlTI2O6t27tzRo0EDGjh0rLVu2NB2QdQj5jBkzrHwZAADAi1gabs6dO2cCTHR0tOkPoxP6abBp3LixOR8VFSXZs/+vcqlu3bomAL311lsyaNAgM4R80aJFUqlSJQtfBQAA8CaWhpuPPvooxfNai3Oz9u3bmw0AAMAn+twAAADcDcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwFcINAACwlZxWFwDISP37j5KYmKtux/z988jo0QMsKxMAIGMRbmBrGmyCg4e6HTtxwn0fAGAvNEsBAABbIdwAAABbIdwAAABbIdwAAABbIdwAAABbIdwAAABbIdwAAABbIdwAAABbIdwAAABbIdwAAABbsTTcRERESM2aNaVAgQJSrFgxadOmjRw6dCjFx0RGRkq2bNnctjx58mRamQEAgHezNNysW7dOevbsKVu2bJGVK1fK9evXpUmTJhIfH5/i4woWLCjR0dGu7eTJk5lWZgAA4N0sXThz2bJlt9TKaA3Ozp07pX79+sk+TmtrAgICMqGEAADA13hVn5tLly6Zn0WKFEnxuri4OHnggQckKChIWrduLfv370/22oSEBImNjXXbAACAfVlac5PUjRs3pE+fPvLoo49KpUqVkr2ubNmyMnPmTKlSpYoJQ//5z3+kbt26JuCULFnSY7+et99+WzJL//6jJCbmqtsxf/88Mnr0gEwrAwAAWZnXhBvte7Nv3z7ZsGFDiteFhYWZzUmDTfny5WX69OkyfPjwW64fOHCg9O3b17WvNTda45NRNNgEBw91O3bihPs+AACwebjp1auXfPfdd7J+/XqPtS8pyZUrl4SGhsqRI0c8nvfz8zMbAADIGiztc+NwOEywWbhwoaxZs0ZKly6d6nskJibK3r17JTAwMEPKCAAAfEtOq5ui5s2bJ19//bWZ6+bs2bPmeKFChSRv3rzm906dOkmJEiVM3xk1bNgwqVOn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Ig0yGlg1PO3bt082bdpk+l4lvZ8+t/bFSkofC/gSam4AC9x///3mZ3R0tOtY0o6vdytpp1u1ZcsW08FVv/T0X+9ac6O1PSEhIW6bdnpOC+10q51hN27c6HZc97VDclrol7C+J+fPn/d4XjvRpvR8d/sea83W66+/bgLK3//+d5k1a5Y5Xr16dTlw4MAt751uGmyUjrbSWp93331XfvrpJ9Ppds2aNbd9Tu0UrM+lNTaffvqp6SStz+eJ1tjpe37s2LFbyqEdgp0aNGhgwo1uGm409GngGTNmjAk5ztqvpB3Hb76fdpp2vufbtm275W8L8DbU3AAW1Upo05E2eegXkQaNt956K93ur19Q2rSiNQxai/D+++/L2LFjXV/a2vzRqVMnc0zDzm+//SarV682gUKHaqdFv379TA2Hjl7SET0aBjRM6Bd1WugoqXfeeUfatGljRvBok97u3bvNF7o2hejzPfPMM6b8GiS+/fZbWbBggWvkT1rf4ytXrph760gjfZyO2NJal3bt2pnz/fv3N/fVUUjadKW1Php2Vq5cKZMmTZLvvvvOBA4NEIULFzaji7RmTYPKndDPRpuO9u/fL88//3yK17799tumBklHxTVr1syEFR3VdeHCBfP5Kw00GtI0eNWrV891TGtstHbIWWulI8P0mF6r5dVrL126ZAKjhtfw8HB5+eWXzd+Mvj/62rX2T5voAK9jdacfwK60Y6+OWLq5w2h4eLj5/cCBA6bjZ968ec0oFh2t46mza9KOmtrRt1ChQm73vLmTqT6vduJ9+eWXTcfWwoULOwYNGuTWwfjatWuOwYMHO4KDg81oGR1x07ZtW9MBNbnnuR3t9Kojw0qUKGHuqWVaunSp2zWp6VCsdLRRu3btzOvQzq6PPPKIY+vWra7zU6ZMMSOq9Pkefvhhx+zZs90en5b3OCEhwfHss886goKCTAdc7dDbq1cv01nYadu2bY7GjRubUWk6ckpHWzk7U2vnYv0M9H3X59VzOsorNe+jfh43dxz39FmruXPnmtemZdXnrF+/vhlJlvR+erx27dquY9rJWu8/YMAAt3vp38iECRMcZcuWNe/p/fffbzqrr1u3znXNt99+a0bt6agpHck2c+ZMOhTD62TT/7E6YAEAAKQX+twAAABbIdwAuCNJhwffvOmontTS/jTJ3a958+ZiN9oPKqX38HYzQAO4czRLAbgjOg9KcnTocGqHbusoqORGQum9bh6O7Ot0SYyUlioIDg722jWtAF9DuAEAALZCsxQAALAVwg0AALAVwg0AALAVwg0AALAVwg0AALAVwg0AALAVwg0AALAVwg0AABA7+X9tzs0dErejfwAAAABJRU5ErkJggg==", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.histplot(df_train.number_of_courses_viewed[y_train == 1],\n", " stat='density', bins=50,\n", " color='orange', alpha=0.5,\n", " label='positive')\n", "sns.histplot(df_train.number_of_courses_viewed[y_train == 0],\n", " stat='density', bins=50,\n", " color='blue', alpha=0.5,\n", " label='negative')\n", "\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "_sphinx_cell_id": "d00bbf9e-8309-4840-97c5-9e93bf45d91a" }, "source": [ "## Question 2: Training the model\n", "\n", "\n", "Apply one-hot-encoding using `DictVectorizer` and train the logistic regression with these parameters:\n", "\n", "```\n", "LogisticRegression(C=1.0, max_iter=1000)\n", "```" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "_sphinx_cell_id": "b304c8c7-84eb-4190-9b6f-c0e66484655b" }, "outputs": [], "source": [ "from sklearn.feature_extraction import DictVectorizer\n", "from sklearn.linear_model import LogisticRegression" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "_sphinx_cell_id": "24b013c8-7f9e-4281-a3fe-3a36ac738963" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\alexe\\miniconda3\\Lib\\site-packages\\sklearn\\linear_model\\_logistic.py:465: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. OF ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " n_iter_i = _check_optimize_result(\n" ] } ], "source": [ "train_dicts = df_train.to_dict(orient='records')\n", "dv = DictVectorizer()\n", "X_train = dv.fit_transform(train_dicts)\n", "\n", "model = LogisticRegression(C=1.0, max_iter=1000)\n", "model.fit(X_train, y_train)\n", "\n", "val_dicts = df_val.to_dict(orient='records')\n", "X_val = dv.transform(val_dicts)\n", "\n", "y_pred = model.predict_proba(X_val)[:, 1]" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "_sphinx_cell_id": "3517aece-c76b-43ac-8ac9-0584b92774c6" }, "outputs": [ { "data": { "text/plain": [ "np.float64(0.9212923017927332)" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "roc_auc_score(y_val, y_pred)" ] }, { "cell_type": "markdown", "metadata": { "_sphinx_cell_id": "a25f755e-993e-444a-a4f9-382214a85685" }, "source": [ "## Question 3: Precision and Recall\n", "\n", "Now let's compute precision and recall for our model.\n", "\n", "* Evaluate the model on all thresholds from 0.0 to 1.0 with step 0.01\n", "* For each threshold, compute precision and recall\n", "* Plot them" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "_sphinx_cell_id": "d67ba475-4d93-4666-8fe1-60854e8491e1" }, "outputs": [], "source": [ "def confusion_matrix_dataframe(y_val, y_pred):\n", " scores = []\n", "\n", " thresholds = np.linspace(0, 1, 101)\n", "\n", " for t in thresholds:\n", " actual_positive = (y_val == 1)\n", " actual_negative = (y_val == 0)\n", "\n", " predict_positive = (y_pred >= t)\n", " predict_negative = (y_pred < t)\n", "\n", " tp = (predict_positive & actual_positive).sum()\n", " tn = (predict_negative & actual_negative).sum()\n", "\n", " fp = (predict_positive & actual_negative).sum()\n", " fn = (predict_negative & actual_positive).sum()\n", "\n", " scores.append((t, tp, fp, fn, tn))\n", "\n", " columns = ['threshold', 'tp', 'fp', 'fn', 'tn']\n", " df_scores = pd.DataFrame(scores, columns=columns)\n", "\n", " return df_scores" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "_sphinx_cell_id": "42de3bbd-4312-42a7-a743-0ee86c0a277c" }, "outputs": [], "source": [ "df_scores = confusion_matrix_dataframe(y_val, y_pred)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "_sphinx_cell_id": "6fd0a74e-978f-43a3-baa9-2265c9ccdc7b" }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    thresholdtpfpfntn
    00.017112200
    100.116896326
    200.216675547
    300.316450772
    400.4158351387
    500.5154281794
    600.61431428108
    700.71341137111
    800.8125746115
    900.998573117
    1001.000171122
    \n", "
    " ], "text/plain": [ " threshold tp fp fn tn\n", "0 0.0 171 122 0 0\n", "10 0.1 168 96 3 26\n", "20 0.2 166 75 5 47\n", "30 0.3 164 50 7 72\n", "40 0.4 158 35 13 87\n", "50 0.5 154 28 17 94\n", "60 0.6 143 14 28 108\n", "70 0.7 134 11 37 111\n", "80 0.8 125 7 46 115\n", "90 0.9 98 5 73 117\n", "100 1.0 0 0 171 122" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_scores[::10]" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "_sphinx_cell_id": "a01f8122-8b1d-4a61-a094-3078dbf1ee2c" }, "outputs": [], "source": [ "df_scores['p'] = df_scores.tp / (df_scores.tp + df_scores.fp)\n", "df_scores['r'] = df_scores.tp / (df_scores.tp + df_scores.fn)" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "_sphinx_cell_id": "783012b7-28d0-4d4f-8adf-67d58235c035" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(df_scores.threshold, df_scores.p, label='precision')\n", "plt.plot(df_scores.threshold, df_scores.r, label='recall')\n", "\n", "plt.vlines(0.545, 0, 1, color='grey', linestyle='--', alpha=0.5)\n", "\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "_sphinx_cell_id": "b57c381f-102e-4c3d-bafd-5b30ba6659db" }, "source": [ "## Question 4: F1 score\n", "\n", "Precision and recall are conflicting - when one grows, the other goes down. That's why they are often combined into the F1 score - a metrics that takes into account both\n", "\n", "This is the formula for computing F1:\n", "\n", "$$F_1 = 2 \\cdot \\cfrac{P \\cdot R}{P + R}$$\n", "\n", "Where $P$ is precision and $R$ is recall.\n", "\n", "Let's compute F1 for all thresholds from 0.0 to 1.0 with increment 0.01" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "_sphinx_cell_id": "f0214a98-7ab3-4da8-aebb-87fc11e5e08f" }, "outputs": [], "source": [ "df_scores['f1'] = 2 * df_scores.p * df_scores.r / (df_scores.p + df_scores.r)" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "_sphinx_cell_id": "6580b363-fcbf-490e-aa3f-4c2c163273d6" }, "outputs": [ { "data": { "text/plain": [ "threshold 0.540000\n", "tp 152.000000\n", "fp 21.000000\n", "fn 19.000000\n", "tn 101.000000\n", "p 0.878613\n", "r 0.888889\n", "f1 0.883721\n", "Name: 54, dtype: float64" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_scores.loc[df_scores.f1.argmax()]" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "_sphinx_cell_id": "bf137907-71e3-447d-8fe3-229cd8fd162a" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10, 5))\n", "\n", "plt.plot(df_scores.threshold, df_scores.f1)\n", "plt.vlines(0.54, 0.4, 0.9, color='grey', linestyle='--', alpha=0.5)\n", "\n", "plt.xticks(np.linspace(0, 1, 11))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "_sphinx_cell_id": "e38d7882-776e-4c26-9bc2-e7f5063df3aa" }, "source": [ "0.22" ] }, { "cell_type": "markdown", "metadata": { "_sphinx_cell_id": "2158a722-ffcd-47b7-8f29-3adbc99957f2" }, "source": [ "## Question 5: 5-Fold CV\n", "\n", "\n", "Use the `KFold` class from Scikit-Learn to evaluate our model on 5 different folds:\n", "\n", "```\n", "KFold(n_splits=5, shuffle=True, random_state=1)\n", "```\n", "\n", "* Iterate over different folds of `df_full_train`\n", "* Split the data into train and validation\n", "* Train the model on train with these parameters: `LogisticRegression(solver='liblinear', C=1.0, max_iter=1000)`\n", "* Use AUC to evaluate the model on validation\n" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "_sphinx_cell_id": "54ee2a9e-c9d9-4f41-8487-9cae44b2d86c" }, "outputs": [], "source": [ "from sklearn.model_selection import KFold" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "_sphinx_cell_id": "7812f47c-8b41-4e4b-b15a-b2231067fb90" }, "outputs": [ { "data": { "text/plain": [ "['lead_source',\n", " 'industry',\n", " 'number_of_courses_viewed',\n", " 'annual_income',\n", " 'employment_status',\n", " 'location',\n", " 'interaction_count',\n", " 'lead_score',\n", " 'converted']" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "columns" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "_sphinx_cell_id": "471d0278-9c57-4c81-9011-35faa53c923f" }, "outputs": [ { "data": { "text/plain": [ "['lead_source',\n", " 'industry',\n", " 'number_of_courses_viewed',\n", " 'annual_income',\n", " 'employment_status',\n", " 'location',\n", " 'interaction_count',\n", " 'lead_score']" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "columns = list(df.columns)\n", "columns.remove('converted')\n", "columns" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "_sphinx_cell_id": "61b05696-9196-45af-9546-6eb6ecf45174" }, "outputs": [], "source": [ "def train(df_train, y_train, C=1.0):\n", " dicts = df_train[columns].to_dict(orient='records')\n", "\n", " dv = DictVectorizer()\n", " X_train = dv.fit_transform(dicts)\n", "\n", " model = LogisticRegression(solver='liblinear', C=C, max_iter=1000)\n", " model.fit(X_train, y_train)\n", "\n", " return dv, model\n", "\n", "def predict(df, dv, model):\n", " dicts = df[columns].to_dict(orient='records')\n", "\n", " X = dv.transform(dicts)\n", " y_pred = model.predict_proba(X)[:, 1]\n", "\n", " return y_pred" ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "_sphinx_cell_id": "644c7533-cd71-49e9-a690-8fc8c34d2b3a" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.822 +- 0.036\n" ] } ], "source": [ "scores = []\n", "\n", "kfold = KFold(n_splits=5, shuffle=True, random_state=1)\n", "\n", "for train_idx, val_idx in kfold.split(df_full_train):\n", " df_train = df_full_train.iloc[train_idx]\n", " df_val = df_full_train.iloc[val_idx]\n", "\n", " y_train = df_train.converted.values\n", " y_val = df_val.converted.values\n", "\n", " dv, model = train(df_train, y_train, C=1.0)\n", " y_pred = predict(df_val, dv, model)\n", "\n", " auc = roc_auc_score(y_val, y_pred)\n", " scores.append(auc)\n", "\n", "print('%.3f +- %.3f' % (np.mean(scores), np.std(scores)))" ] }, { "cell_type": "markdown", "metadata": { "_sphinx_cell_id": "051ef690-0114-4e12-b5cd-e041ed4c117c" }, "source": [ "## Question 6: Hyperparemeter Tuning\n", "\n", "Now let's use 5-Fold cross-validation to find the best parameter C\n", "\n", "* Iterate over the following C values: `[0.01, 0.1, 0.5, 10]`\n", "* Initialize `KFold` with the same parameters as previously\n", "* Use these parametes for the model: `LogisticRegression(solver='liblinear', C=C, max_iter=1000)`\n", "* Compute the mean score as well as the std (round the mean and std to 3 decimal digits)" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "_sphinx_cell_id": "3d0da0cd-1bf9-4e97-bc6f-7ac2d86f67de" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C=1e-06, 0.560 +- 0.024\n", "C=0.001, 0.867 +- 0.029\n", "C= 1, 0.822 +- 0.036\n" ] } ], "source": [ "kfold = KFold(n_splits=5, shuffle=True, random_state=1)\n", "\n", "for C in [0.000001, 0.001, 1]:\n", " scores = []\n", "\n", " for train_idx, val_idx in kfold.split(df_full_train):\n", " df_train = df_full_train.iloc[train_idx]\n", " df_val = df_full_train.iloc[val_idx]\n", "\n", " y_train = df_train.converted.values\n", " y_val = df_val.converted.values\n", "\n", " dv, model = train(df_train, y_train, C=C)\n", " y_pred = predict(df_val, dv, model)\n", "\n", " auc = roc_auc_score(y_val, y_pred)\n", " scores.append(auc)\n", "\n", " print('C=%4s, %.3f +- %.3f' % (C, np.mean(scores), np.std(scores)))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "_sphinx_cell_id": "e3c80ca4-9f7d-43d7-ab3a-c546baa8a993" }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "base", "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.13.5" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: cohorts/2025/05-deployment/homework/.python-version ================================================ 3.13 ================================================ FILE: cohorts/2025/05-deployment/homework/Dockerfile_base ================================================ FROM python:3.13.5-slim-bookworm WORKDIR /code COPY pipeline_v2.bin . ================================================ FILE: cohorts/2025/05-deployment/homework/Dockerfile_full ================================================ FROM python:3.13.10-slim-bookworm COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ ENV PATH="/code/.venv/bin:$PATH" WORKDIR /code COPY "pyproject.toml" "uv.lock" ".python-version" ./ RUN uv sync --locked COPY pipeline_v2.bin . COPY "q6_predict.py" ./ EXPOSE 9696 ENTRYPOINT ["uvicorn", "q6_predict:app", "--host", "0.0.0.0", "--port", "9696"] ================================================ FILE: cohorts/2025/05-deployment/homework/Dockerfile_hw ================================================ FROM COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ ENV PATH="/code/.venv/bin:$PATH" COPY "pyproject.toml" "uv.lock" ".python-version" ./ RUN uv sync --locked COPY "q6_predict.py" ./ EXPOSE 9696 ENTRYPOINT ["uvicorn", "q6_predict:app", "--host", "0.0.0.0", "--port", "9696"] ================================================ FILE: cohorts/2025/05-deployment/homework/README.md ================================================ ================================================ FILE: cohorts/2025/05-deployment/homework/main.py ================================================ def main(): print("Hello from homework!") if __name__ == "__main__": main() ================================================ FILE: cohorts/2025/05-deployment/homework/pyproject.toml ================================================ [project] name = "homework" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.13" dependencies = [ "fastapi>=0.119.1", "scikit-learn==1.6.1", "uvicorn>=0.38.0", ] ================================================ FILE: cohorts/2025/05-deployment/homework/q3_test.py ================================================ import pickle with open('pipeline_v1.bin', 'rb') as f_in: pipeline = pickle.load(f_in) record = { "lead_source": "paid_ads", "number_of_courses_viewed": 2, "annual_income": 79276.0 } y_pred = pipeline.predict_proba(record)[0, 1] print(y_pred) ================================================ FILE: cohorts/2025/05-deployment/homework/q4_predict.py ================================================ import pickle import uvicorn from fastapi import FastAPI app = FastAPI(title='lead-scoring') with open('pipeline_v1.bin', 'rb') as f_in: pipeline = pickle.load(f_in) @app.post('/predict') def predict(lead: dict) -> dict: y_pred = pipeline.predict_proba(lead)[0, 1] conversion = y_pred >= 0.5 result = { 'conversion_probability': float(y_pred), 'conversion': bool(conversion) } return result if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=9696) ================================================ FILE: cohorts/2025/05-deployment/homework/q4_test.py ================================================ import requests url = "http://localhost:9696/predict" client = { "lead_source": "organic_search", "number_of_courses_viewed": 4, "annual_income": 80304.0 } response = requests.post(url, json=client).json() print(response) ================================================ FILE: cohorts/2025/05-deployment/homework/q6_predict.py ================================================ import pickle import uvicorn from fastapi import FastAPI app = FastAPI(title='lead-scoring') with open('pipeline_v2.bin', 'rb') as f_in: pipeline = pickle.load(f_in) @app.post('/predict') def predict(lead: dict) -> dict: y_pred = pipeline.predict_proba(lead)[0, 1] conversion = y_pred >= 0.5 result = { 'conversion_probability': float(y_pred), 'conversion': bool(conversion) } return result if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=9696) ================================================ FILE: cohorts/2025/05-deployment/homework/q6_test.py ================================================ import requests url = "http://localhost:9696/predict" client = {"job": "management", "duration": 400, "poutcome": "success"} response = requests.post(url, json=client).json() print(response) ================================================ FILE: cohorts/2025/05-deployment/homework.md ================================================ ## Homework > Note: sometimes your answer doesn't match one of the options exactly. > That's fine. > Select the option that's closest to your solution. > If it's exactly in between two options, select the higher value. We recommend using python 3.12 or 3.13 in this homework. In this homework, we're going to continue working with the lead scoring dataset. You don't need the dataset: we will provide the model for you. ## Question 1 * Install `uv` * What's the version of uv you installed? * Use `--version` to find out ## Initialize an empty uv project You should create an empty folder for homework and do it there. ## Question 2 * Use uv to install Scikit-Learn version 1.6.1 * What's the first hash for Scikit-Learn you get in the lock file? * Include the entire string starting with sha256:, don't include quotes ## Models We have prepared a pipeline with a dictionary vectorizer and a model. It was trained (roughly) using this code: ```python categorical = ['lead_source'] numeric = ['number_of_courses_viewed', 'annual_income'] df[categorical] = df[categorical].fillna('NA') df[numeric] = df[numeric].fillna(0) train_dict = df[categorical + numeric].to_dict(orient='records') pipeline = make_pipeline( DictVectorizer(), LogisticRegression(solver='liblinear') ) pipeline.fit(train_dict, y_train) ``` > **Note**: You don't need to train the model. This code is just for your reference. And then saved with Pickle. Download it [here](https://github.com/DataTalksClub/machine-learning-zoomcamp/tree/master/cohorts/2025/05-deployment/pipeline_v1.bin). With `wget`: ```bash wget https://github.com/DataTalksClub/machine-learning-zoomcamp/raw/refs/heads/master/cohorts/2025/05-deployment/pipeline_v1.bin ``` ## Question 3 Let's use the model! * Write a script for loading the pipeline with pickle * Score this record: ```json { "lead_source": "paid_ads", "number_of_courses_viewed": 2, "annual_income": 79276.0 } ``` What's the probability that this lead will convert? * 0.333 * 0.533 * 0.733 * 0.933 If you're getting errors when unpickling the files, check their checksum: ```bash $ md5sum pipeline_v1.bin 7d17d2e4dfbaf1e408e1a62e6e880d49 *pipeline_v1.bin ``` ## Question 4 Now let's serve this model as a web service * Install FastAPI * Write FastAPI code for serving the model * Now score this client using `requests`: ```python url = "YOUR_URL" client = { "lead_source": "organic_search", "number_of_courses_viewed": 4, "annual_income": 80304.0 } requests.post(url, json=client).json() ``` What's the probability that this client will get a subscription? * 0.334 * 0.534 * 0.734 * 0.934 ## Docker Install [Docker](https://github.com/DataTalksClub/machine-learning-zoomcamp/blob/master/05-deployment/06-docker.md). We will use it for the next two questions. For these questions, we prepared a base image: `agrigorev/zoomcamp-model:2025`. You'll need to use it (see Question 5 for an example). This image is based on `3.13.5-slim-bookworm` and has a pipeline with logistic regression (a different one) as well a dictionary vectorizer inside. This is how the Dockerfile for this image looks like: ```docker FROM python:3.13.5-slim-bookworm WORKDIR /code COPY pipeline_v2.bin . ``` We already built it and then pushed it to [`agrigorev/zoomcamp-model:2025`](https://hub.docker.com/r/agrigorev/zoomcamp-model). > **Note**: You don't need to build this docker image, it's just for your reference. ## Question 5 Download the base image `agrigorev/zoomcamp-model:2025`. You can easily make it by using [docker pull](https://docs.docker.com/engine/reference/commandline/pull/) command. So what's the size of this base image? * 45 MB * 121 MB * 245 MB * 330 MB You can get this information when running `docker images` - it'll be in the "SIZE" column. ## Dockerfile Now create your own `Dockerfile` based on the image we prepared. It should start like that: ```docker FROM agrigorev/zoomcamp-model:2025 # add your stuff here ``` Now complete it: * Install all the dependencies from pyproject.toml * Copy your FastAPI script * Run it with uvicorn After that, you can build your docker image. ## Question 6 Let's run your docker container! After running it, score this client once again: ```python url = "YOUR_URL" client = { "lead_source": "organic_search", "number_of_courses_viewed": 4, "annual_income": 80304.0 } requests.post(url, json=client).json() ``` What's the probability that this lead will convert? * 0.39 * 0.59 * 0.79 * 0.99 ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2025/homework/hw05 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ## Publishing to Docker hub This is just for reference, this is how we published an image to Docker hub. `Dockerfile_base`: ```dockerfile FROM python:3.13.5-slim-bookworm WORKDIR /code COPY pipeline_v2.bin . ``` Publishing: ```bash docker build -t mlzoomcamp2025_hw5 -f Dockerfile_base . docker tag mlzoomcamp2025_hw5:latest agrigorev/zoomcamp-model:2025 docker push agrigorev/zoomcamp-model:2025 ``` ================================================ FILE: cohorts/2025/06-trees/homework.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "id": "3983230d", "metadata": { "_sphinx_cell_id": "e4954318-bdba-4f1a-be5b-495cbbd0eaea" }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.feature_extraction import DictVectorizer" ] }, { "cell_type": "code", "execution_count": 2, "id": "ae44883b", "metadata": { "_sphinx_cell_id": "b0a9cab0-ff35-4ce2-ade1-d4a3da3ed12b" }, "outputs": [], "source": [ "df = pd.read_csv(\"https://raw.githubusercontent.com/alexeygrigorev/datasets/master/car_fuel_efficiency.csv\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "c301e7c5-1731-44d2-8fe8-9da4412b7974", "metadata": { "_sphinx_cell_id": "e2b310c8-ffdd-4546-b322-24c34327cdbc" }, "outputs": [], "source": [ "df = df.fillna(0)" ] }, { "cell_type": "code", "execution_count": 5, "id": "73fc523a", "metadata": { "_sphinx_cell_id": "d8c69613-a94d-4bb0-8279-1b0b9880d1a1" }, "outputs": [], "source": [ "df_full_train, df_test = train_test_split(df, test_size=0.2, random_state=1)\n", "df_train, df_val = train_test_split(df_full_train, test_size=0.25, random_state=1)\n", "\n", "df_train = df_train.reset_index(drop=True)\n", "df_val = df_val.reset_index(drop=True)\n", "df_test = df_test.reset_index(drop=True)\n", "\n", "y_train = df_train.fuel_efficiency_mpg.values\n", "y_val = df_val.fuel_efficiency_mpg.values\n", "y_test = df_test.fuel_efficiency_mpg.values\n", "\n", "del df_train['fuel_efficiency_mpg']\n", "del df_val['fuel_efficiency_mpg']\n", "del df_test['fuel_efficiency_mpg']" ] }, { "cell_type": "code", "execution_count": 6, "id": "664f50ae", "metadata": { "_sphinx_cell_id": "afb1381d-fc6c-431d-bd74-791e61044363" }, "outputs": [], "source": [ "train_dicts = df_train.to_dict(orient='records')\n", "dv = DictVectorizer(sparse=True)\n", "X_train = dv.fit_transform(train_dicts)\n", "\n", "val_dicts = df_val.to_dict(orient='records')\n", "X_val = dv.transform(val_dicts)" ] }, { "cell_type": "markdown", "id": "b68a1e39", "metadata": { "_sphinx_cell_id": "02d0b70a-ad0b-4b84-9a09-6a5e5b4302e3" }, "source": [ "## Question 1" ] }, { "cell_type": "code", "execution_count": 7, "id": "f4a721c0", "metadata": { "_sphinx_cell_id": "f9a62740-14cf-4c5d-be4b-bffdf89a7d8f" }, "outputs": [], "source": [ "from sklearn.tree import DecisionTreeRegressor\n", "from sklearn.tree import export_text" ] }, { "cell_type": "code", "execution_count": 8, "id": "0f453a9c", "metadata": { "_sphinx_cell_id": "c7c5a951-cc9b-414b-8e9c-b3a375b3dfc6" }, "outputs": [ { "data": { "text/html": [ "
    DecisionTreeRegressor(max_depth=1)
    In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
    On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
    " ], "text/plain": [ "DecisionTreeRegressor(max_depth=1)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dt = DecisionTreeRegressor(max_depth=1)\n", "dt.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 9, "id": "0895f239-a233-403e-9443-d373d3061d25", "metadata": { "_sphinx_cell_id": "9b395758-e1ce-4db3-b4c8-3e68587c0723" }, "outputs": [ { "data": { "text/plain": [ "Index(['engine_displacement', 'num_cylinders', 'horsepower', 'vehicle_weight',\n", " 'acceleration', 'model_year', 'origin', 'fuel_type', 'drivetrain',\n", " 'num_doors', 'fuel_efficiency_mpg'],\n", " dtype='object')" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "code", "execution_count": 10, "id": "6cac2971", "metadata": { "_sphinx_cell_id": "896e1945-f09c-40df-97cb-11e499c54299" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "|--- vehicle_weight <= 3022.11\n", "| |--- value: [16.88]\n", "|--- vehicle_weight > 3022.11\n", "| |--- value: [12.94]\n", "\n" ] } ], "source": [ "print(export_text(dt, feature_names=dv.feature_names_))" ] }, { "cell_type": "markdown", "id": "80188e88", "metadata": { "_sphinx_cell_id": "28d173cc-d575-4c90-9094-9e2b68d50e3a" }, "source": [ "Which feature is used for splitting the data?\n" ] }, { "cell_type": "markdown", "id": "4f9a3a0d", "metadata": { "_sphinx_cell_id": "4c802a56-7d3b-4e20-bf33-731f2702df48" }, "source": [ "## Question 2" ] }, { "cell_type": "code", "execution_count": 12, "id": "dd4ff348", "metadata": { "_sphinx_cell_id": "dec0831e-a729-43c2-aad6-ef3ec716c18a" }, "outputs": [], "source": [ "from sklearn.ensemble import RandomForestRegressor\n", "from sklearn.metrics import root_mean_squared_error" ] }, { "cell_type": "code", "execution_count": 13, "id": "cf3a66ea", "metadata": { "_sphinx_cell_id": "3cee25b5-a792-4957-b2b3-e3337b256a58" }, "outputs": [ { "data": { "text/html": [ "
    RandomForestRegressor(n_estimators=10, n_jobs=-1, random_state=1)
    In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
    On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
    " ], "text/plain": [ "RandomForestRegressor(n_estimators=10, n_jobs=-1, random_state=1)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rf = RandomForestRegressor(\n", " n_estimators=10,\n", " random_state=1,\n", " n_jobs=-1\n", ")\n", "\n", "rf.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 14, "id": "3a5130ea", "metadata": { "_sphinx_cell_id": "f76197b1-7551-4490-88bf-b042350e6e88" }, "outputs": [ { "data": { "text/plain": [ "0.4595777223092726" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred = rf.predict(X_val)\n", "root_mean_squared_error(y_val, y_pred)" ] }, { "cell_type": "markdown", "id": "5c66937b", "metadata": { "_sphinx_cell_id": "0397bda5-6842-4532-ba09-cf62aa7773f8" }, "source": [ "## Question 3" ] }, { "cell_type": "code", "execution_count": 15, "id": "c69599c4", "metadata": { "_sphinx_cell_id": "f7c71ba8-3c63-424c-817a-fcc987df0876" }, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 16, "id": "b0dbcc09", "metadata": { "_sphinx_cell_id": "f1c60d8d-5a09-4f71-99e3-392de1ad36c8" }, "outputs": [], "source": [ "from tqdm.auto import tqdm" ] }, { "cell_type": "code", "execution_count": 18, "id": "15c414c6", "metadata": { "_sphinx_cell_id": "0ecbc191-f157-4421-b376-14b100463f74" }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "76ea6d601ec747c18de5e7fde64f4cbd", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/20 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#plt.plot(df_scores.n_estimators, df_scores.rmse)\n", "plt.plot(df_scores.n_estimators, df_scores.rmse)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "cb36c08a", "metadata": { "_sphinx_cell_id": "802d670e-b413-4eb2-9d87-e68352252871" }, "source": [ "After which value of `n_estimators` does RMSE stop improving?\n", "\n", "- 10\n", "- 25\n", "- 80\n", "- 200" ] }, { "cell_type": "markdown", "id": "e61861f4", "metadata": { "_sphinx_cell_id": "02cdbe69-305e-4a0d-98fa-09cf8b4d5e3a" }, "source": [ "We can use `warm_start=True` to train faster. In this case, we train only additional 10 new trees each time, not the entire ensemble from scratch like previously\n", "\n", "```\n", "warm_start : bool, default=False\n", " When set to ``True``, reuse the solution of the previous call to fit\n", " and add more estimators to the ensemble, otherwise, just fit a whole\n", " new forest. See :term:`the Glossary `.\n", "```" ] }, { "cell_type": "code", "execution_count": 20, "id": "df378490", "metadata": { "_sphinx_cell_id": "aec007fc-390d-4773-94eb-94a3a033f591" }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c780978bf6604403b91dfd3892d2d871", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/20 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for d in [10, 15, 20, 25]:\n", " df_subset = df_scores[df_scores.max_depth == d]\n", " plt.plot(df_subset.n_estimators, df_subset.rmse, label=d)\n", "\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "9c1c8dad", "metadata": { "_sphinx_cell_id": "42f36e64-5f2f-4224-8ba0-7ff3a6634145" }, "source": [ "What's the best `max_depth`:\n", "\n", "* **10**\n", "* 15\n", "* 20\n", "* 25" ] }, { "cell_type": "markdown", "id": "058dc0ef", "metadata": { "_sphinx_cell_id": "1a18286b-beff-4657-b550-0a461444fd03" }, "source": [] }, { "cell_type": "markdown", "id": "9d29415d", "metadata": { "_sphinx_cell_id": "f73ca755-99e9-47d2-9bcd-186b7201edbd" }, "source": [ "## Question 5" ] }, { "cell_type": "code", "execution_count": 25, "id": "3a85b04f", "metadata": { "_sphinx_cell_id": "08401b34-ac2d-4cec-a4fc-7cb8ab05b139" }, "outputs": [ { "data": { "text/html": [ "
    RandomForestRegressor(max_depth=20, n_estimators=10, n_jobs=-1, random_state=1)
    In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
    On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
    " ], "text/plain": [ "RandomForestRegressor(max_depth=20, n_estimators=10, n_jobs=-1, random_state=1)" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rf = RandomForestRegressor(\n", " n_estimators=10,\n", " max_depth=20,\n", " random_state=1,\n", " n_jobs=-1\n", ")\n", "rf.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 26, "id": "ad73356f", "metadata": { "_sphinx_cell_id": "12fedf33-fcca-44cb-be95-2346eeb7e0aa" }, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    featureimportance
    13vehicle_weight0.959150
    6horsepower0.015998
    0acceleration0.011480
    3engine_displacement0.003273
    7model_year0.003212
    \n", "
    " ], "text/plain": [ " feature importance\n", "13 vehicle_weight 0.959150\n", "6 horsepower 0.015998\n", "0 acceleration 0.011480\n", "3 engine_displacement 0.003273\n", "7 model_year 0.003212" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_importances = pd.DataFrame()\n", "df_importances['feature'] = dv.feature_names_\n", "df_importances['importance'] = rf.feature_importances_\n", "df_importances.sort_values(by='importance', ascending=False).head()" ] }, { "cell_type": "markdown", "id": "07729dc7", "metadata": { "_sphinx_cell_id": "b161b229-da0d-40c3-8cb3-75efda396dc7" }, "source": [ "What's the most important feature (among these 4)? \n", "\n", "* **`study_hours_per_week`**\n", "* `attendance_rate`\n", "* `distance_to_school`\n", "* `teacher_quality`\n" ] }, { "cell_type": "markdown", "id": "8a1a147c", "metadata": { "_sphinx_cell_id": "b94cf8f9-cdc0-4ca2-9b3d-c55a7e7f86d8" }, "source": [ "## Question 6" ] }, { "cell_type": "code", "execution_count": 27, "id": "ee85c88d", "metadata": { "_sphinx_cell_id": "32b4b4e0-b27b-405e-bb05-fdc3b32518a2" }, "outputs": [], "source": [ "import xgboost as xgb" ] }, { "cell_type": "code", "execution_count": 28, "id": "6174a661", "metadata": { "_sphinx_cell_id": "13aad96a-d0eb-41be-910d-4bfe4cbce706" }, "outputs": [ { "data": { "text/plain": [ "['acceleration',\n", " 'drivetrain=All-wheel drive',\n", " 'drivetrain=Front-wheel drive',\n", " 'engine_displacement',\n", " 'fuel_type=Diesel',\n", " 'fuel_type=Gasoline',\n", " 'horsepower',\n", " 'model_year',\n", " 'num_cylinders',\n", " 'num_doors',\n", " 'origin=Asia',\n", " 'origin=Europe',\n", " 'origin=USA',\n", " 'vehicle_weight']" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features = dv.feature_names_\n", "features = [f.replace('<', 'less ') for f in features]\n", "features" ] }, { "cell_type": "code", "execution_count": 29, "id": "c62122ac", "metadata": { "_sphinx_cell_id": "ae9b2b06-6c03-4d22-af84-13d00282da34" }, "outputs": [], "source": [ "dtrain = xgb.DMatrix(X_train, label=y_train, feature_names=features)\n", "dval = xgb.DMatrix(X_val, label=y_val, feature_names=features)" ] }, { "cell_type": "code", "execution_count": 30, "id": "e1ad4d0f", "metadata": { "_sphinx_cell_id": "646cd488-5e3f-47ba-ba79-3a0c78014a9a" }, "outputs": [], "source": [ "watchlist = [(dtrain, 'train'), (dval, 'val')]\n", "scores = {}" ] }, { "cell_type": "code", "execution_count": 31, "id": "aacc2267", "metadata": { "_sphinx_cell_id": "d04bec3a-32ca-41f9-b451-e26e21922c0a" }, "outputs": [], "source": [ "def parse_xgb_output(output):\n", " results = []\n", "\n", " for line in output.stdout.strip().split('\\n'):\n", " it_line, train_line, val_line = line.split('\\t')\n", "\n", " it = int(it_line.strip('[]'))\n", " train = float(train_line.split(':')[1])\n", " val = float(val_line.split(':')[1])\n", "\n", " results.append((it, train, val))\n", " \n", " columns = ['num_iter', 'train_auc', 'val_auc']\n", " df_results = pd.DataFrame(results, columns=columns)\n", " return df_results" ] }, { "cell_type": "code", "execution_count": 32, "id": "0f4463d3", "metadata": { "_sphinx_cell_id": "f5afeeb3-b27f-4b42-950c-c03bdae001d7" }, "outputs": [], "source": [ "%%capture output_03\n", "\n", "xgb_params = {\n", " 'eta': 0.3, \n", " 'max_depth': 6,\n", " 'min_child_weight': 1,\n", "\n", " 'objective': 'reg:squarederror',\n", " 'nthread': 8,\n", "\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "\n", "model = xgb.train(xgb_params, dtrain, num_boost_round=100,\n", " verbose_eval=5, evals=watchlist)" ] }, { "cell_type": "code", "execution_count": 33, "id": "e464cd87", "metadata": { "_sphinx_cell_id": "adafc242-bc47-4c5a-b573-fcd29644a277" }, "outputs": [], "source": [ "scores['eta=0.3'] = parse_xgb_output(output_03)" ] }, { "cell_type": "code", "execution_count": 34, "id": "408abc0b", "metadata": { "_sphinx_cell_id": "d2456080-3bba-484d-8e24-ab28cf5b12a7" }, "outputs": [], "source": [ "%%capture output_01\n", "\n", "xgb_params = {\n", " 'eta': 0.1, \n", " 'max_depth': 6,\n", " 'min_child_weight': 1,\n", "\n", " 'objective': 'reg:squarederror',\n", " 'nthread': 8,\n", "\n", " 'seed': 1,\n", " 'verbosity': 1,\n", "}\n", "\n", "model = xgb.train(xgb_params, dtrain, num_boost_round=100,\n", " verbose_eval=5, evals=watchlist)" ] }, { "cell_type": "code", "execution_count": 35, "id": "bbd9dc49", "metadata": { "_sphinx_cell_id": "94af8a62-3b2c-40bb-9831-ec0d74e55946" }, "outputs": [], "source": [ "scores['eta=0.1'] = parse_xgb_output(output_01)" ] }, { "cell_type": "code", "execution_count": 36, "id": "c8fbb2f4", "metadata": { "_sphinx_cell_id": "7196f893-887d-47ff-9d8a-d4d1fd6b7fd9" }, "outputs": [ { "data": { "image/png": "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19fXu/Ly8lwzZ86MaLviyd69e+3/FEuWLLHbxcXFruTkZPsDyO3LL7+0x6xYsSKCLY1dZWVlrhNPPNG1YMEC1/nnn+8JLJzr4Pnxj3/sOvfcc1t83ul0unr16uX69a9/7dlnzn9qaqrrpZdeClMr48cll1zi+v73v++z79vf/rbruuuus+uc7+BoGlj8Oa9ffPGFfd1HH33kOebdd991ORwO144dO9rVHi4JtaCmpkZr1qyx3V3e9ywy2ytWrIho2+JJSUmJfczJybGP5pzX1tb6nPeBAwfquOOO47y3kbnkc8kll/icU4NzHTx//etfdeaZZ+rqq6+2lzqHDRump556yvN8YWGhdu/e7XOuzf1TzGVmznXgRo8erYULF+rf//633f7kk0+0bNkyjR8/3m5zvkPDn/NqHs1lIPP/g5s53nx/fvjhh+36/Li4+WEo7N+/314n7dmzp89+s/3VV19FrF3xxNxl29RTnHPOOTrttNPsPvM/Q0pKiv0H3/S8m+cQmJdffllr167VRx99dNRznOvg2bJli5588klNnTpVP/nJT+z5/u///m97fidNmuQ5n839POFcB+6+++6zdws2ATsxMdH+rP7lL39p6yYMzndo+HNezaMJ7d6SkpLsL6XtPfcEFkT0N//169fb34wQfOa273fddZcWLFhgi8YR2vBtfqP81a9+ZbdND4v5tz179mwbWBBcr776ql544QW9+OKLOvXUU7Vu3Tr7y48pFOV8xy8uCbUgNzfXJvemIybMdq9evSLWrnhx55136u2339aiRYvUt29fz35zbs3luOLiYp/jOe+BM5d89u7dqzPOOMP+hmOWJUuW6PHHH7fr5rciznVwmBETgwYN8tl3yimnqKioyK67zyc/T4LjRz/6ke1lueaaa+xorBtuuEE/+MEP7ChEg/MdGv6cV/Nofu54q6ursyOH2nvuCSwtMF25w4cPt9dJvX+LMtujRo2KaNtimanjMmHlzTff1AcffGCHJXoz5zw5OdnnvJthz+YHP+c9MN/85jf12Wef2d8+3YvpBTDd5u51znVwmMuaTYfnm/qK448/3q6bf+fmh7X3uTaXNMw1fc514CorK21NhDfzC6b5GW1wvkPDn/NqHs0vQeYXJjfzs9783Zhal3ZpV8luBxjWbKqf586dayufb7nlFjuseffu3ZFuWsy67bbb7JC4xYsXu3bt2uVZKisrfYbamqHOH3zwgR1qO2rUKLug/bxHCRmc6+ANG09KSrLDbTdu3Oh64YUXXBkZGa7nn3/eZzio+fnx1ltvuT799FPX5ZdfzjDbNpo0aZKrT58+nmHNZghubm6u69577/Ucw/lu+6jCjz/+2C4mIjz66KN2/euvv/b7vJphzcOGDbND/JctW2ZHKTKsOQz+93//1/5AN/OxmGHOZlw52s78D9DcYuZmcTP/8G+//XZX165d7Q/9K6+80oYaBD+wcK6D529/+5vrtNNOs7/kDBw40PWnP/3J53kzJPT+++939ezZ0x7zzW9+07Vhw4aItTeWlZaW2n/H5mdzWlqaq3///nbukOrqas8xnO+2WbRoUbM/o01I9Pe8HjhwwAYUMzdOVlaWa/LkyTYItZfD/Kd9fTQAAAChRQ0LAACIegQWAAAQ9QgsAAAg6hFYAABA1COwAACAqEdgAQAAUY/AAgAAoh6BBQAARD0CCwAAiHoEFgAAEPUILAAAIOoRWAAAgKLd/wewc+TW5nMOGQAAAABJRU5ErkJggg==", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(scores['eta=0.1'].num_iter, scores['eta=0.1'].val_auc,\n", " label='0.1')\n", "plt.plot(scores['eta=0.3'].num_iter, scores['eta=0.3'].val_auc,\n", " label='0.3')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "607ecb9e", "metadata": { "_sphinx_cell_id": "936fe38b-dca8-475f-9515-12bd3ebbb042" }, "source": [ "Which eta leads to the best RMSE score on the validation dataset?\n", "\n", "* 0.3\n", "* **0.1**\n", "* Both give equal value\n", "\n", "Note that rounding doesn't change the answer:" ] }, { "cell_type": "code", "execution_count": 37, "id": "b544ce60", "metadata": { "_sphinx_cell_id": "91251477-4990-4edb-b349-3ca04feee104" }, "outputs": [ { "data": { "image/png": "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24DNfCnXb7TW2kdWysvLdfDgQbVr184T7JqDwNLMqc0msDBTCADg/mO2a9eutjnajh07wn04EceElVMtpugLAkszuDvc5hdwSQgAcGIhwTPPPJPLQg2YEaeWjKy4EViagW63AIDGmEtBtOYPDi6yNQPN4wAACC0CSwuax+0rqtCxKqY2AwAQbASWZmjfJkmZqXVTsxhlAQAg+AgsLex4Sx0LAADBR2Bppl7umUKMsAAAEHQElmZiphAAAKFDYGnhmkIsgggAQPARWJqJ5nEAAIQOgaWFRbcFpZUqqagO9+EAABDTCCzNlJGSqOz0JHt/x2FGWQAACCYCSwAKb7dRxwIAQFARWFqAXiwAAIQGgSUAhbcEFgAAgovAEoiZQjSPAwAgqAgsLUDzOAAAQoPAEoDmcUfLq1VYXhXuwwEAIGYRWFogLSlBnTOS7X063gIAECGBZebMmTr//PPVtm1bderUSVdffbU2bdp02tf99a9/Vb9+/ZSSkqJzzz1X7733ntfPXS6Xpk+frq5duyo1NVVjxozR5s2bFVWXhahjAQAgMgLLsmXLdNddd2nVqlVatGiRqqurddlll6msrOkv6xUrVuiGG27Qrbfeqs8++8yGHLN9+eWXnn1++9vf6oknntCcOXP0ySefqE2bNho7dqwqKioU6Xp1pEU/AADB5nCZ4Y1mOnTokB1pMUHm29/+dqP7TJgwwQaad9991/PcBRdcoMGDB9uAYj4+JydH9913n+6//37786KiInXu3Fnz5s3T9ddff9rjKC4uVmZmpn1dRkaGQunPy7Zq5vsbdcWgHP33DUNC+tkAAEQzf76/W1TDYj7AyMrKanKflStX2ks89ZnRE/O8kZ+fr/3793vtYw5++PDhnn0aqqystP8n62/hQvM4AACCr9mBxel06t5779WFF16oAQMGNLmfCSNmtKQ+89g87/65+7mm9mmslsaEGveWm5urSGge14LBKgAAEIzAYmpZTB3K/PnzFWrTpk2zozvubdeuXQqXHllpcjikksoaHS5jajMAABETWO6++25bk7JkyRJ17979lPt26dJFBw4c8HrOPDbPu3/ufq6pfRpKTk6217rqb+GSkhivnMxUe5/LQgAAREBgMZc8TFh566239NFHHykvL++0rxkxYoQWL17s9ZyZYWSeN8x7mGBSfx9Tk2JmC7n3iXTuy0Ks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z549lZKSouHDh2v16tXhPqSoNnPmTJ1//vm2K3GnTp109dVXa9OmTV77VFRU6K677lKHDh2Unp6ua6+9VgcOHAjbMceKRx991HaCvvfeez3Pca4DZ8+ePbrpppvsuUxNTdW5556rNWvWeH5u5jdMnz5dXbt2tT8fM2aMNm/eHNZjjla1tbV66KGHlJeXZ89l79699fDDD3utR8P5bp6PP/5YV1xxhe08a35fLFiwwOvnvpzXI0eO6MYbb7QN5dq1a6dbb71VpaWlzTwi7w9HE+bPn+9KSkpyzZ071/XVV1+5pkyZ4mrXrp3rwIED4T60qDV27FjX888/7/ryyy9d69evd/37v/+7q0ePHq7S0lLPPj/84Q9dubm5rsWLF7vWrFnjuuCCC1wjR44M63FHu9WrV7t69uzpGjhwoOuee+7xPM+5DowjR464zjjjDNctt9zi+uSTT1zbtm1zffDBB64tW7Z49nn00UddmZmZrgULFrg+//xz15VXXunKy8tzHTt2LKzHHo1+/etfuzp06OB69913Xfn5+a6//vWvrvT0dNef/vQnzz6c7+Z57733XD//+c9db775pkl/rrfeesvr576c18svv9w1aNAg16pVq1z//Oc/XX369HHdcMMNrpYisJzCsGHDXHfddZfncW1trSsnJ8c1c+bMsB5XLDl48KD9j2LZsmX2cWFhoSsxMdH+AnL75ptv7D4rV64M45FGr5KSEteZZ57pWrRokWvUqFGewMK5Dpyf/vSnrosuuqjJnzudTleXLl1cv/vd7zzPmfOfnJzsevXVV0N0lLFj/Pjxru9///tez333u9913XjjjfY+5zswGgYWX87r119/bV/36aefevZ5//33XQ6Hw7Vnz54WHQ+XhJpQVVWltWvX2uGu+msWmccrV64M67HFkqKiInublZVlb805r66u9jrv/fr1U48ePTjvzWQu+YwfP97rnBqc68D529/+pvPOO0/XXXedvdQ5ZMgQPfPMM56f5+fna//+/V7n2qyfYi4zc679N3LkSC1evFj/+te/7OPPP/9cy5cv17hx4+xjzndw+HJeza25DGT+e3Az+5vvz08++aRFnx8Tix8GQ0FBgb1O2rlzZ6/nzeONGzeG7bhiiVll29RTXHjhhRowYIB9zvzHkJSUZP+Fb3jezc/gn/nz52vdunX69NNPT/oZ5zpwtm3bpqeeekpTp07Vz372M3u+f/SjH9nzO2nSJM/5bOz3Cefafw8++KBdLdgE7Pj4ePu7+te//rWtmzA438Hhy3k1tya015eQkGD/KG3puSewIKx/+X/55Zf2LyMEnln2/Z577tGiRYts0TiCG77NX5S/+c1v7GMzwmL+3Z4zZ44NLAis119/XS+//LJeeeUVnXPOOVq/fr3948cUinK+YxeXhJqQnZ1tk3vDGRPmcZcuXcJ2XLHi7rvv1rvvvqslS5aoe/funufNuTWX4woLC73257z7z1zyOXjwoL71rW/Zv3DMtmzZMj3xxBP2vvmriHMdGGbGRP/+/b2eO/vss7Vz5057330++X0SGD/5yU/sKMv1119vZ2PdfPPN+vGPf2xnIRqc7+Dw5byaW/N7p76amho7c6il557A0gQzlDt06FB7nbT+X1Hm8YgRI8J6bNHM1HGZsPLWW2/po48+stMS6zPnPDEx0eu8m2nP5hc/590/3/nOd/TFF1/Yvz7dmxkFMMPm7vuc68AwlzUbTs839RVnnHGGvW/+PTe/rOufa3NJw1zT51z7r7y83NZE1Gf+wDS/ow3Od3D4cl7NrfkjyPzB5GZ+15t/NqbWpUVaVLLbCqY1m+rnefPm2crn22+/3U5r3r9/f7gPLWrdcccddkrc0qVLXfv27fNs5eXlXlNtzVTnjz76yE61HTFihN3QcvVnCRmc68BNG09ISLDTbTdv3ux6+eWXXWlpaa6XXnrJazqo+f3x9ttvuzZs2OC66qqrmGbbTJMmTXJ169bNM63ZTMHNzs52PfDAA559ON/Nn1X42Wef2c1EhFmzZtn7O3bs8Pm8mmnNQ4YMsVP8ly9fbmcpMq05BP77v//b/kI3/VjMNGczrxzNZ/4DaGwzvVnczL/4d955p6t9+/b2l/4111xjQw0CH1g414HzzjvvuAYMGGD/yOnXr5/r6aef9vq5mRL60EMPuTp37mz3+c53vuPatGlT2I43mhUXF9t/j83v5pSUFFevXr1s75DKykrPPpzv5lmyZEmjv6NNSPT1vB4+fNgGFNMbJyMjwzV58mQbhFrKYf6nZWM0AAAAwUUNCwAAiHgEFgAAEPEILAAAIOIRWAAAQMQjsAAAgIhHYAEAABGPwAIAACIegQUAAEQ8AgsAAIh4BBYAABDxCCwAACDiEVgAAIAi3f8PVo+t3MjdmZMAAAAASUVORK5CYII=", "text/plain": [ "
    " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(scores['eta=0.1'].num_iter, scores['eta=0.1'].val_auc.round(3),\n", " label='0.1')\n", "plt.plot(scores['eta=0.3'].num_iter, scores['eta=0.3'].val_auc.round(3),\n", " label='0.3')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "086e3c2d", "metadata": { "_sphinx_cell_id": "928cc60a-22e6-445b-a1d1-0041093f8a64" }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "base", "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.13.5" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: cohorts/2025/06-trees/homework.md ================================================ ## Homework > Note: sometimes your answer doesn't match one of > the options exactly. That's fine. > Select the option that's closest to your solution. > If it's exactly in between two options, select the higher value. ### Dataset In this homework, we continue using the fuel efficiency dataset. Download it from here. You can do it with wget: ```bash wget https://raw.githubusercontent.com/alexeygrigorev/datasets/master/car_fuel_efficiency.csv ``` The goal of this homework is to create a regression model for predicting the car fuel efficiency (column `'fuel_efficiency_mpg'`). ### Preparing the dataset Preparation: * Fill missing values with zeros. * Do train/validation/test split with 60%/20%/20% distribution. * Use the `train_test_split` function and set the `random_state` parameter to 1. * Use `DictVectorizer(sparse=True)` to turn the dataframes into matrices. ## Question 1 Let's train a decision tree regressor to predict the `fuel_efficiency_mpg` variable. * Train a model with `max_depth=1`. Which feature is used for splitting the data? * `'vehicle_weight'` * `'model_year'` * `'origin'` * `'fuel_type'` ## Question 2 Train a random forest regressor with these parameters: * `n_estimators=10` * `random_state=1` * `n_jobs=-1` (optional - to make training faster) What's the RMSE of this model on the validation data? * 0.045 * 0.45 * 4.5 * 45.0 ## Question 3 Now let's experiment with the `n_estimators` parameter * Try different values of this parameter from 10 to 200 with step 10. * Set `random_state` to `1`. * Evaluate the model on the validation dataset. After which value of `n_estimators` does RMSE stop improving? Consider 3 decimal places for calculating the answer. - 10 - 25 - 80 - 200 If it doesn't stop improving, use the latest iteration number in your answer. ## Question 4 Let's select the best `max_depth`: * Try different values of `max_depth`: `[10, 15, 20, 25]` * For each of these values, * try different values of `n_estimators` from 10 till 200 (with step 10) * calculate the mean RMSE * Fix the random seed: `random_state=1` What's the best `max_depth`, using the mean RMSE? * 10 * 15 * 20 * 25 # Question 5 We can extract feature importance information from tree-based models. At each step of the decision tree learning algorithm, it finds the best split. When doing it, we can calculate "gain" - the reduction in impurity before and after the split. This gain is quite useful in understanding what are the important features for tree-based models. In Scikit-Learn, tree-based models contain this information in the [`feature_importances_`](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html#sklearn.ensemble.RandomForestRegressor.feature_importances_) field. For this homework question, we'll find the most important feature: * Train the model with these parameters: * `n_estimators=10`, * `max_depth=20`, * `random_state=1`, * `n_jobs=-1` (optional) * Get the feature importance information from this model What's the most important feature (among these 4)? * `vehicle_weight` * `horsepower` * `acceleration` * `engine_displacement` ## Question 6 Now let's train an XGBoost model! For this question, we'll tune the `eta` parameter: * Install XGBoost * Create DMatrix for train and validation * Create a watchlist * Train a model with these parameters for 100 rounds: ``` xgb_params = { 'eta': 0.3, 'max_depth': 6, 'min_child_weight': 1, 'objective': 'reg:squarederror', 'nthread': 8, 'seed': 1, 'verbosity': 1, } ``` Now change `eta` from `0.3` to `0.1`. Which eta leads to the best RMSE score on the validation dataset? * 0.3 * 0.1 * Both give equal value ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2025/homework/hw06 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2025/08-deep-learning/homework.md ================================================ ## Homework > **Note**: it's very likely that in this homework your answers won't match > the options exactly. That's okay and expected. Select the option that's > closest to your solution. > If it's exactly in between two options, select the higher value. ### Dataset In this homework, we'll build a model for classifying various hair types. For this, we will use the Hair Type dataset that was obtained from [Kaggle](https://www.kaggle.com/datasets/kavyasreeb/hair-type-dataset) and slightly rebuilt. You can download the target dataset for this homework from [here](https://github.com/SVizor42/ML_Zoomcamp/releases/download/straight-curly-data/data.zip): ```bash wget https://github.com/SVizor42/ML_Zoomcamp/releases/download/straight-curly-data/data.zip unzip data.zip ``` The dataset is split into train and test dataset. Use train dataset to train the model and test dataset for validation. In the lectures we saw how to use a pre-trained neural network. In the homework, we'll train a much smaller model from scratch. We will use PyTorch for that. You can use Google Colab or your own computer for that. ### Data Preparation The dataset contains around 1000 images of hairs in the separate folders for training and test sets. ### Reproducibility Reproducibility in deep learning is a multifaceted challenge that requires attention to both software and hardware details. In some cases, we can't guarantee exactly the same results during the same experiment runs. Therefore, in this homework we suggest to set the random number seed generators by: ```python import numpy as np import torch SEED = 42 np.random.seed(SEED) torch.manual_seed(SEED) if torch.cuda.is_available(): torch.cuda.manual_seed(SEED) torch.cuda.manual_seed_all(SEED) torch.backends.cudnn.deterministic = True torch.backends.cudnn.benchmark = False ``` Also, use PyTorch of version 2.8.0 (that's the one in Colab). ### Model For this homework we will use Convolutional Neural Network (CNN). We'll use PyTorch. You need to develop the model with following structure: * The shape for input should be `(3, 200, 200)` (channels first format in PyTorch) * Next, create a convolutional layer (`nn.Conv2d`): * Use 32 filters (output channels) * Kernel size should be `(3, 3)` (that's the size of the filter), padding = 0, stride = 1 * Use `'relu'` as activation * Reduce the size of the feature map with max pooling (`nn.MaxPool2d`) * Set the pooling size to `(2, 2)` * Turn the multi-dimensional result into vectors using `flatten` or `view` * Next, add a `nn.Linear` layer with 64 neurons and `'relu'` activation * Finally, create the `nn.Linear` layer with 1 neuron - this will be the output * The output layer should have an activation - use the appropriate activation for the binary classification case As optimizer use `torch.optim.SGD` with the following parameters: * `torch.optim.SGD(model.parameters(), lr=0.002, momentum=0.8)` ### Question 1 Which loss function you will use? * `nn.MSELoss()` * `nn.BCEWithLogitsLoss()` * `nn.CrossEntropyLoss()` * `nn.CosineEmbeddingLoss()` (Multiple answered can be correct, so pick any) ### Question 2 What's the total number of parameters of the model? You can use `torchsummary` or count manually. In PyTorch, you can find the total number of parameters using: ```python # Option 1: Using torchsummary (install with: pip install torchsummary) from torchsummary import summary summary(model, input_size=(3, 200, 200)) # Option 2: Manual counting total_params = sum(p.numel() for p in model.parameters()) print(f"Total parameters: {total_params}") ``` * 896 * 11214912 * 15896912 * 20073473 ### Generators and Training For the next two questions, use the following transformation for both train and test sets: ```python train_transforms = transforms.Compose([ transforms.Resize((200, 200)), transforms.ToTensor(), transforms.Normalize( mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225] ) # ImageNet normalization ]) ``` * We don't need to do any additional pre-processing for the images. * Use `batch_size=20` * Use `shuffle=True` for both training, but `False` for test. Now fit the model. You can use this code: ```python num_epochs = 10 history = {'acc': [], 'loss': [], 'val_acc': [], 'val_loss': []} for epoch in range(num_epochs): model.train() running_loss = 0.0 correct_train = 0 total_train = 0 for images, labels in train_loader: images, labels = images.to(device), labels.to(device) labels = labels.float().unsqueeze(1) # Ensure labels are float and have shape (batch_size, 1) optimizer.zero_grad() outputs = model(images) loss = criterion(outputs, labels) loss.backward() optimizer.step() running_loss += loss.item() * images.size(0) # For binary classification with BCEWithLogitsLoss, apply sigmoid to outputs before thresholding for accuracy predicted = (torch.sigmoid(outputs) > 0.5).float() total_train += labels.size(0) correct_train += (predicted == labels).sum().item() epoch_loss = running_loss / len(train_dataset) epoch_acc = correct_train / total_train history['loss'].append(epoch_loss) history['acc'].append(epoch_acc) model.eval() val_running_loss = 0.0 correct_val = 0 total_val = 0 with torch.no_grad(): for images, labels in validation_loader: images, labels = images.to(device), labels.to(device) labels = labels.float().unsqueeze(1) outputs = model(images) loss = criterion(outputs, labels) val_running_loss += loss.item() * images.size(0) predicted = (torch.sigmoid(outputs) > 0.5).float() total_val += labels.size(0) correct_val += (predicted == labels).sum().item() val_epoch_loss = val_running_loss / len(validation_dataset) val_epoch_acc = correct_val / total_val history['val_loss'].append(val_epoch_loss) history['val_acc'].append(val_epoch_acc) print(f"Epoch {epoch+1}/{num_epochs}, " f"Loss: {epoch_loss:.4f}, Acc: {epoch_acc:.4f}, " f"Val Loss: {val_epoch_loss:.4f}, Val Acc: {val_epoch_acc:.4f}")) ``` ### Question 3 What is the median of training accuracy for all the epochs for this model? * 0.05 * 0.12 * 0.40 * 0.84 ### Question 4 What is the standard deviation of training loss for all the epochs for this model? * 0.007 * 0.078 * 0.171 * 1.710 ### Data Augmentation For the next two questions, we'll generate more data using data augmentations. Add the following augmentations to your training data generator: ```python transforms.RandomRotation(50), transforms.RandomResizedCrop(200, scale=(0.9, 1.0), ratio=(0.9, 1.1)), transforms.RandomHorizontalFlip(), ``` ### Question 5 Let's train our model for 10 more epochs using the same code as previously. > **Note:** make sure you don't re-create the model. > we want to continue training the model we already started training. What is the mean of test loss for all the epochs for the model trained with augmentations? * 0.008 * 0.08 * 0.88 * 8.88 ### Question 6 What's the average of test accuracy for the last 5 epochs (from 6 to 10) for the model trained with augmentations? * 0.08 * 0.28 * 0.68 * 0.98 ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2025/homework/hw08 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2025/09-serverless/homework.md ================================================ ## Homework In this homework, we'll deploy the Straight vs Curly Hair Type model we trained in the [previous homework](../08-deep-learning/homework.md). Download the model files from here: * https://github.com/alexeygrigorev/large-datasets/releases/download/hairstyle/hair_classifier_v1.onnx.data * https://github.com/alexeygrigorev/large-datasets/releases/download/hairstyle/hair_classifier_v1.onnx With wget: ```bash PREFIX="https://github.com/alexeygrigorev/large-datasets/releases/download/hairstyle" DATA_URL="${PREFIX}/hair_classifier_v1.onnx.data" MODEL_URL="${PREFIX}/hair_classifier_v1.onnx" wget ${DATA_URL} wget ${MODEL_URL} ``` ## Question 1 To be able to use this model, we need to know the name of the input and output nodes. What's the name of the output: * `output` * `sigmoid` * `softmax` * `prediction` ## Preparing the image You'll need some code for downloading and resizing images. You can use this code: ```python from io import BytesIO from urllib import request from PIL import Image def download_image(url): with request.urlopen(url) as resp: buffer = resp.read() stream = BytesIO(buffer) img = Image.open(stream) return img def prepare_image(img, target_size): if img.mode != 'RGB': img = img.convert('RGB') img = img.resize(target_size, Image.NEAREST) return img ``` For that, you'll need to have `pillow` installed: ```bash pip install pillow ``` ## Question 2: Target size Let's download and resize this image: https://habrastorage.org/webt/yf/_d/ok/yf_dokzqy3vcritme8ggnzqlvwa.jpeg Based on the previous homework, what should be the target size for the image? * 64x64 * 128x128 * 200x200 * 256x256 ## Question 3 Now we need to turn the image into numpy array and pre-process it. > Tip: Check the previous homework. What was the pre-processing > we did there? After the pre-processing, what's the value in the first pixel, the R channel? * -10.73 * -1.073 * 1.073 * 10.73 ## Question 4 Now let's apply this model to this image. What's the output of the model? * 0.09 * 0.49 * 0.69 * 0.89 ## Prepare the lambda code Now you need to copy all the code into a separate python file. You will need to use this file for the next two questions. Tip: you can test this file locally with `ipython` or Jupyter Notebook by importing the file and invoking the function from this file. ## Docker For the next two questions, we'll use a Docker image that we already prepared. This is the Dockerfile that we used for creating the image: ```docker FROM public.ecr.aws/lambda/python:3.13 COPY hair_classifier_empty.onnx.data . COPY hair_classifier_empty.onnx . ``` Note that it uses Python 3.13. The docker image is published to [`agrigorev/model-2025-hairstyle:v1`](https://hub.docker.com/r/agrigorev/model-2025-hairstyle). A few notes: * The image already contains a model and it's not the same model as the one we used for questions 1-4. ## Question 5 Download the base image `agrigorev/model-2025-hairstyle:v1`. You can do it with [`docker pull`](https://docs.docker.com/engine/reference/commandline/pull/). So what's the size of this base image? * 88 Mb * 208 Mb * 608 Mb * 1208 Mb You can get this information when running `docker images` - it'll be in the "SIZE" column. ## Question 6 Now let's extend this docker image, install all the required libraries and add the code for lambda. You don't need to include the model in the image. It's already included. The name of the file with the model is `hair_classifier_empty.onnx` and it's in the current workdir in the image (see the Dockerfile above for the reference). The provided model requires the same preprocessing for images regarding target size and rescaling the value range than used in homework 8. Now run the container locally. Score this image: https://habrastorage.org/webt/yf/_d/ok/yf_dokzqy3vcritme8ggnzqlvwa.jpeg What's the output from the model? * -1.0 * -0.10 * 0.10 * 1.0 ## Publishing it to AWS Now you can deploy your model to AWS! * Publish your image to ECR * Create a lambda function in AWS, use the ECR image * Give it more RAM and increase the timeout * Test it * Expose the lambda function using API Gateway This is optional and not graded. ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2025/homework/hw09 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ## Publishing to Docker hub Just for the reference, this is how we published our image to Docker hub: ```bash docker build -t model-2025-hairstyle -f homework.dockerfile . docker tag model-2025-hairstyle:latest agrigorev/model-2025-hairstyle:v1 docker push agrigorev/model-2025-hairstyle:v1 ``` (You don't need to execute this code) ================================================ FILE: cohorts/2025/10-kubernetes/homework.md ================================================ ## Homework In this homework, we'll deploy the lead scoring model from the homework 5. We already have a docker image for this model - we'll use it for deploying the model to Kubernetes. ## Building the image Clone the course repo if you haven't: ``` git clone https://github.com/DataTalksClub/machine-learning-zoomcamp.git ``` Go to the `course-zoomcamp/cohorts/2025/05-deployment/homework` folder and execute the following: ```bash docker build -f Dockerfile_full -t zoomcamp-model:3.13.10-hw10 . ``` ## Question 1 Run it to test that it's working locally: ```bash docker run -it --rm -p 9696:9696 zoomcamp-model:3.13.10-hw10 ``` And in another terminal, execute `q6_test.py` file: ```bash python q6_test.py ``` You should see this: ```python {'conversion_probability': , 'conversion': False} ``` Here `` is the probability of getting a subscription. You need to choose the right one. * 0.29 * 0.49 * 0.69 * 0.89 Now you can stop the container running in Docker. ## Installing `kubectl` and `kind` You need to install: * `kubectl` - https://kubernetes.io/docs/tasks/tools/ (you might already have it - check before installing) * `kind` - https://kind.sigs.k8s.io/docs/user/quick-start/ ## Question 2 What's the version of `kind` that you have? Use `kind --version` to find out. ## Creating a cluster Now let's create a cluster with `kind`: ```bash kind create cluster ``` And check with `kubectl` that it was successfully created: ```bash kubectl cluster-info ``` ## Question 3 What's the smallest deployable computing unit that we can create and manage in Kubernetes (`kind` in our case)? * Node * Pod * Deployment * Service ## Question 4 Now let's test if everything works. Use `kubectl` to get the list of running services. What's the `Type` of the service that is already running there? * NodePort * ClusterIP * ExternalName * LoadBalancer ## Question 5 To be able to use the docker image we previously created (`zoomcamp-model:3.13.10-hw10`), we need to register it with `kind`. What's the command we need to run for that? * `kind create cluster` * `kind build node-image` * `kind load docker-image` * `kubectl apply` ## Question 6 Now let's create a deployment config (e.g. `deployment.yaml`): ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: subscription spec: selector: matchLabels: app: subscription replicas: 1 template: metadata: labels: app: subscription spec: containers: - name: subscription image: resources: requests: memory: "64Mi" cpu: "100m" limits: memory: cpu: ports: - containerPort: ``` Replace ``, ``, ``, `` with the correct values. What is the value for ``? Apply this deployment using the appropriate command and get a list of running Pods. You can see one running Pod. ## Question 7 Let's create a service for this deployment (`service.yaml`): ```yaml apiVersion: v1 kind: Service metadata: name: spec: type: LoadBalancer selector: app: ports: - port: 80 targetPort: ``` Fill it in. What do we need to write instead of ``? Apply this config file. ## Testing the service We can test our service locally by forwarding the port 9696 on our computer to the port 80 on the service: ```bash kubectl port-forward service/ 9696:80 ``` Run `q6_test.py` (from the homework 5) once again to verify that everything is working. You should get the same result as in Question 1. ## Autoscaling Now we're going to use a [HorizontalPodAutoscaler](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/) (HPA for short) that automatically updates a workload resource (such as our deployment), with the aim of automatically scaling the workload to match demand. Use the following command to create the HPA: ```bash kubectl autoscale deployment subscription --name subscription-hpa --cpu-percent=20 --min=1 --max=3 ``` You can check the current status of the new HPA by running: ```bash kubectl get hpa ``` The output should be similar to the next: ```bash NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE subscription-hpa Deployment/subscription 1%/20% 1 3 1 27s ``` `TARGET` column shows the average CPU consumption across all the Pods controlled by the corresponding deployment. Current CPU consumption is about 0% as there are no clients sending requests to the server. > >Note: In case the HPA instance doesn't run properly, try to install the latest Metrics Server release > from the `components.yaml` manifest: > ```bash > kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml >``` ## Increase the load Let's see how the autoscaler reacts to increasing the load. To do this, we can slightly modify the existing `q6_test.py` script by putting the operator that sends the request to the subscription service into a loop. ```python while True: sleep(0.1) response = requests.post(url, json=client).json() print(response) ``` Now you can run this script. ## Question 8 (optional) Run `kubectl get hpa subscription-hpa --watch` command to monitor how the autoscaler performs. Within a minute or so, you should see the higher CPU load; and then - more replicas. What was the maximum amount of the replicas during this test? * 1 * 2 * 3 * 4 > Note: It may take a few minutes to stabilize the number of replicas. Since the amount of load is not controlled > in any way it may happen that the final number of replicas will differ from initial. ## Submit the results * Submit your results here: https://courses.datatalks.club/ml-zoomcamp-2025/homework/hw10 * If your answer doesn't match options exactly, select the closest one. If the answer is exactly in between two options, select the higher value. ================================================ FILE: cohorts/2025/README.md ================================================ ## Machine Learning Zoomcamp 2025 * [Pre-course Q&A session](https://www.youtube.com/watch?v=ph1PxZIkz1o) * [Launch stream with course overview](https://www.youtube.com/watch?v=z064DoidiKg) * [Course management platform](https://courses.datatalks.club/ml-zoomcamp-2025/) * [FAQ](https://datatalks.club/faq/machine-learning-zoomcamp.html) * [Course Playlist: Only 2025 Live videos & homeworks](https://www.youtube.com/playlist?list=PL3MmuxUbc_hJoui-E7wf2r5wWgET3MMZt) * [Leaderboard](https://courses.datatalks.club/ml-zoomcamp-2025/leaderboard) ### Syllabus [**1. Introduction to Machine Learning**](01-intro/) * [Module materials](../../01-intro) * [Homework](01-intro/homework.md) [**2. Machine Learning for Regression**](02-regression/) * [Module materials](../../02-regression) * [Homework](02-regression/homework.md) [**3. Machine Learning for Classification**](03-classification/) * [Module materials](../../03-classification) * [Homework](03-classification/homework.md) [**4. Evaluation Metrics for Classification**](04-evaluation/) * [Module materials](../../04-evaluation) * [Homework](04-evaluation/homework.md) [**5. Deploying Machine Learning Models**](05-deployment/) * [Module materials](../../05-deployment) * [Homework](05-deployment/homework.md) [**6. Decision Trees and Ensemble Learning**](06-trees/) * [Module materials](../../06-trees) * [Homework](06-trees/homework.md) [**Midterm Project**](projects.md#midterm-project) * More information: [projects.md](projects.md#midterm-project) [**8. Neural Networks and Deep Learning**](08-deep-learning/) * [Module materials](../../08-deep-learning) * [Homework](08-deep-learning/homework.md) [**9. Serverless Deep Learning**](09-serverless/) * [Module materials](../../09-serverless) * [Homework](09-serverless/homework.md) [**10. Kubernetes and TensorFlow Serving**](10-kubernetes/) * [Module materials](../../10-kubernetes) * [Homework](10-kubernetes/homework.md) [**Capstone Project**](projects.md#capstone-1) * More information: [projects.md](projects.md#capstone-1) [**Capstone Project 2**](projects.md#capstone-2) * More information: [projects.md](projects.md#capstone-2) **[Article](article.md) (Optional)** * More information: [article.md](article.md) ================================================ FILE: cohorts/2025/article.md ================================================ ## Article (optional) The best way to learn about something - to teach it. In this part of the course, we'll explore some topics that weren't covered in the course. You'll need to learn about this topic and then write about what you learned in an article. [More information about articles](../../article/README.md) ## Submitting the results * Submit your article to [`#course-ml-zoomcamp-articles`](https://app.slack.com/client/T01ATQK62F8/C02QXBFS1PU) - just share the link to your article there * Submit the same link to [this form](https://courses.datatalks.club/ml-zoomcamp-2024/homework/article) so we could link it to your message from the channel ## Evaluating We'll use voting for scoring your articles. * Check the articles in the [`#course-ml-zoomcamp-articles`](https://app.slack.com/client/T01ATQK62F8/C02QXBFS1PU) channel and put a :+1: reaction to articles that you liked * The top voted articles will get 20 points ## Deadline The deadline for finishing the article is 31 January ## Articles from 2024 * [You will like my offer](https://markogolovko.com/blog/you-will-like-my-offer/) by Marko Golovko * [Natural Language Processing using spaCy, TensorFlow and BERT model architecture](https://volcano-camp-325.notion.site/Natural-Language-Processing-using-spaCy-TensorFlow-and-BERT-model-architecture-1895067176b380d09484d4b0338b0c5e?pvs=4) by Alexander Daniel Rios * [Setting up the environments for ML Zoomcamp 2024 - macOS](https://medium.com/@till.meineke/setting-up-the-environments-for-ml-zoomcamp-2024-eceb6e42e36e) by Till Meineke ### Past articles See examples of articles from the previous cohorts [here](../../article/README.md) ================================================ FILE: cohorts/2025/projects.md ================================================ # Projects See more information about projects [here](../../projects/) ## Evaluation Evaluation via [course management system](https://courses.datatalks.club/ml-zoomcamp-2025/) * [Evaluation criteria](https://docs.google.com/spreadsheets/d/e/2PACX-1vQCwqAtkjl07MTW-SxWUK9GUvMQ3Pv_fF8UadcuIYLgHa0PlNu9BRWtfLgivI8xSCncQs82HDwGXSm3/pubhtml) * [Video with instructions](https://www.loom.com/share/4f5c155c550e48ddb54b71ba76516b04) Links for submitting: - [Midterm](https://courses.datatalks.club/ml-zoomcamp-2025/project/midterm) - [Capstone 1](https://courses.datatalks.club/ml-zoomcamp-2025/project/capstone1) - [Capstone 2](https://courses.datatalks.club/ml-zoomcamp-2025/project/capstone2) ================================================ FILE: generate-description.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "import json\n", "\n", "from io import BytesIO\n", "from pathlib import Path\n", "\n", "from urllib.parse import urlparse\n", "from urllib.parse import parse_qs\n", "\n", "import requests\n", "\n", "import numpy as np\n", "import pandas as pd\n", "\n", "from PIL import Image\n", "from jinja2 import Template" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "folder = Path('07-bentoml-production')\n", "\n", "os.makedirs(folder / 'images', exist_ok=True)\n", "\n", "with open(folder / 'meta.json') as f_in:\n", " data = json.load(f_in)\n", "\n", "\n", "session = data['session']\n", "session_name = data['name']" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    lessonnamepage_namevideoslidesnotebook
    01Intro/Session Overview01-intro.mdhttps://www.youtube.com/watch?v=2viqmJ_NpgE
    12Building Your Prediction Service with BentoML02-build-bento-service.mdhttps://www.youtube.com/watch?v=bWdEVlUw1CA
    23Deploying Your Prediction Service03-deploy-bento-service.mdhttps://www.youtube.com/watch?v=qpjLm_Lm4FA
    34Sending, Receiving and Validating Data04-validation.mdhttps://www.youtube.com/watch?v=zNYtXde0BCA
    45High-Performance Serving05-high-performance.mdhttps://www.youtube.com/watch?v=LjDYPWhJBrY
    \n", "
    " ], "text/plain": [ " lesson name \\\n", "0 1 Intro/Session Overview \n", "1 2 Building Your Prediction Service with BentoML \n", "2 3 Deploying Your Prediction Service \n", "3 4 Sending, Receiving and Validating Data \n", "4 5 High-Performance Serving \n", "\n", " page_name video \\\n", "0 01-intro.md https://www.youtube.com/watch?v=2viqmJ_NpgE \n", "1 02-build-bento-service.md https://www.youtube.com/watch?v=bWdEVlUw1CA \n", "2 03-deploy-bento-service.md https://www.youtube.com/watch?v=qpjLm_Lm4FA \n", "3 04-validation.md https://www.youtube.com/watch?v=zNYtXde0BCA \n", "4 05-high-performance.md https://www.youtube.com/watch?v=LjDYPWhJBrY \n", "\n", " slides notebook \n", "0 \n", "1 \n", "2 \n", "3 \n", "4 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv(folder / data['data'])\n", "df = df.fillna('')\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ML Zoomcamp 7.1 - Intro/Session Overview\n", "\n", "\n", "Links:\n", "\n", "- Lesson page: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/01-intro.md\n", "- Notebook: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/\n", "- Course GitHub repo: https://github.com/alexeygrigorev/mlbookcamp-code/tree/master/course-zoomcamp\n", "- Register here for the course: https://airtable.com/shryxwLd0COOEaqXo\n", "\n", "Join DataTalks.Club: https://datatalks.club/slack.html\n", "\n", "\n", "\n", "ML Zoomcamp 7.2 - Building Your Prediction Service With Bentoml\n", "\n", "\n", "Links:\n", "\n", "- Lesson page: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/02-build-bento-service.md\n", "- Notebook: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/\n", "- Course GitHub repo: https://github.com/alexeygrigorev/mlbookcamp-code/tree/master/course-zoomcamp\n", "- Register here for the course: https://airtable.com/shryxwLd0COOEaqXo\n", "\n", "Join DataTalks.Club: https://datatalks.club/slack.html\n", "\n", "\n", "\n", "ML Zoomcamp 7.3 - Deploying Your Prediction Service\n", "\n", "\n", "Links:\n", "\n", "- Lesson page: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/03-deploy-bento-service.md\n", "- Notebook: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/\n", "- Course GitHub repo: https://github.com/alexeygrigorev/mlbookcamp-code/tree/master/course-zoomcamp\n", "- Register here for the course: https://airtable.com/shryxwLd0COOEaqXo\n", "\n", "Join DataTalks.Club: https://datatalks.club/slack.html\n", "\n", "\n", "\n", "ML Zoomcamp 7.4 - Sending, Receiving And Validating Data\n", "\n", "\n", "Links:\n", "\n", "- Lesson page: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/04-validation.md\n", "- Notebook: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/\n", "- Course GitHub repo: https://github.com/alexeygrigorev/mlbookcamp-code/tree/master/course-zoomcamp\n", "- Register here for the course: https://airtable.com/shryxwLd0COOEaqXo\n", "\n", "Join DataTalks.Club: https://datatalks.club/slack.html\n", "\n", "\n", "\n", "ML Zoomcamp 7.5 - High-Performance Serving\n", "\n", "\n", "Links:\n", "\n", "- Lesson page: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/05-high-performance.md\n", "- Notebook: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/\n", "- Course GitHub repo: https://github.com/alexeygrigorev/mlbookcamp-code/tree/master/course-zoomcamp\n", "- Register here for the course: https://airtable.com/shryxwLd0COOEaqXo\n", "\n", "Join DataTalks.Club: https://datatalks.club/slack.html\n", "\n", "\n", "\n", "ML Zoomcamp 7.6 - Bento Production Deployment\n", "\n", "\n", "Links:\n", "\n", "- Lesson page: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/06-production-deployment.md\n", "- Notebook: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/\n", "- Course GitHub repo: https://github.com/alexeygrigorev/mlbookcamp-code/tree/master/course-zoomcamp\n", "- Register here for the course: https://airtable.com/shryxwLd0COOEaqXo\n", "\n", "Join DataTalks.Club: https://datatalks.club/slack.html\n", "\n", "\n", "\n", "ML Zoomcamp 7.7 - (Optional) Advanced Example: Deploying Stable Diffusion Model\n", "\n", "\n", "Links:\n", "\n", "- Lesson page: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/07-stable-diffusion.md\n", "- Notebook: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/\n", "- Course GitHub repo: https://github.com/alexeygrigorev/mlbookcamp-code/tree/master/course-zoomcamp\n", "- Register here for the course: https://airtable.com/shryxwLd0COOEaqXo\n", "\n", "Join DataTalks.Club: https://datatalks.club/slack.html\n", "\n", "\n", "\n", "ML Zoomcamp 7.8 - Summary\n", "\n", "\n", "Links:\n", "\n", "- Lesson page: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/08-summary.md\n", "- Notebook: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/\n", "- Course GitHub repo: https://github.com/alexeygrigorev/mlbookcamp-code/tree/master/course-zoomcamp\n", "- Register here for the course: https://airtable.com/shryxwLd0COOEaqXo\n", "\n", "Join DataTalks.Club: https://datatalks.club/slack.html\n", "\n", "\n", "\n", "ML Zoomcamp 7.9 - Homework\n", "\n", "\n", "Links:\n", "\n", "- Lesson page: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/homework.md\n", "- Notebook: https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp/07-bentoml-production/\n", "- Course GitHub repo: https://github.com/alexeygrigorev/mlbookcamp-code/tree/master/course-zoomcamp\n", "- Register here for the course: https://airtable.com/shryxwLd0COOEaqXo\n", "\n", "Join DataTalks.Club: https://datatalks.club/slack.html\n", "\n", "\n", "\n" ] } ], "source": [ "for i in range(len(df)):\n", " row = df.loc[i]\n", " \n", " print('ML Zoomcamp %s.%s - %s' % (session, row.lesson, row['name'].title()))\n", " print()\n", " print()\n", " \n", " prefix = 'https://github.com/alexeygrigorev/mlbookcamp-code/blob/master/course-zoomcamp'\n", " lesson_page = '%s/%s/%s' % (prefix, folder, row.page_name)\n", "\n", " description = [\n", " 'Links:',\n", " '',\n", " '- Lesson page: %s' % lesson_page,\n", " ]\n", " \n", " if 'notebook' in row:\n", " notebook_page = '%s/%s/%s' % (prefix, folder, row.notebook)\n", " line = '- Notebook: %s' % notebook_page\n", " description.append(line)\n", " \n", " if row.slides:\n", " line = '- Slides: %s' % row.slides\n", " description.append(line)\n", " \n", "# if i > 0:\n", "# prev_row = df.loc[i - 1]\n", "# line = '* Previous: [%s](%s)' % (prev_row['name'], prev_row.page_name)\n", "# navigation.append(line)\n", "\n", "# if i + 1 < len(df):\n", "# next_row = df.loc[i + 1]\n", "# line = '* Next: [%s](%s)' % (next_row['name'], next_row.page_name)\n", "# navigation.append(line)\n", " \n", " more_lines = [\n", " '- Course GitHub repo: https://github.com/alexeygrigorev/mlbookcamp-code/tree/master/course-zoomcamp',\n", " '- Register here for the course: https://airtable.com/shryxwLd0COOEaqXo',\n", " # '- The book - Machine Learning Bookcamp: http://bit.ly/mlbookcamp (Get 40% off with code \"grigorevpc\")',\n", " '',\n", " 'Join DataTalks.Club: https://datatalks.club/slack.html'\n", " ]\n", "\n", " description.extend(more_lines)\n", " \n", " print('\\n'.join(description))\n", " \n", " print()\n", " print()\n", " print()\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "## 7. [Production-Ready Machine Learning (Bento ML)](07-bentoml-production/)\n", "\n", "- 7.1 [Intro/Session Overview](07-bentoml-production/01-intro.md)\n", "- 7.2 [Building Your Prediction Service with BentoML](07-bentoml-production/02-build-bento-service.md)\n", "- 7.3 [Deploying Your Prediction Service](07-bentoml-production/03-deploy-bento-service.md)\n", "- 7.4 [Sending, Receiving and Validating Data](07-bentoml-production/04-validation.md)\n", "- 7.5 [High-Performance Serving](07-bentoml-production/05-high-performance.md)\n", "- 7.6 [Bento Production Deployment](07-bentoml-production/06-production-deployment.md)\n", "- 7.7 [(Optional) Advanced Example: Deploying Stable Diffusion Model](07-bentoml-production/07-stable-diffusion.md)\n", "- 7.8 [Summary](07-bentoml-production/08-summary.md)\n", "- 7.9 [Homework](07-bentoml-production/homework.md)\n" ] } ], "source": [ "print('## %s. [%s](%s/)' % (session, session_name, folder))\n", "print()\n", "\n", "for i in range(len(df)):\n", " row = df.loc[i]\n", "\n", " print('- %s.%s [%s](%s/%s)' % (session, row.lesson, row['name'], folder, row.page_name))" ] }, { "cell_type": "code", "execution_count": null, "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.9.7" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: generate-pages.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import os\n", "import json\n", "\n", "from io import BytesIO\n", "from pathlib import Path\n", "\n", "from urllib.parse import urlparse\n", "from urllib.parse import parse_qs\n", "\n", "import requests\n", "\n", "import numpy as np\n", "import pandas as pd\n", "\n", "from PIL import Image\n", "from jinja2 import Template" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "folder = Path('08-deep-learning')\n", "\n", "os.makedirs(folder / 'images', exist_ok=True)\n", "\n", "with open(folder / 'meta.json') as f_in:\n", " data = json.load(f_in)\n", "\n", "\n", "session = data['session']\n", "session_name = data['name']" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
    \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
    lessonnamepage_namevideoslidesnotebook
    01Fashion classification01-fashion-classification.mdhttps://www.youtube.com/watch?v=it1Lu7NmMpwhttps://www.slideshare.net/AlexeyGrigorev/ml-z...https://github.com/alexeygrigorev/mlbookcamp-c...
    12TensorFlow and Keras02-tensorflow-keras.mdhttps://www.youtube.com/watch?v=R6o_CUmoN9Qhttps://www.slideshare.net/AlexeyGrigorev/ml-z...https://github.com/alexeygrigorev/mlbookcamp-c...
    23Pre-trained convolutional neural networks03-pretrained-models.mdhttps://www.youtube.com/watch?v=qGDXEz-cr6Mhttps://www.slideshare.net/AlexeyGrigorev/ml-z...https://github.com/alexeygrigorev/mlbookcamp-c...
    34Convolutional neural networks04-conv-neural-nets.mdhttps://www.youtube.com/watch?v=BN-fnYzbdc8https://www.slideshare.net/AlexeyGrigorev/ml-z...https://github.com/alexeygrigorev/mlbookcamp-c...
    45Transfer learning05-transfer-learning.mdhttps://www.youtube.com/watch?v=WKHylqfNmq4https://www.slideshare.net/AlexeyGrigorev/ml-z...https://github.com/alexeygrigorev/mlbookcamp-c...
    56Adjusting the learning rate06-learning-rate.mdhttps://www.youtube.com/watch?v=2gPmRRGz0Hchttps://www.slideshare.net/AlexeyGrigorev/ml-z...https://github.com/alexeygrigorev/mlbookcamp-c...
    67Checkpointing07-checkpointing.mdhttps://www.youtube.com/watch?v=NRpGUx0o3Pshttps://www.slideshare.net/AlexeyGrigorev/ml-z...https://github.com/alexeygrigorev/mlbookcamp-c...
    78Adding more layers08-more-layers.mdhttps://www.youtube.com/watch?v=bSRRrorvAZshttps://www.slideshare.net/AlexeyGrigorev/ml-z...https://github.com/alexeygrigorev/mlbookcamp-c...
    89Regularization and dropout09-dropout.mdhttps://www.youtube.com/watch?v=74YmhVM6FTMhttps://www.slideshare.net/AlexeyGrigorev/ml-z...https://github.com/alexeygrigorev/mlbookcamp-c...
    910Data augmentation10-augmentation.mdhttps://www.youtube.com/watch?v=aoPfVsS3BDEhttps://www.slideshare.net/AlexeyGrigorev/ml-z...https://github.com/alexeygrigorev/mlbookcamp-c...
    1011Training a larger model11-large-model.mdhttps://www.youtube.com/watch?v=_QpDGJwFjYAhttps://www.slideshare.net/AlexeyGrigorev/ml-z...https://github.com/alexeygrigorev/mlbookcamp-c...
    1112Using the model12-using-model.mdhttps://www.youtube.com/watch?v=cM1WHKae1wohttps://www.slideshare.net/AlexeyGrigorev/ml-z...https://github.com/alexeygrigorev/mlbookcamp-c...
    1213Summary13-summary.mdhttps://www.youtube.com/watch?v=mn0BcXJlRFMhttps://github.com/alexeygrigorev/mlbookcamp-c...
    1314Explore more14-explore-more.md
    1415Homeworkhomework.md
    \n", "
    " ], "text/plain": [ " lesson name \\\n", "0 1 Fashion classification \n", "1 2 TensorFlow and Keras \n", "2 3 Pre-trained convolutional neural networks \n", "3 4 Convolutional neural networks \n", "4 5 Transfer learning \n", "5 6 Adjusting the learning rate \n", "6 7 Checkpointing \n", "7 8 Adding more layers \n", "8 9 Regularization and dropout \n", "9 10 Data augmentation \n", "10 11 Training a larger model \n", "11 12 Using the model \n", "12 13 Summary \n", "13 14 Explore more \n", "14 15 Homework \n", "\n", " page_name video \\\n", "0 01-fashion-classification.md https://www.youtube.com/watch?v=it1Lu7NmMpw \n", "1 02-tensorflow-keras.md https://www.youtube.com/watch?v=R6o_CUmoN9Q \n", "2 03-pretrained-models.md https://www.youtube.com/watch?v=qGDXEz-cr6M \n", "3 04-conv-neural-nets.md https://www.youtube.com/watch?v=BN-fnYzbdc8 \n", "4 05-transfer-learning.md https://www.youtube.com/watch?v=WKHylqfNmq4 \n", "5 06-learning-rate.md https://www.youtube.com/watch?v=2gPmRRGz0Hc \n", "6 07-checkpointing.md https://www.youtube.com/watch?v=NRpGUx0o3Ps \n", "7 08-more-layers.md https://www.youtube.com/watch?v=bSRRrorvAZs \n", "8 09-dropout.md https://www.youtube.com/watch?v=74YmhVM6FTM \n", "9 10-augmentation.md https://www.youtube.com/watch?v=aoPfVsS3BDE \n", "10 11-large-model.md https://www.youtube.com/watch?v=_QpDGJwFjYA \n", "11 12-using-model.md https://www.youtube.com/watch?v=cM1WHKae1wo \n", "12 13-summary.md https://www.youtube.com/watch?v=mn0BcXJlRFM \n", "13 14-explore-more.md \n", "14 homework.md \n", "\n", " slides \\\n", "0 https://www.slideshare.net/AlexeyGrigorev/ml-z... \n", "1 https://www.slideshare.net/AlexeyGrigorev/ml-z... \n", "2 https://www.slideshare.net/AlexeyGrigorev/ml-z... \n", "3 https://www.slideshare.net/AlexeyGrigorev/ml-z... \n", "4 https://www.slideshare.net/AlexeyGrigorev/ml-z... \n", "5 https://www.slideshare.net/AlexeyGrigorev/ml-z... \n", "6 https://www.slideshare.net/AlexeyGrigorev/ml-z... \n", "7 https://www.slideshare.net/AlexeyGrigorev/ml-z... \n", "8 https://www.slideshare.net/AlexeyGrigorev/ml-z... \n", "9 https://www.slideshare.net/AlexeyGrigorev/ml-z... \n", "10 https://www.slideshare.net/AlexeyGrigorev/ml-z... \n", "11 https://www.slideshare.net/AlexeyGrigorev/ml-z... \n", "12 \n", "13 \n", "14 \n", "\n", " notebook \n", "0 https://github.com/alexeygrigorev/mlbookcamp-c... \n", "1 https://github.com/alexeygrigorev/mlbookcamp-c... \n", "2 https://github.com/alexeygrigorev/mlbookcamp-c... \n", "3 https://github.com/alexeygrigorev/mlbookcamp-c... \n", "4 https://github.com/alexeygrigorev/mlbookcamp-c... \n", "5 https://github.com/alexeygrigorev/mlbookcamp-c... \n", "6 https://github.com/alexeygrigorev/mlbookcamp-c... \n", "7 https://github.com/alexeygrigorev/mlbookcamp-c... \n", "8 https://github.com/alexeygrigorev/mlbookcamp-c... \n", "9 https://github.com/alexeygrigorev/mlbookcamp-c... \n", "10 https://github.com/alexeygrigorev/mlbookcamp-c... \n", "11 https://github.com/alexeygrigorev/mlbookcamp-c... \n", "12 https://github.com/alexeygrigorev/mlbookcamp-c... \n", "13 \n", "14 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv(folder / data['data'])\n", "df = df.fillna('')\n", "df" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "template_string = \"\"\"\n", "## {{ session }}.{{ lesson }} {{ name }}\n", "\n", "{% if video %}{% endif %}\n", "{% if coming_soon %}COMING SOON{% endif %} \n", "\n", "{% if slides %}[Slides]({{ slides }}){% endif %}\n", "\n", "\n", "## Notes\n", "\n", "Add notes from the video (PRs are welcome)\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "
    ⚠️\n", " The notes are written by the community.
    \n", " If you see an error here, please create a PR with a fix.\n", "
    \n", "\n", "\n", "## Navigation\n", "\n", "{{ navigation }}\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def download_thumbnail(video, session, lesson):\n", " if type(lesson) in [np.int64]:\n", " thumbnail_file = 'thumbnail-%d-%02d.jpg' % (session, lesson)\n", " else:\n", " thumbnail_file = 'thumbnail-%d-%s.jpg' % (session, lesson)\n", " thumbnail_file_full = '%s/images/%s' % (folder, thumbnail_file)\n", "\n", " if os.path.exists(thumbnail_file_full):\n", " print(thumbnail_file_full, 'exists')\n", " return 'images/%s' % thumbnail_file\n", "\n", " video_id = parse_qs(urlparse(video).query)['v'][0]\n", " print('processing video', video_id)\n", " thumbnail_url = 'https://img.youtube.com/vi/%s/0.jpg' % video_id\n", "\n", " response = requests.get(thumbnail_url)\n", " thumbnail = Image.open(BytesIO(response.content))\n", " w_img, h_img = thumbnail.size\n", "\n", " play = Image.open('../images/play.png')\n", " w_play, h_play = play.size\n", " \n", " x0 = w_img // 2 - w_play // 2\n", " y0 = h_img // 2 - h_play // 2\n", "\n", " thumbnail.paste(play, (x0, y0), play)\n", " thumbnail.save(thumbnail_file_full, quality=90)\n", "\n", " print('saved to', thumbnail_file_full)\n", "\n", " return 'images/%s' % thumbnail_file" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "processing video 2viqmJ_NpgE\n", "saved to 07-bentoml-production/images/thumbnail-7-01.jpg\n", "\n", "## 7.1 Intro/Session Overview\n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "## Notes\n", "\n", "Add notes from the video (PRs are welcome)\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "
    ⚠️\n", " The notes are written by the community.
    \n", " If you see an error here, please create a PR with a fix.\n", "
    \n", "\n", "\n", "## Navigation\n", "\n", "* [Machine Learning Zoomcamp course](../)\n", "* [Session 7: Production-Ready Machine Learning (Bento ML)](./)\n", "* Next: [Building Your Prediction Service with BentoML](02-build-bento-service.md)\n", "\n", "created 07-bentoml-production/01-intro.md\n", "\n", "\n", "processing video bWdEVlUw1CA\n", "saved to 07-bentoml-production/images/thumbnail-7-02.jpg\n", "\n", "## 7.2 Building Your Prediction Service with BentoML\n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "## Notes\n", "\n", "Add notes from the video (PRs are welcome)\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "
    ⚠️\n", " The notes are written by the community.
    \n", " If you see an error here, please create a PR with a fix.\n", "
    \n", "\n", "\n", "## Navigation\n", "\n", "* [Machine Learning Zoomcamp course](../)\n", "* [Session 7: Production-Ready Machine Learning (Bento ML)](./)\n", "* Previous: [Intro/Session Overview](01-intro.md)\n", "* Next: [Deploying Your Prediction Service](03-deploy-bento-service.md)\n", "\n", "created 07-bentoml-production/02-build-bento-service.md\n", "\n", "\n", "processing video qpjLm_Lm4FA\n", "saved to 07-bentoml-production/images/thumbnail-7-03.jpg\n", "\n", "## 7.3 Deploying Your Prediction Service\n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "## Notes\n", "\n", "Add notes from the video (PRs are welcome)\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "
    ⚠️\n", " The notes are written by the community.
    \n", " If you see an error here, please create a PR with a fix.\n", "
    \n", "\n", "\n", "## Navigation\n", "\n", "* [Machine Learning Zoomcamp course](../)\n", "* [Session 7: Production-Ready Machine Learning (Bento ML)](./)\n", "* Previous: [Building Your Prediction Service with BentoML](02-build-bento-service.md)\n", "* Next: [Sending, Receiving and Validating Data](04-validation.md)\n", "\n", "created 07-bentoml-production/03-deploy-bento-service.md\n", "\n", "\n", "processing video zNYtXde0BCA\n", "saved to 07-bentoml-production/images/thumbnail-7-04.jpg\n", "\n", "## 7.4 Sending, Receiving and Validating Data\n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "## Notes\n", "\n", "Add notes from the video (PRs are welcome)\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "
    ⚠️\n", " The notes are written by the community.
    \n", " If you see an error here, please create a PR with a fix.\n", "
    \n", "\n", "\n", "## Navigation\n", "\n", "* [Machine Learning Zoomcamp course](../)\n", "* [Session 7: Production-Ready Machine Learning (Bento ML)](./)\n", "* Previous: [Deploying Your Prediction Service](03-deploy-bento-service.md)\n", "* Next: [High-Performance Serving](05-high-performance.md)\n", "\n", "created 07-bentoml-production/04-validation.md\n", "\n", "\n", "processing video LjDYPWhJBrY\n", "saved to 07-bentoml-production/images/thumbnail-7-05.jpg\n", "\n", "## 7.5 High-Performance Serving\n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "## Notes\n", "\n", "Add notes from the video (PRs are welcome)\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "
    ⚠️\n", " The notes are written by the community.
    \n", " If you see an error here, please create a PR with a fix.\n", "
    \n", "\n", "\n", "## Navigation\n", "\n", "* [Machine Learning Zoomcamp course](../)\n", "* [Session 7: Production-Ready Machine Learning (Bento ML)](./)\n", "* Previous: [Sending, Receiving and Validating Data](04-validation.md)\n", "* Next: [Bento Production Deployment](06-production-deployment.md)\n", "\n", "created 07-bentoml-production/05-high-performance.md\n", "\n", "\n", "processing video aF-TfJXQX-w\n", "saved to 07-bentoml-production/images/thumbnail-7-06.jpg\n", "\n", "## 7.6 Bento Production Deployment\n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "## Notes\n", "\n", "Add notes from the video (PRs are welcome)\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "
    ⚠️\n", " The notes are written by the community.
    \n", " If you see an error here, please create a PR with a fix.\n", "
    \n", "\n", "\n", "## Navigation\n", "\n", "* [Machine Learning Zoomcamp course](../)\n", "* [Session 7: Production-Ready Machine Learning (Bento ML)](./)\n", "* Previous: [High-Performance Serving](05-high-performance.md)\n", "* Next: [(Optional) Advanced Example: Deploying Stable Diffusion Model](07-stable-diffusion.md)\n", "\n", "created 07-bentoml-production/06-production-deployment.md\n", "\n", "\n", "processing video NMIi_DDVxAs\n", "saved to 07-bentoml-production/images/thumbnail-7-07.jpg\n", "\n", "## 7.7 (Optional) Advanced Example: Deploying Stable Diffusion Model\n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "## Notes\n", "\n", "Add notes from the video (PRs are welcome)\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "
    ⚠️\n", " The notes are written by the community.
    \n", " If you see an error here, please create a PR with a fix.\n", "
    \n", "\n", "\n", "## Navigation\n", "\n", "* [Machine Learning Zoomcamp course](../)\n", "* [Session 7: Production-Ready Machine Learning (Bento ML)](./)\n", "* Previous: [Bento Production Deployment](06-production-deployment.md)\n", "* Next: [Summary](08-summary.md)\n", "\n", "created 07-bentoml-production/07-stable-diffusion.md\n", "\n", "\n", "processing video eeLuhv8FpVs\n", "saved to 07-bentoml-production/images/thumbnail-7-08.jpg\n", "\n", "## 7.8 Summary\n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "## Notes\n", "\n", "Add notes from the video (PRs are welcome)\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "
    ⚠️\n", " The notes are written by the community.
    \n", " If you see an error here, please create a PR with a fix.\n", "
    \n", "\n", "\n", "## Navigation\n", "\n", "* [Machine Learning Zoomcamp course](../)\n", "* [Session 7: Production-Ready Machine Learning (Bento ML)](./)\n", "* Previous: [(Optional) Advanced Example: Deploying Stable Diffusion Model](07-stable-diffusion.md)\n", "* Next: [Homework](homework.md)\n", "\n", "created 07-bentoml-production/08-summary.md\n", "\n", "\n", "\n", "## 7.9 Homework\n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "## Notes\n", "\n", "Add notes from the video (PRs are welcome)\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "
    ⚠️\n", " The notes are written by the community.
    \n", " If you see an error here, please create a PR with a fix.\n", "
    \n", "\n", "\n", "## Navigation\n", "\n", "* [Machine Learning Zoomcamp course](../)\n", "* [Session 7: Production-Ready Machine Learning (Bento ML)](./)\n", "* Previous: [Summary](08-summary.md)\n", "\n", "APPENDED TO 07-bentoml-production/homework.md\n", "\n", "\n" ] } ], "source": [ "create_files = True\n", "\n", "for i in range(len(df)):\n", " row = df.loc[i]\n", " params = row.to_dict()\n", " params['session'] = session\n", "\n", " navigation = [\n", " '* [Machine Learning Zoomcamp course](../)',\n", " '* [Session %s: %s](./)' % (session, session_name) \n", " ]\n", "\n", " if i > 0:\n", " prev_row = df.loc[i - 1]\n", " line = '* Previous: [%s](%s)' % (prev_row['name'], prev_row.page_name)\n", " navigation.append(line)\n", "\n", " if i + 1 < len(df):\n", " next_row = df.loc[i + 1]\n", " line = '* Next: [%s](%s)' % (next_row['name'], next_row.page_name)\n", " navigation.append(line)\n", " \n", " params['navigation'] = '\\n'.join(navigation)\n", " \n", " if row.video and row.video != 'NOT_READY':\n", " thumbnail = download_thumbnail(row.video, session, row.lesson)\n", " params['thumbnail'] = thumbnail\n", "\n", " if row.video == 'NOT_READY':\n", " del params['video']\n", " params['coming_soon'] = True\n", " \n", " if 'video' in params and len(params['video']) > 0:\n", " params['video'] = params['video'] + '&list=PL3MmuxUbc_hIhxl5Ji8t4O6lPAOpHaCLR'\n", "\n", " template = Template(template_string)\n", " rendered = template.render(**params)\n", " print(rendered)\n", " \n", " page_full = '%s/%s' % (folder, row.page_name)\n", " \n", " print()\n", "\n", " if create_files:\n", " if (not os.path.exists(page_full)) or os.path.getsize(page_full) <= 1:\n", " with open(page_full, 'w', encoding='utf-8') as f_out:\n", " f_out.write(rendered)\n", " print(\"created\", page_full)\n", " else:\n", " with open(page_full, 'a', encoding='utf-8') as f_out:\n", " f_out.write('\\n\\n========\\n\\n')\n", " f_out.write(rendered)\n", " print(\"APPENDED TO\", page_full)\n", " \n", " print()\n", " print()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "processing video WZCjsyV8hZE\n", "saved to 08-deep-learning/images/thumbnail-8-01b.jpg\n" ] }, { "data": { "text/plain": [ "'images/thumbnail-8-01b.jpg'" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "download_thumbnail('https://www.youtube.com/watch?v=WZCjsyV8hZE', 8, '01b')" ] }, { "cell_type": "code", "execution_count": null, "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.9.13" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: learning-in-public.md ================================================ # Learning in public Most people learn in private: they consume content but don't tell anyone about it. There's nothing wrong with it. But we want to encourage you to document your progress and share it publicly on social media. It helps you get noticed and will lead to: * Expanding your network: meeting new people and making new friends * Being invited to meetups, conferences and podcasts * Landing a job or getting clients * Many other good things Here's a more compresensive reading on why you want to do it: https://github.com/readme/guides/publishing-your-work ## Learning in Public for Zoomcamps When you submit your homework or project, you can also submit learning in public posts: You can watch this video to see how your learning in public posts may look like: Send a PR if you want to suggest improvements for this document ================================================ FILE: projects/README.md ================================================ ## Projects The idea is that you now apply everything we learned so far yourself. There are three projects in this course: * Midterm project * Capstone 1 * Capstone 2 This is what you need to do for each project * Think of a problem that's interesting for you and find a dataset for that * Describe this problem and explain how a model could be used * Prepare the data and doing EDA, analyze important features * Train multiple models, tune their performance and select the best model * Export the notebook into a script * Put your model into a web service and deploy it locally with Docker * Bonus points for deploying the service to the cloud ## Videos [Submit and evaluate Zoomcamp projects 🎥](https://www.loom.com/share/4f5c155c550e48ddb54b71ba76516b04) We did a few office hours sessions where we explained how you go about the projects. Check them out: * [ML Zoomcamp 2023 Office Hours (pre-midterm)](https://www.youtube.com/live/GuJkBzyGxyc) * [ML Zoomcamp 2022 - Office Hours (midterm project)](https://www.youtube.com/live/AcB-Iz8h5tc) * [2021 Office hours #7](https://www.youtube.com/live/wWBm6MHu5u8) and [2021 Office hours #8](https://www.youtube.com/live/3bo7I9LaN7o) (check #8 if you want to use text) ## Deliverables For a project, you repository/folder should contain the following: * `README.md` with * Description of the problem * Instructions on how to run the project * Data * You should either commit the dataset you used or have clear instructions how to download the dataset * Notebook (suggested name - `notebook.ipynb`) with * Data preparation and data cleaning * EDA, feature importance analysis * Model selection process and parameter tuning * Script `train.py` (suggested name) * Training the final model * Saving it to a file (e.g. pickle) or saving it with specialized software (BentoML) * Script `predict.py` (suggested name) * Loading the model * Serving it via a web service (with Flask or specialized software - BentoML, KServe, etc) * Files with dependencies * `Pipenv` and `Pipenv.lock` if you use Pipenv * or equivalents: conda environment file, requirements.txt or pyproject.toml * `Dockerfile` for running the service * Deployment * URL to the service you deployed or * Video or image of how you interact with the deployed service ## Peer reviewing > [!IMPORTANT] > To evaluate the projects, we'll use peer reviewing. This is a great opportunity for you to learn from each other. > * To get points for your project, you need to evaluate 3 projects of your peers > * You get 3 extra points for each evaluation > * If you don't evaluate your peers, you fail the project Tip: you can use https://nbviewer.org/ to render notebooks if GitHub doesn't work ## Evaluation Criteria The project will be evaluated using these criteria: * Problem description * 0 points: Problem is not described * 1 point: Problem is described in README birefly without much details * 2 points: Problem is described in README with enough context, so it's clear what the problem is and how the solution will be used * EDA * 0 points: No EDA * 1 point: Basic EDA (looking at min-max values, checking for missing values) * 2 points: Extensive EDA (ranges of values, missing values, analysis of target variable, feature importance analysis) For images: analyzing the content of the images. For texts: frequent words, word clouds, etc * Model training * 0 points: No model training * 1 point: Trained only one model, no parameter tuning * 2 points: Trained multiple models (linear and tree-based). For neural networks: tried multiple variations - with dropout or without, with extra inner layers or without * 3 points: Trained multiple models and tuned their parameters. For neural networks: same as previous, but also with tuning: adjusting learning rate, dropout rate, size of the inner layer, etc. * Exporting notebook to script * 0 points: No script for training a model * 1 point: The logic for training the model is exported to a separate script * Reproducibility * 0 points: Not possitble to execute the notebook and the training script. Data is missing or it's not easiliy accessible * 1 point: It's possible to re-execute the notebook and the training script without errors. The dataset is committed in the project repository or there are clear instructions on how to download the data * Model deployment * 0 points: Model is not deployed * 1 point: Model is deployed (with Flask, BentoML or a similar framework) * Dependency and enviroment management * 0 points: No dependency management * 1 point: Provided a file with dependencies (requirements.txt, pipfile, bentofile.yaml with dependencies, etc) * 2 points: Provided a file with dependencies and used virtual environment. README says how to install the dependencies and how to activate the env * Containerization * 0 points: No containerization * 1 point: Dockerfile is provided or a tool that creates a docker image is used (e.g. BentoML) * 2 points: The application is containerized and the README describes how to build a container and how to run it * Cloud deployment * 0 points: No deployment to the cloud * 1 point: Docs describe clearly (with code) how to deploy the service to cloud or kubernetes cluster (local or remote) * 2 points: There's code for deployment to cloud or kubernetes cluster (local or remote). There's a URL for testing - or video/screenshot of testing it Total max 16 points Or the same in table format [Criteria](https://docs.google.com/spreadsheets/d/e/2PACX-1vQCwqAtkjl07MTW-SxWUK9GUvMQ3Pv_fF8UadcuIYLgHa0PlNu9BRWtfLgivI8xSCncQs82HDwGXSm3/pubhtml) ## Cheating and plagiarism Plagiarism in any form is not allowed. Examples of plagiarism: * Taking somebody's else notebooks and projects (in full or partly) and using it for the capstone project * Re-using your own projects (in full or partly) from other courses and bootcamps * Re-using your midterm project from ML Zoomcamp in capstone * Re-using your ML Zoomcamp from previous iterations of the course Violating any of this will result in 0 points for this project. ## FAQ **Q**: Can I use poetry / virtual env for managing dependencies; catboost for boosting and FastAPI for creating a web service? > Yes, you can use any library you want. But please make sure to document everything and clearly explain what you use. > Think of your peers who will review it - they don't necessarily know what these libraries are. > Please give them enough context to understand your project. **Q**: Can multiple people use the same dataset? > Yes, there's no way to control it or enforce. So it's totally okay if you and somebody else use the same dataset. **Q**: For peer reviewing, do I have to run the code and make sure it works? > It's recommended that you do that, but you don't _have_ to do it. **Q**: What if I see an error? What if I run something and it doesn't work? > If you spot an error somewhere and you see that the code clearly doesn't work, then you > give 0 points to the respective criterium. E.g. if you see an error in Dockerfile, > then you give 0 points to the "containerization" dimension. **Q**: Should I include a project title, and what happens if I leave the README file empty? > It's highly recommended to create a new repository for your project (not inside an existing repo) with a meaningful title, such as > "Car Price Prediction" or "Heart Risk Prediction" and including as many details as possible in the README file. ChatGPT can assist you with this. Doing so will not only make it easier to showcase your project for potential job opportunities but also have it featured on the [Projects Gallery App](#projects-gallery). > If you leave the README file empty or with minimal details, there may be point deductions as per the [Evaluation Criteria](#evaluation-criteria). ## Resources ### Datasets * [A list with datasets from our Data Engineering course](https://github.com/DataTalksClub/data-engineering-zoomcamp/blob/main/projects/datasets.md) * [kaggle Datasets](https://www.kaggle.com/datasets) and [kaggle Competitions](https://www.kaggle.com/competitions) * [Tensorflow Datasets](https://www.tensorflow.org/datasets/catalog/overview) * [PyTorch - Image Datasets, Text Datasets, and Audio Datasets](https://pytorch.org/tutorials/beginner/basics/data_tutorial.html) links in first paragraph * [UC Irvine Machine Learning Repository](https://archive.ics.uci.edu/ml/index.php) * [OpenML Datasets](https://www.openml.org/search?type=data) * [OECD database](https://stats.oecd.org/index.aspx?lang=en) * [European data](https://data.europa.eu/en) * [Urban Data Platform Hamburg](https://www.en.urbandataplatform.hamburg/find-data) * [New Zealand Data Sets](https://newzealand.ai/public-data-sets) * [Open Images Dataset V7 and Extensions](https://storage.googleapis.com/openimages/web/index.html) * [deeplake - Machine Learning Datasets](https://datasets.activeloop.ai/docs/ml/datasets/) * [Soccer data](https://github.com/statsbomb/open-data) * Add more data here! ### Projects Gallery Explore a collection of projects completed by members of our community. The projects cover a wide range of topics and utilize different tools and techniques. Feel free to delve into any project and see how others have tackled real-world problems with data, structured their code, and presented their findings. It's a great resource to learn and get ideas for your own projects. [![Streamlit App](https://static.streamlit.io/badges/streamlit_badge_black_white.svg)](https://datatalksclub-projects.streamlit.app/) ### Zoomcamp 2024 * [Midterm project](../cohorts/2024/projects.md#midterm-project) * [Capstone 1](../cohorts/2024/projects.md#capstone-1) * [Capstone 2](../cohorts/2024/projects.md#capstone-2) ### Zoomcamp 2023 * [Midterm project](../cohorts/2023/projects.md#midterm-project) * [Capstone 1](../cohorts/2023/projects.md#capstone-1) * [Capstone 2](../cohorts/2023/projects.md#capstone-2) ### Zoomcamp 2022 * [Midterm project](../cohorts/2022/projects.md#midterm-project) * [Capstone 1](../cohorts/2022/projects.md#capstone-1) * [Capstone 2](../cohorts/2022/projects.md#capstone-2) ### Zoomcamp 2021 * [Midterm project](../cohorts/2021/07-midterm-project/) * [Capstone 1](../cohorts/2021/12-capstone/) * [Capstone 2](../cohorts/2021/14-project/) ================================================ FILE: projects/how-to.md ================================================ # How to Submit and Review Projects This guide is based on [Alexey's video guide](https://www.loom.com/share/4f5c155c550e48ddb54b71ba76516b04). You can watch it for a visual guide. ## Submitting Your Project 1. Go to your course page on the course platform: https://courses.datatalks.club/ 2. Open the **project submission form**. 3. Prepare your materials: * **GitHub repo URL** (you can use a separate repo or a subfolder in your course repo). * **Commit ID** of your final project version. * (Optional) Up to **14 “learning in public” links** — posts where you shared your progress. * (Optional) Link to your **FAQ contribution**, if any. 4. Review your **certificate name** — it will appear exactly as entered. You can edit it under *Enrollment Details → Name on certificate*. 5. Submit the form. Even after the deadline, you can still submit while the form remains open (it may be closed manually anytime). ## Reviewing Peer Projects Once the form closes, you’ll automatically receive **3 peer review assignments**. Each assignment includes a GitHub project link and a specific **commit hash** to review. Peer review is part of your learning. Take time to explore how others approached their projects. ### How to review your peers? 1. Open each assigned project on GitHub (To check the correct version, use the commit link (`/commit/`)) 2. Evaluate the project using the official **criteria** (problem description, reproducibility, deployment, etc.). 3. For each criterion, assign points based on completeness and quality. 4. (Optional but recommended) Try to **run the project locally** to verify reproducibility. (If the dataset is private or the cloud setup is inaccessible, judge reproducibility based on the documentation.) 5. Leave short, constructive **feedback** — what worked well and what could be improved. 6. Submit your review and record the **time spent**. 7. (Optional) Review extra projects for additional learning. Notes: * If you get a clearly fake or placeholder project (as shown in the demo), give **zero points**. * Focus on **effort, completeness, and documentation**, not model accuracy. ================================================ FILE: projects/project-tips.md ================================================ # Project Tips and Checklist This guide summarizes best practices for your midterm and capstone projects. It's based on Alexey's project discussion video: https://www.youtube.com/live/GuJkBzyGxyc?si=xdgNWXemt-1U_Sph ## 1. Choosing Your Problem & Dataset - **Pick something you actually find interesting.** A relatable problem keeps you motivated through debugging and deployment. - **Keep scope realistic.** If a Kaggle notebook already solves a similar task, it's likely doable in 2 weeks. - **Dataset sanity checks** - Publicly available and easy to download - Not too small (< 500 rows) or too big (> 1 GB) - Clear target variable - Reasonable amount of missing data (you'll handle it in preprocessing) > *Tip:* Start by browsing past cohort projects for inspiration. ## 2. Problem Framing - Clearly **describe the problem** in the README: what you're predicting, who benefits, and how the model will be used. - Define an **evaluation metric** appropriate to your task: - Balanced classification → Accuracy or AUC-ROC - Imbalanced classification → Precision, Recall, or PR Curve - Regression → RMSE / MAE - Add a short note on **why this problem matters**. ## 3. Data Preparation & EDA - Document data source and retrieval steps. - Explore distributions, missing values, correlations, outliers. - Feature-engineer only what's necessary — keep it interpretable. - Keep preprocessing steps **reproducible** (functions or scripts). ## 4. Modeling - Start with a **baseline** (Logistic/Linear model or shallow tree). - Train at least **3 models**, tune key hyperparameters, and select the best. - Use **cross-validation** and keep a summary table of scores. - Avoid data leakage — don't include target-derived features. ## 5. From Notebook → Script Refactor your final notebook into: ``` train.py # trains model and saves artifact predict.py # loads model, runs inference serve.py # starts web service ``` ## 6. Web Service - Implement a **Flask/FastAPI** (or similar) app exposing: - `POST /predict` – accepts JSON input, returns prediction - `GET /health` – simple 200 OK check - Provide an example request in the README: ```bash curl -X POST -H "Content-Type: application/json" \ -d '{"feature1": 3.2, "feature2": "A"}' \ http://localhost:9696/predict ## 7. Dockerization ✅ Required for the project evaluation. Include a working `Dockerfile`, e.g.: ```dockerfile FROM python:3.11-slim WORKDIR /app COPY . . RUN pip install -r requirements.txt EXPOSE 9696 CMD ["python", "serve.py"] ``` Add build/run instructions: ```bash docker build -t myproject . docker run -it -p 9696:9696 myproject ``` ## 8. (Bonus) Cloud Deployment Optional but earns extra points: * Deploy to AWS, GCP, Azure, or PythonAnywhere. * Include: * Access instructions or screenshots * A short demo of successful prediction * Teardown info to avoid extra costs ## 9. Documentation & Structure A good README includes: 1. Problem statement 2. Dataset description 3. EDA summary 4. Modeling approach & metrics 5. How to run locally and via Docker 6. API usage example 7. Known limitations / next steps Add one simple **diagram or architecture sketch** (data → model → API) if possible. ## 10. Peer Review Readiness Before submission: * Clone your repo fresh and ensure everything runs from scratch. * Tag or note the **exact commit hash** you'll submit. * Check that all files needed for reproducibility are included. * Write clear setup and run instructions — reviewers should need <10 minutes to verify. ## 11. Learning in Public Share short updates during your build — screenshots, threads, or LinkedIn posts. You can add up to **14 public learning links** in the submission form. ## 12. Common Pitfalls to Avoid 🚫 Don't skip peer review — fewer than 3 reviews → project fail 🚫 Don't replace Flask/FastAPI + Docker with Gradio/Streamlit (they're great extras, not substitutes) 🚫 Don't copy-paste other students' projects — inspiration ≠ duplication 🚫 Don't leave Docker setup or deployment for the last day ## 13. Time & Effort Plan for **15–20 hours** total: * 5h exploring & EDA * 5h modeling & tuning * 3h refactoring + testing * 5h packaging & deployment * 2h documentation & peer review prep ## 14. Evaluation Criteria Summary | Category | Max Points | Key Expectation | | -- | - | | | Problem description & clarity | 2 | Clear, contextual README | | EDA & feature prep | 2 | Well-explained and clean | | Modeling & tuning | 2 | Several models + selection rationale | | Reproducibility | 2 | Runs end-to-end with provided instructions | | Deployment | 2 | Functional web service with Docker | | Learning in public | +up to 14 | Optional daily posts | | Bonus | +2 | Cloud deployment or notable improvement | ## 15. Quick Pre-Submission Checklist * [ ] Problem clearly stated * [ ] Dataset linked and documented * [ ] Notebook → script conversion complete * [ ] Web service works locally * [ ] Docker container builds & runs * [ ] README explains setup + API * [ ] Commit hash noted * [ ] Peer-review criteria covered * [ ] Project tested from fresh clone Good luck, and remember: **Deployment takes longer than expected — start early!**