Skip to content

Instantly share code, notes, and snippets.

@donvito
Created April 8, 2023 06:58
Show Gist options
  • Save donvito/bf3575f7d8d87d39e15301da9ee3e9eb to your computer and use it in GitHub Desktop.
Save donvito/bf3575f7d8d87d39e15301da9ee3e9eb to your computer and use it in GitHub Desktop.
llama_index_public.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"authorship_tag": "ABX9TyM/S+q86umB0Nsri/Z87hjh",
"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": [
"<a href=\"https://colab.research.google.com/gist/donvito/bf3575f7d8d87d39e15301da9ee3e9eb/llama_index_public.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"# **Install Dependencies**"
],
"metadata": {
"id": "R5SQMrNJeqil"
}
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "mCnB4zUGecU6"
},
"outputs": [],
"source": [
"pip install llama-index PyPDF2"
]
},
{
"cell_type": "markdown",
"source": [
"# **Prepare your Data**"
],
"metadata": {
"id": "hCCrHiLxUzvj"
}
},
{
"cell_type": "markdown",
"source": [
"Before you run the sample code, you need to create a /data folder in Google Colab. Then, upload all PDFs you want to index or search.\n",
"\n",
"For this example, I downloaded my resume as PDF from LinkedIn then I uploaded it in the data folder as **Melvin Resume.pdf**. "
],
"metadata": {
"id": "mi7xc9vwWG00"
}
},
{
"cell_type": "markdown",
"source": [
"![Screenshot 2023-04-05 at 3.33.37 PM.png](data:image/png;base64,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b20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj44NDA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzE4PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+MTQ0PC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj4xNDQ8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrHTfrLAABAAElEQVR4AeydBZgdRdaGKxAseCBIggRNWCS4Lbq4haCLO4u7/rgFCO6uwd0ddnF3Dx4IFtyD/3lrOb2ne/reuTpz753vPM+dLq/qt+/MfF19qrrbn6MtyERABERABERABERABERABJqCwBhNMUoNUgREQAREQAREQAREQAREIBLoXozD8OHDi2UrTwREQAREQAREQAREQAREoIMJaAa+g4GrOxEQAREQAREQAREQARGohoAEfDX0VFcEREAEREAEREAEREAEOpiABHwHA1d3IiACIiACIiACIiACIlANAQn4auiprgiIgAiIgAiIgAiIgAh0MAEJ+A4Gru5EQAREQAREQAREQAREoBoCEvDV0FNdERABERABERABERABEehgAhLwHQxc3YmACIiACIiACIiACIhANQQk4Kuhp7oiIAIiIAIiIAIiIAIi0MEEJOA7GLi6EwEREAEREAEREAEREIFqCEjAV0NPdUVABERABERABERABESggwl07+D+1J0INBWB77//Ppx++unJmFdZZZUwxxxzJHEFREAEREAEREAERKCjCUjAdzRx9ddUBH744Ydw5513JmNGvEvAJzgUEAEREAEREAER6AQCEvCdAL2Ru7z//vvD8OHDyx7ikksuGfr27Vt2PVUQAREQAREQAREQgWYmcNFFF8Xhv/DCC2HTTTcNc889d91PRwK+7oibowOE+wMPPFDxYN977734pZWIrxhhUvGxxx4Lo0aNivFpppkmzDLLLEmeAiIgAiIgAiIgAo1DAPF+8cUXJwN6/vnno4A/8cQTk7R6BLSItR5Um6xNxHc14t1Oly8wbcmqI3DEEUeEww47LH5uvvnm6hpTbREQAREQAREQgboQyIp36wQRb7PyllbrowR8rYk2YXu1EO922hLxRkJHERABERABERCBVibgZ96z51ksL1u2krhcaCqhpjpFCfClxSe+WsMdRy451VJUfREQAREQAREQgVoTYJa9PTN3mvbKVZIvAV8JNdVpl0AtZvWtDRaE1FvI//HHH+GDDz4IY445Zujdu3cYY4zqH0598cUX4csvvwyTTz55mGSSSUK3bt3a5VaLAr/99lt4//33w1hjjRWmnHLKMPbYY9eiWbUhAiIgAiIgAiLwF4FSFqqWUqZSoBLwlZJTvQ4jwIx+vUT8Qw89FG655Zbw1FNPpc6HrSLXX3/9MNNMM6XSi0V+//33cOutt4Znn302vPjii+Hrr79OFV9ggQXCVlttFWadddZU+quvvhoOOeSQJO3HH39MwrT3xBNPJHF86nr06JHELcDOQfjL09brr79uyfHYq1evsMYaa4Q111wzjDPOOKk8RURABERABERABCojgDYp5CpDXj1NAr6edNV2zQiwOLaWs/B//vlnGDp0aMFFJi+//HLYf//9w6KLLlrSOSDWBw8eHJ5++umC5blJ4LPuuuuG7bbbLin3008/hc8++yyJZwM+j9n1rN17772x72y6xal/zjnnhKuvvjqcdNJJYfrpp7csHUVABERABERABCoksNlmmwW2jsy60yDeyaunScDXk67arhmBSvamL9b5mWeeGa655ppiRWLeo48+2m4Z3FV22WWXNjPuM844Yxh33HHjzjx+Vh0h3b9//7D00kvHtnFx8bPqviwFfB4uPt7OOOOMNueBuw7bT3JTMWLEiKQ4cXa34dzlVpNgUUAEREAEREAEKibAdpEIeGbiBwwYENupt3inEwn4ii+ZKjYrgY8++qiN6MW9ZK211gpTTz11+Oqrr8JLL70UzjvvvJQA5nyZuc/aqaeemhLvK6+8cthyyy1Dz549Y1FmzW+44YaA2DY77rjj4kJffO3nnHPOcNttt1lWWGWVVYKJ+FVXXTXsscceSZ4P8JTA34Qg3PfZZ5+w0EILJf723PjwZODNN9+MVd95551w++23h0GDBvmmFBYBERABERABEaiQAL7u9fR3zxtW9Sv18lpVmgg0MIHLLrssNbptttkm7LTTTnHxKgtNEd7sonPCCScE/MeL2XfffZdym1l44YXDnnvumYh36nbv3j2ss846YfXVV0+aQqB/+OGHSbySAP773hDq9O8Xy+Iuc+ihh/pi0U8+laCICIiACIiACIhAUxHQDHxTXS4NtloCCG5moM0Q6IjrPCMPlxPvr54tx+41zJKb/eMf/0gJaEvnuNRSS4WbbropSXr77bfDtNNOm8TLDcwwwwxJ37jE/O1vf8ttgqcKc801V1xYSwFm7mUiIAIiIAIiIALNS0ACvsxr9+mnn9Zki0HfLSKQ7f5k9Sfw8ccfpzpBvGf9yn2BSSed1EfbiPOJJ564oItLquLoSPYa//DDD9kiZcVXXHHFwKcU69OnTyLgv/nmm1KqqIwIiIAIiIAIiECDEpCAL/PCIMJYhPjaa6+VWTO/+GyzzRZ3JcnPVWqtCXzyySepJmefffZUvNoIN2NvvPFGGDlyZNxZ5vPPPw8///xzbBbf+noa+86/++67sV92nvHbWBbbHaeeY1LbIiACIiACItDKBNje2W8liS88u9DU2ydeAr6CbxXbANZCxEu8VwC/yipZAW8LTatsNor0++67L1xxxRVtFr5W23Z79VmYeu2114Y77rijvaLKFwEREAEREAERqBEB233GN0can3pvJalFrJ56GWFEPAK8UpN4r5RcdfWys+BZF5lKWsevnkWwxx57bIeL9zvvvDPueCPxXsmVUx0REAEREAERqJyAn3nPtlIsL1u2krhm4Cuh9ledSmfiJd6rgF5lVXzWvfESpWrfTspCV9umkbbZg52tJOedd97ADcJEE00Ud6Jh9n/jjTf23VcVZjHqkCFDUm0ss8wygYW0jIF+xx9//Oi3f/zxxwfEvkwEREAEREAERKA2BJhp7yyTgK+SfLkiXuK9SuBVVmdHFm/4irN/eqWGcPf+5QsssEA4/PDDc28KxhprrEq7ya135ZVXptKPPvrouAd8KvGvCFtZykRABERABERABFqDgFxoanAdS3WnkXivAewqm5hqqqlSLbDosxrL3n1vu+22ueK9mj7y6vJCqUceeSTJWmKJJQqK96SQAiIgAiIgAiIgAh1CoN6LWCXga3QZ2xPxEu81Al1lM7179061cNVVV+W+XdUK+Z1cLM0fv/zySx8t+uKnDz74IFW2msj333+fqp7dotJn/v777+H999/3SQqLgAiIgAiIgAhUSYCFqoWsWF6hOuWkS8CXQ6udsoVEvMR7O+A6MHvCCScMK6ywQtIjO7jce++9SdwHEO/Zt5gy8+1tiimm8NGUO43PeP3118Nee+3lk8Jvv/2WiluElzKZjRgxwoKp4wQTTJCKP/nkk7ntsa0lfvIvvvhiqrwiIiACIiACIiAC1RHYbLPNwoknnthmy0htI1kd106pnfWJl3jvlMtQtNMNN9ww3HXXXUmZI488MrA7zWqrrRbGG2+8uCUkgvuss84K2Rc/JZX+Csw888yppOOOOy6+GGrxxReP6bjoPPfcc+GCCy5IlSOSnUW3AixAtZl/XHRog7eueuvWrVuYZ555YtukDx8+PAwePDjsuOOOYbLJJgu8JArRzu40Dz30kK8afvzxx8CsfLEXWKUqKCICIiACIiACIpBLAFeZervL5HWslW15VKpMMxFPM4RljUVg2mmnDQMHDgw333xzMrAzzzwz8GGRa3uiPak0OvC3v/0tzDHHHIEdYTDE8cEHHxzD7f3Iut9Y+Zlmmilpj7Qtttgi7iqD4Oemwtxl1ltvvUTAU+7++++PH8LtGW9jrdUe+O31pXwREAEREAEREIHaEpALTW15Jq0h3CXeExwNF9h5553Dmmuu2WZcWfG+1FJLtSnjE5jFPuigg0rayWbFFVf0VcMzzzyTiltknXXWsWByxJWGWflffvklSVtwwQXjiyKShAIBdtnJzg688sorBUorWQREQAREQAREoNEJSMA3+hXS+OpCAOHNy5d23333MP3007fpg5n4XXfdNc6m+20m87Zj7NWrV7j00kvD+uuv36YdEmj/iCOOCPvss0+csbdCuL38/PPPFk2Offr0CWwJ2aNHjyStUAD/uxNOOCHMOOOMbYpQn5uGoUOHBtyGvL399ts+qrAIiIAIiIAIiEATEeg2elFeelWeGzwCQ9b6BHhb2HvvvdfQJ9q3b9+SZpsrPQnepvrWW2/FFy7hb55dJFpquyxM/fTTT8OHH34YX6KEsMavvhL79ddfAzvXjBw5Ms7wswWmv5nItvntt9/GfjlON910gfL4ystEQAREQAREQATqR+Ciiy6Kjb/wwgtRq2SfetejZ/nA14Oq2mw6AuxOw6LQao0ZembQ+VRrvPiJG4C82fW8tnnzKh+ZCIiACIiACIhAxxBAvDMRasbmEwh4dqepp8mFpp501bYIiIAIiIAIiIAIiEBLEsiKdztJRDx59TQJ+HrSVdsiIAIiIAIiIAIiIAItScDPvGdPsFhetmwlcQn4SqipjgiIgAiIgAiIgAiIQJclwCx7e1ZKmfbaKJQvAV+ITBdKz9uFpQudvk5VBERABERABERABMoiUMpC1VLKlNWpKywB72Ao2LgEllxyycYdnEYmAiIgAiIgAiLQ5QhsuummBc+5WF7BSmVkSMCXAatVi/KyokYWyIyNbSRlIiACIiACIiACItAoBHgXS94sO+KdvHqa9oGvJ90ma5u94Pk0yv7/uPa09ybUJkOs4YqACIiACIiACLQYAXzdWbQ6YMCAeGb1Fu90IgHfYl8inY4IiIAIiIAIiIAIiEBrE5ALTWtfX52dCIiACIiACIiACIhAixGQgG+xC6rTEQEREAEREAEREAERaG0CEvCtfX11diIgAiIgAiIgAiIgAi1GQAK+xS6oTkcEREAEREAEREAERKC1CUjAt/b11dmJgAiIgAiIgAiIgAi0GAEJ+Ba7oDodERABERABERABERCB1iYgAd/a11dnJwIiIAIiIAIiIAIi0GIEJOBb7ILqdERABERABERABERABFqbgAR8a19fnZ0IiIAIiIAIiIAIiECLEZCAb7ELqtMRAREQAREQAREQARFobQIS8K19fXV2IiACIiACIiACIiACLUZAAr7FLqhORwREQAREQAREQAREoLUJdPtztLX2KersREAEREAEREAEREAERKB1CGgGvnWupc5EBERABERABERABFqGwO+//x7++OOPwFyzn28mnTh5GEcrZ2GDYPWsrMWtDd8OYcunfGf2b+MvdJSAL0RG6SIgAiIgAiIgAiIgAh1GAPFsoplOxxxzzNCtW7f4sUFQZowxxkjSEdqUsTSOXoRTz4t3y7Ny1PVGWT7kd2b/NiYbr8XtKAFvJHQUAREQAREQAREQARHoNAKIVUQzRtiLV8KIewzRbaLchDtxK2/5JtKpY+UIm0gnjJGHUb9R+2fMdv6MVQIeCjIREAEREAEREAEREIEOJWCiG2H622+/pWbaTYRzNGFugtzqmainPuU4kkY+ZuUsz/ogjlC3sqT/+uuvyblbfyaYfTtWhyMfylTTv7VhY7NBMEb65UgZzM6fuBaxGikdRUAEREAEREAEREAE6krAxDWdIE7NTKgihrOz5VaOdBPVpFmcsNXPhk18I9itru/TwrRFWeufOGYimrD1R7je/duTAN8/fRKP/Y9W8dqFJqLQDxEQAREQAREQAREQgXoQQHgigOPs8V/CnbDFTY6aSEasYsRNtNq4yENoc+Rjda0tylHHZtkp4/u3cVDe6tixvf6tz1r1z1jtHDjm9c/YzCiDaQbeiOgoAiIgAiIgAiIgAiJQcwImQBGfCGkTrCaqEa24kHTv3j0R5pZHXftYPRPg2biV8ydAGTMvjilLH4j8vP7Jt36s3Wx/Pk4fVs7642j9cyynf+rm9W/p8oGHhEwEREAEREAEREAERKDmBBC1GEdmrS2OOLUP6SbeEdVmVpY4ZU0Mk27iliPiHzPRjyinrJUnjzqUszbpz8S79U998q2elSVuZS2POMaR+lix/snDz9768O0xLuKWRx/07eNWnn7iGEf/+N+8PKkyEWgxAq+//nq4+eaba3JW/fr1C6uvvnpN2lIjIiACIiACItDqBKLY/EuQmjDlnBGnxcyEOXUII5LtaKLZ2iad9ijLx8K0b2U4+nK+f+p4sz4R1hamfKn9W5/UtXB7/fsxWJ+cs4Xp386bY3c/YIVFoNUI3HTTTYFPrYybAUwivlZE1Y4IiEArETCx0krnpHOpnACik+8EghMz0UyapVuaCXREMsLZxCv1mLm2OsR9HnHyMNItTJ++f9LJxyydWXgLc6Rv6x/hbKLadqixtrP90yZlrS3iJrapQ5ij1bdyxfpnHL5/C9M29SXgISFrWQK1FO8GydqUiDcilR///e9/hzvvvDM2wB+rwYMHJ3/oK29VNUVABColcOONN4ZHH300Vp944onD/vvvX7Sp7777Lpx33nnh6aefDi+++GL44YcfwnTTTRfWW2+9sO222xatq8zWJeDFsIlVRLkJZM6csAlqxOlYY40V45ZmdLJiGRFMmhfFJm45ZtulPGOgju+f+jbDTj0T03n9U8/Et/VPecL2Ybyl9k+dbP92Pnn9W54xYdwS8EZDx5YjYEK7FieGWPftWbgzRfy3334bXnnlldTpzTTTTGGKKaZIpZUTefbZZ8PPP/+cVJlwwgnDHHPMkcRrHXjppZfCtddemzR7+OGH10XAw+m2226LwmKVVVYJnFdn2jfffBNeffXVokPgn8PUU08dP/zxlolARxB48sknk9/J8ccfv6iAR7Rvt9124YsvvkgN7f333w+ff/55Kk2RrkUAIesFM2H+ppGO+ETAItg5Io69kEZs2988Zr6pR33q2s0AdQiTRhuEMeKW9ssvvySC3cZCns2m0z/1sv2buLay2f7phzrZMVn/5NGG9c+5UJYjbXKu1gb9k27nb3VJI8xYbZx2XtRlTBLwEaN+iEBxAibUTbhT2sKWV7yF2ucitrfYYotUw+uuu244+uijU2mlRj7++OOw9tprp4rPMMMM4b777kulNVuEGcLVVlstGfZbb70VDjjggCTeGYFnnnkmbLXVViV3zYzmyiuvHLbeeusw6aSTllxPBUWgXgR+/PHHXPFu/U000UQW1LGLETBRjAhFyJp4NaGNEEWcInAJm4gl38rb0cQtZUgjbmHq8sFoj37Is7i1bf1bHvnkMVnFkXZNOFu/HClv/RPnY+dEmLr28f1Tjzh5hK1/jmbkWf+k5fVv/ZngJ45wx2hLAj6i0I9WJDBs2LCanpYJdRPuNG5hy6tphxU0dvXVV4f/+7//Czz6Ltf8THi5dRu5PLOB3phhbDbjHM4666z42XvvveWa0GwXsAXHe/7556dm3rnJ3G+//QIL/REmlfwNakFMXfqUEK8mcBGcCFA+JlYRw6QTR8xTHqMMM88WNxHNkXIYdRC2lLU+7GhtWv+Ut76tri9r7ZNGu9nyNk6ONntv/VPW2rJjKf1Tn/KUtfaJE7b+rW1EO+Mfe+yxIxPKUV8CPqLSDxEojYAJdRPu1LKw5ZXWUv1K3XrrrWHDDTcsqwP+iAwdOrSsOs1SeNZZZw2TTTZZIjaYyW40Y3y4y3jDBeGTTz7xSTF8zDHHhMknn7zN05I2BZUgAnUkwFMkb5dffnno3bu3T1K4CxJANJtYRmgSN7FqYV+Gsvz/QZjztNSEu5Ulz4yylk6Y9q0P4maE6ROz8oStjpW1I6KZctmyXlhbfWvbjoX690LcxkIdylu/tIlRljTr38og3Ekjf5xxxgk9evSIIt7WCkjA/5effopAyQRMqJtwp6KFLa/kxupQECFeroB/8MEHE4FbhyF1apP8seP8HnnkkTDNNNOE/v37d+p48jo/+OCDw6qrrtomi39qzz33XEC0czRjFn7eeecNM844oyXpKAIdSsCvv1lhhRUk3juUfmN2hthEfCJYTYx68UrY3EEImzjnic33338fRay5iHCGJo7tbK1d0jETwqQT5mP907aVs/rWHuVMNJNn4y5U3up3Zv9w++mnn6ILjZ2nBLxdGR1FoAwCJtRNuFPVwpZXRnM1Lfrmm29GsTfPPPOU3C6zZ61s4403Xlh22WWb7hR5ZLrQQgvFRYX4zP/nP/9JzgGXJ4S8TAQ6mgACwi9cnXbaaTt6COqvAQl4gct3xD4m1BmyiU/STGRTD4GKgPZls6dYKK9Qera+jyPay7VC/RRKL9Z+uf1zY8OEjjGF2X+fMRTrRXkiIAK5BBDqWbGOiDchn1upgxKvvPLKknv66KOParJQlT8u77zzTmCv/FGjRpXcf6MX5A/te++9F7gx6qzz4h/bUUcdlULV3i42VrhW14VzZwEw15dH3Y1mX375ZXj55ZcDiyuLGY/oP/zww3g9+e5X8s/X2mfWEB5876tpx9or5chsJX0y9mrs66+/jrzYzapa4ymXrGsT4O9kVpQiNjHEJn/DmPUmbCKePNL5neR7LStOAEbGmb83moEvzku5IlCUgAl4L9otbHlFG6hhJts9ImCwa665Ji4oK2Uh2XXXXZcaxXzzzRey/q2pAi7CH+KHH344Lq587LHHXE4Is8wyS1hkkUXCbrvtVvaCNh4VLrPMMkl7AwcODPvuu28SzwvsuOOOgZ15MHzE7e27zOwsscQSSRW2vdt4442TOIHtt98+PP/88zGNnXx23XXXcPvtt8eZ76eeeirubW0VZhi9Mw8z37gNdKSxPShMuZHAvAtDdhy1ui5ch8suuyxccMEFbfzx2WKQ67LTTjuFqaaaKjuEGD/ppJMCC6sxf01iQuYH57Xpppsmqccff3z8/lgCi4+5LmZ33HFH+PTTTwN9cI38jPBcc80VFlxwwTg22zIUwXvKKack47F2OC688MLhwAMPDLPNNptPzg1zI8N36+yzzw7vvvtuqgxPvVZcccW4OxRipVLz30f2UmdP9dNPPz3cc889Ubxbu1yDxRZbLOywww4lbfeKaIcr+7z7sbMAdfHFFw977rmnNZ17HDRoUBg5cmSykM8KnXnmmeGGG26waOS+/vrrJ3EFugYBxDiGyDShTpjZY/4O87F8K4sQpSxmaTGiHykCdtPDkQ/MJOBTiBQRgfIJmFA34U4LFra88lstv8Y///nPRMBT+5ZbbgkbbbRR0Yb44+kXryJAZp999pIEPLMB++yzTyKUsx0hyPjcfffdgX/wAwYMyBYpGMflhcfyCDMMEYm48P6RvvJXX30VBbelIUbMOEe/GJSyWUPcWRlmZ/E5Z9eXPEP4cBPAFp4dvR0lC11NwCNYmbnKzn7W6rowy8uNjhfGngcv7Lniiivihxdw5Qk26hrX9mbtEcZWln5o3xtxn3/RRReFk08+2RdJwrxQiA83Odx88ASF34VC5/L4448H3g8wZMiQsM466yTtZANstbrZZpsl1yCbzzoFPvfff3848cQTK34ng/8+snaDvyd+DYT1C5O77rorfk477bS41ajlZY88JeA7m92ViXKk8TvGlrG4bRWyt99+u811sbL+2nCjIOt6BBDgiEuMv7vcxJLG3yQLI+gJmxDlSFnM6saIfqQIwM3z5WZILjQpRIqIQGUEEOpZsc4/XRPylbVaXi1mHP1M6CWXXNJuAw888EBK1CBySnET4Q/u5ptv3ka8MyPIjire+Me+xhprBP75l2NeSCFUim3/6H3D6SN7LcrplycSWfHOeWUNYWhPPLJ59Yr7WXc4Z8V7ra4L7iiIvTzBy2xt1nhbp729M5tXr3hWvOddI54KbbDBBnHHHn8ueWUZJzekn332We6QEdU8cbAbKCuU952nX57kcINVrTHrnifes+3yBIqnEnmGQOd3Ik+8+/L8rhYrw1OgQuxItw+7Zci6DgH+7iAuEZmIcGaHvUgnTr59EJ/UMRFv4rTrECv/TOEJNxPxkXP5zaiGCIhAHoE8EV/rvejz+rU0/iBuNnp20AyhYS4llpY9MoNqxj9fHv/jM92esQc0s5ZmuJXwCJ03qzJrjjsKAsYbrg7l2HLLLZcqXkicUMjnIWxZ+Fmt4f6DqwQzl5wXNzverYf2zzjjjGq7Kbk+s7pehLI9ZtZqdV1ox8+oIlxxheH7zDh4A2f2+u6yyy7Z4dQ9jksRT3e4ueMaMeu+++67p/pF/NpsPguBGTtl8ee/8cYb27ieXHjhhan6RPhnydMWz5/vAjct9p3/97//HfzCcYQwrmy1Mm6uubnkGnAjx+9u9mbquOOOS2Yzfb98T40B6fyOXHzxxfEGlL8TcMBVpz1jhp7zzd6M80SKdPt4V6j22lR+8xMwFxg7mjj3wpww6VnjdwvLy8uWVTxEEQ8zeGoGXt8IESiBAO4EpXx4iUlnbVPIY8o111wzdTZXXXVVKu4jzCj6t6ziZ4vrSnsz8PjA+re9MuvPkwbvIsNbGCnj3+x62223hddee80PoWgY/33cGswQGXl/5HHN8OdBn8xWVGOsJzjvvPNS4g6XHnyo/RMG85uvpq9S6sINX3Nv2a1Ca3ld/NMObs7wm55//vmTGf+ePXvGRbV+HQDiFheTjjJuOBHbjAH/emyCCSYIzETniVHWYvCiIcaOITbwlceX3Vve4mC+X9y4mPEugXPOOSf1xKtv375tRDVuNKwjqNZ4GnLYYYfFGwSeuvB7yk0qN818V81w77r33nstGo/cSNg6BBIQ/bjX4WbGTDm/K3BgXUf25ifVkCIiUISAzcDbbDt/qy2M4ORjccQnZrPJlLW0Il106SzPEBD83soHvkt/JXTypRLAJ7rRjcf1CBlmS20BZ7HFrNk3r9qMKjcCxQyfdm/4PyOc8myPPfaIC0Etj7qlLBS08rjeIPwxc6NhZtzbQw895KO5+6mnCrQTQRiee+65USRliyKceNKC+wzGLHWeH3q2XntxhG/WdYHdQUhjD3svwGiLm0Qvnkmr5XXBZ9xs+umnz70h4p8v6y5YxGzGTWH2hVSWV+vjCSecUHDvccbl3aC4piwMzTPGu/TSSydbdL7xxhttinHz6I0Fr5x/1vAf503IzEhj3NTwBGDRRRfNFi05jkDnxiPPJp100uj24xdlc9PuvxvZHam4wfGudr5d8hhv1iXNl1FYBIoRMKFugpOyCHebgSfd3EGsHfKxvN8pK9PVj/5mxyayNAPf1b8VOv+WIWDCO7uY0MS8P1H+AHgf+QUWWCDucEKZ9mbgmb0zQxgtueSSFm1znHLKKVNPJLIitU2FTAI7bNCHGQv2subdZ5gtZhFuNYYbBOMuZNk9r3ljarXGFpFLLbVU6sONGIIqK95x3WABZ/YpQy2vixeczDyzkDLPGLO5TXBkB6OOsl69ehXsqk+fPqk8xpnl5Qt4VxTvOkQZtqVkRyIzngoV+36wo403FkVXY5NMMkkUQIXa4Fr5p364fHnzPvv8LuW9MMyXL3ZuvpzCImAETKwjxAmbrzb5hM1MqFMGs3omTi3dytfiyJoWnqDhOtfM5lnZjY5m4Jv5imrsIuAImO86i1kRsrZN3KWXXtpm28Ts4lU/g2ftuKZTQe9iwBZ93n0lVfCviN/Vws/s5pXNplEXlxj8dTF8gJn9NDGGe4LN0JNvTxEI18vGHXfcVNMd+eiXJ0HeLckPpJbXhRlpf0PA94MnH4hXBGqjvwE2u1sRIriY8WSlkGUFODe4LCwt1UaMGFFq0YrK8c+ca4KLH8ZNMjfo9jviBT03WNnvb0WdqpIIOAI2w47I5PtoQp2wiU2Km0C3NOL8/eQpJkfq2eyya76qIL8PPJXiSSJugM1qxhY+sOL3WwK+Wa+mxi0CGQI2A88fx0022SQceuihsYQtZp133nmTGmwZZ8asnF8wau1Yvj+S5xfDMVu5zTbb+CJFw3nuCUUrjM5kJtoEPH0zk2KLVLMzw95nvr12Gy3fP2mwsXnWLDAuJN5rfV1WW221uFjS+4ezs4rt9c86gLXWWivO5nofbBt3Kx2zT1i4YW3vptWf/wcffOCjdQlnnzgw64ibDP/o7Uaejgu5ztRlUGq0yxFAgDPjztHEuhfliE/+P/G9NEFKvgl60hvVcIdjDRRj9ZNIHTVeBLs9zYAdLOVC01H01Y8I1JmA/XLTTXYbRe8Hy4yi93FldnWcccZJRufbSRL/CnzzzTfZpLLiXpCWWnHuuedO7bZx5513JlW93zduQNNMM02S10wB/jF4VxTCLJDlSYoZ511o28paXxf+WbClIosw80Qf/8xYxMnNFQs6/SyvjbdVjtXuaV7ttSmFo//9pTzXB8vuvV9orUosrB8iUAEBE+pWFUFuAp48Phbn74qJT8rb/xoT9NZGIx55SsBaJdb5dMaNhudsHDUD34jfFI1JBKokgMsAs7W2UJUje3Wzs0v2zass+CvVso/fmYnF3aJUywqNUuox48G5sGgRu/XWW+OWfsxAeP93ZoRbyfgjzc4gtiCSczvyyCPD5Zdf3uY063VduBFkNp4388Ia1ys/o8tAcN2g3KmnnhqWGu1r3mqWZcsTB+9z3t75dsQTCvz0vbELFCbB7qkoXA8CiFkT6CYyTZCTbrPu/D0jbIKesdhsPOUwKx8jFf6gfd9Hqc0wNsZYK6t0HIX6908pGCu7UUnAF6KldBFocgIsZjUBz6mwmJWX2vjFq0sssUT0DSz1VBEGiHab4WMruo7YoQcRaQKevtnfHl9kP6O//PLLl3oaTVOOc2KLP/Y3x9h7n6cn2Zumel4X/qnydIMPhtsUO8+wU48tkOQ6sM0lTw1q+U8wdtjJP/Cd9cZ+7B2x1sL32V6YLUS92VMTroVfD5P15/d1FBaBSgjw9wFxaSIc8c73zuKsR0Fw2seEKGutCFs6greame0XXnghulfylBKXQp7GtudSiX88a31wc+PldezqxIJ2/u7yjgkz3FG9aylbunJ+rD1ZaaWVrFg8F56U8neQmXoM9zZu+HlamV2bk1QsIcDTCmMHJ+JyoSkBnIqIQDMSYDcV/0eInUsQfya+OScEfbnmt4Hkj2ZHGCLK73DCbjTefYZt89pbqNgR46x1H/zBZltCb0cccUT8R+HTCNfqunBjxD8z+2T7QRzyRISdWdjm0wwRn/0+eDFPfjX/oK2fjj76HWro2y8W7uixFOrPc+f6+Df0+gXHlEMwyUSgVgQQ3nynTFzyO08cgWtCkzJe1JNv5cijrH0qGRcTOqeffnp44okn4qQObbJhAmn+hYO+bZ4q8kST3wn+1iGuv/rqqxhnssj/TvE/kzJmrIthnYmfQOKcePcJ70QZPnx4ZIDIZhyIetwkzWXI2innCB8Mznwiz3IaUFkREIHmIuDfiIjrw7/+9a/kBJhJ/8c//pHESw3MPPPMSVHazNvaMSnwV6AWfsDeRYZdBfze3IMGDcp22TJxFuwutdRSyfnAPO8Nn7W6LryFld0a7FNo1pZ/IP77xACzW7Vl94TPLghNTmp0wN9Y+vTODvOP3a9FGDp0aDK7VmxstfjO0357//SZcUSMmPnvAWk+ztMTv/7F6vgjwkQmAqUSQFjyt8DfnJPG95Z0E5zECSOu+Vg6ZYjjY44ILteY6bb3csw555zhoIMOisKdiQ9uXr0Qt7YZ6/XXXx/HzAsIEd6Ifd62zMsYGYdfa4X4PuSQQ6x6FOO83dhvKsAbyBHu/L3YYYcdwmmnnRbXENn/YFwNK9nEwTqFKeOCI7wwzcAbHR1FoAUJ4HpSyHAFqOSRnhfStM3jRWYuChlb7vE0gMeO/JGu1PzLaZj5sNkPdm8pthd9pf01Ur299torNRxenmXnbxm1ui7ZHU34R1fIeNmUt+x2jNk98/1TE1+PR9nZN836/M4Ob7bZZqkh8J0vJDb453rcccfF77x3YUs1UEaEGUR/s+qrMgbWHnhbZ511fDRk44iR7OJWq4AQKmeHHaunY9cl4IU7Yb7/HE2sI9AxE/mk22yyleXo08uhyaQB7jhTTDFF2GqrraLrDO1z080bmW09iG+T/hDf5G+99dbx7cz0z9M2FuVjzJyX8/+Kv5u0x+J/bgr438qbjv/+978nN9HmcujHUmqYMWNwtBskCfhS6amcCDQhAfZp33DDDXNH7mcPcgsUSORFSbza3YxZPXwGbYtBS//000+jn7RtM4kLj5/FsHKlHvFP9CLe6jH7nl1oaHmtcsQ9Juuuct5556VOr1bXZSk3208H7ESDsPMv+GL/fa539sYiu88ys1nehgwZkvqe8FiaF0Wx7Wn2hsTX6+wwrmZ+MSo3pfjBc+Nhxj/Yt99+Oy48ZnYOYxGy30+fNLY+5TvLmoKs+CY/z3bfffe4nsUvVmWGnycgfk96L0CsHWYh/c0dM/b87jMbaKKAvep58oJ7lkwEyiGA8DXBjrAkbrPqtGM3unbkO2dCn7LEOWJ2jJESf9g2rfijZycQcKtk8ihrjI90tlb27ynhRoC3mWOM1/++ZdvIxpmsoD2/ZsbaYPMIrNCNc7at9uLGTItY2yOlfBFocgLsMuP3fed0eJtndqa1nNPcZZddoq+fuT1w5EaB2XD+MCJsvLihbfI233zzcrppUxYRm3XZae/Nkm0aadIEmN9www3J6E8++eTAtbUFi2TU4rrwT4+FyYhPM4QdQp4FtTzC5XFx1hD+3g+f/Jlmmiku3rK3ASPS+Z7gvsX3IfsdybbZKHH+4R9++OGpm6jnnnsucM6I5r59+0Y3luxNCKKf3zVvPD2xly7BlEVw3s3Fl/Vhrgcffr+YGczbUnTXXXeN4snXI8wjfb/7FDOBvFeAa8DNr/0eZ+spLgKlELAZdQSriXCOCHV+d2wmm1lp/n5glPVCnjbshrKUPq2M/Q3p3bu3JaWOhf7P0T/uZPwecRPA7y7jqcZohwkJfr/YftZPelTTLnXhCR/GzRFeY1TbqOqLgAg0NgFEBMLLWyWLV319ZvZ5A2pWnPBHkB1K7I+q1UGw8TKmUoSK1ck7smsOosOMdrOzvpbXakeEon/ywfmddNJJqdOs1XVhhpabPs+aa8use554Z4Exrhl5xuwx18kbgjH7HfEz3L5so4R5LM4CNe8Pz9g4jwcffLDNEwSYsFMPj9G9ZWf1Stln3vPjxiFPvB911FFxZt/3ZWFuMHgS4Nshj2vqxTvXO2/G0trRUQTyCCB8+SAqTQTbLLHFyUO8I0Cj+Bwdt8XWlCGdT7lmdQq5g+alM9POQtWrr746LkrniSK71rBbDH70lRgLafkdfOihh+JOXfwuMYGR/d9bSdvU8RwtLgFfKU3VE4FOJmB//GwY2bilc8Tf3YwZW4RwIfOPFIvt247PIS/zYba2kPhCMOAXeO+998bHi9k+s39cbfYmW87izBb6BavMQDPDU8z4Z+Etj5NP82Ffz8LZ/rLnYOWKHbNttNenteX3hCeNf0BZAViL60LbiyyySLxJw1XE72ZEnhn/8Fj8xYvCCu05zo0Hvu9so5ZnfB/ZDeLCCy9MZWe5thdPVR4d8Tcfxb7H1PPf+Ww7Ps4/d95DwHea88ozmLDeAyZTTjllmyJbbrllksbvoX9DcpLhAosttljk57/3LjsKBLaGbe99DrhYIeJxQ/NsrC22JuXp1nrrrWdJJbumlcovaViBliFgf7PtaH9v+RtHGnGOCFBLI8wHQU+ezShnf8dLgWQz7IUW2+elv/baa3GWnL75XWYihAWsTDZU+pSYXbk4H/4X8rQOMY8//I477hiWGv2krhZmPOEVb5BG//ivZ3wtWlcbItBABBCW9qi6s4bFP3PvitBZ4+iIfvnjxQ4p7DTCH+JevXoF/AKzYrUjxqI+/kegVteFmeNhw4YFfK/ZXYZH1sz4l2PMfLFTAz7X+Jrin50nJstpszPLwuStt96KM9n433Iz4l2aCo2NevjD5gl86iDWbe9/BDw732D8u2bXDd58yw0TLkuVrP9g1pI2uA48UdDvacSrHxUQiELyLxFO2CQlR0Q6At5myfOO/H1iBpz/Gz179kzKljoUFtmzYwx/S1iT4//fsHc7N9PsrIRvOi8zxHydfffdN9XVk08+GWx90bHHHhtffkgB1nqxww3GWh7WZJnxdw2hjuHG9re//c2y4vHAAw8MrAnjht1PpqUKtRPhvFgzxP9V/tbwP1Y+8O1AU7YIiEBpBPiDwkxtodna0lpRqVoTqNV1wRWkWvcKZmpb6TsCk0oekVMv61pTynVnBo4ZR5t1LKVOXhnEQCtdh7xzVFrHETChbj0SN2FPGLO4hU3gI+ptZtnKxgol/uD3jydH3JDyRHLNNdcMPHHjJpknU3nbotr2tuw0gzC3m24moHhylmd+ooGdb5Zddtk4bsryd40JCW5CuAFg8T6/Y5wbroiI91qYcaVdbowk4GtBVW2IgAiIgAiIgAiIQBckYLPsHBGZHDET5Ih1jCPi0+JMLlCGND7EbcFrrFDCD9ZVscsSW7ayKJX1KMxSI5rpp+/o9R8IdW+4k3EDjchnVh3/d2brEfu4IH7//fe+eAzztJF2KcN7OLhpYA2YvYmVXaXuuOOO8OijjwbWqXCTwBMuZuetXptGy0jgJoebAtgSxtLOoWU0pqIiIAIiIAIiIAIiIAJdlwACnA/ikmNWvJvY5MgHkW4iFPcZRDb1yONYibGNMSIeVzBuBJhVZxaexfjstoTZOAizNzwvesKthnSENsKc2fydd96ZItHsXCzOlsisg6EO78DwL2tjhzTeu8KNAS5BPBFgbdPGG2+cbLTgx2BtlnqkLqxsTJHh6AT5wJdKUOWaioB84JvqcmmwIiACfxEo5AMvQCLQaARMQprARISbEEdk2uw6YcvjaOnUQ/COHDky+pVb3UrPE2HNbDr+9NxUtGds9ciLCNk+N7uPfKG6zKozflxn8vpgZyfOg00cTHAXaqvUdNqhXdx9uDmhX7nQlEpP5URABERABERABERABFIETMRzRGjyQeAizgmTzoc0jHQ+3mXG4ojjaizvzavF2mMRuPnEFyvn89rbdSm7XauvW2nYuBo7WMqFplKaqicCIiACIiACdSbAP26ZCDQqAQQl5mfXEeukm4sMs8WkIdgJU5a4fbcpiyClvCyfgPHiiOGeoxn4fFZKFQEREAEREIFOIcC2kbgBYJVsE9kpg1anXZaACXHEpQl50kysI84tbEIU0W4LVklDkFKH+rJ8AnD0N0wS8PmclCoCIiACIiACnUKgXDeAThmkOhWB0QRMVCIs+SDUbSbdxDjphClrM8jAY0Yelxmr4/MEty0BeGHGWc/m2jJSSosQYC/WzrZGGENnM1D/IiACIiACrUkA8Y2gRHybSOdMiVs6R2bXbVbe8k38E6cdCXhIFDb42k0RRwn4wqyU0+QEGkE8r7766k1OUcMXAREQAREQgXwCCEkEOh+MIzPFJuAR7WaIdBOghMmjvM3M+7JWR8f/EYCPMYLb/8j+r4xCItASBPr37x86U0B3Zt8tcQF1EiIgAiIgAg1NAEFpopwwwt0+DJwwAt0+JuypY+IfwW+iv6FPthMHFwX7Xzc8FpYPfCdeEHVdfwJeRA8bNqz+Hf7Vw8CBAwM3EDIREAEREAERaGUCJuIR52aITIubsCeND2KeGXiOxBHy5jdv9XVsS8B4kQMzCfi2jJTSYgS8iG+xU9PpiIAIiIAIiEBDEECMY4hLE+2IeGbXEeik8yGND+Utn/JWvyFOpsEGYZyMEUzlQtNgF0nDEQEREAEREAEREIFmI2DiknHbbDFp9nImwnwQn8zAW9zEKUdZWwL2hIMtZQnzga9m4NuyUooIiIAIiIAIiIAIiEAJBBCTJjIR4SbOqUrcRCez74h2m4UnjHEcb7zxYpiyJuxJMFFv9Wib+pjv09oi3cpYHStLW749wpThSB3Ow9KsPV+efq1tazN7LvXq/9tvvw2TTjpp3C+fscXP6MHplgfiMhEQAREQAREQAREQgbIImIxEVHpBa0Lb8i2OUMZIJ434qFGjwg8//BBfYEbcXG68SLfy1KUeYhqz9rL9U540f7T2SM8zS6d96tEHRzNri3yeJGCEMevfwlbWx+nf0q0vjvYhn7CV4QVXY489dujRo0e8yWE8dt6agYesTAREQAREQAREQAREoCICiE6ErAlkRDVCk3R746qJU/KsHPkYItXEMuUJ43pDORPoJmpNMCPyrX5e/whs0q0cbfGx9umXNmmPcvahP4SzlbN8ylOfOhjlrA5HO3/yybP+rZz1z3iMDWX5WB5H2oGHb8PeVGttxn5HV/zfrUUckn6IgAiIgAiIgAiIgAiIQPsEkJFewFIDEWrpHC1ukhNxihH3+YhbE8kWtrLWBkerS78YR8pR18YSM/76Yf0QNZHs65JvbZi4pj3C9EceZTCLE7Y2aNP3b2Ut3/onbv3bWK2MpSPSLYxwpy7jwEgnHuuODkjARyz6IQIiIAIiIAIiIAIiUA4BE7QIUSQlcROaNttsUhORSzmOGOnEKUc9M/KJW3ukU87XJUwZPpZn5RG8hGkXQWz9UNbEMXUwytKflSGdMB/Mp1td0i3s8wnTh/VJuxa28dpNAfUx8qlDXdIs3c6JMpbu2+o2uoIEPHRkIiACIiACIiACIiACZRNAgGIITS8rTcCbQKUMwtQEM+mWR13KY+Sb4CUddxbEK/m0b6KbupZOPeufuhjtmJiPCaN/UIZ6GG3xoby16fu1vuxGgPYwE+HWv6W31z9tW/+EaR8jzdq0NohjnB/t22w89UiTgI949EMEREAEREAEREAERKASAghZhCdC0wQoQhMzcUsZn0Y5y0fIWhv4viNQLY2jhSlPOcwEMEeri9C2dq0v69fK+PIWpj36QDSbWLc0jpi1QznM2rc2/Pn7fOvXjpSnDcrz8e16se7b93WsbS1ihYRMBERABERABERABESgIgImmjma2DShayIVcUyaiXyONstMp1aXI+UQtpiJXcK0jchFZFuc8liclR6dT5y2bRyk05bNYBOmXzv6cVLX2iOdNqwcfZBHmt2UELbyvn/qkIdZX3n9U9f6IWxx0vgQpy3axqxMPL/RBeRCE7HohwiIgAiIgAiIgAiIQCUEvJw00Wsz4iaETdgSJ89ELukYaSbqTaSbkEW0EqZOtj3qI27NrH/qmOglzeqTZnnUsXTSTCwTph/yTIRbOerTnvVrx1L6t/HQvp0r7VqbdiNAm8aHNMpgpFFPLjRGW0cREAEREAEREAEREIGKCZgoNaFLQwhR4iZyEaC2RSPlTZgWOtIG5RC4lCFsItZELkeMI+KWcpThQxpxPiae7UbB6sXKo39Q3ur6NH9e1PH9m/CmfCn9Mz7fP21hHLNhS6Ndu7EgTJ8S8BGbfoiACIiACIiACIiACFRLwAQmR8Qwhmi1uAlkRKwJVI7kY+Qj8HE5MYFPmglzaz8vz9qhrOWTZv1b+whg8smLYnj00cbFkbHRv42ZetY/+Vbf2rO8UvqnjtW3sXG0djkyNnO5oTzmZ+HpTwL+v1z0UwREQAREQAREQAREoAYEEKB5ohlBzAcx6mehCWMIW/IxRC1mbVEGcWuil7iJbxPjvg59WLoXx9a/tUsebVGX9ohjhDHKcy6U9/0Tr6Z/a5c2bZzWJ/3SJ0a+sSRMGeIS8BGPfoiACIiACIiACIiACFRLwAS4iVETvSZ4LW6imf6oQ3nyTKR6wW5jQmST79sycU0Z8n3/FqdtX4e43QBQz/rkiFl54rTBB7Ojbyvbv2+D8ta2r+P792ViJ6N/kM95WF3rl3SMPAn4iEI/REAEREAEREAEREAEakEAsWqzxiZQTQxzNNFraSbgOUZxOlr4erHKmKwsRzPClm4ilyPiPNs/dWwslkddE8sciVv/lMEsbv1wxKwtSy+3f+rx8f3TrvWX9Xm3shwxCfiIQT9EQAREQAREQAREQARqRQAhauKUNr1AJm5CFKFMmA91iHMD4I26NiNPmA9lEM0mpE34EieM+bYQxKRbHv1R1vqnPHlWhzwz6486ef1bXeoU69/OkfLZ/q2e9U8/ZpZm/RPXPvBGR0cREAEREAEREAEREIGaEECAIjgxwohj4ohPE6+IcMJ2JM+EM3VI9+VN1Fp9yhLGzOfd+rUjZawtytIeRprdFPixUd7XKbV/yjFe2rX61g9pvg9L9/2TRhvWP0e7oeBo+RyJawY+ItEPERABERABERABERCBWhNANPMxEWvtk4ZINSMfAWwimDhm4pUwAhfRi5lIpryJXmuTuIWpT9gEdqz8149s/5TN69/K1bt/xpnXv7EwRvF8Rxf+762LPyOFRUAEREAEREAEREAERKBGBBDHCFBkpwliwqQTt3QTqdYtccqYRfE6unxWuFPf2qAsdRDclub7t3H4OlbO+rcxlto/fVobef2TZ/3asVD/xoR2sv0TxzQDHzHohwiIQC0I8Ad1//33T/7YrrTSSmHppZeuRdOd3saxxx4bPvvssziO+eefP6y77rqdPiYNQAREQASahYCJWxOnxE1kI5b5/2Gz5Cbo84SuF+K+HBxMEHsmJsRJoz0T/r5/0pnZNzcc3661yTGb7uO0b2UJm7XXP3221z9tZfuXD7wR1lEERKBqAvwBvPrqq5N2pplmmpYR8DfccEP45JNP4rn98ssvEvDJVVZABERABNonYELWhCiilTQ+JuTJw0xoW5wypJkRR+xbPf73+Li1aeU50hbiHfP1rS97cRP5pNE2Rln7ECfd16ffWvRvi2wZZ/Zc6dfSbFwS8FCRJQRuuummMGzYsCReamDgwIGhf//+pRZXOREQAREQAREQgS5IAMGLmRBFsCKITaybUDVBbuLZylGXMohx0vhYWatrs+zWLkfMyhE3MW9lbTzWBmUtjzTyLY8jedX2zzisXTs/+iXd8ixs+ZwHaRLwkJAFhDufSu31118Pe++9t0R8pQBVTwQyBF544YXwwQcfxNQJJ5wwLLnkkpkSioqACIhA8xIwMYwwxUzIIk5NOJt4JY5Rhw91ELpWl3Imzr0QJ0wZ3xdlrZ5vI69/6tl46N/a4ujrVtq/nQtt5/VPu75/ytu5SMBDrYsb4rsa8W74jjnmGIl4g6GjCFRJ4MILLww333xzbGWqqaYKjz76aJUtqroIiIAINB4BBCqGIMYQxyZcOSJsTSwTJx9Bj8uJlY+B0T9M3FIHI07Y6ngBbHnWV6P3H0/I/fifQ5FLVLBrETCRUIuzRsRzQyATAREQAREQAREQgXIJIKgR1xwR6oRN1HPEEO+WRhyRbh/iVpcyVt8Wi9KmCXxf1oS+1bE2rD7xjuiffuz8GR/hPNMMfB4VpVVFABG/+uqrV9UGlfv16yeXnKopqgEREAEREAERaE4CNiuOqMXs6MN5ApdyVpeyvkxeuk/zfVi6pdmxnv3TdikmAV8KJZUpm0AtXHKs047wrR81alQYMWJEXEnep0+fgM9xpfb999+H9957L0w66aQB1wf7A1Bpe6xuf/fdd8M444wTpp122tQfsGybX3/9ddzqkNX0vXr1CuOPP362SFnxb775Jvphs5vMJJNMUlbdcgt/8cUX4eOPPw6TTz555FZu/VqV/+ijj8K3334bZphhhsi82nZr/X0odTzMJuFD/9NPP4Vqv9Ol9qlyIiACIiACHUNAAr5GnPlHibiS1Z5AvXzrETaXXXZZuOCCC5LtAW30CF921tlpp51KEpP3339/uP3228MzzzwTxba1w5HdeWhnxRVXLCi+t9lmm/DSSy/Fauutt17YYYcdwrnnnhvuvPPO8OKLLybNMS4WM6611lqp7Rmvv/76cN5557VxX5psssnC5ptvHrbaaqsw9thjJ+1YAAbLLLOMRcMZZ5wRevfuHY477rjw5JNPhvfffz/Jm2666cKiiy4a9txzz9CzZ88kvZrA559/Hq8BY//hx5FhogAAPzFJREFUhx+SpjjP+eabL2y88cap8SUFahzA7eu0004LTzzxROBGwoxrx/dg6623tqSSjpV8H37++efUNbUtK+mQMOzNjj/++LDIIotYNDlyw3XRRRfF7+Fzzz3XhinnsvPOO4cpp5wyqaOACIiACIhA8xHQi5xqdM0+/PDDcOONN0bhVaMmO6yZZvBbxyWnFm45BhXBhjj0Ys3yssfBgweH9ddfP5sc48yOI3bPOeec3HyfuMACC0RxNd544/nkGEZYvfzyyzG81FJLBcTcY4891qacT+DGY/HFFw9HHXVUvAnxednwLLPMEq677rowwQQTpLIQzXPOOWeStsUWW8QFzcW48FSBBZa4OGWNcc8222xJ8q677hoFY5LgAohlbiy8cHfZSZAx8RQm7wYkKVRF4L777mtXoC+22GLh4YcfTnrhep100klJ3ALVfB+4mZp99tmtqaJHvm/LLrtsqgzfn3/9619tbkZThf6KcLOy8sor52UpTQREQAREoAkI5HvGN8HAG3GIzL6efvrpjTi0ph9TJXvTFzrpL7/8MiAK80Qqs8xZ482ieTuAILgQ9lnxjusFs8fMfnt76qmnwpFHHumTcsPM3rYn3qnIOTBbj5D3luc28+abb8bZdV8uL0xbeVx8WWaDecOqbXHo80oNP/DAA5FdVrzDLDt+xsQ1qIfddddd7Yp3+vXivdA4qv0+4KPJudsn24+lc8SdyhtParip8LP2lJtnnnly15HsuOOOYfjw4b4JhUVABERABJqIgAR8jS+WRHyNgdahufPPPz8ldBA+vD2UmwTE89NPP93mLZu77LJLm5GYq4JlIJZwo2FG95prrgkIdvpCSJnhslPqLj243bCWAPH91ltvBd4EOsccc1hT8cj3DeOm4ZJLLollccXhs9dee8U8+3HWWWcFfORLsQMOOCDcfffd4e23347uGCeccEKbarj4VGK4eeCG42377bcPr7zySmSGyxDn4m+AeHrwxhtv+CpVh9mJgKcX3hZeeOFwyy23xL6Y0WYcyy23nC9SMFzt9wFRbteOI99LM556+DyevJjhr5+91gceeGBkCTdz7VpjjTWsSjwOGTIkFVdEBERABESgeQhIwNfhWknE1wFqDZvEt9sM4Ys/8fzzzx9Y+Inh342wW2GFFaxYnJVmgaU3hJ4ZYpOZ4uzbaJdeeumQFUrep93qZ4/bbrtt2G233aJ7C4tgmZ0dMGBA9IvPlqXvK6+8Mvz9739PFsxy07DddtuFzTbbLFWcxbDtGX7wzO7PPPPM0WefxbiDBg2KwtbfjFx66aWpG6H22rV83Df8LP+hhx4aBb25FrHKn3O56qqrrEo8nnjiial4tRGun/fxR6gjwnFjYbuxHj16xHEwXtya2rN6fh+K9c2Non+Sse+++8Z1D+OOO25SjWvI9xBXKrOHHnrIgjqKgAiIgAg0GQEJ+DpdMIn4OoGtQbPsEGM2/fTTJ6LX0jgiIv/5z38m7gwIV3Yn8Yaow4WGD77eE088sc9Own6RKInm654UyAS4Cdhjjz0yqf+Nsvhw7bXXTuWxKJEdZ/Isu26gPbcJfKhZbJtnCNstt9wylVXuOwSY9eZmw2yuueYKG2ywgUVTxxlnnDF1A4K7C24qtbKs69H//d//5frZc2OHiPc3L3ljqNf3Ia8vn8YNp30POfqZe1+Om5JVVlklSUL0f/rpp0lcAREQAREQgeYhoF1o6nitTMSzo4iscQiwm4fNluIy88gjj8SZ1uwIEWS4LRQyFlaWYrhGMEtus864PBSz9rae5KbD20ILLeSjqTA7ynjzPtI+3cLtbRW50UYbhVNOOcWKl+0Hn50tXmeddXJvoKwDFo8yK27GUxCEfbXGyzj8jRQ3WX379i3YLLPxbC3qZ7qzhev1fcj2k43jusWnFMvulMUWl9qRphRyKiMCIiACjUVAAr7O10Mivs6AK2getxYT8FRnNxq25GN2Eh/oSgUi/uLMcCMy+SCOzEy8W7yaY3aP+okmmqhgc+aWUrBAmRns0Y7bkbnilLuQ1epZt2wjec8991i0zTHbfq0EPP16w4Wq1tZR34fsuH/88cd448nNGp/PPvssvt+AcqwzkImACIiACDQ/AQn4DriGEvEdALmMLlZbbbW4YPXss89OarHri+38wmw5+6yvuuqqbRaNJhX+CvCyHHyJ2YnG6mfLtFqcmWoT4t4dqZTzREx6O/nkk3203TDbtdbCsu5QtZqF7szvA2wvv/zy+D6AYk8KasFPbYiACIiACHQuAfnAdxB/E/Ed1J26KUKARaH77LNPYFEk7ipZY7YcQY4vMXtlv/POO9kiMY5Y22+//eKCwa4i3jlxP6vvF4HmQsoksoVnNfbdd99VUz2pmx1He/7tScUigc78PjCz/o9//CNwQyTxXuQiKUsEREAEWoSAZuA78EKaiJdPfAdCL9IVCzyZjee63HHHHYG9yW1m2aqx5SPlTj311IBPvDdEPttPmiECWfi6/PLLR79idv4wsYvffS3daKzPzjjiomGWdwNkeXlHfMm9cZNUzguasrv8+LbKCWd9/RHf1VpnfR9YU8H7ALxwxxVszTXXjLsYca4ssObGlW1JS/XVr5aH6ouACIiACNSPgAR8/diq5SYgwPaMvCGVD4bPMC/tYY9z9l/HEEbsyf78888nCy5546h/aRdClt1V8l4ERRu2RSXhZjfvxlJs4WfeeeI/740ddCpdc+DbKTfcp0+fVJVqd2PpzO8D7wfw4h2m7IqUZ630Pcw7P6WJgAiIQFchIBeaDrzSvJ1Ts+8dCDynq1GjRgXcJ+yTLYIQZ5tGXn7jX3yDQHrhhReS4rz0yYsm9lwvJN6TSi0QwIXFbmw4nXLPOSvWS32pVa3RsRjXW7WLOzvz+/Dggw8mp8JTIG42ZSIgAiIgAq1NQAK+g66vxHsHgW6nG96Myo4j9vGzyb4q7gbsie6NN7SaZd1hpp56astqc2RxYa18t9s0XuOE3377rWiL1157bSo/u6VlKjMnki3P/ursDV/MGJN32ylWttQ8nrz4t9ry5tyRI0cWrM7+88WuYWd+H/zCYLaJ5LtbyPzNV6EyShcBERABEWh8AhLwHXCNJN47AHKJXWRdJ66//vqCNbP7tZs/OxWmmGKKVD385/Psq6++Cuyd7mfr2xPJee10VBo78xSaFedceEurN9YQlGPMfPs33NJX9oVKvj224txqq63CkksuGUp5g62v2154k002SRVhAWieLzw3GLvvvnvqGqYqjo7U4/vg3V1w7Sr0Eiv/nYbniBEjssOLcXaoyV6/Rv4u5p6EEkVABERABCIBCfg6fxEk3usMuMzmswtR2YkGAYlrjRlCiV1l9tprL0uKR79XuH8lPZmXXXZZ9Ik3kYXgwjd5ww03TLmcUBYh3KjGjQYvV+Jpg58ZZ+YWlyI/07zuuuuGaaaZpuxTOeigg1J1jjrqqLibj7/J+fXXX8Nzzz0X39KKiwj9Dho0KJS7602qo0yE9vwi3CuuuCLstttuwfaI5/xfe+21wBtaeQtsMavH98ELc/q+7bbbcm8w5pxzztTQeHJkL6mCI9dyyJAh4YADDkiVI1LsqUKbwkoQAREQARFoGAJaxFrHSyHxXke4FTbNjhzHHHNMaieOI444Im4pOddcc8UX3vC20Kwh/GebbbYkmZ1T8Hs/88wzk7Tjjz8+8GnPEPeNbAhpxDnGC65wM8oTzttuu21Fp4G7EWIS7mYsAObDLjNco8cff9yykiM3Q+X63CeVcwLdu3eP4nyXXXZJcnnBFx+EPeLW31QkhXIC9fg+zDrrrKme2D0GIY6fO2G2OMXYbYbvoY2VWXh296GcpaUachG7WXFJCoqACIiACDQBAc3A1+kiSbzXCWwNmmWRKjPmCBwzhA6z7nninWt5yimnWNHkiFsFArc9o76f6WWrykYVTp4J5wWTrHinDK5H5e5A4zltscUW8aYp2x/iM0+8r7/++uHggw/2TdQkjAvQCSec0KYtbrK8+OXGghd8FbNafx/YjjR7w8KTCK6Hf8sv3y3WEmTNj9/yTPRb3K/rsDQdRUAEREAEGp+ABHwdrpHEex2g1rhJhDcuCcw0Z90frCtEG1tFMjM8wQQTWHJyZLHg0KFDAy4gWSFKIQTfnnvuGetz0+DtjTfe8NHAokoz7/tsaf6YXaTITHIh8+1Spr222SWJHXj4DufZ0ksvHffMn3vuufOyU+dBgWL9sb/+PffcE2eLC4ljnnzg4jR48OBg58luQNxAVPrJ3pDgSsN+/nnnzHXFV/66664LSyyxRHLOeXvX1/L7QEecL+fuF9smA8gEWCPwn//8Jyy33HKZnP9G+b7jBsR31ZvfWcmnKywCIiACItDYBLr9Odoae4jNMTrcDA488MAoApptq0hcSpj5bGRDTNfzBTTscsJWgN98803AxaN3795hwgknLBkJv0bsJf7ee+9F3/FSZmxLbryOBZml9T7UMDbXGBY4cj4ffPBB9HVnC8jszUMth8bWnrz1Fr/tiSaaKOADnn3hEv3tv//+AX/1Su3oo49OXISybbCf+6uvvhp3vZl55pnjC7myZUqJ1/L7gC8+f194csNCanaaYdFsoWvBOozhw4eHjz/+OH6XOQ+7+Sll7CojAiIgAiLQ+AQKT901/tgbboSaeW+4S1LygHhD6DzzzFNy+WzBbt26RTcZ7yqTLdNscUQf4o9PR1jPnj0Dn860ccYZp6rvgY29lt8HhDquNFl3Gusre0TkcwPJRyYCIiACItCaBCTga3Rd2X6u2Wbea3TqakYEOpQArizlPB3JDs4vRs7mKS4CIiACIiACzUBAAr5GV4nH2jIREIH6E2Afeb+XfP17VA8iIAIiIAIi0FgE/rdyrrHGpdGIgAiIgAiIgAiIgAiIgAjkEJCAz4HS1ZL69evX1U5Z5ysCIiACIiACIiACTUtAAr5pL13XGjgvppHVngCLLWUiIAIiIAIiIALNRUA+8M11veoyWvbjxm666aa6tF9to4xPO2pUSzG/Prvv8PIqFmFj1SwOze9BqSIgAiIgAiIgArUmoH3ga020idtjL3j2QufTCIZrj91cNMJ4NAYREAEREAEREAERaAQCEvCNcBU0BhEQAREQAREQAREQAREokYB84EsEpWIiIAIiIAIiIAIiIAIi0AgEJOAb4SpoDCIgAiIgAiIgAiIgAiJQIgEJ+BJBqZgIiIAIiIAIiIAIiIAINAIBCfhGuAoagwiIgAiIgAiIgAiIgAiUSEACvkRQKiYCIiACIiACIiACIiACjUBAAr4RroLGIAIiIAIiIAIiIAIiIAIlEpCALxGUiomACIiACIiACIiACIhAIxCQgG+Eq6AxiIAIiIAIiIAIiIAIiECJBCTgSwSlYiIgAiIgAiIgAiIgAiLQCAQk4BvhKmgMIiACIiACIiACIiACIlAiAQn4EkGpmAiIgAiIgAiIgAiIgAg0AgEJ+Ea4ChqDCIiACIiACIiACIiACJRIQAK+RFAqJgIiIAIiIAIiIAIiIAKNQEACvhGugsYgAiIgAiIgAiIgAiIgAiUSkIAvEZSKiYAIiIAIiIAIiIAIiEAjEJCAb4SroDGIgAiIgAiIgAiIgAiIQIkEJOBLBKViIiACIiACIiACIiACItAIBCTgG+EqaAwiIAIiIAIiIAIiIAIiUCIBCfgSQamYCIiACIiACIiACIiACDQCAQn4RrgKGoMIiIAIiIAIiIAIiIAIlEhAAr5EUComAiIgAiIgAiIgAiIgAo1AoHsjDEJjaEwCr7/+erj55ptrMrh+/fqF1VdfvSZtqREREAEREAEREAER6MoEJOC78tUvcu433XRT4FMr42YAk4ivFVG1IwIiIAIiIAIi0FUJSMB31SvfznnXUrxbV9amRLwRaXt88cUXw6WXXppk7LvvvqFnz55JXAEREAEREAEREAERkIDXd6ANARPabTIqSECs+/Ys3Jki/scffwy33357ePvtt8OKK64YBgwYUMGZ1afKu+++G6699tqk8W222aYlBLy5Y0033XRh1VVXDRNMMEFyjgqIgAiIgAiIgAiUR0ACvjxeKl0mARPqJtypbmHLK7PJqoufe+654eSTT47tnH322eGJJ54IvXr1qrpdNZBP4Icffggrr7xykvnWW2+FAw44IIkrIAIiIAIiIAIiUB4B7UJTHq8uUXrYsGE1PU+EelasI+JNyNe0sxIae/XVV1OlXnnllVRckdoS+OCDD1INPv3006m4IiIgAiIgAiIgAuURkIAvj5dKV0igkUT84osvnpzF+OOPHxZccMEkrkDtCcw000xhsskmSxpeaaWVkrACIiACIiACIiAC5ROQC035zFSjQgI2C+9n3i1seRU2XVa1jTbaKCy00EIBf/PFFlss9OjRo6z6KlwegbHGGis8+OCD4ZFHHgnTTDNN6N+/f3kNqLQIiIAIiIAIiECKgAR8Coci9SZgQt2EO/1Z2PLqPQban2WWWeKnI/pSHyGMN954YdlllxUKERABERABERCBGhCQgK8BRDVRHgET6ibcqW1hyyuvxY4t/d1334Xhw4fHha9TTDFF6NatW9kDGDVqVNwFZ/LJJw9TTjll2fWzFX755ZcwYsSIwLFv375h3HHHzRZpujiMOKfffvst9OnTJ0w44YQVn8M333wTPv744zD22GOH6aefPow55pgVt2UV//jjj/D++++HX3/9NUw77bQtwdzOTUcREAEREIHGJiAB39jXp2VHZ0LdhDsnamHLq9fJDx06NJx11lmxeQTdfffdlxJ0zzzzTNhpp52S7m+99dYo0tm55rHHHgtvvvlmkocP/fLLLx93VZl00kmT9LzA77//HtgB58477wzs925GGwsvvHDYZ599LKmk459//hkefvjheC6MyxtPGBZZZJGw2267hYknnthnxZuP9ddfP0lDGLN1ZSGBvOOOO4Znn302Kb/77ruHtddeO4mXEmAXmq+//joWpW/P19f/6aefwmWXXRYuuOCC8Mknn/isAKeBAwfGulNNNVUqLy/y6aefhiuvvDKcd955gZ1wvM0333xh0UUXDdtuu218OuDzfHj77bcPzz//fExad911w6677hq3IIXXU089lWp3hhlmCHvvvXdYYYUVfBMKi4AIiIAIiEDNCUjA1xypGiyVgAl1E+7Us7DlldpWOeW++uqrlDhkJtXPyH7//fepfHZNOeSQQ1Jp1h/C8IYbbgh33313uPHGGwMLNvOMNhHT3CxkjTZI54OwLMV+/vnnKPhvvvnm3OLcZPBhXGeeeWZqr3tmoPH9t/3mEcqnnHJK2H///du0ddddd0XBahns4+63hLT09o72Jl7KffHFF7nFKbPxxhsXzIfTFVdcET+DBw8O/iYk2+D9998ftthii2xyEucmjQ83Z6effnpBv/yPPvooue4ffvhhOOaYY5Kbv6SxvwKsqdhuu+1iv9om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cmUppZ9CZeh37LHHDuxVn2czzjhjkrzJJpuEQzL++EmmC/z444+REbvoTD311KF3796h0rfZ4uoDb54+0Baf8cYbz/WmoAiIgAiIgAg0D4H0VGTzjFsjFYGmJmAislYngWhn/3a/h3ut2i6lnVq+cdb669GjR/Rbt3g1x549ewZm+GUiIAIiIAIi0AoE5ELTCldR5yACDUzA7ybDMLO+6Q08dA1NBERABERABBqSgAR8Q14WDUoEWofArbfemjoZXHtkIiACIiACIiAClROQC03l7FRTBESgAIEbb7wx3HHHHfGlVbZ9phXt16+fBXUUAREQAREQARGogIAEfAXQVEUERKA4gTfeeCPu8JItxd7t7McuEwEREAEREAERqJyAXGgqZ6eaIiACZRBg3/qjjz66jBoqKgIiIAIiIAIikEdAM/B5VJQmAiJQFYFNN900zD///OGjjz6KW1qy1/yss85aVZuqLAIiIAIiIAIi8F8CEvD6JoiACNScwJRTThn4yERABERABERABGpPQC40tWfa9C02wiLDRhhD019InYAIiIAIiIAIiEBLEpCAb8nLWt1JNYJ4LvZ6++rOTrVFQAREQAREQAREoLkJSMA39/Wry+j79+8fOlNAd2bfdQGqRkVABERABERABESghgTkA19DmK3UlBfRw4YN67BTGzhwYOAGQiYCIiACIiACIiACIpBPoNufoy0/S6kiIAIiIAIiIAIiIAIiIAKNRkAuNI12RTQeERABERABERABERABEShCQAK+CBxliYAIiIAIiIAIiIAIiECjEZCAb7QrovGIgAiIgAiIgAiIgAiIQBECEvBF4ChLBERABERABERABERABBqNgAR8o10RjUcEREAEREAEREAEREAEihCQgC8CR1kiIAIiIAIiIAIiIAIi0GgEJOAb7YpoPCIgAiIgAiIgAiIgAiJQhIAEfBE4yhIBERABERABERABERCBRiMgAd9oV0TjEQEREAEREAEREAEREIEiBCTgi8BRlgiIgAiIgAiIgAiIgAg0GgEJ+Ea7IhqPCIiACIiACIiACIiACBQhIAFfBI6yREAEREAEREAEREAERKDRCEjAN9oV0XhEQAREQAREQAREQAREoAgBCfgicJQlAiIgAiIgAiIgAiIgAo1GQAK+0a6IxiMCIiACIiACIiACIiACRQhIwBeBoywREAEREAEREAEREAERaDQCEvCNdkU0HhEQAREQAREQAREQAREoQqB7kTxldXECr7/+erj55ptrQqFfv35h9dVXr0lbakQEREAEREAEREAEujIBCfiufPWLnPtNN90U+NTKuBnAJOJrRVTtiIAIiIAIiIAIdFUCEvBd9cq3c961FO/WlbUpEW9E2h5ffPHFcOmllyYZ++67b+jZs2cSV0AEREAEREAEREAEJOD1HWhDwIR2m4wKEhDrvj0Ld6aI//HHH8Ptt98e3n777bDiiiuGAQMGVHBm9any7rvvhmuvvTZpfJtttpGAT2g0duCnn34Kt912W/xerbTSSmGuueZq7AE3+OjEs8EvkIYnAiLQqQQk4DsVf+t3bkLdhDtnbGHL62gK5557bjj55JNjt2effXZ44oknQq9evTp6GOqvxQjwvTrppJOS79WTTz4ZJp988hY7y447HfHsONbqSQREoPkIaBea5rtmdR/xsGHDatoHQj0r1hHxJuRr2lkJjb366qupUq+88koqrogIVELA1nlY3ZdfftmCDX1kpvvWW29NPp988klDjLdZeTYEPA1CBESg5QlIwLf8JW6ME2wkEb/44osnUMYff/yw4IILJnEFRKBSAn//+9+Tqs30vfrwww/DzjvvnHyeeuqp5Dw6M9CsPDuTmfoWARHoOgTkQtN1rnWnn6nNwvuZdwtbXkcMcqONNgoLLbRQwN98scUWCz169OiIbtVHixPYcMMN482gvle1udDiWRuOakUERKA1CUjAt+Z1bdizMqFuwp2BWtjyOmLws8wyS+AjE4FaEtD3qpY0Q/wd1e9pbZmqNREQgdYgIAHfGtexqc7ChLoJdwZvYctr5BP67rvvwvDhw+PC1ymmmCJ069at7OGOGjUq7lbCIscpp5yy7PrZCr/88ksYMWJE4Ni3b98w7rjjZos0Xfz333+PnP/4448wwwwzhDHHHLPic/j111/DG2+8EcYZZ5ww44wzhjHGKOw9iE/4Rx99FKjTESw5z08//TR8+eWXYdpppw0TTzxxxef5zTffBHzY+U5ON910HfI94LvMd++3334Lffr0CRNOOGHF46+24p9//hk+++yzMHLkyDDppJOGqaaaquLvDd+7zz//PLbF7ylt1cJq8fejFuNQGyIgAs1NQAK+ua9f047ehLoJd07EwpZXr5MbOnRoOOuss2LzY489drjvvvtS/+SfeeaZsNNOOyXds8APQcTONY899lh48803kzx8nZdffvlwwAEHRMGQZOQEEGrsrHHnnXcG9ns3o42FF1447LPPPpZU0hGx8vDDD8dzYVzemLVcZJFFwm677dZGEHLzsf766yfFEVxsXVlIeO24447h2WefTcrvvvvuYe21107i1QTOP//8wAebb775wqmnnhquv/76cNVVV4WsLzbns95664XVVlstt0uE9zLLLJPkwROxfuyxx0ZOlnHZZZdFNhbnyNaivHX4wgsvTF1f8vr37x/mnnvusMMOO0SBSlqe8f0dMmRIksVWpZNMMkkSzwa4oTjvvPNS24ZSBqE477zzhl133TXMPPPM2Wpt4ohVePG9/uKLL1L5iPi11lorbLXVVmG88cZL8jhPvosYgtLbLrvsEo466qiYNNtssyXXx5eBNRwvuOCCeMPg8/g+Dxw4MP4OVSN6y+HJguETTzwx/Oc///FDieE55pgjbLvttnHL2GI3blaRRe2XXHJJuPrqqy0pHjmvBRZYILazzjrrFLxxr9ffj9RgFBEBEejyBCTgu/xXoPMAmFA34c5ILGx59RjdV199lRIdzLT52d3vv/8+lf/000+HQw45JJVm4/rhhx/CDTfcEO6+++5w4403hplmmsmyUkfaRExzs5A12iCdDyK2FPv555+j4Ed05hk3GXwY15lnnpna63766aePvv+23zwztqecckrYf//92zR11113xT3zLQNBuPLKK1u06iOzzrbryUsvvRT222+/cOWVV+a2y00Kn9deey3sscceqWtGBa6jtUX83nvvDffff3+AbzHjhmaLLbaIayLyyrEbCp9bbrkl3gzw7oA8+/bbb1P98zSkkCF8jzjiiNxszgHxz+eYY44perP0+OOPh6233rrgOb7//vtR2F5xxRXx5si+X19//XVqrNmBGMe8GxBYbLzxxm1uFqwNeNMfn8GDB6duFq1MKcdSeHLNDzvssHjzUqhNxD03oQj5iy++uOCNNjfEZ5xxRjj++ONzm+K8+D7x4Xf16KOPzm2rHn8/cgekRBEQgS5NoPBz5C6NRSffUQQQ6lmxjog3Id9R4yjWD7N3JmgoN9lkk7Upzj93xFaeMfO+wQYb5Ir3bHlm79oz2tt8883jjLEvywxhdmyMe4011ojuOr4sYt2XZRY8u30o58STBW/M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JJaJLns/nk+ccYvWQv6Idwn4+qTFsz473SkCItAOAhLw7ahnvaUIiEDDBAj5uH///iRWuJ94zGOYVCmrRkA8q/FSahEQgXYTkIBvd/3r7UVABGoSYMKpj+fusyECi6waAfGsxkupRUAE2k1AceDbXf96exGYUAIWcWZCC9Hgw3GbOXfuXK1JnQ0W44/JSjz/mKrUi4iACDRMQD3wDQNVdiIgAuUJsNolMboxopIMk6An+gpx6z99+jRCSERCNhL+tEzIyfKE2pNSPNtT13pTERCB3glIwPfOUDmIgAjUJECs8zrxzms+rtHbWDiKVT3zVvZs9GEtyEw8W1DJekUREIHGCMiFpjGUf05G8+fPn/CX+R3KMOEQVAAREAEREAEREAERyCAgAZ8Bpe2nfgfxvH79+rZXg95fBERABERABERABDIJSMBnYmn3Sfx4J1JAT+Sz213zensREAEREAEREIFhICAf+GGopQkooxfRY2NjAyvBunXrkomAA3ugHiQCIiACIiACIiACQ0bgr39/2ZCVWcUVAREQAREQAREQAREQgdYSkAtNa6teLy4CIiACIiACIiACIjCMBCTgh7HWVGYREAEREAEREAEREIHWEpCAb23V68VFQAREQAREQAREQASGkYAE/DDWmsosAiIgAiIgAiIgAiLQWgIS8K2ter24CIiACIiACIiACIjAMBKQgB/GWlOZRUAEREAEREAEREAEWktAAr61Va8XFwEREAEREAEREAERGEYCEvDDWGsqswiIgAiIgAiIgAiIQGsJSMC3tur14iIgAiIgAiIgAiIgAsNIQAJ+GGtNZRYBERABERABERABEWgtAQn41la9XlwEREAEREAEREAERGAYCUjAD2OtqcwiIAIiIAIiIAIiIAKtJfA/8XgIU0Jc9rIAAAAASUVORK5CYII=)"
],
"metadata": {
"id": "9kPmKc_rU5dF"
}
},
{
"cell_type": "markdown",
"source": [
"# **Llama Index Code**"
],
"metadata": {
"id": "VZZV0o7yev6t"
}
},
{
"cell_type": "markdown",
"source": [
"Index the document and save to disk. You just need to run this once so it'll not cost you money to do the embeddings Open AI API calls which is run under the hood by this function GPTSimpleVectorIndex.from_documents()"
],
"metadata": {
"id": "HgAb5WjsA-do"
}
},
{
"cell_type": "code",
"source": [
"import os\n",
"os.environ[\"OPENAI_API_KEY\"] = ''\n",
"\n",
"from llama_index import LLMPredictor, GPTSimpleVectorIndex, PromptHelper, ServiceContext, SimpleDirectoryReader\n",
"from langchain import OpenAI\n",
"from langchain.chat_models import ChatOpenAI\n",
"from pathlib import Path\n",
"\n",
"# set maximum input size\n",
"max_input_size = 4096\n",
"# set number of output tokens\n",
"num_output = 256\n",
"# set maximum chunk overlap\n",
"max_chunk_overlap = 20\n",
"# set temperature\n",
"temperature = 0\n",
"\n",
"# define LLM, you can try text-davinci-003 also but it would be more expensive. But it can give you better restults\n",
"# Reference https://platform.openai.com/docs/models\n",
"model_name = 'gpt-3.5-turbo'\n",
"llm_predictor = LLMPredictor(llm=ChatOpenAI(temperature=temperature, model_name=\"gpt-3.5-turbo\", max_tokens=num_output)) \n",
"\n",
"prompt_helper = PromptHelper(max_input_size, num_output, max_chunk_overlap)\n",
"\n",
"service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor, prompt_helper=prompt_helper)\n",
"\n",
"indexFile = 'index.json'\n",
"\n",
"# START indexing part - comment this block if you alrady have the index saved to disk\n",
"documents = SimpleDirectoryReader('data').load_data()\n",
"index = GPTSimpleVectorIndex.from_documents(\n",
" documents, service_context=service_context\n",
")\n",
"index.save_to_disk(indexFile)\n",
"# END indexing part\n",
"\n",
"# load from disk\n",
"index = GPTSimpleVectorIndex.load_from_disk(indexFile)\n",
"\n"
],
"metadata": {
"id": "6aeTTQ4CemMo"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Run a query with the index"
],
"metadata": {
"id": "-kgQrSzSBGFt"
}
},
{
"cell_type": "code",
"source": [
"response = index.query(\"Which companies did Melvin work in the Philippines?\", service_context=service_context)\n",
"print(llm_predictor.last_token_usage)\n",
"print(response)"
],
"metadata": {
"id": "gpPvJH36fhYe"
},
"execution_count": null,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment