diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..b58b603 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/OSSDevGov2022.iml b/.idea/OSSDevGov2022.iml new file mode 100644 index 0000000..0c8867d --- /dev/null +++ b/.idea/OSSDevGov2022.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..56ef5d4 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Final/44-vscode/microsoftvscode .ipynb b/Final/44-vscode/microsoftvscode .ipynb new file mode 100644 index 0000000..bfaf027 --- /dev/null +++ b/Final/44-vscode/microsoftvscode .ipynb @@ -0,0 +1,1152 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 149, + "id": "521e0f53-55e7-4182-b16f-331a36813b8e", + "metadata": {}, + "outputs": [], + "source": [ + "var openDigger = require('../src/open_digger');" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "id": "96f05713-1a3f-4aea-8cfd-2d05c9ed7cdb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\n", + " { name: '_temporary_and_external_tables' },\n", + " { name: 'default' },\n", + " { name: 'github_log' },\n", + " { name: 'system' }\n", + "]\n" + ] + } + ], + "source": [ + "var query = openDigger.driver.clickhouse.query;query(    `SHOW DATABASES`).then(res=>{    console.log(res);})" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "id": "95dbda8f-de6b-4e5a-95c6-77b8cc4ca08d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ { name: 'events' } ]\n" + ] + } + ], + "source": [ + "query(    `SHOW TABLES from github_log`).then(res=>{    console.log(res);})" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "id": "e3544824-9ad7-49fb-8ab7-bb98b9f405ba", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "mode": "scatter", + "name": "fork数量", + "x": [ + "2019-06", + "2019-07", + "2019-08", + "2019-09", + "2019-10", + "2019-11", + "2019-12", + "2020-01", + "2020-02", + "2020-03", + "2020-04", + "2020-05", + "2020-06", + "2020-07", + "2020-08", + "2020-09", + "2020-10", + "2020-11", + "2020-12", + "2021-01", + "2021-02", + "2021-03", + "2021-04", + "2021-05", + "2021-06", + "2021-07", + "2021-08", + "2021-09", + "2021-10", + "2021-11", + "2021-12", + "2022-01", + "2022-02", + "2022-03", + "2022-04", + "2022-05", + "2022-06" + ], + "y": [ + 337, + 342, + 409, + 375, + 436, + 531, + 415, + 279, + 334, + 352, + 366, + 411, + 304, + 328, + 297, + 328, + 375, + 377, + 292, + 299, + 310, + 273, + 299, + 296, + 221, + 306, + 265, + 369, + 385, + 268, + 273, + 283, + 308, + 292, + 238, + 259, + 97 + ] + }, + { + "mode": "scatter", + "name": "star数量", + "x": [ + "2019-06", + "2019-07", + "2019-08", + "2019-09", + "2019-10", + "2019-11", + "2019-12", + "2020-01", + "2020-02", + "2020-03", + "2020-04", + "2020-05", + "2020-06", + "2020-07", + "2020-08", + "2020-09", + "2020-10", + "2020-11", + "2020-12", + "2021-01", + "2021-02", + "2021-03", + "2021-04", + "2021-05", + "2021-06", + "2021-07", + "2021-08", + "2021-09", + "2021-10", + "2021-11", + "2021-12", + "2022-01", + "2022-02", + "2022-03", + "2022-04", + "2022-05", + "2022-06" + ], + "y": [ + 1719, + 1563, + 1616, + 1659, + 1524, + 2370, + 1812, + 1412, + 1280, + 1564, + 1714, + 1880, + 1499, + 1914, + 1724, + 1492, + 1502, + 1491, + 1682, + 1417, + 1652, + 1952, + 1610, + 1298, + 1337, + 1448, + 1427, + 1236, + 1274, + 1447, + 1142, + 1141, + 1259, + 1361, + 1141, + 1545, + 432 + ], + "yaxis": "y2" + } + ], + "layout": { + "autosize": true, + "title": { + "text": "每月新增Fork和Star的个数" + }, + "xaxis": { + "autorange": true, + "range": [ + "2019-06-01", + "2022-06-01" + ], + "type": "date" + }, + "yaxis": { + "autorange": true, + "range": [ + 72.88888888888889, + 555.1111111111111 + ], + "type": "linear" + }, + "yaxis2": { + "anchor": "x", + "autorange": true, + "overlaying": "y", + "range": [ + 324.3333333333333, + 2477.6666666666665 + ], + "side": "right", + "type": "linear" + } + } + }, + "image/png": "iVBORw0KGgoAAAANSUhEUgAABAcAAAFoCAYAAAArXpJqAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAEB6ADAAQAAAABAAABaAAAAAAKwDtpAABAAElEQVR4AeydB3gUVReGv5CE3nvvHaUISJciCIgKooKgoiJiQQUV+y9iFxELigVBVLCgIEUBFUF6r9J7772XFP773c2ETbIJyWYTstnvPM9mZ6fcufedye6cc08JumQEEhEQAREQAREQAREQAREQAREQAREQgYAlkCFgR66Bi4AIiIAIiIAIiIAIiIAIiIAIiIAIWAIyDuhGEAEREAEREAEREAEREAEREAEREIEAJyDjQIDfABq+CIiACIiACIiACIiACIiACIiACMg4oHtABERABERABERABERABERABERABAKcgIwDAX4DaPgiIAIiIAIiIAIiIAIiIAIiIAIiIOOA7gEREAEREAEREAEREAEREAEREAERCHACMg4E+A2g4YuACIiACIiACIiACIiACIiACIiAjAO6B0RABERABERABERABERABERABEQgwAnIOBDgN4CGLwIiIAIiIAIiIAIiIAIiIAIiIAIyDugeEAEREAEREAEREAEREAEREAEREIEAJyDjQIDfABq+CIiACIiACIiACIiACIiACIiACMg4oHtABERABERABERABERABERABERABAKcgIwDAX4DaPgiIAIiIAIiIAIiIAIiIAIiIAIiIOOA7gEREAEREAEREAEREAEREAEREAERCHACMg4E+A2g4YuACIiACIiACIiACIiACIiACIiAjAO6B0RABERABERABERABERABERABEQgwAnIOBDgN4CGLwIiIAIiIAIiIAIiIAIiIAIiIAIyDugeEAEREAEREAEREAEREAEREAEREIEAJyDjQIDfABq+CIiACIiACIiACIiACIiACIiACMg4oHtABERABERABERABERABERABERABAKcgIwDAX4DaPgiIAIiIAIiIAIiIAIiIAIiIAIiIOOA7gEREAEREAEREAEREAEREAEREAERCHACMg4E+A2g4YuACIiACIiACIiACIiACIiACIiAjAO6B0RABERABERABERABERABERABEQgwAnIOBDgN4CGLwIiIAIiIAIiIAIiIAIiIAIiIAIyDugeEAEREAEREAEREAEREAEREAEREIEAJyDjQIDfABq+CIiACIiACIiACIiACIiACIiACMg4oHtABERABERABERABERABERABERABAKcgIwDAX4DaPgiIAIiIAIiIAIiIAIiIAIiIAIiIOOA7gEREAEREAEREAEREAEREAEREAERCHACMg4E+A2g4YuACIiACIiACIiACIiACIiACIiAjAO6B0RABERABERABERABERABERABEQgwAnIOBDgN4CGLwIiIAIiIAIiIAIiIAIiIAIiIAIyDugeEAEREAEREAEREAEREAEREAEREIEAJyDjQIDfABq+CIiACKQ2gUuXLoGvqy1hYWE4d+7c1e6Gzi8CIiACIiACIiACaYJAcH8jaaIn6oQIiIAIiEBAEJgwYQJeffVV1KtXD7lz5/ZqzKdOncK+fftw/PjxBF8ZMmRApkyZ4pzj4sWLuPvuu3HgwAE0bNgwznZnBY0Hc+bMwbhx41C7dm0EBwc7m/Dcc8+BBoaKFStGr/vuu+/w22+/oXnz5tHrHnjgAezfvx916tSJXpfaCz/88IPtQ7ly5RJ9ajJatmwZxo4di+zZs6NgwYKJPpY70gB09OhRy5ifeR2CgoK4mOrC6/Tggw8iW7ZscGcQERFh17NDVapUSVK/jhw5gmeffRZ//PGHvYeyZMkS7/FkOWnSJBQoUABnzpxBjx497P0UGRmJyZMno1KlSjh//jzuv/9+FC9e3L7ibUwbREAEREAERCCFCISkULtqVgREQAREQATiEKCyTUWVCtLOnTvtK85OsVZQqY6teI0ZMwY//vhjrD3jfnziiSfQvn376A27d+/Grl277OcyZcpgxowZqF+/PmhEoFSuXNkaAvbu3YtDhw5hy5YtuHDhAgoXLowNGzbg2muvtfvxz/bt23Hs2LHoz1woWrQoRo0ahYMHD1ples+ePeDL3YDgHNCxY0ecPn3a+Rjn/ZtvvvGZkvjtt9/immuuwU033RTnPM4Kspk9e7btL5c5diqsWbNmRaFChSy3pUuXOrvHeH/mmWeirxGvMa/NxIkTcfbs2ej9yJh9aNeuHVq0aGHXUzn/4osvULJkSdx2223R+/p6YePGjdaYxHG4C9fzWifV8MFxvfLKK5YV26Oxa9CgQcicObN789HLNCrxnqWRiOPn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bs1Yxdw9BCD2+JlXgSEB5Mis+3w5QkMGq0Aw8Z67MA8BXfpnzpxpPTgY9sF1NMJQQeYMO180MrCU5KRJk9wPjzGuGBvcPtAbwMnP4CmZobMrx8Z+0FjAEBFfChMQkjFDBpjokQaSkSNHWmME7z8yoPGDoQbM18Dry5KTDAWhIUoiAiIgAiIgAilNQMaBlCas9kVABERABKIJcEbUk1AxolJJWbVqlVX4mDjOPS6d2zjbynh5eh64z7hyG4Wx/cwn4Ljxu4cHUCnkTDQVe5awY/lEKtqcIWZOBJbw47ndvRo8KZJMjhefcEbfPY7ffb/Ys/zjx4933xzvMsMmqFAzlIKzyvRSiO3yztllehTEJ0yWGFsY/59QAsXY+/MzrwfDBhyhMsukhY6Ro0SJElaxp3JP93iWTqTCzesQ30w826QC7CSZdK4rY/RHjRoVXYKQ/Ki0M/O/u7AEJl+exDGIsD9OQkKWWXQqBTjHMAEmkwLSa4D9ppdGbMOHs68376y6wGvA/rMCB40BvGa8B1mSkqEjDOugwYZVCij0mGClCIatDBs2zJvT6hgREAEREAERSBKBIPPgcylJR2hnERABERABEfAxgbFjx9rEflTIqASypnz16tXjnIU/WTQk3H777R5nU5cuXWprxfNAKoNUrN2VPCrXVFapSHN2mwkKnez1VE6p7DJUwBG6snPWniUAHaXV2Rb7ncolcyrQbT62fPPNN1YZ7Ny5c+xNafIzjSSsaED3fkecPAvuoQe8HgylcGfs7J8W3tk3xvnTM8I9lCF232jUYclE7k/Xf+ZySMyYnAoEV/I2oecDDVa8H2kgcBd6NezevdsavmKXl2SuifXr18e4J92P1bIIiIAIiIAI+JKAjAO+pKm2REAEREAEREAEREAEREAEREAERMAPCahagR9eNHVZBERABERABERABERABERABERABHxJQMYBX9JUWyIgAiIgAiIgAiIgAiIgAiIgAiLghwRkHPDDi6Yui4AIiIAIiIAIiIAIiIAIiIAIiIAvCcg44EuaaksEREAEREAEREAEREAEREAEREAE/JCAjAN+eNHUZREQAREQAREQAREQAREQAREQARHwJQEZB3xJU22JgAiIgAiIgAiIgAiIgAiIgAiIgB8SkHHADy+auiwCIiACIiACIiACIiACIiACIiACviQg44AvaaotERABERABERABERABERABERABEfBDAjIO+OFFU5dFQAREQAREQAREQAREQAREQAREwJcEZBzwJU21JQIiIAIiIAIiIAIiIAIiIAIiIAJ+SEDGAT+8aOqyCIiACIiACIiACIiACIiACIiACPiSgIwDvqSptkRABERABERABERABERABERABETADwnIOOCHF01dFgEREAEREAEREAEREAEREAEREAFfEpBxwJc01ZYIiIAIiIAIiIAIiIAIiIAIiIAI+CEBGQf88KKpyyIgAiIgAiIgAiIgAiIgAiIgAiLgSwIyDviSptoSAREQAREQAREQAREQAREQAREQAT8kIOOAH140dVkEREAEREAEREAEREAEREAEREAEfElAxgFf0lRbIiACIiACIiACIiACIiACIiACIuCHBGQc8MOLpi6LgAiIgAiIgAiIgAiIgAiIgAiIgC8JyDjgS5pqSwREQAREQAREQAREQAREQAREQAT8kICMA3540dRlERABERABERABERABERABERABEfAlARkHfElTbYmACIiACIiACIiACIiACIiACIiAHxKQccAPL5q6LAIiIAIiIAIiIAIiIAIiIAIiIAK+JCDjgC9pqi0REAEREAEREAEREAEREAEREAER8EMCMg744UVTl0VABERABERABERABERABERABETAlwRkHPAlTbUlAiIgAiIgAiIgAiIgAiIgAiIgAn5IQMYBP7xo6rIIiIAIiIAIiIAIiIAIiIAIiIAI+JKAjAO+pKm2REAEREAEREAEREAEREAEREAERMAPCcg44IcXTV0WAREQAREQAREQAREQAREQAREQAV8SkHHAlzTVlgiIgAiIgAiIgAiIgAiIgAiIgAj4IQEZB/zwoqnLIiACIiACIiACIiACIiACIiACIuBLAjIO+JKm2hIBERABERABERABERABERABERABPyQg44AfXjR1WQREQAREQAREQAREQAREQAREQAR8SUDGAV/SVFsiIAIiIAIiIAIiIAIiIAIiIAIi4IcEZBzww4umLouACIiACIiACIiACIiACIiACIiALwnIOOBLmmpLBERABERABERABERABERABERABPyQgIwDfnjR1GUREAEREAEREAEREAEREAEREAER8CUBGQd8SVNtiYAIiIAIiIAIiIAIiIAIiIAIiIAfEpBxwA8vmrosAiIgAiIgAiIgAiIgAiIgAiIgAr4kIOOAL2mqLREQAREQAREQAREQAREQAREQARHwQwIyDvjhRVOXRUAEREAEREAEREAEREAEREAERMCXBGQc8CVNtSUCIiACIiACIiACIiACIiACIiACfkhAxgE/vGjqsgiIgAiIgAiIgAiIgAiIgAiIgAj4koCMA76kqbZEQAREQAREQAREQAREQAREQAREwA8JyDjghxdNXRYBERABERABERABERABERABERABXxKQccCXNNWWCIiACIiACIiACIiACIiACIiACPghARkH/PCiqcsiIAIiIAIiIAIiIAIiIAIiIAIi4EsCMg74kqYP2zp58iTCw8N92KKaSq8Ezpw5gwsXLqTX4WlcPiJw7NgxXLp0yUetqZn0TEC/P+n56vpmbMePH0dkZKRvGlMr6ZrAqVOnEBYWlq7HqMGJQHoiIONAerqaGosIiIAIiIAIiIAIiIAIiIAIiIAIeEFAxgEvoOkQERABERABERABERABERABERABEUhPBGQcSE9XU2MRAREQAREQAREQAREQAREQAREQAS8IyDjgBTQdIgIiIAIiIAIiIAIiIAIiIAIiIALpiYCMA+npamosIiACIiACIiACIiACIiACIiACIuAFARkHvICmQ0RABERABERABERABERABERABEQgPRGQcSA9XU2NJVkEhs3eiv0nzierDR0sAiIgAiIgAiIgAiIgAiIgAv5IQMYBf7xq6rPPCWzZtg3r/xqGv3/7xudtq0EREAEREAEREAEREAEREAERSOsEQtJ6B9U/EUhpAhGRl7Dg14H4IOQHXNwejF3bWqJEmYopfVq1LwIiIAIiIAIiIAIiIAIiEGAEjh8/jty5c0eP+syZM8iSJQsyZLj68/YyDkRfFi0EKoGhs7aixemZgPl/zBgUge0T3kaJPt8FKg6NWwREQAREQAREQAREQAQCksDZs2exYMECXLx4EW3atEkyg+nTp+Paa69FgQIFYhx76dIlvPzyy3jppZfQvXt3fPPNN3jnnXfw7rvv4v3330fTpk3RokWLGMfww91334169erFWc8V8+bNwy+//IKgoCCP271ZKeOAN9R0TLohsOXQaUz4ZwYeC9mN8OAsCA4/h+uPTcKmrZtRoWz5dDNODUQEREAEREAEREAEREAERCB+AgcOHMBDDz2EUqVK2Zn81q1bJ1nxHjx4MF544YU4xgEq8Ndffz2WLl1qOzB79mw0adIEwcHB2LJlC0qUKIFz587ZbbVr10bhwoXtMr0M6FngyQDAbb4WGQd8TVTt+Q2BSBNO8NyvK9Hy0nzb55BrO2Lt9j2oenwGto5/FxWeGe43Y1FHRUAEREAEREAEREAEREAEvCcwZ84clC1bFlTwfS2bN2/GrFmzsHv3bpw6dQpTpkxBpkyZUL58eZw+fRpZs2a12yMjI1GjRo3o09MDIV++fNGf3Rfy58/v/tEnyzIO+ASjGvFHAsPmbMOynccxIMsi4JIZQbXbUeTaPMDIGWhy4nf8t3ELqlcs549DU59FQAREQAREQAREQAREIE0TWLnrOP7dcDDV+1ijRG40r1Qwxnk5o//DDz+AyvkjjzyCG264Affccw8mTZqE0aNH4+jRo6hUqRL69OljZ/l58GOPPWbd/hctWoRtJrl53759Y7R55MgRGzpw3XXX2bbuu+8+jBgxwoYshIeH484778SOHTvgLB88eBBlypRB8eLFsXjxYvz77782RIHGBE9Sq1YtDBw4EM2bN0fdunU97ZLkdTIOJBmZDkgPBLYdPoNBf29AmaB9qHBpB5A5F1C2GfIEh2JLnsYod2wOtk4cgOp9h6aH4WoMIiACIiACIiACIiACIpCmCNA48PE/m1K9T/c1KBXHOECPgSpVquDChQtW4S9YsCCWLVuGTz75BF26dME111xjjQT/+9//MHz4cISEhGDr1q0YMGAAWrVqhUaNGtlQBGcwJ0+etOEFRYoUQefOnbFw4UJ8/PHHNsfAM888g1dffRXjxo3D9u3bbSLC5cuXWwMDQw8o9ChgnoL169c7TXp8r1y5sjUoeNzoxUoZB6KgRURE4NChQzY+hLEfsYWxHowDSQn3jdjn0ueUJcB/tOfHrMSF8Eg8X2ItcMicr9LNgDEMUArf+irwfWvceGoi5q95EQ2qlbXr9UcEREAEREAEREAEREAERMA3BDiD36dlBd80loRWeN7YkidPHqsHUt+rU6eO3fzTTz+hQoUKePDBB+1nuvfTq2DNmjXRrv80FjRs2DBGc0xqyMSDhQoVQr9+/awhoWLFivjggw+sB0KDBg2sd8BTTz1ljQRsc/78+daLgF4DFPaHoQZTp05Fu3bt7DonXwFzElD++usvVK9e3af6aUAYB2iloUuIu9At5LPPPrOrGPPB5bCwMGTMmBG9e/e2FiBuZKZKZpCcOXOmTQRRrFgxvPnmm/aCurenZf8hMGLudizefgwFcmTCTVjg6rgJKXAkW9n62JWnHkocW4jtkwYa48AXzia9i4AIiIAIiIAIiIAIiIAI+IAAlXRPiroPmvZJE0xQyJl5R+jyT12R7v+OUIGPLcxZQAPBsGHDEBrqmnzcs2ePNQ7Qo4ATlTQ4sK2hQ4fahINff/01cubMiZIlS8ZojhPUq1evtuv2799vDQ3OZ+Yq8LWY4m3pX3gBGOvBC+S8aOWhMBaExoPHH38ckydPRo8ePTBo0CCcOHHCbqfhgG4edB8ZP368zRzpGBXsDvrjVwR2HjmLgX9tsH3+qGVOBB9aA2TKaUIKmscYR8F2xnvASNszE/DPis0xtumDCIiACIiACIiACIiACIhA+ibA2XvmBHCEyjknjnPnjut54OzD98aNG4P5AOg1cOzYMbuJHgi9evWyyv2QIUPASghOosFs2bKBngVOSIF7W1myZLFhAzRM5M2b156by3xlzpzZfVefLAeEcYCkCJ1lKZyXUx6C9SFz5Mhh3TUYO3LbbbdZ0HTtoLDMBOtO0opDy1DHjh1t/AmtOBL/ImDDCcauxLmwCLSvWRSNL8xyDaCyCSkIyRhjMJnKN8GBPNchd9AZ7JjyiUlOwoyFEhEQAREQAREQAREQAREQgUAgQGV97dq1YBUDThz//PPPVm9kboKEhMaB/v37W93x5Zdftl4ErEywYsUKq2cygeHYsWPBsALKypUr7Xmof7rrmNRRO3XqZMMGGNpOYwB1Wi7zxYSGNGD4UgLGOLBu3Tq89dZbtjQFk0s4cvjwYRQtWtT5aBNCMHEE8w9QuJ2hBI5wmUomPQ4k/kVg5IIdWLD1KPJnz4j+t1YD1k5wDaDq5ZAC9xHlbevyHmh/fjz+WCLvAXc2WhYBERABERABERABERCB9EQgQ4aYqjETDXKG//XXX7eKOCeNX3zxRWTPnj162EFBQdHLzgLXcVL5nXfescr+a6+9Bua34yQ0lfovvvjCVkVwqhy88cYbttJBhw4dbIJDeidQqI+6vxiqQOOB+zp6M/hSAiLnAPML8AIxrmPTpk02c+Tzzz9v8wqwNATXuws/O1YbxnK4b3eWnRiP48ePux/qs2UaINg3Tzecz04SQA3tPXEe705eZ0f8UquyJpzALO//D5cyZseJfLUAT9ex4HUIy1kNBU6uwfa/P8Ohcq8hNDjml0ZaQMh7hV8iTKAiEYGECDjhUgnto20ioN8f3QNXIsB7hHGzEhG4EgHeK3xm1vPslUil/e1XcqVP+yO4cg+dmXxnTxoLmIuuZ8+eNjyAnufuBgQmBIwtDEN3hLP633//vf3IxILML3DTTTfhueees8/tv/zyC+bOnQuWOGzWrJndj3kO6KHAxITc7i40DlCWLFkSvZrL1FtbtGgRvS45CwFhHLj5ZuM27ia0zvz999/WOEB3DSYidBeWsHAsQnx3rDfcx1l2tjNxREoIDQM0aHiqnJAS50vvbfb6db0JJ4hEu2sL4/a6ZYA5H7mGXKkdcuYtEO/wL9F7YPTd6Bw2Hn+texxdG6Z+RtV4Oxe1gV8UDIlxDFdX2l/bA5MADQP8vtMDWmBe/6SMWr8/SaEVmPvq+yQwr7s3o6ZhgK7QfE6RiIC/EmDcP1/JEYap8+X+vE4vBD7HU+dzhHnwqIvyfL5S+J22E/MekP+pBQoUiA4boGvH3r17o1lFRkaC7hlcT+E7s0s6wmU+XDsJJNytR84+vnjnOfhKqfZ90Ud/aePHhTsxd8sR5M2WEW+0v8bFdJ0rpCDomtsRFMuFKMa4qrTFyVyVUejEeuyZ/jUu1huAzKFxS13GOCaVP+heSWXgfnw6fp/wfpGIQEIE9J2SEB1tIwHdI7oPEktA90piSWm/9E7A3SjgPlZ3wwDX81ktuYYI9/aTupz2fKSTOoJE7P/5559jy5Yt1kOAdSnp1sHqBRTWmaRrHEsdMhZk4sSJOH/+POrXr2+3M6EEyxju2rXLun8weQSzTzIZhCTtE9h7/BzeiQoneKN9NeTLngk4ug3Yt9JUKcgBlLuyC07O1q/Ygd4TMQ4j52xK+4NWD0VABERABERABERABERABEQgiQQCwnPgv//+w7hx46LRMKajS5cu9jM9A5588kmwpMQnn3xi3Z769OkTXaKibdu2NoNk9+7draWcyQqZ2FDiHwRe+m0VTl8IR5tqhXFL9ajEk2ujYoEqtjVVCoyx4EpS5VacyVkexU9uxp5ZI3CqwVvIkdlVs/RKh2q7CIiACIiACIiACIiACIiACPgDgSCTKCQgarQxhpJ1JhlS4MlVIzw8HEwAUahQIY9xUYyZYkxIwYIFU+W60puBbiaK0fIe9+jFu/DC2P+QO2sopj7dFAVyRBkCvmpqPAdWAHf/CFRul7gTrPoVGNsD2yMLYVzjCXj6poRLmCSuUd/sxSQkvE9YIkUiAvER4PcfkwkprCA+QlrvENDvj0NC7/ERYDJm5lxS6GN8hLTeIcDnb+YcCA3VpIrDRO8ikJYJBERYAS8AE3GVLFnSo2GA26lcsUxhfMo4ExCmlmGA/ZEkj8CBk+fx9qS1tpH+t5mKA45h4Nh2l2HAVClAuRsTf5JqHXE+Z2mUznAA++eMwtEzrhIjiW9Ae4qACIiACIiACIiACIiACIhA2iUQMMaBtHsJ1LOUIMBwgpPnw9GySkF0qFns8inWuhIRopIJKQjNfHn9lZYyBCNz8+ftXj3wGz6fvvFKR2i7CIiACIiACIiACIiACIiACPgNARkH/OZSqaOJJTB26W5MX38QObOE4p3br4152JqofANVO8Rcn5hP1TvjYvbiqJBhLw4t+hX7TpxLzFHaRwREQAREQAREQAREQAREQARsAnyGq7sLw2/SigREQsK0Alv9SHkCB0+dx+t/uMIJXrulKgrmdPMOOL4T2LsMyGgqTZRvmfTOBIcgY7NngT+exiNBv+GTf+7Ae3dUT3o7OkIEREAEREAEREAEREAERCBgCGzdutUmyG/RogXGjx+P1q1bY9OmTTZJfufOne262OUOFy9ejK+//hpVqsTNdXb48GHkypULzz/v8mz2FUh5DviKpNpJEwReGbcaJ8+FoXmlArijdvGYfXK8BlilICkhBe6t1LwH4dkKo2qGnTi6bDy2Hz7jvlXLIiACIiACIiACIiACIiAC6YjAxo0bk12trmzZsjhx4oR9Ec3UqVPRpk0bbNu2zSYV5+dJkyZh8uTJ0eSYMJ9JgpkU39Pr3DnfezHLOBCNXwv+TmDCij2YuvaAKTMYgnc7epjRd0oYVm3v/VBN6cOQJk/b4x8PHo8Ppyr3gPcwdaQIiIAIiIAIiIAIiIAIpG0CrPi0aNGiZHVyzJgx1jDw9ttvY8mSJWDVl2HDhmHz5s02aT4NB9999x127NgRfR56EuTLlw958+aN8+J6Vo3xtSiswNdE1d5VIXD49AW8NnGNPff/2lVF4Vxu4QRce3wXsGep8RjIClRolbw+1r4fETMHoua5LTi+agrWNSuHKkV8/8+ZvE7qaBEQAREQAREQAREQARFIwwT4bL7p79TvYLE6HvWBVatWYejQoVZBZ6W7Bg0aoGfPnvj0009x/vx5PPLII7avL774ItasWYOff/7ZKvks19mkSRP06tXLVr5bsWIFRo4cibvuugsTJ07EpUuX8M4772D//v22rCc9Eaj4d+3a1Z6vQIECdpkGhC5duthzjBo1Cnv37kWpUqXgKScBjw8LC8P7779vz5stmwmb9oHIOOADiGri6hN4dfxqHD8bhiYV8qNz3RJxO+R4DVRsYwwEWeJuT8oac3xw46eMP1A/PBkyHh/83QrD76+blBa0rwiIgAiIgAiIgAiIgAgENgEaB2a8l/oM6j4cxzhABf6NN95AvXr10Lt3b+zbtw+zZs2yyj7d/3/88Uc8/LA5zgjL21Nxf+CBB6zyfujQIQwcOBDlypXDLbfcAiYc/O+//8D1TZs2BQ0NH374IZgnoFOnTjZ8oHnz5pg3bx5Wr15tDQUHDhywBgjmEaDQ2LBu3TocPHjQfvb0JyQkBDVq1LDHe9ruzToZB7yhpmPSFIFJ/+3DlNX7kS1jcPwJAteMc/W5mhdVCjyNts5DiJz9Ieqe34BBG2Zg2c7yuK5kHk97ap0IiIAIiIAIiIAIiIAIiEBsAsVqA81ejL025T/TcyCWREZG4uLFi1bRpvJfvnx5q6BztwoVKlgjQZ06l49r1KiR9TCgAn/kyBFrANi50yQ/jxLO5DOZYKZMmeyaDRs2WOPB999/b9tt1qyZPZ6GBB73+++/o3jx4ggKCrL702Pgjz/+AI0GVatWtet+/fVXtGzZEnny5AHzEdDTgN4HvhQZB3xJU22lOoGjZy7i1Qmr7XlfblcFxXJ78Ao4sftySEH5ZIYUOCPMlB0ZGvQC/n0bTwaPw8A/m+CnnvWdrXoXAREQAREQAREQAREQgXRJgInwGIdfuHBhZMgQN4XdmTNnwH3y58+f8PhpHOArDUhwcLANG/jyyy+tol66dGl069Yt2kAQu4sjRoywYQWcuadSTw40MDjCz45hgOvmzJmDd99914YWMF8AwwYaN25sz8lkhB999BHuuOMO5/Dod3owOO2SKSscZM2aNXpd9I4+WpBxwEcg1czVIdDPGAZoIGhQLh+6Xl/ScyfWTnCtr9jalDE0OQd8JfUewaV5g9Howhp8sG0BZm8qZ8IaCviqdbUjAiIgAiIgAiIgAiIgAmmKwEsvvWQT6rFTdIFvZmbAn3jiCdtHzrwzBn7mzJl2BrxYsWJ48803rfKcpgYRT2duvvlmOzNPBZwz+QMGDIDjLcCwA0eYf+CXX35B37590aqVa+LxrbfecjZ7fGc4AY0mzBNwzz332BwE9A6gMLcBudWtGzdMmQaWMmXK2P3Wrl2LokWLWs8Bsl6/fr1d78s/cU09vmxdbYlAChL404QS/GFCCrKacIL376ge7YYT55ROSEFVH4UUOCfInAtB9R61n54MMd4Df21wtuhdBERABERABERABERABNIdASqqn3/+uVWen3rqKUyYMMHGzXOgU6ZMwfLlyzF8+HCMHz/eehZ89tlnfsGASf84LlYRoBt/rVq17Ow8lXDmEqBBgKEBjoKfJUsWmw+AnxcvXgwq7glJ9uzZ7X6sSsAkhfQsYIgAhckL6bkwbdq0GE3QMFG/fn3rgUEjAUMOWLmAyzQSdO/e3XpoxDgomR9kHEgmQB1+dQgcP2vCCUwSQsqLbSqjRN54PAJO7AF2L3YlIaxwk+87W/9xXArNhhbBKxCxZwVosJCIgAiIgAiIgAiIgAiIQHokwOz9jMFnhv4bbrjBltqjckyZPXu2TcBXsmRJ6/resWNHLFu2zCrUaZ0FlXUaNjirTw8CViKg8YPeEVTGW7dujT59+qBDhw7Ys2ePDTkYPXq0/fzJJ5/ESQrI9tyFij3bYwLCcePG2fwGTFpIDwVyo0Fl9+7dmDx5cvRhzEXApIbOKyIiwpZDdD6z+oGnSgbRDXixoLACL6C5H3L27Fn3jz5bZmwJLVSxbyyfncDPG3p13FocMuUL65TKjTtqFEB81yFk5a/IaMYaXuZGXAzngq+vV2aE1uqG0EVfmMoF4/DBX9XQuEwOZIhKJpIamJmQhPcLvzAkIpAQAf6fOIluEtpP2wKbgH5/Avv6J2b0dK9l7Ku+TxJDK7D34bPJhQsXrCt1YJPw/9Ezzj227NixwybjY/I+CrPx00XeEYYV8PuCCft8VWrPadvX704CwfjyJTCE4LHHHrPP3Kw+ULlyZWsw8JR7gbkE+HKXfv362eSCDz30EFq0aIEFCxbY8IuFCxfaXARk1b9/f2uAqFatmg1b2LJli3sT1iBD40JoaGj0+iVLltiQhJw5fVNWXcaBaLTeLaSk8s62U7J970Z89Y+avuEQfl91AJlDM+Cd9lWsG058vQrZ8LvdFFnlthRjGVHvcYQsG4HWWIIPD2/ApNWl0b5Gkfi65PP1fDjjS/eKz9GmuwbpsiYRgcQQ0O9PYigF9j68R2QcCOx7IDGj1zNKYij55z5UoplPoEqVKmjYsKEdBDPvZ8zIaTmXOMtc7y9CI0F8hozY6xlawFdi5PnnnwdDCxxhKUO+OHHjGF5odBg8eLA9/3PPPefsmqrvMg4kEzddalJCnFIarF8puUzgxLkw9P/DFdv/fOvKqFg07+WNsZdO7jVVCpYAIZmRsdotJhlhylwrZDaJEGvfDyz8Ck+EjMfAmZXQsU4phAbHdCeK3T1ffaZVnveJe0ZUX7WtdtIPAc7y8R7Rw3z6uaYpNRL9/qQU2fTTLj0b+X0io3T6uaYpNRImX6OC6D7TmVLnUrupR4DPFJwJ5zPo66+/Hj1RR+WXvyGOOMvuSrGzLdDe42PgGAYcHrENEM761HpPHe0ltUaj86R7Am/+sRYHT11A7VJ58EDD0gmP16lSwFwDGbMlvG9ytzbsjUsZQnFL8AKEHNuCnxfvSm6LOl4EREAERCAxBCLCgA1TErOn9hEBERABEUgmgZMnT+KFF14AvQE+/PBDmznfaZKx+YzHd4TLnJRg6T6JfxCQccA/rpN6aQhMX38QY5buRqaQDBh4Z3UzYxGUMJe1413bq/m4SoGns+YqhqBa9yIDLqGX8R4YPG0TzocpB4AnVFonAiIgAj4lMOkZ4OeuwOZ/fNqsGhMBERABEYhJgC7wvXv3Bg0Ezz77rHWJpwFg3759dkfG2bOM4a5du2xekrFjx9qs/1d7NjzmKPQpIQLyWU+IjralGQJLdxzDkz8us/159qZKKFvgcsyOx06eNF9SOxfYkAJUaO1xF5+vbPw0sPx73I65+Pj0Hfh23nY82rScz0+jBkVABERABKIIzPsUWPa968OY7kCP6UD+8sIjAiIgAiKQAgSYGZ8Z9Sm9evWKPgMz+o8ZMwZt27bFypUrbYk9egwUKVIEb731VvR+Wkj7BGQcSPvXKOB7SMNAt+ELceZiBDrUKoYejctcmcm6Ca59KrQCMl3BkHDl1hK3R55SQPXOCF7xIx4PnogBM4rhnnolkSPz5YyiiWtIe4mA7wkEnT0C5M7t+4bVoghcLQLrTbmnqa+6zl6kJrBvBfBTZ+BhYyDInOtq9UrnFQEREIF0S6BQoUKYOnVqvONjLpLXXnvNhhzQy6BgwYLx7qsNaZOAwgrS5nVRr6IILNt5DPd/s8gaBtrXLIpBd9W4cjgBj10z3tVC1Q5RLaXSW+NnYYKr0ClkFrKc24+hs7am0ol1GhFIgMDWGcg1opFJmvklTE2hBHbUJhHwEwL7/gPGPuS6n1sYA8GDxlBQqBpwZDNADwJT3lUiAiIgAiJwdQgw+Z4MA1eHfXLPKuNAcgnq+BQjsNwYBroNX4TTF8JxW42i+LBTTQRfKc8Ae3NqP7CLIQWZgIptUqx/HhumO2u1OxCCcDwa8juGz9mGI6cveNxVK0UgVQhcPANMfApB4ecR9OeLwHe3Asd2pMqpdRIRSBEC/I6nh0DYWaDG3cANfV1JZ+/+Cchqkl4x98A//VLk1GpUBERABERABNIzARkH0vPV9eOx0TBwn5th4KPOiTQMcMysUsDZ0fItUy+kwJ01H1SN3BP6L7JdPILPZ2xx36plfydwcL1/jWDa68DxHYjIXRaXshUAts8GvjD1iJd+61/jUG9FgATCzhnDQBeApWpL1gduNTkHHGFoV6eRQAYTMclcBCt/drboXQREQAREQAREIBEEZBxIBCTtkroEVuw6jm4mlIAeA7dWL4IkGQbYVadKQWqHFDiYClYBqtyK0EtheDhkEkYt2IF9J8wDrcS/CVAZ+aUb8Hk9UzbtT/8YC5NyLhpqlKVgnLn5M+Dxhcaz5Xbg4mng997AqDtcSpZ/jEa9DHQCNPqOewTYa5LT5ikNdP7ReIhljEmltAmfufkD17qJTwK7l8Tcrk8iIAIiIAIiIALxEpBxIF402nA1CNAwcJ9JPnjqfDhuMYaBj++ulbhQAqezpw6YKgXzXSEFldo6a1P//Ybn7DnvD52GLOEn8Mk/m1K/DzqjbwhEmpKU84cAn9V1eaWw1fGPAicu1/H1zYl83ErYeWCCySRMharxM4goUNW4XOcF7voWuHMEkCWPy/36czP7qhlWH8NXcylCYPqbrv/BTDmBrr8A2UwIgSep8yBQ92Eg4qKrxCENexIREAEREAEREIErEpBx4IqItENqEVjpZhhod20RfJJUwwA7um6iSxkqd6MJKciRWl2Pe54iNYAKNyHTpfN4OHQKfl26G9sOn4m7n9akbQK7FgFfNQH+etk12248QlCuBXDuGPBbD5P0zBgO0qrMfM+VnK1AJROT/XzMXl7T0dQgMmOjAe38CddsLF21Tx+MuZ8+iUBaIUAD1uxB1gsGnb4DeF8nJG3M/V/a/O+eNgbjn+8x4QjGWCYRAREQAREQARFIkICMAwni0cbUIkDDwL1RHgMuw0AScgy4d9IJKaiWylUK3PvgLEcpZA+F/o1skafxxQyTRVviHwTOHjVJ/IxL8nBTCvPAGpcL8z1jEH7n9xhd8lVcyl4Y2DEPmDkgbY5n73ITcz3YVs5A+8/jul6z19kLAl2MwtXhC2NIMzOxGya7QibWjEubY1KvApfADuMNNvEJ1/jbvu8y0F2JRrDJO9Dpe9f/LsMQ+P8sEQEREAEREAERSJCAjANReCIiIrB//37w3ZOcOXMGhw8f9rTJ79bN3HgIPyzcgfCItFHq6b/dl0MJbrYeAzUREuzFrclZzx1zgWATg1rxKoYUOHdECeOGXrYZMkeexQMhf2Hc8j04cFKzVw6eNPlOF/xlJqHZp9eZd6NYBIeaWffnbKz+7vyN0Omr+Xhhyj7MqPa2S/GeZRSVbbPT1lAiwlzhBPRqqP84ULxOwv2r2dWMb4FL4aJR5NcHXKXguCwRgatN4Og2YLS5R3lf13vUhAsYj53ECsNoWMEgYzZg1S/AnI8Se6T2EwEREAEREIGAJOCFBua/nC5evIinnnoKPXv2jDGIKVOm4LbbbkO3bt3Qvn17TJ06NXo7j3nrrbfQoUMHdO3aFQ8++CB2794dvd3fFhZvP4pHRi7BK+NW46aPZuHP1fuv6hBW7T6Be4ctxEmTY6DtNYUx+G4vDQMchRNSUN6EFGQ2M6FpQaJyDzyS8S+ERpyzpQ3TQrfUBw8E6CHwTWvXDCXDBso2Ax4zSnOL/+Gvjcdx8+A5WLbzuD2w75JcuNDwWVcIC8MLzhzx0OBVWkXXa44lb1nT91cT14lcxYD7jMfALUZ5oiK1emxU4sUpiTtee4lAShBgyMuPnQAaqioYL57W7yT9LIWqAh2/dh3Hyh0b/0p6GzpCBERABERABAKEQMAYBy6ZGcH3338fGzdujHFpjxw5go8//hiPP/44Jk+ejB49emDQoEE4ccI8lBih4WD58uUYPnw4xo8fj8KFC+Ozz0zWbz+U1XtOoPu3i3E+LBI5M4dgq4mBf3TUUtw+ZC4WbUv9WUIaBu4ZtiDaMPBpl1reeQw412LNeNfS1apS4PTD/b10Y1Nuq4EJKziFPiFj8OPCnWa8ZgZMknYIXDCZ+/96xZVbYNdC425fCLhjONBtAi7kLoN+E1Ybg9pSnDwXhlZVC6F2qTw4cuYi3j/XHijVEDhlDGzjH3EZCq72qA6uM3HZUZnabzOl3EKzJK1Hdbobg4gJlyjVyJV/4Ke7zdgec+UlSFpL2lsEkkcgItzlxXLY/GYXNAo+k2iaqhteSeV2LkMZPYPGPgQc2uBVMzpIBERABERABNI7gYAxDnz33XfYvn27nf13v6jz5s1Djhw50K5dO4SEhFgPgsyZM2P+/Pl2t9mzZ6Np06YoWbIksmbNio4dO2LZsmVgmIE/yZZDp215QFYBYEz/4v+1xBvtqyF/9oxYbuL96S7d47vF2HTgVKoMi4aKe0yOAXoMtDEeA8k2DJw+FBVSYNzAmWQtLclNN2DfagAAQABJREFUb9mH2h4hU3Bt2EprIEhL3QvovqydAAypa6oRGIMfFYfrjZL/hCl9du2d2G6MZx0/n4fv5+9AaHAQ+t1SFV93q4M321+DDEHAtwtMksmmH7uy/m+a6mrjasJkGAGrE9D9uo5RgGiY8kbylAYemAQwoVtIZmDFj8aLoAGwZbo3rekYEfCOwJTnXfdctgKmMsHo5CeYvaGvKeNpEnFeML9xNHrRO0giAiIgAiIgAiIQg0BIjE/p9MO0adMwadIkfPrpp5g7d26MUTKPQNGiRaPXZciQAUWKFMGhQ0bZNMLtDRqYB+MoKVasmNEhLoEeB9myZUsxI0FkZCTOnz+PoCCjhSRT9p44j/u+XY6jZrazcbm8ePvWCgi/cB53VC+ANpXz4Nv5u81rF/5ZdxDT1x9EhxqF8UTTMiiUM1Myz+z58LX7TuGhUSutYaBl5fwY0L4iLpw/hwued0/U2pCVY0xlgEiEl2qBCxHmtk5Lxps8VRDa4GlknPsBBoV+ga6zKqJzrYLI6E1eBQ80wsPDwfuF75LEEQg6th0Zp72CkG3/2gMiitTCxVbvIbLQtUa5BiYt3Ir+kzbi7MUIlMiTGYPuqIZqRXLY//dSuYLR6bqi+HnpXrw09Qi+bfMRMo97AJf+6Y/zBa9DZJGaieuEj/cKXfQFMu5ZisgcRXGu0Qse/wfOnj2b+LNe2w1BxRoh05Q+CN67FBh5O8Jq3IeLzfq5Qg8S35L29DMCvvz98WboIUuHIdOS4bgUnAnnO3yDyNB8Hu/nJLfdaiAyH9qE4IOrEPFzN5y/8wfvvRGSfPL0dQCfg86dO5e+BqXRpAgB5vLi8yzDdCX+TYB6jyT9E0j3xoHVq1dj8ODBePvtt21IQOxLeurUKWTMmDHGan52PANOnz4dY7uzL9dT6G2QEhIWFgYaKoKDvXSjjOrU4dMX0MMo4vtPXkDtkrkxpEsNZA693GYu0//eN5bHvfVKYsjMrRi9ZA9+W7Efk1YfxP31S+LhxqWQM4uZjfeRrN13Ej1+cAwDBfBxp2vNrGzyHVhCN/5he3ipavsUuybJQXCp8bOINIpoUaNk9bn4leFbHXfVLpacJqOP5Q8v75WUuhejT5QeFsIvIHjBZwie9zGCIi7gUuZcCG/2P0TWvM94A2TABWMMeGvKBoxZtteO9uZrCuHNW6sguwnDcZenW1bAlLUHsWDbMUy9vg7a1u2JkMVDkfmPx3Cxu5lhT+UymkFHtyJ07kDbxfC2gxCSNbd7d+0yH8z4fZIkg2PBSgi/7w9cWjgEwbPfR+jKkQjZMQth7QbjkgmXkaRPAr76/fGGToYt0xDyb397aPgtg5GhZD0k/xciqichORB+10hkGNEKweY+zjTzdUS0esebbgb8MV59nwQ8tcAEwIkL/vYk93k2MOlp1CKQ+gRiPvGm/vlT/Ix//vkn8uTJg+nTp9vXli1brFcADQZMLsiQAj4IucuFCxeQPXt2u4rv7tZOZ9nZnilTysyusw80RCRH4TthYqR7jFqBHUfPoVrRnPi2+/XIkdmzol/UjOPtjjXw8A3lMfCvDZi0ah+GztmO0Uv34IkW5dGtQSlkCrlsVHDnldjlNXtP4IHvluPEuXDcZGK3h9xznU8MAzhzGNg5z2aWD612m1HMUuaaJHac8e53x9cI/7wROmAe3po1ChkbvJo0RS2ehvnDy/skpe7FeE7rf6u3GC+BSc8ARpG2UqMLgkzIR2i2/PbjRhNS0+uHZdh08LS51zOg/23V0OX6kh7HWcjcY8+1roz/jV+NAX9vQqvebyBk9yIE7VuBTH89B9w1wuNxKbKS4RB/mnGFm0oYZkwZq97s8TT0GuA9kiTjgNNSMzOmqrcA4x4xY1yJjD+YfAv1TS6CG19Lel4Dp029p1kCvvj98WpwB9aaHBcPmxCfSKDZiwitZdz/fS0FypgKBsZj4DsTSrhkGEKKGk+f6+7z9VnSfXv0GuAzCg3TEhFIiACfm0NDQ+0rof20TQREIG0QSPff6gwJYM4AGgH4Yj4BWi+5zB+1/PnzY+9e1ywhLwndKVnSkOspfN+zZ49d5h8u8+E6Xz7j5piG5ezFcDw4YhHWGRf+cgWyYeRD9eI1DLgPo3T+bFZpn/hEIzQom88o8mF4e9I6tPhgJn5bttvwMYqIF0LDQNevF9r2fGoYYF/W/e56mCzb3MR/x50x9aK7KXNIvnIIYhy3kSfPfYFZS1akzHnUakwCTBg4prtxi+/gMgwUqGxi6icDt38JRBkGRi/eiVs/nWMNA+ULZDcl1RvHaxhwGqfhoIoJNdh97By+nLPLJEz7xrjbG6Pimt+Apd86u6X8++JhJt+GMY5lL2jyBLybcucrWAXoMd0qbchg7MoLvgC+NHkNdi9JuXOq5cAhwLwxrExw0XjlXXOnuc9eSrmxG28E3PKxq/1JTxvj8oKUO5daFgEREAEREAE/IpDujQONGjWyHgL0EuDr+uuvR968ee0yY2doPDh58qTNSUD37IkTJ9rYqPr169vL2LhxY8ycORO7du2y8XVjx45FrVq1bL6BtHqdL4ZHouf3S23ZtWK5s2BUj3rImy1jkrpbvXhu/NSzPkY8WBeVC+fAnuPn8MwvK005t9mYseFgktpau/ekqUrgMgww27vPPAacXqwd71qqdruzJs2+B9d9ADsLNEOuoLPI+/dTriR4aba3ft4xJuhbYAwAn9VxleYLzQq0fB14dI5J1tfIDu70hXA89dNyvDB2FS6Y/5u7ahfH7082RiVzz19Jgk1Wwtdvu8bu9sWMLdgTbHKXsBQgZcoLACsHpLQcN0aJf8zsPaXdh67kiK5PKfM32BgFqLQ9bIwENBYc2QwMb2X60N94LiieNGWgB0CrYeeBn7sAJ8z9XNz8v7YfkvKDrnWvy/uFCTxHm+UTu1P+nDqDCIiACIiACKRxAuneOHAl/vQMePLJJzFkyBC0bdsWQ4cORZ8+fZA7d257KNdVr14d3bt3R/v27bFv3z488cQTl5s1CcBsdvDLa67qUoSZ2X/yp2WYs/kwCmTPhB+MYaBIrixe96l5pYKY/FQTfNipBmhoWL//FB4YsRhdhi7ASlPl4EpCw0BXU67w+NkwtKxSEJ/7KpTAOTHry2+bZZJKGaWlkmd3amfXtPJeoOtQHEEuU7ngP+yaNCCtdCt99YOz2UObGXd7o6QzOzlLmfVaBDTuY8NPOFhWzGhnjF0TV+5F1ozB+LhzTQy8qwaymOXEyvVl8uK2GkWtYeGtP9YC1c3MJ5UOuvj/+gAQdi6xTXm33+/GwHTxjHH57wBUudW7Nrw5qkgNoKf5v2tsZl0pc4xRZFgL4NgO12f9FYGkEGCVjd2LgVwljMv/zyZUJXNSjvZ+35veBsqZ+/aM8Vr4yRgnLp71vi0dGdAEmN9pwoo9JixzvU1aHdAwNHgREAG/JhBkMs565yfu18OO23nGbR84cACFChXyGOfPBISM2S1YsGDMg98xs4U5igCt3wEqto65LRmf6M3A0olJyTnAS9n315UYu2yPTSL4yyP1zax/zmT0IuahF8Ij8N28HRjy72YbHsCtLIv4XOtKYDhCbFlnkg92+drdMFAbGU0st09l6bfA772B8i2Be8f6tOmUbGzc6BG4fV0fhMHE4T06AyjsmoH25pxMnqmcA1HkmE9gunngXz3GtSJ3SaDtQGM4ahMD7bdzt+HtyesQFnEJVYvktN4sZTzcwzEOiufDvhPnbNjNubAI/PhwPTQsYTwUhjY1pU42mljm+4HbBsdzZDJXLx/lKl2YJY8xfBjFKnuBBBs8duyYNXp6lXMgoZZpiBnX03gRbAGymnCrzqZfpRomdIS2pXEC3vz+eD2kGSYUZsZ7rpCch6YChap63ZRXB7Kk4dfGQMDvDnqf3fWtV80E2kHHjx9Hzpw5AzbnAL3OFm07grmb+TpsJ06ce+CzrrVwS3XzbCixBJj4myG9zDsgEQERSPsEgvsbSfvdTPkeMv9AQj90TLzjsYTHyp9crrWrfgV2mQd0zqhFxTEnp9dMCMUv0qQk++n/+1r8tGiXnQUd+dD1uLZY7uR0Ic6xIYZR7VJ50NVUNmCFxVW7T2Cd8SQYtWAHDhmrefXiucy5Q+xxNAx0jTIM3Gg8Br64JwUMAzwT3ZmPbQeaPGvYV+cav5BCZaph3JwVqBm0CRe2zkVI7W4u7wcveu9kFk+KIcmL06TtQ04fBKb2cynLB1abMiKZgEbGS4AP+nR/j5ITxoOFYQTD524H02fcZxJt0pslv/Gy8VaY5JP/D/O2HMEq443QtWF5ZGDYwgqjJNOzKH9F0wcfKzzMo8Ba7ab6gjU+lLj+it1nKSk+oPncOJDTPASbRIjYvwo4sMZ8MfxiDKaFXd+FV+yVdkiLBLz5/fFqHKuMEW/K84CpFGKTBJas71UzyToo1HjWlTXGgf9GAybZJoKM51BU2FGy2k3nB/P7xOsEp37IhuGaS7YfxS9LduODvzeg/8Q1GL98L5bvPI7Dpy+aKlAZbDjaoVMXsMZ4TN5Xv5R5fjM/DBKb1JvPJ6pWoJtBBPyDgDwHknudGK/IhGCc+Th/3FUzuU4PE5f7oplFy+t160mduRlkfqw+nb4ZGU1ZQOYJaFQ+v9fnTuyB+0+cx4dTN2LM0l1W0aJrds8byqJJhQLo8d1iHDOKWIvKBfHlvSlkGDh7FPigvOmu+QF+bnPKx1snFkwi93tj3BLcs/xelMuwz8S+Pu51MrmA9hw4f9Jo5WZmfr6JUQ4zLsFUMmp2Nf9/LxsX5WIxrsTSHcdsyM3e4+eR05QmHHBndbS9xnj9+EDoVdPqw1nYefQsXru1Kh5sVMZ8Lwx3VUdgWcNHZgN5zTpfCV2gN0x2eSt1Ncp4IiTFPAecc5tkrpj6qrkWn7nWsJoB3bYzJD5Mw2kqrbwzAevFiEicN14hzElxIcy8zLW2y+b9vPPZvru2xV7XqU4JlMyX1bdD2rvcJL4c56oWkQJ8k/r749XgaEw3FQOsgavNAPMd+KhXzfjsoI1/G4NbJ1cemM4/mDCdW3zWdHpsKL17DtATk0r+vC2HrXfAom1HQe8wR5hzpobJzdSofD77vHVdyTzgups+mokth87gzQ7XWAOBs38gv8tzIJCvvsbujwRkHPDVVWPs+7/mQXjpCFfmfLr6NjcKSp2HvHo4TsrD2dezt9qKAvxh+sLMgt5UzczapaJsMiXgBvy5Hv+sOxjjrClqGOCZln5nQgqe8ruQAgfSziNn8eSg4Rgb2g/BQZEI6jbBzGA1czYn+j0gjQOcMadRbtZAgG7BFOYVYGm9ApVcn6P+8iHvy5lb7WwPc3LUKpEbnxq3z+J5fKuw/bP2AHp8v8QaHv7t2wz56I3wi/EIWWuua7HaQPe/ovMdxOhgUj+sNuEzrL6QKacJJ1gIcOY+EZLixgGnDwx3+MN4bdBwWu5GV1nHzLmcrWnmPdwo/SzbutA89FuFP0rBjzYEGOWfYSfJlRrGo2rsYw0RYgy3yRYaYOZ+7PqtiQx35Zm44xvjKZO0hLNX6kdSfn+u1JbH7cd3ulz5GevP38hbPvS4W6qvnPuJywMpYzbgoX9SP8Qh1Qfs/QnTo3Fgx5EzNl8TQwXmG6MAJzjcpWKh7GhsJl44+VLPVHPKninEfbNd/nP1fjw6aqnN+TTz+WbR3pRxdgygFTIOBNDF1lDTBQEZB3x9GVmn+a+XgK0zXC1TUWn9rlFgzUNyEiSxD2cswcZM6xQmDex4XfEknMWHu57ch/VrlmLm3HkIOr4dh4u3RN8eD/g+x4B7l0feDmyZbtyqzUyln9apfuLHZSi95nP0Df3Vlbvi8flJ9oAIKOMAlSOG8swwOT6c7OKlGrmqEJSo63532GUmiXpm9ArM2nTYfqZny/MmR4ZPFLU4ZwPu/2YRZm48hLvrlsB7d1Q3hgvjTfRVE4DKUIMnzHeBMSAmR2iEHGLGeda832o8Jmrfn+jWUs04wB6xNNzoe0yiN8M9n/HuoXeDKeWZVuTgyfN43PzvLdkeZVhKoGOZTJ6UTKHB4HvmqHe7LsSsM67EHtdFbWP5V3qq9GpezuRmqZzAWRKxiffQbya3w07zHUFh9Q16yzChHme6M/rO2JXY3x9XR5L4lwlCh99kqnmY30r2vav57mMVjLQivz1sQgzM/Zq7lEm6OSNZHoBpZUgp0Y/0YBxgCIDLM8DlHcCqTO7CJMw0BNA7oGG5/CiQI5P75niXOwyZixUmYfOzrSriyRsrxLtfoGyQcSBQrrTGmV4IyDiQUldy/SRjJHjFxMNvc52hYhtX0sJEPiAn5uFs0n+mcoKpTGAmRvHGbdXQrWHplBqNq11mXmfSMSZaO7LJvEe9uMyM6bGlTFNXeEVKJCeLDikwJ+272W8f4Jgx/7ZPZ2FspjdQK8hwrdbRNdMam2UCnwPGOLB+MjCtP3Bog4tGoWuMUcB8rtDK9TnWXz709f55BfgAyFKeg4zxjNU3UlK2HDqN1h/NQoT5p5zYqzGuNbPGNhfJiNYASyveMybe/iaqX2PMLCuTLfJ/6/6JiTrE2SlVjQM8KcssMi8Cc0Bkzu3K/1CuudOdq/Y+3+SGYEUXxgkXzpkZbxn336JGCaCi7yj9jB/OZBT85CZQXWxilDt/NR/mKxo/PVwf9c1so1ey0sTDT37WVXmD+Rw6fGFy25h7eWQHV6Z9xupTyc5svEl8IIn5/fHqNOdPmJKF9wDbZ7tycfQws/NpzauEZRW/vdmVL6R0Y5OYxHj+pCXjhVfgfX+QvxoHDhjD4Fczt1gPgY0HTscAkydrKBoYI4DLOyAfSuUzHiReyIKtR3C3qehEz4JZzzdPcilpL06Zpg+RcSBNXx51TgTiEJBxIA4SH65g3e+F5iGOrs+cLQkOBa5/BGj6/BUfiK70cDZjw0E8bFyY6fb67E3GOt3Ch9bpE3viKv80BLAGdXzC/ApMvJbP9IMumZzd5YMgpcwNZswv+jbJ07KRwMQnXG7L9/3mOo+f/r1n2ELs3LIG07K+gowRZ4Hbh5oEb50TPZp0bxzYMc/l6stSZ5Q8pV0hO9d2MjkGguwq5w9DCDYfPI1xy/fgC/MASMNZ/bJ58cndtVDIKIKpIe+YKghDZ23FdSVzW3dymwBwzscmeeZrxohllMNH55pQgCJJ78qGKS5lmzPG9DAhhyRIqhsH2DcaDceZ77x1v7vCq1jVpd6jSei173blvfGVuS7vmxAoJqPkjODgu2u6wj98d5o4LTEvy+Bpm0xJ2cz4s/cNyGUUkEQLQ2b+eNqVX4AHVbnNeIx8ctkYSmPt92YdvWiYDPfeccZoYO6xZMqVfn+8ap59/cl8r/G3JLsxbHT/27d5OLzqVDwHGU84fN0MYOLPtBT2EE93r8ZqfzUOPDJyCf5ac8Aiy2I8gViO1vEMqFY0p88Stj44YhH+3XAI3RuVRr9bq12NS5RmzinjQJq5FOqICCSKgIwDicKUzJ2YSX3aG67s5dRWqCDc2M/UQ+9mHpgzeGw8oYczzkbdN3yhTYb1cJOyeKVdFY9tJLiS9ZyPmBl36wGw0TywOcvmwY2uqp6Exo08ZYwRwBgAaATguzUIGLfh2MkXaRhY8Ll5GeOIYyQo3cTlScDZmOTKqDuAzf+YkIJPTUiB4ejHMnvTIXM9F6F71rnoFznEFUv+2Fzj1loyUaNKt8aB/WbGedrrwCajRFBYBeSG51wP67wXjZw8H4aVxn2TyQaXmRddOU+eD7fbaDd4yhjNehu3ztTMGs0SV80/mGE9FqJDffh/z3t2yzRjJDP/B93MrH88//u287H/8H9oyPUuZcXL5G1XxTjAcXDszMdCIyml9gPAzR/4Jv+CbfDKf3if9P1lJf42eSEoTzQvj2eMy29q3BfMbdDJeA8sM1nNbzalX1kdI1GydSYw3hhSTu51lflrO8D8Ztwb91B6aNBAwFJ8DGPjTLc3xie3lhP6/XHbLfGL2+eYMBPTdxo7ChlFqcto8/1WIvHHX409WaKTHgTMb9LuQ6DuQ1ejF2n2nP5oHOCkygMjFtuKTsO61UGd0nmT7R0U3wVixaabB89GqPmen/ZsU5TIa4y6ASoyDgTohdew/ZaAjAOpeelYJulPM4POmVAK3aLbvGdm1o2yEEviezijG3oXUyLwlFGAouOaYx0b5yM9Aejay/Oz3Nj+/1zl/+LsGLWCSlgM5b+CyxDAmcqkZsa2RgJjILBGguOuEzBGvNlLHscdX5dirOcD5kBjkKCzrh+HFLiP6eZPZmOteZiYXWo4ShwwCiQZ3f9HohTIdGccOLbDpUyyJB4Vy4zZgYZP4lKDXthyIsgoWS5DAN83GS8B7uIuRXNnNrP2eXBv/VLeu3G7N+jFMmPNnzHKKGNUZ/RthmxMXHX6EPBlQ/N+0HX/s6JJYmXCE8By4y1TwhgIHvwrUfdF7KavmnHA6QgTKY5/3Chbxm2b93fnUXGNis6+PnznQzoThO0wCUBzZgnFx51rmCoqhXx4his3tctUsWhr/sdpOHrfVMlgBYN4hcoojclO1Qdec3oTJVTt4pQxejDEgHH8/J5mclO+eynx/f541RwTx056xoTVGKMdw+vuGG4MoOZ/2h+E4Rzjepr/N/P/S6a+MGz7w7gT0Ud/Mw4w6ehNJuSL3wMv31zFVlZKxDCTtcvTJt8Nvdhur1UMH3Wumay2/PlgGQf8+eqp74FIQMaBq3HV1xjXT9ZkZ4IpCl1Fb3ozxsOcp4czxjPf9eV8HD1zEe3MDNSnXWrFnPliTDO9AaKNADQEGIMA4/NjC2de85aNmvmPUv4dg0CW3LH3Tv5nlpxb+KWr5BxLPlKYi4DhBmWbuj4n9i+zoU/oZY5rbh7Yxif2qDS934QVe2x8fM18ERgX1BdBp83Dfsv+QOOnr9jvdGMcYPK6We8DS76xme4vBWfE3vJdMSnPvZi39xKW0SvgXFgMHizdeU2xnNYYULtUHlxnXqkVPhCjI7E+0IW94+fzsNz0mUkQ+TBqZesMlxKHIOCBSa7/gVjHxvm45V/XMSGZXCEJ9NjxQq66cYB93rPMxJx3NR4Qxm07T2kzg/wzUDCKjRdjutIhY5fuxsvjVtnSg3QZZlnVqzWDN84YjJ42BiOWfJ38VBOUzp8tbveZ0Pa3HsaYu8ZliG36AtCkr2s57t4x1/B7/oc7XbHyOYq4lFl6Enghnn5/ktxM7NKWxsCHlsbokRSPmSSfNAUO4G/13E9ciWJZwSB/+RQ4if816W/GAYb2MMSnQsHsmNK7SYolpXW/kjQKthg0A+EmjonnrFw4p/vmgFmWcSBgLrUGmk4IyDhwtS4kkx7NNy7xsz90ufEbRchmM2/yrJ1Vif1wtvvYWdz5xXzsN8l0mlUsgK+7VkXooXUuLwB6AtAjgA+UnJWLLSyrWPha86ruehUx7wwHSKoXQOx2vflMI8Gir1xGAnoAUEo2cIUblG3GT1cWJ6SAsbe1H7jy/n6wB0vsNR34L3YfO4cxLc+izhyjINCA02O6iSU21ysB8XvjwIXT9n8hcu5gZDAhLaaoI6aFNsPrpztg96UCMUbOBHI0ADCen+/XFM2VYm6hMU7sxYf/dh9He5O1OsSUGP376aYo4yiD04whcPYHrhKEzD8QOyTH/VyM2f+8vsuQyDKNTcwMrJeSJowD7DvjuGkg2LPU5RXCmeRKZkbZh8JZwtcnrsWPi1wGWM7Uv9G+mq0s4MPTJLmp3j8vx4QVe1E9qrxhqFPekO4vNJ5SEY246DLc3jHMVQIzKWfh/xLj+unGz/vqPmM8ZS6CJErs358kHu7KscNymwwJ4vfYLR97DolIcsNX4QAaOVh5Y8Nkl0GrxzRXiNNV6EpaOqU/GQeopLf8cKY1Ev7cMxmJQb24AG/8vgbfzN1ukuEWwIgHjRdQAIqMAwF40TVkvyYg48DVvnxMfDStv0ngZ2bQKNmNu6tRAk6WvQVZs2VDSEgIDh/Yjfe++QX5T29A4xz70DDbXmQ4ajwE+EAZWxinbo0AUcYAKpa5isfe6+p/ZoLGhTQSfHa5Tj0zbtOTIKGM5iwNN7CcGbt5YGNIgQ+Sb119GK4efDdvO16buAa1SuTGuDLmoX7RUFcMcc9ZpmxZ5ni76Y/GAdaSX771AMIWDUfNbV8jZ+QJO75pEbUwIPxubLxUAqHBQVb5dxkD6BWQ2yR1yxIvh7S44YWx/2H04l3WoPdt96gHQ3r4jGhrqhgsdLlZdx0df9cnP+8yphWpaQxFRilJRtb0NGMc4GhpHGVC0VW/upJK3tjfeMn0iZ9DErbQkPrYqGVYZUKwWH3gjfbXoLMpLZkWhLkPGEJEI+BjzcrhhTaVTU4B8xsw/jFT/tZ4iFBqP+CqbMPErt4I2f5yn0sxz5TTVMgwjPndmgRJlnGAYUE0UBw0xmsaKDqNMu74JozEn4U5er5tB+xd5jLY0OsnNIs/jyjZffcn48BD3y3GtHUH0cG493+cyu799PRsMmA6zlyMwGhjmKjnbcWSZF+xq9eAjANXj73OLALeEJBxwBtqKXEMkx8xH0FURvaIgtcgiCWrjEdAhjMH4p6RMZAFzIMllf9oY4AxCKS1slBxex5zDWe66Ekwz3hROJ4EjLFlTgLWwI4ty38wIQUmbrlsM5fbbOztfvz5nHl4aPDeNBw/G4ZfH6qFun+1N4kiN5rs7o8AbY27fTziL8aBI6cvYNr6g/jHJIWL3DQVrwUNQ4kMJpTAyJLIivgqYzeElG4Y5RlgvAJMuADLyfmzcMxMTsgkicPvr4MbqxjjH4XZ5b8wChNDbJh3pL5RDmPLjvnGiNDGePiY//WeM83/+TWx90jS5zRlHHB6PnuQK76en6sbhZIJRhk+4aX8axKO9THlK0+Y8BOGD3x573WoZrxL0pIs3XHUhofRtPtnq6OotPhV13cfE9W2H2K8KNomv7sRJvzmt4ddVQ6oxN79o+fv03jO5LVxYOcCl1fI2SMuwyYTDyaUKyGe86fJ1cwZMuxG48VjjB+VbzFGj5H+FyLhQ7D+Yhzg700PU9kpR+YQmxiwYI7MPqSQuKY+NSENg0xIgzX89/JzQ1nihhxjLxkHYuDQBxFI8wRkHEhLl4ieAJxJY8kzZqiOklOXsmB7SBlUqNEImUuYGUSGCBSoYh6iTShCehEaCRZ/bYwEgy/nSChe1xVuUL7l5VH+cJdrRoxuqnUevLw+nSx9ZB4gPjEPEi0qF8Q3Nxl3XD6MMpHXvb8B5c2yB0nLxgGWFfxn3QH8bUpHLd91zDq7NMiwBt+GDkCmoHAczFwW22v2RbH6HVHM1JpPjzJi7ja8/vtaUzM7qwkvuOGywWPdHy53ZbpdM5a5qPnfdoSzv0xeyPJvNxjvgRavOFu8fk+TxgGOZr2ZhaUiyxCK4nVMokKjyOaIMqIkcrSRJiznY/N/w7hiyo1VCuLDTjWRyyQgTIsy5M/lKDinH+4KMV5BlAqtjGHgc1eJP9ea5P+lO/zvT7kSWTJs7c4RJr+NUWoTIV4ZB+j9NvFJV1gEv7N5vsw5E3E2P9rlkDHWDjfXikY9GvRo2AtQ8QfjAD3UGE5AT53+t1bFA43KXJWrdfZiOG54/18cPn3R5j1pc42Z+AkgkXEg/V7sSPM7wxxLwcHBSR7k4cOHkc14SGfJEvfZLyIiAocOHUKBAgW8ajvJndEBMQjIOBADRxr5YFwYT88bjmH/ncfYfflwKVcpjHmsEQqbOtnpXqggLHKMBGb2iUKFgeEGNBZ8UN4oyxEmpMAoAayqkM6ELogNjffA+bBIq0hW3GhYsJwfvUgeMzPJHuLT05JxgLkTWFZw6tr95nUA201maEfo4n1P8cN46dBzCI045/KIaG0erv0tQZkzoES+s5QdM9WzssJzrSuhlymjFy2Tn3OFjzA56CNGUcyUw7XJSYJG76BHZvvEEJhmjQMcMfOl/HS3K7dCzqJmpvunmMaSaGBxF46Z/5mnTCz/7E2HYdI7mBKFZFzOZ/XK454xmWvM7Pql33oiyMxAn78Uit8KPo6uvd5IZqPxHE6D81/GC4vVYphjpr15r9E5np0vr06ScYDn4HfUnI9cDdDTqfW7rvNdbjL9LDGfAytD0DvDy7Ki6QGGPxgHBv29AZ9O34wqRXLgjyebIJhfEFdJRi7YgVfHr0b5AtnxlzESX82+pDYCGQdSibjxyLS/pZxI4iRiCguNAgMGDLBnefFF84weJcuWLcMLL7zgfIx+HzVqFAoVKoQdO3agX79+2Ldvn93WvHlz9O3bF6GhLmP+lClT8NlnnyEsLAwZM2ZE79690arV/9m7DvCqiq27Ummh9xY6SBNpQgBpglIEFFBEQQXRJ4pg4Vd5Kjb0KT4VFBH1Ic2GgjQBFVE6Sq/SIbQk9A4JgeTfa07OzSW56fcmN8ne35ecNmfKOnPPmdmz99qilFXJNAT8XhfJtNK0IJcIkDzr5IWrOHj6EnZFXMDGsEt4f2t+/HCooER8Ko7vHw9BhdwSI5crXPSPbTrIcpE4ttWKwMCwdvyLFN/0Kq1zbMzpfMJkfvxCFDYfOQeuNtzZSVwLDsik8cROiWN+AKjXM1Ef4gvUVybY5KfICrkk4dkWi3XAZ0v3YcRPW8FBEGO6nxXT7qL5A0xkjaG318C7rQPRYc0g+F29YJmQk1AyhysG+Dx8ZUDKAeHMDUexUXDp3bgCgsTE1UiVNsDuX+T57hJXg8NAne4Woz+jcfjIQJZs/m6KBx8ZGYm8efN656Q5qBRQ/z7LrYq+6lumSzjVailGMtgk0SAe/N9f2B52HsUKBIKxy3sJvj7EztvkulgALXnHRFrxkZXnq6VuRq9LL+K707WESyOvuNF4wP2BOHAVnxP40OVipTFPlKolxW++UbLoREVFmYEa3yvJCpW5Mx4BNky1lAFdPxRF7gvSd1O4L9lMvfwieX2KVgZ2CJb7FluDcBL85jLh+yRPnjze+VuTZxF68pJxMbouff/z/o1Rvmj+LH1CdcoWwtzNYTgg9Srnqd97lrYw6cKvXr1qxifpWV1OOle9cgMCDJE8VcYPuxdaocob3H/DZXcfLFq0CC+88AJ27tyJqlWrolWrVo4iOOn//fff8eWXX6JHjx7o3r27+StTpowZq7711lsoUaIExo8fDyoGvvrqKxQpUgQ1atTAqVOn8H//938YMmQIXnvtNQQFBeGTTz5Bt27dzPjFUYjueBSBrJlNeLRJWZ85J3VcAebfKW7FlMxszbmoROcY+9qVFJIJxLRBt7oOeeXqhpx0jmRcLYeJEuAxcTf4n7gbyETSdrWoIxPmHCyP3VYVX8sEm6zmw2Wluew9wskwoaUMRucCm74Fbnkgy1sfcS7SuAvQn3PVvlO4KqvjtpCVv4P41nesUxpNJKIAJ8c4KxPfr3pbvtU177RMqL1xAmc3ws3bFtVLoLOYki7cFoH/LNyBsfc3tEqgf33vycAXovCiSxHDe9JyhoSbLcREm1YzuUVoCfSQ9PH5z1mm8D8+IqR2ohRr+5KlKEmAA5VQZAKPvh5roleMf7Cx91pXndxruU6Q0I79vtVzCGz3bwzaanEkvC6RFZpWLoaqokTyiEhZxirlt1cE3+etaAKtns1YUeeOWsSDjJSTt4j44IuCIK1haTNWg6y7+2ZRZDEU8R9vATMfBR7+OXf9VrMO+VSXTHJffpfuFWVh40rFUn2fpxIyMsnwO2rh6e824qPfdxtyxLwBfp4qTvPNbQjMk/GyzdtF7hcqozNAYJwSfC1btkT9+vXx+ecyPk1CKlWqlEh5eO7cOWzZsgXvv/++cSeoUqUKmNfy5cvRpUsXrFq1CgULFkTXrl1NrlQsTJ48GatXr0anTp2SKElPuxsBVQ5kENFnp2+KVwJckom/KAKirsVPlFKTPUOdFZVVr+Lyx9UvboMCfXBf0+BcGxfXgVugaPtbDrUsCdZNtKIb1BbtaA4WEql1rV8W87aE46sVB/By1zpCSPi+MJo/AdAMnRNIrlxlsvwjq7PkD6C7AJngbeFcp7EoAe4QZUAH+auWcIJz6aSY4YpCh8od1v3eKR79aNn18rbty11r4w8hZKTSp1/zSmYyaOrIuOlccZ31L+DnuAkb3QzavextTfB8fcij0mOcWAxIn/9N2r/0XbGqEEuCuydI2EN5F4iQuPOln7YYHHn8SIvK8hupLdEt4lar6XYUfcX6u8ZtpIR4jTvmeYZ7lZCZjvNMHyB5M39uSeCXaBt3Lj1kieu+EtN+mZyzbK463/OF/A5CWHXcfUt5LNl1ArM3HhXXiE2Y9WSL+HaYFG78R2VToCgf5ksf+/11S0Fw+8j0FUAC3e/7AlytooVH3x8kPK7049wkrYdb5IS0mmB0BkYTyYL3cm6CPLVtXbgtHEt3n0Ah4Rx5qfNNqb3N4+nuurksPl+2H9vk+zlpZaiJWOLxQrWAnI/AZrG0Y6hVRqchzwsJjxkqOLiZx9qeP39+2H/kB3Alb7/9trEYqVOnDu68805jaUSeAUr58uUdt1SoUAG7du0yx7xerlw5xzVar5UtW9bwDzhO6o7HEVDlQAYhnrPpKMTN+gahbzXNqYvJH7fOfzxXJME1WggkFP7Y+KOg76dKHAL1Hhaz6weFc0DwyuG49GtSxigHvvn7EB5uWgaFqnZFvppdEbB7Pq79OAiX+8xwmO6SEObatWugKbC7hZwB360Px5LdpxB+Pj7/fAG+CKlSVEL0FUfrakWNUssqO+bGPnv1Igr8cC/8hFjvesk6uHTXlzK7i7b+3F1ZL8+vkCwSDQypgM+WH8IrMrmd/mhD8ZEXzQqlShfkrdMLgf/MBF8nlzu8h+sewIm+n9lC6vaDX4EKyD//Kfj8MwfXj+1ATInauHz5EnaHncKDMrl/LI9EJCgodBx7pT99EIlYTvpFCeBDAk8PSSzkeYnyINZflAX+eRFLJUKCbSzDjsr1WEnnd2oP/A8uM7W5WrsnItuPslbwnd5fL7QPxtr9J82E4Z15W/Fs+yoeqr1kW7MX/K/7It8vz8JHIkVcvXAake3eSGSZwe8PuUxcuWf475yDfL8+D5/rUbhWsSUud5sgSgexHHBqk+ca4GU5t34D+U+Fmmd8fWpPXOo727Ki8LJqeqI69De+ePGiJ7LOUJ6XRXn4+pxtJo+hbSohICZKumb8tytDmbvh5qGtK+Lx785h/J970K12EaPAcEO2Xp0F3yeXL192+T7x6opng8r5XIxAkCwacSRxpe1r8IvYjMDNUxG5axGuFqnt9hYUKiTKhxSkaNGiuOuuu4yrAN0E6F6wdu1a0J3AfmfQJckW8grwe0PhGIXHzuJ83fm87nsOgcSzUs+VlSNz/vDemxGUx99MjrjqX6xAAPIHZhxW/lDoH6w+Wjmy26TYqMZV86NlteJYKSb7s7aexOA2VQHx0Y/9YgP8w9aiwMYvECumyZQrV66YfpLwhZpiISkkWHPgNJ74ZrMJw8ekJYMCcbtEUSATfIuqxZAnJZPIa1HwnTkIvse3IbZoVcRKxIX89HfOxfJU+5qYI6bku45fwtztp/HArRXj0bjrI8TKhz1WODXy1Gwff95Ne/zokhXY1YTPTUW4N5s6XXC99G/w+/4BmWTvNn+FpYSmLMU3rigXc5NY+rtz8m4m6TJRj5vA89iezHNCb1kHyNZHtDbG0oDWBLQsEAWDsSyQfXOeW+saJ8TcN9fjqpDSJlbCy8Z0+RC+de6GqBISiSzA4COJvX7/l39j8t9H0L52GYTIb99j0vhBxBQsJr/NgQjcNAn+MZGIuWusxRkQV6jL749MBn2XjYbv8tEmVUyjRwwhX36G2szNIu4UsVO6wu/4dhT8+XFcf/AnsYy6cXCbE+GxSeZS5KXI5MaPW74bx4TDqV65QnioRVXLrS2T65Bcce3r8tsebr7tk9dG4KVOtZJLniOuUTHA8UlW8SLlCBCTaITv3H/DJ+ocYqrfgYCmj8BnxxxAlAOBYWvgz49LFkgVcRUgiaAtjRs3xqhRo8zCETkEKOShsIX7jFpAoUsBebSchQtf9n3O53Xfcwjk8q96xoG9u5HT4D7j2Tly4ACeigF9mTogyXU7g9tWNwOIqasP4fE21cRlWCbWd48XE/174LfsPVkFFPbWcrL6LBYm7u4rJE4a/sNm47PZQZQBQ9rXQIMKhVM/saSp9qxBwMGV8rYvC5+HZsO/cNlc9wwTNjhISCNfFTeRwd9swIe/70F3MSsvkj9uIuEvU9/7v4ZP4YrwdTO5JKNIbAu7gJCbCsPfNr9PWDlvPC5dG9GPLsavM77Eot3ncAWBaFClDAa2rYN8+WWQQRcA54m+KAV8kgnxytWVDAnDAzpcFOKUCSTlc1YuOO+LNYPPzX3gV7h8ssXeWrUEhglp50fSJ4bP3Ipfn2kd3y+SvTOdF+t0kxVu4bj4ri98t3wH32hpQ6+JgqXVFxN9f9im2YOB7bNEmSLKF4lG4Nv8CYeOJp21yBm3+ReVULNiyfVle/gcWg3/n4cCPb8UnDLc27waH/YRjk+8STnA0LmTVoUa6N++p75MSAO8EsMRXWrjrk9WCHnvITwqHENlC8t7LAdLovdJDm5rpjZt4zfA3kXGWsm3xyfWuCGO98X3yBp5P8v3KpnvYWbVleSDFJKY2vtHjx517B85csSxz+thYWGOqtEyNiIiwnHdcUF3PIqAvf7i0UI0c0VAEUg7Aq1qlEBdWf04cTEKPwnTvZFq7SUE4BPiWiGm04wNz0G7m+VziTowVEiTSOZEf+4v+jfBLRWLpF4xICuMmDvE8oHLJwPn/jKhKFrJzbXMvtl1Fj6JFrIyfPZyND74bfeNDSlVW8zOLc36jRfSd3T07BV8tGg3Wr33B/pP22pifs9cfwRUFni7REv/m772ENqP34whO+thPlqheZeH8dRjTyBfjdYW4z7xKlZFFFClZYAkyhVPD4TI3k+yVJInkj+gpKz6kfm/ckugRkcr2gRDBTYZAIQ8Cdwm1j0pKAbs50AFXJPKRXFMTKBfnLnFPu25bdW2QgApq0zEjWSn5BBw9T65EAFM6mIpBhhq84EfAFEMqDghwPCbD4qyhZwOJBYlUaFKpiMwUtwJSFDaV/iaGsg3y1uFkUm6Cf8A+an4fk61XItfbU31PZowZyJAQthfXrLa1nm0fAPLWPv8NvG7yHc5eQc8JHQV4Yo/t/Y+J/KUOXPm4K+//jKuAnQrmDp1quEYKFWqFAoXLmyIDGfOnGmsXkNDQ7FixQpHtIOQkBBjYTB//nyT79y5c41SoXnz5h5qiWbrCgEf8Rvz/lGiq5rn8HNpijOdw7HIzc2bJyv4ZDdmBIDFz7WxTCRJsPZFGyu8oURzuNT2DbOC4+zDlR7MOGF8be42iZRwyKy8vCyrG4NkVSPNQvK11Z9aZtsPz1MWbxcA7j52AZ3HLpcIc7GYP/Q2icOdsh+fi2xcnromk+rfdxzH92sOYemeEyaKHRPmFZ6IyGjr4x0spJdPtauOXo3Ke50lwVUZMP+4/rD45O4DlRsUhoJ8r3d9r2AdNxXy0L8jZy6bfnEh8hr+07M++t4qCghPS7goIr6+ByBxKAlD+07HeZmDkGzK/8R24FtRdlwIt8j25BpK3eTpGmXf/Pf+LnjdJ8pbsZzq9rEwtT6cfduSVM0ZeUPIgWO2zoSPuOr4cDJCJXD+YrKVP27zi1uMve+8jSMVTSrrjJy3v5XkePpzeFvPWt5kpKJx9x48dQm3f7BUOKti8euzrVGjlCjekpMdPwMLX7AUjgz1nI3EdkGx49hno6p7b1Wn9bRCqd7UVSwOv72xniSuXvOFkBrLWKzNizdec9MRJ/cTJky4ITeGH2ToQioDvv32WzO5Z4Lg4GCMGDEC1atXN+mpEHj11Vdx7NgxMwZq27atCV9ou8b+/PPPJswhubRonTR06FCNVHAD0p4/UOWA5zFOVwmqHEgXbDnuJk7Y27z/J46cuYLP+jWScHhxpvkMH/ZlOwlXE43IXmKKXvMOwwSbXgDIAD/kuw1YLJNKEmrSB7qLrHCnWYTkDIvfFJ/bADPJQPXb05xFbrnhDQnDR8bqZlWKYfq/QjLcbA42p689jB/XHTHWJswwUFwIOkkIxfuF26BGEV8sDb2ET2XSzVjblApF82EIlQQS7svB9m+uZP6/qGvX8YPUffyfexEuoTIp1UsF4en21WWVrZzX+Q57CiG69NByh8ocKo4SRf/wRMEn91gxshlRRFyVLvSYgvwnNsBvzmBrBYpKg/u+FosJD3IheKJdWZHn+inAPHEt8BUuiwfEiiAnvAMZFm2nTE4ZeePA0vSjShcgZyWCURxIn0p0ThQMRaukur9dknDQ7f67BMcvROG9XvXRRywHsoO8OnubuBYcNGF/v3yoiesqM2QmJ3u7f7Gu012Fv8Xad7lO74VnVTng5odiv2OolHtqDRBU6sYC/pkL/NAfEP4icIEmC4RWBSdOnDDcacWLu/5uUDlALgGbb8C5mlQM8Hrp0qXVvdoZmEzaV+VAJgGd1mJUOZBWxHJu+qmrQjFSYjbTtH/2U2K+bMvKscCikYgRkr/oQcuQp2g5+0qatidkQPXolLXYcuSciaQx8eEm6VuhXTdJQvE9Y/na9pb9urIaqZIkAucjo9H2/SUmFOonfRuiW4O0Pz+usv+6PQLfiZXAKiGvtKWGTKrvl1VnWgbYnAZnzpwx7MHG62NLGMYt3ou9Jy6aW8oVyYsnhePiviYVESjKocyUyOjrxsrhM3FnoUk9pVaZghgqZvZd6pdJvTtLZlbaw2U998Mm40pEt6JZT7bMnGdy5qAoCHoAZw4gJkhwFxZsmYYAtzwI3DXG8y4bHsY0U7OngpSKUroZDJRJXZn6mVq82wpjSDRORDbI38VjVrYk+Kx/Ly5I5IsCJcrDN/KshFc5Lcy48sftZXkP2ftmK8f2dSGpTbXQfeeOty0XnRRuGvXzP/ifhP1tKN/InyQcKH3cs4Pw29t69J8SwOc6Zg5uYUICO+otin9jgbf0XUtBxzB11doBEr3F8Kw8JBNAD4aqc9TDDTuqHHADiHYWZw8D45sLo598u8kTU7+3fSV+y9/b6CpWP3lJ0nva3S6+ZN3LIQiocsBLH6QqB7z0wWRBtTh5CvnPYpwRH/XpjzdHs6pxWlj6d02R1QMh/YspK8SEHd8A4shoUlvNfTI5fPirNcYygabmkwc0RVUx4U6zkKhsxgAYG3ZOJOhzrZIiAvSpf1EI6MoUymtMYfMFympjKmTP8QuYvuYwZmw4YrgLeAtXmu+SFfa+YiXQuJKsvCUQWzlgD5xjxCpl/tZwfPLHHuw+ZikJWI8n21ZDH8kjj3/q6pKgmFQfsl8zVOcEUQpwkEypI+4VT99eHZ3q5k6lgA3eRVkJpdvJ4dMSslFce17uKj6kmSHkF6CC4MROCanpA5+OMsltOTQzSs5ZZVADR04Y8g8IISse+wMgL0F2ENad7hHiOoDdv8o7Xb4zlJLiTtJkINCgr7xsCuHs2bNgWLM0ERJevRyvOEikRKBiQf6oUGA/PLbNKrd6B6D7J0nityviArp8bLlozR3SCvTnz07ywW+75B28F02Fb+THJ8RCh3JwNTD/WeD4Duu4nkwA73zH4laZJwr49aJ856rxwN/kudS00njxf1UOuPHh8P28f4lYjnQH+kxLOuPPpC8dE7ewRxZYnDhJp9QrikAiBFQ5kAgS7zihygHveA7eUouxv+82TObtapXEpAG3xldLtMixE1rBh6s3lPKNgVYyqLhJlAYprJ6sDT2NQVPW4dyVaGOVQIuB4kF5rHzS8n+fDHzpZ8uVjttHik/k82m5O1en5QS9x6crsfXoOWPeP/zOWkniwcn0/C3h+E4UCutCzzjScXWZVgJ331IOBfOKO0cSklA5YCcj78HCbRH4ePEe7JSBNqVUwTwYLEoC+rznTSlkpZ1RKreXr14zvBZfLNuHkxevmrs4oB8q7gN3iFJAxUJg46Ez6D1htSGP/GZQM7SsXiJzoJEJ2rXvHoBPyBD41ZH3iEr6ECB53DQZyB9cBZSuKxM5mWiT0NFbhZwTG2WyQQuwswetWtI9rLa0oemjFh+FU93TpRxwuj/F3W0/yQT5OVEWyLsubxGgi5CuSeSPhHLf56vBsLsPhVTCmz3qJbzs9cdUBN4mhLFU/k+5vxraHBxnPQfWvFhVoOsHYjHQPr4d5LOYLtY8uxZapKiPLoono4tP5VV7qhxw0+NYKwo7/ibI6UF3AvJ9JCULhWvg7wlA25fkb0RSqfS8IuASgVyjHGCcTPq/kGSpWLHEq2pk2+T1kiVLmrBwCdFi3GfGk7fDcCS87u5jVQ64G9Hsnd+ZS1cR8u5iQyjHMGc0u7bl0qkw5JG4tv7rvrBMOnmhhKwmUEkg5p/G/99OHLf9WczKn5tuhSrsWKc0Pr6/IVK7an1DVkfWifVCNzF7lBWhkKes1Y0bEuhBSghskElgz/GrDD/A70I6GVxczHad5J+w80YhMGfjUZwXojpKAbEw6CFhEDl5ry8hJlMjSSkH7HupJPjtn2NGSbBdyqSUFGXR422qol+zSunrH3bmsqVf8NTVB/Hl8v3GlYKXGB5zWIcaaH9TaaeUumsj8IkobD4QNnMqa/i7L1og0L7k0a0nvj90o9ktyqcd8hcrSrEHmgV7HRmm20HlxHZiR4CcDtVutyI9+Pm7vZgMZUjlBbkE/pltKXiZWZFKlvVXw/5JTkA8rhxgPS6IK8O8py0LBh5ztfSujxx1+kksp56TkLvF5Xfxx/C2KJwvaeUob/dW+Ureif/8MgGvBn6LwrGioPWT3zm/31S0+7tQ2JOJnlaD/P6WuRkYsMCrFU+qHHBDzzsTCtAagKFz750ibpt3J58pCSypRKrcSqwH5iefVq8qAgkQyBXKgXfeeQdLliwxrJhsf+3atfHGG2+gaFExyxJZuHAhxo0bh+joaImLG4hhw4ahY0f5oIuQVGP06NFYunSp8WMrX7483nrrLVSoUMFc99Q/TwzOPFVXzTdzEHhNeAemrApFT/Ej//C+WxyFUnFFRtc8vmL+uWEqsOoT4Nxh63qh8kCLoUCjh8T/1Zp0csX2nQU7zfWHW1TGa3fVSR/Z23HJY1Ina2XnlgeAHuNTtFZwVFp3bkDA9jGnoobEVJxIk5iOXALkgrCFPrW0EujWoCzyB6ZtkpGScsAug9vfRUkwViamtGigcPD9eOuq6C+rc2ktlytjk1eGik/wfocLRKPgIhh6ew20rVXK5K//XCNAy5I+X6zGWrEUsfuG65TuPZuR7w95MOiuRHPvXRKVY2f4eWORYpNM2jWlxcvo3jdLuNbUKbfs+7LdloP6/4ligCvzfA/TRD6rJVKUf1u+B7gSKS4kRnx8gZp3ilJArASoyGDYzmRk074w3FylTNrcCpLJL9lLG6YBv8rqZ5RMnLlaetdYnK9yJ9r/d4mxPvrg3gaGVDXZPLz1onxHY35+Fr6HREkjcqxEM5S+X76lJaonX2O6YEwUl4tT+8SdsJ0VSpOWHl4onlIO7Jf3zHfiXrdH3jO31SyJNvJHEtscJ3T1oTIodIUoBXqKckCse1IS9g/DOyDKJcM74ELJlFIeej3XIpArlAOTJk1Cs2bNUKNGDYSHh+O5555D165dMWDAADAG5wMPPGBCZdx5551gCA2G55g+fbqJx8l4nQzL8dFHHxmrASoGuML27rvverTTZGRw5tGKaeZZhgD9j9vKYMhHarDshXYoVySfqYtDOZAn7uVPZultM4AVssJiD/zEPzHm1ifw7unW+GKtrGaJ/FtCFXLCly4hedlXMpBkiLNaXcT37WuLnTtdmelNxy9Eot37S/yWx/oAAEAASURBVHBJokbcWbc0lu85icuyTykkq2E9G1pWAs4WI2lFLS3KATvvP3YeN5YEmw6fNacYJuwx6TMPhVRGUB5/O5nLLVeKLaXAAZwX1xVKE/GrHSZKgdtqlHR5j55MjADDOXYes8xYjbx9Tz08KFYcnpbUfH/4HWQUFbqi7Iw4b5QB3GckDEZZSSiMglKzdEFj9fTX/lPmXj9fHzwhlilUFHma4yJhfTL12FhYyeCeK77tXwVaD8/U4h2FhW+2FALkQqC1FyVIrHaotGj8CFA4dYseS3efMFw1JDwdeVddFJb3gseFRGxzxDotLlrCpmKd8FBYL9SsXAEzbF99j1fCjQWwLyx9z1Lmx1xDZJ7iePHC/Vhb6HbDP5Oq3wMVT7RMuXhcXC7uA+4R68EU3And2IJUZ+VO5QCj2tAN7jvhq/lb3EkSSnkZF1FJ0FZcMFuIK1ZK36mE95vf6PbZVnQIukkWr5YoSaaf+PtzK4ylkE8bdwJG90iNiMspGNnqYbEiqHJbau7QNIqAQSBXKAecnzUtAfr164c+ffqgV69emDdvHqZMmYIZM2QyJRIjJG89e/bEE088YeJqDh8+3MToZJxNytq1a/Hyyy9j1qxZLsNvmERu+JeawZkbitEsshkCw77fiDmbwvBoqyp4VVb8KYmUA3abqG2mX+KKD8X8cK2VNjYPpsd2QHDXF9ChWbz1gX1LqrYXT4hi4A7g9H7LZO3BmYDEu1bJGALOFh3M6VYJcdi3aUV0lpCS7vD7T49ywG4RJwNjf98DukBQaL476LYqeEQsTxLyHJwT39mvVh6QMI2iFIhzg2C4RioFOFhTSTsCdgx3kk7+/PRtHl8dS/j9OS1uTbYCgBYBVALsltU6W4Hl3CKZ76Ny8QKoKa5PN8kfFVo3lSmESkJ46suLIuSdeP/XXZi8KtRwmFYXEtT3xIqgcSXLms85vxyzv1NMe2nmy/dyzy+tyVxmNI6TUPrvk2Dw6Pr4EhnmjFYC5KdJg6vDqYtR6DRmuSNcKl2P3rq7ngmZGp+5h/aIncRvj5EoPb7XIhEeWwzRd32M4KbdPFSgh7Il0eMCURAxTCEn840HIkaURl2+2Gp+WyQgJRFpqiRsEzBZFPQ0N2/5DEBiYi8TdygH9h6nlcAhzHQi4c0v7nWM8tMouChWi8JxuXynTsm7yhZ/ed9QId2mZimjMKgj1kpJyoldlnvNZrGosTmc8opVExUutToleZvHL3CcRXcC/o77fCOmz/J7Ta38ItY2f4kVSpsXgXb/Tu1dmk4RQK5RDlAp8PXXX2PdunXGnWDEiBEmviatCjZu3IiPP/7Y0R0GDx6MFi1aoH///njkkUfQrVs3o0hggrCwMDz88MOYOHGiURrQFcETcvnyZRO33s/PzxPZa57ZFIF/xES3x/i/xLTbD8uGtzaTtMjISMOTERDgevWGg7mxk6bizjPfoa3fFtPyWN8AxNa/D9dDnhbNePXUoyHmqP5fd4ePMEnHiq/jtX5zvNrXMfUNy/qU0ddj0P+rdUIOWRj3Na4gUSMKuLVSFy9eNApNO1pBejJfKeESx/25D+sOnjW3F8rrj4fF1eCRkGBwsfgrmexN++sQLkZZVg/NRSnwdPuquLVyKlc60lOpXHLPiz9tw08bw1BbJtsz/tXM7eEN6crCUJLh5yNx4Pg5hJ6Owp7jl7BbBuU2cWRCqMmFULN0EGrJn7UtiOrSb/OkksRy46GzGDF7u7ghXDJzpIeaB+O5DtXT7LqSsF7uPI4SNwla0HBbQFx58ufxM5wfBcRyhtwf3PJ9HOCXvBk+6+QrE1u/Rf8G37/XH5iB2Eot3VlVa4Ioq8k+Eo7S58x++AjXgc/uBUJYa7kHxcpkJ+bmvohp9Eja3vtOtXxs2gYs2X0St1QoCD9fP6yXZ0jpLBZPr911U/pIbZ3yT2mXFivDPpuFQafeR2PfPSb5dWlPzO0yKWb4Q2+W82Hw+20EfHeJokgktnQ9XO/8IWLLNzLHVMIOmrYRRUT5+sdzrRIpXk0iF/98hBTY7wchERULhOt3vouYJoNcpMq6UxzP0mWX7o9pkSgh4V24/Rimrzvi+Obwfrok9WlSHt1uLnuDZQD7xvawC1gmlnf82ygWb85GTCWDAsVqrQRay1+r6sVROCAGPjvnwldCdfoe/stRtZhyDYUEsyh89/8hUVtk0bDV84hpLRNsut5kpsTGwG9ad1O3mLq9cf3uCWkq3Wf3Qvj/2B8xFUNw/aF5abo3qcRJjTOTSq/nsycCafulZs82mlqTcDA0NBR8SfEFRU1mUFCQ2fKl5Sw85moshQNq5+v2Ps9TODHzhNCCgQqNjAzkPVEvzTNrEahaNBAhVURLfuAMpq46gMdaBoN9m/2F24QSeuoyBn+/DUfOVsLyIq9jUkdfVN49Ef6758N38zfw2fwtrtXogqvNnkJM6ZsT3n7jsazU5JvxoFEMxBStgsv3TJNFMFFIeOg3cGPhueNocv/4Z+CJdwuJWTMijcsXwKR+N2OtKAfGLzuIdYfO4RNRFkwSpQAHYfZKckiVIhh8WyWJOy4rLyKeaEtG2pEd732xQxXhHjhtCP1G/7IDwzuk3tyVz+WYhIuMkMk/FQBm63R87MJVh5WHK2w4Ceakv0ap/KhhtmIZUKqASwK4WIlaEsnIJamQ2qXy4oeBDfHZ8oOYtPowpqw+JHwXx/F61xpoLu+5rJTD4jLx44Zw/LQ5QiK6iKtWChLg52OUBVQUEC9yc5j9OGWCdf42dC5zHxpH/IDr3/fD0hZTEFOsOppJW7nKmSoRkkPfcwfhK0oAayuKAPv4slh1uZDrZRriaoP+uFZLVtgDLHe09Ly3v1171CgGqBR8r3tNlC2SH9PXh+OjPw+YSdwqWb19sWM1dKtf2kUt3HPqp00RWBgehHUF3sYft65H0JqP4LdhMjhBjuz0Ea5XaOaegtyZi0QYCNg4EXlW/hc+4s4RG1AAUS2HI7rhQMsdL+4b2iy4IJoEFzbv1fF/7sWwdlVSV4vyLeB/x/vI94twFwg3w1VxUbhWo3Pq7s2EVJy0cyHt2rWUf0eszl5RFs7YGI55W4873kv8/XStWwq9G5aRkLcFrVrHijtGnHWa3YzqxQNRvXg5DGxeztz7l4yVVuw7g5X7T+O4vOeoYN24aT1O+C1Gn4DlKEQCSBE+k+ja9yBaficxpeqac4FrPkXgivfgt+IDxB5ZjytdPrFCSJqrnv8XsP5LBIjSIqZAKVxq+3rax1qlGiJIHFF9wtYj8qIo8fzzZrjSqhzIMITZIoNcYzlgPw2+pMg5wKgE//73v0HLgU2bNmHs2LF2EuNS0KpVK+N+kJLlgOMmN+8kNOt0c/aaXTZGYOXek3jwf3+jhGjBV7zYHtevRlqEhDbnQFzb1jFU4dR1hgSOrPATH2kq98TxEpDEaJVYy2z6Vhiq48zwqrazGJKrtkmMDnkMaBK7+xcr3jTjKxepmDidnvFaBDLiVpBUoxhCbIyE2VwlFgWUtuLrOVSiD9DMU8X9CJD7oddnq4xP/7RHbzXcDTTRJ9lf+NlIhJ27ggjum+MrxgogXDgLbPeO5GpEToCyhfPKhC8fSub3Q40yhVFHyALpFlChaP7kbnXLte1h5/DCjC2y8nfe5NdHXGpoXl0omfCcbinYKRMSQP6567iE2jwo2/iJNkNtkujsslhXkGCTVhbkBzHbuH1XPAtOWTt2fRCDzwLGoJPfOhyOKYm7r76JTs3q4+176jvS4EKEuG0dsFy3xArAuHDZx7bJc3zq+D0y2zPSAEPgFZOJJbcVmwNl45WO8YnTtkc3km6frDAWFJ/1a4SQCvlQqFAhQ0hIXowRM7eY1Vrm2k78vd/pWV/6U5wiIm1FJZmaLkvtPlhiop2Mvf8WE7EFx/4BZv1LfKu3WCb6zZ8UXgfxFQ/I+EQoyYqk5QL5Jn4Wc3/6flMYcaGzcA0UKmcdJ/jPEKb3SPQauhAt+792KFUoDe1Y9l/gj7esCAcPzQWC5dl7gaTGrYChen9mqF5xHVh/0HJfY9VvlrHLA4aEt5yx0kl3cyS0aNhfPxr3mnJn1zuy2RpTBd9cvx3LAlujSc1g437QWr5jJcUqysj+JcCMAaL5Pm39tsiv5Ibfk6MCSe2c3AtMEMsiWZRB3+npd234XNyHwjcD7A+uxnZJla/nczUCucZywH7KXImvWLEijhw5Yk4xNCFdBWzhCmxERIQjZCGvHz161L5s9plH8eLFHed0RxHITAQY75yD1W3CJE//u7vrJfbjni8fWTLg0xS2Q+1S+KRvoxtD0ZFkp5soxBj/dvWnlq/d/j8B/pVvbCkJ6ItKf0hRqGGODLioGBBiQ/SfrYqBzHzgXlwWeRG+fay5DOZOy8qnLxpINAUVzyFwi+D7bIea+O9vu/D41PViyu6T5ok/FQDlZNJWhtsieVGmUD6jFHAOk5gVymlGLZjzVEtMWLrfkGBOX3sYf4o5/zsyae4gUTw8KXS9mr7uML4RlxhOdClUltwlZsv9QyqLq0/K/ZqTG1poUGFABQKVNnSvcSgQnBQKa66MRu3dT6HSlR2Ykmc0Vq6vi4Nhl1HJ95ilFLDJAl01OjAofuLPyb9YcTkUAYxOw3e2m4UkcE9/t9F8T6i06VyvLBjK0BaSwE19tBlmrD+CN3/+xyhWOn64DCO63GQmdu6ygBz9606jGAipWtxSDLACpesAj/0hLL3vA8tlcszv2Z5F4is+wfqW2ZXM7O0VwWfxG8D6SdY3lEqbLlK/msLXk4w0FMVqp7pl8Mv2CBMx5galUTL3mUskuhTXBcMv8d39wMBfJR5trZTuytLr5DL5VsgFZzuF6iWJ4N0Ny5lQvRmOZsKFEHEbwMavUe6ypcSm+8m1Oj2xvsQ9+PlkaawUd44wIXxmhCD+UTjGGiVcGrdUbQv8a7ksjvQXv+INFgEkw2kyQpOnROYhmP2EpRho0Df9igHWr/JtlnIgVNqgygFPPbEcl2+Otxyg+f/kyZNNdAKGH9yxYwdGjhyJHj16mGgFJ0/KKuyDD5poBZ06dTIEhYxW8P3336NIkSKYPXs2pk2bhjFjxhiFAUMg0vrgvfdE8+tByYrBmQebo1m7GYGft4RhyLcbhfgrP+YNbopA4RvIE2c5wDjyb8/fYUpk6LnXu9UV39AUBowcyKz9UshrPhMNedwHtERNi+AoQrTOZMulP+fD87J2wOVmHHNTdp6wHMhN+HlLW7m63ffLvxxM3ZzEmom+84Rf9svJ5N8+7zzxT007svr7Q/IxWhHYBJjdhXTs9e51UUxCarpTqNSauvogFmwNR/R1UYKKBAtxYr/mwbivSUUUye/e8m6oO0MbMsThmdAbTpsDspGbSb8ocW0LAFsREFQycXoPn3ldwuiSPLJKiQKYP7SVcZmgcsC2HHAunpFXRgqPBCe3lOZVi+G9XjejkpBUZkS2HDmLHp+uhJ8oPxY+c5u4uBRMnN1RmbzRiuDkbstcX3zF0eYFIVx0zceTOAM3ndkiK72/vixswSekHrIGx3DCrIft0pFCMQwF2vFDK3z278+1MbincEv8ZU4sf+gHkACzsFj3DfodKFgm/noW7CW0HLgiSrR5MoZhxAHyAthCJVxfsRLg7z2fuBGkW+jWxPZTMbN/SXw2ZepbUTlu7pOIK4lRVpaK1RB5H2gJx4UVvlvHiIUKlWG4FiUkkv9nKRqYY9NBwJ3/ESsND7wjVn4MLHpVnpuU+9Tfwn9guefFNyQNe7t+Ab6T9tKKhMoiFUUgFQjkeOUAuQOeeeYZwzdg49G2bVswCoE9mWL4wvHjxxt/KPIRMDIBFQUU+ugybOGKFSuM/3/ZsmUxatQoY31g5+eJbVYPzjzRJs3TfQjQhJVhDRne8KPeddGlflkEBATiDVm1mSKDOMqIzjfhX21kcJkWISPuhqnicvAJcO5w/J1+8gF88EfRPLeNP6d72QoBVQ5kq8eVbGUZPSBcXAhoAZDWiX+yGcdd9IbvD5UgU1aHYvQvu3BFVuUZRvONHvXMxCE1bUgqDVf0Z4vf8bS/QrEj/IJJRt1p+5tKGSsBkpW5a6U7qTo4zgthIFaOxcpTQfh2bwCOB5TDu4O6o1rF8o4kWb1DN4sBk9YaToRZT7ZEfTHzpiSlHLDrS4XLq7O3GfZ4msg/f0ctPNqyiiNihZ0uNVv2hbvHr8SWI+fwLwmlOkLC8CYp0ZGWaf1fn1or9kKci3s+tywMkrwpgxfEZN1EHjglpuAs98AyK8NKLYCusspc6qY0F/CSuGl8L9Yz/LaPf7BR2u7nd3xqd+DwGml3PWDAQplgFkpbHm5MbSsH9py4YtwGZomVAK1rKOSv6CGheuk6ULtsButIRdv6KWIlMM1SzLAAKmTq9RKlwACgQhOeSVFoBUSFGPGnIc6Izk5hnzk+mi9KJ7pjMr/7pKwkXERSLMhVghO7gM9ltZ/KiAdnADU6ukqV+nMkI32vsqUse/GQLPLkT/29mjLXIpDjlQP2k6WS4NSpU2b1P3/+xD8OEqUcO3YMpUuXdsmoSgsEkhmWKlXKztKjW28YnHm0gZp5hhGYujoUI+dsR/1yBfH1wCYY/tM/WPTPMQQKa/YH9zUwIX7SXQg5BrbJh2mFDGy4CnOvfHDryGBDJdsioMqBbPvoMr3i3vT9oQL0pZ+2glwrFLpJ0dS6dFp8seW+PeIzP024BH7aED8xKS6WCPffWhEPNKsEmsZnldAakZZg82VCXVEsF+he4W4rifS07aQJW7jMRKt4SZTNTzgpm1NSDrC8s5ev4vV5/xiTcR5zZXi0hKysWdrFqj8TJCHf/H0QL8/aJi4wefHH8DbGciGJpPGnD64S0+zBlmUGLQfayUo+V/AlwkK65OplKy+GlnPwQMg+j8+Jm6owyzuElh8dRwENH3ScSuvOMYka0nr0n2YFm/0hzS5b9JGfKBNLKiyqtAH6zcx0C4ozosSkFcT6/ccxf/sJbDl63gEDeWkeaBZsXHcyFKqXYxVh5cc6sRLYt9iRP0qJAokKgQb3p3vl/bMl+/DeLztNng9KXd8U5aSxwgzbaLkZcAGlgLh19p4sGMuEPqMixJXmmTHkaMP+QI9xGc3Ruv+LtuISIXWmS2i1du7JU3PJ0QjkGuVAdnuK3jQ4y27Y5Zb6Urvd4t0/jA9mpWL5cPD0FcMe/uVDTUBfcLcI+Qa4ulWypluy00yyDgFVDmQd9tmtZG/8/kxfewijxF3qgrCTF5TVxpdl9fh+WW1MThge9DcJhUYrgb/2y2QpThj7vH/zSsZcOFBMh71B+D6/7/PVZnWc7++vxYc/q+s2YNIawx8QUq04vpH6+Dq5p6VGOWDjylCQ/xYFT4RMeMmT8XT7Ghjctprsp4w9rWTaiZXcuSvRZgWdK+mplquXgN9esTh1eFOFppYVATl3XImE6jWT/YSTf5JBXgh3dYd1jiHuaMJP1w+S1bV8BqCCIIPCiSknqMT/O+F2SbOcOSiTzQ4Sdus4IKGL0fMLt3NSULFFng6GI6U7EP+oEOCWz85ZCkmIxp60EpCJdloVRM75mP2L4rJBtwH+kWeBQkLOuveIUmCgmNE3s85l8D8tYJ6dbvE3tRGiwk/FioOcCIagcIaUQ54mKpw6vCHKp6czVtryDy2eisIVgMGr3Wftwd8ArUFvE4uH20dmrI56d65AQJUDXvqYvXFw5qVQ5epqfbx4Dz5cJCv7IhWK5sPkAbcaVu1cDYo23iUCqhxwCYuedIGAt35/uJr68qyt+H2HTHZEWsikif7sXG13FkZs+FZYz8l8fkJCNlIYCq1no/LCJ1AJN5Up5Jzca/aPS/u6j1tpJtH3Nq6A9+9tkGV1m7zygFn1LyLuHL8Ma234K5wrkxblAO+7EBmN/yzYaZ4Lj2+SKBjv927gcFPgOVdC7okfhCyS8emniYIiXbJ3MTB3iDWJpJk5rQiCxAqUq/7mTyb/3Np8O64KofVBwkgQxUTJQIVAEVFSeYDXgAoRWg9wO2XgrYZJ31XVkj1HpvpJXYCrF0VpMUwsGt5MNnlSF6+KD37oqUvYF6cA2BunAKAiIDI6xuVtnERXk9CnlYrmxW0yse52SwWJwiAT6YwIXSXWfAn8M0tM+6OtnMiP1EQm6rQSIGmym4XcJ49NWWdcZBi9ZZJEfipHSyPyOzA6xAqZ1FOomOguq/15gqzjtPw/vkPcCVpb7gr9pW3V2qfl7uTT7v4N+PZeiVxyK/DoouTT6lVFQBBQ5YCXdgNvHZx5KVy5tlo02wz5z2LzAZ40oFl8+J1ci4g2PCkEVDmQFDJ6PiEC3v79IaM4fYK5MplPJhv/d2ctPNyiMlYLkRitBOheJW7qRmpICEISs/ZsVMFa8UvYWC87ZhSa3hNWmQlXunhj3NCeXREXZI5jhS2c0K8xOtUrkyjXtCoH7Az4jF4Uf/pD4i5CQ4THW1fDMxL+1NWkkZOynhLWj9YGvz7TGlVLpmPSZRdM3+uFLwCbv7fPJN5ScWCIIKtYk35O/G0iSFoGSESWzJYvlu3DO6JUqVuuEH5+ulX6+DD2/QF8I5PDGDHBZxjFZk8k2QwqcazVf8sSwLYCOCiKAfs3lfBmhv1jqM/q8nzMVvaryT4JUSk250CAECenS8gjQTfHNWL5QGUHhdYaNTsBtz6eKabydG8i9waVImwvFQSMaGBkx89WdIGoC1Z0iD7fACVqWNdS85+uESQnDd9kuUJ0G5Oau1KfhhYx71WyMHvpsPIOpB65XJtSlQNe+ui9fXDmpbDlymrNWHMAt9cujaIFb1w9y5VgaKOTRECVA0lCoxcSIJAdvj9UDFBBYIceo6sBXQ4o/jLr5ISWrgPNJOxddpOF28Ix+OsNhgzty/5NPB7K0RkfujdQMbD72EXDHP+fnvWdLzv206scYAYs47+/7sJEsU4Qq3RUlSgI7wkXQdPK8ab4JN1lPbaHnceQdtUxXBRAbhFO5FaNFRK58vEKAKMQEEVAoTS4LLilMilnQqzoVhEu1jBjhTm/xy1S73TIlXVfI+/PT8mdPtja4mPsKNrOKNdOX4oyK+LMn1YBx+MsbRIWQUUOI3lw8s+Jv0MJIMeF8iY/6U+3cuBMqERRmmgRDF45Y1Upv/yeGz1sWQoUEYVNJgotOJ74er1RQlIp+XHfhuhoh1k9uVd4CB4ETuy0IiHc/RlQu1vqard0NPDn25YFCt0J0mN5kFJJX7YHyGXQ7yeguigiVBSBZBBQ5UAy4GTlpewwOMtKfLTseARItskoG3b0jfgruqcIxCOgyoF4LHQveQSy0/fnd7ESeHn2Vhw7H4WyslJJ1nNyEXB1LzvLp3/uxfsygaY7xMzBLTLO5J5KMF4ThQsj3nDCPn/obUmGlMuIcsCuykaxDKDbwB6ZlFJo/fGCKAEKiDk668C6kChy8fNtXFoW2Pnk9C3dKogT3Wf+ECyo/Dp/5ZpM6qPMBP+UKMqoLDt1kVtrss/j+HNXcVX4Nwb7zcGLAdMRGRuA/ldHYG3sTYmgY2QJTv6dFQBUBFSWUJTp5cBIk3KA2iISC9J1YM+vVsQJ1rJcI8tKoF5Pi1sgUc0z5wR5TEYIf8aM9UeM8m7kXXUwQKJwGCHHxRxxX9kuE3BKq2clDMqryZNgRmwDvmhjWXUwVHQVcS3whCx6TSKjiEUC69ThdU+UoHnmIARUOeClDzM7Dc68FMJcUy1VDuSaR52hhqpyIEPw5aqbs9v357yYQm84eEb80ktabOI55Gk9I0RosyXsW7kieSWCQSuPKzxIHDhw8lpjxs+whQ6zaRd4ukM5wGzpy/7JH3sM8d41sRYgdw7dRF6RMIi0BPmif2PcUTexW4OLKuXYU7SiuHPMMmPuX1hI/RgGkOfSIlQyMQLGiNj/oWvkfFz2DcLXdWUCXrKWhAkNRCmJBEGFEPF3dyjPVCkH6Pax6VvLdYD8DxSGUKYygK4D5Rtb57zkP/vsB79ZfE8PhVTCa93qxr97Vn8KLBKlAKMPVG0L9PpKohq4sGAiZ8KX7YCIrUDTxyTs5X8917o9i8S1pLcVfnGQKF9UFIFkEFDlQDLgZOWl7DY4y0qscnvZqhzI7T0gde1X5UDqcNJUwtt2/jwY8pcWSSpZh0DUtevo+8XfoO99QwkD+P2/miOPv59HKkTixk4yAeUq9L+73GS4AJIryF3KAbuMHeHn8X+yOk7OBVva3VTK+Hbbx7l5Sx6Nx6auc0BANxpO9hmO02yD8jiOzTk5tq/xuoPTgSR6P/QHdop7BVnxH/3d4+4UySoHjm23rAS2TAeiL1vtI78DCQbpPuBqUu1AIWt36NI0/IfNxiqDfXWcuBnQ6sVI6ErgR6n/JYmqQJzvmyYKDrF+cJY//wMsfdfiuRgs6QMLOF91736UWOe8F2zl+eIhz7guuLfGmlsWIqDKgSwEP7midXCWHDp6zRkBVQ44o6H7SSGgyoGkkNHzCRHQ709CRLLu+OTFKAl3vtKEi+txSznxO2/okco88tUaLNl9Ai2rl5AwiremuHrsbuUAG8XV8C+W7ceY360V2UXPtkFwceXSsR/4zojzZpWfk/3UhIG070u0JcHf1O7A4b+B0nWBAb+4L2xeosJcEBKSgG+nmNCTYPDgqvg7qra1VtBrdU7eFD/+jizfWxd62ihtzlyONqSRXwlRYWmxwjByPtxSxBxZa1lBdBHLgMaiMKCQWJFWA7QueGQBULmldd6T/0l6eEQUTA/OAGp09GRJmnc2R8DvdZFs3oYcWf2oqCiQ2dU3C9hxcySgObhR0dHRpp/oKl8OfshuaFpkZCTy5s2b4qDfDUVpFtkcAf3+eM8DzB/oLxP24pi14Si2Hj1vTJebVXFhopyBKn+14gCmrD4Ihi38WsIFBqVAMMei+D4hz407TdB9fXwMKWHX+mVRX5jgm0uoSpV4BEqINQDDA/qRHTAj4ier2zd1BXbJpJQEeiSqqycm576esUq5evWqsULyu3wSWD0OmCUm9Bu/Bs4dtsj7Gg8A7vkcCHlK3BxqWqz6GWlfJt7LkIadxO1lqSjWSOL58+ZwCbFawnIBylNQwiv2BUimSAXB7oVWOM3Kt0lowT7AxeNW5IimYiXhBtlz7AImrwo1BJF0E0kkp0OBQ0J4SOLNaqKYUFEEkkBALQeSACarT+vKTVY/gexTvloOZJ9nlZU1VcuBrEQ/e5Wt3x/ve16LdxzDIDErJ1/bZw82QmeZQLtDuBrd/ZOVxjQ6Lf79nrAccEd7NI80IHBWzMv/10EmqceEWV8sCereLTeL4kGUNPFb5pfWc7wlLg/ZvXzhLPLumQdfWgswnCKlpJAh3ipKgpvvzxEm7gwr/fi09Vhz4LQhER33QCO0F1cDhzCE5rxhwDWx2shX1FIYMEzmYLGcYAjNdApDLNK9YZ787ZQQpJT7mlTA6N4NEue4dzHwtXA4kL/hsT8SX9czikAcAqoc8NKuoIMzL30wXlgtVQ544UPxwiqpcsALH4qXVkm/P975YGhy/86CHeI/7osZT7RIljAwNS1gmLxun6ww0QIY5eGdJMIWuspLlQOuUMmG50iGN0nM+KOsiaVHW+Dja1kskGDQU6z8Hm1A8pmTXPOFmVsMiSiNO17vXhcPhVSOvyl8i+VmcCbUUp4M+FXiQzaLv57KvWPnIzF/S7hRCmw6fNZxVyEhqzwv4RYZZnHdKx3i+Q/sFIym8K7wDsQK78RLohiiZYOKIuACAbEtUlEEFAFFQBFQBBQBRUAR8GYEHm9dVRjrL+CHdUfw6JS1mDukVbx/czoq/rYoGhhGsFrJAnhVQrKp5EIEytQH+nwDbJhqTRohpik0T3FsiUlaz/GWuDxk99q1aPhUaAI/WgoULs8Mc6Qw1OOYPregkoScHLt4D0bO2Y6Dpy7j5S61xfVTtAVlbwYeXwLMHGRZTqRBMXBGiEIXboswFgJ/HThlwSsoMgpFxzql0b1BObSuWRL9/vc3/hbrBVoSMKTrDULCQ5IiHl4jXA/iXlDzjhsu64EiYCOgygEbCd0qAoqAIqAIKAKKgCLgxQi8fU99M+HgBGDQlHX48YmQeCb6NNT7j53HME14BgL8fAzJYT6ZZKjkUgSqtpGQe/LnIbly4YLhu/ETHq3cIM92rIlKQqT5olgRTBQ+j0Ni+v+xEIma3xhdCh74Md69IhlAGLLyt+2WQmD5npNgqE9KHlFCtKtVCt1EIXB77VI3/P77NK1olAPT1x5OrBzgzZVbW8qB0GWqHCAeKi4REBsfFUVAEVAEFAFFQBFQBBQBb0eALPUT+jVGsKxObpWwf89JKLVYs0qb+pozbOHwH8XEWeT/7rwpw+4JqS9ZUyoCuQOBno0qYJqQexYWU3+Gobzv89U4fkH4BigkGvcPtPYT/Kerz8Kt4Xji6/Vo/NYi8/v+c9cJ2m6gjVgGfHBvA+MyMKF/Y3S9uewNigFm1bleWTDM5UZxNyBBYSKp3Mo6Fboi0SU9oQjYCKhywEZCt4qAIqAIKAKKgCKgCHg5AkUllN3ER5qYScACmUh8uMgK/ZeaalORMPzHzTgtZsqtJGzhY7dVSc1tmkYRUATSiEDzqhJl5MkWDkXe3Z+uxK440kDnrKKvx+CPncfx7PRNRiEw+JsN+EVcCK7K+WZVimHU3fWw9uUOmDLwVvRqXEF+90lbYNA6gS4GlO/FeiCRVBSOA18xGmcoxcjziS7rCUWACKhyQPuBIqAIKAKKgCKgCCgC2QiBGqUKgozodGX+5I+9mLPpaKpq/9XKUBN2raiELfzwvgZuDUWYqgpoIkUgFyFQtWQQZj/VEo0rFUXY2Uj0+mwVlknYwxhxEVi17yRG/LQVTd/+HQMnr8WsjUdx6ep1NKhQGK90rY3VL92O6f8KQb/mlVBMFIKplfubWlwDzI+KhxskMD8g/A+GlPDgqhsu6YEiYCOgnAM2ErpVBBQBRUARUAQUAUUgmyBAM+PXutXFa3O344UZW8wKZcNg8WlOQnaEn8d7C3eaqwx15jIWehL36mlFQBFIHwKc2H/7WDMMFxegeRJlYIAoAorlD8SJi1GODGuWDpIV//Jm1T9Y+AoyIvVFuVC7bEHsCL9gXBq6JAx7St6BQ38B5B2o1SkjRem9ORQBtRzIoQ9Wm6UIKAKKgCKgCCgCORuBh1tUlpXFYERJGLXHp66X1ckrLhtMX+anv9toTJUfbBZsGM5dJtSTioAi4HYE8vj74eO+DfFUu2q4LlYDVAyQN2RIu+r47dnW8tcGQ9pXR0YVA3bF+zSpaHZJTJhI3Mg7EBMTg+vXrycqgicYZvvkyZMur/Ekr1254vp9xTwjIiKSzDvJTPWCWxBQywG3wKiZKAKKgCKgCCgCioAikPkIvC7WAwdOXsbKvSdNiMOZg1tIiLMbh3dvz98hYRAvorqYOWvYwsx/RlqiIuDj42MIQBtWLCpWO3lwc4UiHgPl7obl8c6CnVi254RRGJYrki++rIq3An7CWxAhpKRXzgL50lcP8peMHj3a5PvSSy858r969ao5v3TpUuO2VL58ebz11luoUKGCSXPw4EGMHDkS4eHh5rhdu3YYPnw4AuKiWSxcuBDjxo1DdHQ0AgMDMWzYMHTs2NGRv+54HgG1HPA8xlqCIqAIKAKKgCKgCCgCHkHAXyIYjH+wEaqWKGBMiYd9v8n4NNuF/S5s6dP+igtb2PeWRAzndjrdKgKKgOcR6FCntEcVA2xBEXFb6FSvjEQyAX5cl8B6IEAUBRWaCu+AXEwn78CiRYvQu3dvLF68OBFgnNxv3LgREydOxOzZs1GmTBkz2bcTfvzxxwgODsacOXPw+eefY82aNWB+lFOnTmHMmDF48sknsWDBAgwaNAgffPABzp07Z9+u20xAQJUDmQCyFqEIKAKKgCKgCCgCioCnEGDItImPNHWETnvvF4tbgOHTXpB465QXO92EuuUKe6oKmq8ioAh4EQJ9mlquBT+uP5I43Cl5ByjkHUiHtGzZEp9++ilatYoLjeiUx/Lly9GmTRujAMifPz969uyJDRs2GDcDTvK3bNmCXr16IV++fKhSpQqYF++hrFq1CgULFkTXrl3h7++P7t27I2/evFi9erVTCbrraQRUOeBphDV/RUARUAQUAUVAEVAEPIxAFbEc+KxfI/hLCIPPl+3HD7Ji+LyQoDFs4W01SuDRVhq20MOPQLNXBLwGgRbViqNC0Xw4cuaKuBydurFeGeQd4KSfFgHcJhRyCdCVwBbu0wWBVgE2B4Hzdbob2Oe5LVfOCsXI+319fVG2bFmcOHHCzk63mYDAjU5pmVBgTivizJkzHmvShQsXPJa3ZpyzEKCP1+XLl3NWo7Q1bkfg7FnxL1RRBFKBgH5/UgGSFyapXcwPL3WsglG/7jcRDFjFovn8MfKOynD3719Nfb2wA3hplS5evOilNcvZ1epWtwQ+W3EYU1fuRd0SfvGNDaqOIn4SHjFiG86FhyI2b+osiooWTToaip05nzW5Amyx93mePAKUPHny2JdNWpIXUvjdsdPbCXhsX7fP6dazCKhyIIP4FimSPiKPlIo9f/680cjRrEZFEUgOAb402U+cX7bJpddruRMBTgwKFy6scc1z5+NPU6v1+5MmuLwu8aNti+DoxRhMWhlq6jb63gaoXqGUW+vJ90mhQoXMyp5bM9bMchwCnPDRNNwmnMtxDfTiBvVrmQcTVh7Gkj2ykBmY33AROKpb4Vb4HFyBwme3Ajfd5Tid0Z2goCBwwcoWe5/nbeWAfY5puF+gQAGTnC4Fdhr7/qioKPBelcxDQGeeGcSa7KOeEOZr/3kif80z5yBg9xNP9cWcg5S2xO4rioQikBwCdj/Rd0pyKHn3tVe61kHoyUtiVpxfwhaWcXtltY+4HdIcm6H2lax7tOXl99+mRkks2X0CszeFYUBLJ9eiKrcJIeEK+ISKv3/tbm6rZIkSJXD06FFHftxnHyhevDiuXbtmzvMc01GOHDni2Oe5sLAwc57/GCqRIQ3ttI4LuuNRBJRzwKPwauaKgCKgCCgCioAioAhkLgJ+wjvwyQON8HLX2plbsJamCCgCXoWATUw4fW2CqAWVRTlACV1hbdPw//r162bFn1t7nxN5CkkKGcbw8OHDuHLlCmbOnImGDRsa6wBaL9avX9+c47XQ0FCsWLHCQWwYEhICWq7Nnz/f5Dt37lxERkaiefPmaaidJs0oArnGcoCdkPwAJNAgwUVCYecm4UXJkiXh5+fklxOXkKbbzEO1VwmR02NFQBFQBBQBRUAR8DYEgvLkmiGet0Gv9VEEvAYBhk4sViAQOyMuYPPhs2hQMc4dukITwF98/49tBy6fBvIXS3WdGaJwwoQJjvRLlizBkCFD0KNHD3Tu3BmbN2/GwIEDjcUACQVHjRrlSDt06FC8+uqrJi2JCtu2bYuOHTua65xjPf300yYSwtixY43L7DPPPANPuXA7KqU7NyDgIw9GAl3mbBkxYgTWrVtnGkmtFTsiO7EtjMk5btw44+dC4othw4Y5Oip9YUaPHm20YDSLIcPmW2+9BbJrelLU59OT6OasvJVzIGc9T0+1hspRfmD5HlNRBJJDQL8/yaGj14iAcg5oP0gtAso5kFqkPJfu7fn/4MvlB/DArcF4p2f9+IKmiDvBgWXAfdOAOt3jz7thjwSEJMouVco138mxY8cMl4DNN+BcJN0PeL106dJGQeB8Tfc9j0DiJXTPl5npJTCO5vjx4zFv3jxQYzVnzhxs27bN1IOhNcaMGYMnn3wSCxYswKBBg/DBBx/AZuGl4mDjxo2YOHEiqCmj5QEVCSqKgCKgCCgCioAioAgoAoqAIqAIeDMC9zWpaKo3d3MYrly9Hl9Vh2uB8A64WUgimJRigEVx4u9KMcBrJNnmYqySshONzJdcoRx4/PHHUaNGDcOW2rp1a0OKsXbtWoP2qlWrQHbMrl27mk7YvXt3k2716tXm+vLly9GmTRsEBweb6AE9e/bEhg0bNKxG5vdVLVERUAQUAUVAEVAEFAFFQBFQBNKAQI3SBdEouAguRl3Dgq3h8Xd6UDkQX4juZTcEcoVywPmhHDx4ELQWqF69ujl98uRJlCtXzpGEfAT0jyH/AIXXqb2yhfv0xGAeKoqAIqAIKAKKgCKgCCgCioAioAh4MwI2MeH3aw/FV7N8YyAgH3B8B3BJ5zXxwOTuvVzFVkPfbPIF1K5dGy1atDBPnr5Q5BlwFh4zLYU+M87X7X2ep9CP11PCuqkoAqlBgNwY9O1SUQSSQ4B+wiqKQGoQ0O9PalDK3Wls98vcjYK2PjUI2GPm1KTVNJ5BoFVwfuQL8MXa0DPYtC8MlYqJUkAkqEwjBBxeiYvbf0F0jS7JFl60aNFkr+vFnIFArlEOMNLAyJEjTWiMN954wxGRgC4F0dHRNzzNqKgoQ5LBk/SZ4cTLFnuf5ymeYtBUQigbcd2mhIASEqaEkF4nAlQMkJBVCQm1P6SEgH5/UkJIryshofaB1CKghISpRcqz6RijoFuDcvhh3RH8svscXuxU1iqwRntAlAMFjq8Hmj7g2Upo7tkCgVyhHOBA55VXXgEn/R9++CGcNV8MmxEWFuZ4WIzTGRER4QhZyOtHjx51XOc+B9fFixc35zw10Ga+9p+jcN1RBFwgYPcTT/VFF0XqqWyKgN1Xsmn1tdqZhIDdT/SdkkmAZ8NitI9kw4eWRVXWvpJFwLsotk/TYKMcmLn+KIbfUQv+fuJdHsc74HNwBWTi4eIuPZXbEMjxnAM0tWZoQioInn/+eWN6zQl+eLhFyBESEmKuzZ8/31gVzJ07F5GRkWjevLnpC61atTJhDA8fPgxaH8ycORMNGzZMkmEzt3Ugba8ioAgoAoqAIqAIKAKKgCKgCHg3Ao0rFUX1kkE4cTEKf+w8blW2fCPhHcgPnNglvtQW35p3t0Jr52kEcrzlAM2Zjhw5YnB86qmnHHjSvHbGjBnGQuDpp5/Gp59+irFjx5qIBc8884zDXaBz587YvHkzBg4caFbySVY4atQoRz66owgoAoqAIqAIKAKKgCKgCCgCioC3I9Dn1op4e/4OTF93GHfULQP4BQDBsiC67w8gVEIa1uvp7U3Q+nkYAR9h3o/1cBnZIvtr167h2LFjJu6mq7iaJFOhFUJyMTvd2VD1+XQnmjk7L+UcyNnP112tI3kqOVLUVNxdiObcfPT7k3OfrbtappwD7kIy5+ejnAPe9YxPidVAs3cWg5O/1S+1R6lCeYHlHwKL3wCaDATu+si7Kqy1yXQEcrxbQWoRpUKAYQpdKQaYBwkIM0sxkNo6azpFQBFQBBQBRUARUAQUAUVAEVAEUoNA8aA86FCnNK7HxGLGBsuy2uYdMJYDqclE0+RoBFQ5kKMfrzZOEVAEFAFFQBFQBBQBRUARUAQUAQuBPk0rmp0f1h62TpRrCAQWAE7uAS4cU5hyOQKqHMjlHUCbrwgoAoqAIqAIKAKKgCKgCCgCuQOBNjVKooy4E4Seuoy/9p8S3gGhoAsOsRpP3gGVXI2AKgdy9ePXxisCioAioAgoAoqAIqAIKAKKQG5BwNfXB/c2qWCaO922HogLaaiuBbmlFyTdTlUOJI2NXlEEFAFFQBFQBBQBRUARUAQUAUUgRyFwXxPLtWDB1nCcj4wGKrey2qeWAznqOaenMaocSA9qeo8ioAgoAoqAIqAIKAKKgCKgCCgC2RCBisXyo0W14oi6FoM5m8IAwzsQBJzaB5wPz4Yt0iq7CwFVDrgLSc1HEVAEFAFFQBFQBBQBRUARUAQUgWyAwP23BptaGtcCXz+gkvIOZIPH5vEqqnLA4xBrAYqAIqAIKAKKgCKgCCgCioAioAh4DwJ31i2NwvkCsO3oOfwTdl5cC1pblVPXAu95SFlQE1UOZAHoWqQioAgoAoqAIqAIKAKKgCKgCCgCWYVAHn8/3N2wvCl++joJa+jgHViRVVXScr0AAVUOeMFD0CooAoqAIqAIKAKKgCKgCCgCioAikJkI9IkjJpy98SiiStYD8hQCTu8Hzh3NzGpoWV6EgCoHvOhhaFUUAUVAEVAEFAFFQBFQBBQBRUARyAwE6pQrhPrlC+PclWj88s8JJ94BtR7IDPy9sQxVDnjjU9E6KQKKgCKgCCgCioAioAgoAoqAIuBhBPo0tcIaGmJCB+/AMg+Xqtl7KwKqHPDWJ6P1UgQUAUVAEVAEFAFFQBFQBBQBRcCDCHS/pRzy+Pti1b5TiCjWxCopVC0HPAi5V2etygGvfjxaOUVAEVAEFAFFQBFQBBQBRUARUAQ8g0ChvAHoUr+syfzrg4WBvPJ3JlR4B454pkDN1asRUOWAVz8erZwioAgoAoqAIqAIKAKKgCKgCCgCnkPg/jjXghnrwxAb3MIq6MByzxWoOXstAqoc8NpHoxVTBBQBRUARUAQUAUVAEVAEFAFFwLMINKtaHJWL50fE+UjsLdDQKix0mWcL1dy9EgFVDnjlY9FKKQKKgCKgCCgCioAioAgoAoqAIpA5CNxnExOerGwVqLwDmQO8l5WiygEveyBaHUVAEVAEFAFFQBFQBBQBRUARUAQyE4HejSrAz9cHU/YVQEzeIsDZQ9ZfZlZCy8pyBFQ5kOWPQCugCCgCioAioAgoAoqAIqAIKAKKQNYhUKpQXrSrVRLRMT44FHSLVRHlHci6B5JFJatyIIuA12IVAUVAEVAEFAFFQBFQBBQBRUAR8BYE+jQNNlWZf6GGVSXlHfCWR5Np9VDlQKZBrQUpAoqAIqAIKAKKgCKgCCgCioAi4J0I0HKgZFAezDtfzaqg8g5454PyYK1UOeBBcDVrRUARUAQUAUVAEVAEFAFFQBFQBLIDAv5+vujVuAJ2xlbEJb9CwLkjwOkD2aHqWkc3IaDKATcBqdkoAoqAIqAIKAKKgCKgCCgCioAikJ0R6GOiFvhg1bWbrGakw3rg0qVLOHnyZJIw8NqVK1eSvK4Xsg4B/6wrWktWBBQBRUARUAQUAUVAEVAEFAFFQBHwFgSqlCiAW6sUw/JDtdExYA1A3oFG/R3VGzNmDObPn+845k6tWrUwbtw4XL16FaNHj8bSpUvh4+OD8uXL46233kKFChVM+oMHD2LkyJEIDw83x+3atcPw4cMREBBgjvVf1iOgyoGsfwZaA0VAEVAEFAFFQBFQBBQBRUARUAS8AoE+TSri89A6Vl0SWA7ExsaiUaNGePLJJx11zZMnj9lfuHAhNm7ciIkTJ6JEiRJGMUClwbvvvmuuf/zxxwgODsaECRMQERGB5557DosWLUKXLl0ceelO1iKgbgVZi7+WrggoAoqAIqAIKAKKgCKgCCgCioDXINClflmEBVbGqdiCwPkw4NS+G+pWoEABVKpUyfFXpkwZc3358uVo06aNUQDkz58fPXv2xIYNG0A3g3PnzmHLli3o1asX8uXLhypVqqBly5bgPSreg4BaDmTwWVy7di2DObi+nVq569evu76oZxUBJwRiYmLAP0/1RaeidDebI6DvlGz+ADOp+vr9ySSgs3Exdh/ht0dFEUgOAbuv0MRcJfsgECDLx91uLou/N9VGF781uL5/GfyKx0UwkGbs2LEDo0aNQqFChdCqVStjScDWkUsgJCTE0VC6FbAPnDp1CtHR0eY8z9lCd4Ndu3bZh7r1AgRylXKAHzF2UD8/v0TQc9B84sQJlCxZ0uV1arxInEETGWe5fPmy86Hb9lnXyMhI46/jtkw1oxyJAPsK+6/90s2RjdRGuQUBvsd0gOYWKHN0Jvr9ydGP122N4/hH3ydugzPHZsTxSVRUlPFFz7GNzKEN616vBBZsqGOUA9f2/gm/pgNMS8kvQKuAwMBA7NmzBy+++CJeeOEFdOzYERcvXjTnbUiYhsLz9jjVdkHgeV7n2ETFexDINcoBKgVIkEF56aWXbngC9I+hPww7LTvpsGHDTAdnopSINagx84ScP3/e/PD8/XPNI/IEjLkiT75U2U+cX7a5ouHayDQhcObMGaPh18F8mmDLlYn1+5MrH3uaGn327FkULFgQvr7qnZom4HJh4gsXLiBv3rxKOJcNn32IzHEmFWsKXJiM2IOrHS1IyA/w5ptv4rfffjNzp6CgoBsUQZxHUXjeVg7Y53ie+3RRUPEeBHLFW51EF71798bixYsTIU8zF7JuklRjwYIFGDRoED744APjF8PEzsQas2fPBn1qqEhQUQQUAUVAEVAEFAFFQBFQBBQBRSCnIhDSvCVOxhZC3sjjSTaRVte0dqbQwvro0aOOtNznokTx4sUd1tfO148cOeI477hJd7IUgVyhHCDZxaeffmp8YhKivWrVKqP97tq1q1l97d69u9Fwrl5taciSI9ZImJceKwKKgCKgCCgCioAioAgoAoqAIpATELinYXmsia1zQ1PGjx+Pffv2GUuA7du3m2gDjF5AIf8AwxgePnzYuGPPnDkTDRs2NNYBhQsXRv369cFzdNUODQ3FihUrXM7PbihQDzIVgVxhs06/GPsvISEXiTPKlSvnAJ0mcmXLljX8AzyZHLEGzWA85SdDn0/+cNRkz/FodCcJBEhEyH6thIRJAKSnHQh4iiPFUYDu5AgE9PuTIx6jRxtBV03lHPAoxDkmc45PuKrsbEqeYxqXCxoSIG08W6qZTIj+crSWEQdmzZrlOG7bti369u1rjjt37ozNmzdj4MCBxmKAcyoSF9oydOhQvPrqq+jRo4fhgeO95CpQ8R4EcoVyIDm46Qtlk2XY6ZzJMZIj1mB6T3EC0C+HeatywH4quk0KAX54SbLpqb6YVLl6PnshwIEZ+4lyDmSv55YVtdXvT1agnr3K5PuE3xx9n2Sv55YVteXCBb89rsjAs6I+WmbaEajW5A7gl7GOGydMmADOn8hlRJcChiW0hfxXr732miEgpAKxVKlS9iWzrVy5MqZNm4Zjx44ZHgLlG7gBHq84yPXKARLq2AQZ9hMhqyqJMyjJEWvwuqdI4FiHgIAAnfARZJVkEeCHl4M0T/XFZAvXi9kGAX6k2Ud0MJ9tHlmWVVS/P1kGfbYpmJaNXEjRBYxs88iyrKJUJHE8yz+V7InArc1aYk/R1ajhVH3On/iXlHD+ZM+lXKUpXbq0q9N6zgsQyBWcA8nhTOKMsLAwRxKaU0ZERDjIMZIj1nDcpDuKgCKgCCgCioAioAgoAoqAIqAI5DAEuKhQo9aNvAM5rInaHCcEcoVygGbX1Fxya+9TCUAJCQkBwzbNnz/fXJs7d67xjWrevLm5nhyxhkmg/xQBRUARUAQUAUVAEVAEFAFFQBFQBBSBbI5ArnArYAhC+sfYsmTJEgwZMsSQYdAy4OmnnzbRDMaOHWvMs5955hkUKVLEJE+JWMPOU7eKgCKgCCgCioAioAgoAoqAIqAIKAKKQHZFwEcYZ2Oza+XdWW/6bZMcgz4wrojdSEzoiljDnXVwzovWDIyw4Kouzul0XxFgxAzlHNB+kBICJA6i0lM5B1JCSq/r90f7QEoInD17FoUKFVLOgZSA0uuGuC5v3rzKOaB9QRHIJgjkCsuB1DwLTq7Kly+fZNKUiDWSvFEvKAKKgCKgCCgCioAioAgoAoqAIqAIKAJejkCu4Bzw8meg1VMEFAFFQBFQBBQBRUARUAQUAUVAEVAEshQBVQ5kKfxauCKgCCgCioAioAgoAoqAIqAIKAKKgCKQ9QiociDrn4HWQBFQBBQBRUARUAQUAUVAEVAEFAFFQBHIUgSUkDBL4dfCFQFFQBFQBBQBRUARUAQUAUVAEVAEFIGsR0AtB7L+GWgNFAFFQBFQBBQBRUARUAQUAUVAEVAEFIEsRUCVA1kKvxauCCgCioAioAgoAoqAIqAIKAKKgCKgCGQ9AqocyMRn8Pvvv+PUqVPJlsjYwSdPnkwyDWMAO4PsAAARu0lEQVTaJ3f9+vXriI2NdXk/45ynVL7LG/WkVyOQkT5z5coVhIWFISYmxmUb2Z8iIiLArYr3IZDSO4XP7dixY7h8+XKSlef7hP3AlWSkb7nKT89lDwRSeu4Z6TNEIDo6OnsAkctqmdXvE+0bObPDpfQ+SW5cm9wYJTXft5yJqLZKEfAsAso5kE58X3nlFfz999/m7sGDB6Nnz54p5tS5c2e8/fbbaNSoUaK0Bw8exIsvvuiYvFepUgUPPPAA2rZta9JevXoVo0ePxtKlS+Hj44Py5cvjrbfeQoUKFRx5nT9/Ho899hieeeYZhISEOM5zIMe0//zzD3x9fcG8R44ciXLlyjnS6I77EVi0aJF5Zsy5Tp06GDt2rFsLyWifGTFiBNatW2fqVLhwYdPXhgwZ4qjjwoULMW7cODOQDwwMxLBhw9CxY0fHdd1xHwJRUVG46667HBl+9913KFGihOM4qZ3k3ik//fQTJk6cCL47/P39ccstt2Do0KEoW7asyY79h++B8PBwc9yuXTsMHz4cAQEByGjfSqq+ej5jCKTnu5OWElN67hnpM3Y9Vq1aZb5HfL+oeA6B9PSVrHqf2Cho37CRyJxtevpIWmqW0vskpXFtcmOUlL5vaamnplUEFIEbEVDLgRvxSPXRyy+/jFmzZqFMmTJJrtSnOjNJyJXbHj16gJOCH3/8EbVr18YXX3zhWLHlQGrjxo1msD979mxTLidutrzzzju4//77cfr06UT1mTFjBq5du4ZJkyaBL9T8+fPjww8/tG/VrYcQ4GSLfYSKo6SsOTJSdEb7DJVE48ePx7x588ykcc6cOdi2bZupEi1MxowZgyeffBILFizAoEGD8MEHH+DcuXMZqbLemwQCefLkMX3lv//9bxIp0n6av/OXXnoJfK6fffaZsQDh79+Wjz/+GMHBweb6559/jjVr1oAKLUpG+5Zdhm7di4C7vzsJa5fSc89In6HlWv/+/fHaa68lLFaPPYCAu/uKJ98n2jc80AFSkaW7+0jCIlN6n6Q0rk1ujJJSf0xYFz1WBBSB1COgyoHUY3VDynz58iEoKMisxNsXOFl3Hnxv2LDBrMTZ15Pb8iXYt29fs1pYpEgRs0J74sQJs4LH+5YvX442bdqYwTxfipxwMn+aY1GeeOIJozjgCq+z0Hzzl19+AVcEaGVQoEABM0DbvHmz417n9LrvPgS4Wss+4vxMjhw5gscffxx33303unXrZvrHoUOHHIXSCoVKHKbhM2afSsrkO6N9hmXUqFEDefPmRevWrVG8eHGsXbvW1IUrOAULFkTXrl3NqnP37t1NutWrVzvqqjvuRYB9hb9PZ8nIO6VTp0647bbbjDKwcuXKaNq0qcNShEqeLVu2oFevXuC7jH2pZcuW5j3D8jPat5zboPvuQ8DVd+fnn39Gv379jOVJ7969jYUSlcGUTZs2GYsfWpBQeTxgwADzPUiqRsk994z2GVon0frt+eefT6p4Pe9GBFz1FW99n2jfcOODT0NWrvpIcmMUd75PWM2UxrXJjVGS+76lAQJNqggoAi4QUOWAC1DSe4q+2c58ABcvXnRM7tOaJyf+nLTZJsDMl64EtnCfq9E2h0CxYsVMWrocOAvdCKggcD5v58n6qmQuAn5+fujQoYNxL3nvvffMc+GAzZb9+/dj2bJlZtJG9xD6gK5fv96+nOw2rX3GOTOa/7EvVa9e3Zxmf3N2O2E/Yr+hwkol8xBw1zuFKzgc2FWrVs3xfLnj/E6h8tD5/eXcyoz0Led8dN/9CBQtWhSPPPIIPvroIzz33HNYsmSJQwHAbxDdyY4ePWqUBFQCfvrpp8bVJDU1cX7udt9Ib5+x3yGsr0rWIOCt7xPtG1nTH1yVmtwYxZ3vE5ad0rjWuX4JxyjO1xJ+35yv6b4ioAikHQFVDqQdM4/fwVV9uhdwNYiaXQpfys4r0PY+zycnfNG3atXKWBXQxJ1WBF9++aW5xVlhkFwees19CHCCTY03P4o04acCyNlygCXRt//OO+80q/kNGzY0FiIp1SAjfYbWJ+SkoCtLixYtTFEXLly4ob/xJPucbamSUn30unchQLcBThBp1k2x3xt0Z7Alqeebkb5l561bzyFAiw9aAO3btw8HDhwwFj/O7xRaAJFbgjw0Dz30kFEM7NixI8UKJXzuGe0zKRaoCbINAu5+n2SbhueCiqY0RnHX+4RQpnZc62qM4vwoEvZH52u6rwgoAmlHwD/tt+gdnkRg7969xifzjjvuQJ8+fRxF0eSY5C222Ps8n5JwBfrbb781ZIacDNDcnVK6dOmUbtXrbkaAA2763NKEv1atWib35CIB0Mw8MjIy2VpkpM/QZYETB9bhjTfeAJVJFA4AEjKKkzQvNf0t2crqxUxH4IcffsDcuXPx+uuvo1KlSqZ8+zna7xGe5H5Ct4aM9K1Mb2guLZBuSN9//z0aNGhgXMe4CsuVNFfC3zeVQOl5p2S0z7iqj57Lfgh44n2S/VDIuTVOyxglI+8TIsh3SsJvkH3eRjipMYp93VV/tK/pVhFQBNKHgCoH0oeb4y76dtoTKk66nV90aV2Z37p1K1599VVQMUDfc2chczlX/mzhPvPnJDMlofXBo48+6kjGSQLNixNOBBwJdMetCLCP2H2BZJI333yzmYjzHF0Idu7cme7yMtJnGN2CbMWc9JOg0tncl/2NIQ5t4WSDJqmpYdC379Ft2hFIqJDJ6Dtl8uTJICHpm2++aTgH7BrZz5HvEXufvqb2PtNlpG/Z5ejWMwjY3x1O8jk4ZpQJO5LIqFGjki3UfhcllSip5273jfT2maTK0/OeRcDuKyzFW98nnkVAc08JAec+ktYxSnrfJ6wT3ynJjWuTG6Pw/qS+b7ymoggoAulHQN0K0oEdfZ9o5kR/TJqHN2vWzORSr149E1GAEQO44kYW+NQK8+IAjz6hjFrAiRlfmjY7PF0DGMbw8OHDhqBu5sz/b+/ukdpIoyiAagK2wBpIyBwQsgUSFkBKEbAKSNkAO5iQgAAiAjZATgqbGM/tqqZkIyFBt988pk5X2fxI1ns+36eWdPvv70V2OR8/4GflPgYTy9+nfq5xnpVsduFKT4+Pj8Pupdv25n6fF3h9fV3kDMz5mnMGJBDIkpNJZpf9XPc38+j29vYtOPhslSlzJnMihy9kXuQEYfk58228rF12Qc5tNzc3w14F2fKcDyIHBwefbdP9NwjENc/rPD9zvHiO6R5DvynrlBxbnsOTzs/Ph/NHZHzzJ+uJnABsf39/kfVItsw8Pz8vHh4ehkOQ0u6UubXhv+vmLwqset3JXgIJf7OeyWtSTiiacwx8dflo3KfOmfSUuZfXp9+/H37hr9kEVs2VPHjX9Ul6MzeiULesmyPf5T3KR69vdYoqEfh/Cthz4AvjenFxMRzfmS2tucLAeIK/fLC/v78fDgfI7vt5IV5ePkpYEyZk62wu7bJ8/eec0T7XJs/VBrK718nJyfBhMjWXtxAlWHh6ehrK5fjxLLkkYq58kDf++SCYJZdezG7k47Hlwy/9NbvA3d3d4vr6erhm/I8fPxZHR0dDjVyBIFtxj4+Ph9179/b23tVenif5fvnn5TtPmTMJKLKlOMvp6enbw+YDQLY0J9E/OzsbTl52dXU1bHHK4SmZT5Z5BXIiyDyvs+SEkLl85DjmU9YpOa4865TLy8tfGs7lErMLetYr2VMpYWRObnp4ePi29XnK3PqlmB9mE1j3upPzCGRdk61oOVRsPB/NWDgBwrbLpnGfMmcSpOf1clxyJZSEprlEqmVegXVzpev6xNyYd/y3ebR1c2TTe5Q51ycfva/d9B5l0+vbNgbuQ4DAaoG//n1T+M/qm/x2nUC2fGTLb64QsGpF+fLyMty2s7Oz7iG+/PtsXcxW3t3d3a0fI8eTZ4twPvjlWHLLnxfI0yp7fSQkGk8qOVbNbdmCm63Dv9823mfOr1+ZM2P9zPXM53zoGM9VMd7m63wCeU5ny9m68OVPrlPy2Dn2c9wL6TP/qylz6zN13HcxbHFf97qTvT+yp1LC31WvSXP7TZkzc/fi8d4L/JfvUcyN9+PR8TcfzZHv9B6lo62eCHx3AeHAdx9B/RMgQIAAAQIECBAgQIAAgYkC2+9vOLGQf06AAAECBAgQIECAAAECBAj0FBAO9BwXXREgQIAAAQIECBAgQIAAgTIB4UAZtUIECBAgQIAAAQIECBAgQKCngHCg57joigABAgQIECBAgAABAgQIlAkIB8qoFSJAgAABAgQIECBAgAABAj0FhAM9x0VXBAgQIECAAAECBAgQIECgTEA4UEatEAECBAgQIECAAAECBAgQ6CkgHOg5LroiQIAAAQIECBAgQIAAAQJlAsKBMmqFCBAgQIAAAQIECBAgQIBATwHhQM9x0RUBAgQIECBAgAABAgQIECgTEA6UUStEgAABAgQIECBAgAABAgR6CggHeo6LrggQIECAAAECBAgQIECAQJmAcKCMWiECBAgQIECAAAECBAgQINBTQDjQc1x0RYAAAQIECBAgQIAAAQIEygSEA2XUChEgQIAAAQIECBAgQIAAgZ4CwoGe46IrAgQIECBAgAABAgQIECBQJiAcKKNWiAABAgQIECBAgAABAgQI9BQQDvQcF10RIECAAAECBAgQIECAAIEyAeFAGbVCBAgQIECAAAECBAgQIECgp4BwoOe46IoAAQIECBAgQIAAAQIECJQJCAfKqBUiQIAAAQIECBAgQIAAAQI9BYQDPcdFVwQIECBAgAABAgQIECBAoExAOFBGrRABAgQIECBAgAABAgQIEOgpIBzoOS66IkCAAAECBAgQIECAAAECZQLCgTJqhQgQIECAAAECBAgQIECAQE8B4UDPcdEVAQIECBAgQIAAAQIECBAoExAOlFErRIAAAQIECBAgQIAAAQIEegoIB3qOi64IECBAgAABAgQIECBAgECZgHCgjFohAgQIECBAgAABAgQIECDQU0A40HNcdEWAAAECBAgQIECAAAECBMoEhANl1AoRIECAAAECBAgQIECAAIGeAsKBnuOiKwIECBAgQIAAAQIECBAgUCYgHCijVogAAQIECBAgQIAAAQIECPQUEA70HBddESBAgAABAgQIECBAgACBMgHhQBm1QgQIECBAgAABAgQIECBAoKeAcKDnuOiKAAECBAgQIECAAAECBAiUCQgHyqgVIkCAAAECBAgQIECAAAECPQWEAz3HRVcECBAgQIAAAQIECBAgQKBMQDhQRq0QAQIECBAgQIAAAQIECBDoKSAc6DkuuiJAgAABAgQIECBAgAABAmUCwoEyaoUIECBAgAABAgQIECBAgEBPAeFAz3HRFQECBAgQIECAAAECBAgQKBMQDpRRK0SAAAECBAgQIECAAAECBHoKCAd6jouuCBAgQIAAAQIECBAgQIBAmYBwoIxaIQIECBAgQIAAAQIECBAg0FNAONBzXHRFgAABAgQIECBAgAABAgTKBIQDZdQKESBAgAABAgQIECBAgACBngLCgZ7joisCBAgQIECAAAECBAgQIFAmIBwoo1aIAAECBAgQIECAAAECBAj0FBAO9BwXXREgQIAAAQIECBAgQIAAgTIB4UAZtUIECBAgQIAAAQIECBAgQKCngHCg57joigABAgQIECBAgAABAgQIlAkIB8qoFSJAgAABAgQIECBAgAABAj0FhAM9x0VXBAgQIECAAAECBAgQIECgTEA4UEatEAECBAgQIECAAAECBAgQ6CkgHOg5LroiQIAAAQIECBAgQIAAAQJlAsKBMmqFCBAgQIAAAQIECBAgQIBATwHhQM9x0RUBAgQIECBAgAABAgQIECgTEA6UUStEgAABAgQIECBAgAABAgR6CggHeo6LrggQIECAAAECBAgQIECAQJmAcKCMWiECBAgQIECAAAECBAgQINBTQDjQc1x0RYAAAQIECBAgQIAAAQIEygSEA2XUChEgQIAAAQIECBAgQIAAgZ4CwoGe46IrAgQIECBAgAABAgQIECBQJiAcKKNWiAABAgQIECBAgAABAgQI9BT4CS6kSMLBwMkEAAAAAElFTkSuQmCC" + }, + "execution_count": 152, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var years = [2015,2016,2017,2018,2019,2020,2021,2022]\n", + "Promise.all(\n", + " years.map((year) => {\n", + " return query( `SELECT formatDateTime(created_at, '%Y-%m') as date, max(repo_stargazers_count) as star ,max(repo_forks_count) as fork\n", + "FROM github_log.events  \n", + "where repo_name='microsoft/vscode' and repo_stargazers_count >0 and repo_forks_count>0\n", + " group by formatDateTime(created_at, '%Y-%m')\n", + " order by formatDateTime(created_at, '%Y-%m')\n", + "`);\n", + " })\n", + ").then(res=>{   \n", + " // console.log(res[0])\n", + " star=[]\n", + " fork=[]\n", + " month=[]\n", + " // month.push(res[0][0].date)\n", + " for (var i=1;i {\n", + " return query( `SELECT formatDateTime(created_at, '%Y-%m') as date, count(*)issue_id \n", + " FROM github_log.events  \n", + "where repo_name='microsoft/vscode'and type = 'PullRequestEvent'\n", + " group by formatDateTime(created_at, '%Y-%m')\n", + " order by formatDateTime(created_at, '%Y-%m')\n", + "`);\n", + " })\n", + ").then(res=>{   \n", + " for (var i=1;i {\n", + " return query( `SELECT formatDateTime(created_at, '%Y-%m') as date, count(*)issue_id \n", + " FROM github_log.events  \n", + "where repo_name='microsoft/vscode'and type = 'PullRequestEvent'and issue_created_at{\n", + " \n", + " for (var i=1;i {\n", + " return query( `SELECT formatDateTime(created_at, '%Y-%m') as date, count(*)open\n", + " FROM github_log.events  \n", + "where repo_name='microsoft/vscode'and type = 'PullRequestEvent' and action = 'opened'\n", + " group by formatDateTime(created_at, '%Y-%m')\n", + " order by formatDateTime(created_at, '%Y-%m')\n", + " \n", + "`);\n", + " })\n", + ").then(res=>{   \n", + " for (var i=1;i {\n", + " return query( `SELECT formatDateTime(created_at, '%Y-%m') as date, count(*)pull_merged_at\n", + " FROM github_log.events  \n", + "where repo_name='microsoft/vscode'and type = 'PullRequestEvent' and action ='closed'\n", + " group by formatDateTime(created_at, '%Y-%m')\n", + " order by formatDateTime(created_at, '%Y-%m')\n", + "`);\n", + " })\n", + ").then(res=>{   \n", + " for (var i=1;i {\n", + " // console.log(data)\n", + " openDigger.render.plotly([\n", + " {y: data.map(d => d.cnt), x: data.map(d => d.m), mode: 'scatter', name: '开发者活跃 数量'},\n", + " ],{title: `每月在仓库中活跃的不同开发者总数`}); \n", + " }\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "881a28a5-154d-4dc9-b821-1950c40d3e2d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "13.338223645957047天平均时间解决issue\n", + "0.7665856481481481天中位数时间解决issue\n" + ] + } + ], + "source": [ + "5//Issue 从打开到关闭的平均时长和中位数(单位:天)\n", + "\n", + " Promise.all(\n", + " years.map((year) => {\n", + " return query( `SELECT toUnixTimestamp(temp.issue_closed_at)-toUnixTimestamp(temp1.issue_created_at) as time\n", + "From github_log.events  as temp1,(select issue_created_at,issue_id ,issue_closed_at from github_log.events  where repo_name='microsoft/vscode' and\n", + " type = 'PullRequestEvent' and action = 'closed') as temp\n", + " where temp1.repo_name='microsoft/vscode' and temp1.type='PullRequestEvent' and temp.issue_id=temp1.issue_id and temp1.action='opened'\n", + "`);\n", + " })\n", + ").then(res=>{   \n", + " function sortNumber(a,b){\n", + " return a - b\n", + " }\n", + " times=[]\n", + " let sum=0 \n", + " let len=0\n", + " for(let i= 0; i < res.length;i++){\n", + " len=len+res[i].length\n", + " for (let j = 0; j < res[i].length; j++) {\n", + " times[i*res[i].length+j] = Number(res[i][j].time);\n", + " sum+=Number(res[i][j].time)\n", + " }\n", + " }\n", + " sum=sum/len\n", + " times.sort(sortNumber)\n", + " console.log(sum/86400+'天平均时间解决issue')\n", + " console.log(times[len/2]/86400+'天中位数时间解决issue') \n", + " });\n" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "81b3fbd3-dbdf-400b-b360-e0254d705e81", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7.370732942887969天平均时间pr\n", + "0.6565509259259259天中位数时间pr\n" + ] + } + ], + "source": [ + "6//PR 从打开到合入的平均时长和中位数(单位:天)\n", + "\n", + "\n", + "Promise.all(\n", + " years.map((year) => {\n", + " return query( `SELECT toUnixTimestamp(temp1.pull_merged_at)-toUnixTimestamp(temp.created_at) as time\n", + "From github_log.events  as temp1,(select created_at,issue_id from github_log.events  where repo_name='microsoft/vscode' and\n", + " type = 'PullRequestEvent' and action ='opened') as temp\n", + " where temp1.repo_name='microsoft/vscode' and temp1.type='PullRequestEvent' and temp1.pull_merged=1 and temp.issue_id=temp1.issue_id\n", + "`);\n", + " })\n", + ").then(res=>{   \n", + " function sortNumber(a,b){\n", + " return a - b\n", + " }\n", + " times=[]\n", + " let sum=0 \n", + " let len=0\n", + " for(let i= 0; i < res.length;i++){\n", + " len=len+res[i].length\n", + " for (let j = 0; j < res[i].length; j++) {\n", + " times[i*res[i].length+j] = Number(res[i][j].time);\n", + " sum+=Number(res[i][j].time)\n", + " }\n", + " }\n", + " sum=sum/len\n", + " times.sort(sortNumber)\n", + " console.log(sum/86400+'天平均时间pr')\n", + " console.log(times[(len)/2]/86400+'天中位数时间pr') \n", + " });\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "372b4830-542d-4afb-97f0-f466200b3f1e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "第一次有人回复(非本人)的平均时长135.0825240178187天\n", + "第一次有人回复(非本人)的中位数3.5388657407407407天\n" + ] + } + ], + "source": [ + "//7 issue和PR从打开到第一次有人回复(非本人)的平均时长和中位数(单位:天)\n", + "\n", + "\n", + "Promise.all(\n", + " years.map((year) => {\n", + " return query( `SELECT toUnixTimestamp(issue_comment_created_at)-toUnixTimestamp(issue_created_at) as time\n", + "From github_log.events  \n", + " where repo_name='microsoft/vscode' and type='IssueCommentEvent' and issue_author_id<>\n", + " issue_comment_author_id\n", + "`);\n", + " })\n", + ").then(res=>{   \n", + " function sortNumber(a,b){\n", + " return a - b\n", + " }\n", + " times=[]\n", + " let sum=0 \n", + " let len=0\n", + " for(let i= 0; i < res.length;i++){\n", + " len=len+res[i].length\n", + " for (let j = 0; j < res[i].length; j++) {\n", + " times[i*res[i].length+j] = Number(res[i][j].time);\n", + " sum+=Number(res[i][j].time)\n", + " }\n", + " }\n", + " sum=sum/len\n", + " times.sort(sortNumber)\n", + " console.log('第一次有人回复(非本人)的平均时长'+sum/86400+'天')\n", + " console.log('第一次有人回复(非本人)的中位数'+times[len/2+1]/86400+'天') \n", + " });" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9a4f3878-a0b4-4fc5-8cf3-a95cb12454da", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8a9f5495-1907-4772-b70a-890cdc3978cb", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "JavaScript (Node.js)", + "language": "javascript", + "name": "javascript" + }, + "language_info": { + "file_extension": ".js", + "mimetype": "application/javascript", + "name": "javascript", + "version": "16.13.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Final/44-vscode/vscode.md b/Final/44-vscode/vscode.md new file mode 100644 index 0000000..46b1ff4 --- /dev/null +++ b/Final/44-vscode/vscode.md @@ -0,0 +1,113 @@ +# microsoft/vscode项目报告 +## 1 项目的基本背景和发展历程介绍 +### 1.1项目介绍 +![](https://user-images.githubusercontent.com/35271042/118224532-3842c400-b438-11eb-923d-a5f66fa6785a.png) +- vscode是一款由微软发布的轻量级代码编辑器。 +- 它提供全面的代码编辑、导航和理解支持以及轻量级调试、丰富的可扩展性模型以及与现有工具的轻量级集成。 +- 项目地址:https://github.com/microsoft/vscode +### 1.2技术类型 +![](https://cdn.nlark.com/yuque/0/2022/png/28782610/1656500977199-05fcb663-9142-4376-8d59-0c5129c5b455.png) +- 该项目主要由typescript实现。 +### 1.3历史版本发布 +![](https://cdn.nlark.com/yuque/0/2022/png/28782610/1656500977127-9976adaf-dbc7-4940-b59d-43077cb78e2c.png) +![](https://cdn.nlark.com/yuque/0/2022/png/28782610/1656500977412-0a8bb202-4b4f-4a48-8462-42030bb27fb1.png?x-oss-process=image%2Fresize%2Cw_1500%2Climit_0) +- 目前为止已发布70个版本。 +- 最行版本为1.68.1。 +### 1.4主要贡献者构成 +![](https://cdn.nlark.com/yuque/0/2022/png/28782610/1656500977320-7798977a-c28d-4d43-8d49-0fc4cdb8ebb9.png?x-oss-process=image%2Fresize%2Cw_724%2Climit_0) +- 目前共有1661位代码贡献者。 +- 主要代码贡献者来自于欧洲,其中瑞士的贡献者较多。 +### 1.5CI/CD使用 +![](https://cdn.nlark.com/yuque/0/2022/png/28782610/1656500977525-d62d0afc-3988-40b9-96bd-2f10fe6bbb0b.png?x-oss-process=image%2Fresize%2Cw_1500%2Climit_0) +- 目前共跑流水线906934次。 +- 成功708756次,失败12174次。 +## 2 项目的历史轨迹分析 +### 2.1 每月新增 Star 和 Frok 的个数 +![](https://cdn.nlark.com/yuque/0/2022/png/25380704/1656414236607-0e19214a-7cae-4bcc-9926-d4e339ad6315.png?x-oss-process=image%2Fresize%2Cw_1500%2Climit_0) +- fork和star的波动情况相仿,每月新增数都较为稳定。 +- 2019年11月出现fork和star的高峰。 +### 2.2 每月打开 Issue 和 关闭 Issue 的个数 +![](https://cdn.nlark.com/yuque/0/2022/png/25380704/1656414251372-a7778afd-665d-4140-9be5-95de95447439.png?x-oss-process=image%2Fresize%2Cw_1500%2Climit_0) +- 打开的issue多于关闭的issue,且每月打开的issue数约为关闭的issue数的两倍。 +- 打开issue和关闭issue的波动情况相仿,且较为平稳。 +- 2021年10月出现打开issue和关闭issue的低谷期。 +### 2.3 每月打开 PR 和合入 PR 的个数 +![](https://cdn.nlark.com/yuque/0/2022/png/25380704/1656414285297-c37cc6cd-5616-4875-9740-1a5bee122b49.png?x-oss-process=image%2Fresize%2Cw_1500%2Climit_0) +- 打开pr和合入pr的波动情况相仿。 +- 2021年10月出现打开pr和合入pr的低谷期。 +- 每月打开PR和合入PR的波动曲线与每月打开issue和关闭issue的波动曲线类似。 +### 2.4 每月在仓库中活跃的不同开发者总数 +![](https://cdn.nlark.com/yuque/0/2022/png/25380704/1656414319047-8fac0204-a99a-4028-be38-b25f15fd5c31.png?x-oss-process=image%2Fresize%2Cw_1500%2Climit_0) +- 活跃度较为平缓,2021年10月拥有较低的活跃度。 +- 与issue、pr波动曲线相似。 +### 2.5 Issue 从打开到关闭的平均时长和中位数 +- Issue从打开到关闭的平均时长为13.338天 +- Issue从打开到关闭的中位数天数为0.767天 +### 2.6 PR 从打开到关闭的平均时长和中位数 +- PR从打开到关闭的平均时长为7.371天 +- PR从打开到关闭的中位数天数为0.657天 +### 2.7 Issue 和 PR 从打开到第一次有人回复(非本人回复)的平均时长和中位数 +- 第一次有人回复(非本人)的平均时长135.083天 +- 第一次有人回复(非本人)的中位数3.539天 +### 2.8 关键时间节点 +- 2021年10月,是打开issue和关闭issue的低谷期、打开pr和合入pr的低谷期、活跃度的低谷期。 + +## 3 edex-ui 和 vscode 项目对比分析 +> 期中项目为:2-edex-ui
期末项目为:44-vscode +### 3.1 每月新增 Star 和 Fork 的个数对比 +![](https://cdn.nlark.com/yuque/0/2022/png/25380704/1652436764352-db31f7dc-b61e-4b4d-8f24-88b984871b66.png?x-oss-process=image%2Fresize%2Cw_1446%2Climit_0) +
edex-ui 每月新增 Star 和 Fork 的个数
+ +![](https://cdn.nlark.com/yuque/0/2022/png/25380704/1656414236607-0e19214a-7cae-4bcc-9926-d4e339ad6315.png?x-oss-process=image%2Fresize%2Cw_1500%2Climit_0) +
vscode 每月新增 Star 和 Fork 的个数
+ +- edex-ui的Star和Fork数波动较大,vscode的Star和Fork数波动较小 +- edex-ui的每月新增Star数大多数时间在0-2000间波动,每月新增Fork数大多数时间在0-100间波动 +- vscode的每月新增Star数大多数时间在1000-2000间波动,每月新增Fork数大多数时间在200-400间波动 +- 在edex-ui和vscode有近似的每月新增Star数甚至部分时间edex-ui的每月新增Star数高于vscode时,vscode的每月新增Fork数却高于edex-ui +### 3.2 每月打开 Issue 和 关闭 Issue 的个数对比 +![](https://cdn.nlark.com/yuque/0/2022/png/25380704/1652436795591-69327386-c608-4c57-9a02-210681392b27.png?x-oss-process=image%2Fresize%2Cw_1414%2Climit_0) +
edex-ui 每月打开 Issue 和 关闭 Issue 的个数
+ +![](https://cdn.nlark.com/yuque/0/2022/png/25380704/1656414251372-a7778afd-665d-4140-9be5-95de95447439.png?x-oss-process=image%2Fresize%2Cw_1500%2Climit_0) +
vscode 每月打开 Issue 和 关闭 Issue 的个数
+ +- edex-ui的每月打开issue和关闭issue数波动较大,vscode的每月打开issue和关闭issue数波动较小 +- edex-ui的每月打开issue和关闭issue数大多数时间在0-40间波动,vscode的每月打开issue和关闭issue数大多数时间在200-500间波动 +- edex-ui的每月打开issue和关闭issue数远小于vscode的每月打开issue和关闭issue数 +### 3.3 每月打开 PR 和合入 PR 的个数对比 +![](https://cdn.nlark.com/yuque/0/2022/png/25380704/1652436816062-62579021-bbe0-48aa-83de-25ff7bd660d4.png?x-oss-process=image%2Fresize%2Cw_1418%2Climit_0) +
edex-ui 每月打开 PR 和合入 PR 的个数
+ +![](https://cdn.nlark.com/yuque/0/2022/png/25380704/1656414285297-c37cc6cd-5616-4875-9740-1a5bee122b49.png?x-oss-process=image%2Fresize%2Cw_1500%2Climit_0) +
vscode 每月打开 PR 和合入 PR 的个数
+ +- edex-ui的每月打开PR和合入PR的个数大多数时间在0-30间波动,vscode的每月打开PR和合入PR的个数大多数时间在100-300间波动 +- edex-ui的每月打开PR和合入PR的个数远小于vscode的每月打开PR和合入PR的个数 +### 3.4 每月在仓库中活跃的不同开发者总数对比 +![](https://cdn.nlark.com/yuque/0/2022/png/25380704/1652436835095-9cc46151-5bf5-42d2-a2cb-6fd6cd4a3412.png?x-oss-process=image%2Fresize%2Cw_1322%2Climit_0) +
edex-ui 每月在仓库中活跃的不同开发者总数
+ +![](https://cdn.nlark.com/yuque/0/2022/png/25380704/1656414319047-8fac0204-a99a-4028-be38-b25f15fd5c31.png?x-oss-process=image%2Fresize%2Cw_1500%2Climit_0) +
vscode 每月在仓库中活跃的不同开发者总数
+ +- edex-ui的每月在仓库中活跃的不同开发者总数大多数时间在0-50间波动,vscode的每月在仓库中活跃的不同开发者总数大多数时间在1500-2500间波动 +- edex-ui的每月在仓库中活跃的不同开发者总数远小于vscode的每月在仓库中活跃的不同开发者总数 +### 3.5 项目发展到活跃/归档的原因探讨 +- 项目背景 + - edex-ui是个人开发者创建的项目,vscode是背靠microsoft创建的项目。这使得edex-ui的稳定性、抗风险能力、号召力远低于vscode + - edex-ui更受限于个人开发者,如资金短缺、个人开发的时间精力不足等,vscode则几乎不会收到这类因素影响 +- 项目价值 + - edex-ui是一个将电子产品"桌面"改造成电影中黑客画风的应用,这注定了它是一个炫酷的具有艺术性但缺乏实用性的应用 + - vscode则广为使用,极具实用性,且可以使用插件,让vscode的功能越发强大,从而更加实用,形成了良性循环 +- 社区活跃度 + - 从分析的数据可以看出,edex-ui数据波动更大,vscode更为稳定,且vscode的基数远大于edex-ui + - edex-ui是间歇性活跃,vscode是持续性活跃 + - vscode拥有更健康的社区环境 + +## 4 小组成员与分工 +|成员|学号|分工| +|---|---|---| +|张天赐|51215903023|主要负责项目的基本背景和发展历程调研,撰写分析报告| +|李锦路|51215903034|主要负责分析项目的历史轨迹,将数据分析成果整合为一份Jupiter文件| +|陈可璇|51215903105|主要负责期中期末项目对比分析,撰写分析报告|