Skip to content

Instantly share code, notes, and snippets.

@plant99
Created January 24, 2020 12:42
Show Gist options
  • Save plant99/7cd8525d354558b69fbb8259e0485481 to your computer and use it in GitHub Desktop.
Save plant99/7cd8525d354558b69fbb8259e0485481 to your computer and use it in GitHub Desktop.
merge_poly.ipynb
{
"cells": [
{
"cell_type": "code",
"execution_count": 158,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n"
]
}
],
"source": [
"from shapely.geometry import Polygon, Point\n",
"from shapely.ops import cascaded_union\n",
"import folium\n",
"p1 = Polygon([\n",
" (\n",
" -72.2779369,\n",
" 42.9272056\n",
" ),\n",
" (\n",
" -72.2778833,\n",
" 42.9253673\n",
" ),\n",
" (\n",
" -72.2757268,\n",
" 42.9254302\n",
" ),\n",
" (\n",
" -72.2758663,\n",
" 42.9272685\n",
" ),\n",
" (\n",
" -72.2779369,\n",
" 42.9272056\n",
" )\n",
" ])\n",
"p2 = Polygon([\n",
" (\n",
" -72.2751045,\n",
" 42.9279991\n",
" ),\n",
" (\n",
" -72.2768211,\n",
" 42.9270328\n",
" ),\n",
" (\n",
" -72.2763169,\n",
" 42.9265772\n",
" ),\n",
" (\n",
" -72.2766709,\n",
" 42.9261844\n",
" ),\n",
" (\n",
" -72.2758234,\n",
" 42.9255087\n",
" ),\n",
" (\n",
" -72.2748256,\n",
" 42.9267971\n",
" ),\n",
" (\n",
" -72.2751045,\n",
" 42.9279991\n",
" )])\n",
"print(p1.intersects(p2))\n",
"\n",
"def merge(p1, p2, intersection_with_former=True):\n",
" if intersection_with_former:\n",
" p2new = p2.difference(p1)\n",
" p1new = p1\n",
" else:\n",
" p1new = p1.difference(p2)\n",
" p2new = p2\n",
" return p1new, p2new"
]
},
{
"cell_type": "code",
"execution_count": 159,
"metadata": {},
"outputs": [],
"source": [
"p1new, p2new = (p1.difference(p2), p2.difference(p1))"
]
},
{
"cell_type": "code",
"execution_count": 160,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(-72.27643296687788, 42.92725128598154)\n",
"6371 12813\n"
]
}
],
"source": [
"m = folium.Map(location=[42.9271, -72.2751045],\n",
" tiles='OpenStreetMap', zoom_start=16)\n",
"x = p1.intersection(p2)\n",
"# m.choropleth(geo_data=p2new)\n",
"\n",
"# converting to list of lists\n",
"coordinates = x.exterior.coords\n",
"minlat, minlon, maxlat, maxlon = (coordinates[0][0], coordinates[0][1], coordinates[0][0], coordinates[0][1])\n",
"print(coordinates[0])\n",
"for i, coord in enumerate(coordinates):\n",
" minlat = min(minlat, coord[0])\n",
" minlon = min(minlon, coord[1])\n",
" maxlat = max(maxlat, coord[0])\n",
" maxlon = max(maxlon, coord[1])\n",
"\n",
"# loop through coordinates and distances, double for loop for latitude and longitude.\n",
"# check distance from p1 and p2. keep merging it with the polygon with appropriate distance\n",
"\n",
"delta = 0.00001\n",
"lat = minlat\n",
"\n",
"count1 = 0\n",
"count2 = 0\n",
"p1new_buffer = []\n",
"p2new_buffer = []\n",
"while lat < maxlat:\n",
" \n",
" lon = minlon\n",
" while lon < maxlon:\n",
" point = Point(lat+(delta/2), lon+(delta/2))\n",
" poly = Polygon([\n",
" (lat, lon),\n",
" (lat + delta, lon),\n",
" (lat + delta, lon + delta),\n",
" (lat, lon + delta)\n",
" ])\n",
" d1 = point.distance(p1new)\n",
" d2 = point.distance(p2new)\n",
" if d1 > d2:\n",
" count1 += 1\n",
" p2new_buffer.append(poly)\n",
" else:\n",
" count2 += 1\n",
" p1new_buffer.append(poly)\n",
" lon += delta\n",
" lat += delta\n",
"\n",
"print(count1, count2)\n",
"p1new_buffer.append(p1new)\n",
"p1new = cascaded_union(p1new_buffer)\n",
"\n",
"p2new_buffer.append(p2new)\n",
"p2new = cascaded_union(p2new_buffer)"
]
},
{
"cell_type": "code",
"execution_count": 163,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgCiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgTF9OT19UT1VDSCA9IGZhbHNlOwogICAgICAgICAgICBMX0RJU0FCTEVfM0QgPSBmYWxzZTsKICAgICAgICA8L3NjcmlwdD4KICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjUuMS9kaXN0L2xlYWZsZXQuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEyLjQubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjUuMS9kaXN0L2xlYWZsZXQuY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMi4wL2Nzcy9ib290c3RyYXAubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9mb250LWF3ZXNvbWUvNC42LjMvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLzIuMC4yL2xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2Nkbi5naXRoYWNrLmNvbS9weXRob24tdmlzdWFsaXphdGlvbi9mb2xpdW0vbWFzdGVyL2ZvbGl1bS90ZW1wbGF0ZXMvbGVhZmxldC5hd2Vzb21lLnJvdGF0ZS5jc3MiLz4KICAgIDxzdHlsZT5odG1sLCBib2R5IHt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7bWFyZ2luOiAwO3BhZGRpbmc6IDA7fTwvc3R5bGU+CiAgICA8c3R5bGU+I21hcCB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtsZWZ0OjA7fTwvc3R5bGU+CiAgICAKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwKICAgICAgICAgICAgICAgIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAgICAgI21hcF81YTYyNzYxNzE1YjI0MTQ5ODMwMTk5N2EzZTEwNDI2NCB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogMC4wJTsKICAgICAgICAgICAgICAgICAgICB0b3A6IDAuMCU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgCjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvbGl1bS1tYXAiIGlkPSJtYXBfNWE2Mjc2MTcxNWIyNDE0OTgzMDE5OTdhM2UxMDQyNjQiID48L2Rpdj4KICAgICAgICAKPC9ib2R5Pgo8c2NyaXB0PiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFwXzVhNjI3NjE3MTViMjQxNDk4MzAxOTk3YTNlMTA0MjY0ID0gTC5tYXAoCiAgICAgICAgICAgICAgICAibWFwXzVhNjI3NjE3MTViMjQxNDk4MzAxOTk3YTNlMTA0MjY0IiwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IFs0Mi45MjcxLCAtNzIuMjc1MTA0NV0sCiAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NywKICAgICAgICAgICAgICAgICAgICB6b29tOiAxNiwKICAgICAgICAgICAgICAgICAgICB6b29tQ29udHJvbDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICBwcmVmZXJDYW52YXM6IGZhbHNlLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgCgogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzc3ZTc1ZDViMTViYjQzZjY4Mjk5ZjM2NDJlZTFjZWYxID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAiaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmciLAogICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGlvbiI6ICJEYXRhIGJ5IFx1MDAyNmNvcHk7IFx1MDAzY2EgaHJlZj1cImh0dHA6Ly9vcGVuc3RyZWV0bWFwLm9yZ1wiXHUwMDNlT3BlblN0cmVldE1hcFx1MDAzYy9hXHUwMDNlLCB1bmRlciBcdTAwM2NhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiXHUwMDNlT0RiTFx1MDAzYy9hXHUwMDNlLiIsICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwgIm1heE5hdGl2ZVpvb20iOiAxOCwgIm1heFpvb20iOiAxOCwgIm1pblpvb20iOiAwLCAibm9XcmFwIjogZmFsc2UsICJvcGFjaXR5IjogMSwgInN1YmRvbWFpbnMiOiAiYWJjIiwgInRtcyI6IGZhbHNlfQogICAgICAgICAgICApLmFkZFRvKG1hcF81YTYyNzYxNzE1YjI0MTQ5ODMwMTk5N2EzZTEwNDI2NCk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNob3JvcGxldGhfZTZlMDFhNmJlYTE3NDM3YWI2Zjg0MGU5MjUxODA3NjIgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzVhNjI3NjE3MTViMjQxNDk4MzAxOTk3YTNlMTA0MjY0KTsKICAgICAgICAKICAgIAogICAgICAgIGZ1bmN0aW9uIGdlb19qc29uXzEwODY2Yjc4MTI1NTQ0ZWE4NTZmYWNjYjcxNzY5MzEwX3N0eWxlcihmZWF0dXJlKSB7CiAgICAgICAgICAgIHN3aXRjaChmZWF0dXJlLmlkKSB7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIHJldHVybiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICJibHVlIiwgImZpbGxPcGFjaXR5IjogMC42LCAib3BhY2l0eSI6IDEsICJ3ZWlnaHQiOiAxfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBnZW9fanNvbl8xMDg2NmI3ODEyNTU0NGVhODU2ZmFjY2I3MTc2OTMxMF9vbkVhY2hGZWF0dXJlKGZlYXR1cmUsIGxheWVyKSB7CiAgICAgICAgICAgIGxheWVyLm9uKHsKICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgbWFwXzVhNjI3NjE3MTViMjQxNDk4MzAxOTk3YTNlMTA0MjY0LmZpdEJvdW5kcyhlLnRhcmdldC5nZXRCb3VuZHMoKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH07CiAgICAgICAgdmFyIGdlb19qc29uXzEwODY2Yjc4MTI1NTQ0ZWE4NTZmYWNjYjcxNzY5MzEwID0gTC5nZW9Kc29uKG51bGwsIHsKICAgICAgICAgICAgICAgIG9uRWFjaEZlYXR1cmU6IGdlb19qc29uXzEwODY2Yjc4MTI1NTQ0ZWE4NTZmYWNjYjcxNzY5MzEwX29uRWFjaEZlYXR1cmUsCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgc3R5bGU6IGdlb19qc29uXzEwODY2Yjc4MTI1NTQ0ZWE4NTZmYWNjYjcxNzY5MzEwX3N0eWxlciwKICAgICAgICB9KTsKICAgICAgICBmdW5jdGlvbiBnZW9fanNvbl8xMDg2NmI3ODEyNTU0NGVhODU2ZmFjY2I3MTc2OTMxMF9hZGQgKGRhdGEpIHsKICAgICAgICAgICAgZ2VvX2pzb25fMTA4NjZiNzgxMjU1NDRlYTg1NmZhY2NiNzE3NjkzMTAuYWRkRGF0YShkYXRhKQogICAgICAgICAgICAgICAgLmFkZFRvKGNob3JvcGxldGhfZTZlMDFhNmJlYTE3NDM3YWI2Zjg0MGU5MjUxODA3NjIpOwogICAgICAgIH0KICAgICAgICAgICAgZ2VvX2pzb25fMTA4NjZiNzgxMjU1NDRlYTg1NmZhY2NiNzE3NjkzMTBfYWRkKHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNzIuMjc1NzkxMDk5OTk5NjgsIDQyLjkyNTYyODcwMDAwMDA0XSwgWy03Mi4yNzU4MDEwOTk5OTk2OCwgNDIuOTI1NjI4NzAwMDAwMDRdLCBbLTcyLjI3NTgwMTA5OTk5OTY4LCA0Mi45MjU2Mzg3MDAwMDAwNF0sIFstNzIuMjc1ODExMDk5OTk5NjksIDQyLjkyNTYzODcwMDAwMDA0XSwgWy03Mi4yNzU4MjEwOTk5OTk2OSwgNDIuOTI1NjM4NzAwMDAwMDRdLCBbLTcyLjI3NTgzMTA5OTk5OTY5LCA0Mi45MjU2Mzg3MDAwMDAwNF0sIFstNzIuMjc1ODMxMDk5OTk5NjksIDQyLjkyNTY0ODcwMDAwMDA0Nl0sIFstNzIuMjc1ODQxMDk5OTk5NywgNDIuOTI1NjQ4NzAwMDAwMDQ2XSwgWy03Mi4yNzU4NDEwOTk5OTk3LCA0Mi45MjU2NTg3MDAwMDAwNV0sIFstNzIuMjc1ODUxMDk5OTk5NywgNDIuOTI1NjU4NzAwMDAwMDVdLCBbLTcyLjI3NTg1MTA5OTk5OTcsIDQyLjkyNTY2ODcwMDAwMDA1XSwgWy03Mi4yNzU4NTEwOTk5OTk3LCA0Mi45MjU2Nzg3MDAwMDAwNTZdLCBbLTcyLjI3NTg2MTA5OTk5OTcsIDQyLjkyNTY3ODcwMDAwMDA1Nl0sIFstNzIuMjc1ODYxMDk5OTk5NywgNDIuOTI1Njg4NzAwMDAwMDZdLCBbLTcyLjI3NTg2MTA5OTk5OTcsIDQyLjkyNTY5ODcwMDAwMDA2XSwgWy03Mi4yNzU4NzEwOTk5OTk3LCA0Mi45MjU2OTg3MDAwMDAwNl0sIFstNzIuMjc1ODcxMDk5OTk5NywgNDIuOTI1NzA4NzAwMDAwMDY1XSwgWy03Mi4yNzU4ODEwOTk5OTk3MSwgNDIuOTI1NzA4NzAwMDAwMDY1XSwgWy03Mi4yNzU4ODEwOTk5OTk3MSwgNDIuOTI1NzE4NzAwMDAwMDddLCBbLTcyLjI3NTg4MTA5OTk5OTcxLCA0Mi45MjU3Mjg3MDAwMDAwN10sIFstNzIuMjc1ODkxMDk5OTk5NzEsIDQyLjkyNTcyODcwMDAwMDA3XSwgWy03Mi4yNzU4OTEwOTk5OTk3MSwgNDIuOTI1NzM4NzAwMDAwMDc1XSwgWy03Mi4yNzU4OTEwOTk5OTk3MSwgNDIuOTI1NzQ4NzAwMDAwMDhdLCBbLTcyLjI3NTkwMTA5OTk5OTcxLCA0Mi45MjU3NDg3MDAwMDAwOF0sIFstNzIuMjc1OTAxMDk5OTk5NzEsIDQyLjkyNTc1ODcwMDAwMDA4XSwgWy03Mi4yNzU5MDEwOTk5OTk3MSwgNDIuOTI1NzY4NzAwMDAwMDg0XSwgWy03Mi4yNzU5MTEwOTk5OTk3MiwgNDIuOTI1NzY4NzAwMDAwMDg0XSwgWy03Mi4yNzU5MTEwOTk5OTk3MiwgNDIuOTI1Nzc4NzAwMDAwMDldLCBbLTcyLjI3NTkxMTA5OTk5OTcyLCA0Mi45MjU3ODg3MDAwMDAwOV0sIFstNzIuMjc1OTIxMDk5OTk5NzIsIDQyLjkyNTc4ODcwMDAwMDA5XSwgWy03Mi4yNzU5MjEwOTk5OTk3MiwgNDIuOTI1Nzk4NzAwMDAwMDk0XSwgWy03Mi4yNzU5MjEwOTk5OTk3MiwgNDIuOTI1ODA4NzAwMDAwMV0sIFstNzIuMjc1OTMxMDk5OTk5NzIsIDQyLjkyNTgwODcwMDAwMDFdLCBbLTcyLjI3NTkzMTA5OTk5OTcyLCA0Mi45MjU4MTg3MDAwMDAxXSwgWy03Mi4yNzU5MzEwOTk5OTk3MiwgNDIuOTI1ODI4NzAwMDAwMV0sIFstNzIuMjc1OTQxMDk5OTk5NzMsIDQyLjkyNTgyODcwMDAwMDFdLCBbLTcyLjI3NTk0MTA5OTk5OTczLCA0Mi45MjU4Mzg3MDAwMDAxMV0sIFstNzIuMjc1OTQxMDk5OTk5NzMsIDQyLjkyNTg0ODcwMDAwMDExXSwgWy03Mi4yNzU5NTEwOTk5OTk3MywgNDIuOTI1ODQ4NzAwMDAwMTFdLCBbLTcyLjI3NTk1MTA5OTk5OTczLCA0Mi45MjU4NTg3MDAwMDAxMV0sIFstNzIuMjc1OTUxMDk5OTk5NzMsIDQyLjkyNTg2ODcwMDAwMDExNl0sIFstNzIuMjc1OTYxMDk5OTk5NzMsIDQyLjkyNTg2ODcwMDAwMDExNl0sIFstNzIuMjc1OTYxMDk5OTk5NzMsIDQyLjkyNTg3ODcwMDAwMDEyXSwgWy03Mi4yNzU5NjEwOTk5OTk3MywgNDIuOTI1ODg4NzAwMDAwMTJdLCBbLTcyLjI3NTk3MTA5OTk5OTc0LCA0Mi45MjU4ODg3MDAwMDAxMl0sIFstNzIuMjc1OTcxMDk5OTk5NzQsIDQyLjkyNTg5ODcwMDAwMDEyNl0sIFstNzIuMjc1OTgxMDk5OTk5NzQsIDQyLjkyNTg5ODcwMDAwMDEyNl0sIFstNzIuMjc1OTgxMDk5OTk5NzQsIDQyLjkyNTkwODcwMDAwMDEzXSwgWy03Mi4yNzU5ODEwOTk5OTk3NCwgNDIuOTI1OTE4NzAwMDAwMTNdLCBbLTcyLjI3NTk5MTA5OTk5OTc0LCA0Mi45MjU5MTg3MDAwMDAxM10sIFstNzIuMjc1OTkxMDk5OTk5NzQsIDQyLjkyNTkyODcwMDAwMDEzNV0sIFstNzIuMjc1OTkxMDk5OTk5NzQsIDQyLjkyNTkzODcwMDAwMDE0XSwgWy03Mi4yNzYwMDEwOTk5OTk3NSwgNDIuOTI1OTM4NzAwMDAwMTRdLCBbLTcyLjI3NjAwMTA5OTk5OTc1LCA0Mi45MjU5NDg3MDAwMDAxNF0sIFstNzIuMjc2MDAxMDk5OTk5NzUsIDQyLjkyNTk1ODcwMDAwMDE0NV0sIFstNzIuMjc2MDExMDk5OTk5NzUsIDQyLjkyNTk1ODcwMDAwMDE0NV0sIFstNzIuMjc2MDExMDk5OTk5NzUsIDQyLjkyNTk2ODcwMDAwMDE1XSwgWy03Mi4yNzYwMTEwOTk5OTk3NSwgNDIuOTI1OTc4NzAwMDAwMTVdLCBbLTcyLjI3NjAyMTA5OTk5OTc1LCA0Mi45MjU5Nzg3MDAwMDAxNV0sIFstNzIuMjc2MDIxMDk5OTk5NzUsIDQyLjkyNTk4ODcwMDAwMDE1NF0sIFstNzIuMjc2MDIxMDk5OTk5NzUsIDQyLjkyNTk5ODcwMDAwMDE2XSwgWy03Mi4yNzYwMzEwOTk5OTk3NiwgNDIuOTI1OTk4NzAwMDAwMTZdLCBbLTcyLjI3NjAzMTA5OTk5OTc2LCA0Mi45MjYwMDg3MDAwMDAxNl0sIFstNzIuMjc2MDMxMDk5OTk5NzYsIDQyLjkyNjAxODcwMDAwMDE2NF0sIFstNzIuMjc2MDQxMDk5OTk5NzYsIDQyLjkyNjAxODcwMDAwMDE2NF0sIFstNzIuMjc2MDQxMDk5OTk5NzYsIDQyLjkyNjAyODcwMDAwMDE3XSwgWy03Mi4yNzYwNDEwOTk5OTk3NiwgNDIuOTI2MDM4NzAwMDAwMTddLCBbLTcyLjI3NjA1MTA5OTk5OTc2LCA0Mi45MjYwMzg3MDAwMDAxN10sIFstNzIuMjc2MDUxMDk5OTk5NzYsIDQyLjkyNjA0ODcwMDAwMDE3XSwgWy03Mi4yNzYwNTEwOTk5OTk3NiwgNDIuOTI2MDU4NzAwMDAwMTc2XSwgWy03Mi4yNzYwNjEwOTk5OTk3NywgNDIuOTI2MDU4NzAwMDAwMTc2XSwgWy03Mi4yNzYwNjEwOTk5OTk3NywgNDIuOTI2MDY4NzAwMDAwMThdLCBbLTcyLjI3NjA3MTA5OTk5OTc3LCA0Mi45MjYwNjg3MDAwMDAxOF0sIFstNzIuMjc2MDcxMDk5OTk5NzcsIDQyLjkyNjA3ODcwMDAwMDE4XSwgWy03Mi4yNzYwNzEwOTk5OTk3NywgNDIuOTI2MDg4NzAwMDAwMTg2XSwgWy03Mi4yNzYwODEwOTk5OTk3NywgNDIuOTI2MDg4NzAwMDAwMTg2XSwgWy03Mi4yNzYwODEwOTk5OTk3NywgNDIuOTI2MDk4NzAwMDAwMTldLCBbLTcyLjI3NjA4MTA5OTk5OTc3LCA0Mi45MjYxMDg3MDAwMDAxOV0sIFstNzIuMjc2MDkxMDk5OTk5NzcsIDQyLjkyNjEwODcwMDAwMDE5XSwgWy03Mi4yNzYwOTEwOTk5OTk3NywgNDIuOTI2MTE4NzAwMDAwMTk1XSwgWy03Mi4yNzYwOTEwOTk5OTk3NywgNDIuOTI2MTI4NzAwMDAwMl0sIFstNzIuMjc2MTAxMDk5OTk5NzgsIDQyLjkyNjEyODcwMDAwMDJdLCBbLTcyLjI3NjEwMTA5OTk5OTc4LCA0Mi45MjYxMzg3MDAwMDAyXSwgWy03Mi4yNzYxMDEwOTk5OTk3OCwgNDIuOTI2MTQ4NzAwMDAwMjA1XSwgWy03Mi4yNzYxMTEwOTk5OTk3OCwgNDIuOTI2MTQ4NzAwMDAwMjA1XSwgWy03Mi4yNzYxMTEwOTk5OTk3OCwgNDIuOTI2MTU4NzAwMDAwMjFdLCBbLTcyLjI3NjExMTA5OTk5OTc4LCA0Mi45MjYxNjg3MDAwMDAyMV0sIFstNzIuMjc2MTIxMDk5OTk5NzgsIDQyLjkyNjE2ODcwMDAwMDIxXSwgWy03Mi4yNzYxMjEwOTk5OTk3OCwgNDIuOTI2MTc4NzAwMDAwMjE0XSwgWy03Mi4yNzYxMjEwOTk5OTk3OCwgNDIuOTI2MTg4NzAwMDAwMjJdLCBbLTcyLjI3NjEzMTA5OTk5OTc5LCA0Mi45MjYxODg3MDAwMDAyMl0sIFstNzIuMjc2MTMxMDk5OTk5NzksIDQyLjkyNjE5ODcwMDAwMDIyXSwgWy03Mi4yNzYxMzEwOTk5OTk3OSwgNDIuOTI2MjA4NzAwMDAwMjI0XSwgWy03Mi4yNzYxNDEwOTk5OTk3OSwgNDIuOTI2MjA4NzAwMDAwMjI0XSwgWy03Mi4yNzYxNDEwOTk5OTk3OSwgNDIuOTI2MjE4NzAwMDAwMjNdLCBbLTcyLjI3NjE0MTA5OTk5OTc5LCA0Mi45MjYyMjg3MDAwMDAyM10sIFstNzIuMjc2MTQxMDk5OTk5NzksIDQyLjkyNjIzODcwMDAwMDIzXSwgWy03Mi4yNzYxNDEwOTk5OTk3OSwgNDIuOTI2MjQ4NzAwMDAwMjRdLCBbLTcyLjI3NjE0MTA5OTk5OTc5LCA0Mi45MjYyNTg3MDAwMDAyNF0sIFstNzIuMjc2MTMxMDk5OTk5NzksIDQyLjkyNjI1ODcwMDAwMDI0XSwgWy03Mi4yNzYxMzEwOTk5OTk3OSwgNDIuOTI2MjY4NzAwMDAwMjRdLCBbLTcyLjI3NjEzMTA5OTk5OTc5LCA0Mi45MjYyNzg3MDAwMDAyNDZdLCBbLTcyLjI3NjEzMTA5OTk5OTc5LCA0Mi45MjYyODg3MDAwMDAyNV0sIFstNzIuMjc2MTIxMDk5OTk5NzgsIDQyLjkyNjI4ODcwMDAwMDI1XSwgWy03Mi4yNzYxMjEwOTk5OTk3OCwgNDIuOTI2Mjk4NzAwMDAwMjVdLCBbLTcyLjI3NjEyMTA5OTk5OTc4LCA0Mi45MjYzMDg3MDAwMDAyNTZdLCBbLTcyLjI3NjEyMTA5OTk5OTc4LCA0Mi45MjYzMTg3MDAwMDAyNl0sIFstNzIuMjc2MTExMDk5OTk5NzgsIDQyLjkyNjMxODcwMDAwMDI2XSwgWy03Mi4yNzYxMTEwOTk5OTk3OCwgNDIuOTI2MzI4NzAwMDAwMjZdLCBbLTcyLjI3NjExMTA5OTk5OTc4LCA0Mi45MjYzMzg3MDAwMDAyNjVdLCBbLTcyLjI3NjExMTA5OTk5OTc4LCA0Mi45MjYzNDg3MDAwMDAyN10sIFstNzIuMjc2MTAxMDk5OTk5NzgsIDQyLjkyNjM0ODcwMDAwMDI3XSwgWy03Mi4yNzYxMDEwOTk5OTk3OCwgNDIuOTI2MzU4NzAwMDAwMjddLCBbLTcyLjI3NjEwMTA5OTk5OTc4LCA0Mi45MjYzNjg3MDAwMDAyNzVdLCBbLTcyLjI3NjEwMTA5OTk5OTc4LCA0Mi45MjYzNzg3MDAwMDAyOF0sIFstNzIuMjc2MDkxMDk5OTk5NzcsIDQyLjkyNjM3ODcwMDAwMDI4XSwgWy03Mi4yNzYwOTEwOTk5OTk3NywgNDIuOTI2Mzg4NzAwMDAwMjhdLCBbLTcyLjI3NjA5MTA5OTk5OTc3LCA0Mi45MjYzOTg3MDAwMDAyODRdLCBbLTcyLjI3NjA5MTA5OTk5OTc3LCA0Mi45MjY0MDg3MDAwMDAyOV0sIFstNzIuMjc2MDgxMDk5OTk5NzcsIDQyLjkyNjQwODcwMDAwMDI5XSwgWy03Mi4yNzYwODEwOTk5OTk3NywgNDIuOTI2NDE4NzAwMDAwMjldLCBbLTcyLjI3NjA4MTA5OTk5OTc3LCA0Mi45MjY0Mjg3MDAwMDAyOTRdLCBbLTcyLjI3NjA4MTA5OTk5OTc3LCA0Mi45MjY0Mzg3MDAwMDAzXSwgWy03Mi4yNzYwODEwOTk5OTk3NywgNDIuOTI2NDQ4NzAwMDAwM10sIFstNzIuMjc2MDcxMDk5OTk5NzcsIDQyLjkyNjQ0ODcwMDAwMDNdLCBbLTcyLjI3NjA3MTA5OTk5OTc3LCA0Mi45MjY0NTg3MDAwMDAzXSwgWy03Mi4yNzYwNzEwOTk5OTk3NywgNDIuOTI2NDY4NzAwMDAwMzFdLCBbLTcyLjI3NjA3MTA5OTk5OTc3LCA0Mi45MjY0Nzg3MDAwMDAzMV0sIFstNzIuMjc2MDcxMDk5OTk5NzcsIDQyLjkyNjQ4ODcwMDAwMDMxXSwgWy03Mi4yNzYwNzEwOTk5OTk3NywgNDIuOTI2NDk4NzAwMDAwMzE2XSwgWy03Mi4yNzYwNzEwOTk5OTk3NywgNDIuOTI2NTA4NzAwMDAwMzJdLCBbLTcyLjI3NjA3MTA5OTk5OTc3LCA0Mi45MjY1MTg3MDAwMDAzMl0sIFstNzIuMjc2MDcxMDk5OTk5NzcsIDQyLjkyNjUyODcwMDAwMDMyNl0sIFstNzIuMjc2MDYxMDk5OTk5NzcsIDQyLjkyNjUyODcwMDAwMDMyNl0sIFstNzIuMjc2MDYxMDk5OTk5NzcsIDQyLjkyNjUzODcwMDAwMDMzXSwgWy03Mi4yNzYwNjEwOTk5OTk3NywgNDIuOTI2NTQ4NzAwMDAwMzNdLCBbLTcyLjI3NjA2MTA5OTk5OTc3LCA0Mi45MjY1NTg3MDAwMDAzMzVdLCBbLTcyLjI3NjA2MTA5OTk5OTc3LCA0Mi45MjY1Njg3MDAwMDAzNF0sIFstNzIuMjc2MDYxMDk5OTk5NzcsIDQyLjkyNjU3ODcwMDAwMDM0XSwgWy03Mi4yNzYwNjEwOTk5OTk3NywgNDIuOTI2NTg4NzAwMDAwMzQ1XSwgWy03Mi4yNzYwNzEwOTk5OTk3NywgNDIuOTI2NTg4NzAwMDAwMzQ1XSwgWy03Mi4yNzYwNzEwOTk5OTk3NywgNDIuOTI2NTk4NzAwMDAwMzVdLCBbLTcyLjI3NjA3MTA5OTk5OTc3LCA0Mi45MjY2MDg3MDAwMDAzNV0sIFstNzIuMjc2MDcxMDk5OTk5NzcsIDQyLjkyNjYxODcwMDAwMDM1NF0sIFstNzIuMjc2MDcxMDk5OTk5NzcsIDQyLjkyNjYyODcwMDAwMDM2XSwgWy03Mi4yNzYwNzEwOTk5OTk3NywgNDIuOTI2NjM4NzAwMDAwMzZdLCBbLTcyLjI3NjA3MTA5OTk5OTc3LCA0Mi45MjY2NDg3MDAwMDAzNjRdLCBbLTcyLjI3NjA3MTA5OTk5OTc3LCA0Mi45MjY2NTg3MDAwMDAzN10sIFstNzIuMjc2MDgxMDk5OTk5NzcsIDQyLjkyNjY1ODcwMDAwMDM3XSwgWy03Mi4yNzYwODEwOTk5OTk3NywgNDIuOTI2NjY4NzAwMDAwMzddLCBbLTcyLjI3NjA4MTA5OTk5OTc3LCA0Mi45MjY2Nzg3MDAwMDAzN10sIFstNzIuMjc2MDgxMDk5OTk5NzcsIDQyLjkyNjY4ODcwMDAwMDM3Nl0sIFstNzIuMjc2MDgxMDk5OTk5NzcsIDQyLjkyNjY5ODcwMDAwMDM4XSwgWy03Mi4yNzYwOTEwOTk5OTk3NywgNDIuOTI2Njk4NzAwMDAwMzhdLCBbLTcyLjI3NjA5MTA5OTk5OTc3LCA0Mi45MjY3MDg3MDAwMDAzOF0sIFstNzIuMjc2MDkxMDk5OTk5NzcsIDQyLjkyNjcxODcwMDAwMDM4Nl0sIFstNzIuMjc2MDkxMDk5OTk5NzcsIDQyLjkyNjcyODcwMDAwMDM5XSwgWy03Mi4yNzYxMDEwOTk5OTk3OCwgNDIuOTI2NzI4NzAwMDAwMzldLCBbLTcyLjI3NjEwMTA5OTk5OTc4LCA0Mi45MjY3Mzg3MDAwMDAzOV0sIFstNzIuMjc2MTAxMDk5OTk5NzgsIDQyLjkyNjc0ODcwMDAwMDM5NV0sIFstNzIuMjc2MTAxMDk5OTk5NzgsIDQyLjkyNjc1ODcwMDAwMDRdLCBbLTcyLjI3NjExMTA5OTk5OTc4LCA0Mi45MjY3NTg3MDAwMDA0XSwgWy03Mi4yNzYxMTEwOTk5OTk3OCwgNDIuOTI2NzY4NzAwMDAwNF0sIFstNzIuMjc2MTExMDk5OTk5NzgsIDQyLjkyNjc3ODcwMDAwMDQwNV0sIFstNzIuMjc2MTIxMDk5OTk5NzgsIDQyLjkyNjc3ODcwMDAwMDQwNV0sIFstNzIuMjc2MTIxMDk5OTk5NzgsIDQyLjkyNjc4ODcwMDAwMDQxXSwgWy03Mi4yNzYxMjEwOTk5OTk3OCwgNDIuOTI2Nzk4NzAwMDAwNDFdLCBbLTcyLjI3NjEzMTA5OTk5OTc5LCA0Mi45MjY3OTg3MDAwMDA0MV0sIFstNzIuMjc2MTMxMDk5OTk5NzksIDQyLjkyNjgwODcwMDAwMDQxNF0sIFstNzIuMjc2MTMxMDk5OTk5NzksIDQyLjkyNjgxODcwMDAwMDQyXSwgWy03Mi4yNzYxNDEwOTk5OTk3OSwgNDIuOTI2ODE4NzAwMDAwNDJdLCBbLTcyLjI3NjE0MTA5OTk5OTc5LCA0Mi45MjY4Mjg3MDAwMDA0Ml0sIFstNzIuMjc2MTQxMDk5OTk5NzksIDQyLjkyNjgzODcwMDAwMDQyNF0sIFstNzIuMjc2MTUxMDk5OTk5OCwgNDIuOTI2ODM4NzAwMDAwNDI0XSwgWy03Mi4yNzYxNTEwOTk5OTk4LCA0Mi45MjY4NDg3MDAwMDA0M10sIFstNzIuMjc2MTUxMDk5OTk5OCwgNDIuOTI2ODU4NzAwMDAwNDNdLCBbLTcyLjI3NjE2MTA5OTk5OTgsIDQyLjkyNjg1ODcwMDAwMDQzXSwgWy03Mi4yNzYxNjEwOTk5OTk4LCA0Mi45MjY4Njg3MDAwMDA0M10sIFstNzIuMjc2MTYxMDk5OTk5OCwgNDIuOTI2ODc4NzAwMDAwNDRdLCBbLTcyLjI3NjE3MTA5OTk5OTgsIDQyLjkyNjg3ODcwMDAwMDQ0XSwgWy03Mi4yNzYxNzEwOTk5OTk4LCA0Mi45MjY4ODg3MDAwMDA0NF0sIFstNzIuMjc2MTcxMDk5OTk5OCwgNDIuOTI2ODk4NzAwMDAwNDRdLCBbLTcyLjI3NjE4MTA5OTk5OTgsIDQyLjkyNjg5ODcwMDAwMDQ0XSwgWy03Mi4yNzYxODEwOTk5OTk4LCA0Mi45MjY5MDg3MDAwMDA0NDZdLCBbLTcyLjI3NjE4MTA5OTk5OTgsIDQyLjkyNjkxODcwMDAwMDQ1XSwgWy03Mi4yNzYxOTEwOTk5OTk4LCA0Mi45MjY5MTg3MDAwMDA0NV0sIFstNzIuMjc2MjAxMDk5OTk5ODEsIDQyLjkyNjkxODcwMDAwMDQ1XSwgWy03Mi4yNzYyMDEwOTk5OTk4MSwgNDIuOTI2OTI4NzAwMDAwNDVdLCBbLTcyLjI3NjIxMTA5OTk5OTgxLCA0Mi45MjY5Mjg3MDAwMDA0NV0sIFstNzIuMjc2MjIxMDk5OTk5ODIsIDQyLjkyNjkyODcwMDAwMDQ1XSwgWy03Mi4yNzYyMzEwOTk5OTk4MiwgNDIuOTI2OTI4NzAwMDAwNDVdLCBbLTcyLjI3NjIzMTA5OTk5OTgyLCA0Mi45MjY5Mzg3MDAwMDA0NTZdLCBbLTcyLjI3NjI0MTA5OTk5OTgyLCA0Mi45MjY5Mzg3MDAwMDA0NTZdLCBbLTcyLjI3NjI1MTA5OTk5OTgzLCA0Mi45MjY5Mzg3MDAwMDA0NTZdLCBbLTcyLjI3NjI1MTA5OTk5OTgzLCA0Mi45MjY5NDg3MDAwMDA0Nl0sIFstNzIuMjc2MjYxMDk5OTk5ODMsIDQyLjkyNjk0ODcwMDAwMDQ2XSwgWy03Mi4yNzYyNzEwOTk5OTk4MywgNDIuOTI2OTQ4NzAwMDAwNDZdLCBbLTcyLjI3NjI4MTA5OTk5OTg0LCA0Mi45MjY5NDg3MDAwMDA0Nl0sIFstNzIuMjc2MjgxMDk5OTk5ODQsIDQyLjkyNjk1ODcwMDAwMDQ2XSwgWy03Mi4yNzYyOTEwOTk5OTk4NCwgNDIuOTI2OTU4NzAwMDAwNDZdLCBbLTcyLjI3NjMwMTA5OTk5OTg0LCA0Mi45MjY5NTg3MDAwMDA0Nl0sIFstNzIuMjc2MzExMDk5OTk5ODQsIDQyLjkyNjk1ODcwMDAwMDQ2XSwgWy03Mi4yNzYzMTEwOTk5OTk4NCwgNDIuOTI2OTY4NzAwMDAwNDY1XSwgWy03Mi4yNzYzMjEwOTk5OTk4NSwgNDIuOTI2OTY4NzAwMDAwNDY1XSwgWy03Mi4yNzYzMzEwOTk5OTk4NSwgNDIuOTI2OTY4NzAwMDAwNDY1XSwgWy03Mi4yNzYzNDEwOTk5OTk4NSwgNDIuOTI2OTY4NzAwMDAwNDY1XSwgWy03Mi4yNzYzNDEwOTk5OTk4NSwgNDIuOTI2OTc4NzAwMDAwNDddLCBbLTcyLjI3NjM1MTA5OTk5OTg2LCA0Mi45MjY5Nzg3MDAwMDA0N10sIFstNzIuMjc2MzYxMDk5OTk5ODYsIDQyLjkyNjk3ODcwMDAwMDQ3XSwgWy03Mi4yNzYzNjEwOTk5OTk4NiwgNDIuOTI2OTg4NzAwMDAwNDddLCBbLTcyLjI3NjM2MTA5OTk5OTg2LCA0Mi45MjY5OTg3MDAwMDA0NzVdLCBbLTcyLjI3NjM2MTA5OTk5OTg2LCA0Mi45MjcwMDg3MDAwMDA0OF0sIFstNzIuMjc2MzcxMDk5OTk5ODYsIDQyLjkyNzAwODcwMDAwMDQ4XSwgWy03Mi4yNzYzNzEwOTk5OTk4NiwgNDIuOTI3MDE4NzAwMDAwNDhdLCBbLTcyLjI3NjM3MTA5OTk5OTg2LCA0Mi45MjcwMjg3MDAwMDA0ODRdLCBbLTcyLjI3NjM3MTA5OTk5OTg2LCA0Mi45MjcwMzg3MDAwMDA0OV0sIFstNzIuMjc2MzcxMDk5OTk5ODYsIDQyLjkyNzA0ODcwMDAwMDQ5XSwgWy03Mi4yNzYzODEwOTk5OTk4NywgNDIuOTI3MDQ4NzAwMDAwNDldLCBbLTcyLjI3NjM4MTA5OTk5OTg3LCA0Mi45MjcwNTg3MDAwMDA0OTRdLCBbLTcyLjI3NjM4MTA5OTk5OTg3LCA0Mi45MjcwNjg3MDAwMDA1XSwgWy03Mi4yNzYzODEwOTk5OTk4NywgNDIuOTI3MDc4NzAwMDAwNV0sIFstNzIuMjc2MzkxMDk5OTk5ODcsIDQyLjkyNzA3ODcwMDAwMDVdLCBbLTcyLjI3NjM5MTA5OTk5OTg3LCA0Mi45MjcwODg3MDAwMDA1XSwgWy03Mi4yNzYzOTEwOTk5OTk4NywgNDIuOTI3MDk4NzAwMDAwNTA2XSwgWy03Mi4yNzYzOTEwOTk5OTk4NywgNDIuOTI3MTA4NzAwMDAwNTFdLCBbLTcyLjI3NjM5MTA5OTk5OTg3LCA0Mi45MjcxMTg3MDAwMDA1MV0sIFstNzIuMjc2NDAxMDk5OTk5ODcsIDQyLjkyNzExODcwMDAwMDUxXSwgWy03Mi4yNzY0MDEwOTk5OTk4NywgNDIuOTI3MTI4NzAwMDAwNTE2XSwgWy03Mi4yNzY0MDEwOTk5OTk4NywgNDIuOTI3MTM4NzAwMDAwNTJdLCBbLTcyLjI3NjQwMTA5OTk5OTg3LCA0Mi45MjcxNDg3MDAwMDA1Ml0sIFstNzIuMjc2NDAxMDk5OTk5ODcsIDQyLjkyNzE1ODcwMDAwMDUyNV0sIFstNzIuMjc2NDExMDk5OTk5ODgsIDQyLjkyNzE1ODcwMDAwMDUyNV0sIFstNzIuMjc2NDExMDk5OTk5ODgsIDQyLjkyNzE2ODcwMDAwMDUzXSwgWy03Mi4yNzY0MTEwOTk5OTk4OCwgNDIuOTI3MTc4NzAwMDAwNTNdLCBbLTcyLjI3NjQxMTA5OTk5OTg4LCA0Mi45MjcxODg3MDAwMDA1MzVdLCBbLTcyLjI3NjQyMTA5OTk5OTg4LCA0Mi45MjcxODg3MDAwMDA1MzVdLCBbLTcyLjI3NjQyMTA5OTk5OTg4LCA0Mi45MjcxOTg3MDAwMDA1NF0sIFstNzIuMjc2NDIxMDk5OTk5ODgsIDQyLjkyNzIwODcwMDAwMDU0XSwgWy03Mi4yNzY0MjEwOTk5OTk4OCwgNDIuOTI3MjE4NzAwMDAwNTQ1XSwgWy03Mi4yNzY0MjEwOTk5OTk4OCwgNDIuOTI3MjI4NzAwMDAwNTVdLCBbLTcyLjI3NjQzMTA5OTk5OTg4LCA0Mi45MjcyMjg3MDAwMDA1NV0sIFstNzIuMjc2NDMxMDk5OTk5ODgsIDQyLjkyNzIzODcwMDAwMDU1XSwgWy03Mi4yNzY0MzEwOTk5OTk4OCwgNDIuOTI3MjQ4NzAwMDAwNTU0XSwgWy03Mi4yNzY0MzEwOTk5OTk4OCwgNDIuOTI3MjUxMzQyNjkyOTRdLCBbLTcyLjI3NjQzMjk2Njg3Nzg4LCA0Mi45MjcyNTEyODU5ODE1NF0sIFstNzIuMjc2NDMxMDk5OTk5ODgsIDQyLjkyNzI1MjMzNjg3NTI4NF0sIFstNzIuMjc2NDMxMDk5OTk5ODgsIDQyLjkyNzI1ODcwMDAwMDU2XSwgWy03Mi4yNzY0NDEwOTk5OTk4OSwgNDIuOTI3MjU4NzAwMDAwNTZdLCBbLTcyLjI3NjQ0MTA5OTk5OTg5LCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2NDMxMDk5OTk5ODgsIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzY0MjEwOTk5OTk4OCwgNDIuOTI3MjY4NzAwMDAwNTZdLCBbLTcyLjI3NjQxMTA5OTk5OTg4LCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2NDAyMDMxNDQ4ODcsIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzUxMDQ1LCA0Mi45Mjc5OTkxXSwgWy03Mi4yNzQ4MjU2LCA0Mi45MjY3OTcxXSwgWy03Mi4yNzU3MzEwOTk5OTk2NiwgNDIuOTI1NjI3ODgxNTE5NzY2XSwgWy03Mi4yNzU3MzEwOTk5OTk2NiwgNDIuOTI1NjE4NzAwMDAwMDRdLCBbLTcyLjI3NTczODIxMDYxNzc5LCA0Mi45MjU2MTg3MDAwMDAwNF0sIFstNzIuMjc1NzQwODQ2MTM5NjQsIDQyLjkyNTYxNTI5NjkwNjg3XSwgWy03Mi4yNzU3NDExMDQzODQ0OCwgNDIuOTI1NjE4NzAwMDAwMDRdLCBbLTcyLjI3NTc1MTA5OTk5OTY3LCA0Mi45MjU2MTg3MDAwMDAwNF0sIFstNzIuMjc1NzYxMDk5OTk5NjcsIDQyLjkyNTYxODcwMDAwMDA0XSwgWy03Mi4yNzU3NzEwOTk5OTk2NywgNDIuOTI1NjE4NzAwMDAwMDRdLCBbLTcyLjI3NTc3MTA5OTk5OTY3LCA0Mi45MjU2Mjg3MDAwMDAwNF0sIFstNzIuMjc1NzgxMDk5OTk5NjgsIDQyLjkyNTYyODcwMDAwMDA0XSwgWy03Mi4yNzU3OTEwOTk5OTk2OCwgNDIuOTI1NjI4NzAwMDAwMDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIjAiLCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9KTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2hvcm9wbGV0aF81YmMxOTk0MzM5MDM0N2JhYWNiY2VjMDliZDk5MTg4NiA9IEwuZmVhdHVyZUdyb3VwKAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfNWE2Mjc2MTcxNWIyNDE0OTgzMDE5OTdhM2UxMDQyNjQpOwogICAgICAgIAogICAgCiAgICAgICAgZnVuY3Rpb24gZ2VvX2pzb25fNzc5ODA1YzcyZTRkNDVjNjgyMzMzMDcwOTNmMGY2NmVfc3R5bGVyKGZlYXR1cmUpIHsKICAgICAgICAgICAgc3dpdGNoKGZlYXR1cmUuaWQpIHsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogImJsdWUiLCAiZmlsbE9wYWNpdHkiOiAwLjYsICJvcGFjaXR5IjogMSwgIndlaWdodCI6IDF9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIGdlb19qc29uXzc3OTgwNWM3MmU0ZDQ1YzY4MjMzMzA3MDkzZjBmNjZlX29uRWFjaEZlYXR1cmUoZmVhdHVyZSwgbGF5ZXIpIHsKICAgICAgICAgICAgbGF5ZXIub24oewogICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBtYXBfNWE2Mjc2MTcxNWIyNDE0OTgzMDE5OTdhM2UxMDQyNjQuZml0Qm91bmRzKGUudGFyZ2V0LmdldEJvdW5kcygpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfTsKICAgICAgICB2YXIgZ2VvX2pzb25fNzc5ODA1YzcyZTRkNDVjNjgyMzMzMDcwOTNmMGY2NmUgPSBMLmdlb0pzb24obnVsbCwgewogICAgICAgICAgICAgICAgb25FYWNoRmVhdHVyZTogZ2VvX2pzb25fNzc5ODA1YzcyZTRkNDVjNjgyMzMzMDcwOTNmMGY2NmVfb25FYWNoRmVhdHVyZSwKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBzdHlsZTogZ2VvX2pzb25fNzc5ODA1YzcyZTRkNDVjNjgyMzMzMDcwOTNmMGY2NmVfc3R5bGVyLAogICAgICAgIH0pOwogICAgICAgIGZ1bmN0aW9uIGdlb19qc29uXzc3OTgwNWM3MmU0ZDQ1YzY4MjMzMzA3MDkzZjBmNjZlX2FkZCAoZGF0YSkgewogICAgICAgICAgICBnZW9fanNvbl83Nzk4MDVjNzJlNGQ0NWM2ODIzMzMwNzA5M2YwZjY2ZS5hZGREYXRhKGRhdGEpCiAgICAgICAgICAgICAgICAuYWRkVG8oY2hvcm9wbGV0aF81YmMxOTk0MzM5MDM0N2JhYWNiY2VjMDliZDk5MTg4Nik7CiAgICAgICAgfQogICAgICAgICAgICBnZW9fanNvbl83Nzk4MDVjNzJlNGQ0NWM2ODIzMzMwNzA5M2YwZjY2ZV9hZGQoeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03Mi4yNzU3MzEwOTk5OTk2NiwgNDIuOTI1NTE4NzAwMDAwMDA1XSwgWy03Mi4yNzU3MzEwOTk5OTk2NiwgNDIuOTI1NTA4N10sIFstNzIuMjc1NzMyNzU2OTk4MzEsIDQyLjkyNTUwODddLCBbLTcyLjI3NTcyNjgsIDQyLjkyNTQzMDJdLCBbLTcyLjI3Nzg4MzMsIDQyLjkyNTM2NzNdLCBbLTcyLjI3NzkzNjksIDQyLjkyNzIwNTZdLCBbLTcyLjI3NjgyMTEsIDQyLjkyNzIzOTQ5NTQwMjNdLCBbLTcyLjI3NjgyMTEsIDQyLjkyNzI0ODcwMDAwMDU1NF0sIFstNzIuMjc2ODIxMSwgNDIuOTI3MjU4NzAwMDAwNTZdLCBbLTcyLjI3NjgyMTEsIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzY4MTExLCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2ODAxMSwgNDIuOTI3MjY4NzAwMDAwNTZdLCBbLTcyLjI3Njc5MTEsIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzY3ODExLCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2NzcxMDk5OTk5OTksIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzY3NjEwOTk5OTk5OSwgNDIuOTI3MjY4NzAwMDAwNTZdLCBbLTcyLjI3Njc1MTA5OTk5OTk4LCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2NzQxMDk5OTk5OTgsIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzY3MzEwOTk5OTk5OCwgNDIuOTI3MjY4NzAwMDAwNTZdLCBbLTcyLjI3NjcyMTA5OTk5OTk3LCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2NzExMDk5OTk5OTcsIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzY3MDEwOTk5OTk5NywgNDIuOTI3MjY4NzAwMDAwNTZdLCBbLTcyLjI3NjY5MTA5OTk5OTk3LCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2NjgxMDk5OTk5OTYsIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzY2NzEwOTk5OTk5NiwgNDIuOTI3MjY4NzAwMDAwNTZdLCBbLTcyLjI3NjY2MTA5OTk5OTk2LCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2NjUxMDk5OTk5OTUsIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzY2NDEwOTk5OTk5NSwgNDIuOTI3MjY4NzAwMDAwNTZdLCBbLTcyLjI3NjYzMTA5OTk5OTk1LCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2NjIxMDk5OTk5OTQsIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzY2MTEwOTk5OTk5NCwgNDIuOTI3MjY4NzAwMDAwNTZdLCBbLTcyLjI3NjYwMTA5OTk5OTk0LCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2NTkxMDk5OTk5OTMsIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzY1ODEwOTk5OTk5MywgNDIuOTI3MjY4NzAwMDAwNTZdLCBbLTcyLjI3NjU3MTA5OTk5OTkzLCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2NTYxMDk5OTk5OTIsIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzY1NTEwOTk5OTk5MiwgNDIuOTI3MjY4NzAwMDAwNTZdLCBbLTcyLjI3NjU0MTA5OTk5OTkyLCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2NTMxMDk5OTk5OTEsIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzY1MjEwOTk5OTk5MSwgNDIuOTI3MjY4NzAwMDAwNTZdLCBbLTcyLjI3NjUxMTA5OTk5OTkxLCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2NTAxMDk5OTk5OSwgNDIuOTI3MjY4NzAwMDAwNTZdLCBbLTcyLjI3NjQ5MTA5OTk5OTksIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzY0ODEwOTk5OTk5LCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2NDcxMDk5OTk5OSwgNDIuOTI3MjY4NzAwMDAwNTZdLCBbLTcyLjI3NjQ2MTA5OTk5OTg5LCA0Mi45MjcyNjg3MDAwMDA1Nl0sIFstNzIuMjc2NDUxMDk5OTk5ODksIDQyLjkyNzI2ODcwMDAwMDU2XSwgWy03Mi4yNzY0NDEwOTk5OTk4OSwgNDIuOTI3MjY4NzAwMDAwNTZdLCBbLTcyLjI3NjQ0MTA5OTk5OTg5LCA0Mi45MjcyNTg3MDAwMDA1Nl0sIFstNzIuMjc2NDMxMDk5OTk5ODgsIDQyLjkyNzI1ODcwMDAwMDU2XSwgWy03Mi4yNzY0MzEwOTk5OTk4OCwgNDIuOTI3MjQ4NzAwMDAwNTU0XSwgWy03Mi4yNzY0MzEwOTk5OTk4OCwgNDIuOTI3MjM4NzAwMDAwNTVdLCBbLTcyLjI3NjQzMTA5OTk5OTg4LCA0Mi45MjcyMjg3MDAwMDA1NV0sIFstNzIuMjc2NDIxMDk5OTk5ODgsIDQyLjkyNzIyODcwMDAwMDU1XSwgWy03Mi4yNzY0MjEwOTk5OTk4OCwgNDIuOTI3MjE4NzAwMDAwNTQ1XSwgWy03Mi4yNzY0MjEwOTk5OTk4OCwgNDIuOTI3MjA4NzAwMDAwNTRdLCBbLTcyLjI3NjQyMTA5OTk5OTg4LCA0Mi45MjcxOTg3MDAwMDA1NF0sIFstNzIuMjc2NDIxMDk5OTk5ODgsIDQyLjkyNzE4ODcwMDAwMDUzNV0sIFstNzIuMjc2NDExMDk5OTk5ODgsIDQyLjkyNzE4ODcwMDAwMDUzNV0sIFstNzIuMjc2NDExMDk5OTk5ODgsIDQyLjkyNzE3ODcwMDAwMDUzXSwgWy03Mi4yNzY0MTEwOTk5OTk4OCwgNDIuOTI3MTY4NzAwMDAwNTNdLCBbLTcyLjI3NjQxMTA5OTk5OTg4LCA0Mi45MjcxNTg3MDAwMDA1MjVdLCBbLTcyLjI3NjQwMTA5OTk5OTg3LCA0Mi45MjcxNTg3MDAwMDA1MjVdLCBbLTcyLjI3NjQwMTA5OTk5OTg3LCA0Mi45MjcxNDg3MDAwMDA1Ml0sIFstNzIuMjc2NDAxMDk5OTk5ODcsIDQyLjkyNzEzODcwMDAwMDUyXSwgWy03Mi4yNzY0MDEwOTk5OTk4NywgNDIuOTI3MTI4NzAwMDAwNTE2XSwgWy03Mi4yNzY0MDEwOTk5OTk4NywgNDIuOTI3MTE4NzAwMDAwNTFdLCBbLTcyLjI3NjM5MTA5OTk5OTg3LCA0Mi45MjcxMTg3MDAwMDA1MV0sIFstNzIuMjc2MzkxMDk5OTk5ODcsIDQyLjkyNzEwODcwMDAwMDUxXSwgWy03Mi4yNzYzOTEwOTk5OTk4NywgNDIuOTI3MDk4NzAwMDAwNTA2XSwgWy03Mi4yNzYzOTEwOTk5OTk4NywgNDIuOTI3MDg4NzAwMDAwNV0sIFstNzIuMjc2MzkxMDk5OTk5ODcsIDQyLjkyNzA3ODcwMDAwMDVdLCBbLTcyLjI3NjM4MTA5OTk5OTg3LCA0Mi45MjcwNzg3MDAwMDA1XSwgWy03Mi4yNzYzODEwOTk5OTk4NywgNDIuOTI3MDY4NzAwMDAwNV0sIFstNzIuMjc2MzgxMDk5OTk5ODcsIDQyLjkyNzA1ODcwMDAwMDQ5NF0sIFstNzIuMjc2MzgxMDk5OTk5ODcsIDQyLjkyNzA0ODcwMDAwMDQ5XSwgWy03Mi4yNzYzNzEwOTk5OTk4NiwgNDIuOTI3MDQ4NzAwMDAwNDldLCBbLTcyLjI3NjM3MTA5OTk5OTg2LCA0Mi45MjcwMzg3MDAwMDA0OV0sIFstNzIuMjc2MzcxMDk5OTk5ODYsIDQyLjkyNzAyODcwMDAwMDQ4NF0sIFstNzIuMjc2MzcxMDk5OTk5ODYsIDQyLjkyNzAxODcwMDAwMDQ4XSwgWy03Mi4yNzYzNzEwOTk5OTk4NiwgNDIuOTI3MDA4NzAwMDAwNDhdLCBbLTcyLjI3NjM2MTA5OTk5OTg2LCA0Mi45MjcwMDg3MDAwMDA0OF0sIFstNzIuMjc2MzYxMDk5OTk5ODYsIDQyLjkyNjk5ODcwMDAwMDQ3NV0sIFstNzIuMjc2MzYxMDk5OTk5ODYsIDQyLjkyNjk4ODcwMDAwMDQ3XSwgWy03Mi4yNzYzNjEwOTk5OTk4NiwgNDIuOTI2OTc4NzAwMDAwNDddLCBbLTcyLjI3NjM1MTA5OTk5OTg2LCA0Mi45MjY5Nzg3MDAwMDA0N10sIFstNzIuMjc2MzQxMDk5OTk5ODUsIDQyLjkyNjk3ODcwMDAwMDQ3XSwgWy03Mi4yNzYzNDEwOTk5OTk4NSwgNDIuOTI2OTY4NzAwMDAwNDY1XSwgWy03Mi4yNzYzMzEwOTk5OTk4NSwgNDIuOTI2OTY4NzAwMDAwNDY1XSwgWy03Mi4yNzYzMjEwOTk5OTk4NSwgNDIuOTI2OTY4NzAwMDAwNDY1XSwgWy03Mi4yNzYzMTEwOTk5OTk4NCwgNDIuOTI2OTY4NzAwMDAwNDY1XSwgWy03Mi4yNzYzMTEwOTk5OTk4NCwgNDIuOTI2OTU4NzAwMDAwNDZdLCBbLTcyLjI3NjMwMTA5OTk5OTg0LCA0Mi45MjY5NTg3MDAwMDA0Nl0sIFstNzIuMjc2MjkxMDk5OTk5ODQsIDQyLjkyNjk1ODcwMDAwMDQ2XSwgWy03Mi4yNzYyODEwOTk5OTk4NCwgNDIuOTI2OTU4NzAwMDAwNDZdLCBbLTcyLjI3NjI4MTA5OTk5OTg0LCA0Mi45MjY5NDg3MDAwMDA0Nl0sIFstNzIuMjc2MjcxMDk5OTk5ODMsIDQyLjkyNjk0ODcwMDAwMDQ2XSwgWy03Mi4yNzYyNjEwOTk5OTk4MywgNDIuOTI2OTQ4NzAwMDAwNDZdLCBbLTcyLjI3NjI1MTA5OTk5OTgzLCA0Mi45MjY5NDg3MDAwMDA0Nl0sIFstNzIuMjc2MjUxMDk5OTk5ODMsIDQyLjkyNjkzODcwMDAwMDQ1Nl0sIFstNzIuMjc2MjQxMDk5OTk5ODIsIDQyLjkyNjkzODcwMDAwMDQ1Nl0sIFstNzIuMjc2MjMxMDk5OTk5ODIsIDQyLjkyNjkzODcwMDAwMDQ1Nl0sIFstNzIuMjc2MjMxMDk5OTk5ODIsIDQyLjkyNjkyODcwMDAwMDQ1XSwgWy03Mi4yNzYyMjEwOTk5OTk4MiwgNDIuOTI2OTI4NzAwMDAwNDVdLCBbLTcyLjI3NjIxMTA5OTk5OTgxLCA0Mi45MjY5Mjg3MDAwMDA0NV0sIFstNzIuMjc2MjAxMDk5OTk5ODEsIDQyLjkyNjkyODcwMDAwMDQ1XSwgWy03Mi4yNzYyMDEwOTk5OTk4MSwgNDIuOTI2OTE4NzAwMDAwNDVdLCBbLTcyLjI3NjE5MTA5OTk5OTgsIDQyLjkyNjkxODcwMDAwMDQ1XSwgWy03Mi4yNzYxODEwOTk5OTk4LCA0Mi45MjY5MTg3MDAwMDA0NV0sIFstNzIuMjc2MTgxMDk5OTk5OCwgNDIuOTI2OTA4NzAwMDAwNDQ2XSwgWy03Mi4yNzYxODEwOTk5OTk4LCA0Mi45MjY4OTg3MDAwMDA0NF0sIFstNzIuMjc2MTcxMDk5OTk5OCwgNDIuOTI2ODk4NzAwMDAwNDRdLCBbLTcyLjI3NjE3MTA5OTk5OTgsIDQyLjkyNjg4ODcwMDAwMDQ0XSwgWy03Mi4yNzYxNzEwOTk5OTk4LCA0Mi45MjY4Nzg3MDAwMDA0NF0sIFstNzIuMjc2MTYxMDk5OTk5OCwgNDIuOTI2ODc4NzAwMDAwNDRdLCBbLTcyLjI3NjE2MTA5OTk5OTgsIDQyLjkyNjg2ODcwMDAwMDQzXSwgWy03Mi4yNzYxNjEwOTk5OTk4LCA0Mi45MjY4NTg3MDAwMDA0M10sIFstNzIuMjc2MTUxMDk5OTk5OCwgNDIuOTI2ODU4NzAwMDAwNDNdLCBbLTcyLjI3NjE1MTA5OTk5OTgsIDQyLjkyNjg0ODcwMDAwMDQzXSwgWy03Mi4yNzYxNTEwOTk5OTk4LCA0Mi45MjY4Mzg3MDAwMDA0MjRdLCBbLTcyLjI3NjE0MTA5OTk5OTc5LCA0Mi45MjY4Mzg3MDAwMDA0MjRdLCBbLTcyLjI3NjE0MTA5OTk5OTc5LCA0Mi45MjY4Mjg3MDAwMDA0Ml0sIFstNzIuMjc2MTQxMDk5OTk5NzksIDQyLjkyNjgxODcwMDAwMDQyXSwgWy03Mi4yNzYxMzEwOTk5OTk3OSwgNDIuOTI2ODE4NzAwMDAwNDJdLCBbLTcyLjI3NjEzMTA5OTk5OTc5LCA0Mi45MjY4MDg3MDAwMDA0MTRdLCBbLTcyLjI3NjEzMTA5OTk5OTc5LCA0Mi45MjY3OTg3MDAwMDA0MV0sIFstNzIuMjc2MTIxMDk5OTk5NzgsIDQyLjkyNjc5ODcwMDAwMDQxXSwgWy03Mi4yNzYxMjEwOTk5OTk3OCwgNDIuOTI2Nzg4NzAwMDAwNDFdLCBbLTcyLjI3NjEyMTA5OTk5OTc4LCA0Mi45MjY3Nzg3MDAwMDA0MDVdLCBbLTcyLjI3NjExMTA5OTk5OTc4LCA0Mi45MjY3Nzg3MDAwMDA0MDVdLCBbLTcyLjI3NjExMTA5OTk5OTc4LCA0Mi45MjY3Njg3MDAwMDA0XSwgWy03Mi4yNzYxMTEwOTk5OTk3OCwgNDIuOTI2NzU4NzAwMDAwNF0sIFstNzIuMjc2MTAxMDk5OTk5NzgsIDQyLjkyNjc1ODcwMDAwMDRdLCBbLTcyLjI3NjEwMTA5OTk5OTc4LCA0Mi45MjY3NDg3MDAwMDAzOTVdLCBbLTcyLjI3NjEwMTA5OTk5OTc4LCA0Mi45MjY3Mzg3MDAwMDAzOV0sIFstNzIuMjc2MTAxMDk5OTk5NzgsIDQyLjkyNjcyODcwMDAwMDM5XSwgWy03Mi4yNzYwOTEwOTk5OTk3NywgNDIuOTI2NzI4NzAwMDAwMzldLCBbLTcyLjI3NjA5MTA5OTk5OTc3LCA0Mi45MjY3MTg3MDAwMDAzODZdLCBbLTcyLjI3NjA5MTA5OTk5OTc3LCA0Mi45MjY3MDg3MDAwMDAzOF0sIFstNzIuMjc2MDkxMDk5OTk5NzcsIDQyLjkyNjY5ODcwMDAwMDM4XSwgWy03Mi4yNzYwODEwOTk5OTk3NywgNDIuOTI2Njk4NzAwMDAwMzhdLCBbLTcyLjI3NjA4MTA5OTk5OTc3LCA0Mi45MjY2ODg3MDAwMDAzNzZdLCBbLTcyLjI3NjA4MTA5OTk5OTc3LCA0Mi45MjY2Nzg3MDAwMDAzN10sIFstNzIuMjc2MDgxMDk5OTk5NzcsIDQyLjkyNjY2ODcwMDAwMDM3XSwgWy03Mi4yNzYwODEwOTk5OTk3NywgNDIuOTI2NjU4NzAwMDAwMzddLCBbLTcyLjI3NjA3MTA5OTk5OTc3LCA0Mi45MjY2NTg3MDAwMDAzN10sIFstNzIuMjc2MDcxMDk5OTk5NzcsIDQyLjkyNjY0ODcwMDAwMDM2NF0sIFstNzIuMjc2MDcxMDk5OTk5NzcsIDQyLjkyNjYzODcwMDAwMDM2XSwgWy03Mi4yNzYwNzEwOTk5OTk3NywgNDIuOTI2NjI4NzAwMDAwMzZdLCBbLTcyLjI3NjA3MTA5OTk5OTc3LCA0Mi45MjY2MTg3MDAwMDAzNTRdLCBbLTcyLjI3NjA3MTA5OTk5OTc3LCA0Mi45MjY2MDg3MDAwMDAzNV0sIFstNzIuMjc2MDcxMDk5OTk5NzcsIDQyLjkyNjU5ODcwMDAwMDM1XSwgWy03Mi4yNzYwNzEwOTk5OTk3NywgNDIuOTI2NTg4NzAwMDAwMzQ1XSwgWy03Mi4yNzYwNjEwOTk5OTk3NywgNDIuOTI2NTg4NzAwMDAwMzQ1XSwgWy03Mi4yNzYwNjEwOTk5OTk3NywgNDIuOTI2NTc4NzAwMDAwMzRdLCBbLTcyLjI3NjA2MTA5OTk5OTc3LCA0Mi45MjY1Njg3MDAwMDAzNF0sIFstNzIuMjc2MDYxMDk5OTk5NzcsIDQyLjkyNjU1ODcwMDAwMDMzNV0sIFstNzIuMjc2MDYxMDk5OTk5NzcsIDQyLjkyNjU0ODcwMDAwMDMzXSwgWy03Mi4yNzYwNjEwOTk5OTk3NywgNDIuOTI2NTM4NzAwMDAwMzNdLCBbLTcyLjI3NjA2MTA5OTk5OTc3LCA0Mi45MjY1Mjg3MDAwMDAzMjZdLCBbLTcyLjI3NjA3MTA5OTk5OTc3LCA0Mi45MjY1Mjg3MDAwMDAzMjZdLCBbLTcyLjI3NjA3MTA5OTk5OTc3LCA0Mi45MjY1MTg3MDAwMDAzMl0sIFstNzIuMjc2MDcxMDk5OTk5NzcsIDQyLjkyNjUwODcwMDAwMDMyXSwgWy03Mi4yNzYwNzEwOTk5OTk3NywgNDIuOTI2NDk4NzAwMDAwMzE2XSwgWy03Mi4yNzYwNzEwOTk5OTk3NywgNDIuOTI2NDg4NzAwMDAwMzFdLCBbLTcyLjI3NjA3MTA5OTk5OTc3LCA0Mi45MjY0Nzg3MDAwMDAzMV0sIFstNzIuMjc2MDcxMDk5OTk5NzcsIDQyLjkyNjQ2ODcwMDAwMDMxXSwgWy03Mi4yNzYwNzEwOTk5OTk3NywgNDIuOTI2NDU4NzAwMDAwM10sIFstNzIuMjc2MDcxMDk5OTk5NzcsIDQyLjkyNjQ0ODcwMDAwMDNdLCBbLTcyLjI3NjA4MTA5OTk5OTc3LCA0Mi45MjY0NDg3MDAwMDAzXSwgWy03Mi4yNzYwODEwOTk5OTk3NywgNDIuOTI2NDM4NzAwMDAwM10sIFstNzIuMjc2MDgxMDk5OTk5NzcsIDQyLjkyNjQyODcwMDAwMDI5NF0sIFstNzIuMjc2MDgxMDk5OTk5NzcsIDQyLjkyNjQxODcwMDAwMDI5XSwgWy03Mi4yNzYwODEwOTk5OTk3NywgNDIuOTI2NDA4NzAwMDAwMjldLCBbLTcyLjI3NjA5MTA5OTk5OTc3LCA0Mi45MjY0MDg3MDAwMDAyOV0sIFstNzIuMjc2MDkxMDk5OTk5NzcsIDQyLjkyNjM5ODcwMDAwMDI4NF0sIFstNzIuMjc2MDkxMDk5OTk5NzcsIDQyLjkyNjM4ODcwMDAwMDI4XSwgWy03Mi4yNzYwOTEwOTk5OTk3NywgNDIuOTI2Mzc4NzAwMDAwMjhdLCBbLTcyLjI3NjEwMTA5OTk5OTc4LCA0Mi45MjYzNzg3MDAwMDAyOF0sIFstNzIuMjc2MTAxMDk5OTk5NzgsIDQyLjkyNjM2ODcwMDAwMDI3NV0sIFstNzIuMjc2MTAxMDk5OTk5NzgsIDQyLjkyNjM1ODcwMDAwMDI3XSwgWy03Mi4yNzYxMDEwOTk5OTk3OCwgNDIuOTI2MzQ4NzAwMDAwMjddLCBbLTcyLjI3NjExMTA5OTk5OTc4LCA0Mi45MjYzNDg3MDAwMDAyN10sIFstNzIuMjc2MTExMDk5OTk5NzgsIDQyLjkyNjMzODcwMDAwMDI2NV0sIFstNzIuMjc2MTExMDk5OTk5NzgsIDQyLjkyNjMyODcwMDAwMDI2XSwgWy03Mi4yNzYxMTEwOTk5OTk3OCwgNDIuOTI2MzE4NzAwMDAwMjZdLCBbLTcyLjI3NjEyMTA5OTk5OTc4LCA0Mi45MjYzMTg3MDAwMDAyNl0sIFstNzIuMjc2MTIxMDk5OTk5NzgsIDQyLjkyNjMwODcwMDAwMDI1Nl0sIFstNzIuMjc2MTIxMDk5OTk5NzgsIDQyLjkyNjI5ODcwMDAwMDI1XSwgWy03Mi4yNzYxMjEwOTk5OTk3OCwgNDIuOTI2Mjg4NzAwMDAwMjVdLCBbLTcyLjI3NjEzMTA5OTk5OTc5LCA0Mi45MjYyODg3MDAwMDAyNV0sIFstNzIuMjc2MTMxMDk5OTk5NzksIDQyLjkyNjI3ODcwMDAwMDI0Nl0sIFstNzIuMjc2MTMxMDk5OTk5NzksIDQyLjkyNjI2ODcwMDAwMDI0XSwgWy03Mi4yNzYxMzEwOTk5OTk3OSwgNDIuOTI2MjU4NzAwMDAwMjRdLCBbLTcyLjI3NjE0MTA5OTk5OTc5LCA0Mi45MjYyNTg3MDAwMDAyNF0sIFstNzIuMjc2MTQxMDk5OTk5NzksIDQyLjkyNjI0ODcwMDAwMDI0XSwgWy03Mi4yNzYxNDEwOTk5OTk3OSwgNDIuOTI2MjM4NzAwMDAwMjNdLCBbLTcyLjI3NjE0MTA5OTk5OTc5LCA0Mi45MjYyMjg3MDAwMDAyM10sIFstNzIuMjc2MTQxMDk5OTk5NzksIDQyLjkyNjIxODcwMDAwMDIzXSwgWy03Mi4yNzYxNDEwOTk5OTk3OSwgNDIuOTI2MjA4NzAwMDAwMjI0XSwgWy03Mi4yNzYxMzEwOTk5OTk3OSwgNDIuOTI2MjA4NzAwMDAwMjI0XSwgWy03Mi4yNzYxMzEwOTk5OTk3OSwgNDIuOTI2MTk4NzAwMDAwMjJdLCBbLTcyLjI3NjEzMTA5OTk5OTc5LCA0Mi45MjYxODg3MDAwMDAyMl0sIFstNzIuMjc2MTIxMDk5OTk5NzgsIDQyLjkyNjE4ODcwMDAwMDIyXSwgWy03Mi4yNzYxMjEwOTk5OTk3OCwgNDIuOTI2MTc4NzAwMDAwMjE0XSwgWy03Mi4yNzYxMjEwOTk5OTk3OCwgNDIuOTI2MTY4NzAwMDAwMjFdLCBbLTcyLjI3NjExMTA5OTk5OTc4LCA0Mi45MjYxNjg3MDAwMDAyMV0sIFstNzIuMjc2MTExMDk5OTk5NzgsIDQyLjkyNjE1ODcwMDAwMDIxXSwgWy03Mi4yNzYxMTEwOTk5OTk3OCwgNDIuOTI2MTQ4NzAwMDAwMjA1XSwgWy03Mi4yNzYxMDEwOTk5OTk3OCwgNDIuOTI2MTQ4NzAwMDAwMjA1XSwgWy03Mi4yNzYxMDEwOTk5OTk3OCwgNDIuOTI2MTM4NzAwMDAwMl0sIFstNzIuMjc2MTAxMDk5OTk5NzgsIDQyLjkyNjEyODcwMDAwMDJdLCBbLTcyLjI3NjA5MTA5OTk5OTc3LCA0Mi45MjYxMjg3MDAwMDAyXSwgWy03Mi4yNzYwOTEwOTk5OTk3NywgNDIuOTI2MTE4NzAwMDAwMTk1XSwgWy03Mi4yNzYwOTEwOTk5OTk3NywgNDIuOTI2MTA4NzAwMDAwMTldLCBbLTcyLjI3NjA4MTA5OTk5OTc3LCA0Mi45MjYxMDg3MDAwMDAxOV0sIFstNzIuMjc2MDgxMDk5OTk5NzcsIDQyLjkyNjA5ODcwMDAwMDE5XSwgWy03Mi4yNzYwODEwOTk5OTk3NywgNDIuOTI2MDg4NzAwMDAwMTg2XSwgWy03Mi4yNzYwNzEwOTk5OTk3NywgNDIuOTI2MDg4NzAwMDAwMTg2XSwgWy03Mi4yNzYwNzEwOTk5OTk3NywgNDIuOTI2MDc4NzAwMDAwMThdLCBbLTcyLjI3NjA3MTA5OTk5OTc3LCA0Mi45MjYwNjg3MDAwMDAxOF0sIFstNzIuMjc2MDYxMDk5OTk5NzcsIDQyLjkyNjA2ODcwMDAwMDE4XSwgWy03Mi4yNzYwNjEwOTk5OTk3NywgNDIuOTI2MDU4NzAwMDAwMTc2XSwgWy03Mi4yNzYwNTEwOTk5OTk3NiwgNDIuOTI2MDU4NzAwMDAwMTc2XSwgWy03Mi4yNzYwNTEwOTk5OTk3NiwgNDIuOTI2MDQ4NzAwMDAwMTddLCBbLTcyLjI3NjA1MTA5OTk5OTc2LCA0Mi45MjYwMzg3MDAwMDAxN10sIFstNzIuMjc2MDQxMDk5OTk5NzYsIDQyLjkyNjAzODcwMDAwMDE3XSwgWy03Mi4yNzYwNDEwOTk5OTk3NiwgNDIuOTI2MDI4NzAwMDAwMTddLCBbLTcyLjI3NjA0MTA5OTk5OTc2LCA0Mi45MjYwMTg3MDAwMDAxNjRdLCBbLTcyLjI3NjAzMTA5OTk5OTc2LCA0Mi45MjYwMTg3MDAwMDAxNjRdLCBbLTcyLjI3NjAzMTA5OTk5OTc2LCA0Mi45MjYwMDg3MDAwMDAxNl0sIFstNzIuMjc2MDMxMDk5OTk5NzYsIDQyLjkyNTk5ODcwMDAwMDE2XSwgWy03Mi4yNzYwMjEwOTk5OTk3NSwgNDIuOTI1OTk4NzAwMDAwMTZdLCBbLTcyLjI3NjAyMTA5OTk5OTc1LCA0Mi45MjU5ODg3MDAwMDAxNTRdLCBbLTcyLjI3NjAyMTA5OTk5OTc1LCA0Mi45MjU5Nzg3MDAwMDAxNV0sIFstNzIuMjc2MDExMDk5OTk5NzUsIDQyLjkyNTk3ODcwMDAwMDE1XSwgWy03Mi4yNzYwMTEwOTk5OTk3NSwgNDIuOTI1OTY4NzAwMDAwMTVdLCBbLTcyLjI3NjAxMTA5OTk5OTc1LCA0Mi45MjU5NTg3MDAwMDAxNDVdLCBbLTcyLjI3NjAwMTA5OTk5OTc1LCA0Mi45MjU5NTg3MDAwMDAxNDVdLCBbLTcyLjI3NjAwMTA5OTk5OTc1LCA0Mi45MjU5NDg3MDAwMDAxNF0sIFstNzIuMjc2MDAxMDk5OTk5NzUsIDQyLjkyNTkzODcwMDAwMDE0XSwgWy03Mi4yNzU5OTEwOTk5OTk3NCwgNDIuOTI1OTM4NzAwMDAwMTRdLCBbLTcyLjI3NTk5MTA5OTk5OTc0LCA0Mi45MjU5Mjg3MDAwMDAxMzVdLCBbLTcyLjI3NTk5MTA5OTk5OTc0LCA0Mi45MjU5MTg3MDAwMDAxM10sIFstNzIuMjc1OTgxMDk5OTk5NzQsIDQyLjkyNTkxODcwMDAwMDEzXSwgWy03Mi4yNzU5ODEwOTk5OTk3NCwgNDIuOTI1OTA4NzAwMDAwMTNdLCBbLTcyLjI3NTk4MTA5OTk5OTc0LCA0Mi45MjU4OTg3MDAwMDAxMjZdLCBbLTcyLjI3NTk3MTA5OTk5OTc0LCA0Mi45MjU4OTg3MDAwMDAxMjZdLCBbLTcyLjI3NTk3MTA5OTk5OTc0LCA0Mi45MjU4ODg3MDAwMDAxMl0sIFstNzIuMjc1OTYxMDk5OTk5NzMsIDQyLjkyNTg4ODcwMDAwMDEyXSwgWy03Mi4yNzU5NjEwOTk5OTk3MywgNDIuOTI1ODc4NzAwMDAwMTJdLCBbLTcyLjI3NTk2MTA5OTk5OTczLCA0Mi45MjU4Njg3MDAwMDAxMTZdLCBbLTcyLjI3NTk1MTA5OTk5OTczLCA0Mi45MjU4Njg3MDAwMDAxMTZdLCBbLTcyLjI3NTk1MTA5OTk5OTczLCA0Mi45MjU4NTg3MDAwMDAxMV0sIFstNzIuMjc1OTUxMDk5OTk5NzMsIDQyLjkyNTg0ODcwMDAwMDExXSwgWy03Mi4yNzU5NDEwOTk5OTk3MywgNDIuOTI1ODQ4NzAwMDAwMTFdLCBbLTcyLjI3NTk0MTA5OTk5OTczLCA0Mi45MjU4Mzg3MDAwMDAxMV0sIFstNzIuMjc1OTQxMDk5OTk5NzMsIDQyLjkyNTgyODcwMDAwMDFdLCBbLTcyLjI3NTkzMTA5OTk5OTcyLCA0Mi45MjU4Mjg3MDAwMDAxXSwgWy03Mi4yNzU5MzEwOTk5OTk3MiwgNDIuOTI1ODE4NzAwMDAwMV0sIFstNzIuMjc1OTMxMDk5OTk5NzIsIDQyLjkyNTgwODcwMDAwMDFdLCBbLTcyLjI3NTkyMTA5OTk5OTcyLCA0Mi45MjU4MDg3MDAwMDAxXSwgWy03Mi4yNzU5MjEwOTk5OTk3MiwgNDIuOTI1Nzk4NzAwMDAwMDk0XSwgWy03Mi4yNzU5MjEwOTk5OTk3MiwgNDIuOTI1Nzg4NzAwMDAwMDldLCBbLTcyLjI3NTkxMTA5OTk5OTcyLCA0Mi45MjU3ODg3MDAwMDAwOV0sIFstNzIuMjc1OTExMDk5OTk5NzIsIDQyLjkyNTc3ODcwMDAwMDA5XSwgWy03Mi4yNzU5MTEwOTk5OTk3MiwgNDIuOTI1NzY4NzAwMDAwMDg0XSwgWy03Mi4yNzU5MDEwOTk5OTk3MSwgNDIuOTI1NzY4NzAwMDAwMDg0XSwgWy03Mi4yNzU5MDEwOTk5OTk3MSwgNDIuOTI1NzU4NzAwMDAwMDhdLCBbLTcyLjI3NTkwMTA5OTk5OTcxLCA0Mi45MjU3NDg3MDAwMDAwOF0sIFstNzIuMjc1ODkxMDk5OTk5NzEsIDQyLjkyNTc0ODcwMDAwMDA4XSwgWy03Mi4yNzU4OTEwOTk5OTk3MSwgNDIuOTI1NzM4NzAwMDAwMDc1XSwgWy03Mi4yNzU4OTEwOTk5OTk3MSwgNDIuOTI1NzI4NzAwMDAwMDddLCBbLTcyLjI3NTg4MTA5OTk5OTcxLCA0Mi45MjU3Mjg3MDAwMDAwN10sIFstNzIuMjc1ODgxMDk5OTk5NzEsIDQyLjkyNTcxODcwMDAwMDA3XSwgWy03Mi4yNzU4ODEwOTk5OTk3MSwgNDIuOTI1NzA4NzAwMDAwMDY1XSwgWy03Mi4yNzU4NzEwOTk5OTk3LCA0Mi45MjU3MDg3MDAwMDAwNjVdLCBbLTcyLjI3NTg3MTA5OTk5OTcsIDQyLjkyNTY5ODcwMDAwMDA2XSwgWy03Mi4yNzU4NjEwOTk5OTk3LCA0Mi45MjU2OTg3MDAwMDAwNl0sIFstNzIuMjc1ODYxMDk5OTk5NywgNDIuOTI1Njg4NzAwMDAwMDZdLCBbLTcyLjI3NTg2MTA5OTk5OTcsIDQyLjkyNTY3ODcwMDAwMDA1Nl0sIFstNzIuMjc1ODUxMDk5OTk5NywgNDIuOTI1Njc4NzAwMDAwMDU2XSwgWy03Mi4yNzU4NTEwOTk5OTk3LCA0Mi45MjU2Njg3MDAwMDAwNV0sIFstNzIuMjc1ODUxMDk5OTk5NywgNDIuOTI1NjU4NzAwMDAwMDVdLCBbLTcyLjI3NTg0MTA5OTk5OTcsIDQyLjkyNTY1ODcwMDAwMDA1XSwgWy03Mi4yNzU4NDEwOTk5OTk3LCA0Mi45MjU2NDg3MDAwMDAwNDZdLCBbLTcyLjI3NTgzMTA5OTk5OTY5LCA0Mi45MjU2NDg3MDAwMDAwNDZdLCBbLTcyLjI3NTgzMTA5OTk5OTY5LCA0Mi45MjU2Mzg3MDAwMDAwNF0sIFstNzIuMjc1ODIxMDk5OTk5NjksIDQyLjkyNTYzODcwMDAwMDA0XSwgWy03Mi4yNzU4MTEwOTk5OTk2OSwgNDIuOTI1NjM4NzAwMDAwMDRdLCBbLTcyLjI3NTgwMTA5OTk5OTY4LCA0Mi45MjU2Mzg3MDAwMDAwNF0sIFstNzIuMjc1ODAxMDk5OTk5NjgsIDQyLjkyNTYyODcwMDAwMDA0XSwgWy03Mi4yNzU3OTEwOTk5OTk2OCwgNDIuOTI1NjI4NzAwMDAwMDRdLCBbLTcyLjI3NTc4MTA5OTk5OTY4LCA0Mi45MjU2Mjg3MDAwMDAwNF0sIFstNzIuMjc1NzcxMDk5OTk5NjcsIDQyLjkyNTYyODcwMDAwMDA0XSwgWy03Mi4yNzU3NzEwOTk5OTk2NywgNDIuOTI1NjE4NzAwMDAwMDRdLCBbLTcyLjI3NTc2MTA5OTk5OTY3LCA0Mi45MjU2MTg3MDAwMDAwNF0sIFstNzIuMjc1NzUxMDk5OTk5NjcsIDQyLjkyNTYxODcwMDAwMDA0XSwgWy03Mi4yNzU3NDEwOTk5OTk2NiwgNDIuOTI1NjE4NzAwMDAwMDRdLCBbLTcyLjI3NTczMTA5OTk5OTY2LCA0Mi45MjU2MTg3MDAwMDAwNF0sIFstNzIuMjc1NzMxMDk5OTk5NjYsIDQyLjkyNTYwODcwMDAwMDAzXSwgWy03Mi4yNzU3MzEwOTk5OTk2NiwgNDIuOTI1NTk4NzAwMDAwMDNdLCBbLTcyLjI3NTczMTA5OTk5OTY2LCA0Mi45MjU1ODg3MDAwMDAwM10sIFstNzIuMjc1NzMxMDk5OTk5NjYsIDQyLjkyNTU3ODcwMDAwMDAyNF0sIFstNzIuMjc1NzMxMDk5OTk5NjYsIDQyLjkyNTU2ODcwMDAwMDAyXSwgWy03Mi4yNzU3MzEwOTk5OTk2NiwgNDIuOTI1NTU4NzAwMDAwMDJdLCBbLTcyLjI3NTczMTA5OTk5OTY2LCA0Mi45MjU1NDg3MDAwMDAwMTRdLCBbLTcyLjI3NTczMTA5OTk5OTY2LCA0Mi45MjU1Mzg3MDAwMDAwMV0sIFstNzIuMjc1NzMxMDk5OTk5NjYsIDQyLjkyNTUyODcwMDAwMDAxXSwgWy03Mi4yNzU3MzEwOTk5OTk2NiwgNDIuOTI1NTE4NzAwMDAwMDA1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICIwIiwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNob3JvcGxldGhfZDM2ZDllYmQ3ZWM5NGYwZGI2OWRhMzkxM2U5NzU4YWIgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwXzVhNjI3NjE3MTViMjQxNDk4MzAxOTk3YTNlMTA0MjY0KTsKICAgICAgICAKICAgIAogICAgICAgIGZ1bmN0aW9uIGdlb19qc29uXzRkZmE1Zjk1ZDNmOTQxNjk4NGZlY2FjZjUzYzY1NGNmX3N0eWxlcihmZWF0dXJlKSB7CiAgICAgICAgICAgIHN3aXRjaChmZWF0dXJlLmlkKSB7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIHJldHVybiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICJibHVlIiwgImZpbGxPcGFjaXR5IjogMC42LCAib3BhY2l0eSI6IDEsICJ3ZWlnaHQiOiAxfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBnZW9fanNvbl80ZGZhNWY5NWQzZjk0MTY5ODRmZWNhY2Y1M2M2NTRjZl9vbkVhY2hGZWF0dXJlKGZlYXR1cmUsIGxheWVyKSB7CiAgICAgICAgICAgIGxheWVyLm9uKHsKICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgbWFwXzVhNjI3NjE3MTViMjQxNDk4MzAxOTk3YTNlMTA0MjY0LmZpdEJvdW5kcyhlLnRhcmdldC5nZXRCb3VuZHMoKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH07CiAgICAgICAgdmFyIGdlb19qc29uXzRkZmE1Zjk1ZDNmOTQxNjk4NGZlY2FjZjUzYzY1NGNmID0gTC5nZW9Kc29uKG51bGwsIHsKICAgICAgICAgICAgICAgIG9uRWFjaEZlYXR1cmU6IGdlb19qc29uXzRkZmE1Zjk1ZDNmOTQxNjk4NGZlY2FjZjUzYzY1NGNmX29uRWFjaEZlYXR1cmUsCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgc3R5bGU6IGdlb19qc29uXzRkZmE1Zjk1ZDNmOTQxNjk4NGZlY2FjZjUzYzY1NGNmX3N0eWxlciwKICAgICAgICB9KTsKICAgICAgICBmdW5jdGlvbiBnZW9fanNvbl80ZGZhNWY5NWQzZjk0MTY5ODRmZWNhY2Y1M2M2NTRjZl9hZGQgKGRhdGEpIHsKICAgICAgICAgICAgZ2VvX2pzb25fNGRmYTVmOTVkM2Y5NDE2OTg0ZmVjYWNmNTNjNjU0Y2YuYWRkRGF0YShkYXRhKQogICAgICAgICAgICAgICAgLmFkZFRvKGNob3JvcGxldGhfZDM2ZDllYmQ3ZWM5NGYwZGI2OWRhMzkxM2U5NzU4YWIpOwogICAgICAgIH0KICAgICAgICAgICAgZ2VvX2pzb25fNGRmYTVmOTVkM2Y5NDE2OTg0ZmVjYWNmNTNjNjU0Y2ZfYWRkKHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNzIuMjc2NDMyOTY2ODc3ODgsIDQyLjkyNzI1MTI4NTk4MTU0XSwgWy03Mi4yNzU4NjYzLCA0Mi45MjcyNjg1XSwgWy03Mi4yNzU3NDA4NDYxMzk2NCwgNDIuOTI1NjE1Mjk2OTA2ODddLCBbLTcyLjI3NTgyMzQsIDQyLjkyNTUwODddLCBbLTcyLjI3NjY3MDksIDQyLjkyNjE4NDRdLCBbLTcyLjI3NjMxNjksIDQyLjkyNjU3NzJdLCBbLTcyLjI3NjgyMTEsIDQyLjkyNzAzMjhdLCBbLTcyLjI3NjQzMjk2Njg3Nzg4LCA0Mi45MjcyNTEyODU5ODE1NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiMCIsICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0pOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x12e70a790>"
]
},
"execution_count": 163,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m.choropleth(geo_data=x)\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(-72.2768211, 42.9255087, -72.27574084613964, 42.9272685)"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minlat, minlon, maxlat, maxlon"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"[(-72.27643296687788, 42.92725128598154),\n",
" (-72.2758663, 42.9272685),\n",
" (-72.27574084613964, 42.92561529690687),\n",
" (-72.2758234, 42.9255087),\n",
" (-72.2766709, 42.9261844),\n",
" (-72.2763169, 42.9265772),\n",
" (-72.2768211, 42.9270328),\n",
" (-72.27643296687788, 42.92725128598154)]"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"coordinates[0:]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "grf-p",
"language": "python",
"name": "grf-p"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment