{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [], "toc_visible": true, "authorship_tag": "ABX9TyPktUSzGMpGU1YmHHSsNC7z", "include_colab_link": true }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "vyn8znjVP_Fg" }, "outputs": [], "source": [ "# Install for running in colab\n", "!pip install biopython fair-esm -U kaleido &> /dev/null" ] }, { "cell_type": "markdown", "source": [ "# Zero-shot prediction of functional protein sequence variants" ], "metadata": { "id": "Qs3Xu2RWQhZq" } }, { "cell_type": "markdown", "source": [ "In Moderna Therapeutics's study titled [\"Therapeutic Enzyme Engineering Using a Generative Neural Network\"](https://www.nature.com/articles/s41598-022-05195-x), scientists turbocharge ornithine transcarbamylase (OTC), a critical player in the urea cycle combating a rare metabolic ailment. Their secret sauce? Marrying insights from nature's evolution dance with a dash of artificial evolution guided by savvy deep learning models. Meanwhile, in the paper [\"Efficient evolution of human antibodies from general protein language models\"](https://www.nature.com/articles/s41587-023-01763-2), authors play protein origami, deftly evolving human antibodies sans the cheat sheet on target antigen specifics binding specificity, or protein structure. No experimental data for model supervision; both approaches propose beneficial mutations in a zero-shot manner.\n", "\n", "Crafting functional protein sequences in the protein engineering arena is a puzzle akin to navigating a vast cosmic expanse. Picture a protein with 200 amino acids; a mere switcheroo of one amino acid spawns a array of 4000 potential variants (200*20). My [previous notebooks](https://nbviewer.org/github/arjan-hada/protein-variant-prediction/blob/master/00_protein_seq_to_fxn_model.ipynb) used machine learning as the Sherpa guiding directed evolution when armed with experimental compass. But what if the experimental compass is missing? Can we still map out a path to promising protein sequences by divining the protein's mutational horoscope?\n", "\n", "Nature leaves us clues, imprinting functional wisdom in protein sequences. Enter the unsupervised models, revealing higher functional variant tales from the sequence data troves, as showcased in the article [\"Language models enable zero-shot prediction of the effects of mutations on protein function\"](https://www.biorxiv.org/content/10.1101/2021.07.09.450648v2). These unsupervised maestros for predicting protein variant effects fall into three troupes: **hybrid protein language models (PLMs)**, **PLMs**, **Alignment based models**, and **Inverse folding models**.\n", "\n", "Our playbook? This notebook orchestrates and contrasts these model from each class, aiming to spotlight protein sequence gems that can lighten the load of experimental quests in directed evolution. The playbook uses competitive models from the benchmarks set by ProteinGym](https://proteingym.org/), providing a comprehensive evaluation of these models' capabilities in predicting the mutational landscape of proteins.\n", "\n", "**Goals**\n", "- Efficiently identify promising protein sequence variants to alleviate the experimental screening burden in directed evolution.\n", "- Provide a canvas of mutational landscape, specifically focusing on the [encapsidation protein 22K crucial for recombinant Adeno-Associated Virus (rAAV) production](https://pubmed.ncbi.nlm.nih.gov/38062776/). Maybe there are protein sequence gems that hold the key to improving rAAV production?" ], "metadata": { "id": "BnyB29yrtlKT" } }, { "cell_type": "markdown", "source": [ "## Protein fitness landscape prediction using Hybrid PLMs" ], "metadata": { "id": "CZUcWQ5fp8nn" } }, { "cell_type": "markdown", "source": [ "- Large Protein Language Models (PLMs) are trained on large protein databases encompassing all known sequences or on sets of homologous sequences spanning many protein families.\n", "- Hybrid PLMs are PLMs that leverage multiple sequence alignment (MSAs) such as [Tranception](https://arxiv.org/abs/2205.13760), and [MSA Transformer](https://www.biorxiv.org/content/10.1101/2021.02.12.430858v1.full).\n", "- Below is the take on hybrid PLMs from [Pascal Notin](https://twitter.com/NotinPascal) author of [ProteinGym](https://proteingym.org/benchmarks) paper." ], "metadata": { "id": "xAFnB7MrXxgo" } }, { "cell_type": "markdown", "source": [ "![download.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAd0AAACACAYAAABOWrPzAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAJAAAAABAAAAkAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAB3aADAAQAAAABAAAAgAAAAADtTQyYAAAACXBIWXMAABYlAAAWJQFJUiTwAAACzGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj4xNDQ8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjE0NDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjk1NDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+MTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjU2PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CnCJBd0AAEAASURBVHgB7J0FoJXF1vcX3d3d3dJdYmIhNhiAeO3uviYGil2IiXUxCRURRGmVlu7u7gPP9/+tfeawPfeASnk/3z2wz97PM7VmzcyqWTOTLlKw5LB33z7bsWu3Zc+SObw6qt/p06e3RSvX2IbN26xm+VKWIUN6iwPnqNadKDyBgQQGEhhIYCCBgWOEgT3id5n27dv3YMb4CtNZOjG9fbZ79+7410flN5w+o5juvr37jN+79+y2DHsTTPeoIDtRaAIDCQwkMJDAwN+KgaxZszpvTf9fUKTovf8Vc1RfpDuqpScKT2AggYEEBhIYSGDg78WANF37b6Z7jGBKMNljhOhENQkMJDCQwEACA/8TGGBJ9W9juikKdTqM2omQwEACAwkMJDCQwMA/HwN/G9NNQa38uBLOUynYSPxIYCCBgQQGEhj4B2Pg72e6IFfabiIkMJDAQAIDCQwkMPBPx8DvvJePZWNhs2xRKpQ3lxXInUN8F8/pFKPzsQQlUVcCAwkMJDCQwEACA8cEA8eY6WJKRrHdr9lm0t5cy5jBIjFgWG5gvrEk+9MdE2wkKklgIIGBBAYSGEhg4Chi4Jgw3aDBuueWvLdgrOnTw1D5xLRbT6OfYsve3H37YNB7/4tJH0VcJIpOYCCBgQQGEhhIYOCoYuCoM12YaYYMGcVkdRDGviTbvHmtrV69yObMnWdr1m2yfZbJsmXLZcVKFLM8ubNbtiyZLF/ufJY/XyHLmDF2MtbepD0xJMRpyEcVK0e58CCEUE281n80qg11He16jgbs/+tlJnD7v95DCfgSGPjfw8BRZLpuLLZMmbLYzh1bbNnyuTZ71nhbMHeS1nL32rdDv7Wvv12SgpHWJ51glSqWtEIFslumDJFVq9HAalSta0ULFbW8YsD79u4V0957WEwqEMmUSpN/HGuGlFHm9IwSRJLUpr36hBAPXzxM4X38u5An9XfqtBkyqK6MGW3Pnj2HtGYeysMywdJAeI6H5c++Sw1reCZ/fHnpJVzto7I/CKHe+GTx5cS/Pxq/Mwq31Ec/HkoI8B9pmEO5AaZQfur3qePDM9+O/VR9EMrx+L8QR/qQNy0YQhzpEiGBgX86BtJpEqRQN0y623bsENM7PKdmikwnzTaDPqtXzrWfx39po8e+ZavXbLGMUWnbsSO9TZu2WEdiaaOwtNm9+9LZpvXrpQ1Hlr9obitRspBVqFpOE3WHlchf3Nq362Q16zS1DJmy2d6k3SkT+K92TubMmf8rLyeEwJCOVYDAbN26zdZvWG958+SxPPoAAzjLlCmTrAIZHBRggiGTPkuWLP6O4znjuitNkMlPnqSkJP/euXOnrVu33goXLuTl/1H+1IVmFkzpNR527tzlsAFjkiwPe/YkeVIYD++AdY/qDIF8DKw/wi2wYgWJFz6SkvZaJtb5Q2GpvhmxGQVTRtURAgsVMD/afSyC9+O27Tq+dI/ly5sHaeQvVxsbjzoCdfehCUQHqhDcM/9irDNdyrGumTODr9/7STAe0jr2lT6hX0MZqedJpkxYrxirtDtWB2Xx5H2TUXnBifqXvqVfeHSBU0IgacM4je97ZU+EBAb+iRjYo2MgM4ke//7s5SPRUiYTkzFdushm/fa9jfyuj63ftMJy5i5rW7dvsQVzttjCucttw+q1ln6fzlrezaQUw8mazXbt3W2rk3bY9i36KG3Jknks174dNnZIL9u9/hyr07yTZclZwJL27FT5f00wgBn9MPJHW7hwoUHsgDNP3rxWvWpVK1u2TIomGIhBwAWEgcD7GHmJ/eZ9iEMrC6RMP9X+uDzEKW0oF63z118n2vndr7bX+zxuZ55xuhjaTuNcztmz59iPo0aJiOe1dm3bWK5cuZxYff7Fl66ttmrZQqb4bP4u1E25EMjwvXHjRtu4aZOVLFHC6/38i6/s0ku62nfDvrf2bdvatu3bYunVJqCkTWiWqUNMs01nk3+bZbPmzLct27aJkKez3DlzWeN6taxk8aLKG9mq1etswqRpVrlCWatYrrTg2Kei0tkvU6Y7zDWrVHQvdeCLDwF+mNamzVstb+6c3rYfRo+3X6bOsO4XdLKcObKrrQge+3NSCkxl9Zp1XgcMi1Zkz57NqlQsbyWLFUkRYvbn0i/6K/nFgWA52HvqdXzpB3hAoPx58jRbrgs7Lux0quPxd/Ud5IG2IyCM/WWy7dq1yxrUqSnBKnMMbvIlj5lQBHAFfAUYeY4XsEjr7dP7KTNm2VT1216da16saGFrWr+uWw5GjBpvGzdL8M0ovwpSK22RgvmtQd1aPn4og/IRpLZIoJgwcYqtWLXa+7F2jWpWRX3s8RrDs+YssInTZviZ6aVLFLdGx9W2LC7UmpaNNth4tW3Dps3eL5RfSv2SXvWuWLXGxilu85atllvjm3zFixRygS20ETgSIYGBfyoG/hrn+gMsMCGD9Dt98mAbPfwR27V7p2XKUszWijhv2bzDVq/aaEm791mdmnWsVdMWduqJHazLuWdb13POsm5dL7QWDRvb3p17bOaMObZm5SbLma2gPJsL2vefPGajvnjZtm9aZZkyZ9Xkh7j/+cCE/uzzL6zbZZdal4sutK5dLrLTO55qXS/rYePGT0jRMrNnz+6aJUwwMGfaxe/sYnj+rTRoAbwnZJUmSno00qxZY1ppSh6lJQ/MEoZL2LR5k61fMss2bNjgzzG8pbfZc2Zbzx7d7ZzOZ9vQ775P0SDvvO8Be+qZZ8UwtzvxpbxQH/ASeLdVjPHW2++019/o6/VlykS9Wa15q7bOqKCzwAGBB2bgzaZP2sQunUGkPx3yvRUvVtjqizE0Oa6uCGtGe+W9ATZr7ny1J5OtWL3GLnnqDevb/1PbIg0+aOrf/TjOmQrPMVxkSqkTWNGcaMPc+YvtDeVl3Z+04DWnYISpQfwzS6OCmIcPAgLvV69bZ3e88K7NmLvQlq1aZ59/O9Ie7vO6MxsEMtLQRseVvjMoH3Doy8viPe1HY6Mbicuk/onhhbiYPwHvgSub+pU8fAMb7zdt2WLrN25whps2Dr1rfveHfIwDBI1n3/zQ7unzpq1Zv8HfgRPKzuIaqWBSTgQqNFQYKnkROIANWBYtWW6Dvhvp2jZCUnrBuVL98Uzf/rZg6QrbKYHkgRfftW+G/+h9vHLtOpuzcKktXLZK8SvtqX6f2OgJk70O8EL5tIOtfIO/G2HPvPUft0JNm7XAHn6+r+pb5n02bcZs+7eeV0hwziRLVd9PBtqng4Z6n8Lov/p2uH2scZNOwvfw0b9ar5f62WaNjR2ylnzw+WAbOmqCWym++WGsvfLOxxLKNyf3Q2w+/Q5hiYcEBo4hBpgDfEKI/32wdyHuz3wfwTXd/Qz315+/slHDH7Vs2YuJ4YrArNtm27ZGtmb1Vtu2bZc1b9rMGtWqZUVkWs0hIgKB3CPT9noxjaLFCrkmMXDE95KUk2zK9AWWLdple7Zls/l977eVG7baqRfeYHnzF5V2uusADOP3TYegEHJIcyIM/W6YVatW1T797HO77pqrrX//D6xGjepO8ObMmWuLlyy23LnzWIXy5a1AgfyeZ7WI2UJpyTDKYsWKWenSpaWJ5vS4pUuX2pIlS53olClTxopKu0ifPqOtk8mcuOXLV4hxFbdy5cpYvnz5nMiRMUMyE/ZC9Id1XkLh4iXtrXfetZYtmlm+/PmtbKmSMkXndoYBU1qxcqUtXrTYtu/YbkWKFLHy5coJr9ttvISHt/v1tbPPOcfGjBljFSpUsMaNG9ldOXPqd3nbIiYxa9Zsy68yIekLFy6yUqVKWQlpKs5IeAthF5H/WdrriLE/W8+LznaCOWn6LNdWSqjttbbvso8HDrXbypRyYtmpTmVbuGKVjZCWetbJx9vedPssi5gZDJMAY1slzXTh4qViHumsTOkSWqsvKI1ovY2XNrVg8TLXqiqULW1Vpa3ml7kWYYH4HdIE6b4ly1a41lShTGkn/JRTvnA+O+/0E61cmZKuOb35/n/s/c8G26NVK9sumb+nzZwjprjJypQsbkWlTcHMYAoLxTz45MqZw8qrDblzaZ+4/sEYFi5eIuFmh5UmDyZ59dF2WSLmLlhky1auklZW2OMQwNwEqz5LHl7e1vAnTNbUzJhnmOvMOfOsQqmiVrlMcZskq0CJokWSmTGMfJOVkiUB5oxGuF7WixLFigqn0vDXrrcFS5bYho1b3CJQKH8+nwPATxgmYSe/xuXNV1zijDm7hIQxE6dZm+ZN7PwzTnYGjbAzcvQEm6+2nn/myZ6PpSUCdaKNDh453q7tcpadfHwb9d1ae+z5N2yiLBClNFaGjxpnjWpWsZ4Xn+fWiHKli9sTb3xg7Vs20ZjcaW8P+sFeuvdaq1uzuh1Xu7rd+eQrXibCy/2fjbAJz99rNatVMawgF9/9pF18zmlWWPMMq0VqfDlQiT8JDBwDDDBnme/MhLA8B2/CksmcDWMTwZclEYTT8O6vgHcENd3YNqAZv420kcOeEvHO64TcIt5ntX1JcqjaFskMWcka168vM2Bhy5crm+XJlslyZE5n2TNHljVTZFkyprNcObJYgfy5bbOI3aJVK23lxnW2Yft625qtin3Y/0nr/84zWhfd4NpRIG5/ptHsBSawjlqieHE7ocPx/rxy1SpbuGChPff8i1azZg278obbrEXzZnbzrbfbejHONWvX2u1332PNmjW1O+590I47rp71ef4FZ1CTJk+2tid2tBYtmlurVi2tTLVGNnnKVDmOLbcLLrzY6h93nN18571Wv34910B3aM08Zg1Q1XESFYCEtnTudLZ9PehLG/7DD05KGQAQJJjyosWL7cYbb7EmTRrLBN3WalSvbl9/860hLFx65Q2Wp2ARmyizZ7NmzWzW7Nk2dtx4O/WUk23GzFkyya6xhg0b2MWXdrf6rU+09u3bWeUaTe3XiZNkPYiZ3CHdaIoTp8+0U9s1dwb00tufWKF8eWz8pKn25kdfyBxZwyDm69ZvBGwXZs4+sY0NGT7K5i9a4tpYknANIUf7mrdgsT307Os2ctyv9v2Y8faotKTFYqJrxVSnzpqngZ7eho+ZYCtF3H+bPdeefuM9R830WXPtrl4v2fNvfmTfi0nc0/t1GzX+V68TxOwRA0Xrg1Hkz5fXGetWCR/rN2y03q++be8MGGjzBM+9z7xmY36e5OPlN5X5yIv9bLrq+WTQd/bUK287o4Dhvi6m3f+Lb2ycBI6bHn7OJk2fIW1xt737yZf21Gvv22Jpj8+/9ZG0yx/cHHowhy9gQpMOSw0ATf/CqDGZg6v6tapZq8b1bfAP43yJAe11pkz5jzz/pphjkjPNucLdEy+/45N8rTTiJ195y0aO+cWmyHy8VKbt0zq0thwSADBXU36dGlUkiJzkGjv3U7NUkVU7AvgNvDllGdkkzfIracjnn3aimGixFAKjjnfikl0Cz2Vnn+oM07S/IFfO7BKEckvoyWrAMGH6HGvXvJEYrpaEJBTVwfRcqpisDLO1TJDb7ut5oYSGYt5PCDZF8mvNW6SsgMbQ53f/y4pJcCEQV0xx+4WW/b88QeJPAgPHEAMoNOsk8CL0xixgkQviMFeYMcob83e5hFLoAgw50Oy/AuYRYbpUzPaeVSvn23dDnrKsmfOLCOb3ybxLzGL7jl1OoLdt3W5ZRWAzpN8nIsKdvTjf7JZ38zbX2nbu3K613M22Z9cOabFbRLSk9RXJY3kL5bb8pfLZ7nQbLEep6vb6W0/Zd9994QTtUCSN2XPn2oQJP1v/Dz50XFWvVs1yShvMI23yvff724hvvrLHez1h/d9726ZOm+Zrre9Kg7zjrnvskw/esYGDBlmH49uLuG+wF1582ebPnGrffDvUNWjbvsE1yI0i/B06tPP3Az/9yC7s0tVuv+1WmzdvvmtxB+ukJk0a2bkXXGgvv/q6M9mSEhCS9iY5A/v008/sow/ft1dfe92Z5dnnnGtnnXmG8LXbBn78ru2QU1qjBvXF+KdIe68h4WSrV+UDRszUsuSXtrTa3n6pt/V9s58411r75ZdfUgYPgwrGtVGaVEFpH+N+nWIdWjSwUzq0sZPaNNMaYF7XwhiUaGGQyV1al23WsJ5VlqYKQ9q1a48GacwhjMp5l09rttd17yIN7FLLnyenvf/pIKtWuaJ1PvV4Ochltut7dHUT9k4R8awIAPpHGcN/m29nn9LW7rj2cuvSsb0N/Wm8mykZ8AgjMPlZcxfYV998b19+96O1FzMAqNrVK9ttV11mPbueZ2d3aGUjx/4qc/BWrXfOtqIS6HpcdK7deU1369i+hZuPx4opj5r4m93Us6tdf/nFdu7JbWylzNZobuWlmd99TTfrftE5dtEZJ9mAb3+UMLZRzAwz+X5TlCNaf8Dh4mXL7dsRPwlH+9fQiYcJL1ux0tZpbbWWtL26NatJSMlgc6RJx+IzyLye1X/DqCgre9aYYMH6+hLBdN3lXfW52DX3WfMWOK7IgDROeQ3q1pR0vk/Wjx1q989WVgwwb275B4gx8/lR7/KrP+rUrPo75zf6kjJyySLUvlVTdxBDQJwhwej7n6cJp1Uc52s2brWs2TQ51XTSs6SSQwx5pczNhQrmsxPbNtdzNj/wZubsebJYbdGuhAJWRNaN41Wur9VrPE+dOdvKFino8w7NgTGaCAkM/B0YQCidPmuOPS2hdtDQ4W4RYznkpbc/sDf7D/AlIAjLsJFjtIz1mk2WUsKAPRT+E7P/HVYrY2blPXt22Mxp39iOTUstd9HqtluMc+u2LVJ0s+hbZmUY685tFolAr5P2unbJbssrM1c5mU43aH1uzkIRD0kaGbPlkLab0bJp25Dt2myF85fVZM2pdZ+Vtst2WOYs0oQlMb/2xu1Wq3ZDq1yplryhtztx+qNmBPJ421332/IFszx5xzM62bnndrZy5cpak8aNpV2OsCef7m1z587z+LVaB2vatImd2amzPf7ow7ZixXKrLu3ysksvsc3SGN59u59d2q2HNRSjyyutYtWqJa75YZJooHejRo22j//zH1uQTFS3u6abtqwTOrBUyRJ2effuztiHD/9B63+bRcSy21YxjfkLFliG3IVdy61YsYK1lbY74JOP3ZSNJp4vRw6Zj/NZbZnvIWRJwjfBzY8QtV3r7fRTu9vpp50m4WAhUTJVbtDau7yTRWARoDA1w1TxRsZLme1aaNpjxYDReBGklq9aK2tEXlkBtFa/fafD10kMtOc9TzkDZu0Thx2culau3eCaEeZmPKEb1K5h32u9eJekReoCNog3ARygkfEPCbNNtXKyjpRz7bmszMhfDh/j2lUsndlnWjvMqHK3yiR8upjr8a2bab93TqsthjZs5FhbJfjWaHylTy+TkNrTtH4dG/PLNOv1/OtWWY5f7ZwJ5HDTcaMalaXR5UUltdNPbCuYxPhVdh0xslHjJ9rnXw9zLTqnNMc9ziRia7tB2lU2ZxzANm3mXHv140HWS2ZjzOUxpoLVJ70LMtvFEFfJ8gB+wD0aPA5Hygov82/giAWtRwuWQhKCmBuztZ6eJC0fBpxPGqj3bXJKNE+k8r3K+/GXQ2ztxs12/fGtndm6JC9h4f2vhtk1XTu5IxOe9BCc+ADek2RlwoS+YNFSe1GWjm5ndXDT8vyFi9WvEqiSQfO2q66Y4K1tcNLiEYZgxFNEmHq//R+7vcf5PlYY++AGjf7nyVPtlQ8H2gPXXmqYyHGoIy4REhj4OzDA2IPWjZw0Q9WnizkBSvhFcL3v0++tRaN6bqFBE/7s5+miI7WtXq3qlpm5prn5V4bu4TNdCI0Iyfo1823etEGWOUNR27Rhk2XIIkAy4LySpLXLfVrfzaj9trl87WaPiPSqlcttW/acliNrdtcaNm3dZVHGJCucK58k37xWunB5HZhR2LLLNL190zZbtWyl5ZQJMUkNLJivpE36YbpNHP+TlS1dSYQsbF04eHcF4nTjNf+y6iLKBQsWsvLly0mjKyCtcaJ1Or+L5ZO2+8i/77dJkybbt0MGSXjYbaW17vnoIw/Zeeeda1MmT7bbb71FTmFbrPPZnSxXoeLu4ATTgLBul7MTa6Ijf/zJzjj9NOvR8192bufO9kHSRzZm1EgnLAckLckRELD69Y+zHpdfYb1lxmY9tFPHk3ytG6K9d/NqJ2y0NmzJof6d0sqc0YrouWaMZhsXQvtzy7xOCFoaBJ0PFz0iLGBezCPNCNNm62YN7HU5Oi1fs1Ga4mbLKFy//PbHVlFroQVFLFesXO0aKXBUkBf4xae3s4+/GupaYJUKpdVeMVW1i21GwO7wi2FQXWCs+uEmYgdK9YfAz0Ji7IGpkR6GEgKOOj27nK0xUNLxATFH+/xNDO/Rl96ylg1q26liOHOkDY6Qpst6bgWtq999fQ+bKe0Y7+PHZeq+98Z/uXaNEACsCALbJFjAXHBMeuLlt61M8SIqq5XWJlfbqx98JUhi6zxo48CEBhk4EU5+TRvUtUrS/DHfhq1UtB0HqlnzF1pRWQwQYmhbUTHTeYuXubmdskJ71eGa/DBltorJE1nr0sUL5bMvvx3hmuQ1WnOtKsErlA9ecATbqjH4yRdf2zitFd+jtpYUDCxrYB1AgMsqZzjWplluwc+Bb5heCMDJutUMMffn5JTVumld69zxRO+7bBKUyxYt4GZm+o361smqs0HtKiFfBvABARuvtj39Rn+7/uJO1rZFExfcYPq07adxv9hr/T+zW7udZ01lIfHtZ3+FagVAE98JDBwhDEALq1Yqb0/edpWVLVlMlrlcztduu7q7XdSpo3YBFPI52FaWtE9LlbAalSv4vPedK5oHfyXsp2B/JVd82mSiumD2GNsmr9ydW7PIDr7WCpcsYNl1wtQ2tsNokmeRdlAwfzYrL4DzZ89tRfPmExHQWpNMi7ly5rGalfJq9UhkSwR/vcybdbS2WqpEIWm4q7WWttTWrtkqe/suy6l8WbPmtPrNq9n4kV9aqzanWJHipV2zhsAfPMQIOuu1TeRghEQOs+KzSGbKxXNn2Dm33uaOSUO+/tqLyip40FY/lefz+eed42vB330/3H75dZJ1797Nel7axZ5+8gk7p9NZ3kl4HuMEtVJON4TGjRqKuRewadN/82c/YzqZr+xnLx4VaLYzbtbiYPJvvP6qR0JY0XbRsglffjXQ140H6puA1ptTa2Q1q1WyUaPH2IABn1mb1q18XZF4sVX/57/V3vhATHzg8JKWkuxeeuc/zliv6HKOnLC2WpVK5ZwRs12HrR6sW8JsAvNkKw3ONBOnzrTJYnyVypVy5l1aTkHf/ThBjKieE+TR2jJSTgMb4QSnHhyVlssRC5MkXI/+8CACDaOEPRMg2AgVIexJ2idTZQ7Hy25peDGHh8iZ16atO+wUMcncWjYYMOhb17CBdZC8crOrzuNbNpWjVAF7oE9fd1Qqo3H53uDhGmvLfW34Q3nZsi2qjBjWN7/MtM+7dLZK5cvaL2LU66Q9AhPwLl6xRubi1W5WDZoaExhzLuugwB+YKIxswqypNmm2/Afuv8nLB/UbZX69+p5eNnnaTKspE+52tYUtP7WqV7VfJk2XiXuHr0cvE44Wr1xrF57ewbVehB7MyBkkLVE3zHKh4B8w8Bv7be5iu7Lr2TIV53Tc5pZzFfhZpPgyclYsWCCfM3NMzYX0u0aVSt6XlMFYg2m+/P4Aa1qvprVt3tj3lu+QUFe4UAFrqjX9dz8b4povMHwzYpSt2bDZxx5bjYb/NM7eUfxZsjzUl1UDwYW1ZDTooT+Msk/laX7OyW2tdo2q2nK12vsvm4Sl34/C0MuJ7wQGjj4GoDkIjGiwmibJhzHFllqqicFCd3bu3O1zhWWSwDcOBbLDYroQEzwSt29bL83wJ3mhLpYWWk0TPbfJkGgZtA83c3pty5CZMdq70bbIHMv6VWFprHu3s9abZFs1kffJJFVEe/YghstFYPaIkJQqK29NGZTXrltjW3butR17s9rOLbtta9IWEdoky5k1hw3/8Ws7d/E8K1KspNp+EHEjeTYHjQBmCxLDoQAQLNZRe/S8whkoTPTcC7o4PvFArl69mn06cIg98/ST/q5kpRr20IMPGGbgi7t28SMtzz33HI878ZSOcp6q5wzpjX5v2+U9ugs0edlecKr9PG601iO1x1jMiRAcu/xBfyCKBIQH4INh33Lb7fbUE9qnLG2Hd2dKe549+zatD9/iaS1TXvviy69cUMigQXNJ164yfV8sAeFcGz7iB2kyOTxdctH+GxMgISgXe8W8AsMAj8RXqlDWup9/ur09YJBVkncqzi948K7U1q/jWzd1j181wMuAmLJWiTaLBnX6CW1s6BOvOLzU01EesK++9x976uW3ZPaU1UP93OnUDhrYSVZBJuNKWjO9+dEX7J6rurqD1m71D90JNjCTpnStfvqz3hO3W/iICU6xtUoHRukrijlWL1/K+sghK6/GFZoUfgWcaFZUAtDTfT+0cROn2iqZWju2biKYC2mtuoB1Pr6l9X7jfa0555JT1wZr1aS+t7vnaTH484qJwlCLF84vxrTH9wW/8dFAu/+ZV+3myy/Sc7lkIQQrApaP/TgGv2iTM2bPtVoVykiYye/9j4UBR6VWDWvLG/k3a9KwrrVtXM+el8BTsVRxN00XK1zQcQneOHji6xFj3JudNfU61SraefJAxpwPqj4fMsxe+Gyond6ktg2Us9R6CQgsA1zS+TRDsGDLUE4JC6yr4gzyxkdfWiV5UJcrXcqtBAhSeHaDo11aIlopAYttPZu0Nt1YzLZL59PthDYt5KC2zJ545S0rIMvQwuWr7cqLOokhF5TpfLJd0buvta5QQhr9Ipso56rNYsQXn3WqTPUZrMszb9n5tStqbX2O+mCax3U77ww7TiZ8xlEiJDDwd2GA+QPtg68FeugWLE1knqGXzP+9+2QVUtqQ5q/Ce1gnUgFcRh3zuGThBBv8+d22cd0uy5Elj/ZEyqM1Z2ZLEtNcpfW0Jcs2StreZuvWbrWW9dta48o1LLP8qDZt2G5bRIjSZ5KXZY7MciDJbAvkwTpfUnOx4nls5dK50pom296Msq3v3mO71NikvXvc5FiqRFGty463i7s9Zud3vU6aTEaXTg6ECCT4VfJSRlovIsaAhhU0EJCG8ICnMluDMIOxrWazzKnsay2mbTmsCxLH+iZxhURgKJP6cKhaKw9nNL4CIt75tS2Istnas1FrAHhp5pDGsXHTRmlEBT0PZeWV8IFGCzOl/s0y/eEpXaSwzOrSDDBv4uELXDmy5/A68Ygl3SqZOSH8ueUtWlTwEagTM+8qlb1N268QCiD+awV74ULaMqO8S5cus+wiuOAA0zle1mjQhWRqT63xQoDXa6lg9Vq0uTW+TsdhCgWk3dAm2o7jE45XeK36Wp9KgcnhPINncR5pWKwZYlZl6wmhiGBhmw7tZv0WB6fVWntl7ZN2s98YDQoND2eGUDZOTdSFFyzMdqPKzCcGGcyWXnjyH9JhCkbDyiNmSb+jfYID4MDDmTXLQuovTNJMKCRZPKjRmllyYL2UwBYiN6NrfRcvada08dxl7zDevJu01ADTzqU2MSkPFOgf2kpf46wUH7arnRyS4g5PmvirNA726ruIti3BrNGqP/hMyx27k+wcbZNiCQBt9InXP7BXH7nNtWb6foOY7B7lc6afzMTAf34tKdAfGyX4AiFaONLMF1qnZmtW9ws7pxAbTh/jMBTaAp4J5AFP9BH4Br/LZc1hSaOoxhKaMzjcImdJ9mszNhBy9crz5tF4YYvc5mTHPsplvjDm6F+EgPj5SJ2JkMDAPwgDKSdSHTbT5WzlWTO/sV/H95HzRR4x3k3uGFW8eGHLljOTLRcDWLlKew83yNN0/gpppTXslEaNLZs03b3b5PmYv4ht2LVNHrAb5IiUTWtDO2z2vNW2TRrt+s3LnbDu1QTeLQKyW0xG7jXaapTTtxzt3rbKKldvbbfe86zWjHM6gTgQ06XzIBZuPhNxgijFB9FDxccOaOC9M0IxVaRviBl5IZYE1tdwLIJIUB/MKcSRLxCqUB/pqI80xPFMXHxa3lEOH9IQF9KFvWLAQTkhXQyW3x/jR/uIB64ARyiTvKx78o3mTNrwTNmpQ6ifNc6YGTkmnPAb+AiUAVEPEqK/U90QWDR50no5emb7ECR4n0yuTpCVjkD7HDfJaSkPxk29OF4l6Te9xXOIg1lTR8CnFxT3hzLJK7R6e2Oa+H6c+jhRpLdFcJIQGMgHp0ADBUaYDdpl6F9gd9zGtQufBuAAr38U6Avqot74QLvSy8JBnd6HyXCA5/B+gA6g+GrYaDv3lDbOpEaOm6jDTTLbNd0udCZMmZiwvW0UnozfWH3AFxtj9AcfnK4+HfydNdZSQaXyZXxMkzfWp7GxHisi1k/0p+NEeWkHMIMgGCf9RZkIXu6Ql1J9LG8Yz+AXnMaXu1cWj9gyAkAnQgID/0gMpDDdwzIvgxomz65dW7QOuUbEKZcIoUk7wVtZJzvlyCuNJre0xQIyMW+UR/BCbZXQuu8+JPqscorSZBORyaS1vQw5c9nezHtsd7RHEv8um6vDHyy7nFmyZJM2hUlWBFFbjXS6pPbzZrJd8irbtnGbLdX+WgheCqE5SH/BaCAMEMkYKdifmHbAeNAqQtxu0iqCT+q48J4SPE5MmIzkDbB4fTyTSIHnEBdgDs98846y+B0+sbJj+cI70vEJgfchQNwCgQvv48vEoSaUAy7in0MZ4Zt05IUdp5SVXG94htFQX3gmL2byvWorgfd8INYC2t+F9+GBOI+PRaSU54wpuWxaiAAU6gp1xNcbyuM7Vl/8m/1toB/ig5chGAPuQpzDrgcECj7xIdTLeCGE5/g0af0Gn4TU6WPlx/CYGg6cEREIT5RZF1MzVoENskC0khm6jtZFOUgE3FBmgCd13aG++PoR/M474+QUQSakCX2auowAN+liY3B/Ct7F3kvQkmCcdojhOK24UHdacYl3CQz8kzBw2EwXZGyTOWnr1hUy9ZWXxpndsssxauv23ZZpm7SpDDpmUNf3ZcyQWaayUjLfbZSn5nzLXaGC5dJ+ySyZ81hOUdQtkpRXbVhlS1estR0iwkmSiPfs222ZRcC53t63vsi8nEXrQrvEhMXBLEnbkLZu3uga1Z/plEAYDpTW4+Mi4wlB6ri4ZE5sRHP+K6TOk7q81Bk8faqCDvQudd7wHOoI37yP/40WEx9SP8fH8Ts+b1rPf/Zd6nLIF8J/xSXjIPV7R3EcflLHh/L4PpS4A+U50Ps/qicenvD7QGXFv4//HepAE8Qk306OampdKE5CEWv9+zXs1HlTEib/SCue7Uf7S4wlTCtdfFkHio91T+rSfpcz/iHxO4GB/3MYOGymyySTtdX27sEUm07rXZiZ0tsaMdfVa7QmKqeqPHkK6Ti/JN9ukidzFh2zuESS8i4rX7yCFZYJeqecNFasWWgrNqyQ93I+yy5mnH3PdluyZpGl1znMGXSsYDpdaK8DucS8uUFF64I6Fq9Q/sq6QWcbFPb/XMclGvx/DwMw1+3abheGu+RR/30gBvhnMZSYPX8WU4l0CQwcPgYOm+myPpNJjk7pI11RlxT5SUbLl6+SM8VOrcHuk2NMkrRf7d/LFLtIYJ+Oe9y+Qxca6LD2jdslve9dZJnknZwkz9LsBYtZ1iLFLVPuQpZNpzDN+XqRZdjDIe9aVxOlYRMyThryuLKd0oZXy4klyXBIOXyy4WbnQM0OH6+JEhIYOCwMpDUeGZ7xDDYxXA8LxYnMRxkDvnZ/lOv4/7H4w2a6eEVkyiiTso5+1H4OdxLJLA/RjLvkOKTvpL3pbKG2KeCd6Q400lhXrNtoFWs2soJFilphrVVlEmO1zPJ+zVvEMusigyRtP5k4c46tWLvFSuXXBQjSdOWq4euLsqXp/3Zpzsuk5a60du3OdAcdpP4/EyBmfAgQMD6YWOPfp1VO6viQN620h/KO8uMJ6qGU8U/KE8MFffVPatUftyWMAxyVWFvl+ViHMA7/jrr/TFvByJ8Vs0HfXxFOaPv/arv/DG6ORZo/Oz5wdkzg8r975LCZLoM6V+6CWpvNK4en7fJcxDNXHrRST3fs2KvDMXbbJm3dwMMxW7ZctnbDSqvR4Gzd8tPQ9nIE3Z51OmlKp3/kLmUZZS7elyGrjR420D7vP9QK6BYWnZBnGbPK0xcP1iQuzpanqOzLUVIGHWRgVrpcFfcE/rOdi7du8EQNDkk4l/COwQShC4MqoIuyIYI4nhB4Jk9w6gnpDvWb+iibcuMdpA61vEPNBxx/Fo8Hq+Ng5RwsLr7MtPohPv6f+jvmPR27FJ6xDr7+amAskzfmkMV4/uMS4vuFMcDnUOqOL+ePaz20FFzTGPa0H6gE4Iif5wdKl/r9kR53YT4dCi5Tw8bzkS4vrTr+6B04YlD90bA60rj8I7j+f4n/vVfNX4QapHPgQJFi5bXntJzt2rFeTAMP4J3aeK89lX7e8g79FucUo9wh56d1uuCgdMUaYjL5bIu2EaWTlpxeHs47s+W1Tely2dgpc+39fsOsUKniGmCZxbh108Nm7WFUEbqDyPaly6zLsLOpuNih8I0at9D+0WwOxx8NbAgR+2O5GWja9Om+/5X9uqPHjPXD/5nITNQwsEEHvzk5abv2anJrD8dFzp07z/dUwogRJkK68B2f3yP1h3fhE97xDcx4cI/4YaRNnjzld/WnTp/6Ob6cA8WF93ynFcJ74Ijf9hPShvzhOf77QHEQ+1BuSK/iPSBUpI4L5fAN/vGofr//hzZv/vwUYeRAeUL5aX2HctOK411aZYa0IW98mvjf8enC7/CdVt7UceE5/ps+YG/ywEGD7e57H7C5uhwDYQziFcqMTx9+x8PFGJ89Z459O/Q736vNtp6QNz5dfF4fg1ovpt/Yxzx79hz76OP/qB92OvNOi8GFMkM54dv7XstABwoHykd6j4vLmFZaYMUznbj4ENLyTRo81EfocJgpU6amCA/xaVLnRdhh//vb774vfxTtxNDWp/j0v68tlpt3IU18efwO7+k/cBre+Y/kP6SJDyFP/Dt+x79nb3gQ/lPHpc4X/xxfRvzv+DQHK488jlcpG5zON130E496L0sZQ5l8Qxc36DpKcMnZ9YGmhjSp6zzQc0jPdwjxv3mX1nNa70La1HGh3GP5fVhMV73gBCFHroJWsFgVaaJiwuqUXDn2WN6cu3WusvaBZswh56fcOtpOXs67MouoFNGNKqtt6fottkkm5Z0Fa9razGUtKWsB7eVdYWNHf205CmyW85S2T2hNWKqvGG562xVlsx2RjpXco5N09upKsb0ZrEKtslalclV1aswUdyDEgWgG6sRJk6zHldfYVdfdaKed29Vuvu1OHf/InbIl7Zqrr9JtO7/6ZAvlkA/NeIWO33vk0cesauP2dsU1N1jlys3sqd7Pyry9Xqb1mPYbpGrOzo2fFKEs4nkfO0Ai9pbyIYps87j3wUfsh5Ej/bCIoOEwePmEEMu//5lJwIf0xIXBHdLzHeqNjwv5+OY9bZzwyy82eMjXXlZISzzl8omXav1CAsUBG3EE2sIh9wgl3w4d6uUAF+8J9BGCxZhx4/zAEd4RF+oI7SQPxP7ym3QpxfIVDh9piScteUJ7Qx7iU4fU5Xo+5ed9CLQz9XN8XMBp/Lv49PymjNSBd+SN72vSkJ73ECt+B9wQx2+I80+jRlunzt2tUaMGOvgkl8+vUF58XeQPn3g88A6h8vLrbtO2oo0peIvBs3/shDo5/AXHxg8++sgZPvm5T/qRJ/uIce3yseHaNxlCEAqpkzJJz/5fYF+icj7+5D9yptzl8fHtC7CGtvAc4mNxsbHKXuzwPoarWB2843nFihV+OxjbyYAhpA3wMDb4bNP50y+++nrs5i/BTb3UE19/aA7f7CHnTuorb7zHD05Jny7Wr6Fc4AohpS16x77o+H4hDfHAyrxavXq1LdDFIgJfdHD/WAmwkJ42xPLsxynvQ6B8yqJdC7WVkiNmSU8I8IXnkIdv3vEJ84VyqAs4yJdchGfZDwPj9vfjhASUAQwoCJ/8Z4Df582Z9ygd0APaG/KRlstZrrzuLr/QI+Au0Ma0YHUgUv0JfRXgJh+/4wPPvE8Lft4RQpp4GOPLONa/94+kQ60Z12WR5NIVmohR5rD00nx1E5kYbwbLIk/jjOl1a1DWgnKUymmbtupC+x0FLWuOQpa9QBErXLmmZS5W1TLmK2+ZpenOmDzOfpvwk4gy3tCSslVWOk3odNp2tEum5W1ivto0pA7OYfN0vNwVl12tC+NlgtYkP1BHgniQzglN/374Mb+0/JMP3rNvv/jYftWlBu+819+qVqniV+U9/uRTPvEYPGgXfG+UxPZU7942Xgx5/NDP7LOP+9u48YPsI12xx526nCLEsY5I1qTnQHmOjowfHHQ2+yg5RWqnjiPkmQDMeKSibfd95UU766wzXW9GGySOk5k40YqyyMN1gWjcYXAHjRJY1+nUKWBgYsTKjh0Gskf7h/0kLaWhDMolPR8C0j35Ro780b4cOEjlb/eJRR3Uy2lb4CBjcl7GMRqxw6fThTiJi0nGMwckcGXi0KHDHM5QB/Hgf+DAwa55cCgDccBDHZTBFYTUSTlw+LpVS8d+C0by79y5w03vAXdrdUoWecKzNyb5D2VSFid5bdKFAaEtaEgBphi8vz8kBTwwXiiTdJxgxjIC+QnEx584xWERIU9y1d6eWF9zWlOsr6mLNnBM5wbhk/tsgZFPCAGe3377za6+qoudcVpHK16smOdzWES8gSUwbN7F2qITvVQeYyGEdm10t/Gn7/upY7xnXzraW8CX41iJA1FCs+3R7WrbpLFGgJiWLVWcAeo4ZIw4rMIN7cgsQZN3jLlYO9I7LGjmvZ7u4ziPh4cyIdZ0LH1PPsqGCAsIj+PoU3AJjJRJHzD2wVesDu1dUJtnCdYHHntaF45s9vFAW0iLdWSVcESf8C6vTs7i4pILzj/Pnykb2MEh/UpZPAccAAfjrnb1cp6eOc1cYn7DOEkfxkFYAqKNKzWnKTsIC8BKmcyb32bMsLvuvd+GDRuhenf/TkMnL/mol3L5bNRpYqG9ATbeB5whkF1/8226bnR6Co44E32NTlGjzSEP+CYAMx/q4lQ62s5Ropwix+1WsctIYgwLHFLGGs0rcBmeKQcYaDP9Bpq4tjW0k4NQ+I0CQn+RFjgoq1bNCv7N+CMN2i9zkt+kOVig/lhfxca9M3y1g3chUAfPfKg3wBE/5+kL4kP9CKLA/HeG/xZpDgEaDl0vXKySVajSzqZOeNNy5CokE7Ck32zSWtbpSMAtu2zzDpkcNu/WVXyNrEqNRpYrbyHLmaeABqLM0Trjdeb0SfbpoOF+LZ04rjOfSCdhYKmKDSgGkQaAZsZmHf9neQta21ZtdTJPTmcUB+pE8oJ44p98/FHLrxtdODYRMx5XxrGvmMC1eE/1edHNIaV1Di156Hi0gD7P9BajHa/r+xr44CtZooT1fekFa9myhXW5SKcB6Yi+555/0WrWqG6ffvGVXxZ/643X+y1DDIaJYu5PPdPHfps12y/3vuPWm3SuciOfDMAFMxj63Xc6P7msboQpoWsL+/rA/3XiZB3TuMKuuuJyP7rxsSeeVprSdu1VV1rLFi3s088+1+X0M/2YwgkTJuiYyEJ2+y03+1nRwM/Zy6++3tcJZFFdMXf9NVfbcToXGsb49bffCa9mS5Yu1eSoYR98+LETmct6/MvuvvM21/57C+ZfJk5yOM/oeKr17NnDVovI9NOFDnl15u648RNswsQp9tiD99jJJ51k/VXGS6++4WcJX3n1tXbzTdfrHOrjnHA9/+LLNujrb3RbR2EbJXN+7yd7+d7rp3r3cUIKM7lQBPKczp38BKYtOvyEiUJ4v/8HNmLkT/bYw/+W8LLXHuv1pI3/+RdpGZnttltutFNOOtHTQWDos2W6y5b7hsdN0D3Bijn7zNPVTxfY5zqjeqWO5rzlxhv9uM1/P/yItWjR3OvFCvLcCy/Z47pNar4OXHnokcd1yMsOP3jirttutbp169j1N91qp55yknXS/cUQwo8l8S9ZstSuu/YaTfoYo+C+5N59nnOCuy9KZzdcc6WPAwjBm2+9Y1yWwQEvJ590gl1ySVc/gpO+4tStjz7+xO4VQ6mh25m6XtbD7rztFhc2nnz6Wffa5/zry3t0s7ZtWtvPav+Qb4Z6H6JJPfzg/VZAR1cy3par/eD6umuucsHtmWefc5wjDHS98Hy7uMtFjifG3nfDvrcHHnrEah9X3S7t3tMevP8eHwcwhGf7PG8/S9jkN9daNm3S2DXNd957X9aM731d9fh2baz7ZZfY5KnT7J4HHtI++vTW/Yqr1O6rdZ90e5935H/l1dekTWb08Tpz5my1oZVdfeUVDvOrr7+huR3Z9xqvF5zX2U7s0EGmyfckBA7WWDCN9eZ2vXDMzV/X3nS7lSqS304582x74O471R8n6/KPQcL5Czpicos1a9zQbtbcK1+unH0vXFesWNHy6ejOl1U/R4wuUN9+8uVA3Y18gV115b88zpmf6iHs1NGonF4Go6I/3v/gYzmBbtfdz1XsXxr/tWvX8ju3V69ZrbG02gapD6jzvnvu8tvI5i9YYM8Ib3PmzrNvBn1pt91xp8b0WX4vN0LtrTfdqAtQCgqvv9i7739g99x5h9M3BPgfxVQZBx1PPdlxynxmjvWSMgA8X342wPq99bbw0czpwycDPrVXXn/T6V+nM06zq/7V08umPVgeRshyNuz7ES7UfC1B+MTj26nsU6RovG/TfpthF2ssdNVY4C7xmbNm2Usvv+pwM4cu736ZXy1KOb/8OlGKxzO2ePFSa92qhdM3cMX4gdm+3refDRDdy6T52rPHpTr/vYvHcV43wgjnKkCHBnz2hZ/E1lYXsUCL6JegYFBeCFj/uLTliaefcWtX6dIlrdcjD7tA0lu4fbb3ky6QLlq82B59rJdwdamVLVfW7zb/7KvBbn248vJuPueZ76+89obTs0+kKG3VMaX3ir6dLqGWOQx/OOZBEz4lSOuKNm/dFknS+UsfaUe6JndvtGjO5OiFe5tFz/+7TfTsI2dF3bocH1WtUjkqWqZSVKhM9Sh3+abR2dc8Fz35wdToxS8W6LMwev6zudFDb4yKKjfrGlm+2lG+EnWjIqVrRQWLV43yFakc5S1aNcpbokaUu2TNKE+pmlHFGg2ho9HTzz4fSQr9S3DSUGAdOHBQ1OXiy6JTTjsz0iSRcLwvkgQWnXTq6ZEuo490LF0kzczxMmjwkKhohWqRTGeRpPVoy5YtkQZ1JOkyspxFo0GDhkRaQ3OYzrugSzTh518iTaCoePnqkSS/SOawqGmrtpGYQKQBED373PNRldrH+W9JYJE6PpLWEJ11zvnRiy+/EmkQRl0vuczLGz58RPTOu+/574sEryZqpAsQoou6Xurp+r31lscNGPBptHz58ujmW2+PmrVu77DrViOPe+/9/pEk++iRRx+PLE+JSOc/R+MnTPC4q6693n9LA4/uf/DfUddLu0UzZ86KZJqLNDGjHj2vdDjF2JU+UyRJO5ozd67nPanjGZEEkeiNvm/689x581T2pujhRx6Nrrz6mmjWrNmRpHbvH/pJjCG66pprPX7J4sUeJ2Ib3X3PfZE03WjsuHFezq+/TowkUQvn1aMfRv4YiXD6e35LC4quuPLqSITM+2PAp58pLoPDDC7pW/ApYhlddfW10dJly6Lffpvh+YcN+z4Cn5arWCQLgreFcXT5FVd6/7/51tvRiaecFokoRzfdcnsE3hgDH3z4UVSzQdNIEzx6+plnovMuuMjbRJ81bNoyeok+27s3pe5nnu0TnX3uBcLbKof9jrvvFf5XR7S1aPmqkbSfaMrUaQ7Ta3onYup5gV0alePjsst7RlrP9s81193gMDDuHNcFyvq4AvfAH+vDnx03lEEYOvS7qFbDptHqNWsiCSxRnYZNIgmP0eQpU9QH10cL1UbwRfsolzbWqNsoGjNmbLRj+45IAqCX/djjT0RTBeu1198Y/Ut9qpPiohE//BB1PLNzNGfO3Gih+rRc9TqRTMo+F6mrVbsOmgM/e58CD3NFZlvh5LwoU4HiEf0b65NM0fMvvuTw3nTLrTF8vNE30nnlkW7p0nPWaPLkyZGYgWhHtejZPs85vB998knUtGVrlfNrJMuPxk0MD8NHjPAxdv5FF0d33nWPt++y7j2jN97sp7G20ccD+Bry9TeRlj+8vtGjx3j9jCvmPLSgbLU6EeN94aJFUSfNScqVpSe64867o66XdY90zWL0guCmLNpNPxQoVSGSAObjqI/md5eLL/V5M1i0o2aDJpHON4901Wd0XOPmTg+oVEstUfW6Db290JiLNfe01OXjrEKNehHtZJxecFHXSEJTJE016v3Ms1GPf13luP7mm2+lIheKJHz5mKrXqJnjTQK8jydoWmx+mHD3vPdt67bHO9yDhgyJdEmK/549e3Yk61x0YddLoutuuCmSwBrpBjOPkyDqY7LWcY2jfz/0cDRXc/9pwUDbv1b9Ohs8euKpp6Pzzr/IcU+biGMu64z3yPKXjKAL4Jn3jL9FixZH12k8jR8/wWkYYyTwG35D/6gnV/EKPi6Zw3ffc290tWjVpMlTorKVangfgsOvRMcpd8HCReqTl31ugsPvmed6zziUUOy/L7/iX5GENsfh8Sed6jSRsRlff4DjKH3rgMOItj5wcB1fkP+ZgLSAA1WRUlWsSYcb5Fm8TtJXOmlpm23lBpkS02sNVqbnkmVry4mqjo6HzC9zMyZZHfm4Y7v9OGKozR47yQrkzmbyubQkmYuR7Dg7lwvKkTypI3/OHDZXV+Sdef5lds7ZZ7l2oXb8GRA9DSYe7iZFy0U75aB/TJtoSEh7XI3HmhF2JuoDBsxdFSVpYSKhLqQ7At8ZssjBSlKwr1nkKuZaSAPdg8s9ulkVR1nz5i+wMSOHS6rLZxpArkXMmvKr/06RslRXAV2iwN2kXrfKvkdmqTbSaE7ocLzlK17OTpP0i9Z4ijTKGXPmuBk8kzS9xi3bWrv27ayYTJHnnnO2jf5hmF94sEASt4z8dnz79lZYFyh0OusM3TCxzBYtXOTaEG1A00B7L6xD9UmTV5cvlCtX1uE4TRIxGoOYrIkRW/U6tSV1LiebQjq78bqrrVHDhta+XTsrVLaqLrNYp2v8dPlC0aIp5YBTcEs7S2jfdYEC1FPESup+4qxaQzhb1yFeKGmb8qmHgBmaUE1nAWti24nnXGjvSjJvJauCGKK0lCFWpkwZtwDE8LfX1+r5zYf6Tjihg1133TW+Xj/9N65UzOUmzzrSVksUzqczwOf7uuWVV1/nWhzWDAlVdtIJx1vx4sV0X/JN8q6v5toIJstpP49xE9Xpp51mH33wvjvSrZSJcvrCJdaubRtN79gYRDPPo4sFxusGo4mTJrrl4T5pY4yrvm+9aw/ccbNVq1rVLSJofmh2brqXdkpAs+FTMH8B15rwNbjrjtt8+YM1d8aqrVvomkPGZF+Cq6WtNWxQ38djmAtou6WKFfV3XM4xecJYmyiLBWA++vCDVrxEcdcwqJM+KqFndhugLXCVZTjykmsqa8oK0rHjKTZAtxetXbfWmujc9N5PPCZtZ7VNmjLFyuuKxhUrV7hmRb+gGZUtW9YvBQEePuoWWS0y2uP33Gb16tW1qlWr2MtaThkzdpxbYbJmyWo9/3WVtKtufvHG59Kaej0p7bt2bflsVLZnH7tPFqQvNR+TpMGW1/DLYBUrVNRFFnnsp59GWYPGzY0e4IKRorKkDNa4wYxZqFABn2/QD+Ifll/G8ZorrVu3thtvudWmTJ3q/cpcTu5CLY3FzJqY9p956gntjEn3AABAAElEQVThJ5eJePs69bo1ohWc3iVT+JmdzrGTTjzB58DdN1/n138ydrdqRwZ4LCJrGp9pP4+1zTL/oz0WKpjfx6hAcdM6N3JBY7Bc3HXn7aIJy335pWDeXLIorbFdMm1zMUcp0R/oA1a6cRMmujlZwoZdeMEpbslA26xXq4YNlnVjE0tB6n+nVRqPhUtX9itJm8hK0bp1Szur87luSehwfHs7ueMZWm9eJA12sfV/92277NJLfPwzprv1uFwWsV80hxbb1F/H+dJXhQoVRGM6W4UadZ3mbdi4wV7r957VqFndLYSsoxNmy6KHSbeYDjmSJOJzgvdYKjBf333XnT4O0MjDmCWe+Us/iblaTp08iIPsMtFMaNOLz/dxHF7Z8zJZ6b718Yvj6RNPPKWxld76yWmrVq2absESI6U4OQTOThnnF55/vtURDTutY0f7bsQEtXmJlxdfv2c6Bn+OiHkZOLkEIF36jFa9/skaCBvs4w/62JLl2iYk8+/u9DoreV8Oq16zgRUqWsKSSOuHO+6xyb+Msm+/HGz5S2WTGWS7zMeYlrV+ImabThM1komOniiQK7vN/22lHde6vT107+0ywxZ3syUd9WcD66fcvwoxwSx17wMPWi+ZbD94/x0RMtaTtjnRozyIN0S0ZMkS9tPwoV6XH+IvkwQTCGK5d90SmTmK+8Qpp7t/y5Yp7aBwnR63uEiq8Q8vWYeZJE9KGOvTcsKC2DHhAvSYTWMDIEaoSsjMTGAto4oYEAOPkE3CAnkQIMB55YrlfQIALwS/UJnKvt7FGmj7E1o6HonLpSvumrRs42tNmNmsaHk3t3Fr0j5RHCYJiOabScvAf+6Fl/2GnhYyvXPLTbQvBpvpsJPChWLwgKM6VSvEPNSBS8KX2J8zM8oJ/cMECzBD4JiM0la0Bvis1ahWVURUxNQhgEin99uVYEq1K5U3aVUO1xYJQOu36KQy3ZSEcxvlP/lUbytdurSbnckPAZ2htTRMUwXEvOrVrW2lqpR2uOj741s3l8ltuK0XoeooU/EUeWF+9vmXYpJT3JxLnwz49HN7/5MBdtLxbeWTICErY2E3hZcWU+l03gUm7c8ddc495QQnsOQJk/fMM87w6xRffaOfff79WHvv+cdccIrUvxBO+oL0MLoVcohh3Z5+Iz/vk8RY6AM+4OwzMZv3Pxxgp5zYLkZA5B9BoN8sRzEXHCkz1O+R+oNzHmnat2vr3tCY/vsPGWGP33q1LxMgcFIfAeE3k8zjftSqnsnXuEXbFIc3mCKCFg4zmPTwrM6g+dmqeVP5bmgcJ59LvUfwQgApB7MhwQmp+ltDx8dMaH8xCWcwCwg1acqULettwD9D2rffrhTwStq16zfKvLjRy2X8Uz5t3iKTMlcUjh41VkfPbneB5XqZ1VWocLjfy3nb9m1WXeOM8aqG+01ezGHgCWMUeHcrD2mAoW+/fvbTmPHC/fHuk8GaPIFxzHKDl6VnxhV+HNAFlitat2qpo3G32m8SJqUVuyD7o4QDhGSEdwIMmtugWF+cJdPuE089o9vWMlqLpk18Xspi44LLGad3tMtvuNWkGdqIH8fYM70edoVBmri376dRusdcZVWWcMKyWEyAELIV6McaVSp4eTxTP2Z38AqsOOoxxli3JuTgpifhA8EJIZnbxQIjjY0B0R8xwoZ1ajneGGMr1SfcXDZ4yDfe7/9++FGrULGCj9+8wgs3ctXQ1aijx4yx/v0/suvvfUT3QZ/gy2CBxtGXKf2gPmVdO3v2rH4H+bgJE7RcldOX73LpopsmjRvbk5rbk0VLvxg0xF56rrfj8JexU6yhls4GDf7axwZwlC9f3gXUyrWOs4KFYvMGh7nCJQq68uWN/hv+HDGmy8DlftQMmbJao9YX2oKl23QJ+k1WrqouLrf0Vrio1ivL6GxmnSbFEZDpxGCXLJhpXwz+wnLl0QTFWzmd9r7KBZp9vumEnEjEN5MGZf7suslo6gxr0q69vdT7QV30XVnMjOPwAss6MOaYmBBnJnjvZ/u4VHmitEe8NpFEJ2rdlLBq1UpbrvXKSpUqphAw8hbVAR5oSkM0qLinlnxMSJkfrXb9RlqjrujSVcF8utKQCa3AwMVhgVBA0imBdcf69Y8Ts1jpsDCoXVBRGwnAyIQh4BHJMwGGyJVsIQ6YuDsVxoT28G6/vlrveMiZKsxpzaLZkvZ1FaEmzLBvB7tzDMR+kSS7sT+OkAZVWg4NG6xKUa27qwymJ3hk8nM/K21gwssMrrZVsn8/cJ+0hg3W7+13ldBBsgrl5WSTEqT9Kw8EmZBJMG3UpRYq1NtAWcAM/AgcOOuQlDXOE7R296rWW3pe3j1F0yUdTixTFyy1AX1f8PVptEPWz1kz5+7ZulpXw5pAP8yX9ksfIBAAOwTojrvvs9Yifvffd4/3zTXX3uXxEJoTT2hvjzz2pDSUBlZFDnS0//Jrb/abdspIaIKYXSULgExUPlZg0Ja02tei6NPLul5kL778uojVLrtB2nRGtRfCRd1I2LNnz/J7kNEIBg0erDW0U51JN6xfT1vCJlvnszs5gWHNqro0Pq4QhOjQB94P4FKMC1hZS0OTRSNs0riR7k3+UouOOM1onAiHVSqV9jyOeJAqPIcAoYKQzZgx09c1337zDbtR69YN1W5wSXkxQSsmqCxZtd7Tkx848ogg802g/ypJo4XIss6JlzqaB3CP+OHHFEbCmF29WlcSql7gp3zyejESEGVelHaGY5PW7LSuX7FCOb8GE0/kbGLswEsZ5cuXdS941hvB6/gJP1tVCV9cecn8wVIFowC+kiVLujfuJRd3kcBcUFaMBQ5Pvjx5VbcEZ41rAuXyIQ8w8WGexQeERa5MRNDVcobG/v0aXwusXNmyWt9+zrf0kZ8xypxMwY8KwRmSsGbNGut4Rifdz91E1qUzxeirORPLJ6184I/jXVjnek/aX1D3HDNvXu/7ps+h1+QngsPZ5xK0mAPgl/X5i88+05qKGTOmatSo4e2tUKG84T/Qo9slfr3n7Nlz3KKCME8+8A98OXQFJW0loPHznsA7foOjfHnz+TusYJUqVjQ0+iHfDpPFh/XnAh6HFaGimClOZR/2f9fXfLlutF6VipqXNdzKh5Pn/PkLrLz6dbPmN34O4Hzu3HmutT79VC/5edxgTVp1sFYtWsiCcqo7tYEPGD3CADCXFb7nzV5sp5x8gtWqUVNXwy51J6yi6v/s2bK730/fN/uJlpV0ixDCRIOmdaxO7Zqi0Zc4DZg3f6HaUt5pLQoD4ygWdJWkhAv68O8KR4zp0gAQtjdJFx2I8XY6p5tt2pbJbriBy9Z3WcOWZ8q8UlgDXQRFRGX9xvU2Yexw27JikRXIm1mX3O/SABThlHknU0YxGREzTD2+P3bqWLuo2zV2923XWbUqlVx7DAP+jxBHOiYzUh3S/SknnyTT1qvOWHA6el1OSww+HEZgqNw7y4CkU5jYEOJh33/pGgNOSxBrHJTeFrNjiw9OEZgnJ4z5MUXi15S2H6UdbxZTwHx72x132SU9r7K7brnBt4RAZDBdMbl9Oqi+RYvl0FS9ujdnni6Lr5H8W8DYD8O+tV233+pxSO8/jZATizSnMJBeeuU1lyZvuus+u//Bh9y8W61qNdP6lhjM487wcbjQmo07FCxbvsxmTRrneAE/tLdylcp2rTQEGAFm3/Zt29rb731gjQcNtpFy8Bj1w/d2kRydcPSYN22iO38BELj9VhLn7Tff4PChDfbo0V1af1l3OMJEChEAt40aNXT8ZxFhw5Hhnvvud+LG5edDh4m5KWzZvCWGxw3LXMLFs/wl9RfmMDSCF3r9W+ayc+0VvcMcN2TY9/bFxx+40EE9TF6cvnAk0tqUzHE/S7PRfcfyvCTUqVXLpk/+RY5MHay0+hZnqRXzZ1i9Sy9ypx6WHyrVbmijR492c/pr/d72fNu1nYQAEYCQ/TptugtRvAN/YTx+/uVA+2n0OLvr9pvkEf6T5sH5LmWf27mzsVyAdI8g9fijj/h2Fog1gkkICCN4uYPX4jIRV6/XyH7QVqv5IrBvvPWOJ4Ph09b4PmSchIDmOvLnSS74jJdpFLPtZ3K6gzC3PeEUd0Kh/ND3CGmrlq2Rg9pTdv111wg+9engLwXDy14kGuzokcOcgNaThnfffb1kpjtZFoh59slH/d38CYNlaeHX8aPtySeftksuvlgm+iopdeB499bHn7qmJYzZk70eNa2ven/hzIcGFfDY5cILpS2erLTlXYu8Q2MfRpRFuGI+7tIYvFZj+Z6777AOWj7p9/Z7drfGUvu2bdwZ8qqe3VxgXC5rCBou5S7QnMLyFAJ4DgyId5oGbi2Z9stYF6IqlC/vSeVT4ELEfb36SC/Y5cIWgh33KIfAEtR8la9SnLEN/OJTX+7h9qf8+Ya7sxKm9+qlS9gTwg0Cz8Cvh4rm6T4m9QM04sHHetuQwUNsgqw/3wweaHVlCg20q88zTzudoM+qVK5kF11wvp0uM2nt2vWcASGU9uj+Lwl5n7t2R18QUEwGfvuTt59nTNVYeICTBi9aslRC6TrXkLUWbR3Ovtg+eP0Zd9LbKRw3atDQlYZb77jTel51nd1z+y02Q3OQwC4NaOrNN1xrZ55xuuMMHN4sRzHoJP05VbikqsVLlzg9eefdd51+rFqyTAyytk2bOk3CSWO3PGEdYEzTRtp+6aXn2K2332WXSsjFAQttuYYEGOqEBl9z1ZX2Zr+3nP5iHbpbsJ115hnexzDvW7V8gACMdWLiuFFeL3BT/uwpP0sglOf43xQyPKAQ6mbe4kmbQRLRoQYGCo2GmGCCadWmjW1K0rtsZSSZ15b2ukdbDvbZglnT5N33hRXJLa9PabmZM2orgphfpsw6x1mnUm3fmWRLZ0+w3QXkldbrEbv6istEyEulSLh/BT4mHRMMz8N27Y/3NQwG5A033OgDBiJ3uQbVA3ff7mtYdD7tCESJiX7GGWc5M1gqqYu1g/s1yfEEpmzIXfPmzd3EQ7vlw2ANZQapIk2RNTrWxSqULSMzzFLXpNGY0XCCZEdbShQr4nEQLjx8mUho4gySBhr8VfWc1yXSyFq0auUS9GStSeXKm1/rnc1931xneemiSWAKYh2xUYP60DfX3lg3Qhvg0nsmZZs2bQVvJWf8wIGW0KJFS1srSR1pt0H9+hJACrgGSt4uXbr6Wiprno2bNNU6Y2U3iwJf02ZNROQquzci5TdXORulTWPecZOqcIREz1aDesfV961Px2ltjzXqXTpEZYkmf7t2baxr165OuJGu66vNlYQ/LAXlypa1qtVrOCFrKTw3atxEa7rLvGxMiaVKlnQ8eT9nzGisPeXKpW1lYlSNRNB69uzpjAaGh6BTp249NwHiKY65r1adOq7VoknBtNsJn6y/43V5oRj8WZ06aeyV8XV51lLHTxgvM2BjXy9npvgYUBvp+1o1a/ra3fTfZjqDwbOXeunXk0462fdZJiVpX/Z991nzZk2d0PhYUznAgjWA8YIGl19+AE1FYGBKCIBdLhSxlfma8YgQ07xlKyfCMY0lxviDBN+0fl2PwzrAWJwpQohfAV6pFcqXc82deuk/lh5O6tBa66ubHM6SJUuobR1cQ0arJbRs1drXlhGijqtfSwLQHKslzeLaa6+1UiVK+jJMTpXT4YQTZPLdqnKKuImSOmAsMNjTpbmg1aAN3nHnnd4H4A4v1moS9opJyAAe+uXUjie42XK7mOadd97l/UMcOK4vuoIJu5D6i7nYonkzQRjZGmlhZ53e0T10wQnbhiprLLM0w7itqHHBGjd1whCx5PA+FhA+TWOrsY87cNymbTsJFnPcPHvLdVfaie3b+TjILrMpWpSPH7UP4bdZE+3IyJXTPtHSBOOlo4T76mIUE2QeHS5rwEkndNByRTsXAjjgovslXa2hLF+MVTTICmVL2aw5s+24evV8vJIXT+rPJMTdcfvtGivNfAnmqd7PuQaJ8nBWpzPdYsT2rVtvvVnacFNXFmgfeIfhnNiupZcPjPixoJVihqaxxdRHWInwB6mi+dysQR3NmXnCSXGZf2+UgF5CdDOzBM0aok9FXbnAc/riSy7VnCvhtI25d8KJJ2nr1Arx13R2v6wDjF+UA+Yp5SM4g8vZs+c4zbv7ntudFrMUMf7XyVZPdJl1fvqXD8tzzFsYrJzQrLnaxa4GtHgCu0+Yw+zgwA+FdXbmJ2MPSwhz4MEHH3D8Q+saN23mMOSUhkv5wAU9DdYgcHUMwj5p/RnEW35Ipw6CZ3iAWWyTNIgmeriBYnEwyqQBtlTbXpau3G7rdhawRVr72LZ1vfXt+6rNHtZX1WDa2KgPYPAb23tOa9imvHXpfKImW3Mxr4peFuatQ0UQ8GDqYDLCZEA+z5T35VdfaTuJth3I/MH6DB2Vuh6IMWIbEpJrqCovmE5DuZgZKZtOJz3Mm7JCPDBQLg4hDMr4EGPWsX2f4Tflp1VWgBuN/SeZKd98/TXVJ61Z5VMnHwJwMtloK+UACx/eU0aAF5iI5z1p+VAWuAp5KY/ftI/3lEM9lE++0NbwHMoJsMTjn9/kp07g4Dngm/LJA/7AE2vtpKEOTG9YCYgLeaiHdoSQup5QLunAJ2OSs8GpJ5iFvezkZ9LzzHfIS9nAi0UDrbN7t8tk+v3VjqtbV6ZOTm2KTdr4uqmP9oV6KIt+JU0I8Rou74ijbZTHndIEYEFgETCk0Ce2Xk559EN8H5KeMngPziifdJSB+R2TZWp8kSek4TcWFEAM+UmfVnmhfdQHZFgICNRFCPVQDoJ853Mv0Hagc6X1XeiwkAmNnboCXuLxAR5CAD6EDtKCBuIg8I5bzcfY8ktsfyxpwQn1h3lE35Envi+8j1VBgJu6whwgPWkDDJTp7dQ3MIIP3vE7Ht8IeTBQTJ9YcvARwWGO5ZbHH3nEhQB3xEoeL6EM6qXMUEfA7dDvhrk/wPfDh1ttWWg4LOa6m26x8+Uw2e2yS72PKAPLCWMktJu2UBZtZD7GcBcTCpUsZWwF/NCOMG8DDLQfPMS3L345LOAS2MGT56NefSgv4BKrC2Mq9HGAjfip06ZZL/lkPCxGjSDA/mHaEV9nwAU0IdASxhQfnoERHPBJgSO5jHg4SEf60M74vMB0DELKJfZHjenSCDpAGFTnax1BD1zvt3WnNrgvWGZfDxpky5fM19GRW93MkkWSe/4CckYqW15eZjWsUoUyckbK42ssdEYYDBR5qIEy+NDhBDqUTmBtEGKGZMW7tAL5COQNaehoQupyeUeaMBhCXlLHSokROtKFgMBDceSJz0t8/DNl8Yymg5fnTJlQ2LcL4QmHVsTDRf7UZaYFb4CR9KlDiIsvl9/hOTV89DlxtDWkocxQDr89PhmnPBOI5z2f1GWmFRfL9fs6QjkhLjyHcnmOLzut53g4+R3r80iHoTxv3343XHstr3ev5QO1IeQJ5ZAuvh5+0/TArD0y+U/qPOE5pIkvO/wOceGb9/Fxob0hPsATnvmGcMegjL2Nz/9H5ZEjlJm6LuYXBBriWv+4uu59DzEkhHlI+YRQBr/jy4mHhbiQnt/kiX/mN+/i3/M7tI/fhJAnPPtL/aHe1HCFOGVya0TqvGHukk7bZow96Zg8BZ0017p2ebfL3DoBU4yvj3KoK5RHfrebCR3gDR8BnPrefu99aWU5BFvkyzMXnn+uW6xgHKG8UBZlhMC7+Pehnvg8pOU5pA1x4T3fKfn4nfxMupA2vq9IH/8+4DI+DeUhZHDYBkIPjnLEx4cAjzPh5IhQboiLh4Ek8XXwHNKH9wd6Ju0xCMeG6YaGhE7DbE3DhXOfBHwjPXnQexBMPAOObwYVEzZ0XCjvSH/H6oudtHSky06U98/BAJYWxgrLIEzkMK7/OS1MtORwMADNglahVfFhrMBceAcd+ysB2oj5lRC0NE6F81O89C41k/KE/x/9Ye6grQZ8/X8E+qGCmsJ0j6gj1YGgYTAS9iImJWt0MSkfJhvzKgsEjG+Ybew5Nog981H8Q32EAOfhVgXsR6qsg8FCHXz+VyfgscLDwXB0JONYbwXff5WAHg4Mh4rDQ813OLAeKC+wBMGZ3//UQNsYGzBaF8z0HN4drM2kSU0vIJlsI2SHAWbiYDplrvOJT59W/oPVdzTigIEQD9fB6iHdkaa7B6vvfynumDDd0GBnvTH+q8EZ03C9q+IGXei08B3yHs3vI1kXZSHhMjHCQDxasFN+vGnraNVzKOUeSzwA35EmPGmVF5jtkRgvaZWfGs8wKuoK9aaOj3+OLy/g/s/kiy/jaPwGLuYDHzS2/wshMJOwTpu6H/5sX0mk9nEdygN39G3q8YfGeCTpTTx8f7a/6N8/O1ZDmanbEd4fi+9DaeORguvwPaYOERIQzm0XazZusXnLddKOQpCGD7HIvz0b8gSOPqwRM9EOZ1AxKPj8URAa/ycD7d/M9h99H4sQJv2RqIt+o7zUgfeH06ehPMqAUB4skCZ2YIt8Hv5gHHh5yfDyG+bGQfh/lO9g9R+JOOqH8eDIw8leMIb/C4E+oN3sb2drEs/xgb4P72J9teWgfUXa8Ikvh9+sVbM1MZ4xp07zV58Z+3+FFgMbfjcc9MJv8h5oPjIm/u5xCT4OBN9fxdWhpP/bmG5gJzru2fYcA8KcVmfHd36ID98BmeE5/jvE8c378O2e2kuW+uUGTLh4CTTk98TJ+cK7+DLCb0xKfELZqdOGcuK/49OEctLKHx+XVnwo80DlhfjU36SHsNLuNWvW+skxbMcKEn98eanz8hwfH37HpwvvwneI45kJHxx0wnu+iYsP8XnD7/Ad0uHwwt7LtJhESHug71AG36nThDgIJMQYK0UI8WmpF3PilKlTdFi7Lr8Q04KQpQUP+Slvs+CFgDNmuPf5ldded0ectPLF18XvtELqNKnTxcfH5w/vgRVYFujwkrvuvc/ue+Ch38ET0qWVN8Sl/iZt/LuD5Q1x8enD7xDHd3jHd3yIf586LqQ7UBrWYocPH2En61IGjjINDCykp+9DX83UkYl9XnjR95fiWQ/e4usLecJ3fN3MMwT83s8+51vcYCSp85M+5PXvUEDq93HtZx8yB5CkFX5XVnIe6h35449+5SJb6jhQpv8HH/q4DOOPfIQ/Q9dImVY98e+8sOQ/8e9DPVSX1vuQj21tadGLEH80v/82phsa5ZJRKkkwxB3Jb05HCUwslMu6C4OCzoExQOj4MIh4x7oz7xncvOc3nxCAnTJDGXxzZdZjD//bJxHPlBXKpZwQ+M2H/KFMvnGt53v6bzP8XlTgoAzSUQ4wpw4MMAJxXlccTMBIeaENxMfD4fnkXR7yhbbznnz+PhknvDtQAIYAJ+XDuHo99rCfDgMMfNifSHmp+yGUST4+oV7SkY8Q8BDgIQ0EBnxxBN8T8o7l1LH4rQnkpQwc9ELgNiPyUh5jYn95sa1L5B+lgzE+//xLzxuPD8qIwRfrN/ISzye0K8BL2tAO4shHnZTPublc8M1eUd7Tjvi0jBsC+1k/GvC556Md8fggPpTH0YwvvvSyE3Lq3yCBjyPy0IJCvuApnRYeKSs+UAbw4LQT8EMbCeQPeI1vM++BG/zSJtrJsw7dtz3a9nXj9deorNipTaFMYIsvk/rIy3u++QS8hLaHZ77jQ3hP2aHP6HbehzKJ43cIabYjOTKt8kI+vtPCI/0InBxXefVNt9n1V/a0NrpRB2sPcew44MQzbhwL21k44emJV/rFxkByH8fjOowtYE/dZuDn6s5Hn+/rAk2AObQ/wAtM5Of793Nh//yO9Z2sEtJY+zz/onE6FX0I3PEhNTzMLOBguxQ3IoFzznLWxS8pYwW4KAvcT9fZ+RwxG3DPuwAb7wi+1ZTxp09oNzGhHfF9SPqQDvoS2o7gQ7r4ONJSBgd7cHPX6tVr0mwj6Y5m2D8Cj2YtBytbkzWZZxws1WHFcewc5jbMXBwQwABjMK0S0ulUtgohMXKGKNubOMyAQwG2b9/pzJMBs2LFcl2vl8Oy63cuHQBBQMOAMHK4AOUQGDAFy1X1wccgwkSomy98kpUsWcrPN6Vu7p5k8/ou7cfkEAY2qKMdc5A+B8s/+NBjdkWPbjqJpYYP3iVLko9C0yHpXOEWPxmClyPMh0sW8mjDOAc9MOBoM4JAlsxZVP46Z4KlSpXyDf+UwSCFWXFoPYe7c9A77whI5OCE9pcsyUb5GKPzyFR/gAHpfcmSJZ4epqvbSXxygQeIFGcm65YjwVbED72INz3TJ2zyZ98Kexk5bYqDNbiMgcAEokz2ynKyEMdoslme9nHUYa9HH7b2OsSDAwo4W5ryIGxcEsBFDFghgGHDhk2+nYOTxzjtbMXKRbp0Y4cOAojhZK1O6IF4gO9WOiWHM1txoCKgmW7erPs4hZ9NagfbHcro3GfwyIUNeXLn8XbRXuBFW+aQDY4i5Kxl4GKbBCeZTRThOfP0jn5YAweKgGs29jOOOFiCwEXq5XTYPQfmc/ADx37SD7SNtlAPJvxp06ZbP50exgH8tUTYiS9dsrjXz/ik38AXfcRdufQTB91zoH4JlZdb4zf0BWWCZzQdiBh3z9IppbSPkrFNPIH3jFUOu+AAGNqLhkTZ/HZzsvqRE7HO1nGIbAuBIYMrrlvjvlmOWM2fP5+XST9yYE0mzT8uz8iZM4fKiTFW0nO5AWOac3m5xJ1DLcJhCfQHY5zD8bOr/cwl8AgsGzasdbzrxiXTDUp+6AiHRBAkCqr/BYvGfyGNM8Yb4o7jFXqgMUA59B3EGhyF9tNGxtdC4RF8AQ/jDBzAcPLoIAZOXeLAkMCgiWN/d69HH/f7kmupbPqmfpXyfsbxBh3EwUEipTUW6UPqoGwOR4E+cRgHY4UdH+r+WFB3NK1dSW1NMt3o4zDS18ANvOCGMYDFibwcQEIb+NAHyzQnoV/Az3Ifp749eP+9OliiquORfiBtoBWUCZ65wxm8UCYB/IB7wsk6uKNdu7YOP23n8gnGPXO3zwuvWDcdDMIhKwgAwIfQyCEXHHpBXWyVArecv79s6XIfX4UKFvC+2io8FNG44ZzoABNjArqXXcdS0g5wytwDVvBIXGbRP+YOe/+5s7rXow9Zy+ZN/YAf2kgAVgIwHNWgilLCoV7tJyKYcj3Tn/2tSR3t1jVs8/8fe2cCf3Px/f+pFKVFtmT9fOz7vmcnSwjZ9yVbiIRUCNkqJdoXSVnLllKytSAVUdm3LFFJuy1R3f/red6fuW73j+hH9e1z5+Hj3vt+z5yZOXPmzMyZmfPauy+0ZstOg1hSxztrOn+WnwTd6icEjlCydPEGccYDoc+EsucvIri8NQZXV7NO/VBxQbUluyY+NGjw0JAcqRtkXN36DQX1dkeo+g03hoYOHxnqLCg4IPoIQm6hlQwySgIgn/a/BbB5gtwCyg6YrCaCgqtYtXroxgYNBRXWXDQ3GzTXsJGjQh1FCyg+INGEmBGqVqtO6Ebl59xVgq+7W7Brh4wvz46fYOUqp7g5ChQzmDApFOOVBNRgzJYKOqx0hSoGR5a/aEmDuoKfEuhQ81ZtDNKtUrWaVt7BQ+4NSckbjBZwffmLlrYyUhe5xTR6wBU2bNIiRP3zFCoR6tGzt+AMvzGoNvL0fOe7OkhIHTg0TPxJmSl7SOglguDrESpbvkpIM1ujRx1y5C8aatyshUGcCcfVaEHHt5FMUgYv2KFTl1DOAkWMD/I/bLwG9m7osBGhktdVCMm3baiWYBnVeULrN2wI1b6xfihbrjyhCoIu0x1Jg7lThxP03O5QPvECCDACZW0vuDeZ4wxasO8dd4ZyFSgaypanYKhV63YhmWUFBTcxlDlb7lCR4qWs7YBOk+KzPymuUG/JQiNBmSEP8Ev+vEOjHxoTSplFEJbxuQ0Wj7yEoRwqrfpTtopVqoe69+xlcHdzXplr6a4TPF3p8pUNGk6TslBt1amGoCULlyhrbQ9P3pj/prVN81ZtQ9dVqGrpFgq2j7b37f7a628I6q5SqEDhoqFS4s0S8fWdd94V7GC5UNsOHUPFSpezdMDHEYAcvHvAPaFMOfOHipQqG6rfqKnVWxNI4xtx6BM3CZ6wq+ARgXyLV9z7Rz9kMkPewMJdkT5rqMr1kifBWwIhRxDiT6ihZBwowLKVqoY6C4YxR54CoQJFihs0GxB3QEbG5y5oclpI8IPAEBJox+Zqg/aduirPdqFZc+aEWgniskmLVtZGRcWX8c89Lz7eFroobUZ7vnXrNkuL7GfOBc2moZJlKxpMJTCTmsQahGe//neFKqgP0l59BI0Jb6nH7DlzQ3kKlggJeScUL0i/mbNnG9QisJg1atcTrQqhi9JkDg0bMcqgP5EDYC/5BDZxwKDBBtuJPAJ1+dmOHaE10gnIXMHCxUL5ChUPTXxhkvrKUblj/z30oWAIr82aK1SsZOlQEcEtyrVlaNny5ZL1oqYLgEWkjEBTkgd9asSo+0MZsuexPlOpWg2TedqKOvCpAVnydb0gKruZvMbnKhAacu8wS8v7xUuWhLLlLWqQi1oTGv/pG0A2VheUZf2bGoWSSucNHzXKyt+hY2fBqmaWvFUK3SE4QyAs6d/80f/vGjAwVKBY6VCjps1D5avWkC5aZm1Av6MM1FPOQUL97xxgdfhE8IyFBDsI3CV1G3nf/ZLdnw0WsX7DxoIqvVN6QX390jQmuxBbINhAeAGc38Vpsyhts9CkKVNDN6qs7uLUod6397P2IC9gBEtcVylUzmALLw09IlhVTVxCixcvCTWS/urQsYv1M/KGF1oUhKpUrxXKmSe/1XGk4CupG/LAJ3zXIiis37yeOwefYWg/Rvdw+C8Oul45weyiJcuYwqDCDHSFJQyatQkrc6AJkw4kGD4lDQS2KAMW3+8eMEj4kHulGAKMWpQL4eGHxwlztqspI+27aQL6ezDoXpzWcCMZSOULOaQVgWHNMlAgkDRsfwk0tMGl1CxQWLh3hO4UDigBHMhUUuLbt38WWi0FSDyegXs59N7hoXoSPs3kbPD2He8a4fc+9sSTJjxypm9pwPqko5Be0GkhwVmFtN9iv9eq09GhsgoP9dHHnlAnPhKST2l7J9O2lMWLofTZ8tngpBVq6PEnnjKBRTjhaaQQUgaPbQnmLzwFBzajlIXVQdinlAHlqJW/sIXHh1LH5TL+Qs8PutNfetniMUCAD3yzBl8BeJsiBDMYGihnynq3MDZRyLQZfJafIlNqTDSg5xVFr959Q7f16WvKYOfOnUZDq40QeWXKUSC0Q4pSZqYQCuC+B0ZbvcBL7d2nn/GOunoZYuBv0LiJDaQM0AyKlAnFyARr0D2DLR28QaGCtUtZmKRl1sA1XcoUXoG52lKYq+C8Ut7uPXraxAglu379+lD5ytVDW7duEy5o0FbIKnmDadru5k6Gp4sM+XqCD1teSooyIYNCtLFyIWsMDqOk6MAX1j6W5H56COxVZJsy36DJ5v2qN+Xy7UAbUq8HxHvq/p4mZvz+SDIIv/hO/eDxZClDfmuVbpNPvoP/igyAhdqwaQvjNXJNn+K9wCQsvwnPTwzSij87Etrmttv7mpwJds/ePSJeaYVkE2HSgvVqmM6pMoWYwMgqoj41UUp5isk+PCDe28L9pY8ULlbS+gv0mWDyTpYRk0u+M2GgvZ6XvAvqMfTlV1+ZUr9n8BDDGl65MsCelicyqmA8YtBicuYuThVCpmSJMOzpdjd3NJ6QT97Cxa2c8tltPPQyNF8yky1vEWsrBg15nbIygbOtFZlN4spogkWZ3hDuLWUUQpnpD/oUeNpMxpEb+o68VFmcQSoveYCBSxr6kCxfNhGkjbRSVpsFEz7SjH9uQih3keKGFSy/3ta/kbFdWiykictruOK0LzIBXeQDmRx4zxCVfZvlLfhRm2DxTv7RbeJAnR4Wfm/nrt1N3oYOG6a+eo/xbpn6PwuKz3bsDIE1TDmRbSZjTNTQidBiIsY7dBD4u+g7fsNXebEKf0d/gY3LQMv3txJ0Gxi+6BrSPC+c7G/Uv+XzOlRPfZzFBn1MUDQhIR9Ze5EWPHVty9gnvIK/kTruHHwPD7r/+J6uGHNeA6YCNaSZjG+UI3x1eDNjYQLq3b2rmWUmTJth5po35R/WHOSrRLs/l9kxwRXfTQ0aWHpMIpppm/syNZT22+bITWVFM7HgolB2iaAuKS4VIovMq/LD21TIIEuWvOWefXa8mdVwwI4p6Be5wBugAyY15JMVX6OYePAnqwHFTIbfCS0IcyCu0rSa0OdG97rAB/bJzDh34VIzGVE3zDOYUL/esdFVLC8oP5mkcA7e5ZZuhm7j3U3WrVvbTDrAm2XJU8jMPYAA7Nj4qe2JvjpvnhPAupVfHU9oJnndl59tl3edJwwbtlnTxmZukrI3M4x6kcWlDHzXQO+63dpTzsoLycST3tzU/XQ48DzEHk7N2vXkz7mome9r31BLe1HHZObZZOX3GwxAxF1fq445hMdECG9oJ0xjIO2MESQi/nIxD+Jm7+Wpk82P8xXaHgBUAz5iViNIMRovmjVp5MaOn2ImLFB7atVtIO9AWczElDt7Fpl6l7slcrMnxeLeSkDMwUTNNgPmS0xu4brKVHXg4GG54Wtk5ciRI7vlBdYvZq1qAmVYof1aTGn4xi0lP74CN3cTJgIdedTMxLQX5bzoootl2rrSzKXvfbjKtRCYxNUysYF8NPXFCeYWD3MroaJ8bWPChd47769SWQ+b2YxyYdaDHuW8XDB7yKDJotJVkmxi/kVG3xEIA+brdevXuWuvSWPAG4uWLHGHfj4iB/VbzHxJ2XxdBeJmCEnsQ+JDvXXb9m6tzNhsNxBkyXFzBSghBWq/f5KrQ9xMEpA1ZIC07JtfeUVggty0eZPTCsn8JZNXWfmeJkgpmhzwnf6SMWNGqUt+4fO5vPnWLlWyhEuZOYf8kBeT7+hs7q4ubW0rA9kBqjNH9uxu4ouT3LTpL1m6w3LBiIjqRqvxNj4uTjCPhVz5ytfbdo9WpYp3hfk0ZvukgZz2D793iG1xPDN1lpl5waddKfkjaNA2czXmSmRLg7EbMug2tVNmbTddIRCCpm7h28utXwLV+KtM69QbfGICfKVvWlsluVjgK4HZFnMyoYF8auOfG+g6zKVsNWG6zle4uJ0BWLAQAJUD7oUZr+jQoNDAVA6CBjl3rbazagixC37Dh9bt2quOn7statd9AmLAtK5JsczP1Nnpc7vF2/zxR+6JJ592m2VSbi4vV36bIF2qFGaSR7YI9HEN8LaV0qlDB+3Lrnea4OvcyUbp1uPWdyJlh3rSD5GG5JcC7/eLmd3ZS9WmlczKwdacrA9mhmZLC5kBXhO4RbbdNGkRyEwV6wf4uAdvuYzAEej/NevWc19qu4/98cXvrZYp+bDBV66XPiFs27ZdrkYDvtIH2CICbGXurBm2NXWFyeOF1gbU8e2333VNW7Z1ffvf6WTFEprXa9ZWJ/qCkT1n//3ze7rnrCqnJgTztAQwpKBxjzxmCDIvvzbfdenc0Rp4/64ttn/F/iv7WJMmT5WiKWwDQ74iJbUvE/hjZu/rJoEKDB15v7tGHSRN6pQG4+aVXLgERwL/rGs+/tjd2LSNa9e8oTm3L6pOz8EHG2SkEAAAYKBBSKtqD6R8uSq2z/KDBA9/0AwOP/40z8UL/5H9DwbkMqVKmkJnf5kOR/B3nhFWAlB77LVotmadIleh4oFC1jt0WYa0qZVWvlVVFgJ7lih4kEGmTXtJTtizSrFl1enZ1W6BAKMfHveYk3nHjX3oQdvzJQ2dkMmMDbr6zWDsBzy0HXviyeWaksA7BkoUFm2By8rLkl1ie6IWIUHB4joPbF34QSC+urztwYLrmVx7L8GzYI+XOKRhD9hCoPOD7/of/mTPkd1VLFHIybRnBzjq3lDD2pjTiykS9qMOHTzkWrdsaXupKDP8xVIGk5swNX1R2ck/uQZjAvV3aeMUN+A7B9msLdRWWgW7PgMGu67tW5v7w5zZ4nWwKSingYpoQkVA5kLaK0bxU17isM8JL6lbtZp1TUaJawO2+Pq7yuEDZaQc5qkoof4MCrKqhNuDMw14M+I57caBJvI6prw7t29n+7oXqjzQCiZRUA8g7vhGvih02pErcYSLNXDAN/a0J6u/sE/PfuB1laoaf6FFu1A3X28mNkwswm2oPWoC5fKyfEmCzPDsorTZwrIAj0vJPWwSpflNih5caehSH62W3NNCg+rSvq0BdSTPkM3qgrSDLObPBUCTvUCrA/VIo/MdqjfP4Td/QGIe1j4/jv7hD3I8VX0CAALiwR8CPtjZwzQZUV1pP/Kjz9G3COgFX69wOj2zw0wJbUX6gsXLKO+gr7CnzWQMXpN/GgF+IJPs61cTtGmzJk0sXwbroJ+E3JWCu8SfuA9Mvn6X7HAoyl2S3PYzf/75F0PkmaFJIBPaDOkz2P7y4iVvuxEPjHG5c2bTwccRapuL3D5hF/s2QtIoI/uk27Z/5m7r3c/FZ42TO8/qdg4ByFDiUJ2EKolHgf9l+FmkSGHXt2oVmxwzWQD4gvMT4Avny53TfN1TbtqJGwi0jRbLLi5ThmAhIv2IrLEogYe0d4BIpTZAfx08anUHHILJMqemWVhoe0z44VXCB0/t3MvVmaw92Nd1LsBxJu8c0hF9evdQXOkk0WGvOrKtiXMuQ9DzzyXFfykthJ/V25WahY7V6bwGgnbjcAczz+o31DFn5GCdAhrNjA8UIASNU58IIA2OcgOdIpMOI9wzdJhmzoVtpoug+E5F9XPnyGQCwQqqavlSbuDddxkM3DbNNFFgkmIp0iT6LrqijxJm1de8ZVObtfcXYgirGmgycwWRCTirdjqAUKBAfpdKh8FSJACf0yFAaSFs1syW8JUco4++/z5Bq+U2OLQjR4+FOxHvqY+ShZURq7TWLZvLuXpV+b++2g40LFiwSKufA67v7b3dg/ePcjOmTbXTfhyEkpnHOhydHr6iRArIIfs0zcJZCTG0YFG4QFCNemWIRLNnTHfM3KnTylWrBKe3xRBgSO95x6d1DgqpwG8UB2ggwKGNE45tcLDHuTVatcblLBBggSb0dhQT/CAdf3RQlPytOkXKRGmZyg2EGCtYDqWw0q9RvZprI/iwjBkz2CET6sQfykQmpXDZghLJiK1JmUhbUC7uKilLBjUCg2HKq68ynrwwabJrflM941+unDndsrc+DNMCl1emPFtVcbAla1xmg4uEF5w8HjJshFaQOwwtyuoSVmcaCsnfcgv+4z2H5Fav22z07KmecWiJd8HvYJKEYge5SSZDg8RrpTZnYsfBPHBKyZ9gg4L7wZQyv1nNPvPUE4bUwmEmArIFWlapUiVcOtXBH2xBeYKWZHkrewYRPykCW/bZp5+0wzvQQDESmGQwOLsrM4d5Sfp0V4qWr4N4C1az/dR/xGciIBOou6VrZ9e9UwfXtUsnWyUf/uIz67fQps5hGvqNfLEKMqSdbz435Bv6JJaaBx962Hh+U5PG6l9XGrIN1rHUOsSDxcDLO/HRA6+9Pt8O7CBz+FzOqcGIVToKG9znoLCU4kTAgrJ571fhtoLXYPgycBHUZQQ6c8QGkMw6RPfOkg9NZuF1Nk3ckBc/QSM+g+SWdWtkEfqIn4Yf/eTjj9qiABQxd+xbl5H+3aq5qySLCYdGmYQsWrzY4O7u6Hu7e3DUMPfcM0+5/bIoQfsq4Zdz6JJ6UT7Pv/fff9/t2vO5G3rPAANiYDXuV9y0OXyhHsRPIvmjP+zZu8c1aNjEsIXRJaCXEQ8dhHXG0yYvcMJ9fuhekQn+JPFMjgjEJz08xvKYPV+cDsBdLWtGE1vtMziDKkWftJU6RBJCKskTAd3rLkxmCxzyzZYtq6te7XqzKGFdQ059X0hIek4/EsVKl4ZiBYJCKCcYug6a3c8WvihmIMzAd93RVya4SjKXbJaSP+pefXeF27h8iTF63WrhziotQoISZqDGPDpl0gvusbFj7DkC4APfN3+yyoQOIe/fr6+Lz5JZK1adhhS+JyYRBhLM0wfUASibxl0bCKZNmeR+OnTEFEUSPezTu5dWv9c57S+6vGWrubu6t3ejRgw3fFnMbKRF6WCemTp9urupRXc37O6NbrlMsR27dNMss4gQnQ67PVvW2gBEGVFWy99+zx3ufdhODE7WKqFVi+Yy7XyqgX+zKZhigt/DJASc2LDhI9xOlblR0xYuPi5OpshNViawam+oWdOqjYBWq1JJ10Nmu9YdOrnr9f2TtevdVzu3W13BC9VhNNf65s6ufu2absCosW78c88b9J2tFo1KgP+5XydXfeB08DyZjwhVNVuerll6vzsHKF0WmQIf1qx5hq0KWBHq0I6r3rCVe+rBYYarSceENkoW89RhzfQrlM1js3zo3aA2fPWNBa6tyltQE5mHRt9v9wvBMc6RI7trLzBsZtQ9b+1u8GSkoYN+uHaja5mw7YCbvp/2bDXlxXsAJxa+MU/t8pQDP7d1z/4aEC926zYxGToQnjAUk5m9Xe+B7iaZWscKV3nAXf3NbMrqhtUEuKfI5AatmhYtXGX5Gn1NIlZ/sMyUmVcl8J5BL40UT+OWbd2EJx+3FdaH6zYFA5kSIpObPl5p8lJH9X5xykuueeu2rliRQu7BB+6XNWORbUlQPwLKUvuObqJWsJyIXbhYWMptOEmfxyap4x59zCwzdw0Y5KbNmusa168teMlyCfVfEs4XDbxz996w7OXXdosONblbe/eVkqvsRuuqzDPadmHlY1sbBz5XWVmFBBaML7avs7Lzm4np8tUbEiZVWuDIUnHJd8FVFB3yck8/N9FOt67WVgaBAYHwzuIF7tidARY1v9dv3WEnnWvkyu0eHPOwa9iuk+vauqkGknvcQ7rKwwT01m5dTR9sVLtxCvZTfb768hTr6/AInt8k7NalWq31vK2vzN/phVv9lFv45lT13aS2Wlr9/vJwu5EvAVMsUH4Nry8nnORy7q35M20g/2DZ2+G4tNX61SvN2gJUX8MmtSUnLVyt6tWEwTzcTJ9hrG2j+au7Kn1W2yIYcu9w247RYUUzUzNB0r6+q6+y9unX3y3TFkPRQvllnStppup6N9Z1993/gG1d6cCR3exgtdi9cwfhJdfRtZoxrmvnTrb4oPyYvnd996OePyRZukiWsA3CNj5mkzj0EGhyyCWTuq/3fWOLC6wqc2a97LQsMfm7WjqvV8/uas/j7gttd/jA7yWSQ/hLP1j5yXqJTzCBpq25VSACeu808Osmh0zwLI7uHzbY8L+1ly1Z3WV9vlLFCrZVt3TJm2FZBAf8u91bpNeOmw4fMKCHIx732du1aW161Ms/ZUK3nq9wXlGGTldouncSDWR7v/nB/Xj4Z5c70zVhoT5duv/LOwZOGmu7FBsQXFwRQHHSkFyh2L59m82iwJxkxspRd1ZnzIRYEROYPWHC6Np/kPts9QqbpWOOJDAT5o4eAytg08zWWMHu2r0rWFEoPzpx1qxZdZdtj+XFbPSbb741UG5WmlU0+LNynjxlis3CWWGgzHWwRFcbvnPpZfqgfOSFkPDHdwRVh0jMGQHH7w3XNU1qO9rPHg7mJDBzmThQ/9SauWNGwRzGCplrTVgBUKzMhDGzbN26zVZcXIXIJbzL9JpwfKP94+49e7v2bVrZ1QA6GwLKIMcqVIc+jBe5cuW0iQV4m5SHvRodRNN+p2beeobigD+2p5VQhz3qTEc0y8e0zTuwNFn50VZct2FPcv2G9VYHVmzwkZkxPGDfClBsroRh0qJM0MYEyJWEOCm5eS8+ZYMtPEA5sirXaXJzPsFeEe3sJ1cMNrwHUJu9NvJgEGd1BiYr1zrYBuB+It/Tpk1te8+koe7Ep83Yj4Yu+TEIURdPB2D6QtpyYDKDnNBO7PWxikL5Q4v94Rw5stsKRIfiDN4NmYEeCpp6khfXMWhH3mEF+UrXanIk8I0V/R69B0+WlYAO0hjQOHvD2WVJoe4MJPzBZ51edp173ObG3DdcA6ZMyhrsiwj7GHxf+INS3SKnDuBDs1+GPLJVokNIdm6B8lI+LA3IGitZsKFJy1W5DRs22LU4TNPsYWN5oK/tkCONOFt5p7R6sy8ZHx9nbUqZaWPfr1h9M1lFBtgrXLd2nQ2m5E2g3dlXJi8+kXf4zv7l1cKlZpVEX2Sw50pS+mvT2+qd1TPx6Pfbt2+3vpVfkzKwZ48fP4HqkyRJEsnjV3afnj5Eu2LRIKADuKuaU78xT8NXH+ABbcV91ThhbDOJ5zeYs6wy0U/Um20R+h083aQycjUMOaKt/EqPT669sZpMcVUKWX/WaA/5UuvDmJCpB3/UEVnCIkZb0UfoA+x97ti5w+Q5T+48asMUJk/I9adr14q/Fwqjt7TlR/mRM9qT63G0KW3FdUPKxXVFthuwgOzcudOsHZhrddpf+/QNbcBGHp57/nnVd6+7+847bICOj483HiOjOjxpfOD6HNfR4Al85vwAaeEv9UEvIcdYK5iMsa1BewHLCpYvK11oIS9YCmlTzr1wfY/fyBtXxXSC2yw0TEJ8/ezL+fkvDHiQqAZdhAZlTkPSeDSkn9Eg8D7QSRhMiEd8BjTScvdw0cLFrmPHPjqw8ZSZTCI7FHGi05iyTSDMe/KDNs9Jyx+zuGsz5nF33dndNdFBEoTu0SeecmUkDJjOMJFxR9MHyhOdL505Mi/qRzzKw0TB19fHQ2FTDjpuZDqek87H83mieNkX/EQr4snTprm+vXvbIE5cr/ihQzqCrys8Jm/Mnf7eJe/Jmzp4/hPfp0eJBb9xPKK7zAlxqQfl9YF4PvCOvElHfF8mzIaTp0yzycLTTz5mSo73BJ+fp+HzJQ/oESg7fwRokkZXw2wFH+at6ggCEWl4Bv3AsUpAwxIn/Ieyi+QtKzsmbSgGH+ALZSEvyuLr72WX39QzMhCX8tF+jO7IS3Q62or3J6s3tMiXQZdDQqVKlXQ7duy0QY93Xi74jlmQe88+0Mb8RdYfWr6ekWl9HXxayhTIR+AMwcuL70eedjQvcCxC4CxCNE2ekz+06dfQhw784bcvj8+D+ATPHx8veBrQgpc89yGQzxPyznMvP56urkSa1cCn8Z+2RSFZpYz8eZnx373Oodyct+CMhg++TX1Z4DF8Jy3fCXz35SUevPPB8yJSxnmHHDKpoF6R/IROpKxF6kmeQ584pCF/5JvyQN/jC4/SarpWzRo2GWFlWUyWp9t63mppiE/weUKLtPDE85M8yYe4fPI7so6RZaJtsZDB45P1Hd/GvozkTT5/Q0icgy6MRVC8gNKAPvDMB57zR1wvWAgBB6MmvjDJTGvVr69mihIhjqTj00R2AE/Xf/LO58d30nNKmdOgX2uFgkmmSOGCMmPfYM4WEJTI4MsX+Yzv0PTljozjn/MsMl70b1/XyOeWIOE/L8T89IIf+d7XPfKZL0f0O8+fyLg+jn93qt8+jY/Hbx/Xl52y0gHHyGTIZzPt+bCChpc+DmZUJfTkwkqLB759fPl9pEheRuZJPP+bcvnvPp3/9GWOpu9/E8/n6Wn4NNG/PU0+fXpfN+KeKp2n49NHxkNZ7dDK4vU33pTZrr45pIBnxImkDQ1f51OV15fLv+e3z/tUaX3cyHg+Ls98WX19+e3j+vrw6ekQz3/neeTv6HTR8YhPiHwePAn+j07vy+af+9+Rafju5Q66BOL7uNFp/W/iRsazhAn/+TrxnhBdXs+r6Heneu7zFCGzJBnRhP8i0/jnkW3Adx+HPrhWFogZs2abpYuBjj3dOrVv0Cr+CpuoEofg84ymxTtPz/OI35F19O+J659H0uP5qX77+MQ5zyHxDrr/F8bS6P6PmTMNea4CMz2CFyjy4fTjrwjYucrkHNChXAgqA9n/QqBTs1Lg8AwTpFj4Mw5olSzrAodN4FekQvuzYA6ZdgAAQABJREFUlLH3MQ5Ec+Bkei2RylV40D1hs4zm1n/wtx8kGTT+SkAB8Qeds6XxZ2n8Cgy6xD1dWU/37lT1Ots0xD9ZHRlsecfg+3eEU5UjOu9TxaO8vszR9fETnOjn0bT/jb9PVd9TlZX4hD+va7AX/qvMfH8e91S5/W8+P1MenWm8U3Hh/5r+ZHSh+W9srxN6jdVmsOKk/P/Gsp6Mr+fj2d+jOc9Hyf8CTWZdfub1F5KHk5ytwDDEY1o53UDlaUZ2SP8snHHCF0zd0DubcDZ1J19v9onOgzpE7wlGxzlXvynHn/GNvCgT8U7FL+Kc7B2Hbagn7072nnR/Z6DtffufLl/Keqr2OVW6s2l/aPwb+HGqupyv5/D0TPrV2fIyul3PNr2v76lkg7ayfqLPf1vwcpQw5ztlX/M8irYdhp97Aqpg5DP/Pbrep3oeHe+f+J1oBl0aH1QJTgp7QfhbGK5+wClaTijiHOD/mjfpOR3Jac4zpcWgxEk+6v9naXjPytDPUCN5xDsO/XAS1h8Iinx/Tr8rL8xQe/boRPNp+EbdcBqCU3jK/Wf182Uk3QYBJcjlm9IFB2149k8GJlM4gThdoH6s0M+G/9SLU+fcDT5T/pyuDLxDqZ3LcK7pnW3Z4AunmZGjwAJycgrGS/UlTpKfKS8ZzGlbAmlIezbpfUmgES2j0GOrCzCRn3WV7UzL5Gn+Wz6ZyHNOhHu/kbLABIXnTCp4Tv2Im1TPfBriRAbicGqcdP9GfvyzWiaSU+f5OwKLNxb5jA3nROeKDPymYfnDK4oPwe/gnY/j3/nfPp1/7tNcpGP3HOsfMnS43cHEcxDvfPDx/Gfkc575P/+cDrxs+TL3wouTTDnwPLIMkeX270iDJ5jZr7zyhzSeps+DQQsBXrpsueupu5RcX+A39HkHD/d/s9/10V1Zjt/TEXhH8DRO9xmZny+z/4x8R150PlBQ7h0x0q5BUQ5o+/h8ZzJDGT7T9Z6Ro0aHXRmSPrIcnjafHGKhs3IN4+auPdwe1eOpZ8a7l16eaYM8nTQyD+icLvh8TpbGv/Of0OG7j+s/PX1Txgn3lIlH8HHwvsQzlO7Klat07/JOu+YFX6Lr69OSnu/EWbBgke5RBzCBp6sj8aP/oEOIfI4sQNeubKmv8M4HH8+nCdchoX+dLB60oEnZSO/TRNLy6cJ0T1LWIO3Jy+PpRtIhH/7gK24NHxg9xk6zcmqevuTL4T8p47zX57tX5CrQB//Of/rn/pM7+VxR4T3pOVg0+5Uz00OR9edKHn3SgtjNO5xtIDd3DRhsV7h8n/Rl4ZNwsrpH0vbxI5/5dJHPPJ3IT8tA/3katCH1RO94Gv6d//RpOOXPM/TT9Jdm2BUkZAH6pOcqp/ximxvYYOB1bunS5W7s2HFqq4eU5mW7DkV+pKEdWTC8KXmHJt8jJyo+f19+X46/8zPRDLow9Ysvv7D7Wn6GFHlNg/f85o8ZEjMlAo1Dg3KVgud8Igw8R7j8c9J5YeEd3+2ZBgWuy+Bf9+eoFZuP52nw6ZUO6bkqZLO6iCP/lImVLlB8SRNmc3g4okxWTl2lgIYPlJl3P+g+HXc+cfjAM8rm8yId0FfQQUC5k5wpUwY7TIOQUhZfb9LMfmmqXRPwefBJHK43BLwLZqHQJR+ud3Bnj0CdKU9knT0/eed5DT0O9KwQ37hGwB1X8oaeLz8TGAIOTT769FO78hAdB/5Bl2D0lTdXsp58+lk5dajj4nRXlHt7KeRJirQEnwf5BB39xIBiERL+8+Ulj6CegfxQB/jGJ96ivLyRjMlEdN3heRLJyHNyZciVLPKNLstlajd4QrhMrgy5o4irQnhH3j4P0pJvdPjxxx905e1rm3RE88jXkXJAx9Pi07+jruTv68md6ZdmzLQVFi4ZI/MkHXED/vyxrYnHcwLy7cvOHe7Zr8y1e+U+H9/OkWlIR/k5ZX2p8iEOf6ShrEH5ApknbmS5PT2eE3jnn5GeFeM63ev1ihmrA21FfdiK8Mr7hx++N8uRtXFYlhVHcaPLCv05c1+zCT/vaa89e/baQOn5TBzqRHn49PJBXaBH2QhjH3lcd/G3WZk5XRnEB8LymJs+ZaL1E9Kf6F9BmXgGHehG5kO+PCeQl/FCz3ybh+VBfOUd4QTtQBeSnnIQAt4HfGLiLjAX45nP2/ioMkCXNL788P255ye6FvJfzT1q4vv+IxADd3P7dua4hrznL1jgKleuaN7kcOTxiLzU9bitt7UH7+EVd+PxfY4TIyyb6AnoEaiH1VM6ifL+E+H/753/RCn+hjxp4GRSXJI6KbZPzDybWZ6iuGzOOwQBhxVcJEcwcQWGRxeUISbIzXIGwIVrHAxkzZbVOiHCwuz4s+2f2YXzfPny2qVt6JFGiDg2a8YxReYM1wbCllBX4iDcDACb5KCBy9vZs2XXZf946+RcvMesyslbLn7j7NsLOMoAwdmufFmx4bwhny69Q4uL/lwi9x2HMuAMgEvzRzXrW/PJx1aPuLg4qwsdgTSHtRoXI2SG/MbcQOJxhzwQZBxbcKWJMl+ggTBv8dLq8ycGdvgF/u0xebGizEKY0cX23HKIkFYz1A9M4HH44P3uMvtEye6RSzlzSqB3l0gB0wZ4n6FOXLRPocv68VkyGceYEZM/DkBwzIA3MfzhgotLWa7UwEl6yoJj9y3iKYNB3jx5zdkHpmrPc0EyuqeffNy8LeG4o4w87TCQoci5bI9jDJxmoKTgKy5BaWto+wAt2oNL/QfluIC8t8m5CgN4gfwF7EoE71itM6HZtWungUHA740aWHfpWg5OG/LkkatOPVux4gOzMOAzN3XqVCaX5I8jgs2btxhd5At3hDgluEH3HnF2wt3xb7XSgR9r164z/9Q4RmHiRBl94DQy5WXQJyA7KDjcN+YR//HuA++RcRz1U39SF5CzARxLYCEI5GCDZPuAXCC+ofJnsCsgOCe4VGUFDxXlRnltYiCnITjSWLt2vRzE7LaJAv2NehFvr7BS6W+sBCfJM9qNtWuLj0E747gAnqVKldrct5KGFT18pi12yYEEdUF2fz76sysq72s851of/YHrYV5+WR0KOUvm44Pia06HUwrffkJaMnmj3XCcn0ZtDdvgFX0YWflSfRF3mTjmoF/RJ7irDE+5E/qp+L5r9y7zrEXf82WljtTvrbfesn68TAMR7Y2TiuPHf7M+tUsOQXAWk1vOZ6BLHU3GxUP8pyN/lyW/1L3//ocC51gmeU9lbYYeQm6oB65kU2bJHZZPPN4hC/TDjGqD/JIbVsPwKqccTuAjnHvltFsK6Yb08mi2S/IIj+gDyBnOTLw+uVI40eg5PMsxgQaEZI+cf2QRH7NlzWbloa7oMRy+wK85c1937du2NH4hN8gEz9FvyAD8xekPgTqQH+Gj1R8pn2LWdpR5zZqP7TlyimVr/vz5cs7Tyw0bOsT4VUcyI3hNc32Lvqaff6TyNW3eUvEDYAqPT4x3Ohy6rFdd6MnoePogPP87w0VDFHyGCBtK5yI14t8RME0dEFD8UV3KTn3V5WGhOR9501k/+OBDN3XWHEM1+VwKv23r1q6ckHnwioMTBbwPZZCQ0uHHPvaU/NNWNsF/9rnn3X0PjjEfn03llzV33nwCqC5gyBYVK1R26dRwQ+8f447/fMScCtDwDyj+oJGj9exnU1A7NHDWFzIOnnB4T+dFGQgWzk17eZZ512nesZcrkj+XeWuirA2atXGrVn1kSq5K5UqmcOANnfL5F6eYIIMa07tXT6F1VLUOUVA+kGvXruPi4+OMfrasBVy5CmVMyPrce5+76PdfzSxJ3cuUvc4GaAbGFh26uglTphsYAv6VB907yjVp2EAd4ncr44PjnpDT9R/dzNlz5Epvp+vYpoUpNxQdHQin8LVr1XZffv2tUJXeNtMOK6uXZr7inp4wyX33zddyFVnFOtikyVNcw5tvddkzpXND73tQV6OO6cJ8MSmiY+4R+cXuO/Be99vxozLhve42bN4qVJ+GhvK0eMlbrmyZWi7NNSncE8/Is83nO82f7HfyEzvn1XmudYtmtoqo2aCJuzzZxe699993o1Xum26sbb5scQXKTHjVqlXuwouTmacclMWwEaNUhuNyF1nU5KBYldou1eWXullz5jpBK1qbeqB3P/CiKFDqtE+JEqXdN1r9oKRHPjjOHRbiTvny5cw5QM2bmpvS/VyDRLnrrnNvvPmmq9u2i8ue8Vo3/IExssn9ZgoXYInF8lcNGtFBTTiK6T4jHq2KFsEf9uUalF5ygjB0VSUHeBcqWrSK69b9Zhs8S5Qo7g4c+tmt1gDR93Yh32SJtzJ7ZUL7APgAMD2IRW8rH5xfZNUkDz/as2TqrFShnDsqRxM5i5V3e3fvsLxxYZrkkmQO2WOiNFzg6zNmzpaWdG7cw2Pc6NGjNXHL6rp072m+igsWzG/xhAVtTurxyPTQw2Ndi863u8J5s7sR9z8sOfxdA3VRO1/Qqn1H3UvfZ1sVTHj797vdZIptoGrXt3Bpr7nSdek/2F15SRJDiWFQCiaBP7k7B97j7lGf27/vS3fniDHu55++d++rjgsWvSXHLb1cCTmWYfLB5PXuQYPdYsnkL3KC0KxdT1e+TDGT+x07droOnW8RXz+V29K1aptF1sdr165l/UWQl27IyAfkOe8CW23lK1DQXIaueP8DU9RlS5cx9J4Wnbu7rLIMtWzdQ3KWzNwsouDpG8uXvyc5nueOHRXSjiak6Br2jZ8aP9H0DINZr549XIObGhqakqAGHahQuTUgzJu/wOSroOqxRAP30vfes4ntL78cN/3jJxV4gxo95hl3S8fWdq//scefdLfffa9ARZK4mzu0d6VUTtq2dOnSrrX6PZMjwRsaelRLAX2Qvni1G51c6IgHC938RYul+6qYF6x8ZYXKtH2LDbQVK5Y3C1Gv/ve4nNmyuDsGDpOP6WQ28RIcpCtbp7HLlDal+RFnYtOjW1dbfT/y2OMCVXhIA3oSuVxs4woXKWr8l/o3ncY5kUXq2zly59GCaJ25Z2RCCSrYsxMnuYqVKmsBlMb6zwdq4+Xif8mEgTmdPIXVrFHdvGoxnjDp73l7P/Mlz8Qf3d24UQObCO3evcd1vbW39P9+m1i3bN7ctWjR0iac9BXft9Gx5yH8rn54kXT/uyjBcJBSCh04dPhc4wielN7fBWKvAyeWvypr4M7xOfMZfqpcLQqfdESosoDdNcM1rE/wOTVLNAzZqgI6fnnGDMPXTHFtNvsOo+QezcDrtb8SukCYntpbNbxXza5YGAhP96OQBjH7Dsi9TD8hQY7Z7/fee9/i6sCG8RxsTdJoxWG/AXHnN7QBvOY7gOGHhO/o6yHlFxJ8mb0TqIDwLo+E7hEo/QDhy4LpC3D4QOG6EgRVKOzOggaeDrYq9KTc7B3A6xemzWw4mx4vFfBs+CQIwVDR0hWEPXnAQKJJp8HFwKGnTptmdDQgGB2tZAxb83Fhx8r4FOI5+MEFhdVZQyDZYHqC6ytv9sLG3G14uNAD75TgMVbXCt9Xe5VG+wPxT0gtoSkJeWkSZG2Wu1AJ47cGStEM4gKSDZ+LC3Acvr04aXKoQNES1oYaBA3MWorXcDPlecb4NWjwUGF+jrO2IE5PYXlOF0+RA7BsH3jwIeMD7UJZkQsCdfXtwHcCGJ/EkQN5+7106TL7rdV4SG727PuTTz9j6TwWKBiqBCkQew9+rRR06GZhM0+TDBC0KhHY9g2hp5RWCiGMVavJWGiz8GAz5C5geLX8Jn9NZEL0KXBlje/CaEZWKCf8AsN3qPB4heQSAjcZzFLoaoVj6d9Re4CnCq3Rqj/1BGDdpcgY2rFjZ0grX3sn39AULyRf2qH+wn9GRrpI5mbMnBmW7VuE3as9cuFEfy8M4ZdDcsVoaeAR9MFIBU+1WJlyVmbKmDJzLoHIz7F6O3e18RyegGNLGvkGNx5RJ8oJNio4xOShCbPFefa5CUYPbNquKhN06Z/Z8hU0zFb0G9jR1wnwXFaIkBynCBy+rOFZawIc6tq9R6i68FkPHjgYbldkTwsRtcOzobhc+QyPdazwYuV/2PK+qVHT0Nhxj1j9tos3tD8yhazBQ3g/fNR9hpUtD1UWD71DnYivVb5hKz80Zqy1l/xgGy4sEbVKtnhavVtd6jdsaji5vNPgYs/4rlWkTHVphRO7wbB3oY1swT/kolS5ioYh3KFjp9Cz458jieEgV69Vx2SoW49eoREjR4W0+jXMXNK/uWCB4S3zXRMnq7escUZPK1qjQRvmUT/XJMLq17vPHfZcLi6t3HKFaZi10KAOBPnaFixSesMBpny/mL79MdS0RWvDA0eWwEwmgGs9QJi99wwZpr+hxkvBUAp7uq3Rbyo8bfoqOgc66C708NUZc4R0zsNwmDNky2NY5NB7TXQpi1a7Fh/9uXPnTvH9l3C/9v37PHyG8XQTjXlZzNYs8bhWQ03NbyizoqpVK7vnJk3TTHuv+etltTt02AiZCw+4zds+s71T/M0+NHKg63P3YPfusvfkqL2quTRjphjSygw/tfgSVSORhfmQxVRcvko185nLQYea1au7gsVKy6QWmDGYrUtIzKx1e99+5pqQtMzMCZh1MKUkSxcvdKESBiVnpmat1gmYcZu30oxRfnuBzCt3XRlDTiIOeKR33D3Idb/lFpspAjBwdYLPZwmwIcpAA1PR7/s/t5mh5JBHMmEHflYlvDKPXm4zdSkGpw7hmLnCMzzKEIAkjAzHxdt2Hdqbb1fJtysoS0ChggXNXy/mpPxFcwenx8Ubl/Ral1cmTeIVKqSV+Y31zQzHvlmOfIWVV5xmnRc6VhLps+W1fNmP3vzpKsPc/OKLr9z32qMksGfDKhSzJAGM1hTaH7q5yy2utFY7jeRVCV+s8Bu+0waYUTNmTG+zbBXBAigm8G/Zhx/LP2u8G3X/g7ZXzEtWsATKy1/kjBheXR2fWyuY3BYHh/ZVqtcy/7M48ieU1wqXVck+eRsjwA8Cq0RwaqUsA9+7MhdKR9s7TNNvLVwgE1guh0N/ZILAKXRopRCKDTXWwOlyFSxmK2v25ItptX6/Vtvsa+GDOfAKHuyD0mbsbxUtWlgrsBXuLq0Wsbb4wKqfUK5cOcsjPj7eXX5ZMlstZpNv4eJlypv5Fvlb8u4yd2vXTiIsedSKDkuSD8gJrvVSpLjKXSen/QvkOvXp8RPMvHmNeAXPMAFvEwAIjupxq/n951sMDSfAuT0oJKqPzI83bUXAVIqpG/6T6Xff/+haN29mfTl16lQWh/fwoKh8b2P5wLSPL/AWjRraVpGKJYtQJXdrj24yp+62ft9I2yhsMVD++jfeKF6PUW8IyQXmDqPJPvMFOjSFn+LvDx42ncD2zgFByrGn2L5da9f2ltvsJHzlihW1l1jDeKcBxeTEeGoywyE+DsPJPaX0Rs/bbjdTK7JEn9q6Ffzsi6xfvrt0qetzx52yLAVtzqlq/LFzNkQErFwBH+yr/XdBquSmMzhU6JKl0d7nQq36F7t9X+0TRvhmM+dXqFBeFqiFrpH4wYqxg5CLKN88tU/1SuUNZQl4PQKuabGMyNCulWeAGY5by3LlrhNC0Vu24t0vS1ZKbUWwisbn8RRZytCLHyUgHgE/+vW+/UZv9pxX3etauePP2h340gBVfD+iXQ7IugM2MaA0mNHRHXPmznN39+9rW3tYBwi5c+V0jz/ysOsniw7m7AlaCU+ZPtNNnjjezOgLVefLLg62mNAJB4/8bPvB8Bh92bJNW9exa3dDLWvUoL78pme29jDif9N/iWrQpZF9Z+A7ivgSCTL7M4AYdLh9oHv5mbEmQAe1/8MBBTpj40aNZHoubPskt/cfaEoIJ9kpZFopoD0XwAAwv1Wt8raZnwCM/u3X4LQp7UgnQzmqF1qz0mGgi6mTk80J/cg6ABEYcOgMlYQDi+D4MgfvAucFmFvYfyGgSBn0SANiziVJL7YTkpiuOnfqaIMWplXq6wOKjxDkFXL5ipXxr8xZOWhEFBcFg+JjT49A57eQUJfgR/A/TsipG+VNcpEAu9WBfLBBUfRsT/GX74webfCr+MQeFCZQ3m374uswP6DzvcymKHYPkF4gf17blzuqfTxQjvLr97atOlwi15lsjbDfOXniBBvI2EOrUfcmN2/2S+YYnzZiv62oXGyu+fhTG2QxA1I1WsaqdOQbl0cmQPbQ8etbafES2x+kHuyT0o6UywfS/bBTZRbvCQzqIEoBaYfydumyBcT1jrwsjhSvfSoN1538/jvl4wwBIRjEfhO+cB4bbFCAAJXnyZPb9l2TaG+dAqPEM6VPF8YlRXFTD8vbKmTkrF04uASvH5df79eEsDR04N0uRcoU7tmZr5nswIcM2fMaj0hFXVNfhTL/TZOwqzQ4FHZAFmaLi3PdOnVwjRs2FN8CV4GYPCkz+6Kbtmxz1atfb2bwxpqwlS5RTAq+rZmRX542xdqSPbzcAtx4UiDqQAtyq6Ck+hQK112R0iAsAQMA4QtkpKzxcTZYUz/qxn4mPCYgyxdck83Kwm8c9dOotA3yC7oPsmbypq0sAm1hkwNNIHhOYFAJ5CyI667OYBM3Bruy2vfv1qWzmW9pf+rKxLiKtkyWzp9r5vgXtW2yes0aN2jAXXZIx/q86NIvbU9dfQJhgM9pUqcxOaI+0GIipZW5G61tqVUyq97Zt7ftk69YucbaDvlCH/lDVdbGouPDJaon9aBe6a5N6YrLv7GBtChOSy00ANAoeWEJ98orr7lFi5a4uW8ucbd272ay9/lWTfq6dJT5uZQ7InmsqsNLOXJk18HPnzVZLiZeB3oGuMuGLdq4ahXLaWuupU0iO3S7TeW/QOcCchka0+MCt6ePsWUFoAwTNEKZ0iXteWktIjp1aG/vaLdAzoO+Rx1BT3t13hu6obFc+uNSA+T4WOZ/DrYyKWaSBhACoCb8AcWXOks+mwxmzJjBvbNsmStRpIChyMHn6uVK2bYiVyyZ6D0oyFPAJj5YuVK6o4AmHx9Iroua/vZy4Hl6vj5PTE/PVw7/IroMTqNGDLNZrsxitj9VokhBl0YroVXak+hzcwtBWtW2gzEvTHjOwOvZP3t43KM2g27TqqVAv1vZwYlUml3nzZZVe2kH7YAM+KzcxaVT5NEBnxVL37LZJCvgNzW73CC4Pzo5gU6Ios2n2eFTTzxms1xW4e+tWGHvQbHxANgIQqQwMKjxBw0fWB1doI4LfBUIIp2k4HpqNh9SWtBPCKy4H3zgPtvPRTEuXrLYla1QRQd0GEgCIPiE4pnC0jaDDYQ5smd3b7w6R/tP60wwZQI2ejZ42rfgv8gyUV4Dl08oI+/QNCgrVoJSbzo4tMLovbfiPbdkwXybvHCowf34le2xMQC9/+GH7ujXO1W+3+3AVOXrcZr+gxRyPu1bZlY77rQJB8oXaDA6sEzBhm16vSwSbVu3cts2fOK+0lUL3lEOPjNmzOSeeelVu5fJYE9ZOdTBYZoGjZsZAg6HtLJnz2rYrxdJoe3Zs1cgFy8ZYhGTNKuTasI7DbvW6VEia7SvuubD5TZQo1Ddvr3BIKBY6a5Jp/+d7dMRlz3a2TNfsoGUvBlkgFgEcYeDTUC0faOVLWXhYBBoK5SXydb3fvUteuxH+0C5qMsFEQqZd8gLIAUo9qeem+jaS2leL1QrlKz7do+VkcHsgCAQNYPw5Ny3Bw7bZIjDSkuXrXCVK1ZwdXU2gZUDK1zkJ2t8vM4tvG6rI5n73VuL5puCBa1m5XvvGnQkdfCrRwZF2pF3VTVogWGdLVtWWx2zksmeJb2t8sCr5jCeTIDWNuFC6QsDmm8DBv6QzhL4YPWQ/DLQcUgOOEzOQbBi5NpcvZsau3iVOVu27O7eh59Qn/hcCF7fa297rvgA40KG9OR++MIGdvbMmQzt+3qfDabwlwNFHBAC5hC6zZs1tTMFi4WryyTVJgdqC/oCB6KADd0n6wN9jX5G+X3fpq+jN0BLWqABsU2rZq5SpQrW9hs/WWlxmWTEC3cZ+QLZh8lyZPjlq/2mX/JokrZv5xbrb1iz6PccjmMgzJI5i2jEuV597hLWcx0bhEDm0XaAxcmZI7udL2B/HZ6io/b/EKy2yQu5XPfR+zpl3Mz2ZDm09qstKH63g5GZNfmrrokhsJlMpAiZdMqekEz8KlWyhE0KsEDQD/8YBGgg6wgoWWmkW1u1bGH43kwW0NUA2bNoaNupu7vzrgF2XuLQ4UOmy93hr20QX/3RGoPW5LzBE48+4p58/BH34OgH3CuzZ5oljb34l2fMsr1t4Pzic+Y1NCjKEalj/1iuc/8r0ax06aAoyF69+xgAPZ1sj8x9zz35qJkn6wpcoMttfQV1tVvm2BSuYrXqMtF9Yx0miWaPRavc4JrUrOzWaxb/4MhhBoI+YtgQV7lmUzdPzuE3btvlbm7Z2BRBIR1mGqMDJCj+pi1bu0wZMroSMs2FlYQ6DIMKJy7B9OzQpYfLnzeX2yjaS5a8ZSazozp4ccogvRBecRIpoROzIqGzg4NLqKH8Oe3KaohO3v3WXu6pZ8fLBLTFfaEDLONVd47NH9NgzazdB9QOM2Zm1nRi7sNVq1pXmLoNdJI3pSt1XSUb5Hx8//kHGiICHQvSMsc1MWCVxelFDsp06zfQDiq9++FqA5HgCgwDg/aGXU2dzG3QqKmZX7UfZTNcJhP3Dr7Htby5q5urmfDmXXtdk7o1zArBauiQVsQoc+iUqt7AzVMcDogMuGeIme1RbHQs8oiPj3NZ0lxlg3slHVqBZ3R4VhuDhG3LYYu3lzVQZz+kFUNBKZGaBr2HsgF7FsWlBrSqYbK9Jmsuq8vMWXPclBmvGUYspjLtNVmcQMGEXJzSsaLrdcdA+1z64Ro34fmJdoqciFWrVtFBp/JSEFvcs089Jviz/q5pm5vdG8pz/7c/CA+4pJCt6pmVwCwAJBKTfzkWrN74STikFToy4eUteIqZ/JCZ+8eNvs81aHeLmR8BNS9ZtoJW5z9a/INHhCpDYgUU7yEGYX0ySeAADqa8Tz5d5/ZIkefT6mbwoAE2eE+Y/JK7UYNZxQrlXIUq1d1PP/5kaDJg7t7So5cmSZls4Lw2ex6HslRjWB7TX54lBX21rY7btmxqB3+eeXSsDm/VcC/PnOPeWb3RDe7d+Q9KmpQektOIGKlgC8B+678fDhwyLFXa9+5B97imrdu73JpE7daJ6Uceul8r9yvleL+WW6EVWflqN7gq5cvYqWKu9TEBxlT9zLPP2SGyG+rWd2+89orTfrmVA2vGseO/6xDR5XayvXTpSq5t+xbu0/Wb3EBh93Kingkm8kYb0B/HPTnetRAm8eOPPGTpDmpS4ANbG2wfMOm6rWc310Y4zLOE980gWaFyNYO4RDarV6+mw4q17BDQyOHDpJsCy1JA5xfLkxO5E1940SZGterUc/PVD56X6RW5ZwCuUqWSe3jMaGFil7P0lLP7LV11+OgOV7VWXZX5QuWbQYeTrjd6+w9oUpYgD1k1MerR8zbBkPZRHNrzMlv5Y4XhZsIHy99xz2mSxARi124djLu9p6ujRYz2kV3VypVdnXqyOs2drbu1L5kujpRPTO/oKK4Wli1T2gFpmj9/fuubLCo4hMZiZNJzT7rBQ0e4lm1v1kQ0i5s66QWnMy22Wh33yGOm45iwMrlB/6TWgSywvFnQgB88S/1vweIl0hVOh8UqWl6ssCnL3zXwJhpoPxjK7BrhZaZ44MBPtprA5EBj8weG43faywCzljuiPGOmzWCxR7M/zBtpZNZlIGPFQUPp8I7tKzJ4ZcyU0VbEpGMVsHeP9nqlzDPrOYMoqxlmyKTjD+FkJcy1BWbL5MX+I4MAnRBBIy+UNvEJ1IMZ8TENiOxl8Y59GPYd6eyUgxOp5bX3wqqDvRH216g7XlxQhpz2RYGSF6YhsDpZ/abSgMrsFvqYlsDMZIZNGVnpsZpktYbCu+zSyzR7vtQ6M2X6UeVlpU2ZKCt7klxNYL+MCQLekLjWwswa/nylvabvdeKXVQBXJrACUBd4zf4dvAaLFz6y12umMtWf/XKuyVBOrgIwg2cmzHYA9ec5jgj2q124IsZM2ZuF4R9lQwZmzprtmnTu7b7auNKuc7CvaLNzsRn+sP/KJI2yoaC51gIwOjwiPXUg73e1tzlMJ9DHPDDK2o06ZNEqnNUo7QJ+bEr4Kl7AJ5Qf5UPOrrzqSqsjsgS9gC9cFfvZJgZc8/r2G+r7tclbJq3Qr9DK8oDaGn5TXyZv1J/TntBhNYB8+7YkP+SJCQhbBsjTMbUjVycOq805/UmZKRvyyZ4xV6Rod3gPvzGFTpOinPf6fPfouDF2BW3Pnj22Ap+twQFlBj3aBX6JycoziQ1iyCWyAy+RNyAikfthI0fpek5q100Kn7ywfNTQKVSupoH5yp4r8gGPaWfPI8oKn6gjfYl9a/oYbcMeMvHpS8g0sghtZAmLFSfD06ZF7lHKgbMXVl2YHjEhX5vuWvU59QMpd34fP/6rXXOh7cGrxXwJn75RmxCgw2SEMx3sv8JzzOaUFb77QNelDX9UXkzGGOjYruG8CIG+Dq+58sKWBieuqUNw04GJ9IVmweJ6EqtWtpLi4uKsjKRHBiLrT5mIh4wwWc2ABSkhIB/0xdSSA3jl5cPf/ad+tGEKySY6wcs8/YqATNP2WA2pK2VCv/Ttf5duO9xk92Pp7+Ofm2B7uG/Oe9V4xrkZ5BSdglWQQBvQnpQBfcF+PH0CuaTsJofK9zvxjX7LhJ9JAX0KHtF2tAH1oy5cSWKbCTkgPn/Qh7+UEUsaq3X0LW2EbmBLLLKtrGDn578w4EGiGXThI4ymIVBCvvPSAQgIG8rAPycezxBo4vMumGEHaDU0FO+ZPXpTD7QQJJ5DhzQE/4zPyAb2ZfHxmHHR+XhOWaGBkgqGWyNl/7FPRZ6+7MSjU+AtCs9KPXt0dzqtaqsGrwDIw/JTXO7+UhbS+7wwF7MnSvnCeSf8Dtdf9aJDUz/Ss7K1RYZKRRqe+zL5/Pgd8OkSM5nTIRnocexAuVmFs7KgHFY+z+vovJQOOtBFCSm65UU5yJsykhflhxc+DuX1ZYZ5vr6s+vBmA0QjJnjS+njkQdkIPj30yYff5MEfHZ2rHNWqVrUOH+xBiq8RfCMNtH39oGv0VRfaFfmCFnUzPiEz+s5zeBM4wAjqG10Wz1vM3cgNwfPI52kP9Z+1jz6J5+WFuPCPsuk/a0/KRj48Jx7pkJfZusrSSEr1kcces4kXZvCNOjRz/6jhtlIP+Mr+adBOyDJ8ID1/BKwNmHypG1fqnnp+khs5+C7jx5sLFmvQS6srT73DB5vgOXSpCzzygXJDk2eUFdkF69mX27eVT8dv6uXry6CF4EKb57ZdIOKkp858QjvcVnrGb0+PNAR+R/IyMg55+eDLa7SVhq0gAvkQqAtxTugafgfl4Lnnga8HaQL5CDQDcaLbjd/0M1aJlBMaBKuT8qNtaGPSEoJ20naIovHO8wI6kek9b0lDHN5zyPG2Pv1soGwlBxdHNHF4/OnxrlP7No69fPL2deS7L7vPG1rQ8e1JXPJhL57y85sQyS/eQwsa6Ej0Cv2eZz6eJdJ/Pm/qwXf+iMdqmIlVZDl8mvPwmTgHXRjtg2+wSIZHvvfxeM9zH5/np0vj352MVnRafhttaPJDITq9/x28Df73tP07ftOZWM3qKohLpVks+yesLBE04vk0kXQi0/P8dL+Nc/ovoY+G43p6nv7paJwsj8hnfIcOeXl+8IwQTZempCw8P1nekTR82oCS6RUpag6dnFhhnkkenqbPk06uaxHaL9xm/GYQ9orM50nZ/Pdw/hRegf/9Pr894FnCO5/G//Z0Ip/z3b/3z6Hj43qa/hmfPh5xfH18PE/Px+E5ijBQgHI6oJP6OC7hGSsoTkqzXYByTCi2J2Wfnl7kQ/JF6bES5bANqyZkF4sThxPTasXuJxCR6SLLxPPoekfW+WTvLI3+Q64iaRE3Mi3x/HtPh2eE6Of+NwPDqfpFkPKP5fV0ffrI33wPpCMoq09PXHunl+Tl0/r3vIt85mnyPvq5jxv9nLjR7/xv3hEi6frfDJi0I/LBGQT6Rbzkgj1lVq/0icgQma9/7unyLvK7z4NPn86/92n9O//cx/PvI5/zXf9EK3gbHdenOQ+fiXPQPQ+M/FeRRDnSAQjMJv0A8K8q5H+oMHRg+M0gYvzWYJTQl/9DtQyqgnLCVBsZMMljXvwriitSVj1NViyssv4KPU8j9vn3c4BJAtsntGlkoE8wQYsF40B40E00B6nOR8OjdP9NCoJBFtOKL9e/oWy+LOeD//80TfiLJQHlwmrt3zLgwnPCuWx/aLI36un6dj1dHqcrB3IabYWB1unoWeax//51HEDu6QNeJny70ydi4f/nQGzQ/f95ckZPECi/wjmjBH8h0qkUkBfqk5H8pxWX73iUjbLAI1ZE/p7vycr8dzyjLKfiG0ojGKYC85kNoAnxT5lGiRjbTsZvnp0qnIreqeL/lefcq/R7/udypRGpRE9XR8rMe1bGDK78Rcfnt3/mP/9KXWNp/h0ciLXnmbdDbCpy5rwKx0T5cKqPe5bny4SLEGOuOdVfuDD/si+YWznAQYA3YPj+rBOTkQr77y4yebN/G23+ohxMCjjc4xU/5ScugxXpgvqcOD1OGg5pJdG9wZPR432Q38nbzudDvHMdoE3eOK5fsuRtO9FOGf+Ogd7XhbwoA6f133lnqbU/PPw7y+DLEvuMceDfyIFEtdKl43ulgFJFSfHnFYJXiNG/fVwakHcoES7bj9W9sPFPP2H3fDk9J2Jh5R3Z2NHpUUqEkz2HPgcRvtCR//HPPW9XVbgagfJk/4zrJBV0x65+vbrh/RJfB9JC29MNPyezhHd/VjdfNuJ5epFp/Hc+PX0+SceKZqsOFXFkn6sRmzdvMccPb7/zjgETBG7lgkEpsoxB8YL8oOVD5Hf/zKcTs1W+YGD06f0n6fgjLoebQMx56OFHdPq2gcMVHjlQXsybz0980a4ItdZlfJBk5FvbTZ463a7AcJ2piu55csKZ6zTE50qW/Lu6l2fNklP1FobQw+TC503b4aADx/Fp0qSyqxWc6MXzVDpdCeOub8aMGYwWZYCP/PHd142yR/PZMtB/nifE5RAWK3Sfnnfv6ApT1159XJ0ackOaM7sdpiMu8hNJ35eXtKTjj/cEn0cQx8Q6nIdF0H+eVhAnKL//bmUXkyfLy1sRef/q2rnTH2h6GrHPGAcSIwcSzaCLImBVw4DJ4MB3lCV7Ef6AiO1LSI3539xpQwGhuFEykUqSE5vc32NAxNMP1yoIKObIQBrudXolBT3ujBFQ4ASvNMmP7/yhvPHOgmu6D1d95J55crJ7eOwwu3PK/TJfRuKSDpMiwNu+bnxSFuiY9yjlS30pD5+883WDBsGXjd8n4xXOMoJ8gnudnifwDb5yJ7OtHH08++gYG3Q5Pf3i5Kl2749JCTQpD/kzCPBJ2X1e5E/eAV34dMJFH+XjHTwjns+b9Hwnf2jyztfP1wvPSOOfeVKwhd+aQxImBcTjrnC3W7pA2jVs0MBWZSWur+Pa1q9tVx24L9ysaRP3tByKtG/b1njHxIdJBO7kUgoWDWcEvtxGSP9xOb90ieJ2z/p2Id7cceddroRczQFfSN6UlT9fdy+LwcAIT+QOUrziz9OmjnwnDW3oZRIzsh5be0ITFKPO7Vq6Pr17iw+YdQP3lTh0QD5od2SDvGgLMdUGbuQZOSX4vPgkHnwkb9oZ3vLd5098ysNdbq6ymVxKnPjs1rWzOS0oJ+cQ+L1lT5i4sRDjQGLmQKIZdFEeXM5e8f4KrXy2mgODcteV1eXqtG7lylV2eR+4vgsuuMgwHDlFWUz+S1E8wLsJKccUfvHixezyvtYGWv0kN7d9a9eus+8VBBN47bXXWhoUFXmiJEm/Sk7AcXaAT19c+qFQcdi9dOkycwiB/0/c3vEcxYiHl2ZNGttvyohrNgYAnBlwOf9dpWP1tV7OBAB1xpnH0uXvGc4lwAnFRI8L8Js3bzGHB3jPWbZ8mS6EZzCILJwpECj7Bys/NOVbRJBbBQrkt9UZvKLOG2WqzJiRNGVt8BTyiftBpnXu6K5es9q85gAXx2CMm8Rtn++ylR6X3YuKfxnlaARHEdQLRwsfyLXj1q3blC6z4OVKGW2uGeC9CecUq1atNj/GOFZn0sEA4QODBPX5UOXlykkRefQqImUOH8CdhQ7XN7i+wOrUO9QI0l/h1q4Hw3eP8rna4i0XwIVLmtqVK1PYBoM9e/e44/v3uJ63djcvVqQDtxTwAAYVPACBqzx1xmwnpBhhE39iTvy57kKbMRjxSRvjWYpB/f5Hn5TnoxvMAxAuGIFAw6HDTjl/oC3Bd+XqzEb5ycapRqmSpcyZyhe66P/ZZ59J5i4zF5wMdnhXQnYYlIEUJB18LSMPPjzH2fvSpcvl+rC4IOfmmXN6BtV35JrwS00gcubMKZi3UpY/bQHPcXaCj24cUMBrBkvwplOqLcqXL2dttWHDeoOkA3yDNqBPAEjw0UerVGcBUwhkAocWOF3Yum27Dchbt2yx8g4fMdK99fbb5kgDz0vhzXPfqLHPGAcSGQcSzbSTAVAwY+7OQffKmXc2c9s3XJ6EGBTflJu9N99cYHY04i1ctMjNmv2KKWKUCwMt/n/xrQxeLQMPnkxenTNLq89H5cHpJ9fm1v7u+Rcm2UDrZQiFCG2UUto08jajmT7p8XyF39aKtRuYJxZ8jeKWDZQjW32IAIM2SpDVCr6BucSNQiegMCtVrOCuq9vUgcrCINykVTs59v7AlNvgYaPk+GGGKUdA7MHnfFRO7o8ePebAAxZcoK202JMuVKameUc6dOiIEI2KmzJHwQsmTfino83T0QuTprqhw0faCn3HZztNmc8TqENaeSoaOGSEe2b8eHPtx17nJSG5j5STc77jahMsVjz+MIkZPWasG/XAGMPGxc3dgHsGm4cYvPDgYKJXnzu0Gv3GzZgzx90n15N4GmJlhJKHL/C9dI265isX/lcoX9m9+trrxhP4gLu9jt17m7cieO9XujhlqFO/ulCLSmoAeIdxyNodNJSe3drYBIK4tBEBpxlMlLj3zODfUGZpPBQRZ5MGqPQyEzcWxu9PGvjx50pekQH+UWba78DhX8xTF++ZKDz+xNOucOVaWpEusO2CJ+T28s6BQ83d5jIh/4Auc0imaPIG3aV3vzutfV+YNMWNHfeopdm1e1cYXxZTOe5E2ce9OIkmeZKRA/JmRN54swIDd7r8zV4rbzwDho6Q05THrL54IMJPbusOneyeMZ6obmjcMmgDTZgGDh4ml3+93QS5FKT9qspH8tp1660dcEZfqmRV5fG7bYMULlQo8Nx08KDJZbP2nd1qOc/wIOwrPlhpq34mhr5NIvkV+x7jQGLiwB+1xX+05qxA6OwMoDWqVZKCrybg8RKCpJK/Xg2yyZNfJmWi+61YWRWPlVNSuRPDDdqz4zX4jBplcGC4ZsuglSIKNTDKOdehQzuh3dTQyqiADSq3yKSWSo4DGGQwx+XNk9sGstzyU8s+bbJ0WWzVion4Wzkmr1ypkq2oi2nVG+nMwjeFimPl4sMHPzA/Mfxu10ZO/TFzjxgyyFZluKLDRd6LU6bZyhiahE43t9egVEYr8XQG6N2qVQuBa7/qWjas7u7o19dWaax+oS3MVHdX/36Kt8QmA6y0b6hV0/Xv28fgzKDXoX07c46eIWNGG9SbN20qQOgWrv/IcfKH3NAcHXz22Q6XMksud5n4+8Xeve6BUSMMPQQwdwYKVrI3t2+rfdE8kBRUW1PX8eYO7sY6dVzJqrXd7b0+M+g/BhACZt2iObO63rf1MoVOO7QUCHXdOjfIPeIVFufpRx50mDMDEIMgHW3PJf3rq1Uxv8+3dO3ihHcr8II9ZgJdveZTayuc7b+5cKEbMmyke+bF6S5P9iyunlap1Ic9aiYRLwhJpkWzJoZ0UrN6NQ2674s3tcKDMoWIHFis/axkmGEvMFeBnZrUdyOH36tVbDJZAZIaffaT+c3kY/R9I4WwktxS9et9q/bv67mKmmThk7Zfn942IPOySuXKchWYyVXQ4JxeFparr07hysyaIzi90q6JIB7na2B/dNzD8oP7ufnKBZ6xtKwLTVQfZDxn/sKufZuW5nsXS8Flslbc2q2LeNrc6N3cob3tcbOK/VZ1Z2WdL29eTUpmuqH33iHZa2mu+OYJsWjpMgbiElbmEQPvcA3q17dVM23/0dpN5toPCMZYiHEgsXMgUQy6KGdWsOwxgZdZqHQF16pxfe3TtTZTKnuHfo+Uqy2sKDnBiknx5YVvu1la1RDYG71ZgyyDOCYzUHoKyyRNyCYPLN9r9WoIMTLrCkHaVpM46Z634nU34oEH3VVSdEf3/aBB8id5aylmzv1bdOjicmWNc107dTCAhEiFbYRP8h/1IeSTMmSVRdm5nH6/XOt9+9237meZMa+Qj2MGK+pSt0FDGyBJk0eTgOdfnGwDCFiXQG6RJ/FASoGewMaJ6mbOniun869ohfuzy5Irv/EDf9AtW7czszxxrpWJlHDg4AGbvCS9WKst8ZMA3V9VVsrB/miRkmXlaziTPccHa+0bG9gqG1/O7oJUhsFLOniWIW0q46VeWNuxXwym6U31bzS+4mYQiC+dkTbcz4BvSQySDDPmb8dOuLiDBnuxDDiTp04TtNcGmYm3aADJbX5bv9WqzyZRatcaMkuDw/u1Tl2vWrXK0E6whtzRr5/7ct9Xbu7smapDBpMBTNUgmrSXqzt8XPs9S+Tj5EH+vyUjYPzi3xeeXyVfs9NfnuE+XrtOA3Dg2ETFNZeJ0ADliZBK/NLurHxMH7a87rx7gKvdsKkrkj+f63FLZ024strEAV77SQqesgAhwJLCM/iVI18hQysCAvKo3CHio5s2xzViSpUFLFoCHqdKV6js4uPizNqQQdsE+N3FErFXEyjOJQy4Z6joyv2eJqg4tgBXlQBIBjKJnLINkywZV5hOxRNLEvsvxoFEw4FEMejS4VE6cVpNAPcEEAGIIe06dpWJeIaUUkqtQveZ/9YjUizrtfdXQqZWlHe+LBkMAACJYFXMnhUKELxYgN79YI1iv1jPUDIMAAzynDR+6KGxbseuXe7eewYKcCCpwcxhKiY00AqGFSRm3vr1bnRTdWq2mVZRKLQ/KCnpK/zD+sAAkTZ7vrALQTAmMU+/8OIkoYNUd8vee0/oRY8YNihlSan94bBCV/k49Yr5l5UVZkWULuXdrhUuAAX+gFeDenUNto0Vfy/tc2bXALBbbg+3ysTMKp4AQAGBFTKr8e92BmAEPDM9S14yK14hsOuPV66wAZK6YQlYtPITTYQ6EdVly5NJvDxxkCdpUvnKTbh6xCll+Jzy6pRur6wFqoL5r8XxP4HyE6dombJmFTBlrzzCd4MVn4GTAQ7kp2ka5HBQ36plc8E3Xu627PxSk6+LDbJx27ZtWqXVM6sDUGeAOnS97U7FbWl7/yXKlLMTywAixAkFJle+woI122B7wH9oMyuZc1demtTKy0/jhwoPWARx2ae/7vq6rv+tXd0TWpFu1x7uy1MnB5YNmHlVZsULdoBox6vjM9l2A7zo3u0WG+zXrFkj5JjKZgXgTAFDmy8He9BsZSD7HHyyicuur6zOIueu1CoUMIkghDRRu8xAMey33l8mwAjPQ+RaTLbDVsgxgzN71VgUOJnNKhoQh6viOFjGlkBwcIttlGIF8tj+up8sJmQY+4hxIFFy4D+/p+sHQA6xDBg02C3XYaNcmvHnyZ3bLX1roSmorFmzuuH3DnGfCKvyw5Wr3MTnx9uggjmsY9tWbrhWqayMPtE+Ve5chWzFxUnUL6V4oU9A6e82APYT1y5QSN8JKaVIoQKGrMHguvCN12zlABYlMFk4jmBP7PJ08bYvejIpBD7uBw0S4bx0WGj/9g1SbEHe5sBdCdkvxpH/C1rJMhiC+sOKELN4QjGlRFXOPV9ZGTBZ3jtksNCI1sqn7mbXqEUbMyHmzJHDlatUVfuaq6VkkxpCyquvzbOTqwzIq1a8KySj9+zg0htvzNcquIAhpjDw1m1QUabGZfaO0h34fKv2EH8zBCbqNl+na9lr5HDPsX07DVweaL7PtCeJoiYwqdiw5XPbR2cAYT+dk7UcDntg1Ehrhz1abU3Vwa2OnbuaqRnUpd1ffGOpGXgs+Errc9P2nWYNqKYBauxDo93S91cJEzSXrcbcwa8kB4K+FfoPpuTnnp9o+8bsIc+c9YqwR2ubQ/Vxjz+p6y8dDRmn9209Xa9et7qhg+52A4aNMrQpm3j4PFUA2mv/7s1BHgm/mcCwT08Ao/aHvdt1sregTXSWyURLIJ219U+fB588U1v/sHOzvV+8eIkbpj12DmQVkuwQDh44ZLLMtSwAJAhYU1a+t9S9rjbikNM07VVny5zeDj2BGLV+15dhGUKWdn0peZa8EJDdb4XIYjMp/WaSBFIRKEVVxcOXZs22iQyDMXvghzQBAnP2p12bjAYnpbEUgRrEye3Lkl9q8uMnBJZJ7L8YBxIhB/7zK91Aaf9mM+1GjW4S6PQTMus+YydY31yw0Gb6uTUA9+t/t2vYrI1r07KJGzpsuK1KWUE1vKmBXTXpfEsPUxoPPXyfmXU3btJqWKdz/RUIgNSrV75Ops9LTIxYXXACuWOH9sJ7HObmvPaGq6e9x/4CYGbFUbpUSRtEmgljM7lWnL27tNMqrFrYrBgpi+y/FSoQmJJ5zqGeBo2ba/UX5IWZmTK379zN5cmVw07PptFqFMVJWvYLvbLjJHHZMsXtd43q1+v+6jjX87a+thqrW6u6HabiysuD94/SoafRbrYOKrEyv0PYmKz6UKQVq1bXNabV7rEnnzbHEtNfGG/mUlZF3bp0drVq1rbDPO3bip/tb9bE4ncblFfooBiHqRYuesuWfa+/8YaBYQO71qR5Y1stUz9W9U3rVbO2YfCh7KysOb371NPPCh91iPh+kQaP3NqD7GZbBEnE/9pVy9mKPZiKnFjxMRhWEhYtbcWp6QaNm+qu83VmIt+5a6cOWTU0K0Zl7a9jfp4y9SUNUDNtspJDGKw9unfTKu5b4SJncOW1H03bYo2AtwUK5tdeaDI77MTJdfJm0KfcSXSwqX6jpgY3Rr2wlEAvefLLiWEnjsmvz50DBHOX0l2vwaxt+44azI7KZJvU1a7X0EzppKV+9W6CVlIbaGcLF7Rh05b2e8zYce6668qYfMbHxdneLoe5mDy9Mf9N97CA1idqIpb88uRu8vNP2cAJxGOzG6qaLEEfHl1fsay1J785qFa8SKGwtQEINWQci0jTxo3tRHczYdQyGapVo6ptCXCWoE79Rjb4QmPjxk1u2NAhOuH/iSY8l7gjx2NXhuBLLCRuDiQaaD8Ud2DyPWInKcF1RWGgnHiH6QtT2OU6kMOMnRUo8VHUKFAwGfl9uZQR5ln240jDwEwgDrT8by9WAKtzCveIcDo51ERerNwYMD1d4qLkoA+N6MBgRnkiaXPvlT1m6PEHLXAmoXupTIkMDNDTC8uPAYAQpiVTOOZzW43qehDpwbKEJmUgLfugrGDgE+ZJFDMg7PM1WRkuZerNvv7OJjQoC6s5vnOlKuAvHqEEKSjarMAP6hQvh9dIBw344fMkPYG9QtL43zzzExwmLcF+6FU2sJGeerFKszoTOSKwumfg9/wLyhTIA23I9SfqbWmV/bFfjmsQ3W/bDWB6ko7VI2XlLix1iwzwmrL58p3uHXkTj3r5ulEfSF4hUzd1gQW8C8rF3eOAok9LGciT9kZWuQ5GfKuL6PPd58Ene81MlrhChaWCtAQvI8SnTpFtYL+Rb8kB2VMWykibwCfiWv+/tIsAABKySURBVLn1jhU3NKDHc+QEcz6nnwtosnhbz1vDeZJvLMQ4kAg5EAY8SDSDrm9kFAaKyCso/5xnKBTMbF6pEofvpOEdSgelwnPi88dvgld0Po2ny6fP08flGd+DPBMGQ9Ek7cmCp+3T+9+RefnyU0YGGPZDPT0mCShNgk8LLeoWXQaeE4fgy008BjkUNuDvL0yZ6qZMnBCYdTUw+3xIQ1rSETCjsiLlPX/+ncf5jCwD5SCO5z00In9DL7K80CI9cQj8hgbPokP0O2hDy5fJ581vvvs/6EAP3sHDk9GHU6xgo8vqyxBdj2gZ8zwhvq+L54EvF799HYjDH3SjZdLHiaTFdxs4E/jr+ePj+nKf6rePT1k8Xcpj+euZxC3cDsSBDn8M9B/oqlCu3Dl18CyjWSp4HgsxDiRSDiTeQdcrNBo+UglEPvdC4d9HvvPPiMPz0/32dCLT+2c+XeQ7/8zHifz8s7wi6fh0nt7ZpPVpoBFNkxUfB3NYqXJwBiUbTTsyHbSi30fSjM7rdL99nSLp8/1s0vi4vgyRv/33aPqReUTXhXeEUz0/2buTxfXlMWL6z5clOm7k78g0Pv7J8vPPomn756dLe7L8fPzI/FVgWw17mnwiGxz4YvXLhM2n410sxDiQCDkQHnT/83u60Y17qs5/quekP9W76OfRv33ep3p+Oto+rf+MpvFnv326k+Vxpmmj46FAuQ96kVYu3pVldJzo/KLfR//25Yx+Hv3bx4umfybPo9NE0/6z3z6P6Hh/9jw635P9PtWzkz2PzD/yO3F9ONnzkz0jfvTz0/0+3TufdyRNBmVWu6SLThsZP/Y9xoHExoFEN+gmtgY+l/VFeXKgCYXqzY3nkn6M1n+LAzEZ+W+1Z6w254YDsUH33PAx0VCJrVwSTVPHKhrjQIwD54ED//l7uueBZzGSMQ7EOBDjQIwDMQ78JQ7EBt2/xLZYohgHYhyIcSDGgRgHzp4DsUH37HkWSxHjQIwDMQ7EOBDjwF/iQGzQ/UtsiyWKcSDGgRgHYhyIceDsORAbdM+eZ7EUMQ7EOBDjQIwDMQ78JQ7EBt2/xLZYohgHYhyIcSDGgRgHzp4Dif7K0B8864h/sYv8Zy9EsRQxDsQ4EONAjANnxoFEO+jic5bL+/iQjQzet23sYn8kV2LfYxw4wQH5RtHk9MRvvuGDOerRHyPEfv1tHGAhEVs8/HV2+4XY+eJhoht0vUACUweSjQdhD5roAkGlXWIO4nnu4/715oulPBsOnEzYeeafQyvmnONsOHpu4/p2AGgBNCQfaJOL9PdrBEKSfxf7/Hs5QFtcIhQq8I99e/29Jfjfzg2eXSIIS2aRx86Tz/BENejCUCDuQBLaKrzZTVs/c+u27MBjvc3UWd0WzJXV5c6RzWXOlMGx4Q3KytnOeMjnbNP8b4vquSk9DvJB8/ETHtojWbKkIn5iDQV8H5CDfzXE2uavcQ6+geULhOIRwQReJsQpj3aET24UFHCZvyV8/yvyH2ubv9Y2PhU8ZyGxb/+3wq++ygZfeBoLZ8qBkEF3frlvv1lBr0mT+ryAdSSaQRfhw5R8XEL5xuJ33SuLl7uCOeJcPv15BRHSYLxh2w730vx3XcMaFVzNyuUtzZkOvF5pADLPSiAm8Gcm7Aabp7ZZt2mLO3z4Z1e0UD4B018k3OOf3fsffey+/+FH/Q5m73GZM7r8eXIadu7Z8PdE21xsE6mzSXtmtfjvxmLKk0Srpy2f7XJrPl3n9kgpFcqTSyD3Bdx33//glr2/yh36+ajLnP4aV0T4uZkzpj8rKL9w2wjFKsDtjQ0UZytN8BAUsAPCsh43Ybrr1Lyey5ktznCgw/pNcfz3s6WfGOJfcvEl7vMvvnKjn5rokkqH9+7cxmVId41NKM9l/RPNoIuw8ffOeyvdhNlvunu6t3WF8+ex2bteGE8RXFZZqz/d4EY8+aJLLhN0pbIlz1hQ/WC7Zfsulz5dGqW/zAbfBPLnst3+W7TEoE83bHYjHp3gvjlwyA3q1sZVKVdawOu/uA1bd7qvvvnWJRUwOuaIuUve04SooqtZpfxZTWowuf0qqwUWjvTXpBU2cLKzSv/fYviZ14bhDzzejVu2u8denOFyZ83kcmWNcyvWrHWLln0gq8NxWSOSudJF8rkdn3/pPvx0k+vbta27+sorzMR5Jko+qbZ0jhw56nZ+/oX1m0sTVtRnXspYzDAHpMO+//FHm7BG8p6J7QVqR4+PHI4f+2J6hS2T3Xu/dGOeneR27PnSrKFjn53senVs6a5Nmya8dXIu2JUoBl0G04uldLfv3O2mvrbI9evY3JUsWsiwPjGVBebLYHbNbLFM8cLu9vZH3bRXF9psMaNmO+yRRApxNPNtwD56zH30yTr3yIsz3cP39HZXSfEEQn7CPBqdLrH/RqEvlvKePHeBi89wjbvq8mTu2ZdeU3td4q4rUdi1aVw33D604azXFrjp8xa5IgXzunQy/2DaPF27wF/a5uBhgaqv/sTNW7Lc9encWqbQy/60TRN728A3rEMHDh92L4nvJQvmca0a1pXZMokrX7q4e2bSDJc9LpOrVa2iJq8XS9EfdQ8/+6Kbv2Spa3xjTTPRQeN0gfcHDh5yK1auca+9vcL114B9RYZrbQvhz9r1dHQT27tIPrOFZgdBE1gPH3+R+f/48V/dpdquifH1hHTAt0s0oV+3aasb8fhEd0OFki5/zmyaaF5oA+8d9z3uBvZo5/JoyxGEtXPBu0Qx6MJimLVj9153VfJLXUGZJxkMWfmcOKUcDIzsiVx44QWuUN5cUtDL3A8//uQyXZvuRCtFfaPRmCUdO/6bm/n6Ivfhx+tdsiQCd5epOhb+nAPw7+oUV7r2DWu73V98KTNyEttTR+iZndsKFzKKx6BbTKbnD2WJOK4Vll6fNgRtE5ipZ7+xxK1eu8FdoLb9PaRDQH+S9rSEE9HLi7Sv/uNPB933+mvdsIjaI4msQcdcCk0oe3Ro4Y4cPWqHDwGqv/KK5K54/tzuk03bTcFzKJF931MpKtr3iCxLU2a/4VZ9utFdob6JeTkWzo4D8BdrwYUXSO8oqbpK2IrD+RUmROs3b3PvvL/atW9az11xefIzmqyeXSn+d2OjJ5DVVvWqu2rly7iZr71ph6nqVK/iUqe6OsHKdu70eaIZdJFEDhdcJrMigyq/T6Z3UeQIqt//3f/tD6dUGogZAo+QQ6tU0QKuiJTO9Llv2oAug87/riT+TSVn4lNcAyk8nDB1ppkyixXIYwd2UOQ+IPIXKK4pcfGVdqKznC4EbaO21MBRvmQR+3thxlzbDz5duti7ExxggnKFrAJXXn6ZDb6/JUwmOTiVVKc8k0qh850B9JgmQl/qEE8mba3w7nQDLjnQegwUNf5fe+caYlUVBeA1r8RJU8eZ8ZWZb0XHzEe+H2QqipqISD7qTw+TiAiqHxVU/kzIHwZhUIiKoWgJWpqJmCFJBQZBSphm46NpNB+pM+ZjWt/es713bJx77sz1anPWBu89c84+j/utfdbae+21thNGyXBtA5+ot8PemAT7VFvwo21X6Xw68+091OvAAADuFNo/70mO1iE+4pcj5a5Tw34rCQLomZ7ddNqkV3f55/IV52UhYJA2PHvaJLmqHgLauNfyifMauxWbFalooEVt20h5xSnXQJl/RVHQQEMjDUocd8PBQ4cd6IcG9E3Z+w4jKlwQnTuUeNdYYyUSs/NQACH6FRkhCxp4cBt7xeFTUpAZBUOdo8qakW8qBYJsSAHooy9UaUmRXvuqXsGUjgOZ4sPL5pqUFLeXst49ZN3mbe5dwH3pZKVs6aDyB4wrT5+RA4d+l749u6ts8lN2ipANMuylc8QlOqKoDlHpJp4Ukqk9rPwYHFy4dEk+WLdZTlZUuk6rk4m2cXIyvE6rcQONFsraF6RnBQK0U7xr6JTL6sHB2MLUdV60w8k+jlGHfZkomblKJp7kdl4D46rgunQslfFDy2TFqg3y08FDkqcgCzXYiZxdCrBJUTl8tFw2bNkh0yaMVmVQ5FzRUZT7FVUa9Jow5lbSIUCPHL+AzzHEoKIswj9wYixxczId0ErlhWGuPPVXmrJJPf+bzlPHpS5tetQjQ1yE8i6df8/NzZMCfVdChxXX3NlzF+S9lavl/o7FMqB/b00duhYJDzK+fv2ak6O9N5GQ1ankNI3a0BzlqC+MO4bhIPq//Pgf8rlOkZGx4QYYTKu4YvqpFoQGnZ2Xs+f/dt4AT6VGLmj8B56BUNBNZ86dV49CVcpOfjinoe9YuJeByVwR84OL5s5yvcFlH65RAzxI+vR4QFrpHEffXj1cr33fDz/Kso/Wy7QxQzVCdqwbcaEYUhldIDNfqBUb4m3HbiKAmoAYc+AocXrrfLfUiFg/v+d7nifUQ7H2s21S0raVtFQlv/Prb+Xw8Qp5ZfEiKS5q6+YQG5IRsmno+E2PZX/WEoAZ8Q/dNA3omScelxWrN7mAkqmaTkfeLq5LAqFWq9s+Vw3xPA2gKlTZ0SmKxNu9Mnx4d7OBT4+AN7Pqpnft25+LvkIWFZWnZYsGDs6aMtHJItRN7w7NrzZ9k7w8vJw1snbjVulQ3E7mz5lRGyiVq1OE/d0AjEEA3gK8OFu/2i2l6vGZMnGMex+aQiUWRhdAKAAikAtbtpCFc2fKEJ03PKA5uWs2b9eezkWZN/1RzdE6IUeOVciS+TNl7IhhzqdPxF8k5ZEkhUvqkqDhU/jEqFipnwBsMLI07J46J/XGilVSpoFuJcXqCtY5Qvh1Ki2WUvU4DOz9oCz7eL0UFuRK3+7dZOHsaW6+kZzoqDIicMfLxqRSv0Tq34u7f8SQQdqWc+Tt91fJb+XHZNbUSVJ+wo+m8E689PQC6dKp1LnkosrDCVhvySDsgqaIhfem/qewvbci4LSNVzneAGtFZHBv0uIy1uIDPUDhTbvu8nJbF+qiPNp5ZH4cZuNGDXcVWeiFkqOenXOayoi3jfZJnaa009gYXQcPw6vgSFMhsX/Yw4OkTKOUn3vzXRfZN3XCSFmoKRG4lHFHp2NwEQTK/77WreQ1TXtg/thcza7NRvrA8I5WF+bSF2rk0y936yjXu8Quq7yeXzBHunbuKNM1NSU/L1+2794rS56cKwP79fFBD9pjVfy3LEE25Oa+uvgpjZZu43qr7LcSjQBKhsj+YYMHyvLXX5RNGqn/1vKVUqWBJ9PHDXdpQyVF7dIzuHprRmi8Zx1K2svSl591wY7pvHfRnr751qIFY0KQA25lylldYCYs03mx+rLbh/yqtBNrxXdG0DfYgakTNVp52y6pWb1B5269kQ0G1esHjSfRudwDvx6VyeNHeNi1nBvLUqcCEldguH1R/dYFGZowbuihaB752rM4VnnGNZJ+XTu43kbS4zR0epOP4TJjKbtyXYFk0xc7Zc70x6Sr5gciDIwlpTFKmXOYnEdBcS0r0Qggd14C2gXzKcntgDlDRlJ5qqCvaT1GwIXag/erFyGnaPdwsiFoQnuwQUFFO9NqQQDZgJr2XaU56Xt0JSqWyiPYEHmF4DfqplsYaRCgRaSoySYaPffOaHvGvf/Nd/uFqH86+xu37nBrDRB1vvf7/TJj8gQ5fvJP+Vk9e+NHDnW5uui/xui3aE9299fy7Hw64c49+1x8iAsQ9P2WGz8A3cJUCWmmg5UvOeoJi3mjWpSNK7qITEF1dfU7sTW6UAK8cyug7HWbhsh3UxtjJq4RRYrNrU7gRuP36t3/wiAXGjsjI2TGvsaUcI/GnGvneAIwJOgQOVCQBR1Me288n2x/wh1ZIANkQ+c15DvjMiX6lkAq5t8JWuM9suIJwI62nLIoNDqDTRhI3TC6sXIv3wwW4DRSeuhBGTdVcXCPTFzj5meNw9+BG+7F5BL2q7huyCvsS64XZbux50W5dlzqwDAY2vCbM8E1E9cIzxOnb3RXcicUIxtK2Hbeg6T94Xjcv4P+j8IheHqi1G2oTqyNbjIYe+GTadzZ7VSySHX8zj59PO5uMoiHnO1XJghEnMVKnHCLrXjk6d7ix9tuI2AEjIARMALZJGBGN5u07V5GwAgYASMQawJmdGMtfvvxRsAIGAEjkE0CZnSzSdvuZQSMgBEwArEmYEY31uK3H28EjIARMALZJGBGN5u07V5GwAgYASMQawL/NbqZiotOgTVxm8RWilPssBEwAkbACBiB/zWBunm62D/NAA4LRfB9ewvX9/dwW3q/23/P2/uL7OpGwAgYASNgBJIJhLx2VrSqY3SDsc3X9TyzUdz/6qDL+lHcfxysy5SZ0c0GebuHETACRsAIZJsAtrWuddXhJha5oKAga8+SqwvZY3Z5GIywFSNgBIyAETACzZHAPfp/ute1cja92hzlbL/JCBgBI2AE7gICuJf/BRg7NjwGGUqUAAAAAElFTkSuQmCC)" ], "metadata": { "id": "Q1UYmhXGv-jJ" } }, { "cell_type": "markdown", "source": [ "From the hybrid PLMs class, we will be using [MSA Transformer](https://www.biorxiv.org/content/10.1101/2021.02.12.430858v1.full) to predict mutational landscape for encapsidation protein 22K." ], "metadata": { "id": "eIZKlYZuktkY" } }, { "cell_type": "markdown", "source": [ "### Obtain FASTA file of protein sequence" ], "metadata": { "id": "QgJXp5Q4q61k" } }, { "cell_type": "code", "source": [ "query_url = \"https://rest.uniprot.org/uniprotkb/A0A7L4WH77.fasta\"" ], "metadata": { "id": "Z3FenhSreyYO" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "import requests\n", "from Bio import SeqIO\n", "from io import StringIO\n", "\n", "def read_fasta_from_url(url):\n", " # Download the FASTA file content from the web link\n", " response = requests.get(url)\n", "\n", " if response.status_code == 200:\n", " # Parse the content using Biopython's SeqIO\n", " fasta_content = StringIO(response.text)\n", " record = next(SeqIO.parse(fasta_content, 'fasta'))\n", " sequence = str(record.seq)\n", "\n", " return sequence\n", " else:\n", " print(f\"Failed to retrieve data. HTTP Status Code: {response.status_code}\")" ], "metadata": { "id": "WYqDhRoTlUZ8" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "protein_sequence = read_fasta_from_url(query_url)\n", "print(f\"Protein Sequence: {protein_sequence}\")\n", "print(f\"Protein Sequence Length: {len(protein_sequence)}\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "M6I_sLtNmH0O", "outputId": "072d7c5d-ee4a-4f99-f8f0-eb211251a254" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Protein Sequence: MAPKKKLQLPPPPTDEEEYWDSQAEEVLDEEEEEDMMEDWESLDEEASEAEEVSDETPSPSVAFPSPAPQKSATGSSMATTSAPQASPALPVRRPNRRWDTTGTRAGKSKQPPPLAQEQQQRQGYRSWRGHKNAIVACLQDCGGNISFARRFLLYHHGVAFPRNILHYYRHLYSPYCTGGSSSNSSGHTEAKATG\n", "Protein Sequence Length: 195\n" ] } ] }, { "cell_type": "code", "source": [ "# Save FASTA file locally for future reference\n", "# The -O option in wget allows you to specify the name of the output file.\n", "!wget $query_url -O data/Encapsidation_protein_22K.fasta" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "BcW1Th1KAJfo", "outputId": "e5a0a218-e4e9-4c08-c850-8cec7d08148e" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "--2023-12-18 21:53:32-- https://rest.uniprot.org/uniprotkb/A0A7L4WH77.fasta\n", "Resolving rest.uniprot.org (rest.uniprot.org)... 193.62.193.81\n", "Connecting to rest.uniprot.org (rest.uniprot.org)|193.62.193.81|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: unspecified [text/plain]\n", "Saving to: ‘data/Encapsidation_protein_22K.fasta’\n", "\n", "data/Encapsidation_ [ <=> ] 309 --.-KB/s in 0s \n", "\n", "2023-12-18 21:53:32 (185 MB/s) - ‘data/Encapsidation_protein_22K.fasta’ saved [309]\n", "\n" ] } ] }, { "cell_type": "markdown", "source": [ "### Generate sequence alignment in a3m format" ], "metadata": { "id": "mHtnbwJHwoe0" } }, { "cell_type": "markdown", "source": [ "The sequence alignment for encapsidation protein 22K was generated using [MMSeq2](https://github.com/soedinglab/MMseqs2) from [ColabFold v1.5.3 server](https://colab.research.google.com/github/sokrypton/ColabFold/blob/main/AlphaFold2.ipynb#scrollTo=kOblAo-xetgx)." ], "metadata": { "id": "Bbj52wdrwvaA" } }, { "cell_type": "code", "source": [ "# Number of entries in the MSA file\n", "!grep -c \"^>\" data/Encapsidation_protein_22K.a3m" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "QcAg0eaZ_BNQ", "outputId": "d308d0d1-8394-4b9a-a8d4-01993859fc93" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "124\n" ] } ] }, { "cell_type": "code", "source": [ "!head -n 9 data/Encapsidation_protein_22K.a3m" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "jwQ9MEJN_WSb", "outputId": "b1f066d1-14f1-4cd7-f58f-a68a8b005fc3" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "#195\t1\n", ">101\n", "MAPKKKLQLPPPPTDEEEYWDSQAEEVLDEEEEEDMMEDWESLDEEASEAEEVSDETPSPSVAFPSPAPQKSATGSSMATTSAPQASPALPVRRPNRRWDTTGTRAGKSKQPPPLAQEQQQRQGYRSWRGHKNAIVACLQDCGGNISFARRFLLYHHGVAFPRNILHYYRHLYSPYCTGGSSSNSSGHTEAKATG\n", ">UniRef100_A0A7L4WJM1\t270\t0.923\t1.137E-78\t0\t194\t195\t0\t193\t194\n", "MAPKKKLQLP-PPPTDEEEYWDSQAEEVLDEEEEDMMEDWESLDEEASEAEEVSDETPSPSVAFPSPAPQKSATGSSMATTSAPQASPALPVRRPNRRWDTTGTRAGKSKQPPPLAQEQQQRQGYRSWRGHKNAIVACLQDCGGNISFARRFLLYHHGVAFPRNILHYYRHLYSPYCTGGSSSNSSGHTEAKATG\n", ">UniRef100_A0A3Q9HLG8\t259\t0.892\t7.754E-75\t0\t194\t195\t0\t193\t194\n", "MAPKKKLQLP-PPPTDEEEYWDSQAEEVLDEEEEDMMEDWESLDEEASEAEEVSDGTPSPSVASPSPAPQKSATGPSMATTSAPQAPPALPVRRPNRRWDTTGTRAGKSKQPPPLAQEQQQRQGYRSWRGHKNAIVACLQDCGGNISFARRFLLYHHGVAFPRNILHYYRHLYSPYCTGGSGSNSSGHTEAKAPG\n", ">UniRef100_A0A3Q9HL92\t258\t0.888\t1.457E-74\t0\t194\t195\t0\t196\t197\n", "MAPKKKLQLPPPPPTDEEEYWDSQAEEVLDEEEEDTMEDWDSLDEEASEAEEVSDETPSPSVAFPSPAPQKSATGPSMATTSAPQAPPALPVRRPNRRWDTTGTRAGKSKQPPPLAQEQQQRQGYRSWRGHKNAIVACLQDCGGNISFARRFLLYHHGVAFPRNILHYYRHLYSPYYTGgsGSGSNSSGHTEAKATG\n" ] } ] }, { "cell_type": "markdown", "source": [ "### Generate mutant triplets to make predictions" ], "metadata": { "id": "y86uPNMoq-rH" } }, { "cell_type": "code", "source": [ "def generate_mutant_triplet(protein_sequence):\n", "\n", " '''\n", " Input:\n", " protein_sequence: the input protein sequence for which you want to generate mutant triplets.\n", "\n", " Output:\n", " This script will generate all possible mutant triplets for the input protein sequence.\n", " '''\n", "\n", " # Define the amino acid alphabet (one-letter codes)\n", " amino_acids = \"ACDEFGHIKLMNPQRSTVWY\"\n", "\n", " # Create a list to store the mutant sequences\n", " mutants = []\n", "\n", " # Iterate through each position in the protein sequence\n", " for position in range(len(protein_sequence)):\n", "\n", " # Generate mutants for each amino acid in the alphabet\n", " for aa in amino_acids:\n", " # Create a mutant sequence by replacing the original amino acid\n", " mutant = protein_sequence[position] + str(position+1) + aa\n", " mutants.append(mutant)\n", "\n", " # Print the list of mutant sequences\n", " return mutants" ], "metadata": { "id": "Aad73eTrpp6j" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "mutant = generate_mutant_triplet(protein_sequence)" ], "metadata": { "id": "kUQa_MKsrLS8" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "import pandas as pd\n", "\n", "Encapsidation_protein_22K_mutants_df = pd.DataFrame({\n", " \"mutant\": mutant\n", "})\n", "\n", "Encapsidation_protein_22K_mutants_df['wildtype'] = Encapsidation_protein_22K_mutants_df['mutant'].str[:-1]\n", "Encapsidation_protein_22K_mutants_df['mutation'] = Encapsidation_protein_22K_mutants_df['mutant'].str[-1]\n", "\n", "Encapsidation_protein_22K_mutants_df.to_csv('data/Encapsidation_protein_22K_mutants_unlabeled.csv', index=False)" ], "metadata": { "id": "QNomPwTQrc11" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "### Predict fitness landscape" ], "metadata": { "id": "imqfZ4aQQRVW" } }, { "cell_type": "code", "source": [ "# We meed the MSA file in .a3m format and csv file with mutant triplet to run the script below\n", "!ls data/" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "OBS6pnWLDIYI", "outputId": "30a8c038-1cae-41eb-b03b-1f7f7ab4f183" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Encapsidation_protein_22K.a3m\t Encapsidation_protein_22K_mutants_unlabeled.csv\n", "Encapsidation_protein_22K.fasta\n" ] } ] }, { "cell_type": "code", "source": [ "# Script to generate mutational landscape\n", "# predict_esm.py script from: https://github.com/facebookresearch/esm/blob/main/examples/variant-prediction/predict.py\n", "\n", "!python scripts/predict_esm.py \\\n", " --model-location esm_msa1b_t12_100M_UR50S \\\n", " --sequence $protein_sequence \\\n", " --dms-input ./data/Encapsidation_protein_22K_mutants_unlabeled.csv \\\n", " --mutation-col mutant \\\n", " --dms-output ./data/Encapsidation_protein_22K_mutants_labeled.csv \\\n", " --offset-idx 1 \\\n", " --scoring-strategy masked-marginals \\\n", " --msa-path ./data/Encapsidation_protein_22K.a3m" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "VpkE4fvzt_iE", "outputId": "61b71e55-ed55-448c-d762-383b80f1d518" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Downloading: \"https://dl.fbaipublicfiles.com/fair-esm/models/esm_msa1b_t12_100M_UR50S.pt\" to /root/.cache/torch/hub/checkpoints/esm_msa1b_t12_100M_UR50S.pt\n", "Downloading: \"https://dl.fbaipublicfiles.com/fair-esm/regression/esm_msa1b_t12_100M_UR50S-contact-regression.pt\" to /root/.cache/torch/hub/checkpoints/esm_msa1b_t12_100M_UR50S-contact-regression.pt\n", "Transferred model to GPU\n", "100% 196/196 [01:43<00:00, 1.89it/s]\n" ] } ] }, { "cell_type": "markdown", "source": [ "### Visualize fitness landscape" ], "metadata": { "id": "5RvQcP8dwzVk" } }, { "cell_type": "code", "source": [ "import pandas as pd\n", "\n", "# Read the csv file containing mutation score from MSA Transformer model\n", "fitness_prot22k_msa1b = pd.read_csv('data/Encapsidation_protein_22K_mutants_labeled.csv',\n", " index_col=0)\n", "fitness_prot22k_msa1b" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 424 }, "id": "8uxkE4caw1xk", "outputId": "e4f88de3-5df2-4a67-c27c-0b744a52d41e" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " mutant wildtype mutation esm_msa1b_t12_100M_UR50S\n", "0 M1A M1 A -16.325127\n", "1 M1C M1 C -16.986792\n", "2 M1D M1 D -18.815874\n", "3 M1E M1 E -17.576103\n", "4 M1F M1 F -13.433237\n", "... ... ... ... ...\n", "3895 G195S G195 S -9.930399\n", "3896 G195T G195 T -13.784996\n", "3897 G195V G195 V -12.468152\n", "3898 G195W G195 W -14.053451\n", "3899 G195Y G195 Y -15.699408\n", "\n", "[3900 rows x 4 columns]" ], "text/html": [ "\n", "
\n", " | mutant | \n", "wildtype | \n", "mutation | \n", "esm_msa1b_t12_100M_UR50S | \n", "
---|---|---|---|---|
0 | \n", "M1A | \n", "M1 | \n", "A | \n", "-16.325127 | \n", "
1 | \n", "M1C | \n", "M1 | \n", "C | \n", "-16.986792 | \n", "
2 | \n", "M1D | \n", "M1 | \n", "D | \n", "-18.815874 | \n", "
3 | \n", "M1E | \n", "M1 | \n", "E | \n", "-17.576103 | \n", "
4 | \n", "M1F | \n", "M1 | \n", "F | \n", "-13.433237 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
3895 | \n", "G195S | \n", "G195 | \n", "S | \n", "-9.930399 | \n", "
3896 | \n", "G195T | \n", "G195 | \n", "T | \n", "-13.784996 | \n", "
3897 | \n", "G195V | \n", "G195 | \n", "V | \n", "-12.468152 | \n", "
3898 | \n", "G195W | \n", "G195 | \n", "W | \n", "-14.053451 | \n", "
3899 | \n", "G195Y | \n", "G195 | \n", "Y | \n", "-15.699408 | \n", "
3900 rows × 4 columns
\n", "\n", " | Unnamed: 0 | \n", "mutant | \n", "wildtype | \n", "mutation | \n", "esm_msa1b_t12_100M_UR50S | \n", "esm2_t33_650M_UR50D | \n", "esm1v_t33_650M_UR90S_1 | \n", "esm1v_t33_650M_UR90S_2 | \n", "esm1v_t33_650M_UR90S_3 | \n", "esm1v_t33_650M_UR90S_4 | \n", "esm1v_t33_650M_UR90S_5 | \n", "esm1b_t33_650M_UR50S | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "0 | \n", "M1A | \n", "M1 | \n", "A | \n", "-16.325127 | \n", "-8.098816 | \n", "-8.235819 | \n", "-5.609891 | \n", "-6.854110 | \n", "-6.774120 | \n", "-6.800508 | \n", "-6.751205 | \n", "
1 | \n", "1 | \n", "M1C | \n", "M1 | \n", "C | \n", "-16.986792 | \n", "-11.144790 | \n", "-10.752127 | \n", "-7.939667 | \n", "-9.681019 | \n", "-10.263803 | \n", "-10.269108 | \n", "-9.223083 | \n", "
2 | \n", "2 | \n", "M1D | \n", "M1 | \n", "D | \n", "-18.815874 | \n", "-10.257328 | \n", "-9.317606 | \n", "-6.818065 | \n", "-8.292774 | \n", "-8.394552 | \n", "-8.780309 | \n", "-8.850616 | \n", "
3 | \n", "3 | \n", "M1E | \n", "M1 | \n", "E | \n", "-17.576103 | \n", "-9.041828 | \n", "-9.080865 | \n", "-6.556577 | \n", "-7.643363 | \n", "-7.661278 | \n", "-7.244850 | \n", "-7.663014 | \n", "
4 | \n", "4 | \n", "M1F | \n", "M1 | \n", "F | \n", "-13.433237 | \n", "-10.600483 | \n", "-9.636066 | \n", "-7.294350 | \n", "-8.199809 | \n", "-8.164932 | \n", "-8.874701 | \n", "-9.020489 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
3895 | \n", "3895 | \n", "G195S | \n", "G195 | \n", "S | \n", "-9.930399 | \n", "0.551918 | \n", "0.538798 | \n", "0.282230 | \n", "0.335325 | \n", "0.482387 | \n", "0.505919 | \n", "0.841090 | \n", "
3896 | \n", "3896 | \n", "G195T | \n", "G195 | \n", "T | \n", "-13.784996 | \n", "0.215631 | \n", "0.102809 | \n", "0.036828 | \n", "-0.015700 | \n", "0.123055 | \n", "0.254141 | \n", "0.318797 | \n", "
3897 | \n", "3897 | \n", "G195V | \n", "G195 | \n", "V | \n", "-12.468152 | \n", "-0.506383 | \n", "-0.631024 | \n", "-0.503328 | \n", "-0.551369 | \n", "-0.467469 | \n", "-0.509331 | \n", "-0.360502 | \n", "
3898 | \n", "3898 | \n", "G195W | \n", "G195 | \n", "W | \n", "-14.053451 | \n", "-3.002845 | \n", "-2.173256 | \n", "-1.882592 | \n", "-1.959077 | \n", "-2.038070 | \n", "-2.005057 | \n", "-2.339551 | \n", "
3899 | \n", "3899 | \n", "G195Y | \n", "G195 | \n", "Y | \n", "-15.699408 | \n", "-2.778253 | \n", "-2.155714 | \n", "-1.750376 | \n", "-1.710923 | \n", "-1.869018 | \n", "-1.828054 | \n", "-2.049861 | \n", "
3900 rows × 12 columns
\n", "