{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# How to draw a *scatter* plot with folium" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np\n", "import sys\n", "sys.path.insert(0, 'folium')\n", "sys.path.insert(0, 'branca')\n", "\n", "import branca\n", "import folium" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We create a sample of data thanks to `numpy`." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "n = 100\n", "lats = np.random.uniform(38, 53, n)\n", "lngs = np.random.uniform(-17, 23, n)\n", "sizes = np.random.uniform(2, 20, n)\n", "colors = np.random.uniform(0, 50, n)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We create a colormap thanks to `branca`. You can also create your own function or use `matplotlib`." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#ffff00\n" ] }, { "data": { "text/html": [ "<svg height=\"50\" width=\"500\"><line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"20\" style=\"stroke:#008000;stroke-width:3;\" /><line x1=\"1\" y1=\"0\" x2=\"1\" y2=\"20\" style=\"stroke:#018100;stroke-width:3;\" /><line x1=\"2\" y1=\"0\" x2=\"2\" y2=\"20\" style=\"stroke:#028100;stroke-width:3;\" /><line x1=\"3\" y1=\"0\" x2=\"3\" y2=\"20\" style=\"stroke:#038200;stroke-width:3;\" /><line x1=\"4\" y1=\"0\" x2=\"4\" y2=\"20\" style=\"stroke:#048200;stroke-width:3;\" /><line x1=\"5\" y1=\"0\" x2=\"5\" y2=\"20\" style=\"stroke:#058300;stroke-width:3;\" /><line x1=\"6\" y1=\"0\" x2=\"6\" y2=\"20\" style=\"stroke:#068300;stroke-width:3;\" /><line x1=\"7\" y1=\"0\" x2=\"7\" y2=\"20\" style=\"stroke:#078400;stroke-width:3;\" /><line x1=\"8\" y1=\"0\" x2=\"8\" y2=\"20\" style=\"stroke:#088400;stroke-width:3;\" /><line x1=\"9\" y1=\"0\" x2=\"9\" y2=\"20\" style=\"stroke:#098500;stroke-width:3;\" /><line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"20\" style=\"stroke:#0a8500;stroke-width:3;\" /><line x1=\"11\" y1=\"0\" x2=\"11\" y2=\"20\" style=\"stroke:#0b8600;stroke-width:3;\" /><line x1=\"12\" y1=\"0\" x2=\"12\" y2=\"20\" style=\"stroke:#0c8600;stroke-width:3;\" /><line x1=\"13\" y1=\"0\" x2=\"13\" y2=\"20\" style=\"stroke:#0d8700;stroke-width:3;\" /><line x1=\"14\" y1=\"0\" x2=\"14\" y2=\"20\" style=\"stroke:#0e8700;stroke-width:3;\" /><line x1=\"15\" y1=\"0\" x2=\"15\" y2=\"20\" style=\"stroke:#0f8800;stroke-width:3;\" /><line x1=\"16\" y1=\"0\" x2=\"16\" y2=\"20\" style=\"stroke:#108800;stroke-width:3;\" /><line x1=\"17\" y1=\"0\" x2=\"17\" y2=\"20\" style=\"stroke:#118900;stroke-width:3;\" /><line x1=\"18\" y1=\"0\" x2=\"18\" y2=\"20\" style=\"stroke:#128900;stroke-width:3;\" /><line x1=\"19\" y1=\"0\" x2=\"19\" y2=\"20\" style=\"stroke:#138a00;stroke-width:3;\" /><line x1=\"20\" y1=\"0\" x2=\"20\" y2=\"20\" style=\"stroke:#148a00;stroke-width:3;\" /><line x1=\"21\" y1=\"0\" x2=\"21\" y2=\"20\" style=\"stroke:#158b00;stroke-width:3;\" /><line x1=\"22\" y1=\"0\" x2=\"22\" y2=\"20\" style=\"stroke:#168b00;stroke-width:3;\" /><line x1=\"23\" y1=\"0\" x2=\"23\" y2=\"20\" style=\"stroke:#178c00;stroke-width:3;\" /><line x1=\"24\" y1=\"0\" x2=\"24\" y2=\"20\" style=\"stroke:#188c00;stroke-width:3;\" /><line x1=\"25\" y1=\"0\" x2=\"25\" y2=\"20\" style=\"stroke:#198d00;stroke-width:3;\" /><line x1=\"26\" y1=\"0\" x2=\"26\" y2=\"20\" style=\"stroke:#1a8d00;stroke-width:3;\" /><line x1=\"27\" y1=\"0\" x2=\"27\" y2=\"20\" style=\"stroke:#1b8e00;stroke-width:3;\" /><line x1=\"28\" y1=\"0\" x2=\"28\" y2=\"20\" style=\"stroke:#1c8e00;stroke-width:3;\" /><line x1=\"29\" y1=\"0\" x2=\"29\" y2=\"20\" style=\"stroke:#1d8f00;stroke-width:3;\" /><line x1=\"30\" y1=\"0\" x2=\"30\" y2=\"20\" style=\"stroke:#1e8f00;stroke-width:3;\" /><line x1=\"31\" y1=\"0\" x2=\"31\" y2=\"20\" style=\"stroke:#1f9000;stroke-width:3;\" /><line x1=\"32\" y1=\"0\" x2=\"32\" y2=\"20\" style=\"stroke:#209000;stroke-width:3;\" /><line x1=\"33\" y1=\"0\" x2=\"33\" y2=\"20\" style=\"stroke:#219100;stroke-width:3;\" /><line x1=\"34\" y1=\"0\" x2=\"34\" y2=\"20\" style=\"stroke:#229100;stroke-width:3;\" /><line x1=\"35\" y1=\"0\" x2=\"35\" y2=\"20\" style=\"stroke:#239200;stroke-width:3;\" /><line x1=\"36\" y1=\"0\" x2=\"36\" y2=\"20\" style=\"stroke:#249200;stroke-width:3;\" /><line x1=\"37\" y1=\"0\" x2=\"37\" y2=\"20\" style=\"stroke:#259300;stroke-width:3;\" /><line x1=\"38\" y1=\"0\" x2=\"38\" y2=\"20\" style=\"stroke:#269300;stroke-width:3;\" /><line x1=\"39\" y1=\"0\" x2=\"39\" y2=\"20\" style=\"stroke:#289400;stroke-width:3;\" /><line x1=\"40\" y1=\"0\" x2=\"40\" y2=\"20\" style=\"stroke:#299400;stroke-width:3;\" /><line x1=\"41\" y1=\"0\" x2=\"41\" y2=\"20\" style=\"stroke:#2a9500;stroke-width:3;\" /><line x1=\"42\" y1=\"0\" x2=\"42\" y2=\"20\" style=\"stroke:#2b9500;stroke-width:3;\" /><line x1=\"43\" y1=\"0\" x2=\"43\" y2=\"20\" style=\"stroke:#2c9600;stroke-width:3;\" /><line x1=\"44\" y1=\"0\" x2=\"44\" y2=\"20\" style=\"stroke:#2d9600;stroke-width:3;\" /><line x1=\"45\" y1=\"0\" x2=\"45\" y2=\"20\" style=\"stroke:#2e9700;stroke-width:3;\" /><line x1=\"46\" y1=\"0\" x2=\"46\" y2=\"20\" style=\"stroke:#2f9800;stroke-width:3;\" /><line x1=\"47\" y1=\"0\" x2=\"47\" y2=\"20\" style=\"stroke:#309800;stroke-width:3;\" /><line x1=\"48\" y1=\"0\" x2=\"48\" y2=\"20\" style=\"stroke:#319900;stroke-width:3;\" /><line x1=\"49\" y1=\"0\" x2=\"49\" y2=\"20\" style=\"stroke:#329900;stroke-width:3;\" /><line x1=\"50\" y1=\"0\" x2=\"50\" y2=\"20\" style=\"stroke:#339a00;stroke-width:3;\" /><line x1=\"51\" y1=\"0\" x2=\"51\" y2=\"20\" style=\"stroke:#349a00;stroke-width:3;\" /><line x1=\"52\" y1=\"0\" x2=\"52\" y2=\"20\" style=\"stroke:#359b00;stroke-width:3;\" /><line x1=\"53\" y1=\"0\" x2=\"53\" y2=\"20\" style=\"stroke:#369b00;stroke-width:3;\" /><line x1=\"54\" y1=\"0\" x2=\"54\" y2=\"20\" style=\"stroke:#379c00;stroke-width:3;\" /><line x1=\"55\" y1=\"0\" x2=\"55\" y2=\"20\" style=\"stroke:#389c00;stroke-width:3;\" /><line x1=\"56\" y1=\"0\" x2=\"56\" y2=\"20\" style=\"stroke:#399d00;stroke-width:3;\" /><line x1=\"57\" y1=\"0\" x2=\"57\" y2=\"20\" style=\"stroke:#3a9d00;stroke-width:3;\" /><line x1=\"58\" y1=\"0\" x2=\"58\" y2=\"20\" style=\"stroke:#3b9e00;stroke-width:3;\" /><line x1=\"59\" y1=\"0\" x2=\"59\" y2=\"20\" style=\"stroke:#3c9e00;stroke-width:3;\" /><line x1=\"60\" y1=\"0\" x2=\"60\" y2=\"20\" style=\"stroke:#3d9f00;stroke-width:3;\" /><line x1=\"61\" y1=\"0\" x2=\"61\" y2=\"20\" style=\"stroke:#3e9f00;stroke-width:3;\" /><line x1=\"62\" y1=\"0\" x2=\"62\" y2=\"20\" style=\"stroke:#3fa000;stroke-width:3;\" /><line x1=\"63\" y1=\"0\" x2=\"63\" y2=\"20\" style=\"stroke:#40a000;stroke-width:3;\" /><line x1=\"64\" y1=\"0\" x2=\"64\" y2=\"20\" style=\"stroke:#41a100;stroke-width:3;\" /><line x1=\"65\" y1=\"0\" x2=\"65\" y2=\"20\" style=\"stroke:#42a100;stroke-width:3;\" /><line x1=\"66\" y1=\"0\" x2=\"66\" y2=\"20\" style=\"stroke:#43a200;stroke-width:3;\" /><line x1=\"67\" y1=\"0\" x2=\"67\" y2=\"20\" style=\"stroke:#44a200;stroke-width:3;\" /><line x1=\"68\" y1=\"0\" x2=\"68\" y2=\"20\" style=\"stroke:#45a300;stroke-width:3;\" /><line x1=\"69\" y1=\"0\" x2=\"69\" y2=\"20\" style=\"stroke:#46a300;stroke-width:3;\" /><line x1=\"70\" y1=\"0\" x2=\"70\" y2=\"20\" style=\"stroke:#47a400;stroke-width:3;\" /><line x1=\"71\" y1=\"0\" x2=\"71\" y2=\"20\" style=\"stroke:#48a400;stroke-width:3;\" /><line x1=\"72\" y1=\"0\" x2=\"72\" y2=\"20\" style=\"stroke:#49a500;stroke-width:3;\" /><line x1=\"73\" y1=\"0\" x2=\"73\" y2=\"20\" style=\"stroke:#4aa500;stroke-width:3;\" /><line x1=\"74\" y1=\"0\" x2=\"74\" y2=\"20\" style=\"stroke:#4ba600;stroke-width:3;\" /><line x1=\"75\" y1=\"0\" x2=\"75\" y2=\"20\" style=\"stroke:#4ca600;stroke-width:3;\" /><line x1=\"76\" y1=\"0\" x2=\"76\" y2=\"20\" style=\"stroke:#4da700;stroke-width:3;\" /><line x1=\"77\" y1=\"0\" x2=\"77\" y2=\"20\" style=\"stroke:#4fa700;stroke-width:3;\" /><line x1=\"78\" y1=\"0\" x2=\"78\" y2=\"20\" style=\"stroke:#50a800;stroke-width:3;\" /><line x1=\"79\" y1=\"0\" x2=\"79\" y2=\"20\" style=\"stroke:#51a800;stroke-width:3;\" /><line x1=\"80\" y1=\"0\" x2=\"80\" y2=\"20\" style=\"stroke:#52a900;stroke-width:3;\" /><line x1=\"81\" y1=\"0\" x2=\"81\" y2=\"20\" style=\"stroke:#53a900;stroke-width:3;\" /><line x1=\"82\" y1=\"0\" x2=\"82\" y2=\"20\" style=\"stroke:#54aa00;stroke-width:3;\" /><line x1=\"83\" y1=\"0\" x2=\"83\" y2=\"20\" style=\"stroke:#55aa00;stroke-width:3;\" /><line x1=\"84\" y1=\"0\" x2=\"84\" y2=\"20\" style=\"stroke:#56ab00;stroke-width:3;\" /><line x1=\"85\" y1=\"0\" x2=\"85\" y2=\"20\" style=\"stroke:#57ab00;stroke-width:3;\" /><line x1=\"86\" y1=\"0\" x2=\"86\" y2=\"20\" style=\"stroke:#58ac00;stroke-width:3;\" /><line x1=\"87\" y1=\"0\" x2=\"87\" y2=\"20\" style=\"stroke:#59ac00;stroke-width:3;\" /><line x1=\"88\" y1=\"0\" x2=\"88\" y2=\"20\" style=\"stroke:#5aad00;stroke-width:3;\" /><line x1=\"89\" y1=\"0\" x2=\"89\" y2=\"20\" style=\"stroke:#5bad00;stroke-width:3;\" /><line x1=\"90\" y1=\"0\" x2=\"90\" y2=\"20\" style=\"stroke:#5cae00;stroke-width:3;\" /><line x1=\"91\" y1=\"0\" x2=\"91\" y2=\"20\" style=\"stroke:#5daf00;stroke-width:3;\" /><line x1=\"92\" y1=\"0\" x2=\"92\" y2=\"20\" style=\"stroke:#5eaf00;stroke-width:3;\" /><line x1=\"93\" y1=\"0\" x2=\"93\" y2=\"20\" style=\"stroke:#5fb000;stroke-width:3;\" /><line x1=\"94\" y1=\"0\" x2=\"94\" y2=\"20\" style=\"stroke:#60b000;stroke-width:3;\" /><line x1=\"95\" y1=\"0\" x2=\"95\" y2=\"20\" style=\"stroke:#61b100;stroke-width:3;\" /><line x1=\"96\" y1=\"0\" x2=\"96\" y2=\"20\" style=\"stroke:#62b100;stroke-width:3;\" /><line x1=\"97\" y1=\"0\" x2=\"97\" y2=\"20\" style=\"stroke:#63b200;stroke-width:3;\" /><line x1=\"98\" y1=\"0\" x2=\"98\" y2=\"20\" style=\"stroke:#64b200;stroke-width:3;\" /><line x1=\"99\" y1=\"0\" x2=\"99\" y2=\"20\" style=\"stroke:#65b300;stroke-width:3;\" /><line x1=\"100\" y1=\"0\" x2=\"100\" y2=\"20\" style=\"stroke:#66b300;stroke-width:3;\" /><line x1=\"101\" y1=\"0\" x2=\"101\" y2=\"20\" style=\"stroke:#67b400;stroke-width:3;\" /><line x1=\"102\" y1=\"0\" x2=\"102\" y2=\"20\" style=\"stroke:#68b400;stroke-width:3;\" /><line x1=\"103\" y1=\"0\" x2=\"103\" y2=\"20\" style=\"stroke:#69b500;stroke-width:3;\" /><line x1=\"104\" y1=\"0\" x2=\"104\" y2=\"20\" style=\"stroke:#6ab500;stroke-width:3;\" /><line x1=\"105\" y1=\"0\" x2=\"105\" y2=\"20\" style=\"stroke:#6bb600;stroke-width:3;\" /><line x1=\"106\" y1=\"0\" x2=\"106\" y2=\"20\" style=\"stroke:#6cb600;stroke-width:3;\" /><line x1=\"107\" y1=\"0\" x2=\"107\" y2=\"20\" style=\"stroke:#6db700;stroke-width:3;\" /><line x1=\"108\" y1=\"0\" x2=\"108\" y2=\"20\" style=\"stroke:#6eb700;stroke-width:3;\" /><line x1=\"109\" y1=\"0\" x2=\"109\" y2=\"20\" style=\"stroke:#6fb800;stroke-width:3;\" /><line x1=\"110\" y1=\"0\" x2=\"110\" y2=\"20\" style=\"stroke:#70b800;stroke-width:3;\" /><line x1=\"111\" y1=\"0\" x2=\"111\" y2=\"20\" style=\"stroke:#71b900;stroke-width:3;\" /><line x1=\"112\" y1=\"0\" x2=\"112\" y2=\"20\" style=\"stroke:#72b900;stroke-width:3;\" /><line x1=\"113\" y1=\"0\" x2=\"113\" y2=\"20\" style=\"stroke:#73ba00;stroke-width:3;\" /><line x1=\"114\" y1=\"0\" x2=\"114\" y2=\"20\" style=\"stroke:#74ba00;stroke-width:3;\" /><line x1=\"115\" y1=\"0\" x2=\"115\" y2=\"20\" style=\"stroke:#75bb00;stroke-width:3;\" /><line x1=\"116\" y1=\"0\" x2=\"116\" y2=\"20\" style=\"stroke:#77bb00;stroke-width:3;\" /><line x1=\"117\" y1=\"0\" x2=\"117\" y2=\"20\" style=\"stroke:#78bc00;stroke-width:3;\" /><line x1=\"118\" y1=\"0\" x2=\"118\" y2=\"20\" style=\"stroke:#79bc00;stroke-width:3;\" /><line x1=\"119\" y1=\"0\" x2=\"119\" y2=\"20\" style=\"stroke:#7abd00;stroke-width:3;\" /><line x1=\"120\" y1=\"0\" x2=\"120\" y2=\"20\" style=\"stroke:#7bbd00;stroke-width:3;\" /><line x1=\"121\" y1=\"0\" x2=\"121\" y2=\"20\" style=\"stroke:#7cbe00;stroke-width:3;\" /><line x1=\"122\" y1=\"0\" x2=\"122\" y2=\"20\" style=\"stroke:#7dbe00;stroke-width:3;\" /><line x1=\"123\" y1=\"0\" x2=\"123\" y2=\"20\" style=\"stroke:#7ebf00;stroke-width:3;\" /><line x1=\"124\" y1=\"0\" x2=\"124\" y2=\"20\" style=\"stroke:#7fbf00;stroke-width:3;\" /><line x1=\"125\" y1=\"0\" x2=\"125\" y2=\"20\" style=\"stroke:#80c000;stroke-width:3;\" /><line x1=\"126\" y1=\"0\" x2=\"126\" y2=\"20\" style=\"stroke:#81c000;stroke-width:3;\" /><line x1=\"127\" y1=\"0\" x2=\"127\" y2=\"20\" style=\"stroke:#82c100;stroke-width:3;\" /><line x1=\"128\" y1=\"0\" x2=\"128\" y2=\"20\" style=\"stroke:#83c100;stroke-width:3;\" /><line x1=\"129\" y1=\"0\" x2=\"129\" y2=\"20\" style=\"stroke:#84c200;stroke-width:3;\" /><line x1=\"130\" y1=\"0\" x2=\"130\" y2=\"20\" style=\"stroke:#85c200;stroke-width:3;\" /><line x1=\"131\" y1=\"0\" x2=\"131\" y2=\"20\" style=\"stroke:#86c300;stroke-width:3;\" /><line x1=\"132\" y1=\"0\" x2=\"132\" y2=\"20\" style=\"stroke:#87c300;stroke-width:3;\" /><line x1=\"133\" y1=\"0\" x2=\"133\" y2=\"20\" style=\"stroke:#88c400;stroke-width:3;\" /><line x1=\"134\" y1=\"0\" x2=\"134\" y2=\"20\" style=\"stroke:#89c400;stroke-width:3;\" /><line x1=\"135\" y1=\"0\" x2=\"135\" y2=\"20\" style=\"stroke:#8ac500;stroke-width:3;\" /><line x1=\"136\" y1=\"0\" x2=\"136\" y2=\"20\" style=\"stroke:#8bc500;stroke-width:3;\" /><line x1=\"137\" y1=\"0\" x2=\"137\" y2=\"20\" style=\"stroke:#8cc600;stroke-width:3;\" /><line x1=\"138\" y1=\"0\" x2=\"138\" y2=\"20\" style=\"stroke:#8dc700;stroke-width:3;\" /><line x1=\"139\" y1=\"0\" x2=\"139\" y2=\"20\" style=\"stroke:#8ec700;stroke-width:3;\" /><line x1=\"140\" y1=\"0\" x2=\"140\" y2=\"20\" style=\"stroke:#8fc800;stroke-width:3;\" /><line x1=\"141\" y1=\"0\" x2=\"141\" y2=\"20\" style=\"stroke:#90c800;stroke-width:3;\" /><line x1=\"142\" y1=\"0\" x2=\"142\" y2=\"20\" style=\"stroke:#91c900;stroke-width:3;\" /><line x1=\"143\" y1=\"0\" x2=\"143\" y2=\"20\" style=\"stroke:#92c900;stroke-width:3;\" /><line x1=\"144\" y1=\"0\" x2=\"144\" y2=\"20\" style=\"stroke:#93ca00;stroke-width:3;\" /><line x1=\"145\" y1=\"0\" x2=\"145\" y2=\"20\" style=\"stroke:#94ca00;stroke-width:3;\" /><line x1=\"146\" y1=\"0\" x2=\"146\" y2=\"20\" style=\"stroke:#95cb00;stroke-width:3;\" /><line x1=\"147\" y1=\"0\" x2=\"147\" y2=\"20\" style=\"stroke:#96cb00;stroke-width:3;\" /><line x1=\"148\" y1=\"0\" x2=\"148\" y2=\"20\" style=\"stroke:#97cc00;stroke-width:3;\" /><line x1=\"149\" y1=\"0\" x2=\"149\" y2=\"20\" style=\"stroke:#98cc00;stroke-width:3;\" /><line x1=\"150\" y1=\"0\" x2=\"150\" y2=\"20\" style=\"stroke:#99cd00;stroke-width:3;\" /><line x1=\"151\" y1=\"0\" x2=\"151\" y2=\"20\" style=\"stroke:#9acd00;stroke-width:3;\" /><line x1=\"152\" y1=\"0\" x2=\"152\" y2=\"20\" style=\"stroke:#9bce00;stroke-width:3;\" /><line x1=\"153\" y1=\"0\" x2=\"153\" y2=\"20\" style=\"stroke:#9cce00;stroke-width:3;\" /><line x1=\"154\" y1=\"0\" x2=\"154\" y2=\"20\" style=\"stroke:#9ecf00;stroke-width:3;\" /><line x1=\"155\" y1=\"0\" x2=\"155\" y2=\"20\" style=\"stroke:#9fcf00;stroke-width:3;\" /><line x1=\"156\" y1=\"0\" x2=\"156\" y2=\"20\" style=\"stroke:#a0d000;stroke-width:3;\" /><line x1=\"157\" y1=\"0\" x2=\"157\" y2=\"20\" style=\"stroke:#a1d000;stroke-width:3;\" /><line x1=\"158\" y1=\"0\" x2=\"158\" y2=\"20\" style=\"stroke:#a2d100;stroke-width:3;\" /><line x1=\"159\" y1=\"0\" x2=\"159\" y2=\"20\" style=\"stroke:#a3d100;stroke-width:3;\" /><line x1=\"160\" y1=\"0\" x2=\"160\" y2=\"20\" style=\"stroke:#a4d200;stroke-width:3;\" /><line x1=\"161\" y1=\"0\" x2=\"161\" y2=\"20\" style=\"stroke:#a5d200;stroke-width:3;\" /><line x1=\"162\" y1=\"0\" x2=\"162\" y2=\"20\" style=\"stroke:#a6d300;stroke-width:3;\" /><line x1=\"163\" y1=\"0\" x2=\"163\" y2=\"20\" style=\"stroke:#a7d300;stroke-width:3;\" /><line x1=\"164\" y1=\"0\" x2=\"164\" y2=\"20\" style=\"stroke:#a8d400;stroke-width:3;\" /><line x1=\"165\" y1=\"0\" x2=\"165\" y2=\"20\" style=\"stroke:#a9d400;stroke-width:3;\" /><line x1=\"166\" y1=\"0\" x2=\"166\" y2=\"20\" style=\"stroke:#aad500;stroke-width:3;\" /><line x1=\"167\" y1=\"0\" x2=\"167\" y2=\"20\" style=\"stroke:#abd500;stroke-width:3;\" /><line x1=\"168\" y1=\"0\" x2=\"168\" y2=\"20\" style=\"stroke:#acd600;stroke-width:3;\" /><line x1=\"169\" y1=\"0\" x2=\"169\" y2=\"20\" style=\"stroke:#add600;stroke-width:3;\" /><line x1=\"170\" y1=\"0\" x2=\"170\" y2=\"20\" style=\"stroke:#aed700;stroke-width:3;\" /><line x1=\"171\" y1=\"0\" x2=\"171\" y2=\"20\" style=\"stroke:#afd700;stroke-width:3;\" /><line x1=\"172\" y1=\"0\" x2=\"172\" y2=\"20\" style=\"stroke:#b0d800;stroke-width:3;\" /><line x1=\"173\" y1=\"0\" x2=\"173\" y2=\"20\" style=\"stroke:#b1d800;stroke-width:3;\" /><line x1=\"174\" y1=\"0\" x2=\"174\" y2=\"20\" style=\"stroke:#b2d900;stroke-width:3;\" /><line x1=\"175\" y1=\"0\" x2=\"175\" y2=\"20\" style=\"stroke:#b3d900;stroke-width:3;\" /><line x1=\"176\" y1=\"0\" x2=\"176\" y2=\"20\" style=\"stroke:#b4da00;stroke-width:3;\" /><line x1=\"177\" y1=\"0\" x2=\"177\" y2=\"20\" style=\"stroke:#b5da00;stroke-width:3;\" /><line x1=\"178\" y1=\"0\" x2=\"178\" y2=\"20\" style=\"stroke:#b6db00;stroke-width:3;\" /><line x1=\"179\" y1=\"0\" x2=\"179\" y2=\"20\" style=\"stroke:#b7db00;stroke-width:3;\" /><line x1=\"180\" y1=\"0\" x2=\"180\" y2=\"20\" style=\"stroke:#b8dc00;stroke-width:3;\" /><line x1=\"181\" y1=\"0\" x2=\"181\" y2=\"20\" style=\"stroke:#b9dc00;stroke-width:3;\" /><line x1=\"182\" y1=\"0\" x2=\"182\" y2=\"20\" style=\"stroke:#badd00;stroke-width:3;\" /><line x1=\"183\" y1=\"0\" x2=\"183\" y2=\"20\" style=\"stroke:#bbde00;stroke-width:3;\" /><line x1=\"184\" y1=\"0\" x2=\"184\" y2=\"20\" style=\"stroke:#bcde00;stroke-width:3;\" /><line x1=\"185\" y1=\"0\" x2=\"185\" y2=\"20\" style=\"stroke:#bddf00;stroke-width:3;\" /><line x1=\"186\" y1=\"0\" x2=\"186\" y2=\"20\" style=\"stroke:#bedf00;stroke-width:3;\" /><line x1=\"187\" y1=\"0\" x2=\"187\" y2=\"20\" style=\"stroke:#bfe000;stroke-width:3;\" /><line x1=\"188\" y1=\"0\" x2=\"188\" y2=\"20\" style=\"stroke:#c0e000;stroke-width:3;\" /><line x1=\"189\" y1=\"0\" x2=\"189\" y2=\"20\" style=\"stroke:#c1e100;stroke-width:3;\" /><line x1=\"190\" y1=\"0\" x2=\"190\" y2=\"20\" style=\"stroke:#c2e100;stroke-width:3;\" /><line x1=\"191\" y1=\"0\" x2=\"191\" y2=\"20\" style=\"stroke:#c3e200;stroke-width:3;\" /><line x1=\"192\" y1=\"0\" x2=\"192\" y2=\"20\" style=\"stroke:#c5e200;stroke-width:3;\" /><line x1=\"193\" y1=\"0\" x2=\"193\" y2=\"20\" style=\"stroke:#c6e300;stroke-width:3;\" /><line x1=\"194\" y1=\"0\" x2=\"194\" y2=\"20\" style=\"stroke:#c7e300;stroke-width:3;\" /><line x1=\"195\" y1=\"0\" x2=\"195\" y2=\"20\" style=\"stroke:#c8e400;stroke-width:3;\" /><line x1=\"196\" y1=\"0\" x2=\"196\" y2=\"20\" style=\"stroke:#c9e400;stroke-width:3;\" /><line x1=\"197\" y1=\"0\" x2=\"197\" y2=\"20\" style=\"stroke:#cae500;stroke-width:3;\" /><line x1=\"198\" y1=\"0\" x2=\"198\" y2=\"20\" style=\"stroke:#cbe500;stroke-width:3;\" /><line x1=\"199\" y1=\"0\" x2=\"199\" y2=\"20\" style=\"stroke:#cce600;stroke-width:3;\" /><line x1=\"200\" y1=\"0\" x2=\"200\" y2=\"20\" style=\"stroke:#cde600;stroke-width:3;\" /><line x1=\"201\" y1=\"0\" x2=\"201\" y2=\"20\" style=\"stroke:#cee700;stroke-width:3;\" /><line x1=\"202\" y1=\"0\" x2=\"202\" y2=\"20\" style=\"stroke:#cfe700;stroke-width:3;\" /><line x1=\"203\" y1=\"0\" x2=\"203\" y2=\"20\" style=\"stroke:#d0e800;stroke-width:3;\" /><line x1=\"204\" y1=\"0\" x2=\"204\" y2=\"20\" style=\"stroke:#d1e800;stroke-width:3;\" /><line x1=\"205\" y1=\"0\" x2=\"205\" y2=\"20\" style=\"stroke:#d2e900;stroke-width:3;\" /><line x1=\"206\" y1=\"0\" x2=\"206\" y2=\"20\" style=\"stroke:#d3e900;stroke-width:3;\" /><line x1=\"207\" y1=\"0\" x2=\"207\" y2=\"20\" style=\"stroke:#d4ea00;stroke-width:3;\" /><line x1=\"208\" y1=\"0\" x2=\"208\" y2=\"20\" style=\"stroke:#d5ea00;stroke-width:3;\" /><line x1=\"209\" y1=\"0\" x2=\"209\" y2=\"20\" style=\"stroke:#d6eb00;stroke-width:3;\" /><line x1=\"210\" y1=\"0\" x2=\"210\" y2=\"20\" style=\"stroke:#d7eb00;stroke-width:3;\" /><line x1=\"211\" y1=\"0\" x2=\"211\" y2=\"20\" style=\"stroke:#d8ec00;stroke-width:3;\" /><line x1=\"212\" y1=\"0\" x2=\"212\" y2=\"20\" style=\"stroke:#d9ec00;stroke-width:3;\" /><line x1=\"213\" y1=\"0\" x2=\"213\" y2=\"20\" style=\"stroke:#daed00;stroke-width:3;\" /><line x1=\"214\" y1=\"0\" x2=\"214\" y2=\"20\" style=\"stroke:#dbed00;stroke-width:3;\" /><line x1=\"215\" y1=\"0\" x2=\"215\" y2=\"20\" style=\"stroke:#dcee00;stroke-width:3;\" /><line x1=\"216\" y1=\"0\" x2=\"216\" y2=\"20\" style=\"stroke:#ddee00;stroke-width:3;\" /><line x1=\"217\" y1=\"0\" x2=\"217\" y2=\"20\" style=\"stroke:#deef00;stroke-width:3;\" /><line x1=\"218\" y1=\"0\" x2=\"218\" y2=\"20\" style=\"stroke:#dfef00;stroke-width:3;\" /><line x1=\"219\" y1=\"0\" x2=\"219\" y2=\"20\" style=\"stroke:#e0f000;stroke-width:3;\" /><line x1=\"220\" y1=\"0\" x2=\"220\" y2=\"20\" style=\"stroke:#e1f000;stroke-width:3;\" /><line x1=\"221\" y1=\"0\" x2=\"221\" y2=\"20\" style=\"stroke:#e2f100;stroke-width:3;\" /><line x1=\"222\" y1=\"0\" x2=\"222\" y2=\"20\" style=\"stroke:#e3f100;stroke-width:3;\" /><line x1=\"223\" y1=\"0\" x2=\"223\" y2=\"20\" style=\"stroke:#e4f200;stroke-width:3;\" /><line x1=\"224\" y1=\"0\" x2=\"224\" y2=\"20\" style=\"stroke:#e5f200;stroke-width:3;\" /><line x1=\"225\" y1=\"0\" x2=\"225\" y2=\"20\" style=\"stroke:#e6f300;stroke-width:3;\" /><line x1=\"226\" y1=\"0\" x2=\"226\" y2=\"20\" style=\"stroke:#e7f300;stroke-width:3;\" /><line x1=\"227\" y1=\"0\" x2=\"227\" y2=\"20\" style=\"stroke:#e8f400;stroke-width:3;\" /><line x1=\"228\" y1=\"0\" x2=\"228\" y2=\"20\" style=\"stroke:#e9f500;stroke-width:3;\" /><line x1=\"229\" y1=\"0\" x2=\"229\" y2=\"20\" style=\"stroke:#eaf500;stroke-width:3;\" /><line x1=\"230\" y1=\"0\" x2=\"230\" y2=\"20\" style=\"stroke:#ebf600;stroke-width:3;\" /><line x1=\"231\" y1=\"0\" x2=\"231\" y2=\"20\" style=\"stroke:#edf600;stroke-width:3;\" /><line x1=\"232\" y1=\"0\" x2=\"232\" y2=\"20\" style=\"stroke:#eef700;stroke-width:3;\" /><line x1=\"233\" y1=\"0\" x2=\"233\" y2=\"20\" style=\"stroke:#eff700;stroke-width:3;\" /><line x1=\"234\" y1=\"0\" x2=\"234\" y2=\"20\" style=\"stroke:#f0f800;stroke-width:3;\" /><line x1=\"235\" y1=\"0\" x2=\"235\" y2=\"20\" style=\"stroke:#f1f800;stroke-width:3;\" /><line x1=\"236\" y1=\"0\" x2=\"236\" y2=\"20\" style=\"stroke:#f2f900;stroke-width:3;\" /><line x1=\"237\" y1=\"0\" x2=\"237\" y2=\"20\" style=\"stroke:#f3f900;stroke-width:3;\" /><line x1=\"238\" y1=\"0\" x2=\"238\" y2=\"20\" style=\"stroke:#f4fa00;stroke-width:3;\" /><line x1=\"239\" y1=\"0\" x2=\"239\" y2=\"20\" style=\"stroke:#f5fa00;stroke-width:3;\" /><line x1=\"240\" y1=\"0\" x2=\"240\" y2=\"20\" style=\"stroke:#f6fb00;stroke-width:3;\" /><line x1=\"241\" y1=\"0\" x2=\"241\" y2=\"20\" style=\"stroke:#f7fb00;stroke-width:3;\" /><line x1=\"242\" y1=\"0\" x2=\"242\" y2=\"20\" style=\"stroke:#f8fc00;stroke-width:3;\" /><line x1=\"243\" y1=\"0\" x2=\"243\" y2=\"20\" style=\"stroke:#f9fc00;stroke-width:3;\" /><line x1=\"244\" y1=\"0\" x2=\"244\" y2=\"20\" style=\"stroke:#fafd00;stroke-width:3;\" /><line x1=\"245\" y1=\"0\" x2=\"245\" y2=\"20\" style=\"stroke:#fbfd00;stroke-width:3;\" /><line x1=\"246\" y1=\"0\" x2=\"246\" y2=\"20\" style=\"stroke:#fcfe00;stroke-width:3;\" /><line x1=\"247\" y1=\"0\" x2=\"247\" y2=\"20\" style=\"stroke:#fdfe00;stroke-width:3;\" /><line x1=\"248\" y1=\"0\" x2=\"248\" y2=\"20\" style=\"stroke:#feff00;stroke-width:3;\" /><line x1=\"249\" y1=\"0\" x2=\"249\" y2=\"20\" style=\"stroke:#ffff00;stroke-width:3;\" /><line x1=\"250\" y1=\"0\" x2=\"250\" y2=\"20\" style=\"stroke:#ffff00;stroke-width:3;\" /><line x1=\"251\" y1=\"0\" x2=\"251\" y2=\"20\" style=\"stroke:#fffe00;stroke-width:3;\" /><line x1=\"252\" y1=\"0\" x2=\"252\" y2=\"20\" style=\"stroke:#fffd00;stroke-width:3;\" /><line x1=\"253\" y1=\"0\" x2=\"253\" y2=\"20\" style=\"stroke:#fffc00;stroke-width:3;\" /><line x1=\"254\" y1=\"0\" x2=\"254\" y2=\"20\" style=\"stroke:#fffb00;stroke-width:3;\" /><line x1=\"255\" y1=\"0\" x2=\"255\" y2=\"20\" style=\"stroke:#fffa00;stroke-width:3;\" /><line x1=\"256\" y1=\"0\" x2=\"256\" y2=\"20\" style=\"stroke:#fff900;stroke-width:3;\" /><line x1=\"257\" y1=\"0\" x2=\"257\" y2=\"20\" style=\"stroke:#fff800;stroke-width:3;\" /><line x1=\"258\" y1=\"0\" x2=\"258\" y2=\"20\" style=\"stroke:#fff700;stroke-width:3;\" /><line x1=\"259\" y1=\"0\" x2=\"259\" y2=\"20\" style=\"stroke:#fff600;stroke-width:3;\" /><line x1=\"260\" y1=\"0\" x2=\"260\" y2=\"20\" style=\"stroke:#fff500;stroke-width:3;\" /><line x1=\"261\" y1=\"0\" x2=\"261\" y2=\"20\" style=\"stroke:#fff400;stroke-width:3;\" /><line x1=\"262\" y1=\"0\" x2=\"262\" y2=\"20\" style=\"stroke:#fff300;stroke-width:3;\" /><line x1=\"263\" y1=\"0\" x2=\"263\" y2=\"20\" style=\"stroke:#fff200;stroke-width:3;\" /><line x1=\"264\" y1=\"0\" x2=\"264\" y2=\"20\" style=\"stroke:#fff100;stroke-width:3;\" /><line x1=\"265\" y1=\"0\" x2=\"265\" y2=\"20\" style=\"stroke:#fff000;stroke-width:3;\" /><line x1=\"266\" y1=\"0\" x2=\"266\" y2=\"20\" style=\"stroke:#ffef00;stroke-width:3;\" /><line x1=\"267\" y1=\"0\" x2=\"267\" y2=\"20\" style=\"stroke:#ffee00;stroke-width:3;\" /><line x1=\"268\" y1=\"0\" x2=\"268\" y2=\"20\" style=\"stroke:#ffed00;stroke-width:3;\" /><line x1=\"269\" y1=\"0\" x2=\"269\" y2=\"20\" style=\"stroke:#ffeb00;stroke-width:3;\" /><line x1=\"270\" y1=\"0\" x2=\"270\" y2=\"20\" style=\"stroke:#ffea00;stroke-width:3;\" /><line x1=\"271\" y1=\"0\" x2=\"271\" y2=\"20\" style=\"stroke:#ffe900;stroke-width:3;\" /><line x1=\"272\" y1=\"0\" x2=\"272\" y2=\"20\" style=\"stroke:#ffe800;stroke-width:3;\" /><line x1=\"273\" y1=\"0\" x2=\"273\" y2=\"20\" style=\"stroke:#ffe700;stroke-width:3;\" /><line x1=\"274\" y1=\"0\" x2=\"274\" y2=\"20\" style=\"stroke:#ffe600;stroke-width:3;\" /><line x1=\"275\" y1=\"0\" x2=\"275\" y2=\"20\" style=\"stroke:#ffe500;stroke-width:3;\" /><line x1=\"276\" y1=\"0\" x2=\"276\" y2=\"20\" style=\"stroke:#ffe400;stroke-width:3;\" /><line x1=\"277\" y1=\"0\" x2=\"277\" y2=\"20\" style=\"stroke:#ffe300;stroke-width:3;\" /><line x1=\"278\" y1=\"0\" x2=\"278\" y2=\"20\" style=\"stroke:#ffe200;stroke-width:3;\" /><line x1=\"279\" y1=\"0\" x2=\"279\" y2=\"20\" style=\"stroke:#ffe100;stroke-width:3;\" /><line x1=\"280\" y1=\"0\" x2=\"280\" y2=\"20\" style=\"stroke:#ffe000;stroke-width:3;\" /><line x1=\"281\" y1=\"0\" x2=\"281\" y2=\"20\" style=\"stroke:#ffdf00;stroke-width:3;\" /><line x1=\"282\" y1=\"0\" x2=\"282\" y2=\"20\" style=\"stroke:#ffde00;stroke-width:3;\" /><line x1=\"283\" y1=\"0\" x2=\"283\" y2=\"20\" style=\"stroke:#ffdd00;stroke-width:3;\" /><line x1=\"284\" y1=\"0\" x2=\"284\" y2=\"20\" style=\"stroke:#ffdc00;stroke-width:3;\" /><line x1=\"285\" y1=\"0\" x2=\"285\" y2=\"20\" style=\"stroke:#ffdb00;stroke-width:3;\" /><line x1=\"286\" y1=\"0\" x2=\"286\" y2=\"20\" style=\"stroke:#ffda00;stroke-width:3;\" /><line x1=\"287\" y1=\"0\" x2=\"287\" y2=\"20\" style=\"stroke:#ffd900;stroke-width:3;\" /><line x1=\"288\" y1=\"0\" x2=\"288\" y2=\"20\" style=\"stroke:#ffd800;stroke-width:3;\" /><line x1=\"289\" y1=\"0\" x2=\"289\" y2=\"20\" style=\"stroke:#ffd700;stroke-width:3;\" /><line x1=\"290\" y1=\"0\" x2=\"290\" y2=\"20\" style=\"stroke:#ffd600;stroke-width:3;\" /><line x1=\"291\" y1=\"0\" x2=\"291\" y2=\"20\" style=\"stroke:#ffd500;stroke-width:3;\" /><line x1=\"292\" y1=\"0\" x2=\"292\" y2=\"20\" style=\"stroke:#ffd400;stroke-width:3;\" /><line x1=\"293\" y1=\"0\" x2=\"293\" y2=\"20\" style=\"stroke:#ffd300;stroke-width:3;\" /><line x1=\"294\" y1=\"0\" x2=\"294\" y2=\"20\" style=\"stroke:#ffd200;stroke-width:3;\" /><line x1=\"295\" y1=\"0\" x2=\"295\" y2=\"20\" style=\"stroke:#ffd100;stroke-width:3;\" /><line x1=\"296\" y1=\"0\" x2=\"296\" y2=\"20\" style=\"stroke:#ffd000;stroke-width:3;\" /><line x1=\"297\" y1=\"0\" x2=\"297\" y2=\"20\" style=\"stroke:#ffcf00;stroke-width:3;\" /><line x1=\"298\" y1=\"0\" x2=\"298\" y2=\"20\" style=\"stroke:#ffce00;stroke-width:3;\" /><line x1=\"299\" y1=\"0\" x2=\"299\" y2=\"20\" style=\"stroke:#ffcd00;stroke-width:3;\" /><line x1=\"300\" y1=\"0\" x2=\"300\" y2=\"20\" style=\"stroke:#ffcc00;stroke-width:3;\" /><line x1=\"301\" y1=\"0\" x2=\"301\" y2=\"20\" style=\"stroke:#ffcb00;stroke-width:3;\" /><line x1=\"302\" y1=\"0\" x2=\"302\" y2=\"20\" style=\"stroke:#ffca00;stroke-width:3;\" /><line x1=\"303\" y1=\"0\" x2=\"303\" y2=\"20\" style=\"stroke:#ffc900;stroke-width:3;\" /><line x1=\"304\" y1=\"0\" x2=\"304\" y2=\"20\" style=\"stroke:#ffc800;stroke-width:3;\" /><line x1=\"305\" y1=\"0\" x2=\"305\" y2=\"20\" style=\"stroke:#ffc700;stroke-width:3;\" /><line x1=\"306\" y1=\"0\" x2=\"306\" y2=\"20\" style=\"stroke:#ffc600;stroke-width:3;\" /><line x1=\"307\" y1=\"0\" x2=\"307\" y2=\"20\" style=\"stroke:#ffc500;stroke-width:3;\" /><line x1=\"308\" y1=\"0\" x2=\"308\" y2=\"20\" style=\"stroke:#ffc300;stroke-width:3;\" /><line x1=\"309\" y1=\"0\" x2=\"309\" y2=\"20\" style=\"stroke:#ffc200;stroke-width:3;\" /><line x1=\"310\" y1=\"0\" x2=\"310\" y2=\"20\" style=\"stroke:#ffc100;stroke-width:3;\" /><line x1=\"311\" y1=\"0\" x2=\"311\" y2=\"20\" style=\"stroke:#ffc000;stroke-width:3;\" /><line x1=\"312\" y1=\"0\" x2=\"312\" y2=\"20\" style=\"stroke:#ffbf00;stroke-width:3;\" /><line x1=\"313\" y1=\"0\" x2=\"313\" y2=\"20\" style=\"stroke:#ffbe00;stroke-width:3;\" /><line x1=\"314\" y1=\"0\" x2=\"314\" y2=\"20\" style=\"stroke:#ffbd00;stroke-width:3;\" /><line x1=\"315\" y1=\"0\" x2=\"315\" y2=\"20\" style=\"stroke:#ffbc00;stroke-width:3;\" /><line x1=\"316\" y1=\"0\" x2=\"316\" y2=\"20\" style=\"stroke:#ffbb00;stroke-width:3;\" /><line x1=\"317\" y1=\"0\" x2=\"317\" y2=\"20\" style=\"stroke:#ffba00;stroke-width:3;\" /><line x1=\"318\" y1=\"0\" x2=\"318\" y2=\"20\" style=\"stroke:#ffb900;stroke-width:3;\" /><line x1=\"319\" y1=\"0\" x2=\"319\" y2=\"20\" style=\"stroke:#ffb800;stroke-width:3;\" /><line x1=\"320\" y1=\"0\" x2=\"320\" y2=\"20\" style=\"stroke:#ffb700;stroke-width:3;\" /><line x1=\"321\" y1=\"0\" x2=\"321\" y2=\"20\" style=\"stroke:#ffb600;stroke-width:3;\" /><line x1=\"322\" y1=\"0\" x2=\"322\" y2=\"20\" style=\"stroke:#ffb500;stroke-width:3;\" /><line x1=\"323\" y1=\"0\" x2=\"323\" y2=\"20\" style=\"stroke:#ffb400;stroke-width:3;\" /><line x1=\"324\" y1=\"0\" x2=\"324\" y2=\"20\" style=\"stroke:#ffb300;stroke-width:3;\" /><line x1=\"325\" y1=\"0\" x2=\"325\" y2=\"20\" style=\"stroke:#ffb200;stroke-width:3;\" /><line x1=\"326\" y1=\"0\" x2=\"326\" y2=\"20\" style=\"stroke:#ffb100;stroke-width:3;\" /><line x1=\"327\" y1=\"0\" x2=\"327\" y2=\"20\" style=\"stroke:#ffb000;stroke-width:3;\" /><line x1=\"328\" y1=\"0\" x2=\"328\" y2=\"20\" style=\"stroke:#ffaf00;stroke-width:3;\" /><line x1=\"329\" y1=\"0\" x2=\"329\" y2=\"20\" style=\"stroke:#ffae00;stroke-width:3;\" /><line x1=\"330\" y1=\"0\" x2=\"330\" y2=\"20\" style=\"stroke:#ffad00;stroke-width:3;\" /><line x1=\"331\" y1=\"0\" x2=\"331\" y2=\"20\" style=\"stroke:#ffac00;stroke-width:3;\" /><line x1=\"332\" y1=\"0\" x2=\"332\" y2=\"20\" style=\"stroke:#ffab00;stroke-width:3;\" /><line x1=\"333\" y1=\"0\" x2=\"333\" y2=\"20\" style=\"stroke:#ffaa00;stroke-width:3;\" /><line x1=\"334\" y1=\"0\" x2=\"334\" y2=\"20\" style=\"stroke:#ffa900;stroke-width:3;\" /><line x1=\"335\" y1=\"0\" x2=\"335\" y2=\"20\" style=\"stroke:#ffa800;stroke-width:3;\" /><line x1=\"336\" y1=\"0\" x2=\"336\" y2=\"20\" style=\"stroke:#ffa700;stroke-width:3;\" /><line x1=\"337\" y1=\"0\" x2=\"337\" y2=\"20\" style=\"stroke:#ffa600;stroke-width:3;\" /><line x1=\"338\" y1=\"0\" x2=\"338\" y2=\"20\" style=\"stroke:#ffa500;stroke-width:3;\" /><line x1=\"339\" y1=\"0\" x2=\"339\" y2=\"20\" style=\"stroke:#ffa400;stroke-width:3;\" /><line x1=\"340\" y1=\"0\" x2=\"340\" y2=\"20\" style=\"stroke:#ffa300;stroke-width:3;\" /><line x1=\"341\" y1=\"0\" x2=\"341\" y2=\"20\" style=\"stroke:#ffa200;stroke-width:3;\" /><line x1=\"342\" y1=\"0\" x2=\"342\" y2=\"20\" style=\"stroke:#ffa100;stroke-width:3;\" /><line x1=\"343\" y1=\"0\" x2=\"343\" y2=\"20\" style=\"stroke:#ffa000;stroke-width:3;\" /><line x1=\"344\" y1=\"0\" x2=\"344\" y2=\"20\" style=\"stroke:#ff9f00;stroke-width:3;\" /><line x1=\"345\" y1=\"0\" x2=\"345\" y2=\"20\" style=\"stroke:#ff9e00;stroke-width:3;\" /><line x1=\"346\" y1=\"0\" x2=\"346\" y2=\"20\" style=\"stroke:#ff9c00;stroke-width:3;\" /><line x1=\"347\" y1=\"0\" x2=\"347\" y2=\"20\" style=\"stroke:#ff9b00;stroke-width:3;\" /><line x1=\"348\" y1=\"0\" x2=\"348\" y2=\"20\" style=\"stroke:#ff9a00;stroke-width:3;\" /><line x1=\"349\" y1=\"0\" x2=\"349\" y2=\"20\" style=\"stroke:#ff9900;stroke-width:3;\" /><line x1=\"350\" y1=\"0\" x2=\"350\" y2=\"20\" style=\"stroke:#ff9800;stroke-width:3;\" /><line x1=\"351\" y1=\"0\" x2=\"351\" y2=\"20\" style=\"stroke:#ff9700;stroke-width:3;\" /><line x1=\"352\" y1=\"0\" x2=\"352\" y2=\"20\" style=\"stroke:#ff9600;stroke-width:3;\" /><line x1=\"353\" y1=\"0\" x2=\"353\" y2=\"20\" style=\"stroke:#ff9500;stroke-width:3;\" /><line x1=\"354\" y1=\"0\" x2=\"354\" y2=\"20\" style=\"stroke:#ff9400;stroke-width:3;\" /><line x1=\"355\" y1=\"0\" x2=\"355\" y2=\"20\" style=\"stroke:#ff9300;stroke-width:3;\" /><line x1=\"356\" y1=\"0\" x2=\"356\" y2=\"20\" style=\"stroke:#ff9200;stroke-width:3;\" /><line x1=\"357\" y1=\"0\" x2=\"357\" y2=\"20\" style=\"stroke:#ff9100;stroke-width:3;\" /><line x1=\"358\" y1=\"0\" x2=\"358\" y2=\"20\" style=\"stroke:#ff9000;stroke-width:3;\" /><line x1=\"359\" y1=\"0\" x2=\"359\" y2=\"20\" style=\"stroke:#ff8f00;stroke-width:3;\" /><line x1=\"360\" y1=\"0\" x2=\"360\" y2=\"20\" style=\"stroke:#ff8e00;stroke-width:3;\" /><line x1=\"361\" y1=\"0\" x2=\"361\" y2=\"20\" style=\"stroke:#ff8d00;stroke-width:3;\" /><line x1=\"362\" y1=\"0\" x2=\"362\" y2=\"20\" style=\"stroke:#ff8c00;stroke-width:3;\" /><line x1=\"363\" y1=\"0\" x2=\"363\" y2=\"20\" style=\"stroke:#ff8b00;stroke-width:3;\" /><line x1=\"364\" y1=\"0\" x2=\"364\" y2=\"20\" style=\"stroke:#ff8a00;stroke-width:3;\" /><line x1=\"365\" y1=\"0\" x2=\"365\" y2=\"20\" style=\"stroke:#ff8900;stroke-width:3;\" /><line x1=\"366\" y1=\"0\" x2=\"366\" y2=\"20\" style=\"stroke:#ff8800;stroke-width:3;\" /><line x1=\"367\" y1=\"0\" x2=\"367\" y2=\"20\" style=\"stroke:#ff8700;stroke-width:3;\" /><line x1=\"368\" y1=\"0\" x2=\"368\" y2=\"20\" style=\"stroke:#ff8600;stroke-width:3;\" /><line x1=\"369\" y1=\"0\" x2=\"369\" y2=\"20\" style=\"stroke:#ff8500;stroke-width:3;\" /><line x1=\"370\" y1=\"0\" x2=\"370\" y2=\"20\" style=\"stroke:#ff8400;stroke-width:3;\" /><line x1=\"371\" y1=\"0\" x2=\"371\" y2=\"20\" style=\"stroke:#ff8300;stroke-width:3;\" /><line x1=\"372\" y1=\"0\" x2=\"372\" y2=\"20\" style=\"stroke:#ff8200;stroke-width:3;\" /><line x1=\"373\" y1=\"0\" x2=\"373\" y2=\"20\" style=\"stroke:#ff8100;stroke-width:3;\" /><line x1=\"374\" y1=\"0\" x2=\"374\" y2=\"20\" style=\"stroke:#ff8000;stroke-width:3;\" /><line x1=\"375\" y1=\"0\" x2=\"375\" y2=\"20\" style=\"stroke:#ff7f00;stroke-width:3;\" /><line x1=\"376\" y1=\"0\" x2=\"376\" y2=\"20\" style=\"stroke:#ff7e00;stroke-width:3;\" /><line x1=\"377\" y1=\"0\" x2=\"377\" y2=\"20\" style=\"stroke:#ff7d00;stroke-width:3;\" /><line x1=\"378\" y1=\"0\" x2=\"378\" y2=\"20\" style=\"stroke:#ff7c00;stroke-width:3;\" /><line x1=\"379\" y1=\"0\" x2=\"379\" y2=\"20\" style=\"stroke:#ff7b00;stroke-width:3;\" /><line x1=\"380\" y1=\"0\" x2=\"380\" y2=\"20\" style=\"stroke:#ff7a00;stroke-width:3;\" /><line x1=\"381\" y1=\"0\" x2=\"381\" y2=\"20\" style=\"stroke:#ff7900;stroke-width:3;\" /><line x1=\"382\" y1=\"0\" x2=\"382\" y2=\"20\" style=\"stroke:#ff7800;stroke-width:3;\" /><line x1=\"383\" y1=\"0\" x2=\"383\" y2=\"20\" style=\"stroke:#ff7700;stroke-width:3;\" /><line x1=\"384\" y1=\"0\" x2=\"384\" y2=\"20\" style=\"stroke:#ff7500;stroke-width:3;\" /><line x1=\"385\" y1=\"0\" x2=\"385\" y2=\"20\" style=\"stroke:#ff7400;stroke-width:3;\" /><line x1=\"386\" y1=\"0\" x2=\"386\" y2=\"20\" style=\"stroke:#ff7300;stroke-width:3;\" /><line x1=\"387\" y1=\"0\" x2=\"387\" y2=\"20\" style=\"stroke:#ff7200;stroke-width:3;\" /><line x1=\"388\" y1=\"0\" x2=\"388\" y2=\"20\" style=\"stroke:#ff7100;stroke-width:3;\" /><line x1=\"389\" y1=\"0\" x2=\"389\" y2=\"20\" style=\"stroke:#ff7000;stroke-width:3;\" /><line x1=\"390\" y1=\"0\" x2=\"390\" y2=\"20\" style=\"stroke:#ff6f00;stroke-width:3;\" /><line x1=\"391\" y1=\"0\" x2=\"391\" y2=\"20\" style=\"stroke:#ff6e00;stroke-width:3;\" /><line x1=\"392\" y1=\"0\" x2=\"392\" y2=\"20\" style=\"stroke:#ff6d00;stroke-width:3;\" /><line x1=\"393\" y1=\"0\" x2=\"393\" y2=\"20\" style=\"stroke:#ff6c00;stroke-width:3;\" /><line x1=\"394\" y1=\"0\" x2=\"394\" y2=\"20\" style=\"stroke:#ff6b00;stroke-width:3;\" /><line x1=\"395\" y1=\"0\" x2=\"395\" y2=\"20\" style=\"stroke:#ff6a00;stroke-width:3;\" /><line x1=\"396\" y1=\"0\" x2=\"396\" y2=\"20\" style=\"stroke:#ff6900;stroke-width:3;\" /><line x1=\"397\" y1=\"0\" x2=\"397\" y2=\"20\" style=\"stroke:#ff6800;stroke-width:3;\" /><line x1=\"398\" y1=\"0\" x2=\"398\" y2=\"20\" style=\"stroke:#ff6700;stroke-width:3;\" /><line x1=\"399\" y1=\"0\" x2=\"399\" y2=\"20\" style=\"stroke:#ff6600;stroke-width:3;\" /><line x1=\"400\" y1=\"0\" x2=\"400\" y2=\"20\" style=\"stroke:#ff6500;stroke-width:3;\" /><line x1=\"401\" y1=\"0\" x2=\"401\" y2=\"20\" style=\"stroke:#ff6400;stroke-width:3;\" /><line x1=\"402\" y1=\"0\" x2=\"402\" y2=\"20\" style=\"stroke:#ff6300;stroke-width:3;\" /><line x1=\"403\" y1=\"0\" x2=\"403\" y2=\"20\" style=\"stroke:#ff6200;stroke-width:3;\" /><line x1=\"404\" y1=\"0\" x2=\"404\" y2=\"20\" style=\"stroke:#ff6100;stroke-width:3;\" /><line x1=\"405\" y1=\"0\" x2=\"405\" y2=\"20\" style=\"stroke:#ff6000;stroke-width:3;\" /><line x1=\"406\" y1=\"0\" x2=\"406\" y2=\"20\" style=\"stroke:#ff5f00;stroke-width:3;\" /><line x1=\"407\" y1=\"0\" x2=\"407\" y2=\"20\" style=\"stroke:#ff5e00;stroke-width:3;\" /><line x1=\"408\" y1=\"0\" x2=\"408\" y2=\"20\" style=\"stroke:#ff5d00;stroke-width:3;\" /><line x1=\"409\" y1=\"0\" x2=\"409\" y2=\"20\" style=\"stroke:#ff5c00;stroke-width:3;\" /><line x1=\"410\" y1=\"0\" x2=\"410\" y2=\"20\" style=\"stroke:#ff5b00;stroke-width:3;\" /><line x1=\"411\" y1=\"0\" x2=\"411\" y2=\"20\" style=\"stroke:#ff5a00;stroke-width:3;\" /><line x1=\"412\" y1=\"0\" x2=\"412\" y2=\"20\" style=\"stroke:#ff5900;stroke-width:3;\" /><line x1=\"413\" y1=\"0\" x2=\"413\" y2=\"20\" style=\"stroke:#ff5800;stroke-width:3;\" /><line x1=\"414\" y1=\"0\" x2=\"414\" y2=\"20\" style=\"stroke:#ff5700;stroke-width:3;\" /><line x1=\"415\" y1=\"0\" x2=\"415\" y2=\"20\" style=\"stroke:#ff5600;stroke-width:3;\" /><line x1=\"416\" y1=\"0\" x2=\"416\" y2=\"20\" style=\"stroke:#ff5500;stroke-width:3;\" /><line x1=\"417\" y1=\"0\" x2=\"417\" y2=\"20\" style=\"stroke:#ff5400;stroke-width:3;\" /><line x1=\"418\" y1=\"0\" x2=\"418\" y2=\"20\" style=\"stroke:#ff5300;stroke-width:3;\" /><line x1=\"419\" y1=\"0\" x2=\"419\" y2=\"20\" style=\"stroke:#ff5200;stroke-width:3;\" /><line x1=\"420\" y1=\"0\" x2=\"420\" y2=\"20\" style=\"stroke:#ff5100;stroke-width:3;\" /><line x1=\"421\" y1=\"0\" x2=\"421\" y2=\"20\" style=\"stroke:#ff5000;stroke-width:3;\" /><line x1=\"422\" y1=\"0\" x2=\"422\" y2=\"20\" style=\"stroke:#ff4f00;stroke-width:3;\" /><line x1=\"423\" y1=\"0\" x2=\"423\" y2=\"20\" style=\"stroke:#ff4d00;stroke-width:3;\" /><line x1=\"424\" y1=\"0\" x2=\"424\" y2=\"20\" style=\"stroke:#ff4c00;stroke-width:3;\" /><line x1=\"425\" y1=\"0\" x2=\"425\" y2=\"20\" style=\"stroke:#ff4b00;stroke-width:3;\" /><line x1=\"426\" y1=\"0\" x2=\"426\" y2=\"20\" style=\"stroke:#ff4a00;stroke-width:3;\" /><line x1=\"427\" y1=\"0\" x2=\"427\" y2=\"20\" style=\"stroke:#ff4900;stroke-width:3;\" /><line x1=\"428\" y1=\"0\" x2=\"428\" y2=\"20\" style=\"stroke:#ff4800;stroke-width:3;\" /><line x1=\"429\" y1=\"0\" x2=\"429\" y2=\"20\" style=\"stroke:#ff4700;stroke-width:3;\" /><line x1=\"430\" y1=\"0\" x2=\"430\" y2=\"20\" style=\"stroke:#ff4600;stroke-width:3;\" /><line x1=\"431\" y1=\"0\" x2=\"431\" y2=\"20\" style=\"stroke:#ff4500;stroke-width:3;\" /><line x1=\"432\" y1=\"0\" x2=\"432\" y2=\"20\" style=\"stroke:#ff4400;stroke-width:3;\" /><line x1=\"433\" y1=\"0\" x2=\"433\" y2=\"20\" style=\"stroke:#ff4300;stroke-width:3;\" /><line x1=\"434\" y1=\"0\" x2=\"434\" y2=\"20\" style=\"stroke:#ff4200;stroke-width:3;\" /><line x1=\"435\" y1=\"0\" x2=\"435\" y2=\"20\" style=\"stroke:#ff4100;stroke-width:3;\" /><line x1=\"436\" y1=\"0\" x2=\"436\" y2=\"20\" style=\"stroke:#ff4000;stroke-width:3;\" /><line x1=\"437\" y1=\"0\" x2=\"437\" y2=\"20\" style=\"stroke:#ff3f00;stroke-width:3;\" /><line x1=\"438\" y1=\"0\" x2=\"438\" y2=\"20\" style=\"stroke:#ff3e00;stroke-width:3;\" /><line x1=\"439\" y1=\"0\" x2=\"439\" y2=\"20\" style=\"stroke:#ff3d00;stroke-width:3;\" /><line x1=\"440\" y1=\"0\" x2=\"440\" y2=\"20\" style=\"stroke:#ff3c00;stroke-width:3;\" /><line x1=\"441\" y1=\"0\" x2=\"441\" y2=\"20\" style=\"stroke:#ff3b00;stroke-width:3;\" /><line x1=\"442\" y1=\"0\" x2=\"442\" y2=\"20\" style=\"stroke:#ff3a00;stroke-width:3;\" /><line x1=\"443\" y1=\"0\" x2=\"443\" y2=\"20\" style=\"stroke:#ff3900;stroke-width:3;\" /><line x1=\"444\" y1=\"0\" x2=\"444\" y2=\"20\" style=\"stroke:#ff3800;stroke-width:3;\" /><line x1=\"445\" y1=\"0\" x2=\"445\" y2=\"20\" style=\"stroke:#ff3700;stroke-width:3;\" /><line x1=\"446\" y1=\"0\" x2=\"446\" y2=\"20\" style=\"stroke:#ff3600;stroke-width:3;\" /><line x1=\"447\" y1=\"0\" x2=\"447\" y2=\"20\" style=\"stroke:#ff3500;stroke-width:3;\" /><line x1=\"448\" y1=\"0\" x2=\"448\" y2=\"20\" style=\"stroke:#ff3400;stroke-width:3;\" /><line x1=\"449\" y1=\"0\" x2=\"449\" y2=\"20\" style=\"stroke:#ff3300;stroke-width:3;\" /><line x1=\"450\" y1=\"0\" x2=\"450\" y2=\"20\" style=\"stroke:#ff3200;stroke-width:3;\" /><line x1=\"451\" y1=\"0\" x2=\"451\" y2=\"20\" style=\"stroke:#ff3100;stroke-width:3;\" /><line x1=\"452\" y1=\"0\" x2=\"452\" y2=\"20\" style=\"stroke:#ff3000;stroke-width:3;\" /><line x1=\"453\" y1=\"0\" x2=\"453\" y2=\"20\" style=\"stroke:#ff2f00;stroke-width:3;\" /><line x1=\"454\" y1=\"0\" x2=\"454\" y2=\"20\" style=\"stroke:#ff2e00;stroke-width:3;\" /><line x1=\"455\" y1=\"0\" x2=\"455\" y2=\"20\" style=\"stroke:#ff2d00;stroke-width:3;\" /><line x1=\"456\" y1=\"0\" x2=\"456\" y2=\"20\" style=\"stroke:#ff2c00;stroke-width:3;\" /><line x1=\"457\" y1=\"0\" x2=\"457\" y2=\"20\" style=\"stroke:#ff2b00;stroke-width:3;\" /><line x1=\"458\" y1=\"0\" x2=\"458\" y2=\"20\" style=\"stroke:#ff2a00;stroke-width:3;\" /><line x1=\"459\" y1=\"0\" x2=\"459\" y2=\"20\" style=\"stroke:#ff2900;stroke-width:3;\" /><line x1=\"460\" y1=\"0\" x2=\"460\" y2=\"20\" style=\"stroke:#ff2800;stroke-width:3;\" /><line x1=\"461\" y1=\"0\" x2=\"461\" y2=\"20\" style=\"stroke:#ff2600;stroke-width:3;\" /><line x1=\"462\" y1=\"0\" x2=\"462\" y2=\"20\" style=\"stroke:#ff2500;stroke-width:3;\" /><line x1=\"463\" y1=\"0\" x2=\"463\" y2=\"20\" style=\"stroke:#ff2400;stroke-width:3;\" /><line x1=\"464\" y1=\"0\" x2=\"464\" y2=\"20\" style=\"stroke:#ff2300;stroke-width:3;\" /><line x1=\"465\" y1=\"0\" x2=\"465\" y2=\"20\" style=\"stroke:#ff2200;stroke-width:3;\" /><line x1=\"466\" y1=\"0\" x2=\"466\" y2=\"20\" style=\"stroke:#ff2100;stroke-width:3;\" /><line x1=\"467\" y1=\"0\" x2=\"467\" y2=\"20\" style=\"stroke:#ff2000;stroke-width:3;\" /><line x1=\"468\" y1=\"0\" x2=\"468\" y2=\"20\" style=\"stroke:#ff1f00;stroke-width:3;\" /><line x1=\"469\" y1=\"0\" x2=\"469\" y2=\"20\" style=\"stroke:#ff1e00;stroke-width:3;\" /><line x1=\"470\" y1=\"0\" x2=\"470\" y2=\"20\" style=\"stroke:#ff1d00;stroke-width:3;\" /><line x1=\"471\" y1=\"0\" x2=\"471\" y2=\"20\" style=\"stroke:#ff1c00;stroke-width:3;\" /><line x1=\"472\" y1=\"0\" x2=\"472\" y2=\"20\" style=\"stroke:#ff1b00;stroke-width:3;\" /><line x1=\"473\" y1=\"0\" x2=\"473\" y2=\"20\" style=\"stroke:#ff1a00;stroke-width:3;\" /><line x1=\"474\" y1=\"0\" x2=\"474\" y2=\"20\" style=\"stroke:#ff1900;stroke-width:3;\" /><line x1=\"475\" y1=\"0\" x2=\"475\" y2=\"20\" style=\"stroke:#ff1800;stroke-width:3;\" /><line x1=\"476\" y1=\"0\" x2=\"476\" y2=\"20\" style=\"stroke:#ff1700;stroke-width:3;\" /><line x1=\"477\" y1=\"0\" x2=\"477\" y2=\"20\" style=\"stroke:#ff1600;stroke-width:3;\" /><line x1=\"478\" y1=\"0\" x2=\"478\" y2=\"20\" style=\"stroke:#ff1500;stroke-width:3;\" /><line x1=\"479\" y1=\"0\" x2=\"479\" y2=\"20\" style=\"stroke:#ff1400;stroke-width:3;\" /><line x1=\"480\" y1=\"0\" x2=\"480\" y2=\"20\" style=\"stroke:#ff1300;stroke-width:3;\" /><line x1=\"481\" y1=\"0\" x2=\"481\" y2=\"20\" style=\"stroke:#ff1200;stroke-width:3;\" /><line x1=\"482\" y1=\"0\" x2=\"482\" y2=\"20\" style=\"stroke:#ff1100;stroke-width:3;\" /><line x1=\"483\" y1=\"0\" x2=\"483\" y2=\"20\" style=\"stroke:#ff1000;stroke-width:3;\" /><line x1=\"484\" y1=\"0\" x2=\"484\" y2=\"20\" style=\"stroke:#ff0f00;stroke-width:3;\" /><line x1=\"485\" y1=\"0\" x2=\"485\" y2=\"20\" style=\"stroke:#ff0e00;stroke-width:3;\" /><line x1=\"486\" y1=\"0\" x2=\"486\" y2=\"20\" style=\"stroke:#ff0d00;stroke-width:3;\" /><line x1=\"487\" y1=\"0\" x2=\"487\" y2=\"20\" style=\"stroke:#ff0c00;stroke-width:3;\" /><line x1=\"488\" y1=\"0\" x2=\"488\" y2=\"20\" style=\"stroke:#ff0b00;stroke-width:3;\" /><line x1=\"489\" y1=\"0\" x2=\"489\" y2=\"20\" style=\"stroke:#ff0a00;stroke-width:3;\" /><line x1=\"490\" y1=\"0\" x2=\"490\" y2=\"20\" style=\"stroke:#ff0900;stroke-width:3;\" /><line x1=\"491\" y1=\"0\" x2=\"491\" y2=\"20\" style=\"stroke:#ff0800;stroke-width:3;\" /><line x1=\"492\" y1=\"0\" x2=\"492\" y2=\"20\" style=\"stroke:#ff0700;stroke-width:3;\" /><line x1=\"493\" y1=\"0\" x2=\"493\" y2=\"20\" style=\"stroke:#ff0600;stroke-width:3;\" /><line x1=\"494\" y1=\"0\" x2=\"494\" y2=\"20\" style=\"stroke:#ff0500;stroke-width:3;\" /><line x1=\"495\" y1=\"0\" x2=\"495\" y2=\"20\" style=\"stroke:#ff0400;stroke-width:3;\" /><line x1=\"496\" y1=\"0\" x2=\"496\" y2=\"20\" style=\"stroke:#ff0300;stroke-width:3;\" /><line x1=\"497\" y1=\"0\" x2=\"497\" y2=\"20\" style=\"stroke:#ff0200;stroke-width:3;\" /><line x1=\"498\" y1=\"0\" x2=\"498\" y2=\"20\" style=\"stroke:#ff0100;stroke-width:3;\" /><line x1=\"499\" y1=\"0\" x2=\"499\" y2=\"20\" style=\"stroke:#ff0000;stroke-width:3;\" /><text x=\"0\" y=\"35\">0</text><text x=\"500\" y=\"35\" style=\"text-anchor:end;\">50</text></svg>" ], "text/plain": [ "<branca.colormap.LinearColormap at 0x7fe9706ee550>" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cm = branca.colormap.LinearColormap(['green', 'yellow', 'red'], vmin=0, vmax=50)\n", "print(cm(25))\n", "cm" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We create a `FeatureGroup` with all the points." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "f = folium.map.FeatureGroup()\n", "\n", "for lat, lng, size, color in zip(lats, lngs, sizes, colors):\n", " f.add_child(\n", " folium.features.CircleMarker(\n", " [lat, lng],\n", " radius=size,\n", " color=None,\n", " fill_color=cm(color),\n", " fill_opacity=0.6)\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And draw the map !" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;base64,CiAgICAgICAgPCFET0NUWVBFIGh0bWw+CiAgICAgICAgPGhlYWQ+CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgLz4KICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0LzAuNy4zL2xlYWZsZXQuanMiPjwvc2NyaXB0PgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuMTEuMS9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3Jhd2dpdGh1Yi5jb20vbHZvb2dkdC9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAvZGV2ZWxvcC9kaXN0L2xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLmpzIj48L3NjcmlwdD4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMC40LjAvbGVhZmxldC5tYXJrZXJjbHVzdGVyLXNyYy5qcyI+PC9zY3JpcHQ+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzAuNC4wL2xlYWZsZXQubWFya2VyY2x1c3Rlci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQvMC43LjMvbGVhZmxldC5jc3MiIC8+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMi4wL2Nzcy9ib290c3RyYXAubWluLmNzcyIgLz4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIiAvPgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS80LjEuMC9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MiIC8+CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vcmF3Z2l0LmNvbS9sdm9vZ2R0L0xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLzIuMC9kZXZlbG9wL2Rpc3QvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuY3NzIiAvPgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMC40LjAvTWFya2VyQ2x1c3Rlci5EZWZhdWx0LmNzcyIgLz4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzAuNC4wL01hcmtlckNsdXN0ZXIuY3NzIiAvPgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcHl0aG9uLXZpc3VhbGl6YXRpb24vZm9saXVtL21hc3Rlci9mb2xpdW0vdGVtcGxhdGVzL2xlYWZsZXQuYXdlc29tZS5yb3RhdGUuY3NzIiAvPgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPHN0eWxlPgoKICAgICAgICAgICAgaHRtbCwgYm9keSB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAjbWFwIHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uOmFic29sdXRlOwogICAgICAgICAgICAgICAgdG9wOjA7CiAgICAgICAgICAgICAgICBib3R0b206MDsKICAgICAgICAgICAgICAgIHJpZ2h0OjA7CiAgICAgICAgICAgICAgICBsZWZ0OjA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPHN0eWxlPiAjbWFwXzM0ZmNhZjVhODAyYTRmYjg4YWEwMDRjOGVhYjg0MmUwIHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uIDogcmVsYXRpdmU7CiAgICAgICAgICAgICAgICB3aWR0aCA6IDEwMC4wJTsKICAgICAgICAgICAgICAgIGhlaWdodDogMTAwLjAlOwogICAgICAgICAgICAgICAgbGVmdDogMC4wJTsKICAgICAgICAgICAgICAgIHRvcDogMC4wJTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgPC9zdHlsZT4KICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICA8L2hlYWQ+CiAgICAgICAgPGJvZHk+CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9saXVtLW1hcCIgaWQ9Im1hcF8zNGZjYWY1YTgwMmE0ZmI4OGFhMDA0YzhlYWI4NDJlMCIgPjwvZGl2PgogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIDwvYm9keT4KICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgc291dGhXZXN0ID0gTC5sYXRMbmcoLTkwLCAtMTgwKTsKICAgICAgICAgICAgdmFyIG5vcnRoRWFzdCA9IEwubGF0TG5nKDkwLCAxODApOwogICAgICAgICAgICB2YXIgYm91bmRzID0gTC5sYXRMbmdCb3VuZHMoc291dGhXZXN0LCBub3J0aEVhc3QpOwoKICAgICAgICAgICAgdmFyIG1hcF8zNGZjYWY1YTgwMmE0ZmI4OGFhMDA0YzhlYWI4NDJlMCA9IEwubWFwKCdtYXBfMzRmY2FmNWE4MDJhNGZiODhhYTAwNGM4ZWFiODQyZTAnLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6WzQ2LDRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyX2VjZDNlOWVhNGI2MjRhNDU5MGRjYjNlNzJmYzMwMzRkID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cDovL290aWxlMS5tcWNkbi5jb20vdGlsZXMvMS4wLjAvbWFwL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbWF4Wm9vbTogMTgsCiAgICAgICAgICAgICAgICAgICAgbWluWm9vbTogMSwKICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGlvbjogJ01hcCB0aWxlcyBieSA8YSBocmVmPSJodHRwOi8vb3Blbi5tYXBxdWVzdC5jb20vIj5NYXBRdWVzdDwvYT4gRGF0YSBieSA8YSBocmVmPSJodHRwOi8vb3BlbnN0cmVldG1hcC5vcmciPk9wZW5TdHJlZXRNYXA8L2E+LCB1bmRlciA8YSBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8zLjAiPkNDIEJZIFNBPC9hPi4nLAogICAgICAgICAgICAgICAgICAgIGRldGVjdFJldGluYTogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zNGZjYWY1YTgwMmE0ZmI4OGFhMDA0YzhlYWI4NDJlMCk7CgogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYgPSBMLmZlYXR1cmVHcm91cCgKICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzM0ZmNhZjVhODAyYTRmYjg4YWEwMDRjOGVhYjg0MmUwKTsKICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85OTU4ZGRiMGViODg0ZmE2YjgxMjYzYjdlYmM3M2I1NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjA0MDg4MTEyODgsMTAuODcwOTc3MzYwOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmZmOTAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cyg1LjExNjI3NTM4OTkxKQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ODFkYzA3MTEwMzI0MjRjYTdkYjUxODM0NDQ1Yjk3MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUwLjg2NzU3ODc5MzksLTE0LjQ4MzkzMzIyMzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnIzdlYmYwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMy42MTcyNDkxMzkxOCkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjU2ZTU1NjZiNTE4NGQwMDg1MjIxZmIyYzBmZmJhZDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszOC43MjMzOTI0OTczLDkuNzAyNjkwMzU4NzVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnIzhhYzUwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoNC43ODg1MDUwNDc0NCkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDE2YjM0YWU1MWMwNGEyMDg2Y2VjYjcyZTAyYmNhMDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0OC41MzQyMDMxNzI5LDcuODE4NzA0MTI2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZmMwMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDE5LjI0NzI0NjY5OTUpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAwMTllNzliZjc1NDRjNzE5Yjk1Mzk2OWQxMTdmZjc1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDYuMjY5MDc5NjM2MywtMy42MDI3ODQyMjE2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmY3NDAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cyg2LjU0OTYzNDA3NTg2KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ZGI3MjlkZjcwMWE0NjIyOTcxMjQ0YTJmNWU0ZjU0OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQxLjk0MjMyMzQxNjQsLTE2LjYxNzUzODE1OTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnIzJkOTcwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTcuOTU1NDE5NzY2MykKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTY4OTEzYmFhYzI5NDYyMzliZmIyOGE5YmExYWNkZjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi42OTg0NzY3MzM2LDIyLjA4NTczNjE5NjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnIzJhOTUwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTUuNzU1NTk1OTkxMSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjFjNTg5YjdkYzVlNDAyYmFiZjRiZGZiNTFlZDczNDYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0NC43MDcxMjMxLC0zLjA2NzYzMjkzMDIzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNhMGQwMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDE2LjEzMzk5ODQwODIpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY2YTIyMTQ1MjEzYjQ4MmY5M2U1MDYwOWQ3NGZmOGIxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTEuMzMyMjQ4MjM2LC00LjI5OTY2ODQ2MTI3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZmE1MDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDEwLjMzMDcwOTk3NzQpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIzZjM3YTM5MDhjMjRmZGFhODY2Y2I4OGU5ZGQyMmE2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDQuNDc4MzIzODE4OCwtMTQuNDEzNDA5NzgxNV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmY3ZjAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxOC44MzI3MDAyMjkpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QwOWRjMzNhMTBiNDQ1NWJiNTMyY2VjMWNlYTU0ZjRiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuMzIzMTgwOTIyMSwtMC45Mzc5OTQ5NjYyMDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnIzBkODYwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoOC42OTI2ODY5MTIwNCkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGM3ZTZkZjE2YjlkNGY5NGFjNzk0MmRiNWY3ODNmYmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0NS44NDY0MzIwNjA0LDIwLjMyMDAxNjI2NDhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmNTEwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMi45MzkyMDM0Njg1NykKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzFlZjBhNmZlMjIxNDIyYzg5ZjE2MzBiNDhhZGI0YmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszOS41MjIyMDQyMTgzLDEyLjA4OTkwNzc4NTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmNDUwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoNy40NTYwMzI2MDcyNykKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2Q5MTc1MWExOTU4NDU5NWFlZTc2N2Q4NWU2ZmZiYjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0OC43NDEzMzEwNzY2LC05LjYzNDAyNDIwMjQyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZmJmMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDcuOTc0MTEwOTY2NjgpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc3N2Y4MzVlZWM3ZjQ4ODViNDEzZjE3MTMwOWY1Yjk3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDUuNjkyMDQ4OTk3NiwtMS4xMDA0NzE0MTU3Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmZkYzAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxOC41ODk3NDU5NDM3KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mOTBlY2NhYWYzNDc0OGRiOTUyYTBmMWEzNzNmOGQwNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjMwNzIxMDAwMDcsMTcuMjY0NjA1NTgxNV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjYzdlMzAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygzLjYwNDAwNDQ0NjIxKQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NjhlZmQ4N2YzNjk0MTgyOWVlNWYzZTg2ZTI5Y2Y0NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQxLjQ4NzEyMzkwNSwtMTQuMjI3NzMxODgyM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjYmNkZTAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxNC4zMDg1MjI5NjQpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzExNGJkZjFhZWQxNzQzYTI5YzlkYzZjMmQ2YjY1YmM0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTAuODQ4MDA2NjczNSw2LjQyMjkwMjUxMTM1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyMyYjk2MDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDguNDAzMjk2MDQ4NzcpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY1OWVkOWFkMjI5MTQ2OGJiMjgzMDliYTQ2YThjNjA2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDcuOTM1OTg1NDgsMi44MzA2MTgyMzU5NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmY2MzAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxNy4yMjY1NjY3NjY5KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85YzVmODJlNDQ0M2U0YWQ1OWYwYzBhMDU5YTI4MGFjMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQ1LjM1NjkxMzMzNzMsNS4zMDI4MDEwMTE2M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZDJlOTAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cyg3Ljg0NDIyMjc4NzczKQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMTRhMWY5ZGQ5OTM0N2JkYmE1ZWM5ODZiODU5NjQ0MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM5LjYxOTEwNTkxMzEsMTYuMzgyNTU2NjUxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZmEwMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDEwLjczMDUyNDA0OTEpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcwMzI3YjI4ODE1MTQ3NWI5NTBlYmIzYWQzZWUwN2RhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDIuNzEzMjU1NTAwNSwxOS40MzkzNjE4ODgzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNiOWRkMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDE2Ljc2Njg4MDMxNTYpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg3NmM1Mjc4MmNhMjRiMDliYmRkZTk4OTllNThjOTc2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDguNDI1ODA2Mjk1LDAuNzE2OTI1MjEzMzA1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZjk3MDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDYuNDc5Njc1NzQ1NjEpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU4NTNmZDllNWU0NTQzNDg4NTBkNjU2Y2IxYzIzY2IxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDguNjM4MTQ2OTYzLDE5LjYyNjY0NTIzNjldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmMDkwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTguMjE4MDIzMzM0NikKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTIxZmZkYmNkZGIxNDY1ZmJlYTRmMzYxOWY4MzJmOGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS44Njc1NTA2NjgsLTE2LjE4MzQ3ODMwNDhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmNTcwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTUuMDM0NDQ2ODkzOSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTEzYTExNzRmZTMxNGQ0NWExNTA5ZjRjZmU0NTc4ZWMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0NC45NDU5NzI4MjUxLC0xMS4xMDAyOTE4ODg2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNlOWY0MDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDguNjcwNzYyNzAzNjkpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU1NjVjOGJiMjA2YTQ0MzM5MDYyMWI0MTNjODViMjYzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuOTA2ODQxODM0Niw3LjI5OTM5MTQ5NjM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyMwOTg1MDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDE1LjU0NTMyOTM2NzUpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FjOWUzZTc3Zjc0NDQ5MjA4MTI4OTkwZWFkMDEzNjdhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDguNzQ2MzI1Mjk4NCwxMi45MTY4MjY0NDU0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZmMyMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDkuNDEyNTUwNTQ2MzIpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzkwMmNmZTc2NTJhYzRjYzhhNTkwYmNiNGE3ZTEwYWJiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDkuMDExNzM0MjI5NSwxMi4xMjI2MTM3OTgzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNhYWQ1MDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDE2LjgxMDQwMDc3OTkpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I4MzE4M2E2NjM1NjQ5OTM5ZTgzODU2MmQ5ZjY3ZDhkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDIuMDAyNjQzMzM5NSwtMTQuMzI5MDk5MTY3OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmZhMjAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxMC42ODIxMjUxMjI4KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NDZkMTA1NDg5NDQ0MmJlYWRkOTZhNTBjYmZhOGM3YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjIwNDQyMDgwMjYsLTEyLjgwNjI5NjcxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNlNGYyMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDMuMDk5MTY1OTY4MTMpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MyZDcxM2NjZjRiMDQ5ZTY4NmE3ZWNmYTM0ODU2OGVkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDIuMDQ3NjQ2NTk3NSwxMi4xMDE2NTU0MDExXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZmExMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDEwLjgwNDA5NDI3NykKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDU2MGNiYTBkOGIzNDA4MjhkNTBlNDMxMTBjNjllMDcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0NC4wMjI3MTM2MTA2LDEyLjMyNzA3Nzk1MzZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2M2ZTMwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoOS42MDEzOTA4NTQ4OSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzkyN2NhNGZkM2ZkNGY5NDk2NzczZmEwNmUzMTI0ZTcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MC4zODU1NjE3MDIzLDE4LjU3MDI2NzY5NDZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnIzI0OTIwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTguNzczOTgxODE1MykKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTdlNzA0NDQ1YjA2NGFlN2FlNjZmMTdmYTU5ZWMyMWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0OS42ODQyMjQ2NTk4LDAuNzc2MTg4NTQxNDYzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyMxMzhhMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDEzLjIwMDEzMTAyMTgpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIwYWNhNGI4NWVhNDQwYmQ4NmQxMzIyZWNlNDZhMjIxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzkuMDEwNzM1MTM0NSwtMTUuODg5Mzg3ODI3Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmY2ZjAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxMi4xMzA3Mjc0NTg0KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80NmQ5M2MxZjJiMmU0NjBjYjZlNzY5MjBkNGRmNWQ1ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQ3LjY0OTU0NzAxMjMsLTAuMzE0NDE5OTQzMjk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZjUwMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDE3LjI5ODg5NDU1NzQpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcwZGFiNGVmNjMzNzQwMjhhNmM3NWI5MmEwZWY2ZjM1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDIuNzMyNjQ2NTMyOSw2LjgyMDg2ODM3OTk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZjI0MDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDkuMDIzNjEzOTQ4NDEpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZiMjBlNThhMjIxOTRlOTE4M2RmYzZiOTA4MjllNTQ1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDUuNDYyODU3NjMxMSwxNy4wMzE1MzkxMTQ3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZmZmMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDcuMTgyMDM3MTkyMTMpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVhMDQ4NWFlNWVjMjRjMWM4ZGEzYmRkNTU1MWEyOTdjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuMjQ2MDIxNjExOCwxMy43NTk1NTU1MzM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmOGZjMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDMuNTk5ODExNzIzNjgpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzBhNzJmMTFmNDljYzQ5NmM5M2NiYjRhMzQxYzMxMGZlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDguMzE5NzgxMjA3NywtMTQuMDQ0NTA2NDI1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZmNlMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDEyLjUxMDYwNDI4MzMpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JkOWQxZGExMTkyMzQyNjU4ZmY0N2E0NzNkZjExNDYxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDUuNzQ0MTY1NzEzMiwxOS45MDQ5NTEzMjQxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZjBkMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDE0Ljk4ODIyOTU5MSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDJjZjg5MWFiM2VjNDJlYmEzOTM0YmI5MmVlY2RhZDggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0NS4wMzY5MjcxNTc1LC0xLjgwNTY4MzAzMjRdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnIzA3ODQwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTIuMzI4NzMzMTM1MykKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjE3ODU1MjBhNzkwNDNlNDlmMzk5MDUwNDgzNDhlY2YgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MS43MTY0Mzk4MjU1LDIyLjUxNjc2NTIzODNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmYTkwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoNC43NTQxNzI2NTYyOSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGY0MjI3MzNmYmNjNDUwZjhmZTA1NzlmMzUzOTIzMjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0NS4yMDQyNjAxMDY0LDE5LjAwNzk0NTcxMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnIzY4YjQwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTcuNzM5MDg1NDcwNSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGRjNzc4NWE0YTdkNDY3ZmIyYTAxNGM1YjAxNjU5ZGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0OS42MTc0NzQ1NjA3LC0zLjQ0NDcyNTg4MTU1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZjg4MDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDIuOTA2MzM3ODI4NjYpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhjYTFhNDhhYzM5MTRlMjZhODJiNDY4MmM4ZWVlOTIwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDMuMzAxNjA3NTk1OSwtMTUuMTc4OTUxMTk3M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmY1MzAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxMS4yMDk5NDg5NDkzKQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85OTYxNThmNzU2OGE0YWVlOWQyMWY3MDhiNWMzMDU4NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUwLjYxMTM5NTM0MjQsMy4wNzI4ODQwNzU2MV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjODVjMzAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxOC4wMzU5NjI2NTU5KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNjQ3YmMwYWRhOGQ0OWE1YTNlNzM5YzRiZmYzYzJhYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQxLjE2MzI4NTM5MTksLTguODgwMzcxNDI1NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmY2YTAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cyg3LjM1MzE2NTk4NDc1KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jNGYzZDBjNjllNjQ0NzQ3OGI1OWViZDdiOWYwOGU0YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQ0LjQ4MTU0NTIyNDIsMTkuNjUwOTg1NDMxNF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmY3NTAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygzLjQ0MDc0ODY4MjIxKQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MDE1ZTlhZTNlODg0YzJmYWM3YjdlZWNhNzlkOWM0NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQ5LjM4NDYzMTEyNjEsMTAuOTc0NjQyMzc5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmZmZjAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxNC4xMDczMTcxMDc4KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xM2QwN2ViMGYxZDk0MzQ3OWUwMjNmNzIwY2U2OGU5YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQ3LjA3MzkxNjM5NTIsMTMuODU3NTk3Njg0OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjN2RiZjAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cyg3LjE2MjE3MzI2NjI2KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZDlmMjY2ZmMzYTU0Y2RkODcwY2YxZmY1MGU3ZmQzMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM5LjYzOTIxNDUxMjIsLTguOTcwNjQ3OTI2NDJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmODcwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTguMTY1ODg0NDMwNikKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWNlNjI4MjlmNjc5NDc0YmI3NmNjNGIxNGZjODg5MWQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MS43NjEyNzY5NjYyLDMuNDEwNjYxNzgzMDRdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2M1ZTMwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoNS4xMDQ1ODgwMDEyNikKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWNhMzI5ODBhNjFkNGU3ZDg2ODQ2ZGFhMzk5NzExNmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MC4zNjI1NDcxMTc1LDIwLjA1ODI4MDIzMTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2JjZGUwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTIuODA2OTY2MTI4MykKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2IzYzc3NmJkMmM5NDU1Yjg2ZDZjNTNhODM5NWRhMjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi43NDc4NjM1OTMyLC03LjYxNjU1MjAzNDM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyMwMjgxMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDkuMTgxMTg5OTYwMjMpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE0YTA5YTUyN2VhODRkNGQ4MTY2Zjg3Mzc0ODYzY2U1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDQuMjQwMDUzNDIzLC0xMi40NDAxNzc4MTgyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZjgyMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDguNjQ2NjUyNzAxNzMpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIzYjgzYjU0OWM0YTQ1NWViZDk3YTc2YjFiNDJlYjRiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDYuOTcxNzM2NzU4MywxNS4xMTEwMDc2MjAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZjIyMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDE5LjE5Nzk4OTEwMDUpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QwYTZiZDZlOTVhNTQ4NTRhMWNjOGVmNDMxNDIzODUwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuOTEwMDg1MjI5LC0yLjYwNTk0Njk4NTk0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZjRkMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDE2LjMyNTg5MjU1MjEpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Q1MDFlMzIwMzAwZDQ1NWRiYTA3MTcyM2IzMTA0ZDg3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDQuMjgyNTk3NTU3NCwtMTQuODEyOTQ1NzFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2M0ZTIwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTYuNTA1ODcyMTk1OSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzI2MmQwZmNhMGRlNDJmM2E0OTNhYWZmMjZhZGQ1ZDAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0NS4wMTI1MjQzODE4LDE2LjI2NDI4MTI0OTNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmMWMwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoNC41NzY1MzQxMjMyMykKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzViMzNiY2I4ZmFjNDk1MGE0MDNmZTM0MDg5YzU3NzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1Mi44NDA5MDc3MzYyLC0xMy43MzE0ODgwOTYyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZmFjMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDcuODM5NjQyNzU5MDEpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI5NDg0YWVjODQ3MTRmMmI4M2UwMTlmMWIzN2I5MmU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDQuMTI5MjcyMjczLDguMzk3ODc3MjIzNzldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmZDcwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoNC4yOTU1NTUyMzcxOCkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDA0ZjBjNDQ1YTNjNDFiZGIwMGFjNDdlM2YwNzYwZDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs1MC4xNDM2OTE2NjM5LDIwLjU1MTI1NDA3ODJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnIzJjOTYwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoNS4zNTEyNzUyNTIwOCkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDFkMjdkZDRjZTI3NGU4Zjg4NDk5OWU4M2RmZWZmMTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0OS44MTI1NDQ2NjUyLC02Ljk4MjQ4ODA2MzddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmY2EwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTMuNTcyMTM4Mzk3MykKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmExYjhhNjdkZTViNGYyZmFiZTAyMzRjNmI5N2UwYzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0NS4zNzY3OTE4NzQ5LC0wLjIxMTA3ODA2Mzk1NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmZkNjAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cyg0LjA5OTUyNDQwMDc3KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNGYxYTQ4MGIyYjM0Y2M5YWQyMjQyNDkyZDNkZTY4NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjU2NDE3MzY3NTMsLTIuMjU2MDUyMjIyMTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnIzE4OGMwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoNy44MDU0MzMxNTk1NykKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjNkOTQwMWRiMDFmNGRiZWI5YWYwYzMwMzcxODM3YTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MS4zMDQ1ODg5MjUsLTE2Ljk1Nzk3NDI5NzRdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2E5ZDQwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoNS43NDU4OTIyNTI5MikKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGU0YWFjMGM4MTFmNDQ1M2FlZjE0MDQ3NTljNjdlNzMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0Ny4wNTI5NTU5NjI2LDMuNDQxMjExNzM5NDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmYzAwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTguNjY3MDk3MjgyNykKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTdhYjE3ODcwNTY2NGVhMjg5ZWQzNTE0MjNhOTQwZDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MS43NTg2ODgxOTQ5LDE2LjM4MjM5NjY1NDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmMzkwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoNS4zODE1NTk4NzQxMikKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjVhMjVhNzU3MjdjNDE3YjhhODAxYjlhZDdlMDJlNGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszOC45NDI5MjU2ODAyLDEyLjgxODY1MDQxMTRdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmMTkwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTkuMTYzMDk2Nzg2MSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTgxMDNiZDc5NjZhNGFmZmFiOTZjMjMzNDYyODI5OTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszOC4yMjk3NjQ4MzE1LDAuNjU4ODY0NTMxNTY1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZjBlMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDE2LjEyMzEzMTQ5MDcpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFmZTlhMDJkYTcwNTRmZDFiYjAyNjJkOGMyY2I0OWI5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDQuNTk2NTg5ODYyOCwxNi40ODAzNzQ0NzA1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZjM2MDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDIuNDk4MDU0MjU0MSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWY3NmZiZWM5YmY4NDg5NjlmZWMzNWM5ZGYzZDA5NTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0MS45MjE2MzUwMjMsLTIuOTg3OTM2Mzk3MTNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmZDcwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTIuMTk2MjA2MzI3NikKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTkzZGE3NGIwMWRhNGVjMzgzYjE4Y2YwMjFmYzYxMGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0Mi4zMTc5OTg5OTAyLC0xMy4xMDE2NDg5OTE3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNiZGRlMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDIuMzAyOTQyMTk5NjQpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RlNzIzZjI3NTI4YTQ4MTk5MmYzYTJmMDcyMzVmMDgyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDguODk4ODc0MzQ4OCwtOC43Mjc1NTQ3MDc4Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmY4NDAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cyg5LjA4NTM5ODY5NTc1KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNzY4NTgxN2VkZjI0MzdkYTViZjhhNmM1M2QzOTdjNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQ1LjQ0NTc5NDgxNTgsMTkuOTQ5MjgxMzY5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyM3N2JiMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDE5LjA2MDg0MjE1MzEpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJmMWE1NmI3NDJlYTRiYThiZWE3ZmU2YzY2MmI5OTNiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNzI0NDM5ODQ3LDExLjQ2NjQ4NDIyNl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmY2NTAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxMy44MDY3OTY3MzkxKQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYjcyNDZlMDk3OTY0NGE0YTA5OGZjYjcxMGEzMzM4NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjI4MTQ3ODg0MSwtMTYuNjc2MDg3MjQyM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZjZmYjAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cyg5Ljk5NDExMDI0NjcyKQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82MDgyYTlhNThmYTQ0ZmE5OTRlOWI3OTY0MmRmYjAwZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQzLjk2MDIwODMxMjEsMjEuODQyNTc4NTEwOF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjOTZjYjAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cyg1LjQxMTMyMjQxNDQ2KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81OThlODcxOWQzNjk0YTljOTIzNTQ4ZTA4OGM0NTZhMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQwLjUyNzAzMTA5NzcsLTEyLjc5MjYwODAwOTZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmYjIwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTAuMzk5Njg1MzExMSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTVhYzk2MTMzYmRmNDYwYzgyNTM3NmExYzNmNjJkZTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0OS43NzYyMDU4NDkzLDcuMjA4ODUyNzYxNjZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnIzEzOGEwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoOS43NTQ5MDU3MDQ3NSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzBjZGRiNDM4ZjExNDQ2Mjk1ZWJmYmIwYjJhNDkxZjEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0My44NTA5OTAwODk3LDIwLjM1MjQ2MjEwMTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmNjYwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTIuNjA2NTMyNzgwNSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmIxN2IwOGI1ODAwNDBjNjk4MzM2MWYwYjZjN2RiNWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0Ni4zODYyMjcwNTIxLC0xLjk1ODg5ODU0MTY3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZGZlMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDE5LjcyMDU2NDcxMzUpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJmNWFmOTY4NDk3NDQ4NDRhY2VmZGFhMGIxNDJiYjJjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuNzM5MDI0NTU3NCwxOS4zMzA0MjY5ODAzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyMwNDgyMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDMuMTkwMzM2ODc4NjkpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JhZDE3YzlmMDdmNDRjOWQ4ZDk3YjkxMjdhNTRkYTdkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDAuMDI0MzUwNTQ1OSwyMS4xMzEyMzEyMzIxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZjVkMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDEwLjczMjU1NzIyMTIpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I4NWQ3YWRhN2JkNjRlMWVhNGE4MzdjMmViODA4NWFmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuODM2MTQ5NzMyNywxNC44ODczMDYzNzMyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyMwYzg2MDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDcuMTMzNTg4ODQxNjEpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZhNmJkYzhhNTdlNTQ2M2JiNzA3Nzk3ZDk2MzgyNmIwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzkuNjk1NDcyMTAyOCwxMy4yMjExNDA3Mjc3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZjBhMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDEwLjk3NDUzNjM4MzIpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VmZTZmZmI0MTI2MDQwZDJhYWY2ZmVmYTQyODA5ZDE5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNTAuODM4NjI3MzIzMSwtMTQuOTc1MDk1MjE4Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjNjhiNDAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cyg2LjMyMzAxOTI2MzY0KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84ODY3MzZhOTc2Y2Q0MmNmYmZkMmU3ZmE0ODY5OWNkYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjA2NDE5MDcyMzksLTIuODA5MjI4NTg0Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmY5NjAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxMC44MzAwMDIzNjkzKQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xMzYzYzlkN2I5Mjk0NGRhYmU0NTY4N2QxYmU5ZTU3MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQ2LjM2NjkyMzU0ODQsMy4yNzcyNzY1MzkzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmZhNzAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxNy43NjcwNTIyNDk1KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZTVlMmJkYWI4YmQ0Yzc0OTQwMDgxYjdlMjBmMjBkNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM4LjI5MDkxNDk1NTEsMS43NDE3MTI1MzUwNl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjOWJjZTAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxMy41NDg5MDcxNzYzKQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYjg4MDNjNjQ5NWE0ZWQ1YTBmMGFlNjVjNjQ2YjRjZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQyLjczMjQ3ODU0NzIsLTE0LjgxMTQ5MDQ3NjVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnIzA0ODIwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoNC40NTM5ODExOTM0OSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjc4ZDI5NGJjOGEwNDYxMDk4ZDA5NmY3OGVlNzM5MDAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0NC41Mjg0ODI1MzA5LDYuNjk5OTYxNDk5NzRdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnIzk0Y2EwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTUuNDE2MTI1MjMyKQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jNGQ1ZTkxODRiMGU0ZGRlOGU0Yzk2ZjMwZDAxMWZiZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUxLjUzNTA4NzkzNDcsMTkuMzk0OTk5NTQ2NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjZmZlMjAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxOC4wNTQxODg3MTc0KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kMDY1MWNjMTQ4M2U0MWNmODk4NzM4N2ZlYTg2Y2YxZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzUyLjU4Nzg2NDAwMTUsMTIuNjYyNTA2NjgwNl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjYmNkZTAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxNy4yNzQ0NDk4NTIyKQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kODY4NDI4NTgwN2E0MzFlYTRiNGFiYjI2NzM0YTFmZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzQyLjU2NTQ5MzI1ODQsLTQuMzU5MzgzOTQyNjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmZDEwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoMTcuNDIyMTQ5NzA1NSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDI0OWI3ODllMTUyNGYyNTlhOTk2MjdkYjY2ZDVjNmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFs0Ny4yNDMxOTM3MTA1LC0xMS42MTMxNzMzMjM5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ05vbmUnLAogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJyNmZjczMDAnLAogICAgICAgICAgICAgICAgICAgIGZpbGxPcGFjaXR5OiAwLjYKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuc2V0UmFkaXVzKDkuNzIxNTExMDg5NjIpCiAgICAgICAgICAgICAgICAuYWRkVG8oZmVhdHVyZV9ncm91cF9kODRmNTEyYmJhZGE0ZGZmOGViOWYwMTQwZTQ4MWI3Nik7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJiZjU0OTViYzQyNTRhNTI4MTMxOWJmZmY1MmE4NWI5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbNDYuOTEwNTgzNzM1MSwtMTIuMTM2MjA1NjEzNF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdOb25lJywKICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I6ICcjMjc5NDAwJywKICAgICAgICAgICAgICAgICAgICBmaWxsT3BhY2l0eTogMC42CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLnNldFJhZGl1cygxMy43MTEyNjk1Njg5KQogICAgICAgICAgICAgICAgLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZDg0ZjUxMmJiYWRhNGRmZjhlYjlmMDE0MGU0ODFiNzYpOwogICAgICAgICAgICAKICAgICAgICAKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kODNkOThlNGI4M2M0OTRjYjMzMmY4YmFjOGExYzQyYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM4LjAyOTI4NDY3NzEsLTQuOTIyMjcyMzg0MDddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnTm9uZScsCiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yOiAnI2ZmYmEwMCcsCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5zZXRSYWRpdXMoNy4yMDM2OTE0NjAxNSkKICAgICAgICAgICAgICAgIC5hZGRUbyhmZWF0dXJlX2dyb3VwX2Q4NGY1MTJiYmFkYTRkZmY4ZWI5ZjAxNDBlNDgxYjc2KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAg\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;\"></iframe></div></div>" ], "text/plain": [ "<folium.folium.Map at 0x7fe9706ee048>" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = folium.Map([46,4], zoom_start=5, tiles='mapquestopen')\n", "m.add_child(f)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That's all folks !" ] } ], "metadata": { "kernelspec": { "display_name": "prototyping", "language": "python", "name": "prototyping" }, "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.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }