Skip to content

Instantly share code, notes, and snippets.

@ruvnet
Last active March 28, 2024 14:47
Show Gist options
  • Save ruvnet/7dfa190c97b0f3d1f0872d14ae2a22c7 to your computer and use it in GitHub Desktop.
Save ruvnet/7dfa190c97b0f3d1f0872d14ae2a22c7 to your computer and use it in GitHub Desktop.
notebook.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/ruvnet/7dfa190c97b0f3d1f0872d14ae2a22c7/notebook.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"# LLM Total Cost of Ownership (TCO) Calculator\n",
"\n",
"created by @rUv, cause he could.\n",
"\n",
"Welcome to the LLM TCO Calculator, a dynamic tool designed to help users estimate the total cost of ownership for various Large Language Models (LLMs) based on their unique usage parameters. This calculator provides an intuitive interface for selecting a model, specifying input parameters, and instantly viewing an estimate of the total token costs and the monthly deployment costs associated with the chosen model.\n",
"\n",
"## Key Features:\n",
"- **Model Selection**: Choose from a wide range of popular LLMs, including GPT-4, Claude, PaLM 2, and more, each with their distinct pricing structures.\n",
"- **Customizable Parameters**: Specify the number of input and output tokens, daily request volumes, and operational days per month to tailor the calculation to your specific use case.\n",
"- **Real-Time Cost Estimations**: As you adjust the input parameters, the calculator automatically updates to provide immediate feedback on the total token cost and estimated monthly deployment cost.\n",
"- **User-Friendly Interface**: The calculator is built with an easy-to-navigate interface, ensuring a seamless user experience without the need for extensive technical knowledge.\n",
"\n",
"## Visualizations\n",
"\n",
"Visualizing the total cost of ownership (TCO) for various Large Language Models (LLMs) can significantly aid in decision-making. By graphically comparing the estimated monthly deployment costs across different models, stakeholders can quickly identify the most cost-effective solutions for their needs.\n",
"\n",
"Whether you're budgeting for a new project, comparing the costs of different models, or simply exploring the financial implications of deploying an LLM, this calculator offers valuable insights to inform your decision-making process."
],
"metadata": {
"id": "iUi-w0pIslQ4"
}
},
{
"cell_type": "code",
"source": [
"#install the requirements\n",
"!pip install pyyaml toml\n",
"!pip install plotly"
],
"metadata": {
"id": "nq-7eZzs3O0I"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import ipywidgets as widgets\n",
"from IPython.display import display, clear_output\n",
"import json\n",
"\n",
"# Pricing per 1 million tokens, converted to per-token cost\n",
"model_pricing = {\n",
" 'GPT-4': {'input_cost': 30.00 / 1e6, 'output_cost': 60.00 / 1e6},\n",
" 'GPT-4 32K': {'input_cost': 60.00 / 1e6, 'output_cost': 120.00 / 1e6},\n",
" 'GPT-4 Turbo': {'input_cost': 10.00 / 1e6, 'output_cost': 30.00 / 1e6},\n",
" 'GPT-3.5 Instruct': {'input_cost': 1.50 / 1e6, 'output_cost': 2.00 / 1e6},\n",
" 'GPT-3.5': {'input_cost': 0.50 / 1e6, 'output_cost': 1.50 / 1e6},\n",
" 'Claude 3 Opus': {'input_cost': 15.00 / 1e6, 'output_cost': 75.00 / 1e6},\n",
" 'Claude 2': {'input_cost': 8.00 / 1e6, 'output_cost': 24.00 / 1e6},\n",
" 'Claude 3 Sonnet': {'input_cost': 3.00 / 1e6, 'output_cost': 15.00 / 1e6},\n",
" 'Claude Instant': {'input_cost': 0.80 / 1e6, 'output_cost': 2.40 / 1e6},\n",
" 'Claude 3 Haiku': {'input_cost': 0.25 / 1e6, 'output_cost': 1.25 / 1e6},\n",
" 'PaLM 2': {'input_cost': 0.33 / 1e6, 'output_cost': 0.65 / 1e6},\n",
" 'Gemini Pro': {'input_cost': 0.17 / 1e6, 'output_cost': 0.49 / 1e6},\n",
" 'Gemini Pro Vision': {'input_cost': 0.17 / 1e6, 'output_cost': 0.49 / 1e6},\n",
" 'Mistral 8x7B Instruct': {'input_cost': 0.36 / 1e6, 'output_cost': 0.36 / 1e6},\n",
" 'Mistral 7B Instruct': {'input_cost': 0.17 / 1e6, 'output_cost': 0.17 / 1e6},\n",
" 'Llama-2 70B Chat': {'input_cost': 0.91 / 1e6, 'output_cost': 1.17 / 1e6},\n",
" 'Code Llama': {'input_cost': 0.78 / 1e6, 'output_cost': 0.78 / 1e6},\n",
" 'Llama-2 13B Chat': {'input_cost': 0.29 / 1e6, 'output_cost': 0.29 / 1e6}\n",
"}\n",
"\n",
"\n",
"# Set the width of the description to ensure titles are fully visible\n",
"style = {'description_width': 'initial'}\n",
"\n",
"# Create widgets for model selection and input parameters\n",
"model_selector = widgets.Dropdown(options=list(model_pricing.keys()), value='GPT-4', description='Model:', style={'description_width': 'initial'})\n",
"input_tokens = widgets.FloatText(value=1000, description='Input Tokens:', style={'description_width': 'initial'})\n",
"output_tokens = widgets.FloatText(value=1000, description='Output Tokens:', style={'description_width': 'initial'})\n",
"requests_per_day = widgets.FloatText(value=1000, description='Requests per Day:', style={'description_width': 'initial'})\n",
"days_per_month = widgets.FloatText(value=30, description='Days per Month:', style={'description_width': 'initial'})\n",
"\n",
"# Initialize output widgets for displaying calculated costs\n",
"total_token_cost = widgets.FloatText(value=0, description='Total Token Cost:', disabled=True, style={'description_width': 'initial'})\n",
"deployment_cost = widgets.FloatText(value=0, description='Deployment Cost:', disabled=True, style={'description_width': 'initial'})\n",
"\n",
"# Function to calculate and update cost information\n",
"def calculate_and_display_costs(change):\n",
" pricing = model_pricing[model_selector.value]\n",
" input_cost = pricing['input_cost'] * input_tokens.value\n",
" output_cost = pricing['output_cost'] * output_tokens.value\n",
" total_cost = input_cost + output_cost\n",
" monthly_deployment_cost = total_cost * requests_per_day.value * days_per_month.value\n",
"\n",
" total_token_cost.value = total_cost\n",
" deployment_cost.value = monthly_deployment_cost\n",
"\n",
" with output_area:\n",
" clear_output(wait=True)\n",
" print(f\"Selected Model: {model_selector.value}\")\n",
" print(f\"Input Tokens: {input_tokens.value}, Output Tokens: {output_tokens.value}\")\n",
" print(f\"Total Token Cost: ${total_token_cost.value:.2f}\")\n",
" print(f\"Estimated Deployment Cost per Month: ${deployment_cost.value:.2f}\")\n",
"\n",
"# Create an output area for displaying results\n",
"output_area = widgets.Output()\n",
"\n",
"# Display the UI elements\n",
"ui = widgets.VBox([\n",
" model_selector,\n",
" input_tokens,\n",
" output_tokens,\n",
" requests_per_day,\n",
" days_per_month,\n",
" total_token_cost,\n",
" deployment_cost,\n",
" output_area\n",
"])\n",
"display(ui)\n",
"\n",
"# Register event handlers to recalculate and display costs whenever any input changes\n",
"model_selector.observe(calculate_and_display_costs, names='value')\n",
"input_tokens.observe(calculate_and_display_costs, names='value')\n",
"output_tokens.observe(calculate_and_display_costs, names='value')\n",
"requests_per_day.observe(calculate_and_display_costs, names='value')\n",
"days_per_month.observe(calculate_and_display_costs, names='value')\n",
"\n",
"# Initial calculation and display\n",
"calculate_and_display_costs(None)\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 312,
"referenced_widgets": [
"f69a088f299c42e6816b08a49de8647e",
"ef865edf4dd04196819ee2eb7096e316",
"82e156686ae046b984a5c3f966f72c04",
"f747ca2c0d574af7924b9a598639d420",
"e6e0cfadf3f04f2f8bde12773311493e",
"d74d47c0f5314f34b4d1b2e1444adbc9",
"d81d55fb157e445ba7fce46c40f77166",
"c83cf1e3c3d34ce39b4b5654a548b358",
"5049f9bef47d49f8b2cca09526d1989b",
"4bd6e48004b94223a4c401397c680d80",
"169221aecb86425da83a4a4e855764b6",
"4d51c17bd6464d3e83aca8f8d78fb5ce",
"f187824c8d364e3cbb523840743b6927",
"a9692c9f69e147f991e357a64d7eff50",
"92bd230b85604735a04eabb9aa074311",
"2b85f3b85ce4461c80b9521f8a93981a",
"6f8dd5afa4db4c92a34c1d64db8fdee5",
"ad19d01e198545468783cac3fdff7cdc",
"460db6bf8df64dfcba5e2bc0e8cc6d61",
"179c84104ec94496917c569e72a6d5b9",
"a42e4f15d595435c8b7b113370a2d962",
"4b4f28f7160b4cbd9e56f352638ec2de",
"d50eb9c8bdfb4c33914c2cb3bb3a3992",
"ea97dd02411245009a0f1854475e3990",
"d00bbaadaa0b44779678c74704332b8a"
]
},
"id": "bSY7m1Khr_kS",
"outputId": "06af18ee-83e2-40be-ad11-6c7fe4bb72ab"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"VBox(children=(Dropdown(description='Model:', options=('GPT-4', 'GPT-4 32K', 'GPT-4 Turbo', 'GPT-3.5 Instruct'…"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "f69a088f299c42e6816b08a49de8647e"
}
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"def calculate_costs():\n",
" # Retrieve the selected model's pricing details\n",
" pricing = model_pricing[model_selector.value]\n",
" input_cost_per_token = pricing['input_cost']\n",
" output_cost_per_token = pricing['output_cost']\n",
"\n",
" # Calculate total costs based on the number of tokens and the model's per-token pricing\n",
" total_input_cost = input_cost_per_token * input_tokens.value\n",
" total_output_cost = output_cost_per_token * output_tokens.value\n",
"\n",
" # Calculate the average cost per token, total token cost, and deployment cost\n",
" average_cost_per_token = (total_input_cost + total_output_cost) / (input_tokens.value + output_tokens.value)\n",
" total_token_cost = total_input_cost + total_output_cost\n",
" deployment_cost = total_token_cost * requests_per_day.value * days_per_month.value\n",
"\n",
" # Format the calculated values for display\n",
" formatted_input_cost = format_float(total_input_cost)\n",
" formatted_output_cost = format_float(total_output_cost)\n",
" formatted_average_cost_per_token = format_float(average_cost_per_token)\n",
" formatted_total_token_cost = format_float(total_token_cost)\n",
" formatted_deployment_cost = format_float(deployment_cost)\n",
"\n",
" # Display the formatted values\n",
" print(f\"The AI model selected for the cost analysis is: {model_selector.value}.\")\n",
" print(f\"Total cost for the specified input tokens: ${formatted_input_cost}.\")\n",
" print(f\"Total cost for the specified output tokens: ${formatted_output_cost}.\")\n",
" print(f\"Average cost per token: ${formatted_average_cost_per_token}.\")\n",
" print(f\"Total cost for the tokens (input + output): ${formatted_total_token_cost}.\")\n",
" print(f\"Estimated deployment cost per month: ${formatted_deployment_cost}.\")\n",
"\n",
"calculate_costs()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "8jzmHvLEsmfE",
"outputId": "90253243-35d7-4b27-c16b-8bbf5c0ddbcc"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"The AI model selected for the cost analysis is: Claude 3 Opus.\n",
"Total cost for the specified input tokens: $0.02.\n",
"Total cost for the specified output tokens: $0.07.\n",
"Average cost per token: $0.00.\n",
"Total cost for the tokens (input + output): $0.09.\n",
"Estimated deployment cost per month: $2700.00.\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Output Formats"
],
"metadata": {
"id": "9o7-Hyix3i9P"
}
},
{
"cell_type": "code",
"source": [
"import ipywidgets as widgets\n",
"from IPython.display import display, clear_output\n",
"import json\n",
"import toml\n",
"import yaml\n",
"import csv\n",
"from io import StringIO\n",
"\n",
"# Assuming the creation and initialization of widgets model_selector, input_tokens, output_tokens, requests_per_day, days_per_month, cost_per_token_input, cost_per_token_output\n",
"# For the sake of this example, these should already be defined and initialized based on user input in your environment\n",
"\n",
"# Helper function to format the float values as strings with two decimal places.\n",
"format_float = lambda x: f\"{x:.2f}\"\n",
"\n",
"def get_analysis_output():\n",
" # Retrieve values and format them for display, assuming widgets are defined and hold the latest values\n",
" analysis_output = {\n",
" \"model_selected\": model_selector.value,\n",
" \"input_tokens\": format_float(input_tokens.value),\n",
" \"output_tokens\": format_float(output_tokens.value),\n",
" \"daily_requests\": format_float(requests_per_day.value),\n",
" \"operational_days_per_month\": format_float(days_per_month.value),\n",
" \"cost_per_input_token\": format_float(cost_per_token_input.value * input_tokens.value),\n",
" \"cost_per_output_token\": format_float(cost_per_token_output.value * output_tokens.value),\n",
" \"total_token_cost\": format_float((cost_per_token_input.value + cost_per_token_output.value) * (input_tokens.value + output_tokens.value)),\n",
" \"estimated_monthly_deployment_cost\": format_float(requests_per_day.value * days_per_month.value * (cost_per_token_input.value + cost_per_token_output.value) * (input_tokens.value + output_tokens.value)),\n",
" }\n",
" return analysis_output\n",
"\n",
"# Function to display the analysis output based on the selected format\n",
"def display_formatted_output(change):\n",
" analysis_output = get_analysis_output()\n",
" format_selector_value = change['new']\n",
"\n",
" if format_selector_value == 'JSON':\n",
" formatted_output = json.dumps(analysis_output, indent=4)\n",
" elif format_selector_value == 'TOML':\n",
" formatted_output = toml.dumps(analysis_output)\n",
" elif format_selector_value == 'YAML':\n",
" formatted_output = yaml.dump(analysis_output)\n",
" elif format_selector_value == 'CSV':\n",
" output = StringIO()\n",
" writer = csv.writer(output)\n",
" for key, value in analysis_output.items():\n",
" writer.writerow([key, value])\n",
" formatted_output = output.getvalue()\n",
" else:\n",
" formatted_output = \"Format not supported\"\n",
"\n",
" with output_area:\n",
" clear_output(wait=True)\n",
" print(formatted_output)\n",
"\n",
"# Setup the format selector\n",
"format_selector = widgets.Dropdown(\n",
" options=['JSON', 'TOML', 'YAML', 'CSV'],\n",
" value='JSON',\n",
" description='Output Format:',\n",
")\n",
"\n",
"# Output area for displaying formatted analysis\n",
"output_area = widgets.Output()\n",
"\n",
"# Display the widgets\n",
"display(format_selector, output_area)\n",
"\n",
"# Initial display\n",
"display_formatted_output({'new': format_selector.value})\n",
"\n",
"# Set up the event handler to update the output when the selection changes\n",
"format_selector.observe(display_formatted_output, names='value')\n"
],
"metadata": {
"id": "Y1D21Jme3Z2t",
"outputId": "e424dc33-a941-4260-eac4-77da2093d373",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 244,
"referenced_widgets": [
"ecdc2256693742ec99d6d78603c9bbd3",
"f60b1ac08f1643c893ef429cc6042a7c",
"2a1e1b2499654c7a8cf0933a74c0cc82",
"630c9a85160e424fb787f916763a3c7d",
"3ed0b24477044a6baa3a43f59a276d0f"
]
}
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"Dropdown(description='Output Format:', options=('JSON', 'TOML', 'YAML', 'CSV'), value='JSON')"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "ecdc2256693742ec99d6d78603c9bbd3"
}
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"Output()"
],
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "630c9a85160e424fb787f916763a3c7d"
}
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"## Visualizations for LLM TCO Calculator\n",
"\n",
"In the LLM TCO (Total Cost of Ownership) Calculator, visualizations play a crucial role in conveying the comparative costs of deploying various Large Language Models (LLMs) effectively. Through the use of bar charts, users can easily grasp the estimated deployment costs associated with each model, making it simpler to make informed decisions.\n",
"\n",
"The visualization segment of the calculator specifically targets the deployment cost per month for each model under consideration. Given a set of fixed inputs, such as the number of input and output tokens, daily requests, and operational days per month, the calculator computes the deployment costs. These costs are then plotted in a horizontal bar chart, providing a clear, comparative view across different models.\n",
"\n",
"This approach not only aids in understanding the cost implications at a glance but also highlights the cost-effectiveness of certain models over others based on the user's specific usage patterns. The bar chart is interactive, displaying the exact monthly cost for each model when hovered over or selected. This feature ensures that users have all the necessary information to weigh the pros and cons of different LLMs based on cost, thereby aiding in the selection process of the most suitable model for their needs.\n",
"\n",
"Such visualizations are indispensable in the TCO calculator, enhancing user experience and decision-making processes by presenting complex data in an accessible and understandable manner.\n"
],
"metadata": {
"id": "jKhsC_Yz7mpY"
}
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 718
},
"id": "QIUiuedsr6Wf",
"outputId": "f31d6156-31fc-4c7e-837b-4e5caf49097e"
},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1000x800 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9UAAAK9CAYAAAAqmk+cAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd1gUV/828HuXLmURaaIgAgpiF6IiMTYESyyJXSKi2CJoxO4vUVGjhtiixvJoEtSI5dGosSQqFtAoShGsiFixobEAgpGyO+8fvszjyhYkKqven+vaK9mZM2fO7t4g352ZMxJBEAQQERERERER0SuTVvQAiIiIiIiIiN5VLKqJiIiIiIiIyolFNREREREREVE5sagmIiIiIiIiKicW1URERERERETlxKKaiIiIiIiIqJxYVBMRERERERGVE4tqIiIiIiIionJiUU1ERERERERUTiyqiYheg9atW6N169YVPYzX6vr165BIJFizZk1FD+W1cHZ2xqeffqq1XWxsLCQSCWJjY9/8oN4iZ2dnBAcHV/QwiHRacHAwnJ2dK3oYRPSOYVFNRO+1NWvWQCKRqH2cOHGizH1duHABERERuH79+psbcDksX768QgvfkiJUIpFg/fr1Ktv4+vpCIpGgXr16b3QsuvgZRUREKGWuUqVKcHJyQpcuXRAVFYWCgoKKHuJ7q7x5SE1NxRdffAFHR0cYGRnBysoKfn5+iIqKglwuf+3jvHPnDiIiIpCamvrK2y5fvhwSiQTNmjV77eOqaPfv34e+vj6++OILtW2ePHkCExMTfP75529xZBWj5N+zpKQktW1KvgydP3++xr6cnZ0hkUjg5+encv3q1avF31ma9kdEz+lX9ACIiN6GmTNnombNmqWWu7m5lbmPCxcuYMaMGWjdunWpIxn79+//t0Mst+XLl8Pa2rrCj0IaGxtjw4YNpf4Avn79Oo4fPw5jY+M3PgZNn1FFW7FiBczMzFBQUIDbt29j3759GDx4MH744Qfs3r0bjo6OFT3E90558vDTTz9hxIgRsLOzw4ABA1CrVi08efIEBw8eREhICO7evYv/+7//e63jvHPnDmbMmAFnZ2c0atTolbaNjo6Gs7MzEhIScPny5Vf6nabrbG1t0b59e/z+++94+vQpKlWqVKrNtm3b8OzZM42F96tYvXo1FArFa+lL1xkbG+Pw4cPIysqCvb290rro6GgYGxvj2bNnFTQ6oncLi2oi+iB07NgR3t7eb6x/Q0PDN9b3u6JTp07YuXMnHjx4AGtra3H5hg0bYGdnh1q1auHx48cVOMKK1bNnT6X3Zdq0aYiOjkZQUBB69er1SmdN0Jtx4sQJjBgxAj4+Pvjjjz9gbm4urhszZgySkpJw7ty5ChyhsmvXruH48ePYtm0bhg8fjujoaEyfPv219P3s2TMYGhpCKq3YkxoDAwOxd+9e7Ny5E3379i21fsOGDZDJZOjcufO/2k9+fj5MTU1hYGDwr/p5l/j6+iIxMRGbN2/GV199JS6/desWjh49is8++wy//fZbBY6Q6N3B07+JiP6/TZs2wcvLC+bm5rCwsED9+vWxePFiAM9Pu+vVqxcAoE2bNuJpcSXX3b58TXXJKdH//e9/MWPGDFSrVg3m5ubo2bMncnJyUFBQgDFjxsDW1hZmZmYYNGhQqdOAo6Ki0LZtW9ja2sLIyAienp5YsWKFUhtnZ2ecP38ecXFx4pheHEd2djbGjBkjnsbq5uaGyMjIUkdisrOzERwcDJlMBktLSwwcOBDZ2dmv9P5169YNRkZG2LJli9LyDRs2oHfv3tDT0yu1TXFxMWbNmgVXV1cYGRnB2dkZ//d//1fqvSi5Hvqvv/5C06ZNYWxsDBcXF6xbt05so+0zKqGpD1WmT58OAwMD/P3336XWDRs2DJaWluU+mhMYGIghQ4bg5MmTiImJUVp38uRJdOjQATKZDJUqVUKrVq1w7NgxpTYlp5ZfvHgRvXv3hoWFBapUqYKvvvqqTGO6evUqevXqBSsrK1SqVAnNmzfHnj17xPV5eXkwNTVV+oO7xK1bt6Cnp4e5c+cC+N+pqX/99RdGjx4NGxsbWFpaYvjw4SgsLER2djaCgoJQuXJlVK5cGRMnToQgCEp9KhQK/PDDD6hbty6MjY1hZ2eH4cOHl/oy5nXm4UUzZsyARCJBdHS0UkFdwtvbW+mMkPz8fIwbN078+XJ3d8f8+fNLva6YmBh8/PHHsLS0hJmZGdzd3cWj3bGxsfjoo48AAIMGDRLHWZZLOqKjo1G5cmV07twZPXv2RHR0tMp22dnZCA8Ph7OzM4yMjFC9enUEBQXhwYMH4hgkEgk2bdqEb775BtWqVUOlSpWQm5sLANiyZQu8vLxgYmICa2trfPHFF7h9+7bSPrKysjBo0CBUr14dRkZGqFq1Krp166Z06n1SUhICAgJgbW0NExMT1KxZE4MHD9b4Gj/77DOYmppiw4YNpdbdv38fBw8eRM+ePWFkZISjR4+iV69ecHJygpGRERwdHREeHo5//vlHabvg4GCYmZnhypUr6NSpE8zNzREYGCiue/mshrJ8zprmoJBIJIiIiBCfP3nyBGPGjBE/j5Ij8qdOndL4XrxuxsbG+Pzzz0u9txs3bkTlypUREBBQapuyfM5EHyIeqSaiD0JOTo74B2QJiUSCKlWqAHj+R2+/fv3Qrl07REZGAgDS0tJw7NgxfPXVV/jkk08wevRoLFmyBP/3f/+HOnXqAID4X3Xmzp0LExMTTJ48GZcvX8bSpUthYGAAqVSKx48fIyIiAidOnMCaNWtQs2ZNTJs2Tdx2xYoVqFu3Lrp27Qp9fX3s2rULI0eOhEKhQGhoKADghx9+wKhRo2BmZoavv/4aAGBnZwcAePr0KVq1aoXbt29j+PDhcHJywvHjxzFlyhTcvXsXP/zwAwBAEAR069YNf/31F0aMGIE6depg+/btGDhw4Cu9x5UqVUK3bt2wceNGfPnllwCA06dP4/z58/jpp59w5syZUtsMGTIEa9euRc+ePTFu3DicPHkSc+fORVpaGrZv367U9vLly+jZsydCQkIwcOBA/PLLLwgODoaXlxfq1q1bps9IWx+qDBgwADNnzsTmzZsRFhYmLi8sLMTWrVvRo0ePf3Vq+4ABA7Bq1Srs378f7du3BwAcOnQIHTt2hJeXF6ZPnw6pVCp+yXL06FE0bdpUqY/evXvD2dkZc+fOxYkTJ7BkyRI8fvxY4xcG9+7dQ4sWLfD06VOMHj0aVapUwdq1a9G1a1ds3boVn332GczMzPDZZ59h8+bNWLhwodIXIxs3boQgCGIxUmLUqFGwt7fHjBkzcOLECaxatQqWlpY4fvw4nJycMGfOHPzxxx+YN28e6tWrh6CgIHHb4cOHY82aNRg0aBBGjx6Na9eu4ccff0RKSgqOHTumdBTxdeThRU+fPsXBgwfxySefwMnJSevnJggCunbtisOHDyMkJASNGjXCvn37MGHCBNy+fRuLFi0CAJw/fx6ffvopGjRogJkzZ8LIyAiXL18WvyCpU6cOZs6ciWnTpmHYsGFo2bIlAKBFixZaxxAdHY3PP/8choaG6NevH1asWIHExESxSAeefzHSsmVLpKWlYfDgwWjSpAkePHiAnTt34tatW0pnT8yaNQuGhoYYP348CgoKYGhoKH4eH330EebOnYt79+5h8eLFOHbsGFJSUmBpaQkA6NGjB86fP49Ro0bB2dkZ9+/fR0xMDDIzM8Xn/v7+sLGxweTJk2FpaYnr169j27ZtGl+jqakpunXrhq1bt+LRo0ewsrIS123evBlyuVzM4JYtW/D06VN8+eWXqFKlChISErB06VLcunWr1Jd9xcXFCAgIwMcff4z58+erPLX8VT7nVzFixAhs3boVYWFh8PT0xMOHD/HXX38hLS0NTZo0eeX+/o3+/fvD398fV65cgaurK4DnX4T27NlT5VF7bZ8z0QdLICJ6j0VFRQkAVD6MjIzEdl999ZVgYWEhFBcXq+1ry5YtAgDh8OHDpda1atVKaNWqlfj88OHDAgChXr16QmFhobi8X79+gkQiETp27Ki0vY+Pj1CjRg2lZU+fPi21n4CAAMHFxUVpWd26dZX2XWLWrFmCqampcOnSJaXlkydPFvT09ITMzExBEARhx44dAgDh+++/F9sUFxcLLVu2FAAIUVFRpfp+Uclr3bJli7B7925BIpGIfU+YMEEcb6tWrYS6deuK26WmpgoAhCFDhij1N378eAGAcOjQIXFZjRo1BADCkSNHxGX3798XjIyMhHHjxonLNH1GZe2j5PW82IePj4/QrFkzpf62bdumdl8vmj59ugBA+Pvvv1Wuf/z4sQBA+OyzzwRBEASFQiHUqlVLCAgIEBQKhdju6dOnQs2aNYX27duX6rtr165KfY4cOVIAIJw+fVrp9Q8cOFB8PmbMGAGAcPToUXHZkydPhJo1awrOzs6CXC4XBEEQ9u3bJwAQ/vzzT6V9NGjQQCl3JT9rL4/bx8dHkEgkwogRI8RlxcXFQvXq1ZW2P3r0qABAiI6OVtrP3r17Sy1/HXl42enTpwUAwldffaW1rSD87+fm22+/VVres2dPQSKRCJcvXxYEQRAWLVqk8fMXBEFITEws08/ai5KSkgQAQkxMjCAIz3NTvXr1UuOfNm2aAEDYtm1bqT5KPqeSzLu4uCj93iksLBRsbW2FevXqCf/884+4fPfu3QIAYdq0aYIg/C/D8+bNUzve7du3CwCExMTEMr/GEnv27BEACP/5z3+Uljdv3lyoVq2amFVVvzPnzp0rSCQS4caNG+KygQMHCgCEyZMnl2o/cOBApd/FZf2cr127pvYzBCBMnz5dfC6TyYTQ0FCtr/tlJT9jmt7DknFo+iwE4fnPUOfOnYXi4mLB3t5emDVrliAIgnDhwgUBgBAXF1dqf2X5nIk+VDz9m4g+CMuWLUNMTIzS488//xTXW1paIj8/v9QpuP9WUFCQ0rf9zZo1gyAIpU55bNasGW7evIni4mJxmYmJifj/JUfaW7VqhatXryInJ0frvrds2YKWLVuicuXKePDggfjw8/ODXC7HkSNHAAB//PEH9PX1xaPLAKCnp4dRo0a98uv19/eHlZUVNm3aBEEQsGnTJvTr109l2z/++AMAMHbsWKXl48aNAwCl05ABwNPTUzyKBwA2NjZwd3fH1atXyzy+8vYRFBSEkydP4sqVK+Ky6OhoODo6olWrVmXevypmZmYAnp8SCjyfeTojIwP9+/fHw4cPxc8tPz8f7dq1w5EjR0qdvl9y5kKJks+u5D1W5Y8//kDTpk3x8ccfK41l2LBhuH79Oi5cuAAA8PPzg4ODg9KpxefOncOZM2dUTg4VEhICiUQiPi/JfEhIiLhMT08P3t7eSu/7li1bIJPJ0L59e6W8enl5wczMDIcPH1baz+vIw4tKTnVWddq3Kn/88Qf09PQwevRopeXjxo2DIAji75eSI7m///77a50AKzo6GnZ2dmjTpg2A52fe9OnTB5s2bVKaofy3335Dw4YN8dlnn5Xq48XPCQAGDhyo9HsnKSkJ9+/fx8iRI5XOxujcuTM8PDzEn1ETExMYGhoiNjZW7bwJJe/D7t27UVRU9EqvteQI94unKV+7dg0nTpxAv379xOu+Xxx7fn4+Hjx4gBYtWkAQBKSkpJTq98XfeeqU9XN+FZaWljh58iTu3Lnzytu+bnp6eujduzc2btwI4H+/11782SpRls+Z6EPFopqIPghNmzaFn5+f0qPkj1EAGDlyJGrXro2OHTuievXqGDx4MPbu3fuv9/vyaaQymQwASs30LJPJoFAolIrlY8eOwc/PD6amprC0tISNjY14HWZZiuqMjAzs3bsXNjY2So+SW6jcv38fAHDjxg1UrVpVLO5KuLu7v+KrBQwMDNCrVy9s2LABR44cwc2bN9G/f3+VbW/cuAGpVFpqtmJ7e3tYWlrixo0bSstVnZJbuXLlV/rjrrx99OnTB0ZGRmJhmZOTg927dyMwMLBUYfKq8vLyAPyvmMvIyADwvMB5+bP76aefUFBQUOrzr1WrltJzV1dXSKVSjdc53rhxQ+VnXHJ6dMn7L5VKERgYiB07duDp06cA/jczcMk1yy96lcy/+L5nZGQgJycHtra2pV53Xl6emFd1+wFePQ8vsrCwAPC/Lze0uXHjBhwcHEoV4S+/f3369IGvry+GDBkCOzs79O3bF//973//VYEtl8uxadMmtGnTBteuXcPly5dx+fJlNGvWDPfu3cPBgwfFtleuXCnzrexevkNCyWtQlRMPDw9xvZGRESIjI/Hnn3/Czs4On3zyCb7//ntkZWWJ7Vu1aoUePXpgxowZsLa2Rrdu3cp8Szl9fX306dMHR48eFa/lLimwX7z8IDMzE8HBwbCysoKZmRlsbGzEL71e/pnR19dH9erVte67rJ/zq/j+++9x7tw5ODo6omnTpoiIiCj3l0GvQ//+/XHhwgWcPn0aGzZsQN++fVX+XivL50z0oWJRTUSE57duSU1Nxc6dO8Xr5zp27PjK1xW/TNXkXJqWC/9/4psrV66gXbt2ePDgARYuXIg9e/YgJiYG4eHhAFCmP8gVCgXat29f6gh9yaNHjx7lfFWa9e/fH6mpqYiIiEDDhg3h6empsX1Zi1Jt79mb7KNy5cr49NNPxaJ669atKCgoeC238SmZTbrky4WSz3bevHlqP7uXvwB52b8t9F8WFBSEvLw87NixA4IgYMOGDfj000/FgvlFr5L5F993hUIBW1tbta955syZZdrPq+ThRW5ubtDX18fZs2fLtb06JiYmOHLkCA4cOIABAwbgzJkz6NOnD9q3b1/ue14fOnQId+/exaZNm1CrVi3x0bt3bwBQO2FZWcZaXmPGjMGlS5cwd+5cGBsbY+rUqahTp454hFgikWDr1q2Ij49HWFgYbt++jcGDB8PLy0v8YkmTL774AgqFQjyiunHjRnh6eoq3IJPL5Wjfvj327NmDSZMmYceOHYiJiREnDnv5d6aRkdFrndlc3c+cqs+4d+/euHr1KpYuXQoHBwfMmzcPdevWLddR79ehWbNmcHV1xZgxY3Dt2jW1X4QC2j9nog8VJyojIvr/DA0N0aVLF3Tp0gUKhQIjR47Ef/7zH0ydOhVubm6vvVDRZNeuXSgoKMDOnTuVjsi9fAosoP6POVdXV+Tl5YlHptWpUaMGDh48iLy8PKViLT09vVxj//jjj+Hk5ITY2Fhx0jd1+1UoFMjIyFCaPOrevXvIzs5GjRo1Xnnfb/IzCgoKQrdu3ZCYmIjo6Gg0btxY7eRmr+LXX38FAHGm3ZLJgiwsLLR+diUyMjKUjjJevnwZCoVC48RBNWrUUPkZX7x4UVxfol69emjcuDGio6NRvXp1ZGZmYunSpWUaW1m5urriwIED8PX1/VfF3YteJQ+VKlVC27ZtcejQIdy8eVPrfcNr1KiBAwcO4MmTJ0pHMVW9f1KpFO3atUO7du2wcOFCzJkzB19//TUOHz4MPz+/V85tdHQ0bG1tsWzZslLrtm3bhu3bt2PlypUwMTGBq6truW8DVvIa0tPT0bZtW6V16enppX5GXV1dMW7cOIwbNw4ZGRlo1KgRFixYgPXr14ttmjdvjubNm2P27NnYsGEDAgMDsWnTJgwZMkTjWEoKvw0bNqB9+/Y4f/48Zs+eLa4/e/YsLl26hLVr1ypNfvdvL+kp6+dcuXJlACh11wR1R7KrVq2KkSNHYuTIkbh//z6aNGmC2bNno2PHjv9qvOXVr18/fPvtt6hTp47We6WX5XMm+tDwSDUREYCHDx8qPZdKpWjQoAEAiKcnmpqaAij9R9ObUHIU7sWjbjk5OYiKiirV1tTUVOWYevfujfj4eOzbt6/UuuzsbPH67U6dOqG4uFjpdl1yubzcRZNEIsGSJUswffp0DBgwQG27Tp06AYA4C3mJhQsXAkC57jv7Jj+jjh07wtraGpGRkYiLi3stR6k3bNiAn376CT4+PmjXrh0AwMvLC66urpg/f77KI3iqbu31cnFV8tlp+gO9U6dOSEhIQHx8vLgsPz8fq1atgrOzc6kzDAYMGID9+/fjhx9+QJUqVV77H/+9e/eGXC7HrFmzSq0rLi4u12f6qnmYPn06BEHAgAEDVL73ycnJWLt2LYDn759cLsePP/6o1GbRokWQSCTi+/Po0aNS/ZQULeX53fLPP/9g27Zt+PTTT9GzZ89Sj7CwMDx58gQ7d+4E8Hy25tOnT5eaTR/QflTf29sbtra2WLlypdJp2n/++SfS0tLEn9GnT5+WuoWbq6srzM3Nxe0eP35can8vvw/aBAYGIiUlBdOnT4dEIlE6oqrqd6YgCOJtEcurrJ+zhYUFrK2txbkqSixfvlzpuVwuL3Uquq2tLRwcHMr8PrwJQ4YMwfTp07FgwQK1bcryORN9qHikmog+CH/++ad4ZOFFLVq0gIuLC4YMGYJHjx6hbdu2qF69Om7cuIGlS5eiUaNG4lHURo0aQU9PD5GRkcjJyYGRkZF4H+nXzd/fXzxyPnz4cOTl5WH16tWwtbXF3bt3ldp6eXlhxYoV+Pbbb+Hm5gZbW1u0bdsWEyZMwM6dO/Hpp5+KtxrKz8/H2bNnsXXrVly/fh3W1tbo0qULfH19MXnyZFy/fh2enp7Ytm1bma7bVqdbt27o1q2bxjYNGzbEwIEDsWrVKmRnZ6NVq1ZISEjA2rVr0b17d6Vr3svqTX5GBgYG6Nu3L3788Ufo6empnYBNna1bt8LMzAyFhYW4ffs29u3bh2PHjqFhw4ZKt/uRSqX46aef0LFjR9StWxeDBg1CtWrVcPv2bRw+fBgWFhbYtWuXUt/Xrl1D165d0aFDB8THx2P9+vXo378/GjZsqHY8kydPxsaNG9GxY0eMHj0aVlZWWLt2La5du4bffvut1Kmx/fv3x8SJE7F9+3Z8+eWXKm+382+0atUKw4cPx9y5c5Gamgp/f38YGBggIyMDW7ZsweLFi9GzZ89X6vNV89CiRQssW7YMI0eOhIeHBwYMGIBatWrhyZMniI2Nxc6dO/Htt98CALp06YI2bdrg66+/xvXr19GwYUPs378fv//+O8aMGSOecTBz5kwcOXIEnTt3Ro0aNXD//n0sX74c1atXFyeJc3V1haWlJVauXAlzc3OYmpqiWbNmpa5xBoCdO3fiyZMn6Nq1q8rX0Lx5c9jY2CA6Ohp9+vTBhAkTsHXrVvTq1Us83frRo0fYuXMnVq5cqTEjBgYGiIyMxKBBg9CqVSv069dPvKWWs7OzeDnKpUuX0K5dO/Tu3Ruenp7Q19fH9u3bce/ePfTt2xcAsHbtWixfvhyfffYZXF1d8eTJE6xevRoWFhbiF2zafPHFF5g5cyZ+//13+Pr6Kp2J4eHhAVdXV4wfPx63b9+GhYUFfvvtt389oVZZP2fgeWH63XffYciQIfD29saRI0dw6dIlpf6ePHmC6tWro2fPnmjYsCHMzMxw4MABJCYmaixoX/TLL7+onPPjxfvJHzx4UOW96rt3767yGvsaNWoo3UtblbJ8zkQfrLc93TgR0duk6ZZaeOH2J1u3bhX8/f0FW1tbwdDQUHBychKGDx8u3L17V6m/1atXCy4uLoKenp7SrXrU3VJry5YtKsfz8i1RVN12aefOnUKDBg0EY2NjwdnZWYiMjBR++eUXAYBw7do1sV1WVpbQuXNnwdzcXACgNI4nT54IU6ZMEdzc3ARDQ0PB2tpaaNGihTB//nylW309fPhQGDBggGBhYSHIZDJhwIABQkpKyivfUkuTl2+pJQiCUFRUJMyYMUOoWbOmYGBgIDg6OgpTpkwRnj17ptSu5PYvqvp8+XZi6j6jsvah6pZaJRISEgQAgr+/v8bX+qKSz7bkYWxsLFSvXl349NNPhV9++aXUay2RkpIifP7550KVKlUEIyMjoUaNGkLv3r2FgwcPlur7woULQs+ePQVzc3OhcuXKQlhYmNItkEpe/4u31BIEQbhy5YrQs2dPwdLSUjA2NhaaNm0q7N69W+1r6dSpkwBAOH78eKl1r5JtQXh+6yJTU9NS/axatUrw8vISTExMBHNzc6F+/frCxIkThTt37ii9ln+bB02Sk5OF/v37Cw4ODoKBgYFQuXJloV27dsLatWvF2zcJwvOfr/DwcLFdrVq1hHnz5indUuzgwYNCt27dBAcHB8HQ0FBwcHAQ+vXrV+pWd7///rvg6ekp6Ovra/y569Kli2BsbCzk5+erHX9wcLBgYGAgPHjwQBCE5z/fYWFhQrVq1QRDQ0OhevXqwsCBA8X12n6GN2/eLDRu3FgwMjISrKyshMDAQOHWrVvi+gcPHgihoaGCh4eHYGpqKshkMqFZs2bCf//7X7HNqVOnhH79+glOTk6CkZGRYGtrK3z66adCUlKS2tehykcffSQAEJYvX15q3YULFwQ/Pz/BzMxMsLa2FoYOHSreKu3F91Nd9krWvXx7w7J8zoLw/JZeISEhgkwmE8zNzYXevXsL9+/fV7qlVkFBgTBhwgShYcOGgrm5uWBqaio0bNhQ5et5mbZ/z27evCneUkvd49dffxUEQf3PkKr9lfxMl+VzJvpQSQShnDN6EBERfWBOnz6NRo0aYd26dRpPbX9bIiIiMGPGDPz999+wtrZ+4/v77LPPcPbsWVy+fPmN74uIiOhdwWuqiYiIymj16tUwMzPD559/XtFDeevu3r2LPXv26MSXCURERLqE11QTERFpsWvXLly4cAGrVq1CWFiYOLHUh+DatWs4duwYfvrpJxgYGGD48OEVPSQiIiKdwqKaiIhIi1GjRuHevXvo1KkTZsyYUdHDeavi4uIwaNAgODk5Ye3atbC3t6/oIREREekUXlNNREREREREVE68ppqIiIiIiIionFhUExEREREREZUTr6kmnaFQKHDnzh2Ym5tDIpFU9HCIiIiIiKiCCIKAJ0+ewMHBAVKpbh8LZlFNOuPOnTtwdHSs6GEQEREREZGOuHnzJqpXr17Rw9CIRTXpDHNzcwDPb99iZWVVwaMhXVNcXIyUlBQ0btwY+vr81UWlMSOkDTNCmjAfpA0z8nbl5ubC0dFRrBF0GdNAOqPklG8LCwtYWFhU8GhI1xQXF8PU1BQWFhb8h4xUYkZIG2aENGE+SBtmpGK8C5eF6vbJ6UREREREREQ6jPepJp2Rm5sLmUyG7OxsyGSyih4O6RhBECCXy6Gnp/dOfGNJbx8zQtowI6QJ80HaMCNvV0ltkJOTo/NnsfJINRG9MwoLCyt6CKTjmBHShhkhTZgP0oYZIVVYVJPOkcvlFT0E0kFyuRxnzpxhPkgtZoS0YUZIE+aDtGFGSB0W1URERERERETlxKKaiIiIiIiIqJxYVBPRO0NPT6+ih0A6jhkhbZgR0oT5IG2YEVKFs3+TzniXZvgjIiIiIqI3512qDXikmnQOv+chVQRBQHZ2NvNBajEjpA0zQpowH6QNM0LqsKgmncMZFUkVuVyOixcvMh+kFjNC2jAjpAnzQdowI6QOi2oiIiIiIiKicmJRTURERERERFROLKpJ50gkkooeAukgiUQCExMT5oPUYkZIG2aENGE+SBtmhNTh7N+kM96lGf6IiIiIiOjNeZdqAx6pJp2jUCgqegikgxQKBe7fv898kFrMCGnDjJAmzAdpw4yQOiyqSefwFxWpolAocPXqVeaD1GJGSBtmhDRhPkgbZoTUYVFNREREREREVE4sqomIiIiIiIjKiUU16RzOqEiqSCQSyGQy5oPUYkZIG2aENGE+SBtmhNTh7N+kM96lGf6IiIiIiOjNeZdqAx6pJp3DyR9IFYVCgVu3bjEfpBYzQtowI6QJ80HaMCOkDotq0jn8RUWq8B8y0oYZIW2YEdKE+SBtmBFSh0U1ERERERERUTmxqCYiIiIiIiIqJxbVpHOkUsaSSpNKpbCxsWE+SC1mhLRhRkgT5oO0YUZIHc7+TTqjZIa/6UeuwtjMvKKHQ0RERET0wZjc2Lqih6CEs38T/RsCJ38gFQQFKj+5w3yQeswIacOMkCbMB2nDjJAaLKpJ50h48gSpIBEEmP6TzXyQWswIacOMkCbMB2nzoWUkODi4oofwzmBRTURERERERFoFBwdDIpEoPTp06FDm7b/77jtIJBKMGTNGafmzZ88QGhqKKlWqwMzMDD169MD9+/eV2mRmZqJz586oVKkSbG1tMWHCBBQXF2vc36NHjxAYGAgLCwtYWloiJCQEeXl5Sm3OnDmDli1bwtjYGI6Ojvj+++/L/HpKsKgmIiIiIiIiPHjwAAMHDoSTkxM2btwINzc39OrVC4WFhWKbDh064O7du+Jj48aNZeo7MTER//nPf9CgQYNS68LDw7Fr1y5s2bIFcXFxuHPnDr744gtxvVwuR+fOnVFYWIjjx49j7dq1WLNmDaZNm6Zxn4GBgTh//jxiYmKwe/duHDlyBMOGDRPX5+bmwt/fHzVq1EBycjLmzZuHiIgIrFq1qkyvqQSLatI5gkRS0UMgHSRIJMg1tWE+SC1mhLRhRkgT5oO0+RAyEh4ejhMnTuDXX39Fp06dsHr1ari4uECh+N915EZGRrC3txcflStX1tpvXl4eAgMDsXr16lLtc3Jy8PPPP2PhwoVo27YtvLy8EBUVhZMnT4pt9u/fjwsXLmD9+vVo1KgROnbsiFmzZmHZsmVKBf+L0tLSsHfvXvz0009o1qwZPv74YyxduhSbNm3CnTt3AADR0dEoLCzEL7/8grp166Jv374YPXo0Fi5c+ErvG4tq0j0SxpJUkEiRa2rDfJB6zAhpw4yQJswHafMBZCQlJQVBQUFo1aoVZDIZ2rRpg8jISBgbG4ttYmNjYWtrC3d3d3z55Zd4+PCh1n5DQ0PRuXNn+Pn5lVqXnJyMoqIipXUeHh5wdHQUn8fHx6N+/fqws7MTlwUEBCA3Nxfnz59Xuc/4+HhYWlrC29tbXObn5wepVCoW7PHx8fjkk09gaGio1G96ejoeP36s9XWVeH8TQe8sCWdUJBUkggLW2TeYD1KLGSFtmBHShPkgbT6EjPj6+iIqKgq7d+9Wub5Dhw5Yt24dDh48iMjISMTFxaFjx46Qy+Vq+9y0aRNOnTqFuXPnqlyflZUFQ0NDWFpaKi23sbFRavNiQQ1AfJ6VlaW2X1tbW6Vl+vr6sLKyErcpT7+qsKh+A7KysvDVV1/Bzc0NxsbGsLOzg6+vL1asWIGnT5+K7ZydncUL/E1NTdGkSRNs2bKl1DpVD22z8R07dgz6+vpo1KiRxnbp6elo06YN7OzsYGxsDBcXF3zzzTcoKioS26xevRotW7ZE5cqVUblyZfj5+SEhIUGpn9atW5eacGDx4sUwMjLCpk2btL9pL/pAZlSkVyQIMC7MZz5IPWaEtGFGSBPmg7T5ADKycOFC9OnTB+Hh4Vi3bh0aNWqElStXiuv79u2Lrl27on79+ujevTt2796NxMRExMbGquzv5s2b+OqrrxAdHa10tPt9o1/RA3jfXL16Fb6+vrC0tMScOXNQv359GBkZ4ezZs1i1ahWqVauGrl27iu1nzpyJoUOHIjc3FwsWLECfPn1QrVo1JCYmit/4HD9+HD169EB6erp443MTExO1Y8jOzkZQUBDatWuHe/fuaRyvgYEBgoKC0KRJE1haWuL06dMYOnQoFAoF5syZA+D5KR79+vVDixYtYGxsjMjISPj7++P8+fOoVq2ayn6nT5+O+fPn4/fff3+lGQGJiIiIiKhimJqaYvbs2Zg9eza6d++Ojh07Ijw8HFKpVGmCrxIuLi6wtrbG5cuX0a5du1Lrk5OTcf/+fTRp0kRcJpfLceTIEfz4448oKCiAvb09CgsLkZ2drXS0+u+//xb/397evtRBvZI6x97eXuVrsbe3LzWDeHFxMR49eiRuY29vX6pe0tavKiyqX7ORI0dCX18fSUlJMDU1FZe7uLigW7duEF76Zsvc3Fy8yH/ZsmVYv349du3apXR6hJWVFQDA1ta21GkRqowYMQL9+/eHnp4eduzYobGti4sLXFxcxOc1atRAbGwsjh49Ki6Ljo5W2uann37Cb7/9hoMHDyIoKEhpnSAIGD16NNavX4+YmBi0aNFC63iJiIiIiEi3WFpaYvjw4di/fz+OHj2qsqi+desWHj58iKpVq6rso127djh79qzSskGDBsHDwwOTJk2Cnp4evLy8YGBggIMHD6JHjx4Anp9Ne/PmTXEbHx8fzJ49G/fv3xdP6Y6JiYGFhQU8PT1V7tvHxwfZ2dlITk6Gl5cXAODQoUNQKBRo1qyZ2Obrr79GUVERDAwMxH7d3d3LNAFbCZ7+/Ro9fPgQ+/fvR2hoqFJB/SKJhtkC9fX1YWBgoHYGu7KIiorC1atXMX369HJtf/nyZezduxetWrVS2+bp06coKioSi/0SxcXF+OKLL7B161bExcVpLagLCgqQm5ur9AAA4T2e/IHKT5BI8di8KvNBajEjpA0zQpowH6TNh5CR8PBwxMXFIScnB3K5HIcPH0ZcXBy8vLyQl5eHCRMm4MSJE7h+/ToOHjyIbt26wc3NDQEBASr7Mzc3R7169ZQepqamqFKlCurVqwcAkMlkCAkJwdixY3H48GEkJydj0KBBaNq0qdiPv78/PD09MWDAAJw+fRr79u3DN998g9DQUBgZGQEAEhIS4OHhgdu3bwMA6tSpgw4dOmDo0KFISEjAsWPHEBYWhr59+8LBwQEA0L9/fxgaGiIkJATnz5/H5s2bsXjxYowdO/aV3jceqX6NLl++DEEQ4O7urrTc2toaz549A/B85rvIyMhS2xYWFmLBggXIyclB27Zty7X/jIwMTJ48GUePHoW+/qt9tC1atMCpU6dQUFCAYcOGYebMmWrbTpo0CQ4ODqVm71u9ejUA4PTp0/Dw8NC6z7lz52LGjBmlV7zHtymgf0EiQb5J2b8xpA8QM0LaMCOkCfNB2nwAGXFycsLYsWORkZGB/Px8xMbGYvDgwRg1ahQKCwtx5swZrF27FtnZ2XBwcIC/vz9mzZolFrbA87mWnJ2dsWbNmjLvd9GiRZBKpejRowcKCgoQEBCAyMhI1K5dGwCgp6eH3bt348svv4SPjw9MTU0xcOBApZrl6dOnSE9PV5obKjo6GmFhYWjXrp3Y/5IlS8T1MplMPCjq5eUFa2trTJs2TeVReU0kwsvnI1O5nTx5Es2bN8e2bdvw2WeficuvXr0KhUKBwMBA+Pj44IcffgDwfDKyu3fvwsDAAM+ePYOZmRmmTJmCSZMmKfUbGxuLNm3a4PHjx+Lp32ZmZuL6L774AsuWLUPz5s0REhKCESNGAAAiIiKwY8cOpKamah37zZs38eTJE5w+fRoTJkzA6NGjMXHixFLtvvvuO3z//feIjY1VunF769atoaenh9TUVLRt2xYbN27UWtgXFBSgoKBAfJ6bmwtHR0dExF2GkblM65jpwyIRFLB7fA33Ktd8r78hpvJjRkgbZoQ0YT5Im/c9I5MbWys9Dw4OfqXCuESNGjUwY8YMrRMra5ObmwuZTIacnBxxXildxSPVr5GbmxskEgnS09OVlpdcs6xqcrEJEyYgODgYZmZmsLOz03h6+IteLJQtLCzw5MkTJCUlISUlBWFhYQAAhUIBQRCgr6+P/fv3azwCXnIfOE9PT8jlcgwbNgzjxo2Dnp6e2Gb+/Pn47rvvcODAAaWCukT9+vWxYMEC+Pn5oU+fPti8ebPGwtrIyEjpWy0Rv+chVQQB+sUFz/PBkxlIFWaEtGFGSBPmg7RhRrQ6f/48ZDJZqXmX3ncsql+jKlWqoH379vjxxx8xatQotddVv8ja2hpubm6vvK+Xt1EoFKUmAVi+fDkOHTqErVu3ombNmmXuW6FQoKioCAqFQiyqv//+e8yePRv79u1TuoH6yxo1aoSDBw/Cz88PvXv3xubNm8WL/omIiIiI6N1QnqPUdevWxZkzZ17/YHQci+rXbPny5fD19YW3tzciIiLQoEEDSKVSJCYm4uLFi+LMc6+bVCoVL/YvYWtrC2Nj41LLXxQdHQ0DAwPx1l9JSUmYMmUK+vTpIxbDkZGRmDZtGjZs2ABnZ2fxRuhmZmZKp6GXaNiwIQ4dOoR27dqhd+/e+O9//8vCmoiIiIiI3kssql8zV1dXpKSkYM6cOZgyZQpu3boFIyMjeHp6Yvz48Rg5cmRFD1GJvr4+IiMjcenSJQiCgBo1aiAsLAzh4eFimxUrVqCwsBA9e/ZU2nb69OmIiIhQ2W/9+vXFwrpXr17473//C0NDwzKN6X28RoX+PUEixQNLJ+aD1GJGSBtmhDRhPkgbZoTU4URlpDNKJiOYfuQqjM3MK3o4REREREQfjJcnKqto79JEZfyahXSORCGv6CGQDpIo5Kj24CLzQWoxI6QNM0KaMB+kDTNC6rCoJqJ3hkShqOghkI5jRkgbZoQ0YT5IG2aEVGFRTURERERERFROLKqJiIiIiIiIyolFNekczqhIqggSKbKsXJkPUosZIW2YEdKE+SBtmBFSh4kgoneGXMq7AJJmzAhpw4yQJswHacOMkCpMBemc0fUsYWVlVdHDIB1TXFyMpKQkeHt7Q1+fv7qoNGaEtGFGSBPmg7RhRkgdHqkmIiIiIiIiKicW1URERERERETlxKKaiIiIiIiIqJwkgiAIFT0IIgDIzc2FTCZDdnY2ZDJZRQ+HdIwgCJDL5dDT04NEIqno4ZAOYkZIG2aENGE+SBtm5O0qqQ1ycnJgYWFR0cPRiEeqieidUVhYWNFDIB3HjJA2zAhpwnyQNswIqcJp60jn/JD6N4wsiip6GKRjJAo5qj1Ix21rdwhSvYoeDukgZqTiTW5sXdFD0Egul+PMmTOcuZdUYj5IG2aE1OGRaiIiIiIiIqJyYlFNREREb0RwcHBFD4GIiOiNY1FNRO8MQcpfWaQZM6LbioqKMGnSJNSvXx+mpqZwcHBAUFAQ7ty5o3E7Z2dnSCSSUo/Q0FCxzbNnzxAaGooqVarAzMwMPXr0wL1795T6yczMxPjx42FhYQFbW1tMmDABxcXFGvf96NEjBAYGwsLCApaWlggJCUFeXp5SmzNnzqBly5YwNjaGo6Mjvv/++1d8Z0hX6Onx0hHSjBkhVfjXB+kcXgtJqghSPdy29mA+SC1mRDc8ePAAAwcOhJOTEzZu3Ag3Nzf06tULhYWFePr0KU6dOoWpU6fi1KlT2LZtG9LT09G1a1eNfSYmJuLu3bviIyYmBgDQq1cvsU14eDh27dqFLVu2IC4uDnfu3MHnn38urpfL5ejWrRtMTExw/PhxrF27FmvWrMG0adM07jswMBDnz59HTEwMdu/ejSNHjmDYsGHi+tzcXPj7+6NGjRpITk7GvHnzEBERgVWrVpXn7aMKpK+vj48++ojXypJazAipw1tqkc4omTZ/etwVGJvr9rT5VAEEAcZF+XhmYArwNhakCjNS4SY3tsaAAQOQkJCAVatW4YcffsDo0aOxd+9ezJgxA8bGxqW2SUxMRNOmTXHjxg04OTmVaT9jxozB7t27kZGRAYlEgpycHNjY2GDDhg3o2bMnAODixYuoU6cO4uPj0bx5c/z555/49NNPkZaWhlq1akEikWDlypWYNGkS/v77bxgaGpbaT1paGjw9PZGYmAhvb28AwN69e9GpUyfcunULDg4OWLFiBb7++mtkZWWJfUyePBk7duzAxYsXy/tWUgUQBAE5OTmQyWS8XRKpxIy8XbylFtG/IBEUFT0E0kESQQHr7Ezmg9RiRnRDSkoKgoKC0KpVK8hkMrRp0waRkZEqC2oAyMnJgUQigaWlZZn6LywsxPr16zF48GDxj9rk5GQUFRXBz89PbOfh4QEnJyfEx8cDAOLj41GvXj08evQIcrkcABAQEIDc3FycP39e5b7i4+NhaWkpFtQA4OfnB6lUipMnT4ptPvnkE6WiPCAgAOnp6Xj8+HGZXhPpBrlcjosXL4r5IHoZM0Lq8NwFIiIiem18fX0RFRWFhg0bam377NkzTJo0Cf369SvzUYgdO3YgOztbaRK0kqPELxfmdnZ2yMrKEtvY2dmVWl+yTpWsrCzY2toqLdPX14eVlZVSvzVr1lTbb+XKlcv0uoiI6N3FI9VERET02ixcuBB9+vRBeHg41q1bh0aNGmHlypWl2hUVFaF3794QBAErVqwoc/8///wzOnbsCAcHh9c5bCIionJjUf0eysrKwldffQU3NzcYGxvDzs4Ovr6+WLFiBZ4+fQpAeSZVU1NTNGnSBFu2bCm1TtVD2y1Sjh07Bn19fTRq1Kh8L4DXqJAqEgmK9Y2YD1KPGdEJpqammD17NjIyMtC1a1d8+eWXGDt2rNLEXSUF9Y0bNxATE1Pmo9Q3btzAgQMHMGTIEKXl9vb2KCwsRHZ2ttLye/fuwd7eXmxz//59mJiYiKeNl8wOXtLmZSXbvKi4uBiPHj1S6vflWca19Uu6SSKRKOWD6GXMCKnDovo9c/XqVTRu3Bj79+/HnDlzkJKSgvj4eEycOBG7d+/GgQMHxLYzZ87E3bt3kZKSgo8++gh9+vTB8ePHlWZZ/e233wAA6enp4rLFixer3X92djaCgoLQrl27cr8GQcJYUmmCRIosK1fmg9RiRnSPpaUlhg8fjo4dO+Lo0aMA/ldQZ2Rk4MCBA6hSpUqZ+4uKioKtrS06d+6stNzLywsGBgY4ePCguCw9PR2ZmZnw8fEBAPj4+ODs2bOoWrWqeEuckoLe09NT5f58fHyQnZ2N5ORkcdmhQ4egUCjQrFkzsc2RI0dQVFQktomJiYG7uztP/X7H6OnpoWHDhrxlEqnFjJA6/MvjPTNy5Ejo6+sjKSkJvXv3Rp06deDi4oJu3bphz5496NKli9jW3Nwc9vb2qF27NpYtWwYTExPs2rULNjY2sLe3h729PaysrAAAtra24jKZTKZ2/yNGjED//v3FP2LKhRPSkyqCANN/HjMfpB4zohPCw8MRFxeHnJwcyOVyHD58GHFxcfDy8kJRURF69uyJpKQkREdHQy6XIysrC1lZWSgsLNTYr0KhQFRUFAYOHFjqdjYymQwhISEYO3YsDh8+jOTkZAwaNAg+Pj5o3rw5AMDf3x+enp7o06cPUlJSsG/fPnzzzTcIDQ2FkZERACAhIQEeHh64ffs2AKBOnTro0KEDhg4dioSEBBw7dgxhYWHo27evePp5//79YWhoiJCQEJw/fx6bN2/G4sWLMXbs2Nf91tIbplAocP/+fSgUnOyQVGNGSB1OVPYeefjwoXiE2tTUVGUbdaer6Ovrw8DAQOsfNZpERUXh6tWrWL9+Pb799lut7QsKClBQUCA+z83NfT5GztxLKkgEBSo/uYunRhYQJPyGmEpjRnSDk5MTxo4di4yMDOTn5yM2NhaDBw/GqFGjcPPmTezcuRMASl0idPjwYbRu3RoA0Lp1azg7O2PNmjXi+gMHDiAzMxODBw9Wud9FixZBKpWiR48eKCgoQEBAAJYvXy6u19PTw44dOzBgwAD4+vrC1NQUAwcOxMyZM8U2T58+RXp6utJR5+joaISFhaFdu3Zi/0uWLBHXy2Qy7N+/H6GhofDy8oK1tTWmTZumdC9rejcoFApcvXoVVlZWkEp53IlKY0ZIHRbV75HLly9DEAS4u7srLbe2tsazZ88AAKGhoYiMjFRaX1hYiAULFiAnJwdt27Yt174zMjIwefJkHD16tNQRBHXmzp2LGTNmlGt/RESkm8LDwxEeHg4ACA4OViqMnZ2dIZThTIJr166Vmr/D399f47bGxsZYtmwZli1bprZNjRo1sHDhQnh7e6v8t6p169al9mFlZYUNGzZoHG+DBg3E09uJiOjDw69YPgAJCQlITU1F3bp1lY4MT5o0CWZmZqhUqRIiIyPx3XfflbpOTRUzMzPxMWLECMjlcvTv3x8zZsxA7dq1yzyuKVOmICcnR3zcvHmzXK+PiIjeH+fPn4dMJkNQUFBFD4WIiKhMeKT6PeLm5gaJRIL09HSl5S4uLgAAExMTpeUTJkxAcHAwzMzMYGdnV+aZDFNTU8X/t7CwwJMnT5CUlISUlBSEhYUBeH56jCAI0NfXx/79+1UeATcyMhKvY1PCGRVJFYkEzwxNmQ9SjxnROS8epS6runXr4syZM69/MHh+CZRMJuPMvaQS80HaMCOkDovq90iVKlXQvn17/Pjjjxg1apTa66pLWFtbw83N7ZX38/I2CoUCZ8+eVVq2fPlyHDp0CFu3bkXNmjVfqX/O3EuqCBIpHljWqOhhkA5jRkgbPT091KlTp6KHQTqK+SBtmBFSh9XLe2b58uUoLi6Gt7c3Nm/ejLS0NKSnp2P9+vW4ePHiG7kFgFQqRb169ZQetra2MDY2Rr169bQW96VwojJSRVDAIv9v5oPUY0ZIC4VCgVu3bnHmXlKJ+SBtmBFSh0X1e8bV1RUpKSnw8/PDlClT0LBhQ3h7e2Pp0qUYP348Zs2aVdFD1ErC2+GQChJBgEX+38wHqcWMkDb8g5g0YT5IG2aE1OHp3++hqlWrYunSpVi6dKnaNtevXy9TX6pmQi2LiIgIREREvPJ2RERERERE7xIeqSYiIiIiIiIqJxbVpHMEzqhIKggSCfJNLJkPUosZIW2kUilsbGwglfLPHyqN+SBtmBFSh6d/k+7h7N+kikSKx+YOFT0K0mXMCGkhlUrh6upa0cMgHcV8kDbMCKnD6oV0D2fuJVUEBSo/ucN8kHrMCGmhUChw5coVTjJEKjEfpA0zQuqwqCadw5l7SRWJIMD0n2zmg9RiRkgbhUKBv//+m38Qk0rMB2nDjJA6PP2bdM6o+lawsrKq6GGQjikuLkZSkiH6NqwCfX3+6qLSmBEiIiKqCDxSTURERERERFROLKpJ53BGRVJFKpWievXqzAepxYyQNswIacJ8kDbMCKkjEQRefEa6ITc3FzKZDDk5ObCwsKjo4RARERERUQV5l2oDfs1COkcul1f0EEgHyeVypKWlMR+kFjNC2jAjpAnzQdowI6QOi2rSOTx5glQRBAE5OTnMB6nFjJA2zAhpwnyQNswIqcOimoiIiIiIiKiceM8R0jlLzz6CkQXv/0fKJAo5quUUIu70QwhSvYoeDukgZqTiTW5sXdFDICIieut4pJp0jiBhLKk0QSLFY/OqzAepxYyQNlKpFC4uLpy5l1RiPkgbZoTUYSJI90gkFT0C0kUSCfJNKjMfpB4zonOCg4MreghKpFIpbG1t+QcxqcR8kDbMCKnDRJDOkQg89ZtKkwgK2D+6wnyQWsyI7isqKsKkSZNQv359mJqawsHBAUFBQbhz547G7ZydnSGRSEo9QkNDxTbPnj1DaGgoqlSpAjMzM/To0QP37t1T6ufatWto2bIlKlWqBFtbW0yYMAHFxcUa9/3o0SMEBgbCwsIClpaWCAkJQV5enlKbM2fOoGXLljA2NoajoyO+//77V3xnSBfI5XKcPn2aMzuTWswIqcOimnQPZ1QkVQQB+sUFzAepx4zohAcPHmDgwIFwcnLCxo0b4ebmhl69eqGwsBBPnz7FqVOnMHXqVJw6dQrbtm1Deno6unbtqrHPxMRE3L17V3zExMQAAHr16iW2CQ8Px65du7BlyxbExcXhzp07+Pzzz8X1crkcXbp0QUFBAY4cOYK1a9dizZo1mDZtmsZ9BwYG4vz584iJicHu3btx5MgRDBs2TFyfm5sLf39/1KhRA8nJyZg3bx4iIiKwatWq8rx9VIEEQcA///zDmZ1JLWaE1OFEZURERPTahIeHIyEhAb/++it++OEHjB49Gnv37oVCoYBMJhML4hI//vgjmjZtiszMTDg5Oans08bGRun5d999B1dXV7Rq1QoAkJOTg59//hkbNmxA27ZtAQBRUVGoU6cOTpw4gebNm2P//v1IS0vDrl270KhRI+jr62PWrFmYNGkSIiIiYGhoWGq/aWlp2Lt3LxITE+Ht7Q0AWLp0KTp16oT58+fDwcEB0dHRKCwsxC+//AJDQ0PUrVsXqampWLhwoVLxTURE7y8eqSYiIqLXJiUlBUFBQWjVqhVkMhnatGmDyMhIGBsbq2yfk5MDiUQCS0vLMvVfWFiI9evXY/DgwZD8/+vnk5OTUVRUBD8/P7Gdh4cHnJycEB8fDwCIj49HvXr1YGVlJbYJCAhAbm4uzp8/r3Jf8fHxsLS0FAtqAPDz84NUKsXJkyfFNp988olSUR4QEID09HQ8fvy4TK+JiIjebR90US2RSLBjx443vp/WrVtjzJgxb3w/7wvO3EuqCBIpHlg6MR+kFjOiG3x9fREVFYXdu3drbfvs2TNMmjQJ/fr1g4WFRZn637FjB7Kzs5UmQcvKyoKhoWGpwtzOzg5ZWVliG3t7e3h4eEBPT09cX7JOlaysLNja2iot09fXh5WVlVK/Jf28uF9N/ZJu0tPTU8oH0cuYEVLnvf3LIysrC6NGjYKLiwuMjIzg6OiILl264ODBgxU9tHIZPnw4XF1dYWJiAhsbG3Tr1g0XL17Uut358+fRu3dv2NjYwMjICLVr18a0adPw9OnTtzDqcuLMvaSKRIJnhmbMB6nHjOiEhQsXok+fPggPD8e6devQqFEjrFy5slS7oqIi9O7dG4IgYMWKFWXu/+eff0bHjh3h4OBQrvFZWlqKR7iJXlRyxgTzQeowI6TOe1lUX79+HV5eXjh06BDmzZuHs2fPYu/evWjTpo3STKHvEi8vL0RFRSEtLQ379u2DIAjw9/fXOPvgiRMn0KxZMxQWFmLPnj24dOkSZs+ejTVr1qB9+/YoLCx8i6+g7CQKzqhIpUkUclR7cJH5ILWYEd1gamqK2bNnIyMjA127dsWXX36JsWPHKk3cVVJQ37hxAzExMWU+Sn3jxg0cOHAAQ4YMUVpub2+PwsJCZGdnKy2/d+8e7O3txTZZWVlITEwUZ/wumR28pM3L7O3tcf/+faVlxcXFePTokVK/L88yrq1f0k3FxcVK+SB6GTNC6ryXRfXIkSMhkUiQkJCAHj16oHbt2qhbty7Gjh2LEydOqN1u0qRJqF27NipVqgQXFxdMnToVRUVF4vrg4GB0795daZsxY8agdevW4vP8/HwEBQXBzMwMVatWxYIFC0rtp6CgAOPHj0e1atVgamqKZs2aITY2VuNrGjZsGD755BM4OzujSZMm+Pbbb3Hz5k1cv35dZXtBEBASEoI6depg27ZtaNq0KWrUqIFevXph165diI+Px6JFi8T2EokEK1asQMeOHWFiYgIXFxds3bpVXB8bGwuJRKL0B0tqaiokEok4hhs3bqBLly6oXLkyTE1NUbduXfzxxx8aXxfRq5AoeKsk0owZ0S2WlpYYPnw4OnbsiKNHjwL4X0GdkZGBAwcOoEqVKmXuLyoqCra2tujcubPSci8vLxgYGCidjZaeno7MzEz4+PgAAHx8fHDu3Dn8/fffYpuSgt7T01Pl/nx8fJCdnY3k5GRx2aFDh6BQKNCsWTOxzZEjR5T+XoiJiYG7uzsqV65c5tdGuoG3SiJtmBFS5b0rqh89eoS9e/ciNDQUpqampdZrmgjF3Nwca9aswYULF7B48WKsXr1aqfAsiwkTJiAuLg6///479u/fj9jYWJw6dUqpTVhYGOLj47Fp0yacOXMGvXr1QocOHZCRkVGmfeTn5yMqKgo1a9aEo6Ojyjapqam4cOECxo4dW+oG9Q0bNoSfnx82btyotHzq1Kno0aMHTp8+jcDAQPTt2xdpaWllfu2hoaHirUrOnj2LyMhImJmZqW1fUFCA3NxcpQcREb3bwsPDERcXh5ycHMjlchw+fBhxcXHw8vJCUVERevbsiaSkJERHR0MulyMrKwtZWVlaz55SKBSIiorCwIEDoa+vfPMSmUyGkJAQjB07FocPH0ZycjIGDRoEHx8fNG/eHADg7++POnXqYObMmTh9+jT27duHb775BqGhoTAyMgIAJCQkwMPDA7dv3wYA1KlTBx06dMDQoUORkJCAY8eOISwsDH379hVPP+/fvz8MDQ0REhKC8+fPY/PmzVi8eDHGjh37ut9aIiLSUe/dLbUuX74MQRDg4eHxytt+88034v87Oztj/Pjx2LRpEyZOnFim7fPy8vDzzz9j/fr1aNeuHQBg7dq1qF69utgmMzMTUVFRyMzMFP9BHj9+PPbu3YuoqCjMmTNHbf/Lly/HxIkTkZ+fD3d3d8TExKi8BQgAXLp0CcDzPwhUqVOnDv766y+lZb169RJPqZs1axZiYmKwdOlSLF++vEyvPzMzEz169ED9+vUBAC4uLhrbz507FzNmzChT30RE9G5wcnLC2LFjkZGRgfz8fMTGxmLw4MEYNWoUbt68iZ07dwIAGjVqpLTd4cOHxTO/WrduDWdnZ6xZs0Zcf+DAAWRmZmLw4MEq97to0SJIpVL06NEDBQUFCAgIUPr3S09PD7///jsGDBiAli1bwtTUFAMHDsTMmTPFNk+fPkV6errSUefo6GiEhYWhXbt2Yv9LliwR18tkMuzfvx+hoaHw8vKCtbU1pk2bxttpERF9QN67ovrf3Ix98+bNWLJkCa5cuYK8vDwUFxeX+TovALhy5QoKCwvFU8IAwMrKCu7u7uLzs2fPQi6Xo3bt2krbFhQUaD0FLjAwEO3bt8fdu3cxf/589O7dG8eOHVN7mxLg1d6PklPkXnyemppa5u1Hjx6NL7/8Evv374efnx969OiBBg0aqG0/ZcoUpW/yc3Nz4ejoyJl7SSVBIkWWlSvzQWoxI7ohPDwc4eHhAJ5fNvViYezs7Fymf5euXbumNLs38PxIs6ZtjY2NsWzZMixbtkxtGxcXFxw4cAAmJiYqJxpq3bp1qX1YWVlhw4YNGsfboEED8fR2enfp6emhQYMGnNmZ1GJGSJ337i+PWrVqQSKRlGlm7BfFx8cjMDAQnTp1wu7du5GSkoKvv/5a6XQ0qVRa6h/bF7/NLou8vDzo6ekhOTkZqamp4iMtLQ2LFy/WuK1MJkOtWrXwySefYOvWrbh48SK2b9+usm1J0a7u9O20tLRShb0mJaeQv/j6X37tQ4YMwdWrVzFgwACcPXsW3t7eWLp0qdo+jYyMYGFhofQg0kQufe++B6TXjBl5950/fx4ymQxBQUFvpH91Z3gRAcwHaceMkCrvXVFtZWWFgIAALFu2DPn5+aXWvzwzaInjx4+jRo0a+Prrr+Ht7Y1atWrhxo0bSm1sbGxw9+5dpWUvHsl1dXWFgYEBTp48KS57/PixeCo2ADRu3BhyuRz379+Hm5ub0uNVZgkVBAGCIKCgoEDl+kaNGsHDwwOLFi2C4qWJe06fPo0DBw6gX79+SstfnsTtxIkT4unjNjY2AKD0+lUdxXZ0dMSIESOwbds2jBs3DqtXry7zayohETjREJUmERSo9iCd+SC1mBHd8+JR6rKqW7cuzpw5U2o+kNdBLpcjKSmJEw2RSswHacOMkDrvXVENAMuWLYNcLkfTpk3x22+/ISMjA2lpaViyZEmpU5xL1KpVC5mZmdi0aROuXLmCJUuWlDoK3LZtWyQlJWHdunXIyMjA9OnTce7cOXG9mZkZQkJCMGHCBBw6dAjnzp1DcHCw0h8GtWvXRmBgIIKCgrBt2zZcu3YNCQkJmDt3Lvbs2aNybFevXsXcuXORnJyMzMxMHD9+HL169YKJiQk6deqkchuJRIKff/4ZFy5cQI8ePZCQkIDMzExs2bIFXbp0gY+PD8aMGaO0zZYtW/DLL7/g0qVLmD59OhISEhAWFgYAcHNzg6OjIyIiIpCRkYE9e/aUmtl8zJgx2LdvH65du4ZTp07h8OHDaq/pJiIiIiIieh+8l0W1i4sLTp06hTZt2mDcuHGoV68e2rdvj4MHD2LFihUqt+natSvCw8MRFhaGRo0a4fjx45g6dapSm4CAAEydOhUTJ07ERx99hCdPnpQ6PW3evHlo2bIlunTpAj8/P3z88cfw8vJSahMVFYWgoCCMGzcO7u7u6N69OxITE+Hk5KRybMbGxjh69Cg6deoENzc39OnTB+bm5jh+/DhsbW3Vvg8tWrTAiRMnoKenh44dO8LNzQ1TpkzBwIEDERMTI852WmLGjBnYtGkTGjRogHXr1mHjxo3ibUYMDAywceNGXLx4EQ0aNEBkZCS+/fZbpe3lcjlCQ0PF2VJr165d5knOiIiIiIiI3kUS4d/M7EXvDYlEgu3bt5e6D/fblJubC5lMhojYDBhZWFbYOEg3SRRyVHuQjtvW7hCknCCESmNGKt7kxtYVPQSNiouLkZSUBG9v71K35SJiPkgbZuTtKqkNcnJydH7upffySDW92zhzL6kiSKTPiyXmg9RgRkgbPT09eHt7c+ZeUon5IG2YEVKHf3kQ0TtDT1Fc0UMgHceMkDYv3tWD6GXMB2nDjJAqLKoJwPPZxCvy1O8XceZeUkUiKGD/6ArzQWoxI6SNXC7HmTNnOHMvqcR8kDbMCKnDopqIiIiIiIionFhUExEREREREZUTi2oiemcIUv7KIs2YEdKGEwyRJswHacOMkCq8pRbpjHdp2nwiIiIiInpz3qXagF/pk87h9zykiiAIyM7OZj5ILWaEtGFGSBPmg7RhRkgdFtWkczijIqkil8tx8eJF5oPUYkZIG2aENGE+SBtmhNRhUU1ERERERERUTiyqiYiIiIiIiMqJRTXpHIlEUtFDIB0kkUhgYmLCfJBazAhpw4yQJswHacOMkDqc/Zt0RskMf9OPXIWxmXlFD4cIkxtbV/QQiIiIiD5InP2b6N/g9zykiiDA9J/HzAeppVAocP/+fSgUiooeCukoZoQ0YT5IG2aE1GFRTTpHIvAXFZUmERSo/ORuheYjODi4wvZN2ikUCly9epV/7JBazAhpwnyQNswIqcOimojoX9i2bRv8/f1RpUoVSCQSpKamat1m9erVaNmyJSpXrozKlSvDz88PCQkJSm0EQcC0adNQtWpVmJiYwM/PDxkZGUptHj16hMDAQFhYWMDS0hIhISHIy8vTuO9nz54hNDQUVapUgZmZGXr06IF79+4ptcnMzETnzp1RqVIl2NraYsKECSguLi7bG0JERET0gWFRTUSkwYMHDzBw4EA4OTlh48aNcHNzQ69evVBYWAgAyM/Px8cff4zIyMgy9xkbG4t+/frh8OHDiI+Ph6OjI/z9/XH79m2xzffff48lS5Zg5cqVOHnyJExNTREQEIBnz56JbQIDA3H+/HnExMRg9+7dOHLkCIYNG6Zx3+Hh4di1axe2bNmCuLg43LlzB59//rm4Xi6Xo3PnzigsLMTx48exdu1arFmzBtOmTSvz6yMiIiL6kHCiMtIZJZMRRMRdhpG5rKKHQzpGIihQJecmHsocIUjezveBkxtbY8CAAUhISMCqVavwww8/YPTo0di7dy9mzJgBY2Njse3169dRs2ZNpKSkoFGjRq+0H7lcjsqVK+PHH39EUFAQBEGAg4MDxo0bh/HjxwMAcnJyYGdnhzVr1qBv375IS0uDp6cnEhMT4e3tDQDYu3cvOnXqhFu3bsHBwaHUfnJycmBjY4MNGzagZ8+eAICLFy+iTp06iI+PR/PmzfHnn3/i008/xZ07d2BnZwcAWLlyJSZNmoS///4bhoaG5Xkr3wq5XI5Lly6hdu3a0NPTq+jhkA5iRkgT5oO0YUbeLk5URvQvvK2Cid4tgkSKB5Y13no+UlJSEBQUhFatWkEmk6FNmzaIjIxUKqj/radPn6KoqAhWVlYAgGvXriErKwt+fn5iG5lMhmbNmiE+Ph4AEB8fD0tLS7GgBgA/Pz9IpVKcPHlS5X6Sk5NRVFSk1K+HhwecnJyU+q1fv75YUANAQEAAcnNzcf78+df2mt8EPT091KlTh3/okFrMCGnCfJA2zAipw+qFdA8nKiNVBAUs8v9+6/nw9fVFVFQUdu/e/cb2MWnSJDg4OIjFblZWFgAoFbYlz0vWZWVlwdbWVmm9vr4+rKysxDYvy8rKgqGhISwtLTX2q2q/L45LVykUCty6dYsTyJBazAhpwnyQNswIqcOimrSKiIh45dNZ/w0Jr0ggFSSCAIv8v996PhYuXIg+ffogPDwc69atQ6NGjbBy5crX1v93332HTZs2Yfv27a/16PeHiH/skDbMCGnCfJA2zAipw6K6DLKysvDVV1/Bzc0NxsbGsLOzg6+vL1asWIGnT5+K7ZydnSGRSCCRSGBqaoomTZpgy5Ytpdapemi7Vc+xY8egr6+vsbgNDg7WuA9nZ+fX8G4QfVhMTU0xe/ZsZGRkoGvXrvjyyy8xduxYrFq16l/3PX/+fHz33XfYv38/GjRoIC63t7cHgFKzct+7d09cZ29vj/v37yutLy4uxqNHj8Q2L7O3t0dhYSGys7M19qtqvy+Oi4iIiIj+h0W1FlevXkXjxo2xf/9+zJkzBykpKYiPj8fEiROxe/duHDhwQKn9zJkzcffuXaSkpOCjjz5Cnz59cPz4cSQmJuLu3bu4e/cufvvtNwBAenq6uGzx4sVqx5CdnY2goCC0a9dO41gXL14s9nf37l0AQFRUlPg8MTHxlV67IAi8jQ7RCywtLTF8+HB07NgRR48e/Vd9ff/995g1axb27t2rdF00ANSsWRP29vY4ePCguCw3NxcnT56Ej48PAMDHxwfZ2dlITk4W2xw6dAgKhQLNmjVTuU8vLy8YGBgo9Zueno7MzEylfs+ePatUsMfExMDCwgKenp7/6jUTERERvY9YVGsxcuRI6OvrIykpCb1790adOnXg4uKCbt26Yc+ePejSpYtSe3Nzc9jb26N27dpYtmwZTExMsGvXLtjY2MDe3h729vbiZES2trbiMplM/WzXI0aMQP/+/cU/etWRyWRifyVHlCwtLWFvb49nz57B1tZW6R662dnZkEgkiI2NBfD8Nj8SiQR//vknvLy8YGRkhL/++kts/5///AeOjo6oVKkSevfujZycHHGdQqHAzJkzUb16dRgZGaFRo0bYu3dvmd7jlwkSSbm2o/ebIJEg38TyrecjPDwccXFxyMnJgVwux+HDhxEXFwcvLy8Az+8VnZqaigsXLgB4XqSmpqZqvP44MjISU6dOxS+//AJnZ2dkZWUhKytLvMe0RCLBmDFj8O2332Lnzp04e/YsgoKC4ODggO7duwMA6tSpgw4dOmDo0KFISEjAsWPHEBYWhr59+4ozf9++fRseHh7iPbBlMhlCQkIwduxYHD58GMnJyRg0aBB8fHzQvHlzAIC/vz88PT0xYMAAnD59Gvv27cM333yD0NBQGBkZvZH3+HWRSqWwsbGBVMp/2kg1ZoQ0YT5IG2aE1GEiNHj48CH279+P0NBQmJqaqmwj0fAHvr6+PgwMDMT72ZZHVFQUrl69iunTp5e7j1c1efJkfPfdd0hLSxNPSb18+TL++9//YteuXdi7dy9SUlIwcuRIcZvFixdjwYIFmD9/Ps6cOYOAgAB07doVGRkZavdTUFCA3NxcpQcAgLN/kyoSKR6bO7z1fDg5OWHs2LFwdHTEhg0bEBQUhMGDB2PUqFEAgJ07d6Jx48bo3LkzAKBv375o3Lix0nXXwcHBaN26tfh8xYoVKCwsRM+ePVG1alXxMX/+fLHNxIkTMWrUKAwbNgwfffQR8vLysHfvXqXrrqOjo+Hh4YF27dqhU6dO+Pjjj5VOSy8qKkJ6errSZSqLFi3Cp59+ih49euCTTz6Bvb09tm3bJq7X09PD7t27oaenBx8fH3zxxRcICgrCzJkzX9+b+oZIpVK4urryjx1SixkhTZgP0oYZIXX0K3oAuuzy5csQBAHu7u5Ky62trfHs2TMAQGhoKCIjI0ttW1hYiAULFiAnJwdt27Yt1/4zMjIwefJkHD16FPr6b++jmjlzJtq3b6+07NmzZ1i3bh2qVasGAFi6dCk6d+6MBQsWwN7eHvPnz8ekSZPQt29fAM+PxB0+fBg//PADli1bpnI/c+fOxYwZM0qv4OzfpIqgQOW8LDw2s3+rhXV4eDjCw8MBPC+O16xZo7Q+ODhY65wI165dQ5s2bcTn169f17pfiUSCmTNnaixmrayssGHDBrXrnZ2dIbw0sZuxsTGWLVum9ucSAGrUqIE//vhD6xh1jUKhwLVr11CzZk3+wUMqMSOkCfNB2jAjpA7TUA4JCQlITU1F3bp1UVBQoLRu0qRJMDMzQ6VKlRAZGYnvvvtOPIKliZmZmfgYMWIE5HI5+vfvjxkzZqB27dpv6qWo9PL1ncDzo3UlBTXw/LpLhUKB9PR05Obm4s6dO/D19VXaxtfXF2lpaWr3M2XKFOTk5IiPmzdvAuDs36SaRBBg+k/2O5ePnJwcXLlyBePHj6/oobz3FAoF/v77b87KSmoxI6QJ80HaMCOkDo9Ua+Dm5gaJRIL09HSl5S4uLgAAExOTUttMmDABwcHBMDMzg52dncbTw1/04rXOFhYWePLkCZKSkpCSkoKwsDAAz3+QBUGAvr4+9u/f/0pHwEu+TXvxqFVRUZHKtupOdX/djIyMdP4aTaIXvXyUuixkMhlu3br1+gdDRERERDqBR6o1qFKlCtq3b48ff/wR+fn5ZdrG2toabm5usLe3L3NBDTwv4Esetra2sLCwwNmzZ5Gamio+RowYAXd3d6Smpqqd3VcdGxsbABBnBQeUC3ltMjMzcefOHfH5iRMnIJVK4e7uDgsLCzg4OODYsWNK2xw7doyzBRMRERER0XuNR6q1WL58OXx9feHt7Y2IiAg0aNAAUqkUiYmJuHjxojgD8OsmlUpRr149pWW2trYwNjYutbwsTExM0Lx5c3z33XeoWbMm7t+/j2+++abM2xsbG2PgwIGYP38+cnNzMXr0aPTu3VucZXzChAmYPn06XF1d0ahRI0RFRSE1NRXR0dGvPFbO/k2qCBIJck1tmA9SSyqVonr16rzOjdRiRkgT5oO0YUZIHRbVWri6uiIlJQVz5szBlClTcOvWLRgZGcHT0xPjx49XmgFb1/3yyy8ICQmBl5cX3N3d8f3338Pf379M27q5ueHzzz9Hp06d8OjRI3z66adYvny5uH706NHIycnBuHHjcP/+fXh6emLnzp2oVavWqw+Us3+TKhIpck1tKnoUpMNK/tghUocZIU2YD9KGGSF1JMLLU8MSVZDc3FzIZDJExF2Gkbn6+3bTh0kiKFAl5yYeyhwhvKUvXiY3tn4r+6HXQy6X49KlS6hduzb09PQqejikg5gR0oT5IG2YkberpDbIycmBhYVFRQ9HIx4SJN3D73lIFUGAcWE+80FqCYKAnJycUrcRIyrBjJAmzAdpw4yQOiyqiYiIiIiIiMqJRTURERERERFRObGoJp3ztq6XpXeLIJHisXlV5oPUkkqlcHFx4ayspBYzQpowH6QNM0LqcPZv0j28ZRKpIpEg36RyRY+CdJhUKoWtrW1FD4N0GDNCmjAfpA0zQuqwqCad81U9S1SuzOKJlMnlcpw7dw716tXjjJukEjNC2jAjpAnzQdowI6QOz10gncMZFUkVQRDwzz//MB+kFjNC2jAjpAnzQdowI6QOi2oiIiIiIiKicmJRTURERERERFROLKpJ5/AaFVJFT08PHh4ezAepxYyQNswIacJ8kDbMCKnDicpI50g4+zepIJFIYGlpWdHDIB3GjJA2zAhpwnyQNswIqcMj1aRziouLK3oIpIOKi4uRmJjIfJBazAhpw4yQJswHacOMkDo8Uk06Z+nZRzCyUFT0MKiCTW5sXWqZXC6vgJHQu4QZIW2YEdKE+SBtmBFShUeqiYiIiIiIiMqJRTURvRMGDx5c0UMgIiIiIiqFRTXpHEHCWFJpUqkUDRo0UJpx8969ewgODoaDgwMqVaqEDh06ICMjo9S28fHxaNu2LUxNTWFhYYFPPvkE//zzj7j+0aNHCAwMhIWFBSwtLRESEoK8vDyN43n27BlCQ0NRpUoVmJmZoUePHrh3755Sm8zMTHTu3BmVKlWCra0tJkyYwOuw3iA9Pb1SGSF6ETNCmjAfpA0zQuqweiEinfXgwQMMHDgQTk5O2LhxIxo0aIDevXujsLAQgiCge/fuuHr1Kn7//XekpKSgRo0a8PPzQ35+vthHfHw8OnToAH9/fyQkJCAxMRFhYWGQSv/36y8wMBDnz59HTEwMdu/ejSNHjmDYsGEaxxYeHo5du3Zhy5YtiIuLw507d/D555+L6+VyOTp37ozCwkIcP34ca9euxZo1azBt2rTX/0aRyNDQsKKHQDqOGSFNmA/ShhkhVSSCIAgVPQgiAMjNzYVMJkNEbAaMLCwrejhUwSY3tsaAAQOQkJCAVatWYdGiRWjfvj2uX7+OWbNmITMzE+7u7jh37hzq1q0LAFAoFLC3t8ecOXMwZMgQAEDz5s3Rvn17zJo1S+V+0tLS4OnpicTERHh7ewMA9u7di06dOuHWrVtwcHAotU1OTg5sbGywYcMG9OzZEwBw8eJF1KlTB/Hx8WjevDn+/PNPfPrpp7hz5w7s7OwAACtXrsSkSZPw999/8x/lN6C4uBhJSUnw9vaGvj7n4aTSmBHShPkgbZiRt6ukNsjJyYGFhUVFD0cjHqkmIp2VkpKCoKAgtGrVChYWFvDy8sLcuXNhbGyMgoICAICxsbHYXiqVwsjICH/99RcA4P79+zh58iRsbW3RokUL2NnZoVWrVuJ64PmRbEtLS7GgBgA/Pz9IpVKcPHlS5biSk5NRVFQEPz8/cZmHhwecnJwQHx8v9lu/fn2xoAaAgIAA5Obm4vz586/h3SEiIiIiXcCiWodJJBLs2LHjje+ndevWGDNmzBvfD9Gr8vX1RVRUFHbv3l1qXUkRO2XKFDx+/BiFhYWIjIzErVu3cPfuXQDA1atXAQAREREYOnQo9u7diyZNmqBdu3bitddZWVmwtbVV6ltfXx9WVlbIyspSOa6srCwYGhrC0tJSabmdnZ24TVZWllJBXbK+ZB0RERERvR9YVFeQrKwsjBo1Ci4uLjAyMoKjoyO6dOmCgwcPVvTQXtmjR48watQouLu7w8TEBE5OThg9ejRycnIqemj0jlu4cCH69OmD8PBwrF+/HkFBQfjPf/4DADAwMMC2bdtw6dIlWFlZoVKlSjh8+DA6duwoXi+tUDy/3/nw4cMxaNAgNG7cGIsWLYK7uzt++eWXCntdRERERPT+4MUAFeD69evw9fWFpaUl5s2bh/r166OoqAj79u1DaGgoLl68WNFDfCV37tzBnTt3MH/+fHh6euLGjRsYMWIE7ty5g61bt75yf5z9m0qYmppi9uzZmD17Nrp37w5/f3+MHz8eBgYGGDZsGLy8vJCamoqcnBwUFhbCxsYGzZo1E0/lrlq1KgDA09NTqd86deogMzMTAGBvb4/79+8rrS8uLsajR49gb2+vclz29vYoLCxEdna20tHqe/fuidvY29sjISFBabuS2cHV9Uv/jp6eHry9vTkrK6nFjJAmzAdpw4yQOqxeKsDIkSMhkUiQkJCAHj16oHbt2qhbty7Gjh2LEydOqN1u0qRJqF27NipVqgQXFxdMnToVRUVF4vrg4GB0795daZsxY8agdevW4vP8/HwEBQXBzMwMVatWxYIFC0rtp6CgAOPHj0e1atVgamqKZs2aITY2Vu246tWrh99++w1dunSBq6sr2rZti9mzZ2PXrl28fRC9NpaWlggODkbHjh1x9OhRpXUymQw2NjbIyMhAUlISunXrBgBwdnaGg4MD0tPTldpfunQJNWrUAAD4+PggOzsbycnJ4vpDhw5BoVCgWbNmKsfi5eUFAwMDpTNL0tPTkZmZCR8fH7Hfs2fPKhXsMTExsLCwKFXk0+tTWFhY0UMgHceMkCbMB2nDjJAqLKrfskePHmHv3r0IDQ2FqalpqfUvX6P5InNzc6xZswYXLlzA4sWLsXr1aixatOiV9j9hwgTExcXh999/x/79+xEbG4tTp04ptQkLC0N8fDw2bdqEM2fOoFevXmrv/6tOySx9mmZGLCgoQG5urtIDACSC4pVeE72/wsPDERcXh5ycHBQVFSEqKgpxcXHw8vICAGzZsgWxsbHibbXat28vHtEGns9LMGHCBCxZsgRbt27F5cuXMXXqVFy8eBEhISEAnh+17tChA4YOHYqEhAQcO3YMYWFh6Nu3rzjz9+3bt+Hh4SEeeZbJZAgJCcHYsWNx+PBhJCcnY9CgQfDx8UHz5s0BAP7+/vD09MSAAQNw+vRp7Nu3D9988w1CQ0NhZGT0tt/KD4JcLseZM2cgl8sreiiko5gR0oT5IG2YEVKHp3+/ZZcvX4YgCPDw8Hjlbb/55hvx/52dnTF+/Hhs2rQJEydOLNP2eXl5+Pnnn7F+/Xq0a9cOALB27VpUr15dbJOZmYmoqChkZmaKBcX48eOxd+9eREVFYc6cOVr38+DBA8yaNUvrfX7nzp2LGTNmlGns9GFycnLC2LFjkZGRgfz8fBw4cADBwcEYNWoUAODu3bsYO3Ys7t27h6pVqyIoKAhTp05V6mPMmDF49uwZwsPD8ejRIzRs2BAxMTFwdXUV20RHRyMsLAzt2rWDVCpFjx49sGTJEnF9UVER0tPT8fTpU3HZokWLxLYFBQUICAjA8uXLxfV6enrYvXs3vvzyS/j4+MDU1BQDBw7EzJkz39TbRUREREQVgEX1W/Zvbgu+efNmLFmyBFeuXEFeXh6Ki4tf6Z5tV65cQWFhodIprVZWVnB3dxefnz17FnK5HLVr11batqCgAFWqVNG6j9zcXHTu3Bmenp6IiIjQ2HbKlCkYO3as0raOjo5lfDX0IQgPD0d4eDgAICgoCCNHjlS6lmn06NEYPXq01n4mT56MyZMnq11vZWWFDRs2qF3v7Oxc6mfX2NgYy5Ytw7Jly9RuV6NGDfzxxx9ax0dERERE7y4W1W9ZrVq1IJFIXnkysvj4eAQGBmLGjBkICAiATCbDpk2blK6Jlkqlpf7wf/Ga67LIy8uDnp4ekpOTS03CYGZmpnHbJ0+eoEOHDjA3N8f27dthYGCgsb2RkRFPg6VXwolBSBtmhLRhRkgT5oO0YUZIFRbVb5mVlRUCAgKwbNkyjB49utR11S/PJlzi+PHjqFGjBr7++mtx2Y0bN5Ta2NjY4Ny5c0rLUlNTxeLW1dUVBgYGOHnyJJycnAAAjx8/xqVLl9CqVSsAQOPGjSGXy3H//n20bNmyzK8rNzcXAQEBMDIyws6dO2FsbFzmbV8mSPnLikpbt25dRQ+BdJy+vj4++uijih4G6TBmhDRhPkgbZoTU4URlFWDZsmWQy+Vo2rQpfvvtN2RkZCAtLQ1LliwRZw5+Wa1atZCZmYlNmzbhypUrWLJkCbZv367Upm3btkhKSsK6deuQkZGB6dOnKxXZZmZmCAkJwYQJE3Do0CGcO3cOwcHB4j19AaB27doIDAxEUFAQtm3bhmvXriEhIQFz587Fnj17VI4tNzcX/v7+yM/Px88//4zc3FxkZWUhKyurfBM5/ItT5On9JQgCsrOz/9UlFPR+Y0ZIG2aENGE+SBtmhNRhUV0BXFxccOrUKbRp0wbjxo1DvXr10L59exw8eBArVqxQuU3Xrl0RHh6OsLAwNGrUCMePHy81IVNAQACmTp2KiRMn4qOPPsKTJ08QFBSk1GbevHlo2bIlunTpAj8/P3z88cfiTMoloqKiEBQUhHHjxsHd3R3du3dHYmKieHT7ZadOncLJkydx9uxZuLm5oWrVquLj5s2br/z+cPZvUkUul+PixYuccZPUYkZIG2aENGE+SBtmhNSRCPyqhXREbm4uZDIZImIzYGRhWdHDoQo2ubG10vPi4mIkJSXB29tb463a6MPFjJA2zAhpwnyQNszI21VSG5TcqleX8Ug1ERERERERUTmxqCbdI5FU9AhIB0kkEpiYmEDCfJAazAhpw4yQJswHacOMkDo8/Zt0RskpHtOPXIWxmXlFD4cq2MunfxMRERHRh4OnfxP9G/yeh1RQKBS4f/8+FApOZEeqMSOkDTNCmjAfpA0zQuqwqCadw9m/SRWFQoGrV6/yHzJSixkhbZgR0oT5IG2YEVKHRTURERERERFROXEueNI5o+pbwcrKqqKHQUREREREpBWPVJPO4YyKpIpEIoFMJmM+SC1mhLRhRkgT5oO0YUZIHc7+TTrjXZrhj4iIiIiI3px3qTbgkWrSOZz8gVRRKBS4desW80FqMSOkDTNCmjAfpA0zQuqwqCadw19UpAr/ISNtmBHShhkhTZgP0oYZIXVYVBMRERERERGVE2f/Jp2z9OwjGFnwG0BNJje2rughEBEREREReKSadJDAGRVJBalUChsbG0il/LVFqjEjpA0zQpowH6QNM0LqMBGkeySM5asKDg6u6CG8cVKpFK6urvyHjNRiRkgbZoQ0YT5IG2aE1GEiSPcIPPX7dQgODoZEIlF6dOjQQWXbgoICNGrUCBKJBKmpqUrrzpw5g5YtW8LY2BiOjo74/vvvte47MzMTnTt3RqVKlWBra4sJEyaguLhYqU1sbCyaNGkCIyMjuLm5Yc2aNRr7VCgUuHLlCicHIbWYEdKGGSFNmA/ShhkhdVhUk86R8NbpZfLgwQMMHDgQTk5O2LhxI9zc3NCrVy8UFhaKbTp06IC7d++Kj40bN6rsa+LEiXBwcCi1PDc3F/7+/qhRowaSk5Mxb948REREYNWqVWrHJZfL0blzZxQWFuL48eNYu3Yt1qxZg2nTpoltrl27hs6dO6NNmzZITU3FmDFjMGTIEOzbt09tvwqFAn///Tf/ISO1mBHShhkhTZgP0oYZIXVYVBO9o8LDw3HixAn8+uuv6NSpE1avXg0XFxelX/RGRkawt7cXH5UrVy7Vz59//on9+/dj/vz5pdZFR0ejsLAQv/zyC+rWrYu+ffti9OjRWLhwodpx7d+/HxcuXMD69evRqFEjdOzYEbNmzcKyZcvEgn/lypWoWbMmFixYgDp16iAsLAw9e/bEokWLXsM7Q0RERET09rCoJnpHpaSkICgoCK1atYJMJkObNm0QGRkJY2NjsU1sbCxsbW3h7u6OL7/8Eg8fPlTq4969exg6dCh+/fVXVKpUqdQ+4uPj8cknn8DQ0FBcFhAQgPT0dDx+/FjluOLj41G/fn3Y2dkpbZObm4vz58+Lbfz8/JS2CwgIQHx8/Ku/EUREREREFYhFNekczv5dNr6+voiKisLu3btVru/QoQPWrVuHgwcPIjIyEnFxcejYsSPkcjkAQBAEBAcHY8SIEfD29lbZR1ZWllJxDEB8npWVVe5t1LXJzc3FP//8o7JfqVSK6tWrc3IQUosZIW2YEdKE+SBtmBFS571JhEQiwY4dO974flq3bo0xY8a88f180Dj7d5ksXLgQffr0QXh4ONatW4dGjRph5cqV4vq+ffuia9euqF+/Prp3747du3cjMTERsbGxAIClS5fiyZMnmDJlSgW9glfDf8hIG2aEtGFGSBPmg7RhRkiddyIRWVlZGDVqFFxcXGBkZARHR0d06dIFBw8erOihlcvw4cPh6uoKExMT2NjYoFu3brh48aLGba5du4b+/fvDwcEBxsbGqF69epm2qwjBwcHo3r17ubeXcPbvMjE1NcXs2bORkZGBrl274ssvv8TYsWPVTiLm4uICa2trXL58GQBw6NAhxMfHw8jICPr6+nBzcwMAeHt7Y+DAgQAAe3t73Lt3T6mfkuf29vYq91OWbdS1sbCwgImJicp+5XI50tLSxCPtRC9jRkgbZoQ0YT5IG2aE1NH5ovr69evw8vLCoUOHMG/ePJw9exZ79+5FmzZtEBoaWtHDKxcvLy9ERUUhLS0N+/btgyAI8Pf3V/sDWlRUhPbt2yMnJwfbtm1Deno6Nm/ejPr16yM7O/vtDv5t4Ozfr8zS0hLDhw9Hx44dcfToUZVtbt26hYcPH6Jq1aoAgCVLluD06dNITU1Famoq/vjjDwDA5s2bMXv2bACAj48Pjhw5gqKiIrGfmJgYuLu7q5z0rGSbs2fP4v79+0rbWFhYwNPTU2zz8pdiMTEx8PHxUfsaBUFATk4OBOaD1GBGSBtmhDRhPkgbZoTU0fmieuTIkZBIJEhISECPHj1Qu3Zt1K1bF2PHjsWJEyfUbjdp0iTUrl0blSpVgouLC6ZOnapUGKg6mjpmzBi0bt1afJ6fn4+goCCYmZmhatWqWLBgQan9FBQUYPz48ahWrRpMTU3RrFkz8fRadYYNG4ZPPvkEzs7OaNKkCb799lvcvHkT169fV9n+/PnzuHLlCpYvX47mzZujRo0a8PX1xbfffovmzZuL7c6ePYu2bdvCxMQEVapUwbBhw5CXl1fqNc+fPx9Vq1ZFlSpVEBoaqvS+ODs7Y86cORg8eDDMzc3h5ORU6sjnzZs30bt3b1haWsLKygrdunUTxx4REYG1a9fi999/F++NrO39oPIJDw9HXFwccnJyIJfLcfjwYcTFxcHLywt5eXmYMGECTpw4gevXr+PgwYPo1q0b3NzcEBAQAABwcnJCvXr1xEft2rUBAK6urqhevToAoH///jA0NERISAjOnz+PzZs3Y/HixRg7dqw4ju3bt8PDw0N87u/vD09PTwwYMACnT5/Gvn378M033yA0NBRGRkYAgBEjRuDq1auYOHEiLl68iOXLl+O///0vwsPD39bbR0RERET0Wuh0Uf3o0SPs3bsXoaGhMDU1LbXe0tJS7bbm5uZYs2YNLly4gMWLF2P16tWvfLueCRMmIC4uDr///jv279+P2NhYnDp1SqlNWFgY4uPjsWnTJpw5cwa9evVChw4dkJGRUaZ95OfnIyoqCjVr1oSjo6PKNjY2NpBKpdi6davao9n5+fkICAhA5cqVkZiYiC1btuDAgQMICwtTanf48GFcuXIFhw8fFu8fvGbNGqU2CxYsgLe3N1JSUjBy5Eh8+eWXSE9PB/D8qHlAQADMzc1x9OhRHDt2DGZmZujQoQMKCwsxfvx49O7dW+n+yC1atFA55oKCAuTm5io9qOycnJwwduxYODo6YsOGDQgKCsLgwYMxatQo6Onp4cyZM+jatStq166NkJAQeHl54ejRo2JhWxYymQz79+/HtWvX4OXlhXHjxmHatGkYNmyY2CYnJ0fMBwDo6elh9+7d0NPTg4+PD7744gsEBQVh5syZYpuaNWtiz549iImJQcOGDbFgwQL89NNPYsFPRERERPSukAg6fP5CQkICmjVrhm3btuGzzz7T2FYikWD79u1qr+WdP38+Nm3ahKSkJADPj9pmZ2crTW42ZswYpKamIjY2Fnl5eahSpQrWr1+PXr16AXhe5FevXh3Dhg3DDz/8gMzMTLi4uCAzMxMODg5iP35+fmjatCnmzJmjdrzLly/HxIkTkZ+fD3d3d+zZsweurq5q2y9btgwTJ06Enp4evL290aZNGwQGBsLFxQUAsHr1akyaNAk3b94Uv4D4448/0KVLF9y5cwd2dnYIDg5GbGwsrly5Aj09PQBA7969IZVKsWnTJgDPj1S3bNkSv/76K4Dnp7nY29tjxowZGDFiBNavX49vv/0WaWlpkPz/WboLCwthaWmJHTt2wN/fX+V7q0pERARmzJhRavn0uCswNrfQuO2HbnJja6XnwcHBpb4ced8oFAo8ePAA1tbWnCCEVGJGSBtmhDRhPkgbZuTtys3NhUwmQ05ODiwsdLs20Ok0/Jt6f/PmzfD19YW9vT3MzMzwzTffIDMzs8zbX7lyBYWFhWjWrJm4zMrKCu7u7uLzs2fPQi6Xo3bt2jAzMxMfcXFxuHLlisb+AwMDkZKSgri4ONSuXRu9e/fGs2fP1LYPDQ1FVlYWoqOj4ePjgy1btqBu3bqIiYkBAKSlpaFhw4ZKR/R9fX2hUCiUjiLWrVtXLKgBoGrVqkrXvgJAgwYNxP+XSCSwt7cX25w+fRqXL1+Gubm5+HqtrKzw7Nkzra/5ZVOmTEFOTo74uHnzZslOX6kf+jBIpVLY2tryHzFSixkhbZgR0oT5IG2YEVJHv6IHoEmtWrUgkUheeYbr+Ph4BAYGYsaMGQgICIBMJsOmTZuUromWSqWlivYXry0ui7y8POjp6SE5OVmpUAUAMzMzjdvKZDLIZDLUqlULzZs3R+XKlbF9+3b069dP7Tbm5ubo0qULunTpgm+//RYBAQH49ttv0b59+zKP2cDAQOm5RCKBQqEoc5u8vDx4eXkhOjq6VN82NjZlHgcAGBkZqTwVmbN/v7r3/Sg18HzGzXPnzqFevXqlft6IAGaEtGNGSBPmg7RhRkgdnf6axcrKCgEBAVi2bBny8/NLrVc38/Xx48dRo0YNfP311/D29katWrVw48YNpTY2Nja4e/eu0rLU1FTx/11dXWFgYICTJ0+Kyx4/foxLly6Jzxs3bgy5XI779+/Dzc1N6aHudkOqCIIAQRBQUFBQ5m0kEgk8PDzE96VOnTo4ffq00vt07NgxSKVSpaPr/1aTJk2QkZEBW1vbUq9ZJpMBAAwNDf/drQZ094oEqkCCIOCff/7hjJukFjNC2jAjpAnzQdowI6SOThfVwPNrieVyOZo2bYrffvsNGRkZSEtLw5IlS9TefqdWrVrIzMzEpk2bcOXKFSxZsgTbt29XatO2bVskJSVh3bp1yMjIwPTp03Hu3DlxvZmZGUJCQjBhwgQcOnQI586dQ3BwsNLpHrVr10ZgYCCCgoKwbds2XLt2DQkJCZg7dy727NmjcmxXr17F3LlzkZycjMzMTBw/fhy9evWCiYkJOnXqpHKb1NRUdOvWDVu3bsWFCxdw+fJl/Pzzz/jll1/QrVs3AM9PJzc2NsbAgQNx7tw5HD58GKNGjcKAAQNgZ2f3Su+5JoGBgbC2tka3bt1w9OhRXLt2DbGxsRg9ejRu3boF4Pl12WfOnEF6ejoePHjwymcAEBERERERvSt0vqh2cXHBqVOn0KZNG4wbNw716tVD+/btcfDgQaxYsULlNl27dkV4eDjCwsLQqFEjHD9+HFOnTlVqExAQgKlTp2LixIn46KOP8OTJEwQFBSm1mTdvHlq2bIkuXbrAz88PH3/8Mby8vJTaREVFISgoCOPGjYO7uzu6d++OxMREODk5qRybsbExjh49ik6dOsHNzQ19+vSBubk5jh8/DltbW5XbVK9eHc7OzpgxYwaaNWuGJk2aYPHixZgxYwa+/vprAEClSpWwb98+PHr0CB999BF69uyJdu3a4ccffyzT+1xWlSpVwpEjR+Dk5ITPP/8cderUQUhICJ49eyZOIDB06FC4u7vD29sbNjY2OHbs2GsdAxERERERka7Q6dm/6cNSMsMfZ//W7uXZvz8EgiAgJycHMplMnHme6EXMCGnDjJAmzAdpw4y8Xe/S7N86PVEZfaD4S4pUkEgkGu9NT8SMkDbMCGnCfJA2zAipo/Onf9OHR6L4F5Oc0XuruLgYiYmJKC4uruihkI5iRkgbZoQ0YT5IG2aE1GFRTUTvjH81qzx9EJgR0oYZIU2YD9KGGSFVWFQTERERERERlROLaiIiIiIiIqJy4uzfpDNKZvjLzs6GTCar6OGQjhEEAf/88w9MTEw44yapxIyQNswIacJ8kDbMyNv1Ls3+zSPVRPTOMDQ0rOghkI5jRkgbZoQ0YT5IG2aEVGFRTTqHE0CQKnK5HElJScwHqcWMkDbMCGnCfJA2zAipw6KaiIiIiIiIqJxYVBMRERERERGVE4tqIiIiIiIionLi7N+kM0pm+JsedwXG5q82w9/kxtZvaFSkKwRBgFwuh56eHmfcJJWYEdKGGSFNmA/Shhl5uzj7NxHRG1BYWFjRQyAdx4yQNswIacJ8kDbMCKnCopp0jkRQVPQQSAfJ5XKcOXOGM26SWswIacOMkCbMB2nDjJA6LKrpvRQcHFzRQyAiIiIiog8Ai2r6YGzbtg3+/v6oUqUKJBIJUlNTS7V59uwZQkNDUaVKFZiZmaFHjx64d++eUhuJRFLqsWnTJo37fvToEQIDA2FhYQFLS0uEhIQgLy9Pqc2ZM2fQsmVLGBsbw9HREd9///2/fs1ERERERPRmsaim98aDBw8wcOBAODk5YePGjXBzc0OvXr3Ea1/y8/Px8ccfIzIyUm0f4eHh2LVrF7Zs2YK4uDjcuXMHn3/+eal2UVFRuHv3rvjo3r27xrEFBgbi/PnziImJwe7du3HkyBEMGzZMXJ+bmwt/f3/UqFEDycnJmDdvHiIiIrBq1aryvRnvKT09vYoeAuk4ZoS0YUZIE+aDtGFGSBXO/k06Q5z9+8hVGJuZv9K2kxtbY8CAAUhISMCqVavwww8/YPTo0di7dy9mzJgBY2Njse3169dRs2ZNpKSkoFGjRuLynJwc2NjYYMOGDejZsycA4OLFi6hTpw7i4+PRvHlzAM+PVG/fvl1rIV0iLS0Nnp6eSExMhLe3NwBg79696NSpE27dugUHBwesWLECX3/9NbKysmBoaPj8NU2ejB07duDixYuv9F4QEREREb3rOPs30b9Rzu95UlJSEBQUhFatWkEmk6FNmzaIjIxUKqg1SU5ORlFREfz8/MRlHh4ecHJyQnx8vFLb0NBQWFtbo2nTpvjll1+g6bup+Ph4WFpaigU1APj5+UEqleLkyZNim08++UQsqAEgICAA6enpePz4cZnG/74TBAHZ2dka32v6sDEjpA0zQpowH6QNM0LqsKgmnVPe2b99fX0RFRWF3bt3l2v7kqPElpaWSsvt7OyQlZUlPp85cyb++9//IiYmBj169MDIkSOxdOlSjf3a2toqLdPX14eVlZXYb1ZWFuzs7Ertt2QdPZ9x8+LFi5xxk9RiRkgbZoQ0YT5IG2aE1Hlni+qsrCx89dVXcHNzg7GxMezs7ODr64sVK1bg6dOnYjtnZ2dxMilTU1M0adIEW7ZsKbVO1UPVDNJ//fUXfH19UaVKFZiYmMDDwwOLFi3SONbr16+r7P/EiRNat1E1mVZ5rFmzplSx+Ca1bt0aY8aMeWv7A4CFCxeiT58+CA8Px7p169CoUSOsXLnyte9n6tSp8PX1RePGjTFp0iRMnDgR8+bNe+37ISIiIiIi3adf0QMoj6tXr8LX1xeWlpaYM2cO6tevDyMjI5w9exarVq1CtWrV0LVrV7H9zJkzMXToUOTm5mLBggXo06cPqlWrhsTERPGbpuPHj6NHjx5IT08Xz9k3MTEptW9TU1OEhYWhQYMGMDU1xV9//YXhw4fD1NRUaeIpVQ4cOIC6deuKz6tUqfI63o7XqrCwUOkU5HeJqakpZs+ejdmzZ6N79+7o2LEjwsPDIZVKtX42AGBvb4/CwkJkZ2crfQFx79492Nvbq92uWbNmmDVrFgoKCmBkZKSy3/v37ystKy4uxqNHj8R+7e3tS80yXvJc076JiIiIiKhivZNHqkeOHAl9fX0kJSWhd+/eqFOnDlxcXNCtWzfs2bMHXbp0UWpvbm4Oe3t71K5dG8uWLYOJiQl27doFGxsb2Nvbw97eHlZWVgAAW1tbcZlMJiu178aNG6Nfv36oW7cunJ2d8cUXXyAgIABHjx7VOu4qVaqIfdvb28PAwKDMrzk2NhYSiQQHDx6Et7c3KlWqhBYtWiA9PV1sc/r0abRp0wbm5uawsLCAl5cXkpKSEBsbi0GDBiEnJ0c8Sh4REQHg+dH6WbNmISgoCBYWFhg2bJi4r+zsbLHv1NRUSCQSXL9+XVx27NgxtG7dGpUqVULlypUREBCAx48fIzg4GHFxcVi8eLG4vxe300oiKXtbNSwtLTF8+HB07NixTJ8NAHh5ecHAwAAHDx4Ul6WnpyMzMxM+Pj5qt0tNTUXlypVVFtQA4OPjg+zsbCQnJ4vLDh06BIVCgWbNmoltjhw5gqKiIrFNTEwM3N3dUbly5TKN/30nkUhgYmICyWvIB72fmBHShhkhTZgP0oYZIXXeuaL64cOH2L9/P0JDQ2Fqaqqyjaag6+vrw8DAQLzN0r+VkpKC48ePo1WrVlrbdu3aFba2tvj444+xc+fOcu3v66+/xoIFC5CUlAR9fX0MHjxYXBcYGIjq1asjMTERycnJmDx5MgwMDNCiRQv88MMPsLCwEG8BNX78eHG7+fPno2HDhkhJScHUqVPLNI7U1FS0a9cOnp6eiI+Px19//YUuXbpALpdj8eLF8PHxwdChQ8X9OTo6luqjoKAAubm5Sg8AECTli2V4eDji4uKQk5MDuVyOw4cPIy4uDl5eXgCe3ys6NTUVFy5cAPC8YE5NTRWvWZbJZAgJCcHYsWNx+PBhJCcnY9CgQfDx8RFn/t61axd++uknnDt3DpcvX8aKFSswZ84cjBo1ShxHQkICPDw8cPv2bQBAnTp10KFDBwwdOhQJCQk4duwYwsLC0LdvXzg4OAAA+vfvD0NDQ4SEhOD8+fPYvHkzFi9ejLFjx5brvXgf6enpoWHDhryVBanFjJA2zAhpwnyQNswIqfPOnf59+fJlCIIAd3d3peXW1tZ49uwZgOczM6u6F3FhYSEWLFiAnJwctG3b9l+No3r16vj7779RXFyMiIgIDBkyRG1bMzMzLFiwAL6+vpBKpfjtt9/QvXt37NixQ+k09bKYPXu2WMBPnjwZnTt3xrNnz2BsbIzMzExMmDABHh4eAIBatWqJ28lkMkgkEpWnErdt2xbjxo0Tn9+8eVPrOL7//nt4e3tj+fLl4rIXT203NDREpUqVNJ66PHfuXMyYMaP0inLOqOjk5ISxY8ciIyMD+fn5iI2NxeDBg8WCd+fOnRg0aJDYvm/fvgCA6dOni0fuFy1aBKlUih49eqCgoAABAQFKr9HAwADLli1DeHg4BEGAm5sbFi5ciKFDh4ptnj59ivT0dKWjztHR0QgLC0O7du3E/pcsWSKul8lk4pdFXl5esLa2xrRp08p02vqHQqFQ4MGDB7C2toZU+s59H0hvATNC2jAjpAnzQdowI6TOO1dUq5OQkACFQoHAwEAUFBQorZs0aRK++eYbPHv2DGZmZvjuu+/QuXNnrX2amZmJ///FF18oTXp19OhR5OXl4cSJE5g8eTLc3NzQr18/lf1YW1srHXH86KOPcOfOHcybN++Vi+oGDRqI/1+1alUAwP3798WCcsiQIfj111/h5+eHXr16wdXVVWufL97qqaxSU1PRq1evV97uRVOmTFF6X3Jzc+Ho6Fju2b/Dw8MRHh4OAAgODsaaNWuU1gcHB6ucfO5FxsbGWLZsGZYtW6ZyfYcOHdChQweNfbRu3brUrRasrKywYcMGjds1aNCgzKeqf4gUCgWuXr0KKysr/kNGKjEjpA0zQpowH6QNM0LqvHNFtZubGyQSidK1xADg4uICQPXkYhMmTEBwcDDMzMxgZ2dX5usgXpx5++UbjtesWRMAUL9+fdy7dw8RERFqi2pVmjVrhpiYmDK3L/Hiddglr0OheF6ERkREoH///tizZw/+/PNPTJ8+HZs2bcJnn32msc+XT6Mv+SXxYmH44lFXQPX7/KqMjIzUXodMRERERET0LnjnvmKpUqUK2rdvjx9//BH5+fll2sba2hpubm6wt7d/pYkF3NzcxMfL9xl+kUKhKHV0XJvU1FTxSPPrVLt2bYSHh2P//v34/PPPERUVBeD56dhlvaeejY0NAODu3btK431RgwYNlCb0etmr7O9NePkoNRERERER0ZvwzhXVALB8+XIUFxfD29sbmzdvRlpaGtLT07F+/XpcvHjxjU4esGzZMuzatQsZGRnIyMjAzz//jPnz5+OLL74Q2/z4449o166d+Hzt2rXYuHEjLl68iIsXL2LOnDn45ZdflCa3+rf++ecfhIWFITY2Fjdu3MCxY8eQmJiIOnXqAHg+y3deXh4OHjyIBw8eKN3L+2Vubm5wdHREREQEMjIysGfPHixYsECpzZQpU5CYmIiRI0fizJkzuHjxIlasWIEHDx6I+zt58iSuX7+OBw8eiEfTy4QzKpIKEolEnBuASBVmhLRhRkgT5oO0YUZInXfu9G8AcHV1RUpKCubMmYMpU6bg1q1bMDIygqenJ8aPH4+RI0e+sX0rFApMmTIF165dg76+PlxdXREZGYnhw4eLbR48eIArV64obTdr1izcuHED+vr68PDwwObNm9GzZ8/XNi49PT08fPgQQUFBuHfvHqytrfH555+LE4G1aNECI0aMQJ8+ffDw4UOlybleZmBggI0bN+LLL79EgwYN8NFHH+Hbb79Vuoa6du3/x96dR8d0//8Df85M9m0ikYVKRCQRewhV5YNUiKW2qqqqJKiq3YRYPijaorHEvlSR2LU+ErW0aRVJVawhtkZECFUiVCWNJcvM/f3h536NzJ2bBM3Q5+OcOSdz7/u+7/uOp+S85977un746aef8N///hevv/46rK2t0axZM/ES+LFjxyIsLAx16tTBgwcPcPnyZXh5eZXqWMpb/ZtebSqVSvySiMgQZoTkMCNkDPNBcpgRkqIQnq6oRFRB8vLyoFarMTXpIqzsSz4j3JgJjSq/oFGRqdDpdLh+/TqqVq3K4iBkEDNCcpgRMob5IDnMyD/r8dwgNze3RH0rU8M0kMlR8HseMkCn0+HatWtlu5WA/lWYEZLDjJAxzAfJYUZICifVREREREREROXESTURERERERFROXFSTSZHYEVFMkCpVMLFxYX3MJEkZoTkMCNkDPNBcpgRkvJSVv+mVxyrf5MBSqUSNWvWrOhhkAljRkgOM0LGMB8khxkhKZy9kOkRWPyBStLpdMjMzGRxEJLEjJAcZoSMYT5IDjNCUnimmkzOyHqV4OTkVNHDIBOj0+lw69YtVK9enZddkUHMCMlhRsgY5oPkMCMkhWkgIiIiIiIiKidOqomIiIiIiIjKiZNqMjm8nIYMUSqVqFatGvNBkpgRksOMkDHMB8lhRkiKQhAEoaIHQQQAeXl5UKvVyM3NhYODQ0UPh4iIiIiIKsjLNDfg1yxkcrRabUUPgUyQVqtFWloa80GSmBGSw4yQMcwHyWFGSAqrf5PJWXT6T1g6lP6X1YRGlV/gaMhUCIKA3Nxc8OIaksKMkBxmhIxhPkgOM0JSeKaaiIiIiIiIqJw4qaZXTnh4eEUPgYiIiIiI/iU4qSaTIyiefyxv3ryJ8PBwVK1aFTY2NujQoQMyMjJKtDt06BDeeust2NrawsHBAa1atcKDBw+M9r106VJ4eXnBysoKzZo1w9GjR/XWP3z4EMOGDYOzszPs7OzQs2dP3Lx587ke37+BUqmEt7c3K26SJGaE5DAjZAzzQXKYEZLCRJDpUSjKvMnt27cRFhYGT09PbN68GT4+PujVqxcKCwshCAK6d++OS5cu4bvvvsPJkydRvXp1BAcH4969e2Ifhw4dQocOHdC+fXscPXoUx44dw/Dhw43+4vzmm28QERGBqVOn4sSJE2jYsCFCQkKQk5MjttFoNNi5cye2bt2KpKQkXL9+He+8806Zj/HfTqlUwtXVlX/ISBIzQnKYETKG+SA5zAhJYSLI5CgEXZm30Wg0OHz4MNavX49OnTrh66+/hre3N3Q6HTIyMnD48GEsX74cTZs2Ra1atbB8+XI8ePAAmzdv1utj5MiRmDBhAurWrYtatWrhvffeg6WlpeR+o6OjMWjQIPTv3x916tTBihUrYGNjgzVr1gAAcnNzsXr1akRHR+Ott95CYGAgYmJikJycjMOHD5f9w/kX02q1OHXqFCtukiRmhOQwI2QM80FymBGSwkk1mZ5yVFQ8efIkQkND0bp1a6jVagQFBSEqKgpWVlYoKCgAAFhZWYntlUolLC0t8euvvwIAcnJycOTIEbi6uuLNN9+Em5sbWrduLa43pLCwECkpKQgODtbrNzg4GIcOHQIApKSkoKioSK+Nv78/PD09xTZUOoIg4MGDB6y4SZKYEZLDjJAxzAfJYUZICifV9Epo0aIFYmJisGvXrhLrHk9iJ06ciL/++guFhYWIiorCtWvXcOPGDQDApUuXAADTpk3DoEGDkJCQgMaNG6Nt27YG770GHl1yrtVq4ebmprfczc0N2dnZAIDs7GxYWFjA0dFRsg0REREREb28/vWTaoVCge3bt7/w/bRp0wajR49+4fv5t4qOjkbv3r2h0Wiwbt06BAQEYMWKFQAAc3NzxMXF4cKFC3BycoKNjQ3279+Pjh07ivfE6HSPLjkfPHgw+vfvj0aNGmH+/PmoVauWeCk3ERERERHR017pSXV2djZGjBgBb29vWFpawsPDA126dMHevXsremjl4uXlhQULFjyXvrKysqBQKJCamvpc+ntSYmIiFAoF7t69W67ty1P929bWFjNmzEBGRga6du2KIUOGICIiAitXrgQABAYGIjU1FXfv3sWNGzeQkJCAP//8E97e3gCAKlWqAADq1Kmj12/t2rVx9epVg/usXLkyVCpViUreN2/ehLu7OwDA3d0dhYWFJT6LJ9tQ6ahUKvj7+0OlUlX0UMhEMSMkhxkhY5gPksOMkJRXdlKdlZWFwMBA7Nu3D3PmzMGZM2eQkJCAoKAgDBs2rKKHR8aUo/r3kxwdHTF48GB07NgRBw4c0FunVqvh4uKCjIwMHD9+HN26dQPw6AuLqlWrIj09Xa/9hQsXUL16dYP7sbCwQGBgoN6XNDqdDnv37kXz5s0BPJrMm5ub67VJT0/H1atXxTZUOgqFAo6OjlA8Yz7o1cWMkBxmhIxhPkgOM0JSXtlJ9dChQ6FQKHD06FH07NkTfn5+qFu3LiIiIoxWXR4/fjz8/PxgY2MDb29vTJkyBUVFReL68PBwdO/eXW+b0aNHo02bNuL7e/fuITQ0FHZ2dqhSpQrmzZtXYj8FBQUYO3YsXnvtNdja2qJZs2ZITEws0zEqFAqsWrUKPXr0gI2NDXx9fbFjxw5x/V9//YW+ffvCxcUF1tbW8PX1RUxMDACgRo0aAIBGjRpBoVCI4z927BjatWuHypUrQ61Wo3Xr1jhx4kSp95uVlYWgoCAAQKVKlaBQKBAeHl6249KVvaKiRqNBUlIScnNzodVqsX//fiQlJSEwMBAAsHXrViQmJoqP1WrXrh26d++O9u3bi8cUGRmJRYsW4X//+x8uXryIKVOm4Pz58xg4cKC4n7Zt22LJkiXi+4iICHz99ddYu3Yt0tLSMGTIENy7dw/9+/cH8GgSP3DgQERERGD//v1ISUlB//790bx5c7zxxhtlPs5/s+LiYhw7dgzFxcUVPRQyUcwIyWFGyBjmg+QwIyTFrKIH8CLcuXMHCQkJmDFjBmxtbUusf7po1JPs7e0RGxuLqlWr4syZMxg0aBDs7e0xbty4Uu8/MjISSUlJ+O677+Dq6or//ve/OHHiBAICAsQ2w4cPx2+//YYtW7agatWqiI+PR4cOHXDmzBn4+vqWel/Tp0/H7NmzMWfOHCxevBh9+/bFlStX4OTkhClTpuC3337DDz/8gMqVK+PixYt48OABAODo0aN4/fXX8fPPP6Nu3bqwsLAAAPz9998ICwvD4sWLIQgC5s2bh06dOiEjIwP29vay+/Xw8MC2bdvQs2dPpKenw8HBAdbW1gbHXlBQIFbmBoC8vLxSH/fTPD09ERERgYyMDNy7dw+JiYkYMGAARowYAQC4ceMGIiIicPPmTVSpUgWhoaGYMmWKXh+jR4/Gw4cPodFocOfOHTRs2BB79uxBzZo1xTaZmZm4ffu2+L537964desWPv30U2RnZyMgIAAJCQl6xcvmz58PpVKJnj17oqCgACEhIVi2bFm5j/XfjI+wIDnMCMlhRsgY5oPkMCNkkPAKOnLkiABAiIuLk20LQIiPj5dcP2fOHCEwMFB8HxYWJnTr1k2vzahRo4TWrVsLgiAIf//9t2BhYSF8++234vo///xTsLa2FkaNGiUIgiBcuXJFUKlUwh9//KHXT9u2bYWJEydKjqV69erC/Pnz9cY+efJk8X1+fr4AQPjhhx8EQRCELl26CP379zfY1+XLlwUAwsmTJyX3JwiCoNVqBXt7e2Hnzp2l3u/+/fsFAMJff/1ltO+pU6cKAEq8piVmCLNO3Cr162lhYWFG90svp6KiIuHQoUNCUVFRRQ+FTBQzQnKYETKG+SA5zMg/Kzc3VwAg5ObmVvRQZL2SZ6qFZ3h23DfffINFixYhMzMT+fn5KC4uhoODQ6m3z8zMRGFhIZo1ayYuc3JyQq1atcT3Z86cgVarhZ+fn962BQUFcHZ2LtN4GzRoIP5sa2sLBwcH5OTkAACGDBmCnj174sSJE2jfvj26d++ON99802h/N2/exOTJk5GYmIicnBxotVrcv3+/RLEuY/strYkTJyIiIkJ8n5eXBw8PjzL1QUREREREVJFeyUm1r68vFAoFzp8/X6btDh06hL59+2L69OkICQmBWq3Gli1b9O6JViqVJSbtT95zXRr5+flQqVRISUkpUT3Qzs6uTH2Zm5vrvVcoFOLjoTp27IgrV67g+++/x549e9C2bVsMGzYMc+fOlewvLCwMf/75JxYuXIjq1avD0tISzZs3R2FhYan3W1qWlpawtLQssbw81b+fFBsb+0zbk2lSqVRo0KABK26SJGaE5DAjZAzzQXKYEZLyShYqc3JyQkhICJYuXYp79+6VWC/1qKfk5GRUr14dkyZNQpMmTeDr64srV67otXFxccGNGzf0lj35WKqaNWvC3NwcR44cEZf99ddfuHDhgvi+UaNG0Gq1yMnJgY+Pj97reT9mycXFBWFhYdiwYQMWLFggPmLq8T3UT98XcvDgQYwcORKdOnVC3bp1YWlpqXcPcWlI9U30rB5ni0gKM0JymBEyhvkgOcwIGfJKTqoBYOnSpdBqtXj99dexbds2ZGRkIC0tDYsWLZJ8lJGvry+uXr2KLVu2IDMzE4sWLUJ8fLxem7feegvHjx/HunXrkJGRgalTp+Ls2bPiejs7OwwcOBCRkZHYt28fzp49i/DwcCiV//dR+/n5oW/fvggNDUVcXBwuX76Mo0ePYtasWdi9e/dz+ww+/fRTfPfdd7h48SLOnTuHXbt2oXbt2gAAV1dXWFtbIyEhATdv3kRubq74Gaxfvx5paWk4cuQI+vbtK1loTEr16tWhUCiwa9cu3Lp1C/n5+WXaXiGU7Yw3/TtotVocP36cX9aQJGaE5DAjZAzzQXKYEZLyyk6qvb29ceLECQQFBWHMmDGoV68e2rVrh71792L58uUGt+natSs0Gg2GDx+OgIAAJCcnl6gQHRISgilTpmDcuHFo2rQp/v77b4SGhuq1mTNnDv7zn/+gS5cuCA4ORsuWLcVHOz0WExOD0NBQjBkzBrVq1UL37t1x7NgxeHp6PrfPwMLCAhMnTkSDBg3QqlUrqFQqbNmyBQBgZmaGRYsW4auvvkLVqlXF5zWvXr0af/31Fxo3box+/fph5MiRcHV1LdN+X3vtNUyfPh0TJkyAm5sbhg8f/tyOiYiIiIiIyJQohGep6kX0HOXl5UGtVmNaYgYsHRxLvd2ERpVf3KDIZBQXF+P48eNo0qQJzMxeyXIQ9IyYEZLDjJAxzAfJYUb+WY/nBrm5uWUqHF0RXtkz1UREREREREQvGs9Uk8l4/G3U1KRMWNmX/tsonqn+dxAEAVqtFiqVCgqFoqKHQyaIGSE5zAgZw3yQHGbkn8Uz1UREL8DTj3YjehozQnKYETKG+SA5zAgZwkk1mRxW/yZDtFotTp8+zYqbJIkZITnMCBnDfJAcZoSkcFJNREREREREVE4sW0cmZ0R9Jzg5OVX0MIiIiIiIiGTxTDURvTRUKlVFD4FMHDNCcpgRMob5IDnMCBnC6t9kMl6mCn9ERERERPTivExzA56pJpPD73nIEEEQcPfuXeaDJDEjJIcZIWOYD5LDjJAUTqrJ5LCiIhmi1Wpx/vx55oMkMSMkhxkhY5gPksOMkBROqomIiIiIiIjKidW/yeQsPnMHlg6Gn1U9oVHlf3g0RERERERE0nimmkyPQlHRIyATpFAoYG1tDQXzQRKYEZLDjJAxzAfJYUZICqt/k8l4XOFv6i+XYGVnb7ANz1QTEREREb36WP2b6FmU4Xue8PDwFzcOMik6nQ45OTnQ6QzfGkDEjJAcZoSMYT5IDjNCUjipJpOjEJ79F1VaWhq6du0KtVoNW1tbNG3aFFevXgUA3LlzByNGjECtWrVgbW0NT09PjBw5Erm5uaXu/5NPPoFCocCCBQv0lt+5cwd9+/aFg4MDHB0dMXDgQOTn5z/z8dCjP2SXLl3iHzKSxIyQHGaEjGE+SA4zQlI4qaaXzu3btxEWFgZPT09s3rwZPj4+6NWrFwoLCwEAmZmZaNmyJfz9/ZGYmIjTp09jypQpsLKyAgBcv34d169fx9y5c3H27FnExsYiISEBAwcOLNX+4+PjcfjwYVStWrXEur59++LcuXPYs2cPdu3ahV9++QUff/zx8zt4IiIiIiIyKaz+TS8djUaDo0ePYv369ViwYAFGjhyJhIQE8VvDSZMmoVOnTpg9e7a4Tc2aNcWf69Wrh23btumtmzFjBj788EMUFxfDzEz6v8Uff/yBESNG4Mcff0Tnzp311qWlpSEhIQHHjh1DkyZNAACLFy9Gp06dMHfuXIOTcCIiIiIiernxTDWZHpmKiidPnkRoaChat24NtVqNoKAgREVFwcrKCjqdDrt374afnx9CQkLg6uqKZs2aYfv27Ub7fFwAwdiEWqfToV+/foiMjETdunVLrD906BAcHR3FCTUABAcHQ6lU4siRI8aPmWQpFAqo1WpW3CRJzAjJYUbIGOaD5DAjJMWkJ9UKhUJ2MkTPV1ZWFhQKBVJTUytsDILCeCxbtGiBmJgY7Nq1q8S6nJwc5Ofn48svv0SHDh3w008/oUePHnjnnXeQlJRksL/bt2/j888/l71MOyoqCmZmZhg5cqTB9dnZ2XB1ddVbZmZmBicnJ2RnZxvtm+SpVCrUrl0bKpWqoodCJooZITnMCBnDfJAcZoSkVOikOjw8HN27d6/IIZRbXFwc2rVrBxcXFzg4OKB58+b48ccfjW4zbdo0KBSKEi9bW1u9dlu3boW/vz+srKxQv359fP/993rr27Rpo7e9m5sbevXqhStXrsiO++LFi+jfvz+qVasGS0tL1KhRA3369MHx48fL/iEY0aZNG4wePbp8G8sUKouOjkbv3r2h0Wiwbt06BAQEYMWKFQAgXgLerVs3aDQaBAQEYMKECXj77bfFNk/Ky8tD586dUadOHUybNk1ynykpKVi4cCFiY2P57WQF0el0uHbtGouDkCRmhOQwI2QM80FymBGSYtJnqk3ZL7/8gnbt2uH7779HSkoKgoKC0KVLF5w8eVJym7Fjx+LGjRt6rzp16qBXr15im+TkZPTp0wcDBw7EyZMn0b17d3Tv3h1nz57V62vQoEG4ceMGrl+/ju+++w6///47PvzwQ6NjPn78OAIDA3HhwgV89dVX+O233xAfHw9/f3+MGTPm2T6Q50gh80gtW1tbzJgxAxkZGejatSuGDBmCiIgIrFy5EpUrV4aZmRnq1Kmjt03t2rXF6t+P/f333+jQoQPs7e0RHx8Pc3NzyX0eOHAAOTk58PT0hJmZGczMzHDlyhWMGTMGXl5eAAB3d3fk5OTobVdcXIw7d+7A3d29DJ8AGcI/ZCSHGSE5zAgZw3yQHGaEpLxUk+rx48fDz88PNjY28Pb2xpQpU1BUVCSunzZtGgICArBmzRp4enrCzs4OQ4cOhVarxezZs+Hu7g5XV1fMmDFDr9/o6GjUr18ftra28PDwwNChQ2Ufg7RgwQKMGzcOTZs2ha+vL2bOnAlfX1/s3LlTchs7Ozu4u7uLr5s3b+K3337Tqzq9cOFCdOjQAZGRkahduzY+//xzNG7cGEuWLNHry8bGBu7u7qhSpQreeOMNDB8+HCdOnJDctyAICA8Ph6+vLw4cOIDOnTujZs2aCAgIwNSpU/Hdd9/ptb906RKCgoJgY2ODhg0b4tChQ+K6P//8E3369MFrr70GGxsb1K9fH5s3bxbXh4eHIykpCQsXLhTPpmdlZRn9PMvL0dERgwcPRseOHXHgwAFYWFigadOmSE9P12t34cIFVK9eXXyfl5eH9u3bw8LCAjt27BArg0vp168fTp8+jdTUVPFVtWpVREZGilcoNG/eHHfv3kVKSoq43b59+6DT6dCsWbPneNRERERERGQqXqrq3/b29oiNjUXVqlVx5swZDBo0CPb29hg3bpzYJjMzEz/88AMSEhKQmZmJd999F5cuXYKfnx+SkpKQnJyMAQMGIDg4WJzoKJVKLFq0CDVq1MClS5cwdOhQjBs3DsuWLSv12HQ6Hf7++284OTmVeptVq1bBz88P//nPf8Rlhw4dQkREhF67kJAQo/eW37lzB99++63RiVtqairOnTuHTZs2Qaks+V2Ko6Oj3vtJkyZh7ty58PX1xaRJk9CnTx9cvHgRZmZmePjwIQIDAzF+/Hg4ODhg9+7d6NevH2rWrInXX38dCxcuxIULF1CvXj189tlnAAAXF5cS+ywoKEBBQYH4Pi8vT3L8T9JoNOjevTsCAgKg1Wqxf/9+JCUlYfLkyQCAyMhI9O7dG61atUJQUBASEhKwc+dOJCYmivtp37497t+/jw0bNiAvL0/ct4uLi3ifjL+/P2bNmoUePXrA2dkZzs7OeuMwNzeHu7s7atWqBeDR2fAOHTpg0KBBWLFiBYqKijB8+HC8//77rPxNRERERPSqEipQWFiY0K1bN8n1AIT4+HjJ9XPmzBECAwPF91OnThVsbGyEvLw8cVlISIjg5eUlaLVacVmtWrWEWbNmSfa7detWwdnZuXQH8f9FRUUJlSpVEm7evFmq9g8ePBAqVaokREVF6S03NzcXNm3apLds6dKlgqurq/i+devWgrm5uWBrayvY2NgIAAQ/Pz/h8uXLkvv75ptvBADCiRMnjI7r8uXLAgBh1apV4rJz584JAIS0tDTJ7Tp37iyMGTNGb4yjRo0yuq+pU6cKAEq8piZdFGaduGXwJQiCEB0dLTRu3Fiwt7cXlEqlUK1aNSEyMlIoLi4W+169erXg4+MjWFlZCQ0bNhS2b98urtu/f7/B/QLQ+wwBCDExMZLjr169ujB//ny9ZX/++afQp08fwc7OTnBwcBD69+8v/P3330Y/ByodrVYrXLx4Ue//MtGTmBGSw4yQMcwHyWFG/lm5ubkCACE3N7eihyLrpTpT/c0332DRokXIzMxEfn4+iouL4eDgoNfGy8sL9vb24ns3NzeoVCq9s7Nubm56977+/PPPmDVrFs6fP4+8vDwUFxfj4cOHuH//PmxsbGBnZye2/fDDD0sUvNq0aROmT5+O7777rkT1Zynx8fH4+++/ERYWVqbP4LG+ffti0qRJAICbN29i5syZaN++PVJSUvSO/zFB5j7lpzVo0ED8uUqVKgAeVdb29/eHVqvFzJkz8e233+KPP/5AYWEhCgoKYGNjU6Z9TJw4Ue+sfF5eHjw8PACZ6t8ajQYajQbAo0vNY2NjS7QZMGAABgwYYHD7Nm3alOrzkGtj6JJ2JycnbNq0SbZvKjulUqn3vHGipzEjJIcZIWOYD5LDjJCUl+ae6kOHDqFv377o1KkTdu3ahZMnT2LSpEkoLCzUa/d0sSmFQmFw2eMCA1lZWXj77bfRoEEDbNu2DSkpKVi6dCkAiH0/eR/t48uZH9uyZQs++ugjfPvttwgODi718axatQpvv/023Nzc9JY/vtf6STdv3ixR6EqtVsPHxwc+Pj5o0aIFVq9ejYyMDHzzzTcG9+fn5wcAOH/+fKnG9+Rn9rja9ePPbM6cOVi4cCHGjx+P/fv3IzU1FSEhISX+LeRYWlrCwcFB7wVAtvo3/TvpdDpkZmayOAhJYkZIDjNCxjAfJIcZISkvzaQ6OTkZ1atXx6RJk9CkSRP4+vqW6hFSclJSUqDT6TBv3jy88cYb8PPzw/Xr1/XaPJ68+vj46J2J3rx5M/r374/Nmzejc+fOpd7n5cuXsX//fr0CZY81b94ce/fu1Vu2Z88eNG/e3Gifj+8DfvDggcH1AQEBqFOnDubNm2fwF8Hdu3dLOXrg4MGD6NatGz788EM0bNgQ3t7euHDhgl4bCwsLaLXaUvf5JLnq308ydJaaXk06nQ63bt3iHzKSxIyQHGaEjGE+SA4zQlIq/PLv3NxcpKam6i1zdnZ+dBnwE3x9fXH16lVs2bIFTZs2xe7duxEfH//M+/fx8UFRUREWL16MLl264ODBgwafZ/y0TZs2ISwsDAsXLkSzZs2QnZ0NALC2toZarTa67Zo1a1ClShV07NixxLpRo0ahdevWmDdvHjp37owtW7bg+PHjWLlypV67+/fvi/u8efMmPv/8c1hZWaF9+/YG96lQKBATE4Pg4GD85z//waRJk+Dv74/8/Hzs3LkTP/30E5KSkmSPG3j0b/G///0PycnJqFSpEqKjo3Hz5k29x1h5eXnhyJEjyMrKgp2dHZycnAwWSCMiIiIiInqZVfgsJzExEY0aNdJ7TZ8+vUS7rl27QqPRYPjw4QgICEBycjKmTJnyzPtv2LAhoqOjERUVhXr16mHjxo2YNWuW7HYrV65EcXExhg0bhipVqoivUaNGGd1Op9MhNjYW4eHh4tnlJ7355pvYtGkTVq5ciYYNG+J///sftm/fjnr16um1+/rrr8V9BgUF4fbt2/j+++/FStSGvP766zh+/Dh8fHwwaNAg1K5dG127dsW5c+ewYMEC2WN+bPLkyWjcuDFCQkLQpk0buLu7o3v37nptxo4dC5VKhTp16sDFxaXEM6KJiIiIiIheBQqhrBWsiF6QvLw8qNVqTE26CCt7w2f7JzSq/A+PikyFTqfD9evXUbVqVV71QAYxIySHGSFjmA+Sw4z8sx7PDXJzc0sUpzY1FX75N1EJMtW/6d9JqVSiWrVqFT0MMmHMCMlhRsgY5oPkMCMkhbMXMjkKVv8mA7RaLdLS0spdAI9efcwIyWFGyBjmg+QwIySFk2oyPbwjgQwQBAG5ubllfuY6/XswIySHGSFjmA+Sw4yQFE6qiYiIiIiIiMqJk2oiIiIiIiKicuKkmkyOwEJlZIBSqYS3tzerbZIkZoTkMCNkDPNBcpgRksJHapHJeJnK5hMRERER0YvzMs0N+DULmRxWVCRDtFotTp06xXyQJGaE5DAjZAzzQXKYEZLCSTWZHF48QYYIgoAHDx4wHySJGSE5zAgZw3yQHGaEpHBSTURERERERFROnFQTERERERERlRMn1WRyVCpVRQ+BTJBKpYK/vz/zQZKYEZLDjJAxzAfJYUZIillFD4DoafNP34GVXZHBdRMaVf6HR0OmQqFQwNHRsaKHQSaMGSE5zAgZw3yQHGaEpPBMNZkchY4VFamk4uJiHDt2DMXFxRU9FDJRzAjJYUbIGOaD5DAjJIWTanqphYeHV/QQ6B/ER1iQHGaE5DAjZAzzQXKYETKEk2p6JaWlpaFr165Qq9WwtbVF06ZNcfXqVXH9w4cPMWzYMDg7O8POzg49e/bEzZs3jfYpCAI+/fRTVKlSBdbW1ggODkZGRoZemzt37qBv375wcHCAo6MjBg4ciPz8/BdyjEREREREVPE4qaaXzu3btxEWFgZPT09s3rwZPj4+6NWrFwoLCwEAmZmZaNmyJfz9/ZGYmIjTp09jypQpsLKyEvvQaDTYuXMntm7diqSkJFy/fh3vvPOO0f3Onj0bixYtwooVK3DkyBHY2toiJCQEDx8+FNv07dsX586dw549e7Br1y788ssv+Pjjj1/MB0FERERERBVOIfDp5WQi8vLyoFarMTUpE1b2DgbbTGhUGf369cPRo0excuVKLFiwACNHjkRCQgKmT58OKysrvP/++zA3N8f69esN9pGbmwsXFxds2rQJ7777LgDg/PnzqF27Ng4dOoQ33nijxDaCIKBq1aoYM2YMxo4dK/bj5uaG2NhYvP/++0hLS0OdOnVw7NgxNGnSBACQkJCATp064dq1a6haterz+Jj+tQRBwIMHD2BtbQ2FQlHRwyETxIyQHGaEjGE+SA4z8s96PDfIzc2Fg4PhuYGp4JlqeumcPHkSoaGhaN26NdRqNYKCghAVFQUrKyvodDrs3r0bfn5+CAkJgaurK5o1a4bt27eL26ekpKCoqAjBwcHiMn9/f3h6euLQoUMG93n58mVkZ2frbaNWq9GsWTNxm0OHDsHR0VGcUANAcHAwlEoljhw58pw/hX8nCwuLih4CmThmhOQwI2QM80FymBEyhJNqMjkKQWd0fYsWLRATE4Ndu3aVWJeTk4P8/Hx8+eWX6NChA3766Sf06NED77zzDpKSkgAA2dnZsLCwKPFIBDc3N2RnZxvc5+Plbm5ukttkZ2fD1dVVb72ZmRmcnJwk+6XS02q1OH78OAuEkCRmhOQwI2QM80FymBGSwkk1vXSio6PRu3dvaDQarFu3DgEBAVixYgUAQKd7NCHv1q0bNBoNAgICMGHCBLz99ttiGyIiIiIioueFk2oTl52djVGjRsHHxwdWVlZwc3NDixYtsHz5cty/fx8A4OXlBYVCAYVCAVtbWzRu3Bhbt24tsc7Qy9AjqX799Ve0aNECzs7OsLa2hr+/P+bPn290nFlZWQb7P3z48HP/TGxtbTFjxgxkZGSga9euGDJkCCIiIrBy5UpUrlwZZmZmqFOnjt42tWvXFqt/u7u7o7CwEHfv3tVrc/PmTbi7uxvc5+PlT1cIf3Ibd3d35OTk6K0vLi7GnTt3JPslIiIiIqKXm1lFD4CkXbp0CS1atICjoyNmzpyJ+vXrw9LSEmfOnMHKlSvx2muvoWvXrgCAzz77DIMGDUJeXh7mzZuH3r1747XXXsOxY8fES1SSk5PRs2dPpKenizf7W1tbl9ivra0thg8fjgYNGsDW1ha//vorBg8eDFtbW9lK1j///DPq1q0rvnd2dn5eH4dBjo6OGDx4MH766SccOHAAH3/8MZo2bYr09HS9dhcuXED16tUBAIGBgTA3N8fevXvRs2dPAEB6ejquXr2K5s2bG9xPjRo14O7ujr179yIgIADAo+IJR44cwZAhQwAAzZs3x927d5GSkoLAwEAAwL59+6DT6dCsWbMXcfhERERERFTBOKk2YUOHDoWZmRmOHz8OW1tbcbm3tze6deuGJwu329vbw93dHe7u7li6dCk2bNiAnTt3YtasWWIbJycnAICrq2uJ+4mf1KhRIzRq1Eh87+Xlhbi4OHHSaoyzs3Opz8oWFBSgoKBAfJ+XlwcAEBTGL6DQaDTo3r07AgICoNVqsX//fiQlJWHy5MkAgMjISPTu3RutWrVCUFAQEhISsHPnTiQmJgJ4VGBs4MCBiIiIgJOTExwcHDBixAg0b95cr/K3v78/Zs2ahR49ekChUGD06NH44osv4Ovrixo1amDKlCmoWrUqunfvDuDR2fAOHTpg0KBBWLFiBYqKijB8+HC8//77rPz9HKhUKjRp0gQqlaqih0ImihkhOcwIGcN8kBxmhKTw8m8T9eeff+Knn37CsGHD9CbUT5Iq5W9mZgZzc3Pxuc3P6uTJk0hOTkbr1q1l23bt2hWurq5o2bIlduzYYbTtrFmzoFarxZeHh0epxuPp6YmIiAh4eHhg06ZNCA0NxYABAzBixAgAQI8ePbBixQrMnj0b9evXx6pVq7Bt2za0bNlS7GP+/Pl4++230bNnT7Rq1Qru7u6Ii4vT2096ejpyc3PF9+PGjcOIESPEs+H5+flISEjQe/71xo0b4e/vj7Zt26JTp05o2bIlVq5cWarjInnPK9P06mJGSA4zQsYwHySHGSFD+JxqE3XkyBG88cYbiIuLQ48ePcTllStXxsOHDwEAw4YNQ1RUFLy8vDB69GiMHj0ahYWFmDdvHv773/9i165d6Ny5s7htYmIigoKC8Ndffxk9U/1YtWrVcOvWLRQXF2PatGmYMmWKZNvbt29j3bp1aNGiBZRKJbZt24bZs2dj+/bt4iXqTzN0ptrDwwPTEjNg6WB4fBMaVdZ7Hx4ejtjYWNljoZdfcXExjh8/jiZNmsDMjBfZUEnMCMlhRsgY5oPkMCP/rJfpOdVMw0vm6NGj0Ol06Nu3r96EdPz48Zg8eTIePnwIOzs7fPnll3oTail2dnbizx9++KFehewDBw4gPz8fhw8fxoQJE+Dj44M+ffoY7Kdy5cqIiIgQ3zdt2hTXr1/HnDlzJCfVlpaWsLS0lB0jERERERGRqeKk2kT5+PhAoVCUKLjl7e0NoGSBscjISISHh8POzg5ubm6Sl4Y/LTU1Vfz56W+AatSoAQCoX78+bt68iWnTpklOqg1p1qwZ9uzZU+r25cGz1EREREREVJE4qTZRzs7OaNeuHZYsWYIRI0ZI3lf9WOXKleHj41Pm/ZR2G51Op3dmvDRSU1NRpUqVMo+JSAoLg5AcZoTkMCNkDPNBcpgRMoSTahO2bNkytGjRAk2aNMG0adPQoEEDKJVKHDt2DOfPnxcf2/S8LV26FJ6envD39wcA/PLLL5g7dy5GjhwptlmyZAni4+Oxd+9eAMDatWthYWEhVg2Pi4vDmjVrsGrVqjLvX1DylxWVZGZmhqZNm1b0MMiEMSMkhxkhY5gPksOMkBROqk1YzZo1cfLkScycORMTJ07EtWvXYGlpiTp16mDs2LEYOnToC9mvTqfDxIkTcfnyZZiZmaFmzZqIiorC4MGDxTa3b99GZmam3naff/45rly5AjMzM/j7++Obb77Bu+++W/YBsHYeGSAIAnJzc6FWq0t9ewP9uzAjJIcZIWOYD5LDjJAUVv8mk/G4wl9Zqn/TvwcrbpIcZoTkMCNkDPNBcpiRf9bLVP2bz6kmIiIiIiIiKidOqomIiIiIiIjKiZNqMj28R4UMUCgUsLa25j1MJIkZITnMCBnDfJAcZoSk8J5qMhmP75uY+sslWNnZG2zDe6qJiIiIiF59vKea6Fnwex4yQKfTIScnBzqdrqKHQiaKGSE5zAgZw3yQHGaEpLBsHZmckfUc4eTkVNHDIBOj0+lw6dIlODk5Qank94FUEjNCcpgRMob5IDnMCElhGoiIiIiIiIjKiZNqIiIiIiIionLipJpMDisqkiEKhQJqtZr5IEnMCMlhRsgY5oPkMCMkhdW/yWS8TBX+iIiIiIjoxXmZ5gY8U00mhxUVyRCdTodr164xHySJGSE5zAgZw3yQHGaEpLD6N5mchaduw9KhWG8Zn09Nj/+Qubu7s+ImGcSMkBxmhIxhPkgOM0JSmAYiIiIiIiKicuKkmoiIiIiIiKicOKkmkyOUoqJieHj4ix8ImRSlUgkXFxdebkWSmBGSw4yQMcwHyWFGSAoTQaZH8eyx/OSTT6BQKLBgwYIS63bv3o1mzZrB2toalSpVQvfu3Y32lZ+fj+HDh6NatWqwtrZGnTp1sGLFCr02Dx8+xLBhw+Ds7Aw7Ozv07NkTN2/efObjoP+jVCpRs2ZN/iEjScwIyWFGyBjmg+QwIySFiSDTIxiuqHj79m2EhYXB09MTmzdvho+PD3r16oXCwkK9dvHx8Th8+DCqVq1aoo9t27ahX79+6N+/P06dOoWDBw/igw8+MDqciIgIJCQkYMOGDUhLS8Po0aMxfPhw7NixQ2yj0Wiwc+dObN26FUlJSbh+/Treeeedchw8SdHpdMjMzGTFTZLEjJAcZoSMYT5IDjNCUjipJpOjkHh0ukajweHDh7F+/Xp06tQJX3/9Nby9vfV+sf3xxx8YMWIENm7cCHNzc73ti4uLMWrUKMyZMweffPIJ/Pz8UKdOHbz33ntGx5OcnIywsDC0adMGXl5e+Pjjj9GwYUMcPXoUAJCbm4vVq1cjOjoab731FgIDAxETE4Pk5GQcPnz4GT8Nekyn0+HWrVv8Q0aSmBGSw4yQMcwHyWFGSAon1fTSOHnyJEJDQ9G6dWuo1WoEBQUhKioKVlZWAB79ouvXrx8iIyNRt27dEtufOHECf/zxB5RKJRo1aoQqVaqgY8eOOHv2rNH9vvnmm9ixYwf++OMPCIKA/fv348KFC2jfvj0AICUlBUVFRQgODha38ff3h6enJw4dOvQcPwEiIiIiIjI1nFRXsGnTpiEgIOCF7kOhUGD79u0vdB//hBYtWiAmJga7du0yuD4qKgpmZmYYOXKkwfWXLl0C8Ogznzx5Mnbt2oVKlSqhTZs2uHPnjuR+Fy9ejDp16qBatWqwsLBAhw4dsHTpUrRq1QoAkJ2dDQsLCzg6Oupt5+bmhuzs7HIcKRERERERvSw4qS6l7OxsjBgxAt7e3rC0tISHhwe6dOmCvXv3VvTQEB4eLlts62UiVf07OjoavXv3hkajwbp16xAQECAWDEtJScHChQsRGxsLhcT2jy/VmTRpEnr27Clepq1QKLB161bJ8SxevBiHDx/Gjh07kJKSgnnz5mHYsGH4+eefn/FIqSyUSiWqVavG4iAkiRkhOcwIGcN8kBxmhKSYVfQAXgZZWVlo0aIFHB0dMWfOHNSvXx9FRUX48ccfMWzYMJw/f76ih/hqkaj+bWtrixkzZmDGjBno3r07OnbsCI1GA6VSifv37yMnJweenp5ie61WizFjxmDBggXIyspClSpVAAB16tQR21haWsLb2xtXr141uM8HDx7gv//9L+Lj49G5c2cAQIMGDZCamoq5c+ciODgY7u7uKCwsxN27d/XOVt+8eRPu7u7P+mnQ//f4DxmRFGaE5DAjZAzzQXKYEZLCr1lKYejQoVAoFDh69Ch69uwJPz8/1K1bFxEREXqFqK5evYpu3brBzs4ODg4OeO+990o8VunLL7+Em5sb7O3tMXDgQDx8+LDE/latWoXatWvDysoK/v7+WLZs2XM9nvHjx8PPzw82Njbw9vbGlClTUFRUJK5/fEn6mjVr4OnpCTs7OwwdOhRarRazZ8+Gu7s7XF1dMWPGDL1+o6OjUb9+fdja2sLDwwNDhw5Ffn5+mcenkKj+/SRHR0cMHjwYHTt2xIEDB9CvXz+cPn0aqamp4qtq1aqIjIzEjz/+CAAIDAyEpaUl0tPTxX6KioqQlZWF6tWrG9xPUVERioqKSnwjqVKpxDPfgYGBMDc317tqIT09HVevXkXz5s3LfPxkmFarRVpaGrRabUUPhUwUM0JymBEyhvkgOcwISeGZahl37txBQkICZsyYAVtb2xLrH5+Z1Ol04oQ6KSkJxcXFGDZsGHr37o3ExEQAwLfffotp06Zh6dKlaNmyJdavX49FixbB29tb7G/jxo349NNPsWTJEjRq1AgnT57EoEGDYGtri7CwsOdyTPb29oiNjUXVqlVx5swZDBo0CPb29hg3bpzYJjMzEz/88AMSEhKQmZmJd999F5cuXYKfnx+SkpKQnJyMAQMGIDg4GM2aNQPw6Nu7RYsWoUaNGrh06RKGDh2KcePGSX4pUFBQgIKCAvF9Xl7eox+MVP/u3r07AgICoNVqsX//fiQlJWHy5MlwdnaGs7OzXntzc3O4u7ujVq1aAAAHBwd88sknmDp1Kjw8PFC9enXMmTMHANCrVy9xO39/f8yaNQs9evSAg4MDWrdujcjISFhbW6N69epISkrCunXrEB0dDQBQq9UYOHAgIiIi4OTkBAcHB4wYMQLNmzfHG2+8UZZ/GjJCEATk5uZCkMgHETNCcpgRMob5IDnMCEnhpFrGxYsXIQgC/P39jbbbu3cvzpw5g8uXL8PDwwMAsG7dOtStWxfHjh1D06ZNsWDBAgwcOBADBw4EAHzxxRf4+eef9c5WT506FfPmzROfcVyjRg389ttv+Oqrr57bpHry5Mniz15eXhg7diy2bNmiN6nW6XRYs2YN7O3tUadOHQQFBSE9PR3ff/89lEolatWqhaioKOzfv1+cVI8ePVqv3y+++AKffPKJ5KR61qxZmD59eqnH7enpiYiICGRkZODevXtITEzEgAEDMGLEiFL3MWfOHJiZmaFfv3548OABmjVrhn379qFSpUpim/T0dOTm5orvt2zZgokTJ6Jv3764c+cOqlevjhkzZuCTTz4R28yfPx9KpRI9e/ZEQUEBQkJCnvsVBkREREREZHo4qZZR2m+i0tLS4OHhIU6ogUf37jo6OiItLQ1NmzZFWlqa3kQMAJo3b479+/cDAO7du4fMzEwMHDgQgwYNEtsUFxdDrVY/h6N55JtvvsGiRYuQmZmJ/Px8FBcXw8HBQa+Nl5cX7O3txfdubm5QqVR6l0G7ubkhJydHfP/zzz9j1qxZOH/+PPLy8lBcXIyHDx/i/v37sLGxKTGOiRMnIiIiQnyfl5en9/k9TaPRQKPRAHhUnC02NtbocWZlZZVYZm5ujrlz52Lu3LmS2z39b+7u7o6YmBij+7KyssLSpUuxdOlSo+2IiIiIiOjVwkm1DF9fXygUin+kGNnj+4+//vpr8ezvYyqV6rns49ChQ+jbty+mT5+OkJAQqNVqbNmyBfPmzdNrZ25urvdeoVAYXPb4vuKsrCy8/fbbGDJkCGbMmAEnJyf8+uuvGDhwIAoLCw1Oqi0tLWFpaVliuSBRqIz+3ZRKJby9vVlxkyQxIySHGSFjmA+Sw4yQFCZChpOTE0JCQrB06VLcu3evxPq7d+8CAGrXro3ff/8dv//+u7jut99+w927d8Vq07Vr18aRI0f0tn+y0JmbmxuqVq2KS5cuwcfHR+9Vo0aN53I8ycnJqF69OiZNmoQmTZrA19cXV65ceeZ+U1JSoNPpMG/ePLzxxhvw8/PD9evXy9eZxCOxniR3lppePUqlEq6urvxDRpKYEZLDjJAxzAfJYUZIChNRCkuXLoVWq8Xrr7+Obdu2ISMjA2lpaVi0aJFY3Tk4OBj169dH3759ceLECRw9ehShoaFo3bo1mjRpAgAYNWoU1qxZg5iYGFy4cAFTp07FuXPn9PY1ffp0zJo1C4sWLcKFCxdw5swZxMTEiEWxpOTm5upVvk5NTdWb4D/m6+uLq1evYsuWLcjMzMSiRYsQHx//zJ+Rj48PioqKsHjxYly6dAnr168XnyFdVqWp/k3/PlqtFqdOnWLFTZLEjJAcZoSMYT5IDjNCUjipLgVvb2+cOHECQUFBGDNmDOrVq4d27dph7969WL58OYBHl0J/9913qFSpElq1aoXg4GB4e3vjm2++Efvp3bs3pkyZgnHjxiEwMBBXrlzBkCFD9Pb10UcfYdWqVYiJiUH9+vXRunVrxMbGyp6pTkxMRKNGjfRehoqAde3aFRqNBsOHD0dAQACSk5MxZcqUZ/6MGjZsiOjoaERFRaFevXrYuHEjZs2aVb7OWFGRDBAEAQ8ePGDFTZLEjJAcZoSMYT5IDjNCUhQCU0EmIi8vD2q1GtMSM2Dp4Ki3bkKjyhUzKDIZxcXFOH78OJo0aQIzM5aDoJKYEZLDjJAxzAfJYUb+WY/nBrm5uSWKKpsanqkmIiIiIiIiKidOqsnksPo3GaJSqeDv7//cKuHTq4cZITnMCBnDfJAcZoSk8LoFMj2lqP5N/z4KhQKOjo4VPQwyYcwIyWFGyBjmg+QwIySFpwTJ5Ch0rKhIJRUXF+PYsWMoLi6u6KGQiWJGSA4zQsYwHySHGSEpnFQT0UuDj7AgOcwIyWFGyBjmg+QwI2QIL/8mkzOivhOcnJwqehhERERERESyeKaaiIiIiIiIqJz4nGoyGY+fRXf37l2o1eqKHg6ZGEEQ8ODBA1hbW0PBYnZkADNCcpgRMob5IDnMyD+Lz6kmInoBLCwsKnoIZOKYEZLDjJAxzAfJYUbIEE6qyeSwAAQZotVqcfz4ceaDJDEjJIcZIWOYD5LDjJAUTqqJiIiIiIiIyomTaiIiIiIiIqJy4iO1yOQsPnMHlg46vWUTGlWuoNEQERERERFJY/VvMhmPK/xNTcqElb1+hT9OqkkQBGi1WqhUKlbcJIOYEZLDjJAxzAfJYUb+Waz+TfSChYeHV/QQqAIUFhZW9BDIxDEjJIcZIWOYD5LDjJAhnFSTyVEIOvlGMj755BMoFAosWLBAb7mXlxcUCoXe68svvzTa18OHDzFs2DA4OzvDzs4OPXv2xM2bN/XaXL16FZ07d4aNjQ1cXV0RGRmJ4uLiZz4O+j9arRanT59mxU2SxIyQHGaEjGE+SA4zQlI4qaaXxu3btxEWFgZPT09s3rwZPj4+6NWrV4lvDOPj43H48GFUrVrVYD+fffYZbty4Ib5GjBhhdL8ajQY7d+7E1q1bkZSUhOvXr+Odd94R12u1WnTu3BmFhYVITk7G2rVrERsbi08//fTZD5qIiIiIiEwaJ9X00tBoNDh8+DDWr1+PTp064euvv4a3tzd0uv87s/3HH39gxIgR2LhxI8zNzQ32Y29vD3d3d/Fla2sruc/c3FysXr0a0dHReOuttxAYGIiYmBgkJyfj8OHDAICffvoJv/32GzZs2ICAgAB07NgRn3/+OZYuXcpLhIiIiIiIXnGcVNNL4+TJkwgNDUXr1q2hVqsRFBSEqKgoWFlZAQB0Oh369euHyMhI1K1bV7KfL7/8Es7OzmjUqBHmzJlj9DLtlJQUFBUVITg4WFzm7+8PT09PHDp0CABw6NAh1K9fH25ubmKbkJAQ5OXl4dy5c8962PQElUpV0UMgE8eMkBxmhIxhPkgOM0KG/Osm1QqFAtu3b3/h+2nTpg1Gjx79wvfzInl5eendk/xPfXaC0vAvqxYtWiAmJga7du0yuD4qKgpmZmYYOXKkZN8jR47Eli1bsH//fgwePBgzZ87EuHHjJNtnZ2fDwsICjo6Oesvd3NyQnZ0ttnlyQv14/eN19HyYmZmhadOmMDPjkwDJMGaE5DAjZAzzQXKYEZLySk2qs7OzMWLECHh7e8PS0hIeHh7o0qUL9u7dW9FDK5fBgwejZs2asLa2houLC7p164bz588b3UZqMh8bG1tiYijn2LFj+Pjjj8u0zXMh8ZS36Oho9O7dGxqNBuvWrUNAQABWrFgB4NEZ5YULFyI2NtboIw4iIiLQpk0bNGjQAJ988gnmzZuHxYsXo6Cg4IUcCj0/giDg7t274FMASQozQnKYETKG+SA5zAhJeWUm1VlZWQgMDMS+ffswZ84cnDlzBgkJCQgKCsKwYcMqenjl8vj+3bS0NPz4448QBAHt27f/xyoOuri4wMbG5h/Z15Okqn/b2tpixowZyMjIQNeuXTFkyBBERERg5cqVOHDgAHJycuDp6QkzMzOYmZnhypUrGDNmDLy8vCT31axZMxQXFyMrK8vgend3dxQWFuLu3bt6y2/evAl3d3exzdPVwB+/f9yGnp1Wq8X58+dZcZMkMSMkhxkhY5gPksOMkJRXZlI9dOhQKBQKHD16FD179oSfnx/q1q2LiIgIsaCUIePHj4efnx9sbGzg7e2NKVOmoKioSFwfHh6O7t27620zevRotGnTRnx/7949hIaGws7ODlWqVMG8efNK7KegoABjx47Fa6+9BltbWzRr1gyJiYlGj+njjz9Gq1at4OXlhcaNG+OLL77A77//LjkBLIvMzEx069YNbm5usLOzQ9OmTfHzzz/rtXn68u+nTZ06FVWqVMHp06cNngnfvn270bPGz8LR0RGDBw9Gx44dceDAAfTr1w+nT59Gamqq+KpatSoiIyPx448/SvaTmpoKpVIJV1dXg+sDAwNhbm6ud7VDeno6rl69iubNmwMAmjdvjjNnziAnJ0dss2fPHjg4OKBOnTrP6YiJiIiIiMgUvRKT6jt37iAhIQHDhg0zWMnZ2GXP9vb2iI2NxW+//YaFCxfi66+/xvz588u0/8jISCQlJeG7777DTz/9hMTERJw4cUKvzfDhw3Ho0CFs2bIFp0+fRq9evdChQwdkZGSUah/37t1DTEwMatSoAQ8PjzKNz5D8/Hx06tQJe/fuxcmTJ9GhQwd06dIFV69eld1WEASMGDEC69atw4EDB9CgQYNyjaGgoAB5eXl6L2M0Gg2SkpKQm5sLrVaL/fv3IykpCYGBgXB2dka9evX0Xubm5nB3d0etWrUAPCootmDBApw6dQqXLl3Cxo0bodFo8OGHH6JSpUoAHlUP9/f3x9GjRwEAarUaAwcOREREBPbv34+UlBT0798fzZs3xxtvvAEAaN++PerUqYN+/frh1KlT+PHHHzF58mQMGzYMlpaW5fpsiIiIiIjo5fBK3GV/8eJFCIIAf3//Mm87efJk8WcvLy+MHTsWW7ZsMVq86kn5+flYvXo1NmzYgLZt2wIA1q5di2rVqoltrl69ipiYGFy9elV8dvLYsWORkJCAmJgYzJw5U7L/ZcuWYdy4cbh37x5q1aqFPXv2wMLCwuiYli1bhlWrVuktKy4uFqtkA0DDhg3RsGFD8f3nn3+O+Ph47NixA8OHD5fsu7i4GB9++CFOnjyJX3/9Fa+99prRsRgza9YsTJ8+veQKibPbnp6eiIiIQEZGBu7du4fExEQMGDBA9jnTj1laWmLLli2YNm0aCgoKUKNGDWg0GkRERIhtioqKkJ6ejvv374vL5s+fD6VSiZ49e6KgoAAhISFYtmyZuF6lUmHXrl0YMmQImjdvDltbW4SFheGzzz4r5SdBpaFQKGBtbf3Crn6glx8zQnKYETKG+SA5zAhJeSUm1c9SLOCbb77BokWLkJmZifz8fBQXF8PBwaHU22dmZqKwsBDNmjUTlzk5OYlnRwHgzJkz0Gq18PPz09u2oKAAzs7ORvvv27cv2rVrhxs3bmDu3Ll47733cPDgQb0JsqFtJk2apLcsLi5Ob/Ken5+PadOmYffu3bhx4waKi4vx4MED2TPVGo0GlpaWOHz4MCpXrmy0rZyJEyfqTWjz8vLg4eEBQWH4AgqNRgONRgPg0WX5sbGxRvt/+jL5xo0bG70VAHj0xcrTebKyssLSpUuxdOlSye2qV6+O77//3mjf9GxUKpXeF0FET2NGSA4zQsYwHySHGSEpr8Sk2tfXFwqFQrYy9tMOHTqEvn37Yvr06QgJCYFarcaWLVv07olWKpUlJllP3nNdGvn5+VCpVEhJSSnxbDs7Ozuj26rVaqjVavj6+uKNN95ApUqVEB8fjz59+hjdxsfHR2/Z0/cMjx07Fnv27MHcuXPh4+MDa2trvPvuuygsLDQ6nnbt2mHz5s348ccf0bdvX3F5eT4nS0tLw5dHs6IiGaDT6XD79m1UrlwZSuUrcecKPWfMCMlhRsgY5oPkMCMk5ZVIg5OTE0JCQrB06VLcu3evxPqnKzc/lpycjOrVq2PSpElo0qQJfH19ceXKFb02Li4uuHHjht6y1NRU8eeaNWvC3NwcR44cEZf99ddfuHDhgvi+UaNG0Gq1yMnJgY+Pj96rLNWhBUGAIAjP5fFPBw8eRHh4OHr06IH69evD3d29VAXQunbtik2bNuGjjz7Cli1bxOUuLi74+++/9T7/Jz+nspCq/v0kubPU9OrR6XS4dOkSdDr5fNC/EzNCcpgRMob5IDnMCEl5JSbVALB06VJotVq8/vrr2LZtGzIyMpCWloZFixaJVZqf5uvri6tXr2LLli3IzMzEokWLEB8fr9fmrbfewvHjx7Fu3TpkZGRg6tSpOHv2rLjezs4OAwcORGRkJPbt24ezZ88iPDxc79srPz8/9O3bF6GhoYiLi8Ply5dx9OhRzJo1C7t37zY4tkuXLmHWrFlISUnB1atXkZycjF69esHa2hqdOnV65s/L19cXcXFxSE1NxalTp/DBBx+U+hdEjx49sH79evTv3x//+9//ADx6NJWNjQ3++9//IjMzE5s2beLEl4iIiIiIXnmvzKTa29sbJ06cQFBQEMaMGYN69eqhXbt22Lt3L5YvX25wm65du0Kj0WD48OEICAhAcnIypkyZotcmJCQEU6ZMwbhx49C0aVP8/fffCA0N1WszZ84c/Oc//0GXLl0QHByMli1bIjAwUK9NTEwMQkNDMWbMGNSqVQvdu3fHsWPH4OnpaXBsVlZWOHDgADp16gQfHx/07t0b9vb2SE5Olnz8U1lER0ejUqVKePPNN9GlSxeEhISgcePGpd7+3Xffxdq1a9GvXz/ExcXByckJGzZswPfff4/69etj8+bNmDZt2jOPk4iIiIiIyJQphGep8kX0HOXl5UGtVmNa0kVY2qv11k1o9GxF0ejlp9VqceHCBfj5+ZWoTUAEMCMkjxkhY5gPksOM/LMezw1yc3PLVEi6IrwShcro1SJV/Zv+3VQqFWrXrl3RwyATxoyQHGaEjGE+SA4zQlI4eyHTU4pCZfTvo9PpcO3aNRYHIUnMCMlhRsgY5oPkMCMkhZNqMjkK3pFABvAPGclhRkgOM0LGMB8khxkhKZxUExEREREREZUTJ9VERERERERE5cRJNZkcQaGo6CGQCVIqlXBxcdF7BjzRk5gRksOMkDHMB8lhRkgKH6lFJuNlKptPREREREQvzss0N+DXLGRyWPyBDNHpdMjMzGQ+SBIzQnKYETKG+SA5zAhJ4aSaTA5/UZEhOp0Ot27dYj5IEjNCcpgRMob5IDnMCEnhpJqIiIiIiIionDipJiIiIiIiIionTqrJ5LCiIhmiVCpRrVo15oMkMSMkhxkhY5gPksOMkBRW/yaT8bjC39RfLsHKzh4AMKFR5QoeFRERERER/dNY/ZvoGSgEFn+gkrRaLdLS0qDVait6KGSimBGSw4yQMcwHyWFGSAon1WR6jFw8ER4e/s+Ng0yKIAjIzc0FL64hKcwIyWFGyBjmg+QwIySFk2p6qRUVFWH8+PGoX78+bG1tUbVqVYSGhuL69et67U6cOIF27drB0dERzs7O+Pjjj5Gfn1/q/XzyySdQKBRYsGCB3vI7d+6gb9++cHBwgKOjIwYOHFimfomIiIiI6OXGSTWZvNu3byMsLAyenp7YvHkzfHx80KtXLxQWFuL+/fs4ceIEpkyZghMnTiAuLg7p6eno2rWruP3169cRHBwMHx8fHDlyBAkJCTh37lypz3rHx8fj8OHDqFq1aol1ffv2xblz57Bnzx7s2rULv/zyCz7++OPndehERERERGTizCp6AERPExT63/VoNBocPXoU69evx4IFCzBy5EgkJCRAp9NBrVZjz549eu2XLFmC119/HVevXoWnpyd27doFc3NzLF26VKzWuGLFCjRo0AAXL16Ej4+P5Fj++OMPjBgxAj/++CM6d+6sty4tLQ0JCQk4duwYmjRpAgBYvHgxOnXqhLlz5xqchFP5KZVKeHt7s+ImSWJGSA4zQsYwHySHGSEpTASZHoVC7+3JkycRGhqK1q1bQ61WIygoCFFRUbCysjK4eW5uLhQKBRwdHQEABQUFsLCw0PsFaG1tDQD49ddfJYeh0+nQr18/REZGom7duiXWHzp0CI6OjuKEGgCCg4OhVCpx5MiRUh8ulY5SqYSrqyv/kJEkZoTkMCNkDPNBcpgRksJEkMl5uvp3ixYtEBMTg127dslu+/DhQ4wfPx59+vQRS++/9dZbyM7Oxpw5c1BYWIi//voLEyZMAADcuHFDsq+oqCiYmZlh5MiRBtdnZ2fD1dVVb5mZmRmcnJyQnZ0tO1YqG61Wi1OnTrHiJkliRkgOM0LGMB8khxkhKZxUk+l5qqJidHQ0evfuDY1Gg3Xr1iEgIAArVqwosVlRURHee+89CIKA5cuXi8vr1q2LtWvXYt68ebCxsYG7uztq1KgBNzc3yW8aU1JSsHDhQsTGxkLx1JlzqhiCIODBgwesuEmSmBGSw4yQMcwHyWFGSAon1S+J8PBwKBQKKBQKWFhYwMfHB5999hmKi4tLtX1iYiIUCgXu3r1rcP20adOgUCjQoUOHEuvmzJkDhUKBNm3aSPZ/6tQp9OnTBx4eHrC2tkbt2rWxcOHCUo1Njq2tLWbMmIGMjAx07doVQ4YMQUREBFauXCm2eTyhvnLlCvbs2VPiAfEffPABsrOz8ccff+DPP//EtGnTcOvWLXh7exvc54EDB5CTkwNPT0+YmZnBzMwMV65cwZgxY+Dl5QUAcHd3R05Ojt52xcXFuHPnDtzd3Z/LsRMRERERkWljobKXSIcOHRATE4OCggJ8//33GDZsGMzNzTFx4sTn0n+VKlWwf/9+XLt2DdWqVROXr1mzBp6enka3TUlJgaurKzZs2AAPDw8kJyfj448/hkqlwvDhw5/L+ADA0dERgwcPxk8//YQDBw7g448/FifUGRkZ2L9/P5ydnSW3d3NzE4/JysoK7dq1M9iuX79+CA4O1lsWEhKCfv36oX///gCA5s2b4+7du0hJSUFgYCAAYN++fdDpdGjWrNnzOFwiIiIiIjJxPFP9ErG0tIS7uzuqV6+OIUOGIDg4GDt27ADw6BLpx89q9vDwwNChQ8v8vGRXV1e0b98ea9euFZclJyfj9u3bJSpfP23AgAFYuHAhWrduDW9vb3z44Yfo378/4uLiynychqp/JyUlITc3F1qtFvv370dSUhICAwNRVFSEd999F8ePH8fGjRuh1WqRnZ2N7OxsFBYWin0sWbIEJ06cwIULF7B06VIMHz4cs2bNEouZAYC/vz/i4+MBAM7OzqhXr57ey9zcHO7u7qhVqxYAoHbt2ujQoQMGDRqEo0eP4uDBgxg+fDjef/99Vv5+AVQqFfz9/aFSqSp6KGSimBGSw4yQMcwHyWFGSAon1S8xa2trceKoVCqxaNEinDt3DmvXrsW+ffswbty4Mvc5YMAAxMbGiu/XrFmDvn37wsLCosx95ebmwsnJSXJ9QUEB8vLy9F4ASlT/9vT0REREBDw8PLBp0yaEhoZiwIABGDFiBP744w/s2LED165dQ0BAAKpUqSK+kpOTxT6OHj2Kdu3aoX79+li5ciW++uqrEgXI0tPTkZubW6Zj3LhxI/z9/dG2bVt06tQJLVu21LssnZ6fxxXdeY87SWFGSA4zQsYwHySHGSEpvPz7JSQIAvbu3Ysff/wRI0aMAACMHj1aXO/l5YUvvvgCn3zyCZYtW1amvt9++2188skn+OWXXxAYGIhvv/0Wv/76K9asWVOmfpKTk/HNN99g9+7dkm1mzZqF6dOnl1iu0OlXVNRoNNBoNAAe3Vv+5KTfy8urVMUi1q1bJ9tGrp+srKwSy5ycnLBp0ybZvunZFRcX4+TJk2jUqBHMzPiri0piRkgOM0LGMB8khxkhKUzDS2TXrl2ws7NDUVERdDodPvjgA0ybNg0A8PPPP2PWrFk4f/488vLyUFxcjIcPH+L+/fuwsbEp9T7Mzc3x4YcfIiYmBpcuXYKfnx8aNGhQpnGePXsW3bp1w9SpU9G+fXvJdhMnTkRERIT4Pi8vDx4eHmXaF/278BEWJIcZITnMCBnDfJAcZoQM4aT6JRIUFITly5fDwsICVatWFb8hy8rKwttvv40hQ4ZgxowZcHJywq+//oqBAweisLCwTJNq4NEl4M2aNcPZs2cxYMCAMm3722+/oW3btvj4448xefJko20tLS1haWlZpv6fPEtNRERERERU0TipfonY2trCx8enxPKUlBTodDrMmzdPfO7yt99+W+791K1bF3Xr1sXp06fxwQcflHq7c+fO4a233kJYWBhmzJhR7v0TERERERG9LDipfgX4+PigqKgIixcvRpcuXXDw4EGsWLHCYNszZ87A3t5efK9QKNCwYcMS7fbt24eioiK96tjGnD17Fm+99RZCQkIQERGB7OxsAI+qJLq4uJTpeJ6u/k0EPMpSgwYNWHGTJDEjJIcZIWOYD5LDjJAUTqpfAQ0bNkR0dDSioqIwceJEtGrVCrNmzUJoaGiJtq1atdJ7r1KpUFxcXKKdra1tmcbwv//9D7du3cKGDRuwYcMGcXn16tUNFvgiKo/yVKGnfxdmhOQwI2QM80FymBEyRCGUpnQy0T8gLy8ParUa0xIzYOngCACY0KhyxQ6KTEZxcTGOHz+OJk2asOImGcSMkBxmhIxhPkgOM/LPejw3yM3NhYODQ0UPxyheZ0tERERERERUTpxUExEREREREZUTJ9VERERERERE5cR7qslkPL5vYmpSJqzsH903wXuq6TFBEKDVaqFSqaBQKCp6OGSCmBGSw4yQMcwHyWFG/lm8p5qI6AUoLCys6CGQiWNGSA4zQsYwHySHGSFDOKkmkzOyniMmNKrMs9SkR6vV4vTp09BqtRU9FDJRzAjJYUbIGOaD5DAjJIWTaiIiIiIiIqJy4qSaiIiIiIiIqJw4qSail4ZKparoIZCJY0ZIDjNCxjAfJIcZIUNY/ZtMxstU4Y+IiIiIiF6cl2luwDPVZHL4PQ8ZIggC7t69y3yQJGaE5DAjZAzzQXKYEZLCSTWZHFZUJEO0Wi3Onz/PfJAkZoTkMCNkDPNBcpgRksJJNZmcxWfu4MuTtyt6GERERERERLI4qSYiIiIiIiIqJ06qyfQoFAYXh4eH/7PjIJOiUChgbW0NhUQ+iJgRksOMkDHMB8lhRkgKJ9VkcgRF6WJZVFSE8ePHo379+rC1tUXVqlURGhqK69ev67WbMWMG3nzzTdjY2MDR0bHU40hLS0PXrl2hVqtha2uLpk2b4urVq+L6hw8fYtiwYXB2doadnR169uyJmzdvlrp/KhuVSoWGDRvyURYkiRkhOcwIGcN8kBxmhKRwUk2m54mKirdv30ZYWBg8PT2xefNm+Pj4oFevXigsLMT9+/dx4sQJTJkyBSdOnEBcXBzS09PRtWtXve4KCwvRq1cvDBkypNRDyMzMRMuWLeHv74/ExEScPn0aU6ZMgZWVldhGo9Fg586d2Lp1K5KSknD9+nW88847z378ZJBOp0NOTg50Ol1FD4VMFDNCcpgRMob5IDnMCEkxq+gBED1NIfzfLyqNRoOjR49i/fr1WLBgAUaOHImEhATodDqo1Wrs2bNHb9slS5bg9ddfx9WrV+Hp6QkAmD59OgAgNja21GOYNGkSOnXqhNmzZ4vLatasKf6cm5uL1atXY9OmTXjrrbcAADExMahduzYOHz6MN954o8zHTcbpdDpcunQJTk5OUCr5fSCVxIyQHGaEjGE+SA4zQlKYBjJpJ0+eRGhoKFq3bg21Wo2goCBERUXpnTF+Um5uLhQKRZku836aTqfD7t274efnh5CQELi6uqJZs2bYvn272CYlJQVFRUUIDg4Wl/n7+8PT0xOHDh0q976JiIiIiOjl8kIn1W3atMHo0aNf5C4keXl5YcGCBRWyb3p+WrRogZiYGOzatUu27cOHDzF+/Hj06dMHDg4O5d5nTk4O8vPz8eWXX6JDhw746aef0KNHD7zzzjtISkoCAGRnZ8PCwqLE5N3NzQ3Z2dnl3jcREREREb1cyjSpDg8Ph0KhwCeffFJi3bBhw6BQKPQqNMfFxeHzzz8vVd8VMQFfsGABatWqBWtra3h4eECj0eDhw4el3v7x5/H0q27dupJtnJ2d0aFDB5w+fVq27+7du5f30Er4J79kSExMhEKhwN27d8vXwRMVFaOjo9G7d29oNBqsW7cOAQEBWLFiRYlNioqK8N5770EQBCxfvrycI3/k8X0y3bp1g0ajQUBAACZMmIC3337b4L7pn6FQKKBWq1lxkyQxIySHGSFjmA+Sw4yQlDKfqfbw8MCWLVvw4MEDcdnDhw+xadMm8R7Wx5ycnGBvb//so/z/BEFAcXHxc+lr06ZNmDBhAqZOnYq0tDSsXr0a33zzDf773/+Wuo+FCxfixo0b4uv333+Hk5MTevXqpdeuQ4cOYpu9e/fCzMwMb7/99nM5judJq9WaROGFJ6t/29raYsaMGcjIyEDXrl0xZMgQREREYOXKlWKbxxPqK1euYM+ePc90lhoAKleuDDMzM9SpU0dvee3atcXq3+7u7igsLCzxxcHNmzfh7u7+TPsnw1QqFWrXrs2KmySJGSE5zAgZw3yQHGaEpJR5Ut24cWN4eHggLi5OXBYXFwdPT080atRIr+3TZ5+XLVsGX19fWFlZwc3NDe+++y6AR2dlk5KSsHDhQvGMblZWlnjG84cffkBgYCAsLS3x66+/IjMzE926dYObmxvs7OzQtGlT/Pzzz2U6juTkZLRo0QIffPABvLy80L59e/Tp0wdHjx4FANy6dQvu7u6YOXOm3jYWFhbYu3cvAECtVsPd3V18HT9+HH/99Rf69++vty9LS0uxzeOznr///jtu3bpV6vG2adMGI0eOxLhx4+Dk5AR3d3dMmzZNXC8IAqZNmwZPT09YWlqiatWqGDlypLjtlStXoNFoxM8XeFS4y9HRETt27ECdOnVgaWmJq1evGrxqoHv37npXIRQUFGD8+PHw8PCApaUlfHx8sHr1amRlZSEoKAgAUKlSpRJXL5SKYHhi7+joiMGDB6Njx444cOAAgP+bUGdkZODnn3+Gs7Nz2fZlgIWFBZo2bYr09HS95RcuXED16tUBAIGBgTA3NxezAADp6em4evUqmjdv/sxjoJJ0Oh2uXbtmEl/8kGliRkgOM0LGMB8khxkhKeW6p3rAgAGIiYkR369Zs6bERPJpx48fx8iRI/HZZ58hPT0dCQkJaNWqFYBHZ3ybN2+OQYMGiWd0PTw8xG0nTJiAL7/8EmlpaWjQoAHy8/PRqVMn7N27FydPnkSHDh3QpUsXvWcIy3nzzTeRkpIiTqIvXbqE77//Hp06dQIAuLi4YM2aNZg2bRqOHz+Ov//+G/369cPw4cPRtm1bg32uXr0awcHB4sTLkPz8fGzYsAE+Pj5lngCuXbsWtra2OHLkCGbPno3PPvtMrH69bds2zJ8/H1999RUyMjKwfft21K9fH8CjLz2qVauGzz77TPx8H7t//z6ioqKwatUqnDt3Dq6urqUaS2hoKDZv3oxFixYhLS0NX331Fezs7ODh4YFt27YBeDTJvHHjBhYuXGiwj4KCAuTl5em9AEDxxCO1NBoNkpKSkJubC61Wi/379yMpKQmBgYEoKirCu+++i+PHj2Pjxo3QarXIzs5GdnY2CgsLxT6uXr2K1NRUXL16FVqtFqmpqUhNTUV+fr7Yxt/fH/Hx8eL7yMhIfPPNN/j6669x8eJFLFmyBDt37sTQoUMBPPpCZeDAgYiIiMD+/fuRkpKC/v37o3nz5qz8/YLwDxnJYUZIDjNCxjAfJIcZISnleqTWhx9+iIkTJ+LKlSsAgIMHD2LLli1ITEyU3Obq1auwtbXF22+/DXt7e1SvXl08s61Wq2FhYQEbGxuDl85+9tlnaNeunfjeyckJDRs2FN9//vnniI+Px44dOzB8+PBSHcMHH3yA27dvo2XLluJl5Z988one5d+dOnXCoEGD0LdvXzRp0gS2traYNWuWwf6uX7+OH374AZs2bSqxbteuXbCzswMA3Lt3D1WqVMGuXbvKXIq/QYMGmDp1KgDA19cXS5Yswd69e9GuXTtcvXoV7u7uCA4Ohrm5OTw9PfH6668DePR5qVQq2Nvbl/h8i4qKsGzZMr3PU86FCxfw7bffYs+ePWL1a29vb3G9k5MTAMDV1dVoFe5Zs2aJj7uS4unpiYiICGRkZODevXtITEzEgAEDMGLECPz+++/YsWMHACAgIEBvu/3796NNmzYAgE8//RRr164V1z3O3ZNt0tPTkZubK7bp0aMHVqxYgVmzZmHkyJGoVasWtm3bhpYtW4pt5s+fD6VSiZ49e6KgoAAhISFYtmyZ0eMhIiIiIqJXS7nOVLu4uKBz586IjY1FTEwMOnfujMqVKxvdpl27dqhevTq8vb3Rr18/bNy4Effv3y/V/po0aaL3Pj8/H2PHjkXt2rXh6OgIOzs7pKWllelMdWJiImbOnIlly5bhxIkTiIuLw+7du0sUVps7dy6Ki4uxdetWbNy4EZaWlgb7W7t2LRwdHQ0WFwsKChLPjh49ehQhISHo2LGj+KVEaTVo0EDvfZUqVZCTkwMA6NWrFx48eABvb28MGjQI8fHxpbr/3MLCokS/clJTU6FSqdC6desybfe0iRMnIjc3V3z9/vvvJdpoNBqkpKQgLy8P/fr1w++//47Zs2dDpVLBy8sLgiAYfD2eLAOPLnOXayMIQonL1AcMGICMjAw8ePAAqamp6Natm956KysrLF26FHfu3MG9e/cQFxfH+6mJiIiIiP5lyv1IrQEDBiA2NhZr167FgAEDZNvb29vjxIkT2Lx5M6pUqYJPP/0UDRs2LFWFaFtbW733Y8eORXx8PGbOnIkDBw4gNTUV9evX17vkV86UKVPQr18/fPTRR6hfvz569OiBmTNnYtasWXqXdGRmZuL69evQ6XTIysoy2JcgCFizZg369esHCwsLg+P38fGBj48PmjZtilWrVuHevXv4+uuvSz1eADA3N9d7r1AoxLF6eHggPT0dy5Ytg7W1NYYOHYpWrVqhqKjIaJ/W1tYlKhgqlUoIT1yCDUCvH2tr6zKNW4qlpSUcHBz0XgAgsKIiGaBUKuHi4lLmKzzo34MZITnMCBnDfJAcZoSklDsRHTp0QGFhIYqKihASElKqbczMzBAcHIzZs2fj9OnTyMrKwr59+wA8OmOq1WpL1c/BgwcRHh6OHj16oH79+nB3d5ec8Eq5f/9+if8Qjyv5PZ5QFhYW4sMPP0Tv3r3x+eef46OPPhLPDD8pKSkJFy9exMCBA0u1b4VCAaVSqVdB/XmwtrZGly5dsGjRIiQmJuLQoUM4c+YMgLJ9vi4uLnr3XWu1Wpw9e1Z8X79+feh0OvGZzU97/MVCafdXgsJwLGNjY8vXH70SlEolatasyT9kJIkZITnMCBnDfJAcZoSklDsRKpUKaWlp+O2330pVVn7Xrl1YtGgRUlNTceXKFaxbtw46nQ61atUC8Og5ykeOHEFWVhZu375ttACAr68v4uLikJqailOnTuGDDz4oc8GALl26YPny5diyZQsuX76MPXv2YMqUKejSpYt4PJMmTUJubi4WLVqE8ePHw8/Pz+BZ+dWrV6NZs2aoV6+ewX0VFBSIBbTS0tIwYsQI5Ofno0uXLmUaszGxsbFYvXo1zp49i0uXLmHDhg2wtrYWi6Z5eXnhl19+wR9//IHbt28b7eutt97C7t27sXv3bpw/fx5DhgzRu6LAy8sLYWFhGDBgALZv347Lly8jMTER3377LQCgevXqUCgU2LVrF27duqVXEKxUJKp/07+bTqdDZmYmi4OQJGaE5DAjZAzzQXKYEZLyTF+zPHnJrhxHR0fExcXhrbfeQu3atbFixQps3rwZdevWBfDokm6VSoU6derAxcXF6P3R0dHRqFSpEt5880106dIFISEhaNy4cZnGPnnyZIwZMwaTJ09GnTp1MHDgQISEhOCrr74C8Oie6wULFmD9+vVwcHCAUqnE+vXrceDAASxfvlzsJzc3F9u2bTN6ljohIQFVqlRBlSpV0KxZMxw7dgxbt27Vu6f3WTk6OuLrr79GixYt0KBBA/z888/YuXOnWGH8s88+Q1ZWFmrWrAkXFxejfQ0YMABhYWEIDQ1F69at4e3tLT4m67Hly5fj3XffxdChQ+Hv749Bgwbh3r17AIDXXnsN06dPx4QJE+Dm5lbq4nGPKZ669JwIePSH7NatW/xDRpKYEZLDjJAxzAfJYUZIikJ4+uZZogqSl5cHtVqNaYkZsHRwxIRGxovf0b9LcXExjh8/jiZNmsDMrFwPLqBXHDNCcpgRMob5IDnMyD/r8dwgNze31CdyKwpvCCAiIiIiIiIqJ06qyeSw+jcZolQqUa1aNRYHIUnMCMlhRsgY5oPkMCMkhdctkOmRqP5N/26P/5ARSWFGSA4zQsYwHySHGSEpnL2QyVGw+jcZoNVqkZaWVv5HtdErjxkhOcwIGcN8kBxmhKRwUk2mh7XzyABBEJCbmwvWViQpzAjJYUbIGOaD5DAjJIWTaiIiIiIiIqJy4j3VZHJG1HeCk5NTRQ+DiIiIiIhIFs9Uk8lhRUUyRKlUwtvbm/kgScwIyWFGyBjmg+QwIyRFIfCmADIRL9MD3omIiIiI6MV5meYG/JqFTA4rKpIhWq0Wp06dYj5IEjNCcpgRMob5IDnMCEnhpJpMDi+eIEMEQcCDBw+YD5LEjJAcZoSMYT5IDjNCUjipJiIiIiIiIionTqrJ5Cw+c6eih0BERERERFQqnFSTyREUjCWVpFKp4O/vD5VKVdFDIRPFjJAcZoSMYT5IDjNCUjh7IdOjUBhcHB4e/s+Og0yKQqGAo6MjFBL5IGJGSA4zQsYwHySHGSEpnFSTyVHoSl9RMS4uDu3bt4ezszMUCgVSU1NLtMnMzESPHj3g4uICBwcHvPfee7h586bRfrVaLaZMmYIaNWrA2toaNWvWxOeff65XmEIQBHz66aeoUqUKrK2tERwcjIyMjFKPncqmuLgYx44dQ3FxcUUPhUwUM0JymBEyhvkgOcwISeGkmkza7du3ERYWBk9PT2zevBk+Pj7o1asXCgsLAQD37t1Dy5YtERUVZXD7e/fuoX379lAoFNi3bx8OHjyIwsJCdOnSBTqdTnK/UVFRWL58OZYsWYK0tDRERUVh9uzZWLx4sdhm9uzZWLRoEVasWIEjR47A1tYWISEhePjw4fP9EEjER1iQHGaE5DAjZAzzQXKYETLErKIHQGSMRqPB0aNHsX79eixYsAAjR45EQkKCOCHu168fACArK8vg9gcPHkRWVhZOnjwpPjR+7dq1qFSpEvbt24fg4GCD2yUnJ6Nbt27o3LkzAMDLywubN2/G0aNHATw6S71gwQJMnjwZ3bp1AwCsW7cObm5u2L59O95///3n9hkQEREREZHp4plqMmknT55EaGgoWrduDbVajaCgIERFRcHKyqpU2xcUFEChUMDS0lJcZmVlBaVSiV9//VVyuzfffBN79+7FhQsXAACnTp3Cr7/+io4dOwIALl++jOzsbL1JuVqtRrNmzXDo0KHyHCoREREREb2EeKaaTM6T1b9btGiBmJgYNGzYsFx9vfHGG7C1tcX48eMxc+ZMCIKACRMmQKvV4saNG5LbTZgwAXl5eWKFR61WixkzZqBv374AgOzsbACAm5ub3nZubm7iOnq+VCoVGjRowIqbJIkZITnMCBnDfJAcZoSk8Ez1/6dQKLB9+/ZSt4+NjYWjo+MLG8/zVpbxmtKxRUdHo3fv3tBoNFi3bh0CAgKwYsWKUm/v4uKCrVu3YufOnbCzs4Narcbdu3fRuHFjKJXS8f/222+xceNGbNq0CSdOnMDatWsxd+5crF279nkcFpWThYVFRQ+BTBwzQnKYETKG+SA5zAgZYjKT6uzsbIwaNQo+Pj6wsrKCm5sbWrRogeXLl+P+/fsvfP83btwQL+0tjd69e4uXBktRKBTiS61Wo0WLFti3b9+zDlXPiBEjULt2bYPrrl69CpVKhR07dpRqvI+Vpe2LoBD+r4CYra0tZsyYgYyMDHTt2hVDhgxBREQEVq5cWer+2rdvj8zMTOTk5OD27dtYv349/vjjD3h7e0tuExkZiQkTJuD9999H/fr10a9fP2g0GsyaNQsA4O7uDgAlqojfvHlTXEfPl1arxfHjx1kghCQxIySHGSFjmA+Sw4yQFJOYVF+6dAmNGjXCTz/9hJkzZ+LkyZM4dOgQxo0bh127duHnn39+4WNwd3fXu+9WjrW1NVxdXWXbxcTE4MaNGzh48CAqV66Mt99+G5cuXTLYtqioqNT7f2zgwIE4f/48kpOTS6yLjY2Fq6srOnXqVOrxAqU/tn+ao6MjBg8ejI4dO+LAgQNl3r5y5cpwdHTEvn37kJOTg65du0q2vX//fokz2SqVSiyQVqNGDbi7u2Pv3r3i+ry8PBw5cgTNmzcv89iIiIiIiOjlZBKT6qFDh8LMzAzHjx/He++9h9q1a8Pb2xvdunXD7t270aVLF7Ht3bt38dFHH4nPHH7rrbdw6tQpcf20adMQEBCANWvWwNPTE3Z2dhg6dCi0Wi1mz54Nd3d3uLq6YsaMGXpjePLy76ysLCgUCsTFxSEoKAg2NjZo2LChXgGq0l4i7ejoCHd3d9SrVw/Lly/HgwcPsGfPHnGfy5cvR9euXcUzsgCwfPly1KxZExYWFqhVqxbWr18v2X9AQAAaN26MNWvW6C0XBAGxsbEICwuDmZlZifGeOnUKQUFBsLe3h4ODAwIDA3H8+HHJY5Mbk0KhwKpVq9CjRw/Y2NjA19cXO3bskP185Gg0GiQlJSE3NxdarRb79+9HUlISAgMDAQB37txBamoqfvvtNwBAeno6UlNT9e5rjomJweHDh5GZmYkNGzagV69e0Gg0qFWrltimbdu2WLJkifi+S5cumDFjBnbv3o2srCzEx8cjOjoaPXr0EI939OjR+OKLL7Bjxw6cOXMGoaGhqFq1Krp37/7Mx01ERERERC8JoYLdvn1bUCgUwqxZs0rVPjg4WOjSpYtw7Ngx4cKFC8KYMWMEZ2dn4c8//xQEQRCmTp0q2NnZCe+++65w7tw5YceOHYKFhYUQEhIijBgxQjh//rywZs0aAYBw+PBhsV8AQnx8vCAIgnD58mUBgODv7y/s2rVLSE9PF959912hevXqQlFRkSAIghATEyOo1WqjY32yT0EQhDt37ggAhEWLFonrXV1dhTVr1giZmZnClStXhLi4OMHc3FxYunSpkJ6eLsybN09QqVTCvn37JPezdOlSwd7eXsjPzxeX7du3TwAgpKenGxxv3bp1hQ8//FBIS0sTLly4IHz77bdCamqqwbalGRMAoVq1asKmTZuEjIwMYeTIkYKdnZ3472LIw4cPhdzcXPH1+++/CwCEaYkZYpvo6GihcePGgr29vaBUKoVq1aoJkZGRQnFxsThWACVeU6dOFfsYP3684ObmJpibmwu+vr7CvHnzBJ1OpzeW6tWr622Tl5cnjBo1SvD09BSsrKwEb29vYdKkSUJBQYHYRqfTCVOmTBHc3NwES0tLoW3btuLnTc9fUVGRcOjQIfH/INHTmBGSw4yQMcwHyWFG/lm5ubkCACE3N7eihyKrwifVhw8fFgAIcXFxesudnZ0FW1tbwdbWVhg3bpwgCIJw4MABwcHBQXj48KFe25o1awpfffWVIAiPJtU2NjZCXl6euD4kJETw8vIStFqtuKxWrVp6E3lDk+pVq1aJ68+dOycAENLS0gRBKPuk+t69e8LQoUMFlUolnDp1Slw/evRovW3efPNNYdCgQXrLevXqJXTq1ElyP3/99ZdgZWUlxMTEiMv69esntGzZUnz/9Hjt7e2F2NhYg/093bY0YwIgTJ48WXyfn58vABB++OEHyXFPnTrV8IQ4KdNg+7CwMMm+6NWn0+mEoqKiEl+IED3GjJAcZoSMYT5IDjPyz3qZJtUmcfm3IUePHkVqairq1q2LgoICAI8uWc7Pz4ezszPs7OzE1+XLl5GZmSlu6+XlBXt7e/G9m5sb6tSpo3ePrJubG3JycoyOoUGDBuLPVapUAQDZbZ7Wp08f2NnZwd7eHtu2bcPq1av1+m3SpIle+7S0NLRo0UJvWYsWLZCWlia5D0dHR7zzzjviJeB5eXnYtm0bBg4cKLlNREQEPvroIwQHB+PLL7/U+/yeVtoxPXlctra2cHBwMPp5TZw4Ebm5ueLr999/l2xLBACFhYUVPQQyccwIyWFGyBjmg+QwI2RIhU+qfXx8oFAokJ6errfc29sbPj4+sLa2Fpfl5+ejSpUqSE1N1Xulp6cjMjJSbGdubq7Xl0KhMLjscdEpKU9uo1AoAEB2m6fNnz9fvMc3OzsbYWFheuttbW3L1J+UgQMH4sCBA7h48SK++eYbqFQq9OrVS7L9tGnTcO7cOXTu3Bn79u1DnTp1EB8f/0xjKOtnbGlpCQcHB70XoF/9+0mxsbHPND56uWm1Wpw+fZoVN0kSM0JymBEyhvkgOcwISanwSbWzszPatWuHJUuW4N69e0bbNm7cGNnZ2TAzM4OPj4/eq3Llyv/QiMvG3d0dPj4+cHFxKVX72rVr4+DBg3rLDh48iDp16hjdLigoCDVq1EBMTAxiYmLw/vvvy07Y/fz8oNFo8NNPP+Gdd95BTEzMcx0TERERERHRq86sogcAAMuWLUOLFi3QpEkTTJs2DQ0aNIBSqcSxY8dw/vx5sdJzcHAwmjdvju7du2P27Nnw8/PD9evXsXv3bvTo0aPEpdQvo8jISLz33nto1KgRgoODsXPnTsTFxck+VkyhUGDAgAGIjo7GX3/9hfnz50u2ffDgASIjI/Huu++iRo0auHbtGo4dO4aePXs+1zERERERERG96kxiUl2zZk2cPHkSM2fOxMSJE3Ht2jVYWlqiTp06GDt2LIYOHQrg0cTx+++/x6RJk9C/f3/cunUL7u7uaNWqFdzc3Cr4KJ6P7t27Y+HChZg7dy5GjRolnn1u06aN7Lbh4eGYOnUq6tati2bNmkm2U6lU+PPPPxEaGoqbN2+icuXKeOeddzB9+vTnPiai50mlUlX0EMjEMSMkhxkhY5gPksOMkCEKQRCEih4EEfCowJparcbUXy5h2n9qVPRwiIiIiIiogjyeG+Tm5oq1l0xVhd9TTVQCv+chAwRBwN27d8HvAUkKM0JymBEyhvkgOcwISeGkmkyOVPVv+nfTarU4f/48K26SJGaE5DAjZAzzQXKYEZLCSTURERERERFROXFSTURERERERFROnFST6VEoKnoEZIIUCgWsra2hYD5IAjNCcpgRMob5IDnMCElh9W8yGS9ThT8iIiIiInpxXqa5Ac9Uk8nR6ViojErS6XTIyclhPkgSM0JymBEyhvkgOcwISeGkmkwOf1GRITqdDpcuXWI+SBIzQnKYETKG+SA5zAhJ4aSaiIiIiIiIqJw4qSYiIiIiIiIqJ06qyeSwoiIZolAooFarmQ+SxIyQHGaEjGE+SA4zQlJY/ZtMxstU4Y+IiIiIiF6cl2luwDPVZHKiU29V9BDIBOl0Oly7do3FQUgSM0JymBEyhvkgOcwISeGkmkyOghdPkAH8Q0ZymBGSw4yQMcwHyWFGSAon1fTSCA8Pr+ghEBERERER6eGkml5qcXFxaN++PZydnaFQKJCamlqiTWZmJnr06AEXFxc4ODjgvffew82bN432q9VqMWXKFNSoUQPW1taoWbMmPv/8czxZgkAQBHz66aeoUqUKrK2tERwcjIyMjOd9iEREREREZMI4qSaTIzxRUfH27dsICwuDp6cnNm/eDB8fH/Tq1QuFhYUAgHv37qFly5aIiooy2Ne9e/fQvn17KBQK7Nu3DwcPHkRhYSG6dOli9NKdqKgoLF++HEuWLEFaWhqioqIwe/ZsLF68WGwze/ZsLFq0CCtWrMCRI0dga2uLkJAQPHz48Dl9EvQkpVIJFxcXKJX8tUWGMSMkhxkhY5gPksOMkBSzih4AUQmK//tFpdFocPToUaxfvx4LFizAyJEjkZCQIE6I+/XrBwDIysoy2NXBgweRlZWFkydPilUD165di0qVKmHfvn0IDg42uF1ycjK6deuGzp07AwC8vLywefNmHD16FMCjs9QLFizA5MmT0a1bNwDAunXr4Obmhu3bt+P9999/9s+B9CiVStSsWbOih0EmjBkhOcwIGcN8kBxmhKTwaxYyPcL/nUE+efIkQkND0bp1a6jVagQFBSEqKgpWVlal6qqgoAAKhQKWlpbiMisrKyiVSvz666+S27355pvYu3cvLly4AAA4deoUfv31V3Ts2BEAcPnyZWRnZ+tNytVqNZo1a4ZDhw6V6XCpdHQ6HTIzM1kchCQxIySHGSFjmA+Sw4yQFE6qX3IKhQLbt28vdfvY2Fg4Ojq+sPE8D09W/27RogViYmKwa9eucvX1xhtvwNbWFuPHj8f9+/dx7949jB07FlqtFjdu3JDcbsKECXj//ffh7+8Pc3NzNGrUCKNHj0bfvn0BANnZ2QAANzc3ve3c3NzEdfR86XQ63Lp1i3/ISBIzQnKYETKG+SA5zAhJ4aT6GWVnZ2PUqFHw8fGBlZUV3Nzc0KJFCyxfvhz3799/4fu/ceOGePa0NHr37i2efZWiUCjEl1qtRosWLbBv375nHWq5REdHo3fv3tBoNFi3bh0CAgKwYsWKUm/v4uKCrVu3YufOnbCzs4Narcbdu3fRuHFjo/fDfPvtt9i4cSM2bdqEEydOYO3atZg7dy7Wrl37PA6LiIiIiIheEbyn+hlcunQJLVq0gKOjI2bOnIn69evD0tISZ86cwcqVK/Haa6+ha9euL3QM7u7uZWpvbW0Na2tr2XYxMTHo0KEDbt++jUmTJuHtt9/G2bNn4e3tXaJtUVERzM3NyzSO0rK1tcWMGTMwY8YMdO/eHR07doRGo4FSqcTHH39cqj7at2+PzMxM3L59G2ZmZnB0dIS7u7vBY3ksMjJSPFsNAPXr18eVK1cwa9YshIWFiZ/7zZs3UaVKFXG7mzdvIiAgoPwHTERERERELxWeqX4GQ4cOhZmZGY4fP4733nsPtWvXhre3N7p164bdu3ejS5cuYtu7d+/io48+Eh/r9NZbb+HUqVPi+mnTpiEgIABr1qyBp6cn7OzsMHToUGi1WsyePRvu7u5wdXXFjBkz9Mbw5OXfWVlZUCgUiIuLQ1BQEGxsbNCwYUO9e3xLe/n344lnvXr1sHz5cjx48AB79uwR97l8+XJ07dpVnPQCwPLly1GzZk1YWFigVq1aWL9+fbk+1yerfz89psGDB6Njx444cOBAmfutXLkyHB0dsW/fPuTk5Bj9wuP+/fslzmSrVCrxcp8aNWrA3d0de/fuFdfn5eXhyJEjaN68eZnHRvKUSiWqVavGipskiRkhOcwIGcN8kBxmhKQwEeX0559/4qeffsKwYcNga2trsI3iiclhr169kJOTgx9++AEpKSlo3Lgx2rZtizt37ohtMjMz8cMPPyAhIQGbN2/G6tWr0blzZ1y7dg1JSUmIiorC5MmTceTIEaNjmzRpEsaOHYvU1FT4+fmhT58+KC4uLvexPj6z/fgxVsCjLwF69OiBM2fOYMCAAYiPj8eoUaMwZswYnD17FoMHD0b//v2xf/9+yX4LCgqQl5en9wJQovp3UlIScnNzodVqsX//fiQlJSEwMBAAcOfOHaSmpuK3334DAKSnpyM1NVXvvuaYmBgcPnwYmZmZ2LBhA3r16gWNRoNatWqJbdq2bYslS5aI77t06YIZM2Zg9+7dyMrKQnx8PKKjo9GjR49HQ1QoMHr0aHzxxRfYsWMHzpw5g9DQUFStWhXdu3cv5ydNxvAPGclhRkgOM0LGMB8khxkhSQKVy+HDhwUAQlxcnN5yZ2dnwdbWVrC1tRXGjRsnCIIgHDhwQHBwcBAePnyo17ZmzZrCV199JQiCIEydOlWwsbER8vLyxPUhISGCl5eXoNVqxWW1atUSZs2aJb4HIMTHxwuCIAiXL18WAAirVq0S1587d04AIKSlpQmCIAgxMTGCWq02emxP9nnv3j1h6NChgkqlEk6dOiWuHz16tN42b775pjBo0CC9Zb169RI6deokuZ+pU6cKAEq8piVdFNtER0cLjRs3Fuzt7QWlUilUq1ZNiIyMFIqLi8XjMdTH1KlTxT7Gjx8vuLm5Cebm5oKvr68wb948QafT6Y2levXqetvk5eUJo0aNEjw9PQUrKyvB29tbmDRpklBQUCC20el0wpQpUwQ3NzfB0tJSaNu2rZCenm70s6XyKy4uFn777Tfx357oacwIyWFGyBjmg+QwI/+s3NxcAYCQm5tb0UORxXuqn7OjR49Cp9Ohb9++KCgoAPDocUz5+flwdnbWa/vgwQNkZmaK7728vGBvby++d3Nzg0ql0vs2zM3NDTk5OUbH0KBBA/Hnx/f75uTkwN/fv9TH0adPH6hUbtcoRwAAP31JREFUKjx48AAuLi5YvXq1Xr9NmjTRa5+WllbiHucWLVpg4cKFkvuYOHEiIiIixPd5eXnw8PAAnqj+rdFooNFoAADh4eGIjY3V6yM8PBzh4eFGj+XLL7/El19+abTN08+5tre3x4IFC7BgwQLJbRQKBT777DN89tlnRvum50MQBOTm5kJ4Ih9ET2JGSA4zQsYwHySHGSEpnFSXk4+PDxQKBdLT0/WWPy5+9WQxsPz8fFSpUgWJiYkl+nny/uani30pFAqDy+TK+D+5zeNL0Mta+n/+/PkIDg6GWq2Gi4tLifVSl7yXhaWlpd7zo4mIiIiIiF42vCGgnJydndGuXTssWbIE9+7dM9q2cePGyM7OhpmZGXx8fPRelStX/odGXDbu7u7w8fExOKE2pHbt2jh48KDesoMHD6JOnTrPbUxPn6UmIiIiIiKqaJxUP4Nly5ahuLgYTZo0wTfffIO0tDSkp6djw4YNOH/+PFQqFQAgODgYzZs3R/fu3fHTTz8hKysLycnJmDRpEo4fP17BR/F8REZGIjY2FsuXL0dGRgaio6MRFxeHsWPHlrkvQcFYUklKpRLe3t4sDkKSmBGSw4yQMcwHyWFGSAov/34GNWvWxMmTJzFz5kxMnDgR165dg6WlJerUqYOxY8di6NChAB5dgv39999j0qRJ6N+/P27dugV3d3e0atUKbm5uFXwUz0f37t2xcOFCzJ07F6NGjUKNGjUQExODNm3alL0ziUdq0b+bUqmEq6trRQ+DTBgzQnKYETKG+SA5zAhJUQi8055MRF5eHtRqNaYlXcTUVjUrejhkYrRaLc6ePYt69eqJV4EQPYkZITnMCBnDfJAcZuSf9XhukJubCwcHh4oejlG8doFMD7/nIQMEQcCDBw9YcZMkMSMkhxkhY5gPksOMkBROqomIiIiIiIjKiZNqIiIiIiIionLipJpMDqt/kyEqlQr+/v68h4kkMSMkhxkhY5gPksOMkBRW/ybTw+rfZIBCoYCjo2NFD4NMGDNCcpgRMob5IDnMCEnhKUEyOQqdtqKHQCaouLgYx44dQ3FxcUUPhUwUM0JymBEyhvkgOcwISeGkmkzOiPpOFT0EMlFaLb9wIeOYEZLDjJAxzAfJYUbIEE6qiYiIiIiIiMqJk2oiIiIiIiKiclIIfHo5mYi8vDyo1WrcvXsXarW6oodDJkYQBDx48ADW1tZQsJgdGcCMkBxmhIxhPkgOM/LPejw3yM3NhYODQ0UPxyieqSail4aFhUVFD4FMHDNCcpgRMob5IDnMCBnCSTWZHBaAIEO0Wi2OHz/OfJAkZoTkMCNkDPNBcpgRksJJNZmcxWfuVPQQiIiIiIiISoWTaiIiIiIiIqJy4qSaXgrh4eEVPQQiIiIiIqISOKkmkyMoShfLuLg4tG/fHs7OzlAoFEhNTdVbn5WVBYVCYfC1devWUu3jk08+gUKhwIIFC/SW37lzB3379oWDgwMcHR0xcOBA5Ofnl6pPKh+VSoUmTZpApVJV9FDIRDEjJIcZIWOYD5LDjJAUTqrJZN2+fRthYWHw9PTE5s2b4ePjg169eqGwsBAAcO/ePbRs2RJRUVEGt/fw8MCNGzf0XtOnT4ednR06duwou//4+HgcPnwYVatWLbGub9++OHfuHPbs2YNdu3bhl19+wccff/xsB0yyHv/bE0lhRkgOM0LGMB8khxkhQzipJpOjEHQAAI1Gg8OHD2P9+vXo1KkTvv76a3h7e0One7S+X79++PTTTxEcHGywH5VKBXd3d71XfHw83nvvPdjZ2Rkdwx9//IERI0Zg48aNMDc311uXlpaGhIQErFq1Cs2aNUPLli2xePFibNmyBdevX38OnwAZotVqcfr0aVbcJEnMCMlhRsgY5oPkMCMkhZNqMlknT55EaGgoWrduDbVajaCgIERFRcHKyqpc/aWkpCA1NRUDBw402k6n06Ffv36IjIxE3bp1S6w/dOgQHB0d0aRJE3FZcHAwlEoljhw5Uq6xERERERHRy8msogdAJKVFixaIiYlBw4YNn0t/q1evRu3atfHmm28abRcVFQUzMzOMHDnS4Prs7Gy4urrqLTMzM4OTkxOys7Ofy1iJiIiIiOjlYLJnqhUKBbZv317Rw/jXMaXPPTo6Gr1794ZGo8G6desQEBCAFStWlKuvBw8eYNOmTbJnqVNSUrBw4ULExsZCoVCUa1/04rAwCMlhRkgOM0LGMB8khxkhQypsUh0eHo7u3btX1O6fSVxcHNq1awcXFxc4ODigefPm+PHHH41u8/DhQ4SHh6N+/fowMzMzeOy//vorWrRoAWdnZ1hbW8Pf3x/z58/XaxMeHq5XxdrZ2RkdOnTA6dOnZcednZ2NESNGwNvbG5aWlvDw8ECXLl2wd+/eMh2/nGf9txWUj35Z2draYsaMGcjIyEDXrl0xZMgQREREYOXKlWXu83//+x/u37+P0NBQo+0OHDiAnJwceHp6wszMDGZmZrhy5QrGjBkDLy8vAIC7uztycnL0tisuLsadO3fg7u5e5rFR6ZiZmaFp06YwM+MFNmQYM0JymBEyhvkgOcwISTHZM9Wm7JdffkG7du3w/fffIyUlBUFBQejSpQtOnjwpuY1Wq4W1tTVGjhwpWVjL1tYWw4cPxy+//IK0tDRMnjwZkydPLjGJ7NChg1jNeu/evTAzM8Pbb79tdMxZWVkIDAzEvn37MGfOHJw5cwYJCQkICgrCsGHDyv4hvEiCUGKRo6MjBg8ejI4dO+LAgQNl7nL16tXo2rUrXFxcjLbr168fTp8+jdTUVPFVtWpVREZGil+cNG/eHHfv3kVKSoq43b59+6DT6dCsWbMyj41KRxAE3L17F4KBfBABzAjJY0bIGOaD5DAjJOWlmVSPHz8efn5+sLGxgbe3N6ZMmYKioiJx/bRp0xAQEIA1a9bA09MTdnZ2GDp0KLRaLWbPng13d3e4urpixowZev1GR0ejfv36sLW1hYeHB4YOHSr7vOEFCxZg3LhxaNq0KXx9fTFz5kz4+vpi586dktvY2tpi+fLlGDRokOTZzEaNGqFPnz6oW7cuvLy88OGHHyIkJKTEJNLS0lKsZh0QEIAJEybg999/x61btyT3P3ToUCgUChw9ehQ9e/aEn58f6tati4iICBw+fFiv7e3bt9GjRw/Y2NjA19cXO3bsENdptVoMHDgQNWrUgLW1NWrVqoWFCxeK66dNm4a1a9fiu+++E8+mJyYmGvs4S3iy+ndSUhJyc3Oh1Wqxf/9+JCUlITAwEMCjZ0Wnpqbit99+AwCkp6cjNTW1xH3NFy9exC+//IKPPvrI4P78/f0RHx8PAHB2dka9evX0Xubm5nB3d0etWrUAALVr10aHDh0waNAgHD16FAcPHsTw4cPx/vvvG3z8Fj0fWq0W58+fZ8VNksSMkBxmhIxhPkgOM0JSXpprF+zt7REbG4uqVavizJkzGDRoEOzt7TFu3DixTWZmJn744QckJCQgMzMT7777Li5dugQ/Pz8kJSUhOTkZAwYMQHBwsHhGUalUYtGiRahRowYuXbqEoUOHYty4cVi2bFmpx6bT6fD333/DycnpuR7zyZMnkZycjC+++EKyTX5+PjZs2AAfHx84OzsbbHPnzh0kJCRgxowZsLW1LbHe0dFR7/306dMxe/ZszJkzB4sXL0bfvn1x5coVODk5QafToVq1ati6dSucnZ2RnJyMjz/+GFWqVMF7772HsWPHIi0tDXl5eYiJiQEAyc+loKAABQUF4vu8vDy99Z6enoiIiEBGRgbu3buHxMREDBgwACNGjAAA7NixA/379xfbv//++wCAqVOnYtq0aeLyNWvWoFq1amjfvr3BcaSnpyM3N9fgOikbN27E8OHD0bZtWyiVSvTs2ROLFi0qUx9ERERERPQKECpIWFiY0K1bN8n1AIT4+HjJ9XPmzPl/7d15XBX1/j/w1zkoOxzEBVCBo+KeKyahlZkouGB53S8ZLpkbmVpW3q5heRWX3EO7pUJWippoXrfCBVyuiqK4Em4glqCpAaIoy3n//uDHfD1yFiAUvL2ej8d5PDgzn5n5zJwX6PvMzGfE29tbeR8aGiq2traSnZ2tTPP39xetViuFhYXKtKZNm0pYWJjR9W7cuFFq1qxZup34/+bOnSs1atSQGzdulKq9uX2vV6+eWFpailqtls8++6zEshYWFmJnZyd2dnYCQNzc3CQhIcHo+o4ePSoAJDo62mzfAMg///lP5X1OTo4AkJ07dxpdZsKECdK/f/9S71+x0NBQAVDiNSP2Yom2wcHBZtdH/9vy8/Pl8OHDkp+fX9ldoSqKGSFzmBEyhfkgc5iRpysrK0sASFZWVmV3xaxn5vLv9evXo3PnznB1dYW9vT3++c9/Ii0tTa+NVquFg4OD8t7FxQUtWrSAWq3Wm/boIFO7d+9Gt27dUK9ePTg4OGDYsGG4ffs27t+/DwCwt7dXXmPHji3Rr7Vr1+LTTz/Fhg0bSjxmqbwOHDiA48eP48svv8TixYuxbt06vfldu3ZV7veNj4+Hv78/evbsiatXrxpcn5Txvo/WrVsrP9vZ2cHR0VHvmIWHh8Pb2xu1a9eGvb09vvrqqxKfRWlMmzYNWVlZyuvatWtFMzjqNhmgUqlgY2PDUdnJKGaEzGFGyBTmg8xhRsiYZ+Ly78OHDyMoKAiffvop/P39odFoEBUVhQULFui1q169ut57lUplcJpOV3TPbmpqKvr06YNx48Zh1qxZcHZ2xsGDBzFq1Cjk5eXB1tYWiYmJyrKOjo5664qKisJbb72FjRs3Gh18rDwaNGgAAGjVqhVu3LiBGTNmYOjQocp8Ozs7eHl5Ke9XrlwJjUaDr7/+2uCl4o0bN4ZKpcIvv/xSqu2bOmZRUVF4//33sWDBAvj6+sLBwQHz58/H0aNHy7yfVlZWsLKyKjFdVCW/64mMjCzz+ul/i4WFRYU9s5z+NzEjZA4zQqYwH2QOM0LGPBNF9X//+194enri448/VqYZOytbFgkJCdDpdFiwYIFyNnvDhg16bR4tXh+1bt06jBw5ElFRUejdu/ef7osxOp1O775jQ1QqFdRqNXJzcw3Od3Z2hr+/P8LDwzFx4sQS91VnZmaWuK/amEOHDqFTp04YP368Mu3y5ct6bSwtLf/cAA4cUZEM0Ol0uHXrFmrVqqV39QlRMWaEzGFGyBTmg8xhRsiYSi2qs7Ky9M4EA0WjL7u7u+tNa9y4MdLS0hAVFYXnn38e27dvV0Zr/jO8vLyQn5+PZcuWITAwEIcOHcKXX35pdrm1a9ciODgYS5YsgY+PjzLatI2NDTQajdHlzp8/j7y8PNy5cwd3795V9r1t27YAii6r9vDwQLNmzQAUPbrr888/x8SJE/XW8/DhQ2Wbf/zxB7744gvk5OQgMDDQ6LbDw8PRuXNndOzYEZ999hlat26NgoICxMTEYMWKFUhKSjK730DRZ7FmzRr89NNPaNCgAb799lscO3ZMObsOFF2G/9NPPyE5ORk1a9aERqMpcfbblOLRv4kepdPpcOXKFTg7O/MfMjKIGSFzmBEyhfkgc5gRMqZSi+rY2Fi0a9dOb9qoUaOwcuVKvWl9+/bF5MmTERISgocPH6J3796YPn263gjP5dGmTRssXLgQc+fOxbRp0/Dyyy8jLCwMb775psnlvvrqKxQUFGDChAl6z3gODg42eZlyr1699M6wF+978T3POp0O06ZNQ0pKCqpVq4ZGjRph7ty5GDNmjN56du3aBTc3NwBFo6I3a9YMGzduxCuvvGJ02w0bNsSJEycwa9YsvPfee0hPT0ft2rXh7e2NFStWmNzfR40ZMwYnT57E4MGDoVKpMHToUIwfPx47d+5U2owePRqxsbHo0KEDcnJysG/fPpN9IyIiIiIielappKyjWBE9IdnZ2dBoNJgRexGhXQxfdk9/XQUFBTh+/Dg6dOiAatWeiTtX6CljRsgcZoRMYT7IHGbk6SquDbKyskqMbVXV8LoFqno4oiIZoFKpoNFoOOImGcWMkDnMCJnCfJA5zAgZw69YqMoxNPo3kYWFBZo3b17Z3aAqjBkhc5gRMoX5IHOYETKG1QtVPRyojAzQ6XT49ddflce7ET2OGSFzmBEyhfkgc5gRMoZFNVU5Kt7mTwbwHzIyhxkhc5gRMoX5IHOYETKGRTURERERERFRObGopirnnVbOld0FIiIiIiKiUmFRTVWOWs1YUklqtRq1a9dmPsgoZoTMYUbIFOaDzGFGyBg+p5qqjGfpWXRERERERPTkPEu1Ab9moSqHgz+QITqdDpcvX2Y+yChmhMxhRsgU5oPMYUbIGBbVVOXwDxUZotPp8PvvvzMfZBQzQuYwI2QK80HmMCNkDItqIiIiIiIionJiUU1ERERERERUTiyqqcrhiIpkiFqtRv369ZkPMooZIXOYETKF+SBzmBEyhqN/U5XxLI3wR0RERERET86zVBvwaxaqcgoLC/XeDx8+vHI6QlVKYWEhkpKSSuSDqBgzQuYwI2QK80HmMCNkDItqqnJKc/FEdHQ0evTogZo1a0KlUiExMbFEmwcPHmDChAmoWbMm7O3t0b9/f9y4ccPoOvPz8/Hhhx+iVatWsLOzQ926dfHmm2/i+vXreu3u3LmDoKAgODo6wsnJCaNGjUJOTk6Z95PKRkSQlZVVqnzQXxMzQuYwI2QK80HmMCNkDItqqpJu3bqF4OBgeHh4YN26dfDy8sLAgQORl5cHALh37x5efPFFzJ071+g6Jk+ejP/85z/YuHEj4uLicP36dfztb38z2v7+/fs4ceIEpk+fjhMnTiA6OhrJycno27evXrugoCCcO3cOMTEx2LZtG/bv34+33367YnaciIiIiIieKdUquwNEhkyePBnx8fH49ttvsXjxYkycOBG7du1Sngs4bNgwAEBqaqrB5bOysrBq1SqsXbsWr776KgAgIiICzZs3x5EjR/DCCy+UWEaj0SAmJkZv2hdffIGOHTsiLS0NHh4eSEpKwq5du3Ds2DF06NABALBs2TL06tULn3/+OerWrVtRh4CIiIiIiJ4BPFNNVY5arcbJkyfx5ptvokuXLtBoNOjatSvmzp0La2vrUq0jISEB+fn58PPzU6Y1a9YMHh4eOHz4cKn7kpWVBZVKBScnJwDA4cOH4eTkpBTUAODn5we1Wo2jR4+Wer1Udmq1Gg0bNuSIm2QUM0LmMCNkCvNB5jAjZEyVT8Qrr7yCSZMmVcq2tVotFi9eXCnb/itTq9Xo3LkzIiIisG3btnKtIyMjA5aWlkoxXMzFxQUZGRmlWseDBw/w4YcfYujQocqIgxkZGahTp45eu2rVqsHZ2bnU66XyUavVqFOnDv8hI6OYETKHGSFTmA8yhxkhY556IoYPHw6VSoWxY8eWmDdhwgSoVCq90Z6jo6Mxc+bMUq37aRfgr7zyClQqVYlX7969jbZxcXHBwIEDcfXqVbPrrsh9UalU2LJlS4Wtz5TIyMgSxWxZFBYWYuHChRg8eDAmT56MNWvWoG3btvjyyy8rrpNm5OfnY9CgQRARrFix4qltl4wrLCzEqVOnOOImGcWMkDnMCJnCfJA5zAgZUylfs7i7uyMqKgq5ubnKtAcPHmDt2rXw8PDQa+vs7AwHB4cK27aIoKCgoELWFR0djfT0dOV19uxZWFhYYODAgXrtRo8ejfT0dFy/fh0//vgjrl27hjfeeKNC+lCRigcBq2wiAjs7O8yaNQsXL15E3759MW7cOEyZMgVfffVVqdbh6uqKvLw8ZGZm6k2/ceMGXF1dTS5bXFBfvXoVMTExes/Fc3V1xc2bN/XaFxQU4M6dO2bXS3+OiCA3N5cjbpJRzAiZw4yQKcwHmcOMkDGVUlS3b98e7u7uiI6OVqZFR0fDw8MD7dq102v7+Bnb5cuXo3HjxrC2toaLiwsGDBgAoOgMeFxcHJYsWaKcFU5NTUVsbCxUKhV27twJb29vWFlZ4eDBg7h8+TJee+01uLi4wN7eHs8//zx2795dpv1wdnaGq6ur8oqJiYGtrW2JotrW1haurq5wc3PDCy+8gJCQEJw4caJM29JqtZg9ezZGjhwJBwcHeHh46BWYeXl5CAkJgZubG6ytreHp6YmwsDBlWQDo168fVCqV8n7GjBlo27YtVq5ciQYNGij3Kxu67L1t27aYMWOG8j4zMxNjxoyBi4sLrK2t8dxzz2Hbtm2IjY3FiBEjlHuRVSqV3nLl4eTkhDFjxqBnz544cOBAqZbx9vZG9erVsWfPHmVacnIy0tLS4Ovra3S54oL64sWL2L17N2rWrKk339fXF5mZmUhISFCm7d27FzqdDj4+PmXcMyIiIiIietZV2g0BI0eOREREhPJ+9erVGDFihMlljh8/jokTJ+Kzzz5DcnIydu3ahZdffhkAsGTJEvj6+ipnhdPT0+Hu7q4s+9FHH2HOnDlISkpC69atkZOTg169emHPnj04efIkAgICEBgYiLS0tHLv06pVqzBkyBDY2dkZbXPnzh1s2LChXAXYggUL0KFDB5w8eRLjx4/HuHHjkJycDABYunQptm7dig0bNiA5ORnff/+9UjwfO3YMQNHo1+np6cp7ALh06RI2bdqE6Ohog896NkSn06Fnz544dOgQvvvuO5w/fx5z5syBhYUFOnXqhMWLF8PR0VH5HN5//32D63n48CGys7P1XsUmT56MuLg4ZGVlobCwEPv27UNcXBy8vb0BFB3HxMREnD9/HkBRwZyYmKjc16zRaDBq1ChMmTIF+/btQ0JCAkaMGAFfX1+9kb+bNWuGzZs3AygqqAcMGIDjx4/j+++/R2FhITIyMpCRkaGcxW/evDkCAgIwevRoxMfH49ChQwgJCcGQIUM48jcRERER0V9QpT1S64033sC0adOUe4sPHTqEqKgoxMbGGl0mLS0NdnZ26NOnDxwcHODp6amc2dZoNLC0tFTOCj/us88+Q/fu3ZX3zs7OaNOmjfJ+5syZ2Lx5M7Zu3YqQkJAy7098fDzOnj2LVatWlZi3fPlyrFy5EiKC+/fvo0mTJvjpp5/KvI1evXph/PjxAIAPP/wQixYtwr59+9C0aVOkpaWhcePGePHFF6FSqeDp6aksV7t2bQBFZ3wfPzZ5eXlYs2aN0qY0du/ejfj4eCQlJaFJkyYAgIYNGyrzNRoNVCqV2cuhw8LC8Omnn5aYbmFhAQ8PD0yZMgUXL17EvXv3EBsbi5EjR+Kdd94BAGzdulXvS5ghQ4YAAEJDQ5Uz44sWLYJarUb//v3x8OFD+Pv7Y/ny5XrbSk5ORlZWFgDgt99+w9atWwEUnZl/1L59+/DKK68AAL7//nuEhISgW7duyvqXLl1qcl/pz7OwsECzZs1gYWFR2V2hKooZIXOYETKF+SBzmBEyptKK6tq1a6N3796IjIyEiKB3796oVauWyWW6d+8OT09PNGzYEAEBAQgICEC/fv1ga2trdnuPPgIJAHJycjBjxgxs374d6enpKCgoQG5ubrnPVK9atQqtWrVCx44dS8wLCgrCxx9/DKDont7Zs2ejR48eSEhIKNP94q1bt1Z+Li5ai+/vHT58OLp3746mTZsiICAAffr0QY8ePcyu09PTs0wFNQAkJiaifv36SkFdXtOmTcOUKVOU99nZ2XB3d4dKpcLkyZMxefJkAEX7FhkZqbfs8OHD9Qa0M8Ta2hrh4eEIDw832ubRe2K0Wm2p7pFxdnbG2rVrzbajivXoo82IDGFGyBxmhExhPsgcZoSMqdTx4EeOHInIyEh88803GDlypNn2Dg4OOHHiBNatWwc3Nzd88sknaNOmTYnBqAx5/JLs999/H5s3b8bs2bNx4MABJCYmolWrVuUarOvevXuIiorCqFGjDM7XaDTw8vKCl5cXOnfujFWrVuHixYtYv359mbZTvXp1vfcqlQo6nQ5A0X3qKSkpmDlzJnJzczFo0CDlfnNTDF2qrlarSxSX+fn5ys82NjZl6rcxVlZWcHR01HsBqLCB5Oh/S0FBAY4dO8Z8kFHMCJnDjJApzAeZw4yQMZVaVAcEBCAvLw/5+fnw9/cv1TLVqlWDn58f5s2bh9OnTyM1NRV79+4FAFhaWpZ6iPtDhw5h+PDh6NevH1q1agVXV1ekpqaWaz82btyIhw8flnpE7+JLRh4d/bwiODo6YvDgwfj666+xfv16bNq0CXfu3AFQVJCX9tjUrl0b6enpyvvs7GykpKQo71u3bo1ff/0VFy5cMLh8WT6H0nj8LDX9dfERFmQOM0LmMCNkCvNB5jAjZEilXf4NFBWXSUlJys/mbNu2DVeuXMHLL7+MGjVqYMeOHdDpdGjatCmAost3jx49itTUVNjb28PZ2dnouho3bozo6GgEBgZCpVJh+vTpylnfslq1ahVef/31EiNFF7t//74ygNaNGzcwc+ZMWFtbl+ry7NJauHAh3Nzc0K5dO6jVamzcuBGurq7KJSparRZ79uxB586dYWVlhRo1ahhd16uvvorIyEgEBgbCyckJn3zyid7n06VLF7z88svo378/Fi5cCC8vL/zyyy9QqVQICAiAVqtFTk4O9uzZgzZt2sDW1rZUl+gTERERERE9ayr1TDUAvct+zXFyckJ0dDReffVVNG/eHF9++SXWrVuHli1bAii6pNvCwgItWrRA7dq1Td4fvXDhQtSoUQOdOnVCYGAg/P390b59+zL3Pzk5GQcPHjR66TcAfP3113Bzc4Obmxu6du2KW7duYceOHcqXARXBwcEB8+bNQ4cOHfD8888jNTUVO3bsgFpd9BEvWLAAMTExcHd3L/HYssdNmzYNXbp0QZ8+fdC7d2+8/vrraNSokV6bTZs24fnnn8fQoUPRokULfPDBB8o3d506dcLYsWMxePBg1K5dG/Pmzauw/SQiIiIiIqpKVMKnl1MVkZ2dDY1Gg8zMTGg0msruDlUxIoLc3FzY2NhApVJVdneoCmJGyBxmhExhPsgcZuTpKq4NsrKySn0StrJU+plqIqLSsrS0rOwuUBXHjJA5zAiZwnyQOcwIGcKimqocDgBBhhQWFuL48ePMBxnFjJA5zAiZwnyQOcwIGcOimoiIiIiIiKicWFQTERERERERlROLaiIiIiIiIqJy4ujfVGVw9G8yRURQWFgICwsLjrhJBjEjZA4zQqYwH2QOM/J0cfRvIqInIC8vr7K7QFUcM0LmMCNkCvNB5jAjZAiLaqpyOKIiGVJYWIjTp08zH2QUM0LmMCNkCvNB5jAjZAyLaiIiIiIiIqJyYlFNREREREREVE4sqonomWFhYVHZXaAqjhkhc5gRMoX5IHOYETKEo39TlfEsjfBHRERERERPzrNUG/BMNVU5/J6HDBERZGZmMh9kFDNC5jAjZArzQeYwI2QMi2qqcjiiIhlSWFiIX375hfkgo5gRMocZIVOYDzKHGSFjWFQTERERERERlROLaiIiIiIiIqJyYlFNVY5KparsLlAVpFKpYGNjw3yQUcwImcOMkCnMB5nDjJAxHP2bqoxnaYQ/IiIiIiJ6cp6l2oBnqqnK0el0ld0FqoJ0Oh1u3rzJfJBRzAiZw4yQKcwHmcOMkDEsqqnK4R8qMkSn0+HKlSvMBxnFjJA5zAiZwnyQOcwIGcOimoiIiIiIiKicWFQTERERERERlROLaqpyOKIiGaJSqaDRaJgPMooZIXOYETKF+SBzmBEyhqN/U5XxLI3wR0RERERET86zVBvwTDVVORz8gQzR6XT49ddfmQ8yihkhc5gRMoX5IHOYETKGRTVVOfxDRYbwHzIyhxkhc5gRMoX5IHOYETKGRTURERERERFRObGoJiIiIiIiIionFtVU5ajVjCWVpFarUbt2beaDjGJGyBxmhExhPsgcZoSM4ejfVGU8SyP8ERERERHRk/Ms1Qb8moWqHA7+QIbodDpcvnyZ+SCjmBEyhxkhU5gPMocZIWNYVFOVwz9UZIhOp8Pvv//OfJBRzAiZw4yQKcwHmcOMkDEsqomIiIiIiIjKqVpld4CoWPHt/dnZ2ahWjdEkfQUFBbh37x7zQUYxI2QOM0KmMB9kDjPydGVnZwP4vxqhKmMaqMq4ffs2AKBBgwaV3BMiIiIiIqoK7t69C41GU9ndMIlFNVUZzs7OAIC0tLQq/4tDT192djbc3d1x7dq1Kj8CJFUOZoTMYUbIFOaDzGFGni4Rwd27d1G3bt3K7opZLKqpyih+5p9Go+EfKjLK0dGR+SCTmBEyhxkhU5gPMocZeXqelRNtHKiMiIiIiIiIqJxYVBMRERERERGVE4tqqjKsrKwQGhoKKyuryu4KVUHMB5nDjJA5zAiZwnyQOcwIGaOSZ2GMciIiIiIiIqIqiGeqiYiIiIiIiMqJRTURERERERFRObGoJiIiIiIiIionFtVERERERERE5cSimqqE8PBwaLVaWFtbw8fHB/Hx8ZXdJXoC9u/fj8DAQNStWxcqlQpbtmzRmy8i+OSTT+Dm5gYbGxv4+fnh4sWLem3u3LmDoKAgODo6wsnJCaNGjUJOTo5em9OnT+Oll16CtbU13N3dMW/evCe9a1RBwsLC8Pzzz8PBwQF16tTB66+/juTkZL02Dx48wIQJE1CzZk3Y29ujf//+uHHjhl6btLQ09O7dG7a2tqhTpw6mTp2KgoICvTaxsbFo3749rKys4OXlhcjIyCe9e/QnrVixAq1bt4ajoyMcHR3h6+uLnTt3KvOZDXrcnDlzoFKpMGnSJGUac/LXNmPGDKhUKr1Xs2bNlPnMB5WLEFWyqKgosbS0lNWrV8u5c+dk9OjR4uTkJDdu3KjsrlEF27Fjh3z88ccSHR0tAGTz5s168+fMmSMajUa2bNkip06dkr59+0qDBg0kNzdXaRMQECBt2rSRI0eOyIEDB8TLy0uGDh2qzM/KyhIXFxcJCgqSs2fPyrp168TGxkb+/e9/P63dpD/B399fIiIi5OzZs5KYmCi9evUSDw8PycnJUdqMHTtW3N3dZc+ePXL8+HF54YUXpFOnTsr8goICee6558TPz09OnjwpO3bskFq1asm0adOUNleuXBFbW1uZMmWKnD9/XpYtWyYWFhaya9eup7q/VDZbt26V7du3y4ULFyQ5OVn+8Y9/SPXq1eXs2bMiwmyQvvj4eNFqtdK6dWt59913lenMyV9baGiotGzZUtLT05XX77//rsxnPqg8WFRTpevYsaNMmDBBeV9YWCh169aVsLCwSuwVPWmPF9U6nU5cXV1l/vz5yrTMzEyxsrKSdevWiYjI+fPnBYAcO3ZMabNz505RqVTy22+/iYjI8uXLpUaNGvLw4UOlzYcffihNmzZ9wntET8LNmzcFgMTFxYlIUSaqV68uGzduVNokJSUJADl8+LCIFH15o1arJSMjQ2mzYsUKcXR0VHLxwQcfSMuWLfW2NXjwYPH393/Su0QVrEaNGrJy5Upmg/TcvXtXGjduLDExMdKlSxelqGZOKDQ0VNq0aWNwHvNB5cXLv6lS5eXlISEhAX5+fso0tVoNPz8/HD58uBJ7Rk9bSkoKMjIy9LKg0Wjg4+OjZOHw4cNwcnJChw4dlDZ+fn5Qq9U4evSo0ubll1+GpaWl0sbf3x/Jycn4448/ntLeUEXJysoCADg7OwMAEhISkJ+fr5eTZs2awcPDQy8nrVq1gouLi9LG398f2dnZOHfunNLm0XUUt+HfnWdHYWEhoqKicO/ePfj6+jIbpGfChAno3bt3ic+SOSEAuHjxIurWrYuGDRsiKCgIaWlpAJgPKj8W1VSpbt26hcLCQr0/TADg4uKCjIyMSuoVVYbiz9tUFjIyMlCnTh29+dWqVYOzs7NeG0PreHQb9GzQ6XSYNGkSOnfujOeeew5A0WdoaWkJJycnvbaP58RcBoy1yc7ORm5u7pPYHaogZ86cgb29PaysrDB27Fhs3rwZLVq0YDZIERUVhRMnTiAsLKzEPOaEfHx8EBkZiV27dmHFihVISUnBSy+9hLt37zIfVG7VKrsDREREhkyYMAFnz57FwYMHK7srVIU0bdoUiYmJyMrKwg8//IDg4GDExcVVdreoirh27RreffddxMTEwNraurK7Q1VQz549lZ9bt24NHx8feHp6YsOGDbCxsanEntGzjGeqqVLVqlULFhYWJUZVvHHjBlxdXSupV1QZij9vU1lwdXXFzZs39eYXFBTgzp07em0MrePRbVDVFxISgm3btmHfvn2oX7++Mt3V1RV5eXnIzMzUa/94TsxlwFgbR0dH/qeqirO0tISXlxe8vb0RFhaGNm3aYMmSJcwGASi6fPfmzZto3749qlWrhmrVqiEuLg5Lly5FtWrV4OLiwpyQHicnJzRp0gSXLl3i3xEqNxbVVKksLS3h7e2NPXv2KNN0Oh327NkDX1/fSuwZPW0NGjSAq6urXhays7Nx9OhRJQu+vr7IzMxEQkKC0mbv3r3Q6XTw8fFR2uzfvx/5+flKm5iYGDRt2hQ1atR4SntD5SUiCAkJwebNm7F37140aNBAb763tzeqV6+ul5Pk5GSkpaXp5eTMmTN6X8DExMTA0dERLVq0UNo8uo7iNvy78+zR6XR4+PAhs0EAgG7duuHMmTNITExUXh06dEBQUJDyM3NCj8rJycHly5fh5ubGvyNUfpU9UhpRVFSUWFlZSWRkpJw/f17efvttcXJy0htVkf433L17V06ePCknT54UALJw4UI5efKkXL16VUSKHqnl5OQkP/74o5w+fVpee+01g4/UateunRw9elQOHjwojRs31nukVmZmpri4uMiwYcPk7NmzEhUVJba2tnyk1jNi3LhxotFoJDY2Vu9xJ/fv31fajB07Vjw8PGTv3r1y/Phx8fX1FV9fX2V+8eNOevToIYmJibJr1y6pXbu2wcedTJ06VZKSkiQ8PJyPO3kGfPTRRxIXFycpKSly+vRp+eijj0SlUsnPP/8sIswGGfbo6N8izMlf3XvvvSexsbGSkpIihw4dEj8/P6lVq5bcvHlTRJgPKh8W1VQlLFu2TDw8PMTS0lI6duwoR44cqewu0ROwb98+AVDiFRwcLCJFj9WaPn26uLi4iJWVlXTr1k2Sk5P11nH79m0ZOnSo2Nvbi6Ojo4wYMULu3r2r1+bUqVPy4osvipWVldSrV0/mzJnztHaR/iRD+QAgERERSpvc3FwZP3681KhRQ2xtbaVfv36Snp6ut57U1FTp2bOn2NjYSK1ateS9996T/Px8vTb79u2Ttm3biqWlpTRs2FBvG1Q1jRw5Ujw9PcXS0lJq164t3bp1UwpqEWaDDHu8qGZO/toGDx4sbm5uYmlpKfXq1ZPBgwfLpUuXlPnMB5WHSkSkcs6RExERERERET3beE81ERERERERUTmxqCYiIiIiIiIqJxbVREREREREROXEopqIiIiIiIionFhUExEREREREZUTi2oiIiIiIiKicmJRTURERERERFROLKqJiIiIiIiIyolFNRERVWmRkZFwcnKq7G6USVXss0qlwpYtWyq7G/QXExsbC5VKhczMzDIvu2rVKvTo0cPgvOHDhxucPmTIECxYsKDM2yIi+jNYVBMRUYUZPnw4VCpViVdAQECpltdqtVi8eLHetMGDB+PChQtPoLf6nnYh/OjxsbOzQ+PGjTF8+HAkJCQ8tT48q4YPH47XX3+9VG0zMjLwzjvvoGHDhrCysoK7uzsCAwOxZ8+eCulLVfwCBSj6XVKpVIiKiioxr2XLllCpVIiMjKzQbb7yyiuYNGlShazrwYMHmD59OkJDQ8u03D//+U/MmjULWVlZFdIPIqLSYFFNREQVKiAgAOnp6XqvdevWlXt9NjY2qFOnTgX2sOqIiIhAeno6zp07h/DwcOTk5MDHxwdr1qyp7K79T0hNTYW3tzf27t2L+fPn48yZM9i1axe6du2KCRMmVHb3KkR+fr7Ree7u7oiIiNCbduTIEWRkZMDOzu5Jd+1P+eGHH+Do6IjOnTsr03JzczFx4kQ0bNgQa9euhVarRWBgIDIyMpQ2zz33HBo1aoTvvvuuMrpNRH9RLKqJiKhCWVlZwdXVVe9Vo0YNAICIYMaMGfDw8ICVlRXq1q2LiRMnAig6y3X16lVMnjxZOYMLlDwTOGPGDLRt2xarV6+Gh4cH7O3tMX78eBQWFmLevHlwdXVFnTp1MGvWLL1+LVy4EK1atYKdnR3c3d0xfvx45OTkACi6RHXEiBHIyspStj1jxgwAwMOHD/H++++jXr16sLOzg4+PD2JjY/XWHRkZCQ8PD9ja2qJfv364fft2qY6Vk5MTXF1dodVq0aNHD/zwww8ICgpCSEgI/vjjD6XdwYMH8dJLL8HGxgbu7u6YOHEi7t27p8zXarWYOXMmhg4dCjs7O9SrVw/h4eEmt33mzBm8+uqrsLGxQc2aNfH2228rx2P//v2oXr26XrECAJMmTcJLL72k7LOTkxO2bduGpk2bwtbWFgMGDMD9+/fxzTffQKvVokaNGpg4cSIKCwuVdZg7nsXr/emnn9C8eXPY29srX9QARZ//N998gx9//FH5rB7/PIqNHz8eKpUK8fHx6N+/P5o0aYKWLVtiypQpOHLkiNIuLS0Nr732Guzt7eHo6IhBgwbhxo0byvxTp06ha9eucHBwgKOjI7y9vXH8+HGTuXlccW7//e9/w93dHba2thg0aFCJM6orV65E8+bNYW1tjWbNmmH58uXKvNTUVKhUKqxfvx5dunSBtbU1vv/+eyOfMBAUFIS4uDhcu3ZNmbZ69WoEBQWhWrVqem3NHYPi/n/77bfQarXQaDQYMmQI7t69C6Do6oG4uDgsWbJEORapqanK8gkJCejQoQNsbW3RqVMnJCcnG+03AERFRSEwMFBv2uzZs7F+/XosW7YMffr0wXfffYeOHTsiLy9Pr11gYKDBM/RERE+MEBERVZDg4GB57bXXjM7fuHGjODo6yo4dO+Tq1aty9OhR+eqrr0RE5Pbt21K/fn357LPPJD09XdLT00VEJCIiQjQajbKO0NBQsbe3lwEDBsi5c+dk69atYmlpKf7+/vLOO+/IL7/8IqtXrxYAcuTIEWW5RYsWyd69eyUlJUX27NkjTZs2lXHjxomIyMOHD2Xx4sXi6OiobPvu3bsiIvLWW29Jp06dZP/+/XLp0iWZP3++WFlZyYULF0RE5MiRI6JWq2Xu3LmSnJwsS5YsEScnJ70+GwJANm/eXGL6yZMnBYCsX79eREQuXbokdnZ2smjRIrlw4YIcOnRI2rVrJ8OHD1eW8fT0FAcHBwkLC5Pk5GRZunSpWFhYyM8//2xwezk5OeLm5iZ/+9vf5MyZM7Jnzx5p0KCBBAcHK+2bNGki8+bNU97n5eVJrVq1ZPXq1crnUr16denevbucOHFC4uLipGbNmtKjRw8ZNGiQnDt3Tv7zn/+IpaWlREVFKesxdzyL1+vn5yfHjh2ThIQEad68ufz9738XEZG7d+/KoEGDJCAgQPmsHj58WOI43r59W1QqlcyePdvk51BYWCht27aVF198UY4fPy5HjhwRb29v6dKli9KmZcuW8sYbb0hSUpJcuHBBNmzYIImJiSZz87jQ0FCxs7OTV199VU6ePClxcXHi5eWl7JeIyHfffSdubm6yadMmuXLlimzatEmcnZ0lMjJSRERSUlIEgGi1WqXN9evXDW7P09NTFi1aJH379pWZM2eKiMi9e/fE0dFRTp48KRqNRiIiIkp9DIp/74ozs3//fnF1dZV//OMfIiKSmZkpvr6+Mnr0aOVYFBQUyL59+wSA+Pj4SGxsrJw7d05eeukl6dSpk8nPRaPR6OVGRKR3797y1ltviYjoZfVxO3fuFEtLS3nw4IHJbRARVRQW1UREVGGCg4PFwsJC7Ozs9F6zZs0SEZEFCxZIkyZNJC8vz+DyxYXAowwV1ba2tpKdna1M8/f3F61WK4WFhcq0pk2bSlhYmNG+bty4UWrWrGl0OyIiV69eFQsLC/ntt9/0pnfr1k2mTZsmIiJDhw6VXr166c0fPHhwuYvq3NxcASBz584VEZFRo0bJ22+/rdfmwIEDolarJTc3V0SKjltAQECJPvTs2dPg9r766iupUaOG5OTkKPO3b98uarVaMjIyRERk7ty50rx5c2X+pk2bxN7eXlkmIiJCAMilS5eUNmPGjBFbW1u9wtLf31/GjBkjIqU7nobWGx4eLi4uLsp7c1/eiIgcPXpUAEh0dLTJdj///LNYWFhIWlqaMu3cuXMCQOLj40VExMHBQSlsH2coN4aEhoaKhYWF/Prrr8q0nTt3ilqtVr5AatSokaxdu1ZvuZkzZ4qvr6+I/F9RvXjxYrPbK/5d2rJlizRq1Eh0Op1888030q5dOxERvaK6NMfA0O/d1KlTxcfHR3nfpUsXeffdd/X6UVxU7969W5m2fft2AaDk93F//PGHAJD9+/frTZ89e7bUqlVL1q1bJ0OHDjW676dOnRIAkpqaauIIERFVHF7+TUREFapr165ITEzUe40dOxYAMHDgQOTm5qJhw4YYPXo0Nm/ejIKCgjJvQ6vVwsHBQXnv4uKCFi1aQK1W6027efOm8n737t3o1q0b6tWrBwcHBwwbNgy3b9/G/fv3jW7nzJkzKCwsRJMmTWBvb6+84uLicPnyZQBAUlISfHx89Jbz9fUt8z4VExEAUC5/P3XqFCIjI/W27+/vD51Oh5SUFKPb9PX1RVJSksFtJCUloU2bNnr31Xbu3Bk6nU65LHf48OG4dOmScpl0ZGQkBg0apLeMra0tGjVqpLx3cXGBVquFvb293rTiz6E0x9PQet3c3PQ+y9IoPo7mJCUlwd3dHe7u7sq0Fi1awMnJSTl+U6ZMwVtvvQU/Pz/MmTNHr69l4eHhgXr16invfX19lWN+7949XL58GaNGjdI7Nv/6179KbK9Dhw6l3mbv3r2Rk5OD/fv3Y/Xq1Rg5cmSJNqU5BkDJ37uyfC6tW7fWWw6A0WVzc3MBANbW1nrTp06dig8++ACzZs1CVFQUmjVrhtmzZ5e4r9zGxgYATP5uExFVpGrmmxAREZWenZ0dvLy8DM5zd3dHcnIydu/ejZiYGIwfPx7z589HXFwcqlevXuptPN5WpVIZnKbT6QAU3Yvap08fjBs3DrNmzYKzszMOHjyIUaNGIS8vD7a2tga3k5OTAwsLCyQkJMDCwkJv3qOFY0UqLmIaNGig9GHMmDHKveeP8vDweCJ9AIA6deogMDAQERERaNCgAXbu3Fni3uWyfg6lPZ6G1lHaIrlY48aNoVKp8Msvv5RpOUNmzJiBv//979i+fTt27tyJ0NBQREVFoV+/fn963cWK72f/+uuvS3xJ8/ixKssgY9WqVcOwYcMQGhqKo0ePYvPmzeXuo6nPtizLFn9hZGzZmjVrQqVS6Y0rABTty9SpUzF16lQMGjQI/fr1w7vvvoucnBzMnj1baXfnzh0AQO3atUvVNyKiP4tFNRERPVU2NjYIDAxEYGAgJkyYgGbNmuHMmTNo3749LC0t9Qa1qigJCQnQ6XRYsGCBcjZ7w4YNem0Mbbtdu3YoLCzEzZs3lQG6Hte8eXMcPXpUb9qjg2CV1eLFi+Ho6Ag/Pz8AQPv27XH+/HmjX1QY2+aRI0fQvHlzo32OjIzEvXv3lALt0KFDUKvVaNq0qdLurbfewtChQ1G/fn00atRIbyTm8ijN8SyN0uTE2dkZ/v7+CA8Px8SJE0sUopmZmXByckLz5s1x7do1XLt2TTlTe/78eWRmZqJFixZK+yZNmqBJkyaYPHkyhg4dioiICPTr169MmU1LS8P169dRt25dAEWfUfExd3FxQd26dXHlyhUEBQWV5XCYNXLkSHz++ecYPHiwMmjgo0p7DMypqN9fS0tLtGjRAufPnzf6nGpbW1sMHToUx48fx4EDB/TmnT17FvXr10etWrX+dF+IiEqDl38TEVGFevjwITIyMvRet27dAlB0CfGqVatw9uxZXLlyBd999x1sbGzg6ekJoOjy0v379+O3335TlqkIXl5eyM/Px7Jly3DlyhV8++23+PLLL/XaaLVa5OTkYM+ePbh16xbu37+PJk2aICgoCG+++Saio6ORkpKC+Ph4hIWFYfv27QCAiRMnYteuXfj8889x8eJFfPHFF9i1a1ep+pWZmYmMjAxcvXoVMTExGDBgANauXYsVK1YoI55/+OGH+O9//4uQkBAkJibi4sWL+PHHHxESEqK3rkOHDmHevHm4cOECwsPDsXHjRrz77rsGtxsUFARra2sEBwfj7Nmz2LdvH9555x0MGzYMLi4uSjt/f384OjriX//6F0aMGFHaw21UaY5naWi1Wpw+fRrJycm4deuW0cdKhYeHo7CwEB07dsSmTZtw8eJFJCUlYenSpcrl8n5+fmjVqhWCgoJw4sQJxMfH480330SXLl3QoUMH5ObmIiQkBLGxsbh69SoOHTqEY8eOKV9YGMqNMcXH/NSpUzhw4AAmTpyIQYMGwdXVFQDw6aefIiwsDEuXLsWFCxdw5swZREREYOHChaU+NoY0b94ct27dKvF4rWLmjkFpabVaHD16FKmpqbh161apz2Ib4u/vj4MHD+pNCw0NxY4dO3D79m2ICI4fP44ff/wR3t7eeu0OHDhgtBgnInoiKveWbiIi+l8SHBwsAEq8mjZtKiIimzdvFh8fH3F0dBQ7Ozt54YUX9AYwOnz4sLRu3VqsrKyk+J8oQwOVtWnTpsR2Hx+46vFBkxYuXChubm5iY2Mj/v7+smbNGgEgf/zxh9Jm7NixUrNmTQEgoaGhIlI06vUnn3wiWq1WqlevLm5ubtKvXz85ffq0styqVaukfv36YmNjI4GBgfL555+XaqCy4pe1tbU0atRIgoODJSEhoUTb+Ph46d69u9jb24udnZ20bt1aGfxNpGhQqk8//VQGDhwotra24urqKkuWLCmxvUcHRjt9+rR07dpVrK2txdnZWUaPHm1w5Orp06eLhYVFiVGmDQ3QVZrPxtzxNLTezZs3y6P/Zbl586ZyPADIvn37SvS72PXr12XChAni6ekplpaWUq9ePenbt6/eMlevXpW+ffuKnZ2dODg4yMCBA5UB2x4+fChDhgwRd3d3sbS0lLp160pISIjeIFuGcvO44mOzfPlyqVu3rlhbW8uAAQPkzp07eu2+//57adu2rVhaWkqNGjXk5ZdfVgZbKx6o7OTJk0b3t5ihQf8e9ehAZeaOwaP9f9SiRYvE09NTeZ+cnCwvvPCC2NjYCABJSUlRBip79PeseIT7lJQUo/07d+6c2NjYSGZmpjJtzZo10qlTJ3FychKVSiUuLi4yatQovdzm5uaKRqORw4cPG103EVFFU4mU8SYlIiIiqlK0Wi0mTZqESZMmVfi6R40ahd9//x1bt26t8HX/lcyYMQNbtmxBYmJiZXflmTFw4EC0b98e06ZNKzFv+PDhiIyMLDF9xYoV2Lx5M37++een0EMioiK8/JuIiIhKyMrKwsGDB7F27Vq88847ld0d+guaP39+mQcErF69OpYtW/aEekREZBgHKiMiIqISXnvtNcTHx2Ps2LHo3r17ZXeH/oK0Wq3RL3QMnaUGigbXIyJ62nj5NxEREREREVE58fJvIiIiIiIionJiUU1ERERERERUTiyqiYiIiIiIiMqJRTURERERERFRObGoJiIiIiIiIionFtVERERERERE5cSimoiIiIiIiKicWFQTERERERERldP/Awu0t9kwqlyfAAAAAElFTkSuQmCC\n"
},
"metadata": {}
}
],
"source": [
"# Assuming fixed inputs for the calculation\n",
"input_tokens = 1000\n",
"output_tokens = 1000\n",
"requests_per_day = 1000\n",
"days_per_month = 30\n",
"\n",
"# Calculate the estimated deployment cost per month for each model\n",
"deployment_costs = {\n",
" model: (pricing['input_cost'] * input_tokens + pricing['output_cost'] * output_tokens)\n",
" * requests_per_day * days_per_month\n",
" for model, pricing in model_pricing.items()\n",
"}\n",
"\n",
"# Sort the models by deployment cost\n",
"sorted_models_by_cost = sorted(deployment_costs, key=deployment_costs.get)\n",
"\n",
"# Prepare data for the bar chart\n",
"models = [model for model in sorted_models_by_cost]\n",
"costs = [deployment_costs[model] for model in sorted_models_by_cost]\n",
"\n",
"# Create the bar chart\n",
"plt.figure(figsize=(10, 8))\n",
"plt.barh(models, costs, color='skyblue')\n",
"plt.xlabel('Estimated Deployment Cost per Month ($)')\n",
"plt.title('Estimated Monthly Deployment Cost Across Various LLMs')\n",
"plt.grid(axis='x', linestyle='--', alpha=0.7)\n",
"\n",
"# Show the values on the bars\n",
"for index, value in enumerate(costs):\n",
" plt.text(value, index, f\"${value:,.2f}\")\n",
"\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"source": [
"import plotly.express as px\n",
"import pandas as pd\n",
"\n",
"# Assuming deployment_costs contains your calculated costs\n",
"df = pd.DataFrame(list(deployment_costs.items()), columns=['Model', 'Monthly Deployment Cost'])\n",
"\n",
"# Generate a bar chart\n",
"fig = px.bar(df, x='Model', y='Monthly Deployment Cost', title='Monthly Deployment Cost by Model')\n",
"fig.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 542
},
"id": "CsbcwlxU9KBH",
"outputId": "4a0dc356-1aa1-4eba-87a8-7b015a94e185"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<html>\n",
"<head><meta charset=\"utf-8\" /></head>\n",
"<body>\n",
" <div> <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script> <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
" <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.24.1.min.js\"></script> <div id=\"88168792-d155-4ed6-8af7-a5ebb19140be\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"88168792-d155-4ed6-8af7-a5ebb19140be\")) { Plotly.newPlot( \"88168792-d155-4ed6-8af7-a5ebb19140be\", [{\"alignmentgroup\":\"True\",\"hovertemplate\":\"Model=%{x}\\u003cbr\\u003eMonthly Deployment Cost=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"\",\"marker\":{\"color\":\"#636efa\",\"pattern\":{\"shape\":\"\"}},\"name\":\"\",\"offsetgroup\":\"\",\"orientation\":\"v\",\"showlegend\":false,\"textposition\":\"auto\",\"x\":[\"GPT-4\",\"GPT-4 32K\",\"GPT-4 Turbo\",\"GPT-3.5 Instruct\",\"GPT-3.5\",\"Claude 3 Opus\",\"Claude 2\",\"Claude 3 Sonnet\",\"Claude Instant\",\"Claude 3 Haiku\",\"PaLM 2\",\"Gemini Pro\",\"Gemini Pro Vision\",\"Mistral 8x7B Instruct\",\"Mistral 7B Instruct\",\"Llama-2 70B Chat\",\"Code Llama\",\"Llama-2 13B Chat\"],\"xaxis\":\"x\",\"y\":[2700.0000000000005,5400.000000000001,1200.0,105.0,60.0,2700.0,960.0,540.0000000000001,95.99999999999999,45.0,29.4,19.8,19.8,21.599999999999998,10.200000000000001,62.400000000000006,46.80000000000001,17.4],\"yaxis\":\"y\",\"type\":\"bar\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Model\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Monthly Deployment Cost\"}},\"legend\":{\"tracegroupgap\":0},\"title\":{\"text\":\"Monthly Deployment Cost by Model\"},\"barmode\":\"relative\"}, {\"responsive\": true} ).then(function(){\n",
" \n",
"var gd = document.getElementById('88168792-d155-4ed6-8af7-a5ebb19140be');\n",
"var x = new MutationObserver(function (mutations, observer) {{\n",
" var display = window.getComputedStyle(gd).display;\n",
" if (!display || display === 'none') {{\n",
" console.log([gd, 'removed!']);\n",
" Plotly.purge(gd);\n",
" observer.disconnect();\n",
" }}\n",
"}});\n",
"\n",
"// Listen for the removal of the full notebook cells\n",
"var notebookContainer = gd.closest('#notebook-container');\n",
"if (notebookContainer) {{\n",
" x.observe(notebookContainer, {childList: true});\n",
"}}\n",
"\n",
"// Listen for the clearing of the current output cell\n",
"var outputEl = gd.closest('.output');\n",
"if (outputEl) {{\n",
" x.observe(outputEl, {childList: true});\n",
"}}\n",
"\n",
" }) }; </script> </div>\n",
"</body>\n",
"</html>"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"import plotly.express as px\n",
"import pandas as pd\n",
"\n",
"# Assuming fixed inputs for the calculation from your setup\n",
"input_tokens = 1000\n",
"output_tokens = 1000\n",
"requests_per_day = 1000\n",
"days_per_month = 30\n",
"\n",
"# Calculate the estimated deployment cost per month for each model\n",
"deployment_costs = {\n",
" model: (pricing['input_cost'] * input_tokens + pricing['output_cost'] * output_tokens)\n",
" * requests_per_day * days_per_month\n",
" for model, pricing in model_pricing.items()\n",
"}\n",
"\n",
"# Convert to DataFrame for Plotly\n",
"df_costs = pd.DataFrame(list(deployment_costs.items()), columns=['Model', 'Estimated Deployment Cost per Month'])\n",
"\n",
"# Create the bar chart using Plotly Express\n",
"fig = px.bar(df_costs.sort_values('Estimated Deployment Cost per Month'),\n",
" x='Estimated Deployment Cost per Month', y='Model', orientation='h',\n",
" color='Estimated Deployment Cost per Month',\n",
" color_continuous_scale='Blues',\n",
" title='Estimated Monthly Deployment Cost Across Various LLMs')\n",
"\n",
"# Customize the layout\n",
"fig.update_layout(xaxis_title='Estimated Deployment Cost per Month ($)',\n",
" yaxis_title='Model',\n",
" coloraxis_showscale=False)\n",
"\n",
"# Show plot\n",
"fig.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 542
},
"id": "8inw0Zgu954O",
"outputId": "2543fbf1-2abe-4c25-96fd-d7fd983456dc"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<html>\n",
"<head><meta charset=\"utf-8\" /></head>\n",
"<body>\n",
" <div> <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script> <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
" <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.24.1.min.js\"></script> <div id=\"c900b53e-b246-4036-8f64-57667d432617\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"c900b53e-b246-4036-8f64-57667d432617\")) { Plotly.newPlot( \"c900b53e-b246-4036-8f64-57667d432617\", [{\"alignmentgroup\":\"True\",\"hovertemplate\":\"Estimated Deployment Cost per Month=%{marker.color}\\u003cbr\\u003eModel=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"\",\"marker\":{\"color\":[10.200000000000001,17.4,19.8,19.8,21.599999999999998,29.4,45.0,46.80000000000001,60.0,62.400000000000006,95.99999999999999,105.0,540.0000000000001,960.0,1200.0,2700.0,2700.0000000000005,5400.000000000001],\"coloraxis\":\"coloraxis\",\"pattern\":{\"shape\":\"\"}},\"name\":\"\",\"offsetgroup\":\"\",\"orientation\":\"h\",\"showlegend\":false,\"textposition\":\"auto\",\"x\":[10.200000000000001,17.4,19.8,19.8,21.599999999999998,29.4,45.0,46.80000000000001,60.0,62.400000000000006,95.99999999999999,105.0,540.0000000000001,960.0,1200.0,2700.0,2700.0000000000005,5400.000000000001],\"xaxis\":\"x\",\"y\":[\"Mistral 7B Instruct\",\"Llama-2 13B Chat\",\"Gemini Pro Vision\",\"Gemini Pro\",\"Mistral 8x7B Instruct\",\"PaLM 2\",\"Claude 3 Haiku\",\"Code Llama\",\"GPT-3.5\",\"Llama-2 70B Chat\",\"Claude Instant\",\"GPT-3.5 Instruct\",\"Claude 3 Sonnet\",\"Claude 2\",\"GPT-4 Turbo\",\"Claude 3 Opus\",\"GPT-4\",\"GPT-4 32K\"],\"yaxis\":\"y\",\"type\":\"bar\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Estimated Deployment Cost per Month ($)\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Model\"}},\"coloraxis\":{\"colorbar\":{\"title\":{\"text\":\"Estimated Deployment Cost per Month\"}},\"colorscale\":[[0.0,\"rgb(247,251,255)\"],[0.125,\"rgb(222,235,247)\"],[0.25,\"rgb(198,219,239)\"],[0.375,\"rgb(158,202,225)\"],[0.5,\"rgb(107,174,214)\"],[0.625,\"rgb(66,146,198)\"],[0.75,\"rgb(33,113,181)\"],[0.875,\"rgb(8,81,156)\"],[1.0,\"rgb(8,48,107)\"]],\"showscale\":false},\"legend\":{\"tracegroupgap\":0},\"title\":{\"text\":\"Estimated Monthly Deployment Cost Across Various LLMs\"},\"barmode\":\"relative\"}, {\"responsive\": true} ).then(function(){\n",
" \n",
"var gd = document.getElementById('c900b53e-b246-4036-8f64-57667d432617');\n",
"var x = new MutationObserver(function (mutations, observer) {{\n",
" var display = window.getComputedStyle(gd).display;\n",
" if (!display || display === 'none') {{\n",
" console.log([gd, 'removed!']);\n",
" Plotly.purge(gd);\n",
" observer.disconnect();\n",
" }}\n",
"}});\n",
"\n",
"// Listen for the removal of the full notebook cells\n",
"var notebookContainer = gd.closest('#notebook-container');\n",
"if (notebookContainer) {{\n",
" x.observe(notebookContainer, {childList: true});\n",
"}}\n",
"\n",
"// Listen for the clearing of the current output cell\n",
"var outputEl = gd.closest('.output');\n",
"if (outputEl) {{\n",
" x.observe(outputEl, {childList: true});\n",
"}}\n",
"\n",
" }) }; </script> </div>\n",
"</body>\n",
"</html>"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"import plotly.express as px\n",
"import pandas as pd\n",
"\n",
"# Assuming fixed inputs for the calculation\n",
"input_tokens = 1000\n",
"output_tokens = 1000\n",
"requests_per_day = 1000\n",
"days_per_month = 30\n",
"\n",
"# Calculate the estimated deployment cost per month for each model\n",
"deployment_costs = {\n",
" model: (pricing['input_cost'] * input_tokens + pricing['output_cost'] * output_tokens)\n",
" * requests_per_day * days_per_month\n",
" for model, pricing in model_pricing.items()\n",
"}\n",
"\n",
"# Convert the calculated deployment costs into a DataFrame\n",
"df_deployment_costs = pd.DataFrame(list(deployment_costs.items()), columns=['Model', 'Monthly Deployment Cost'])\n",
"\n",
"# Sort the DataFrame by 'Monthly Deployment Cost' for better visualization\n",
"df_deployment_costs = df_deployment_costs.sort_values(by='Monthly Deployment Cost')\n",
"\n",
"# Generate a bar chart using Plotly Express\n",
"fig = px.bar(df_deployment_costs, x='Model', y='Monthly Deployment Cost',\n",
" title='Estimated Monthly Deployment Cost Across Various LLMs',\n",
" color='Monthly Deployment Cost', color_continuous_scale=px.colors.sequential.Viridis)\n",
"\n",
"# Customize the chart layout\n",
"fig.update_layout(xaxis_title='Model',\n",
" yaxis_title='Estimated Deployment Cost per Month ($)',\n",
" coloraxis_showscale=True)\n",
"\n",
"# Display the chart\n",
"fig.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 542
},
"id": "j5ePE3A49dbp",
"outputId": "071a06a8-987a-47bd-afab-bdd4af0242f5"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<html>\n",
"<head><meta charset=\"utf-8\" /></head>\n",
"<body>\n",
" <div> <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script> <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
" <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.24.1.min.js\"></script> <div id=\"095f6a03-836f-45d0-b497-7a9a50b3ffec\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"095f6a03-836f-45d0-b497-7a9a50b3ffec\")) { Plotly.newPlot( \"095f6a03-836f-45d0-b497-7a9a50b3ffec\", [{\"alignmentgroup\":\"True\",\"hovertemplate\":\"Model=%{x}\\u003cbr\\u003eMonthly Deployment Cost=%{marker.color}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"\",\"marker\":{\"color\":[10.200000000000001,17.4,19.8,19.8,21.599999999999998,29.4,45.0,46.80000000000001,60.0,62.400000000000006,95.99999999999999,105.0,540.0000000000001,960.0,1200.0,2700.0,2700.0000000000005,5400.000000000001],\"coloraxis\":\"coloraxis\",\"pattern\":{\"shape\":\"\"}},\"name\":\"\",\"offsetgroup\":\"\",\"orientation\":\"v\",\"showlegend\":false,\"textposition\":\"auto\",\"x\":[\"Mistral 7B Instruct\",\"Llama-2 13B Chat\",\"Gemini Pro Vision\",\"Gemini Pro\",\"Mistral 8x7B Instruct\",\"PaLM 2\",\"Claude 3 Haiku\",\"Code Llama\",\"GPT-3.5\",\"Llama-2 70B Chat\",\"Claude Instant\",\"GPT-3.5 Instruct\",\"Claude 3 Sonnet\",\"Claude 2\",\"GPT-4 Turbo\",\"Claude 3 Opus\",\"GPT-4\",\"GPT-4 32K\"],\"xaxis\":\"x\",\"y\":[10.200000000000001,17.4,19.8,19.8,21.599999999999998,29.4,45.0,46.80000000000001,60.0,62.400000000000006,95.99999999999999,105.0,540.0000000000001,960.0,1200.0,2700.0,2700.0000000000005,5400.000000000001],\"yaxis\":\"y\",\"type\":\"bar\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Model\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Estimated Deployment Cost per Month ($)\"}},\"coloraxis\":{\"colorbar\":{\"title\":{\"text\":\"Monthly Deployment Cost\"}},\"colorscale\":[[0.0,\"#440154\"],[0.1111111111111111,\"#482878\"],[0.2222222222222222,\"#3e4989\"],[0.3333333333333333,\"#31688e\"],[0.4444444444444444,\"#26828e\"],[0.5555555555555556,\"#1f9e89\"],[0.6666666666666666,\"#35b779\"],[0.7777777777777778,\"#6ece58\"],[0.8888888888888888,\"#b5de2b\"],[1.0,\"#fde725\"]],\"showscale\":true},\"legend\":{\"tracegroupgap\":0},\"title\":{\"text\":\"Estimated Monthly Deployment Cost Across Various LLMs\"},\"barmode\":\"relative\"}, {\"responsive\": true} ).then(function(){\n",
" \n",
"var gd = document.getElementById('095f6a03-836f-45d0-b497-7a9a50b3ffec');\n",
"var x = new MutationObserver(function (mutations, observer) {{\n",
" var display = window.getComputedStyle(gd).display;\n",
" if (!display || display === 'none') {{\n",
" console.log([gd, 'removed!']);\n",
" Plotly.purge(gd);\n",
" observer.disconnect();\n",
" }}\n",
"}});\n",
"\n",
"// Listen for the removal of the full notebook cells\n",
"var notebookContainer = gd.closest('#notebook-container');\n",
"if (notebookContainer) {{\n",
" x.observe(notebookContainer, {childList: true});\n",
"}}\n",
"\n",
"// Listen for the clearing of the current output cell\n",
"var outputEl = gd.closest('.output');\n",
"if (outputEl) {{\n",
" x.observe(outputEl, {childList: true});\n",
"}}\n",
"\n",
" }) }; </script> </div>\n",
"</body>\n",
"</html>"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"# Example 2: Pie Chart Visualization\n",
"import plotly.express as px\n",
"import pandas as pd\n",
"# Ensure model_pricing is defined as per your setup\n",
"\n",
"# Assuming fixed inputs for the calculation\n",
"input_tokens = 1000\n",
"output_tokens = 1000\n",
"requests_per_day = 1000\n",
"days_per_month = 30\n",
"\n",
"# Calculate the estimated deployment cost per month for each model\n",
"deployment_costs = {\n",
" model: (pricing['input_cost'] * input_tokens + pricing['output_cost'] * output_tokens)\n",
" * requests_per_day * days_per_month\n",
" for model, pricing in model_pricing.items()\n",
"}\n",
"\n",
"# Convert the calculated deployment costs into a DataFrame for visualization\n",
"df_deployment_costs = pd.DataFrame(list(deployment_costs.items()), columns=['Model', 'Monthly Deployment Cost'])\n",
"\n",
"# Generate a pie chart using Plotly Express\n",
"fig = px.pie(df_deployment_costs, names='Model', values='Monthly Deployment Cost',\n",
" title='Cost Distribution Among Models',\n",
" color_discrete_sequence=px.colors.sequential.RdBu)\n",
"\n",
"# Customize the chart layout for better readability\n",
"fig.update_traces(textposition='inside', textinfo='percent+label')\n",
"\n",
"# Display the chart\n",
"fig.show()\n",
"\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 542
},
"id": "WBUhhU5j9fbY",
"outputId": "d23dabae-72a0-48db-da77-290182975790"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<html>\n",
"<head><meta charset=\"utf-8\" /></head>\n",
"<body>\n",
" <div> <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script> <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
" <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.24.1.min.js\"></script> <div id=\"3a08c403-23a8-4a1d-9828-e2178c9a8fac\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"3a08c403-23a8-4a1d-9828-e2178c9a8fac\")) { Plotly.newPlot( \"3a08c403-23a8-4a1d-9828-e2178c9a8fac\", [{\"domain\":{\"x\":[0.0,1.0],\"y\":[0.0,1.0]},\"hovertemplate\":\"Model=%{label}\\u003cbr\\u003eMonthly Deployment Cost=%{value}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"labels\":[\"GPT-4\",\"GPT-4 32K\",\"GPT-4 Turbo\",\"GPT-3.5 Instruct\",\"GPT-3.5\",\"Claude 3 Opus\",\"Claude 2\",\"Claude 3 Sonnet\",\"Claude Instant\",\"Claude 3 Haiku\",\"PaLM 2\",\"Gemini Pro\",\"Gemini Pro Vision\",\"Mistral 8x7B Instruct\",\"Mistral 7B Instruct\",\"Llama-2 70B Chat\",\"Code Llama\",\"Llama-2 13B Chat\"],\"legendgroup\":\"\",\"name\":\"\",\"showlegend\":true,\"values\":[2700.0000000000005,5400.000000000001,1200.0,105.0,60.0,2700.0,960.0,540.0000000000001,95.99999999999999,45.0,29.4,19.8,19.8,21.599999999999998,10.200000000000001,62.400000000000006,46.80000000000001,17.4],\"type\":\"pie\",\"textinfo\":\"percent+label\",\"textposition\":\"inside\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"legend\":{\"tracegroupgap\":0},\"title\":{\"text\":\"Cost Distribution Among Models\"},\"piecolorway\":[\"rgb(103,0,31)\",\"rgb(178,24,43)\",\"rgb(214,96,77)\",\"rgb(244,165,130)\",\"rgb(253,219,199)\",\"rgb(247,247,247)\",\"rgb(209,229,240)\",\"rgb(146,197,222)\",\"rgb(67,147,195)\",\"rgb(33,102,172)\",\"rgb(5,48,97)\"]}, {\"responsive\": true} ).then(function(){\n",
" \n",
"var gd = document.getElementById('3a08c403-23a8-4a1d-9828-e2178c9a8fac');\n",
"var x = new MutationObserver(function (mutations, observer) {{\n",
" var display = window.getComputedStyle(gd).display;\n",
" if (!display || display === 'none') {{\n",
" console.log([gd, 'removed!']);\n",
" Plotly.purge(gd);\n",
" observer.disconnect();\n",
" }}\n",
"}});\n",
"\n",
"// Listen for the removal of the full notebook cells\n",
"var notebookContainer = gd.closest('#notebook-container');\n",
"if (notebookContainer) {{\n",
" x.observe(notebookContainer, {childList: true});\n",
"}}\n",
"\n",
"// Listen for the clearing of the current output cell\n",
"var outputEl = gd.closest('.output');\n",
"if (outputEl) {{\n",
" x.observe(outputEl, {childList: true});\n",
"}}\n",
"\n",
" }) }; </script> </div>\n",
"</body>\n",
"</html>"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"import plotly.express as px\n",
"import pandas as pd\n",
"\n",
"# Assuming the initial deployment costs calculation is in place\n",
"initial_deployment_costs = {\n",
" model: (pricing['input_cost'] * input_tokens + pricing['output_cost'] * output_tokens)\n",
" * requests_per_day * days_per_month\n",
" for model, pricing in model_pricing.items()\n",
"}\n",
"\n",
"# Simulate a 5% monthly increase in deployment costs\n",
"months = [\"January\", \"February\", \"March\"]\n",
"growth_rate = 0.05\n",
"models = list(model_pricing.keys())\n",
"\n",
"# Prepare data with temporal dimension\n",
"data = {'Month': months}\n",
"for model in models:\n",
" monthly_costs = [initial_deployment_costs[model]]\n",
" for i in range(1, len(months)):\n",
" # Increase by 5% from the previous month\n",
" monthly_costs.append(monthly_costs[i-1] * (1 + growth_rate))\n",
" data[model] = monthly_costs\n",
"\n",
"df = pd.DataFrame(data)\n",
"\n",
"# Melt the DataFrame for Plotly Express\n",
"df_melted = df.melt(id_vars=[\"Month\"], var_name=\"Model\", value_name=\"Deployment Cost\")\n",
"\n",
"# Generate a line chart\n",
"fig = px.line(df_melted, x='Month', y='Deployment Cost', color='Model',\n",
" title='Simulated Monthly Deployment Costs Over Time',\n",
" markers=True, labels={\"Deployment Cost\": \"Estimated Deployment Cost ($)\"})\n",
"\n",
"fig.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 542
},
"id": "hicl2vxH9h4_",
"outputId": "cc2c32f9-92f2-4f4d-b44c-926c23e37ee4"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<html>\n",
"<head><meta charset=\"utf-8\" /></head>\n",
"<body>\n",
" <div> <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script> <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
" <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.24.1.min.js\"></script> <div id=\"b06d6178-7a13-41c1-a6d5-00caf02ebeed\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"b06d6178-7a13-41c1-a6d5-00caf02ebeed\")) { Plotly.newPlot( \"b06d6178-7a13-41c1-a6d5-00caf02ebeed\", [{\"hovertemplate\":\"Model=GPT-4\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"GPT-4\",\"line\":{\"color\":\"#636efa\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"GPT-4\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[2700.0000000000005,2835.0000000000005,2976.7500000000005],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=GPT-4 32K\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"GPT-4 32K\",\"line\":{\"color\":\"#EF553B\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"GPT-4 32K\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[5400.000000000001,5670.000000000001,5953.500000000001],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=GPT-4 Turbo\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"GPT-4 Turbo\",\"line\":{\"color\":\"#00cc96\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"GPT-4 Turbo\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[1200.0,1260.0,1323.0],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=GPT-3.5 Instruct\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"GPT-3.5 Instruct\",\"line\":{\"color\":\"#ab63fa\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"GPT-3.5 Instruct\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[105.0,110.25,115.7625],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=GPT-3.5\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"GPT-3.5\",\"line\":{\"color\":\"#FFA15A\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"GPT-3.5\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[60.0,63.0,66.15],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=Claude 3 Opus\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Claude 3 Opus\",\"line\":{\"color\":\"#19d3f3\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"Claude 3 Opus\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[2700.0,2835.0,2976.75],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=Claude 2\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Claude 2\",\"line\":{\"color\":\"#FF6692\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"Claude 2\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[960.0,1008.0,1058.4],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=Claude 3 Sonnet\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Claude 3 Sonnet\",\"line\":{\"color\":\"#B6E880\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"Claude 3 Sonnet\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[540.0000000000001,567.0000000000001,595.3500000000001],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=Claude Instant\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Claude Instant\",\"line\":{\"color\":\"#FF97FF\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"Claude Instant\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[95.99999999999999,100.79999999999998,105.83999999999999],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=Claude 3 Haiku\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Claude 3 Haiku\",\"line\":{\"color\":\"#FECB52\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"Claude 3 Haiku\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[45.0,47.25,49.612500000000004],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=PaLM 2\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"PaLM 2\",\"line\":{\"color\":\"#636efa\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"PaLM 2\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[29.4,30.87,32.4135],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=Gemini Pro\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Gemini Pro\",\"line\":{\"color\":\"#EF553B\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"Gemini Pro\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[19.8,20.790000000000003,21.829500000000003],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=Gemini Pro Vision\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Gemini Pro Vision\",\"line\":{\"color\":\"#00cc96\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"Gemini Pro Vision\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[19.8,20.790000000000003,21.829500000000003],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=Mistral 8x7B Instruct\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Mistral 8x7B Instruct\",\"line\":{\"color\":\"#ab63fa\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"Mistral 8x7B Instruct\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[21.599999999999998,22.68,23.814],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=Mistral 7B Instruct\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Mistral 7B Instruct\",\"line\":{\"color\":\"#FFA15A\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"Mistral 7B Instruct\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[10.200000000000001,10.71,11.245500000000002],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=Llama-2 70B Chat\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Llama-2 70B Chat\",\"line\":{\"color\":\"#19d3f3\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"Llama-2 70B Chat\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[62.400000000000006,65.52000000000001,68.79600000000002],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=Code Llama\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Code Llama\",\"line\":{\"color\":\"#FF6692\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"Code Llama\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[46.80000000000001,49.140000000000015,51.597000000000016],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"Model=Llama-2 13B Chat\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eEstimated Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Llama-2 13B Chat\",\"line\":{\"color\":\"#B6E880\",\"dash\":\"solid\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"markers+lines\",\"name\":\"Llama-2 13B Chat\",\"orientation\":\"v\",\"showlegend\":true,\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[17.4,18.27,19.1835],\"yaxis\":\"y\",\"type\":\"scatter\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Month\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Estimated Deployment Cost ($)\"}},\"legend\":{\"title\":{\"text\":\"Model\"},\"tracegroupgap\":0},\"title\":{\"text\":\"Simulated Monthly Deployment Costs Over Time\"}}, {\"responsive\": true} ).then(function(){\n",
" \n",
"var gd = document.getElementById('b06d6178-7a13-41c1-a6d5-00caf02ebeed');\n",
"var x = new MutationObserver(function (mutations, observer) {{\n",
" var display = window.getComputedStyle(gd).display;\n",
" if (!display || display === 'none') {{\n",
" console.log([gd, 'removed!']);\n",
" Plotly.purge(gd);\n",
" observer.disconnect();\n",
" }}\n",
"}});\n",
"\n",
"// Listen for the removal of the full notebook cells\n",
"var notebookContainer = gd.closest('#notebook-container');\n",
"if (notebookContainer) {{\n",
" x.observe(notebookContainer, {childList: true});\n",
"}}\n",
"\n",
"// Listen for the clearing of the current output cell\n",
"var outputEl = gd.closest('.output');\n",
"if (outputEl) {{\n",
" x.observe(outputEl, {childList: true});\n",
"}}\n",
"\n",
" }) }; </script> </div>\n",
"</body>\n",
"</html>"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"import plotly.express as px\n",
"import pandas as pd\n",
"\n",
"# Assuming data preparation as before with a simulated monthly growth\n",
"months = [\"January\", \"February\", \"March\"]\n",
"growth_rate = 0.05\n",
"models = [\"GPT-4\", \"GPT-4 Turbo\"] # Selected models for simplicity\n",
"\n",
"# Preparing data\n",
"data = {'Month': months}\n",
"for model in models:\n",
" monthly_costs = [initial_deployment_costs[model]]\n",
" for i in range(1, len(months)):\n",
" monthly_costs.append(monthly_costs[-1] * (1 + growth_rate)) # Simulate growth\n",
" data[model] = monthly_costs\n",
"\n",
"df = pd.DataFrame(data)\n",
"df_melted = df.melt(id_vars=[\"Month\"], var_name=\"Model\", value_name=\"Deployment Cost\")\n",
"\n",
"# Generate cumulative area chart\n",
"fig = px.area(df_melted, x=\"Month\", y=\"Deployment Cost\", color=\"Model\",\n",
" title=\"Cumulative Deployment Costs Over Time\",\n",
" labels={\"Deployment Cost\": \"Cumulative Deployment Cost ($)\"})\n",
"fig.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 542
},
"id": "7A50iqwP_dCM",
"outputId": "af178131-c515-4012-ed13-9ba5be0e9463"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<html>\n",
"<head><meta charset=\"utf-8\" /></head>\n",
"<body>\n",
" <div> <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script> <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
" <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.24.1.min.js\"></script> <div id=\"0af30562-9a87-4be7-9454-58e20b806aaf\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"0af30562-9a87-4be7-9454-58e20b806aaf\")) { Plotly.newPlot( \"0af30562-9a87-4be7-9454-58e20b806aaf\", [{\"fillpattern\":{\"shape\":\"\"},\"hovertemplate\":\"Model=GPT-4\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eCumulative Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"GPT-4\",\"line\":{\"color\":\"#636efa\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"lines\",\"name\":\"GPT-4\",\"orientation\":\"v\",\"showlegend\":true,\"stackgroup\":\"1\",\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[2700.0000000000005,2835.0000000000005,2976.7500000000005],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"fillpattern\":{\"shape\":\"\"},\"hovertemplate\":\"Model=GPT-4 Turbo\\u003cbr\\u003eMonth=%{x}\\u003cbr\\u003eCumulative Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"GPT-4 Turbo\",\"line\":{\"color\":\"#EF553B\"},\"marker\":{\"symbol\":\"circle\"},\"mode\":\"lines\",\"name\":\"GPT-4 Turbo\",\"orientation\":\"v\",\"showlegend\":true,\"stackgroup\":\"1\",\"x\":[\"January\",\"February\",\"March\"],\"xaxis\":\"x\",\"y\":[1200.0,1260.0,1323.0],\"yaxis\":\"y\",\"type\":\"scatter\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Month\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Cumulative Deployment Cost ($)\"}},\"legend\":{\"title\":{\"text\":\"Model\"},\"tracegroupgap\":0},\"title\":{\"text\":\"Cumulative Deployment Costs Over Time\"}}, {\"responsive\": true} ).then(function(){\n",
" \n",
"var gd = document.getElementById('0af30562-9a87-4be7-9454-58e20b806aaf');\n",
"var x = new MutationObserver(function (mutations, observer) {{\n",
" var display = window.getComputedStyle(gd).display;\n",
" if (!display || display === 'none') {{\n",
" console.log([gd, 'removed!']);\n",
" Plotly.purge(gd);\n",
" observer.disconnect();\n",
" }}\n",
"}});\n",
"\n",
"// Listen for the removal of the full notebook cells\n",
"var notebookContainer = gd.closest('#notebook-container');\n",
"if (notebookContainer) {{\n",
" x.observe(notebookContainer, {childList: true});\n",
"}}\n",
"\n",
"// Listen for the clearing of the current output cell\n",
"var outputEl = gd.closest('.output');\n",
"if (outputEl) {{\n",
" x.observe(outputEl, {childList: true});\n",
"}}\n",
"\n",
" }) }; </script> </div>\n",
"</body>\n",
"</html>"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"import plotly.express as px\n",
"import pandas as pd\n",
"\n",
"# Prepare a DataFrame with costs by varying token quantities\n",
"token_quantities = [500, 1000, 1500, 2000]\n",
"model = \"GPT-4\" # Example model\n",
"\n",
"data = {\n",
" \"Tokens\": [],\n",
" \"Monthly Deployment Cost\": []\n",
"}\n",
"\n",
"for tokens in token_quantities:\n",
" cost = (model_pricing[model]['input_cost'] * tokens + model_pricing[model]['output_cost'] * tokens) * requests_per_day * days_per_month\n",
" data[\"Tokens\"].append(tokens)\n",
" data[\"Monthly Deployment Cost\"].append(cost)\n",
"\n",
"df = pd.DataFrame(data)\n",
"\n",
"# Generate scatter plot\n",
"fig = px.scatter(df, x=\"Tokens\", y=\"Monthly Deployment Cost\",\n",
" title=f\"Cost Efficiency for {model}\",\n",
" labels={\"Monthly Deployment Cost\": \"Monthly Deployment Cost ($)\", \"Tokens\": \"Number of Tokens\"},\n",
" trendline=\"ols\") # Ordinary Least Squares regression line\n",
"fig.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 542
},
"id": "DzOvuVWI_fET",
"outputId": "31776fd4-046b-4887-8c08-74c503fdd588"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<html>\n",
"<head><meta charset=\"utf-8\" /></head>\n",
"<body>\n",
" <div> <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script> <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
" <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.24.1.min.js\"></script> <div id=\"99118332-d942-4b84-8596-8d5686728fd4\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"99118332-d942-4b84-8596-8d5686728fd4\")) { Plotly.newPlot( \"99118332-d942-4b84-8596-8d5686728fd4\", [{\"hovertemplate\":\"Number of Tokens=%{x}\\u003cbr\\u003eMonthly Deployment Cost ($)=%{y}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"\",\"marker\":{\"color\":\"#636efa\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"\",\"orientation\":\"v\",\"showlegend\":false,\"x\":[500,1000,1500,2000],\"xaxis\":\"x\",\"y\":[1350.0000000000002,2700.0000000000005,4050.0,5400.000000000001],\"yaxis\":\"y\",\"type\":\"scatter\"},{\"hovertemplate\":\"\\u003cb\\u003eOLS trendline\\u003c\\u002fb\\u003e\\u003cbr\\u003eMonthly Deployment Cost = 2.7 * Tokens + -2.27374e-13\\u003cbr\\u003eR\\u003csup\\u003e2\\u003c\\u002fsup\\u003e=1.000000\\u003cbr\\u003e\\u003cbr\\u003eNumber of Tokens=%{x}\\u003cbr\\u003eMonthly Deployment Cost ($)=%{y} \\u003cb\\u003e(trend)\\u003c\\u002fb\\u003e\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"\",\"marker\":{\"color\":\"#636efa\",\"symbol\":\"circle\"},\"mode\":\"lines\",\"name\":\"\",\"showlegend\":false,\"x\":[500,1000,1500,2000],\"xaxis\":\"x\",\"y\":[1349.9999999999995,2699.999999999999,4049.999999999999,5399.999999999999],\"yaxis\":\"y\",\"type\":\"scatter\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Number of Tokens\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Monthly Deployment Cost ($)\"}},\"legend\":{\"tracegroupgap\":0},\"title\":{\"text\":\"Cost Efficiency for GPT-4\"}}, {\"responsive\": true} ).then(function(){\n",
" \n",
"var gd = document.getElementById('99118332-d942-4b84-8596-8d5686728fd4');\n",
"var x = new MutationObserver(function (mutations, observer) {{\n",
" var display = window.getComputedStyle(gd).display;\n",
" if (!display || display === 'none') {{\n",
" console.log([gd, 'removed!']);\n",
" Plotly.purge(gd);\n",
" observer.disconnect();\n",
" }}\n",
"}});\n",
"\n",
"// Listen for the removal of the full notebook cells\n",
"var notebookContainer = gd.closest('#notebook-container');\n",
"if (notebookContainer) {{\n",
" x.observe(notebookContainer, {childList: true});\n",
"}}\n",
"\n",
"// Listen for the clearing of the current output cell\n",
"var outputEl = gd.closest('.output');\n",
"if (outputEl) {{\n",
" x.observe(outputEl, {childList: true});\n",
"}}\n",
"\n",
" }) }; </script> </div>\n",
"</body>\n",
"</html>"
]
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"# 3D views"
],
"metadata": {
"id": "dG4iV7ur_yw_"
}
},
{
"cell_type": "code",
"source": [
"import plotly.express as px\n",
"import pandas as pd\n",
"\n",
"# Prepare a DataFrame for 3D visualization\n",
"data = {\n",
" \"Input Tokens\": [500, 1000, 1500],\n",
" \"Output Tokens\": [1000, 1500, 2000],\n",
" \"Monthly Deployment Cost\": []\n",
"}\n",
"\n",
"model = \"GPT-4 Turbo\" # Example model\n",
"for i, o in zip(data[\"Input Tokens\"], data[\"Output Tokens\"]):\n",
" cost = (model_pricing[model]['input_cost'] * i + model_pricing[model]['output_cost'] * o) * requests_per_day * days_per_month\n",
" data[\"Monthly Deployment Cost\"].append(cost)\n",
"\n",
"df = pd.DataFrame(data)\n",
"\n",
"# Generate 3D scatter plot\n",
"fig = px.scatter_3d(df, x=\"Input Tokens\", y=\"Output Tokens\", z=\"Monthly Deployment Cost\",\n",
" title=f\"Cost Analysis for {model}\",\n",
" labels={\"Monthly Deployment Cost\": \"Cost ($)\", \"Input Tokens\": \"Input Tokens\", \"Output Tokens\": \"Output Tokens\"})\n",
"fig.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 542
},
"id": "wIpLzvWc_o3-",
"outputId": "a7d0393f-805a-499a-c970-c76e3772777d"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<html>\n",
"<head><meta charset=\"utf-8\" /></head>\n",
"<body>\n",
" <div> <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script> <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
" <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.24.1.min.js\"></script> <div id=\"5fc560ba-36fc-49d9-99b4-32205e52f734\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"5fc560ba-36fc-49d9-99b4-32205e52f734\")) { Plotly.newPlot( \"5fc560ba-36fc-49d9-99b4-32205e52f734\", [{\"hovertemplate\":\"Input Tokens=%{x}\\u003cbr\\u003eOutput Tokens=%{y}\\u003cbr\\u003eCost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"\",\"marker\":{\"color\":\"#636efa\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"\",\"scene\":\"scene\",\"showlegend\":false,\"x\":[500,1000,1500],\"y\":[1000,1500,2000],\"z\":[1050.0,1650.0,2250.0000000000005],\"type\":\"scatter3d\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"scene\":{\"domain\":{\"x\":[0.0,1.0],\"y\":[0.0,1.0]},\"xaxis\":{\"title\":{\"text\":\"Input Tokens\"}},\"yaxis\":{\"title\":{\"text\":\"Output Tokens\"}},\"zaxis\":{\"title\":{\"text\":\"Cost ($)\"}}},\"legend\":{\"tracegroupgap\":0},\"title\":{\"text\":\"Cost Analysis for GPT-4 Turbo\"}}, {\"responsive\": true} ).then(function(){\n",
" \n",
"var gd = document.getElementById('5fc560ba-36fc-49d9-99b4-32205e52f734');\n",
"var x = new MutationObserver(function (mutations, observer) {{\n",
" var display = window.getComputedStyle(gd).display;\n",
" if (!display || display === 'none') {{\n",
" console.log([gd, 'removed!']);\n",
" Plotly.purge(gd);\n",
" observer.disconnect();\n",
" }}\n",
"}});\n",
"\n",
"// Listen for the removal of the full notebook cells\n",
"var notebookContainer = gd.closest('#notebook-container');\n",
"if (notebookContainer) {{\n",
" x.observe(notebookContainer, {childList: true});\n",
"}}\n",
"\n",
"// Listen for the clearing of the current output cell\n",
"var outputEl = gd.closest('.output');\n",
"if (outputEl) {{\n",
" x.observe(outputEl, {childList: true});\n",
"}}\n",
"\n",
" }) }; </script> </div>\n",
"</body>\n",
"</html>"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"import plotly.express as px\n",
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"# Simulate growth in requests over three months\n",
"months = [\"January\", \"February\", \"March\"]\n",
"growth_rates = np.linspace(0.05, 0.15, len(months)) # Example growth rates from 5% to 15%\n",
"models = [\"GPT-4\", \"GPT-4 Turbo\"] # Selected models for simplicity\n",
"\n",
"data = {\n",
" \"Month\": [],\n",
" \"Model\": [],\n",
" \"Growth Rate\": [],\n",
" \"Cost\": []\n",
"}\n",
"\n",
"for month, rate in zip(months, growth_rates):\n",
" for model in models:\n",
" cost = deployment_costs[model] * (1 + rate)\n",
" data[\"Month\"].extend([month])\n",
" data[\"Model\"].extend([model])\n",
" data[\"Growth Rate\"].extend([rate])\n",
" data[\"Cost\"].extend([cost])\n",
"\n",
"df = pd.DataFrame(data)\n",
"\n",
"# Generate 3D visualization\n",
"fig = px.scatter_3d(df, x='Month', y='Model', z='Cost', color='Growth Rate',\n",
" title='Deployment Cost Over Time with Scaling Usage',\n",
" labels={'Cost': 'Cost ($)', 'Growth Rate': 'Monthly Growth Rate'})\n",
"fig.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 542
},
"id": "agpycuVW_7Zk",
"outputId": "9aa1690d-6f53-4825-bf7a-bfb7f9284891"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<html>\n",
"<head><meta charset=\"utf-8\" /></head>\n",
"<body>\n",
" <div> <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script> <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
" <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.24.1.min.js\"></script> <div id=\"ccb152ee-17f1-4893-a087-919dd31ab2ca\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"ccb152ee-17f1-4893-a087-919dd31ab2ca\")) { Plotly.newPlot( \"ccb152ee-17f1-4893-a087-919dd31ab2ca\", [{\"hovertemplate\":\"Month=%{x}\\u003cbr\\u003eModel=%{y}\\u003cbr\\u003eCost ($)=%{z}\\u003cbr\\u003eMonthly Growth Rate=%{marker.color}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"\",\"marker\":{\"color\":[0.05,0.05,0.1,0.1,0.15,0.15],\"coloraxis\":\"coloraxis\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"\",\"scene\":\"scene\",\"showlegend\":false,\"x\":[\"January\",\"January\",\"February\",\"February\",\"March\",\"March\"],\"y\":[\"GPT-4\",\"GPT-4 Turbo\",\"GPT-4\",\"GPT-4 Turbo\",\"GPT-4\",\"GPT-4 Turbo\"],\"z\":[2835.0000000000005,1260.0,2970.000000000001,1320.0,3105.0000000000005,1380.0],\"type\":\"scatter3d\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"scene\":{\"domain\":{\"x\":[0.0,1.0],\"y\":[0.0,1.0]},\"xaxis\":{\"title\":{\"text\":\"Month\"}},\"yaxis\":{\"title\":{\"text\":\"Model\"}},\"zaxis\":{\"title\":{\"text\":\"Cost ($)\"}}},\"coloraxis\":{\"colorbar\":{\"title\":{\"text\":\"Monthly Growth Rate\"}},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]},\"legend\":{\"tracegroupgap\":0},\"title\":{\"text\":\"Deployment Cost Over Time with Scaling Usage\"}}, {\"responsive\": true} ).then(function(){\n",
" \n",
"var gd = document.getElementById('ccb152ee-17f1-4893-a087-919dd31ab2ca');\n",
"var x = new MutationObserver(function (mutations, observer) {{\n",
" var display = window.getComputedStyle(gd).display;\n",
" if (!display || display === 'none') {{\n",
" console.log([gd, 'removed!']);\n",
" Plotly.purge(gd);\n",
" observer.disconnect();\n",
" }}\n",
"}});\n",
"\n",
"// Listen for the removal of the full notebook cells\n",
"var notebookContainer = gd.closest('#notebook-container');\n",
"if (notebookContainer) {{\n",
" x.observe(notebookContainer, {childList: true});\n",
"}}\n",
"\n",
"// Listen for the clearing of the current output cell\n",
"var outputEl = gd.closest('.output');\n",
"if (outputEl) {{\n",
" x.observe(outputEl, {childList: true});\n",
"}}\n",
"\n",
" }) }; </script> </div>\n",
"</body>\n",
"</html>"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"import plotly.express as px\n",
"import pandas as pd\n",
"\n",
"# Assuming deployment_costs and model_pricing are defined\n",
"data = {\n",
" \"Model\": [],\n",
" \"Input Tokens Cost\": [],\n",
" \"Output Tokens Cost\": [],\n",
" \"Total Monthly Cost\": []\n",
"}\n",
"\n",
"for model, pricing in model_pricing.items():\n",
" input_cost = pricing['input_cost'] * input_tokens\n",
" output_cost = pricing['output_cost'] * output_tokens\n",
" total_cost = deployment_costs[model]\n",
" data[\"Model\"].append(model)\n",
" data[\"Input Tokens Cost\"].append(input_cost)\n",
" data[\"Output Tokens Cost\"].append(output_cost)\n",
" data[\"Total Monthly Cost\"].append(total_cost)\n",
"\n",
"df = pd.DataFrame(data)\n",
"\n",
"# Generate 3D scatter plot\n",
"fig = px.scatter_3d(df, x='Input Tokens Cost', y='Output Tokens Cost', z='Total Monthly Cost', color='Model',\n",
" title='Input vs. Output Token Costs Across Models',\n",
" labels={'Input Tokens Cost': 'Input Tokens Cost ($)', 'Output Tokens Cost': 'Output Tokens Cost ($)', 'Total Monthly Cost': 'Total Cost ($)'})\n",
"fig.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 542
},
"id": "rpReh2rkAQv-",
"outputId": "ba5d6367-74b3-46f0-cabf-11d24b7a8df5"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<html>\n",
"<head><meta charset=\"utf-8\" /></head>\n",
"<body>\n",
" <div> <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script> <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
" <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.24.1.min.js\"></script> <div id=\"73b43da4-aef6-4d0f-9165-41bf13506bfa\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"73b43da4-aef6-4d0f-9165-41bf13506bfa\")) { Plotly.newPlot( \"73b43da4-aef6-4d0f-9165-41bf13506bfa\", [{\"hovertemplate\":\"Model=GPT-4\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"GPT-4\",\"marker\":{\"color\":\"#636efa\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"GPT-4\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.030000000000000002],\"y\":[0.060000000000000005],\"z\":[2700.0000000000005],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=GPT-4 32K\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"GPT-4 32K\",\"marker\":{\"color\":\"#EF553B\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"GPT-4 32K\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.060000000000000005],\"y\":[0.12000000000000001],\"z\":[5400.000000000001],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=GPT-4 Turbo\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"GPT-4 Turbo\",\"marker\":{\"color\":\"#00cc96\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"GPT-4 Turbo\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.01],\"y\":[0.030000000000000002],\"z\":[1200.0],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=GPT-3.5 Instruct\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"GPT-3.5 Instruct\",\"marker\":{\"color\":\"#ab63fa\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"GPT-3.5 Instruct\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.0015],\"y\":[0.002],\"z\":[105.0],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=GPT-3.5\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"GPT-3.5\",\"marker\":{\"color\":\"#FFA15A\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"GPT-3.5\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.0005],\"y\":[0.0015],\"z\":[60.0],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=Claude 3 Opus\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Claude 3 Opus\",\"marker\":{\"color\":\"#19d3f3\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"Claude 3 Opus\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.015000000000000001],\"y\":[0.075],\"z\":[2700.0],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=Claude 2\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Claude 2\",\"marker\":{\"color\":\"#FF6692\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"Claude 2\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.008],\"y\":[0.024],\"z\":[960.0],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=Claude 3 Sonnet\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Claude 3 Sonnet\",\"marker\":{\"color\":\"#B6E880\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"Claude 3 Sonnet\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.003],\"y\":[0.015000000000000001],\"z\":[540.0000000000001],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=Claude Instant\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Claude Instant\",\"marker\":{\"color\":\"#FF97FF\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"Claude Instant\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.0008],\"y\":[0.0024],\"z\":[95.99999999999999],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=Claude 3 Haiku\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Claude 3 Haiku\",\"marker\":{\"color\":\"#FECB52\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"Claude 3 Haiku\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.00025],\"y\":[0.00125],\"z\":[45.0],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=PaLM 2\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"PaLM 2\",\"marker\":{\"color\":\"#636efa\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"PaLM 2\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.00033],\"y\":[0.00065],\"z\":[29.4],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=Gemini Pro\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Gemini Pro\",\"marker\":{\"color\":\"#EF553B\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"Gemini Pro\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.00017],\"y\":[0.00049],\"z\":[19.8],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=Gemini Pro Vision\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Gemini Pro Vision\",\"marker\":{\"color\":\"#00cc96\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"Gemini Pro Vision\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.00017],\"y\":[0.00049],\"z\":[19.8],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=Mistral 8x7B Instruct\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Mistral 8x7B Instruct\",\"marker\":{\"color\":\"#ab63fa\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"Mistral 8x7B Instruct\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.00035999999999999997],\"y\":[0.00035999999999999997],\"z\":[21.599999999999998],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=Mistral 7B Instruct\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Mistral 7B Instruct\",\"marker\":{\"color\":\"#FFA15A\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"Mistral 7B Instruct\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.00017],\"y\":[0.00017],\"z\":[10.200000000000001],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=Llama-2 70B Chat\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Llama-2 70B Chat\",\"marker\":{\"color\":\"#19d3f3\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"Llama-2 70B Chat\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.0009100000000000001],\"y\":[0.00117],\"z\":[62.400000000000006],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=Code Llama\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Code Llama\",\"marker\":{\"color\":\"#FF6692\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"Code Llama\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.0007800000000000001],\"y\":[0.0007800000000000001],\"z\":[46.80000000000001],\"type\":\"scatter3d\"},{\"hovertemplate\":\"Model=Llama-2 13B Chat\\u003cbr\\u003eInput Tokens Cost ($)=%{x}\\u003cbr\\u003eOutput Tokens Cost ($)=%{y}\\u003cbr\\u003eTotal Cost ($)=%{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"Llama-2 13B Chat\",\"marker\":{\"color\":\"#B6E880\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"Llama-2 13B Chat\",\"scene\":\"scene\",\"showlegend\":true,\"x\":[0.00029],\"y\":[0.00029],\"z\":[17.4],\"type\":\"scatter3d\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"scene\":{\"domain\":{\"x\":[0.0,1.0],\"y\":[0.0,1.0]},\"xaxis\":{\"title\":{\"text\":\"Input Tokens Cost ($)\"}},\"yaxis\":{\"title\":{\"text\":\"Output Tokens Cost ($)\"}},\"zaxis\":{\"title\":{\"text\":\"Total Cost ($)\"}}},\"legend\":{\"title\":{\"text\":\"Model\"},\"tracegroupgap\":0},\"title\":{\"text\":\"Input vs. Output Token Costs Across Models\"}}, {\"responsive\": true} ).then(function(){\n",
" \n",
"var gd = document.getElementById('73b43da4-aef6-4d0f-9165-41bf13506bfa');\n",
"var x = new MutationObserver(function (mutations, observer) {{\n",
" var display = window.getComputedStyle(gd).display;\n",
" if (!display || display === 'none') {{\n",
" console.log([gd, 'removed!']);\n",
" Plotly.purge(gd);\n",
" observer.disconnect();\n",
" }}\n",
"}});\n",
"\n",
"// Listen for the removal of the full notebook cells\n",
"var notebookContainer = gd.closest('#notebook-container');\n",
"if (notebookContainer) {{\n",
" x.observe(notebookContainer, {childList: true});\n",
"}}\n",
"\n",
"// Listen for the clearing of the current output cell\n",
"var outputEl = gd.closest('.output');\n",
"if (outputEl) {{\n",
" x.observe(outputEl, {childList: true});\n",
"}}\n",
"\n",
" }) }; </script> </div>\n",
"</body>\n",
"</html>"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"import plotly.express as px\n",
"import pandas as pd\n",
"\n",
"# Preparing a sample dataset\n",
"requests_per_day_samples = [500, 1000, 1500]\n",
"total_tokens_samples = [1000, 2000, 3000] # Assuming equal distribution of input and output tokens\n",
"\n",
"data = {\n",
" \"Requests per Day\": [],\n",
" \"Total Tokens\": [],\n",
" \"Cost\": []\n",
"}\n",
"\n",
"for requests in requests_per_day_samples:\n",
" for tokens in total_tokens_samples:\n",
" cost = (model_pricing['GPT-4']['input_cost'] * tokens + model_pricing['GPT-4']['output_cost'] * tokens) * requests * 30\n",
" data[\"Requests per Day\"].append(requests)\n",
" data[\"Total Tokens\"].append(tokens)\n",
" data[\"Cost\"].append(cost)\n",
"\n",
"df = pd.DataFrame(data)\n",
"\n",
"# Generate 3D scatter plot\n",
"fig = px.scatter_3d(df, x='Requests per Day', y='Total Tokens', z='Cost', color='Cost',\n",
" title='Monthly Costs by Requests and Tokens for GPT-4',\n",
" labels={'Requests per Day': 'Requests per Day', 'Total Tokens': 'Total Tokens', 'Cost': 'Cost ($)'})\n",
"fig.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 542
},
"id": "BjAMam1MAWLl",
"outputId": "5ec6973a-83f3-496c-8dee-5e30557397fb"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<html>\n",
"<head><meta charset=\"utf-8\" /></head>\n",
"<body>\n",
" <div> <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script> <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
" <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.24.1.min.js\"></script> <div id=\"eb161fe4-7520-4f4d-bec6-35816718c42c\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"eb161fe4-7520-4f4d-bec6-35816718c42c\")) { Plotly.newPlot( \"eb161fe4-7520-4f4d-bec6-35816718c42c\", [{\"hovertemplate\":\"Requests per Day=%{x}\\u003cbr\\u003eTotal Tokens=%{y}\\u003cbr\\u003eCost ($)=%{marker.color}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"legendgroup\":\"\",\"marker\":{\"color\":[1350.0000000000002,2700.0000000000005,4050.0,2700.0000000000005,5400.000000000001,8100.0,4050.000000000001,8100.000000000002,12150.0],\"coloraxis\":\"coloraxis\",\"symbol\":\"circle\"},\"mode\":\"markers\",\"name\":\"\",\"scene\":\"scene\",\"showlegend\":false,\"x\":[500,500,500,1000,1000,1000,1500,1500,1500],\"y\":[1000,2000,3000,1000,2000,3000,1000,2000,3000],\"z\":[1350.0000000000002,2700.0000000000005,4050.0,2700.0000000000005,5400.000000000001,8100.0,4050.000000000001,8100.000000000002,12150.0],\"type\":\"scatter3d\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"scene\":{\"domain\":{\"x\":[0.0,1.0],\"y\":[0.0,1.0]},\"xaxis\":{\"title\":{\"text\":\"Requests per Day\"}},\"yaxis\":{\"title\":{\"text\":\"Total Tokens\"}},\"zaxis\":{\"title\":{\"text\":\"Cost ($)\"}}},\"coloraxis\":{\"colorbar\":{\"title\":{\"text\":\"Cost ($)\"}},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]},\"legend\":{\"tracegroupgap\":0},\"title\":{\"text\":\"Monthly Costs by Requests and Tokens for GPT-4\"}}, {\"responsive\": true} ).then(function(){\n",
" \n",
"var gd = document.getElementById('eb161fe4-7520-4f4d-bec6-35816718c42c');\n",
"var x = new MutationObserver(function (mutations, observer) {{\n",
" var display = window.getComputedStyle(gd).display;\n",
" if (!display || display === 'none') {{\n",
" console.log([gd, 'removed!']);\n",
" Plotly.purge(gd);\n",
" observer.disconnect();\n",
" }}\n",
"}});\n",
"\n",
"// Listen for the removal of the full notebook cells\n",
"var notebookContainer = gd.closest('#notebook-container');\n",
"if (notebookContainer) {{\n",
" x.observe(notebookContainer, {childList: true});\n",
"}}\n",
"\n",
"// Listen for the clearing of the current output cell\n",
"var outputEl = gd.closest('.output');\n",
"if (outputEl) {{\n",
" x.observe(outputEl, {childList: true});\n",
"}}\n",
"\n",
" }) }; </script> </div>\n",
"</body>\n",
"</html>"
]
},
"metadata": {}
}
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python 3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.x"
},
"colab": {
"provenance": [],
"include_colab_link": true
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"f69a088f299c42e6816b08a49de8647e": {
"model_module": "@jupyter-widgets/controls",
"model_name": "VBoxModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "VBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "VBoxView",
"box_style": "",
"children": [
"IPY_MODEL_ef865edf4dd04196819ee2eb7096e316",
"IPY_MODEL_82e156686ae046b984a5c3f966f72c04",
"IPY_MODEL_f747ca2c0d574af7924b9a598639d420",
"IPY_MODEL_e6e0cfadf3f04f2f8bde12773311493e",
"IPY_MODEL_d74d47c0f5314f34b4d1b2e1444adbc9",
"IPY_MODEL_d81d55fb157e445ba7fce46c40f77166",
"IPY_MODEL_c83cf1e3c3d34ce39b4b5654a548b358",
"IPY_MODEL_5049f9bef47d49f8b2cca09526d1989b"
],
"layout": "IPY_MODEL_4bd6e48004b94223a4c401397c680d80"
}
},
"ef865edf4dd04196819ee2eb7096e316": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DropdownModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DropdownModel",
"_options_labels": [
"GPT-4",
"GPT-4 32K",
"GPT-4 Turbo",
"GPT-3.5 Instruct",
"GPT-3.5",
"Claude 3 Opus",
"Claude 2",
"Claude 3 Sonnet",
"Claude Instant",
"Claude 3 Haiku",
"PaLM 2",
"Gemini Pro",
"Gemini Pro Vision",
"Mistral 8x7B Instruct",
"Mistral 7B Instruct",
"Llama-2 70B Chat",
"Code Llama",
"Llama-2 13B Chat"
],
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "DropdownView",
"description": "Model:",
"description_tooltip": null,
"disabled": false,
"index": 5,
"layout": "IPY_MODEL_169221aecb86425da83a4a4e855764b6",
"style": "IPY_MODEL_4d51c17bd6464d3e83aca8f8d78fb5ce"
}
},
"82e156686ae046b984a5c3f966f72c04": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatTextModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatTextModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "FloatTextView",
"continuous_update": false,
"description": "Input Tokens:",
"description_tooltip": null,
"disabled": false,
"layout": "IPY_MODEL_f187824c8d364e3cbb523840743b6927",
"step": null,
"style": "IPY_MODEL_a9692c9f69e147f991e357a64d7eff50",
"value": 10000000000000000
}
},
"f747ca2c0d574af7924b9a598639d420": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatTextModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatTextModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "FloatTextView",
"continuous_update": false,
"description": "Output Tokens:",
"description_tooltip": null,
"disabled": false,
"layout": "IPY_MODEL_92bd230b85604735a04eabb9aa074311",
"step": null,
"style": "IPY_MODEL_2b85f3b85ce4461c80b9521f8a93981a",
"value": 10000000000000
}
},
"e6e0cfadf3f04f2f8bde12773311493e": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatTextModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatTextModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "FloatTextView",
"continuous_update": false,
"description": "Requests per Day:",
"description_tooltip": null,
"disabled": false,
"layout": "IPY_MODEL_6f8dd5afa4db4c92a34c1d64db8fdee5",
"step": null,
"style": "IPY_MODEL_ad19d01e198545468783cac3fdff7cdc",
"value": 10000000000000000
}
},
"d74d47c0f5314f34b4d1b2e1444adbc9": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatTextModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatTextModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "FloatTextView",
"continuous_update": false,
"description": "Days per Month:",
"description_tooltip": null,
"disabled": false,
"layout": "IPY_MODEL_460db6bf8df64dfcba5e2bc0e8cc6d61",
"step": null,
"style": "IPY_MODEL_179c84104ec94496917c569e72a6d5b9",
"value": 30
}
},
"d81d55fb157e445ba7fce46c40f77166": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatTextModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatTextModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "FloatTextView",
"continuous_update": false,
"description": "Total Token Cost:",
"description_tooltip": null,
"disabled": true,
"layout": "IPY_MODEL_a42e4f15d595435c8b7b113370a2d962",
"step": null,
"style": "IPY_MODEL_4b4f28f7160b4cbd9e56f352638ec2de",
"value": 150750000000
}
},
"c83cf1e3c3d34ce39b4b5654a548b358": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatTextModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatTextModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "FloatTextView",
"continuous_update": false,
"description": "Deployment Cost:",
"description_tooltip": null,
"disabled": true,
"layout": "IPY_MODEL_d50eb9c8bdfb4c33914c2cb3bb3a3992",
"step": null,
"style": "IPY_MODEL_ea97dd02411245009a0f1854475e3990",
"value": 4.5225e+28
}
},
"5049f9bef47d49f8b2cca09526d1989b": {
"model_module": "@jupyter-widgets/output",
"model_name": "OutputModel",
"model_module_version": "1.0.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/output",
"_model_module_version": "1.0.0",
"_model_name": "OutputModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/output",
"_view_module_version": "1.0.0",
"_view_name": "OutputView",
"layout": "IPY_MODEL_d00bbaadaa0b44779678c74704332b8a",
"msg_id": "",
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Selected Model: Claude 3 Opus\n",
"Input Tokens: 1e+16, Output Tokens: 10000000000000.0\n",
"Total Token Cost: $150750000000.00\n",
"Estimated Deployment Cost per Month: $45225000000000000484106567680.00\n"
]
}
]
}
},
"4bd6e48004b94223a4c401397c680d80": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"169221aecb86425da83a4a4e855764b6": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"4d51c17bd6464d3e83aca8f8d78fb5ce": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": "initial"
}
},
"f187824c8d364e3cbb523840743b6927": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"a9692c9f69e147f991e357a64d7eff50": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": "initial"
}
},
"92bd230b85604735a04eabb9aa074311": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"2b85f3b85ce4461c80b9521f8a93981a": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": "initial"
}
},
"6f8dd5afa4db4c92a34c1d64db8fdee5": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"ad19d01e198545468783cac3fdff7cdc": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": "initial"
}
},
"460db6bf8df64dfcba5e2bc0e8cc6d61": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"179c84104ec94496917c569e72a6d5b9": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": "initial"
}
},
"a42e4f15d595435c8b7b113370a2d962": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"4b4f28f7160b4cbd9e56f352638ec2de": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": "initial"
}
},
"d50eb9c8bdfb4c33914c2cb3bb3a3992": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"ea97dd02411245009a0f1854475e3990": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": "initial"
}
},
"d00bbaadaa0b44779678c74704332b8a": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"ecdc2256693742ec99d6d78603c9bbd3": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DropdownModel",
"model_module_version": "1.5.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DropdownModel",
"_options_labels": [
"JSON",
"TOML",
"YAML",
"CSV"
],
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "DropdownView",
"description": "Output Format:",
"description_tooltip": null,
"disabled": false,
"index": 0,
"layout": "IPY_MODEL_f60b1ac08f1643c893ef429cc6042a7c",
"style": "IPY_MODEL_2a1e1b2499654c7a8cf0933a74c0cc82"
}
},
"f60b1ac08f1643c893ef429cc6042a7c": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"2a1e1b2499654c7a8cf0933a74c0cc82": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"model_module_version": "1.5.0",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"630c9a85160e424fb787f916763a3c7d": {
"model_module": "@jupyter-widgets/output",
"model_name": "OutputModel",
"model_module_version": "1.0.0",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/output",
"_model_module_version": "1.0.0",
"_model_name": "OutputModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/output",
"_view_module_version": "1.0.0",
"_view_name": "OutputView",
"layout": "IPY_MODEL_3ed0b24477044a6baa3a43f59a276d0f",
"msg_id": "",
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"{\n",
" \"model_selected\": \"Claude 3 Opus\",\n",
" \"input_tokens\": \"10000000000000000.00\",\n",
" \"output_tokens\": \"10000000000000.00\",\n",
" \"daily_requests\": \"10000000000000000.00\",\n",
" \"operational_days_per_month\": \"30.00\",\n",
" \"cost_per_input_token\": \"0.00\",\n",
" \"cost_per_output_token\": \"0.00\",\n",
" \"total_token_cost\": \"0.00\",\n",
" \"estimated_monthly_deployment_cost\": \"0.00\"\n",
"}\n"
]
}
]
}
},
"3ed0b24477044a6baa3a43f59a276d0f": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"model_module_version": "1.2.0",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
}
}
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment