Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save abhiray92/1e9a97089a1d36d1bf2983dffc73400e to your computer and use it in GitHub Desktop.
Save abhiray92/1e9a97089a1d36d1bf2983dffc73400e to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<a href=\"https://cognitiveclass.ai\"><img src = \"https://ibm.box.com/shared/static/9gegpsmnsoo25ikkbl4qzlvlyjbgxs5x.png\" width = 400> </a>\n",
"\n",
"<h1 align=center><font size = 5>Generating Maps with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Introduction\n",
"\n",
"In this lab, we will learn how to create maps for different objectives. To do that, we will part ways with Matplotlib and work with another Python visualization library, namely **Folium**. What is nice about **Folium** is that it was developed for the sole purpose of visualizing geospatial data. While other libraries are available to visualize geospatial data, such as **plotly**, they might have a cap on how many API calls you can make within a defined time frame. **Folium**, on the other hand, is completely free."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"## Table of Contents\n",
"\n",
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"\n",
"1. [Exploring Datasets with *p*andas](#0)<br>\n",
"2. [Downloading and Prepping Data](#2)<br>\n",
"3. [Introduction to Folium](#4) <br>\n",
"4. [Map with Markers](#6) <br>\n",
"5. [Choropleth Maps](#8) <br>\n",
"</div>\n",
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Exploring Datasets with *pandas* and Matplotlib<a id=\"0\"></a>\n",
"\n",
"Toolkits: This lab heavily relies on [*pandas*](http://pandas.pydata.org/) and [**Numpy**](http://www.numpy.org/) for data wrangling, analysis, and visualization. The primary plotting library we will explore in this lab is [**Folium**](https://github.com/python-visualization/folium/).\n",
"\n",
"Datasets: \n",
"\n",
"1. San Francisco Police Department Incidents for the year 2016 - [Police Department Incidents](https://data.sfgov.org/Public-Safety/Police-Department-Incidents-Previous-Year-2016-/ritf-b9ki) from San Francisco public data portal. Incidents derived from San Francisco Police Department (SFPD) Crime Incident Reporting system. Updated daily, showing data for the entire year of 2016. Address and location has been anonymized by moving to mid-block or to an intersection. \n",
"\n",
"2. Immigration to Canada from 1980 to 2013 - [International migration flows to and from selected countries - The 2015 revision](http://www.un.org/en/development/desa/population/migration/data/empirical2/migrationflows.shtml) from United Nation's website. The dataset contains annual data on the flows of international migrants as recorded by the countries of destination. The data presents both inflows and outflows according to the place of birth, citizenship or place of previous / next residence both for foreigners and nationals. For this lesson, we will focus on the Canadian Immigration data"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Downloading and Prepping Data <a id=\"2\"></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Import Primary Modules:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"import numpy as np # useful for many scientific computing in Python\n",
"import pandas as pd # primary data structure library"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Introduction to Folium <a id=\"4\"></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Folium is a powerful Python library that helps you create several types of Leaflet maps. The fact that the Folium results are interactive makes this library very useful for dashboard building.\n",
"\n",
"From the official Folium documentation page:\n",
"\n",
"> Folium builds on the data wrangling strengths of the Python ecosystem and the mapping strengths of the Leaflet.js library. Manipulate your data in Python, then visualize it in on a Leaflet map via Folium.\n",
"\n",
"> Folium makes it easy to visualize data that's been manipulated in Python on an interactive Leaflet map. It enables both the binding of data to a map for choropleth visualizations as well as passing Vincent/Vega visualizations as markers on the map.\n",
"\n",
"> The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys. Folium supports both GeoJSON and TopoJSON overlays, as well as the binding of data to those overlays to create choropleth maps with color-brewer color schemes."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### Let's install **Folium**"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"**Folium** is not available by default. So, we first need to install it before we are able to import it."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting package metadata: done\n",
"Solving environment: - \n",
"The environment is inconsistent, please check the package plan carefully\n",
"The following packages are causing the inconsistency:\n",
"\n",
" - defaults/linux-64::anaconda==5.3.1=py37_0\n",
" - defaults/linux-64::astropy==3.0.4=py37h14c3975_0\n",
" - defaults/linux-64::bkcharts==0.2=py37_0\n",
" - defaults/linux-64::blaze==0.11.3=py37_0\n",
" - defaults/linux-64::bokeh==0.13.0=py37_0\n",
" - defaults/linux-64::bottleneck==1.2.1=py37h035aef0_1\n",
" - defaults/linux-64::dask==0.19.1=py37_0\n",
" - defaults/linux-64::datashape==0.5.4=py37_1\n",
" - defaults/linux-64::mkl-service==1.1.2=py37h90e4bf4_5\n",
" - defaults/linux-64::numba==0.39.0=py37h04863e7_0\n",
" - defaults/linux-64::numexpr==2.6.8=py37hd89afb7_0\n",
" - defaults/linux-64::odo==0.5.1=py37_0\n",
" - defaults/linux-64::pytables==3.4.4=py37ha205bf6_0\n",
" - defaults/linux-64::pytest-arraydiff==0.2=py37h39e3cac_0\n",
" - defaults/linux-64::pytest-astropy==0.4.0=py37_0\n",
" - defaults/linux-64::pytest-doctestplus==0.1.3=py37_0\n",
" - defaults/linux-64::pywavelets==1.0.0=py37hdd07704_0\n",
" - defaults/linux-64::scikit-image==0.14.0=py37hf484d3e_1\n",
"done\n",
"\n",
"# All requested packages already installed.\n",
"\n",
"Folium installed and imported!\n"
]
}
],
"source": [
"!conda install -c conda-forge folium=0.5.0 --yes\n",
"import folium\n",
"\n",
"print('Folium installed and imported!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Generating the world map is straigtforward in **Folium**. You simply create a **Folium** *Map* object and then you display it. What is attactive about **Folium** maps is that they are interactive, so you can zoom into any region of interest despite the initial zoom level. "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZmZlYjQwZWQyM2QxNDZhMWJlODVjYTUxNGQ4N2ZmNTggewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2ZmZWI0MGVkMjNkMTQ2YTFiZTg1Y2E1MTRkODdmZjU4IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9mZmViNDBlZDIzZDE0NmExYmU4NWNhNTE0ZDg3ZmY1OCA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9mZmViNDBlZDIzZDE0NmExYmU4NWNhNTE0ZDg3ZmY1OCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMCwwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzdkMGQ4Y2E4OTYzMzQ5MTc4OGM1Yjc1MjM3OTBmMWM5ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2ZmZWI0MGVkMjNkMTQ2YTFiZTg1Y2E1MTRkODdmZjU4KTsKICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fdea8143c50>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# define the world map\n",
"world_map = folium.Map()\n",
"\n",
"# display world map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Go ahead. Try zooming in and out of the rendered map above."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"You can customize this default definition of the world map by specifying the centre of your map and the intial zoom level. \n",
"\n",
"All locations on a map are defined by their respective *Latitude* and *Longitude* values. So you can create a map and pass in a center of *Latitude* and *Longitude* values of **[0, 0]**. \n",
"\n",
"For a defined center, you can also define the intial zoom level into that location when the map is rendered. **The higher the zoom level the more the map is zoomed into the center**.\n",
"\n",
"Let's create a map centered around Canada and play with the zoom level to see how it affects the rendered map."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": 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;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYmI1YmE3MzZkNTBiNDI5OTgwOWVjZjIzNmIwYjc0ZDcgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2JiNWJhNzM2ZDUwYjQyOTk4MDllY2YyMzZiMGI3NGQ3IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9iYjViYTczNmQ1MGI0Mjk5ODA5ZWNmMjM2YjBiNzRkNyA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9iYjViYTczNmQ1MGI0Mjk5ODA5ZWNmMjM2YjBiNzRkNycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl84NjYzNWEzZmNmZGM0MDc3OGJhMzllYmY2ZDFkZDA1YiA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9iYjViYTczNmQ1MGI0Mjk5ODA5ZWNmMjM2YjBiNzRkNyk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fde9fc3cda0>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# define the world map centered around Canada with a low zoom level\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=4)\n",
"\n",
"# display world map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create the map again with a higher zoom level"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": 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;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfOTE1YjZhZDY1NWVmNGQ0Zjk3ZjZkNTFlZTU0ZGMyMGIgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzkxNWI2YWQ2NTVlZjRkNGY5N2Y2ZDUxZWU1NGRjMjBiIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF85MTViNmFkNjU1ZWY0ZDRmOTdmNmQ1MWVlNTRkYzIwYiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF85MTViNmFkNjU1ZWY0ZDRmOTdmNmQ1MWVlNTRkYzIwYicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl83NjVlOGIyZjRiZjA0MDY0YWY4ZWE4MDM4MDUwNWE3NyA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF85MTViNmFkNjU1ZWY0ZDRmOTdmNmQ1MWVlNTRkYzIwYik7CiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fde9fbdde48>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# define the world map centered around Canada with a higher zoom level\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=8)\n",
"\n",
"# display world map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"As you can see, the higher the zoom level the more the map is zoomed into the given center."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"**Question**: Create a map of Mexico with a zoom level of 4."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": 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;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYmE5MzEzNDQwMWM4NDNkNjlmYmIwMGZkZjNlODk1NTYgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2JhOTMxMzQ0MDFjODQzZDY5ZmJiMDBmZGYzZTg5NTU2IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9iYTkzMTM0NDAxYzg0M2Q2OWZiYjAwZmRmM2U4OTU1NiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9iYTkzMTM0NDAxYzg0M2Q2OWZiYjAwZmRmM2U4OTU1NicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMjMuNjM0NSwtMTAyLjU1MjhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfMGU0NTk5MzZmNWU1NDQ5YWE1Yzc4ODA3YjQ2MTUxNjQgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmE5MzEzNDQwMWM4NDNkNjlmYmIwMGZkZjNlODk1NTYpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fde9fbdf908>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"### type your answer here\n",
"world_map=folium.Map(location=[23.6345, -102.5528], zoom_start=4)\n",
"\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- The correct answer is:\n",
"\\\\ # define Mexico's geolocation coordinates\n",
"mexico_latitude = 23.6345 \n",
"mexico_longitude = -102.5528\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # define the world map centered around Canada with a higher zoom level\n",
"mexico_map = folium.Map(location=[mexico_latitude, mexico_longitude], zoom_start=4)\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # display world map\n",
"mexico_map\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Another cool feature of **Folium** is that you can generate different map styles."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### A. Stamen Toner Maps\n",
"\n",
"These are high-contrast B+W (black and white) maps. They are perfect for data mashups and exploring river meanders and coastal zones. "
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create a Stamen Toner map of canada with a zoom level of 4."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": 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;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYmM4YzcwZGM5ZTQ5NGRhZWI0NTkzNGUyYjNjOTRjZTggewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2JjOGM3MGRjOWU0OTRkYWViNDU5MzRlMmIzYzk0Y2U4IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9iYzhjNzBkYzllNDk0ZGFlYjQ1OTM0ZTJiM2M5NGNlOCA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9iYzhjNzBkYzllNDk0ZGFlYjQ1OTM0ZTJiM2M5NGNlOCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbLTIwLjU5MzcsNzguOTYyOV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl81ZTc3OGMyNzQ1YWQ0MzZhODdlMDY5MGUxY2U3ZDkzMyA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8vc3RhbWVuLXRpbGVzLXtzfS5hLnNzbC5mYXN0bHkubmV0L3RvbmVyL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYmM4YzcwZGM5ZTQ5NGRhZWI0NTkzNGUyYjNjOTRjZTgpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fde9fbf6e48>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create a Stamen Toner map of the world centered around Canada\n",
"world_map = folium.Map(location=[-20.5937, 78.9629], zoom_start=4, tiles='Stamen Toner')\n",
"\n",
"# display map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Feel free to zoom in and out to see how this style compares to the default one."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### B. Stamen Terrain Maps\n",
"\n",
"These are maps that feature hill shading and natural vegetation colors. They showcase advanced labeling and linework generalization of dual-carriageway roads."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create a Stamen Terrain map of Canada with zoom level 4."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": 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;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNWU0NDQ0ZmE1NTJjNDllNGI4ZjZiY2ZkM2UzYzM0ZTQgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzVlNDQ0NGZhNTUyYzQ5ZTRiOGY2YmNmZDNlM2MzNGU0IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF81ZTQ0NDRmYTU1MmM0OWU0YjhmNmJjZmQzZTNjMzRlNCA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF81ZTQ0NDRmYTU1MmM0OWU0YjhmNmJjZmQzZTNjMzRlNCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl8xMjg4ZTI3Yjc4MzY0MWFiYmYwZDY5YzU1YmM1ZWM0MyA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8vc3RhbWVuLXRpbGVzLXtzfS5hLnNzbC5mYXN0bHkubmV0L3RlcnJhaW4ve3p9L3t4fS97eX0uanBnJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF81ZTQ0NDRmYTU1MmM0OWU0YjhmNmJjZmQzZTNjMzRlNCk7CiAgICAgICAgCjwvc2NyaXB0Pg==\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fde9fc19f60>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create a Stamen Toner map of the world centered around Canada\n",
"world_map = folium.Map(location=[56.130, -106.35], zoom_start=4, tiles='Stamen Terrain')\n",
"\n",
"# display map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Feel free to zoom in and out to see how this style compares to Stamen Toner and the default style."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"### C. Mapbox Bright Maps\n",
"\n",
"These are maps that quite similar to the default style, except that the borders are not visible with a low zoom level. Furthermore, unlike the default style where country names are displayed in each country's native language, *Mapbox Bright* style displays all country names in English."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create a world map with this style."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": 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;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfOWE5NGFmMmYzOWY4NDY3ZWFhYzM4ZGY4NDg0NGU3NzggewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzlhOTRhZjJmMzlmODQ2N2VhYWMzOGRmODQ4NDRlNzc4IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF85YTk0YWYyZjM5Zjg0NjdlYWFjMzhkZjg0ODQ0ZTc3OCA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF85YTk0YWYyZjM5Zjg0NjdlYWFjMzhkZjg0ODQ0ZTc3OCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMCwwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyX2JmYTgzNTRhMzYzYjQzMDM5NjQzNWM1ODVkZTk4ZGMyID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZXMubWFwYm94LmNvbS92My9tYXBib3gud29ybGQtYnJpZ2h0L3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfOWE5NGFmMmYzOWY4NDY3ZWFhYzM4ZGY4NDg0NGU3NzgpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fde9fc3c278>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create a world map with a Mapbox Bright style.\n",
"world_map = folium.Map(tiles='Mapbox Bright')\n",
"\n",
"# display the map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Zoom in and notice how the borders start showing as you zoom in, and the displayed country names are in English."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"**Question**: Create a map of Mexico to visualize its hill shading and natural vegetation. Use a zoom level of 6."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": 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;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfMzJiMTNiN2MyNjRlNDhlOTlkYzczMjU0Y2ZhYzFjZGYgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzMyYjEzYjdjMjY0ZTQ4ZTk5ZGM3MzI1NGNmYWMxY2RmIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8zMmIxM2I3YzI2NGU0OGU5OWRjNzMyNTRjZmFjMWNkZiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8zMmIxM2I3YzI2NGU0OGU5OWRjNzMyNTRjZmFjMWNkZicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMjMuNjM0NSwtMTAyLjU1MjhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfZjEyM2EwMDNhODlmNGFkYmI2NjMzYjJlMWRlMzFjYzMgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3N0YW1lbi10aWxlcy17c30uYS5zc2wuZmFzdGx5Lm5ldC90ZXJyYWluL3t6fS97eH0ve3l9LmpwZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfMzJiMTNiN2MyNjRlNDhlOTlkYzczMjU0Y2ZhYzFjZGYpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fde9fbb13c8>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"### type your answer here\n",
"mexico_latitude = 23.6345 \n",
"mexico_longitude = -102.5528\n",
"mexico_map = folium.Map(location=[mexico_latitude, mexico_longitude], zoom_start=6, tiles='Stamen Terrain')\n",
"mexico_map\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- The correct answer is:\n",
"\\\\ # define Mexico's geolocation coordinates\n",
"mexico_latitude = 23.6345 \n",
"mexico_longitude = -102.5528\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # define the world map centered around Canada with a higher zoom level\n",
"mexico_map = folium.Map(location=[mexico_latitude, mexico_longitude], zoom_start=6, tiles='Stamen Terrain')\n",
"-->\n",
"\n",
"<!--\n",
"\\\\ # display world map\n",
"mexico_map\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Maps with Markers <a id=\"6\"></a>\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's download and import the data on police department incidents using *pandas* `read_csv()` method."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Download the dataset and read it into a *pandas* dataframe:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dataset downloaded and read into a pandas dataframe!\n"
]
}
],
"source": [
"df_incidents = pd.read_csv('https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/Police_Department_Incidents_-_Previous_Year__2016_.csv')\n",
"\n",
"print('Dataset downloaded and read into a pandas dataframe!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>IncidntNum</th>\n",
" <th>Category</th>\n",
" <th>Descript</th>\n",
" <th>DayOfWeek</th>\n",
" <th>Date</th>\n",
" <th>Time</th>\n",
" <th>PdDistrict</th>\n",
" <th>Resolution</th>\n",
" <th>Address</th>\n",
" <th>X</th>\n",
" <th>Y</th>\n",
" <th>Location</th>\n",
" <th>PdId</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>120058272</td>\n",
" <td>WEAPON LAWS</td>\n",
" <td>POSS OF PROHIBITED WEAPON</td>\n",
" <td>Friday</td>\n",
" <td>01/29/2016 12:00:00 AM</td>\n",
" <td>11:00</td>\n",
" <td>SOUTHERN</td>\n",
" <td>ARREST, BOOKED</td>\n",
" <td>800 Block of BRYANT ST</td>\n",
" <td>-122.403405</td>\n",
" <td>37.775421</td>\n",
" <td>(37.775420706711, -122.403404791479)</td>\n",
" <td>12005827212120</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>120058272</td>\n",
" <td>WEAPON LAWS</td>\n",
" <td>FIREARM, LOADED, IN VEHICLE, POSSESSION OR USE</td>\n",
" <td>Friday</td>\n",
" <td>01/29/2016 12:00:00 AM</td>\n",
" <td>11:00</td>\n",
" <td>SOUTHERN</td>\n",
" <td>ARREST, BOOKED</td>\n",
" <td>800 Block of BRYANT ST</td>\n",
" <td>-122.403405</td>\n",
" <td>37.775421</td>\n",
" <td>(37.775420706711, -122.403404791479)</td>\n",
" <td>12005827212168</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>141059263</td>\n",
" <td>WARRANTS</td>\n",
" <td>WARRANT ARREST</td>\n",
" <td>Monday</td>\n",
" <td>04/25/2016 12:00:00 AM</td>\n",
" <td>14:59</td>\n",
" <td>BAYVIEW</td>\n",
" <td>ARREST, BOOKED</td>\n",
" <td>KEITH ST / SHAFTER AV</td>\n",
" <td>-122.388856</td>\n",
" <td>37.729981</td>\n",
" <td>(37.7299809672996, -122.388856204292)</td>\n",
" <td>14105926363010</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>160013662</td>\n",
" <td>NON-CRIMINAL</td>\n",
" <td>LOST PROPERTY</td>\n",
" <td>Tuesday</td>\n",
" <td>01/05/2016 12:00:00 AM</td>\n",
" <td>23:50</td>\n",
" <td>TENDERLOIN</td>\n",
" <td>NONE</td>\n",
" <td>JONES ST / OFARRELL ST</td>\n",
" <td>-122.412971</td>\n",
" <td>37.785788</td>\n",
" <td>(37.7857883766888, -122.412970537591)</td>\n",
" <td>16001366271000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>160002740</td>\n",
" <td>NON-CRIMINAL</td>\n",
" <td>LOST PROPERTY</td>\n",
" <td>Friday</td>\n",
" <td>01/01/2016 12:00:00 AM</td>\n",
" <td>00:30</td>\n",
" <td>MISSION</td>\n",
" <td>NONE</td>\n",
" <td>16TH ST / MISSION ST</td>\n",
" <td>-122.419672</td>\n",
" <td>37.765050</td>\n",
" <td>(37.7650501214668, -122.419671780296)</td>\n",
" <td>16000274071000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" IncidntNum Category Descript \\\n",
"0 120058272 WEAPON LAWS POSS OF PROHIBITED WEAPON \n",
"1 120058272 WEAPON LAWS FIREARM, LOADED, IN VEHICLE, POSSESSION OR USE \n",
"2 141059263 WARRANTS WARRANT ARREST \n",
"3 160013662 NON-CRIMINAL LOST PROPERTY \n",
"4 160002740 NON-CRIMINAL LOST PROPERTY \n",
"\n",
" DayOfWeek Date Time PdDistrict Resolution \\\n",
"0 Friday 01/29/2016 12:00:00 AM 11:00 SOUTHERN ARREST, BOOKED \n",
"1 Friday 01/29/2016 12:00:00 AM 11:00 SOUTHERN ARREST, BOOKED \n",
"2 Monday 04/25/2016 12:00:00 AM 14:59 BAYVIEW ARREST, BOOKED \n",
"3 Tuesday 01/05/2016 12:00:00 AM 23:50 TENDERLOIN NONE \n",
"4 Friday 01/01/2016 12:00:00 AM 00:30 MISSION NONE \n",
"\n",
" Address X Y \\\n",
"0 800 Block of BRYANT ST -122.403405 37.775421 \n",
"1 800 Block of BRYANT ST -122.403405 37.775421 \n",
"2 KEITH ST / SHAFTER AV -122.388856 37.729981 \n",
"3 JONES ST / OFARRELL ST -122.412971 37.785788 \n",
"4 16TH ST / MISSION ST -122.419672 37.765050 \n",
"\n",
" Location PdId \n",
"0 (37.775420706711, -122.403404791479) 12005827212120 \n",
"1 (37.775420706711, -122.403404791479) 12005827212168 \n",
"2 (37.7299809672996, -122.388856204292) 14105926363010 \n",
"3 (37.7857883766888, -122.412970537591) 16001366271000 \n",
"4 (37.7650501214668, -122.419671780296) 16000274071000 "
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"So each row consists of 13 features:\n",
"> 1. **IncidntNum**: Incident Number\n",
"> 2. **Category**: Category of crime or incident\n",
"> 3. **Descript**: Description of the crime or incident\n",
"> 4. **DayOfWeek**: The day of week on which the incident occurred\n",
"> 5. **Date**: The Date on which the incident occurred\n",
"> 6. **Time**: The time of day on which the incident occurred\n",
"> 7. **PdDistrict**: The police department district\n",
"> 8. **Resolution**: The resolution of the crime in terms whether the perpetrator was arrested or not\n",
"> 9. **Address**: The closest address to where the incident took place\n",
"> 10. **X**: The longitude value of the crime location \n",
"> 11. **Y**: The latitude value of the crime location\n",
"> 12. **Location**: A tuple of the latitude and the longitude values\n",
"> 13. **PdId**: The police department ID"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's find out how many entries there are in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(150500, 13)"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.shape"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"So the dataframe consists of 150,500 crimes, which took place in the year 2016. In order to reduce computational cost, let's just work with the first 100 incidents in this dataset."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"# get the first 100 crimes in the df_incidents dataframe\n",
"limit = 100\n",
"df_incidents = df_incidents.iloc[0:limit, :]"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's confirm that our dataframe now consists only of 100 crimes."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(100, 13)"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.shape"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now that we reduced the data a little bit, let's visualize where these crimes took place in the city of San Francisco. We will use the default style and we will initialize the zoom level to 12. "
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"# San Francisco latitude and longitude values\n",
"latitude = 37.77\n",
"longitude = -122.42"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": 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;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNTRkODk3NjdiNzg1NDRhMjg4YTNiNmViODY2NWVlZTAgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fde9d246780>"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create map and display it\n",
"sanfran_map = folium.Map(location=[latitude, longitude], zoom_start=12)\n",
"\n",
"# display the map of San Francisco\n",
"sanfran_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now let's superimpose the locations of the crimes onto the map. The way to do that in **Folium** is to create a *feature group* with its own features and style and then add it to the sanfran_map."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": 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;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNTRkODk3NjdiNzg1NDRhMjg4YTNiNmViODY2NWVlZTAgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTBmYTdkZWM0NTljNDkyNDgzNzkxNjc1YmIxYzEwZTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcxOTA1OTgyNmVhNDQ2MGM5YWRmYTFjYThhYTg4MGQ3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NTQ2ZTc4YjA4N2M0MDViYjI3NDllODRiODExZGZmNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QwZWE3NzEwZTNjYzQzOWRiN2IxNjI2NWJhMzYwOTA2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84YWMyMDAwYWNkOTQ0YmZjYTg4M2E0MmIwNWRlMjQxMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNjhkMTliYTg0Mzk0YjE4ODdlYWQ4ZWI4ZmEzZWE3YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzBkZmFmNzllZjAwNDYyNGFkN2I3NTFkNjBjZDc3NzAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzA5MzgwZWVmNjk2NDVjMDk0NTFhMDUwZTI5OWZhZGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTI3NDRjNjg1MjBmNDQ4Y2FhZjMyNGMxYTQ3MGU0ZGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84ZWFhYzNmYzU0ZmQ0YjUxYWUzYzNkOTU2MTc0Mjc3YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wYjlmODBiODkxZDE0ZGY2YTg0NDk2ZGIyYTRlMWM5NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDE4YjViN2U3ZGJkNDRiOGI2OTU3ZWYyYzA0Yjg4NzUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MDcxZDdiZDMyMWQ0NzQ5OGUwZTk5NTc0Y2U4MGQ5NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjE2YmY0YzM3MzE3NGM2MzkxYTE5NmQ4YTUzZGVlOGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGIzM2ExODMxZWY1NGQ4NGE4MDUwZWUwZGE0OWI4M2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU2YWM2YjA0Y2M4ODRmOTNhM2RhOTM5ZjE1NzE1ZjU0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZjZGMwMzIzNDM5YjQwMThhZTU0NTAyZmUyYWE0NGIxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzIxZDEyYzAyZDBmNDY3MWExZjVhNzYyOTU0Y2U2MWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMmNhOGY0MWI5OGM0Mjc1OTc0OWYxNzc2MDljNGZkYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRkMTcyMmZlMjFiYzRmZjZhYjI4OWE3OTZiMGViZmZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFlYjZkNzlkZjM0YjRiMWE5ZGRjMDNhY2NkMzZjZGEyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTdlZDA0YjAyNTJjNGViNGE5N2FkZGYyYjg4MTEzMDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ExNWNmOGM2ZTQzOTQ2YjdhNWYyZjgyNTNkMTI4NmUyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xOGIxMTY0NGFkZTc0YjY0YTJmMGIyZjE2MDk3M2Q1MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGFkYTA3ZGUwODNmNDMzMmFiNDc1MjFiZTcwMWNmNjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZTQyZmFlMDhmMWY0OGY4OTkxYTdkZDc4MGE3NzRmZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDA4NDgxMjlkNGE3NDQwNmExZDY3NmE2ZTExM2UyNjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODQ5OGNkZjc1MzI5NGI2ODkxMmQwOWQzYWZiYWFlZmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjY0ZTQ4MzBhNTI2NGE4OWEwZWU3NjA5MTY1Yjk2ZmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNDc2NDM4N2Q4OGU0ZGNkOWM1ZDAxZjFlM2MyY2VmMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lYzc4Mzg2NjM4NGE0NWUxOGY3MGJiYWYyMmU4MmEyNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QxYmExNzM4NTAyNTQzMGI4N2VmYjdmYWZlYmIwZTU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E0OWY4YjY3YzAyYjRmNWE4M2YyNzZlMTAyMzU4MzUyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM5OTZiMTQxODA3ZjQ1NzhiNjFhN2Q2NDg3NDZiMDEwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U3NzA3YmRhMTRjMzQ4ZjNiMGMwY2VhMjRlZGM1NmU4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTlkZDZhZDkwOTFkNGUxODhmMTAyMzdmNDdjMzRlYzkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kZGY2ODU4MDllY2E0MTE5YmYxZTA5OThiNDNjODlmNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzllODFmOGZkMDhkMjQ4Nzg5ODk2MzMyYzFjMjE2MmJhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhhNGRmMjFmMTQ2MjQ3YWJiZjc4YzJhZGNmYmYwOTZmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjk3N2U3MDdmZGI3NDdjOWEzNDc5YTMyOWM2OTQzMjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kZDlmZTg1Y2MyNjE0YTk3ODRhYzNmNzYzYjkyMWNhNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kMjgzN2Q3Mjk2NDI0MDQ4OWNjNTY5MjBjZmM4ZWU4ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hM2MzYmI5OTUwMjA0MWJiYjcxZTEzNmUzM2Q0NzRjMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83YzQ0YTM1MGNjMmU0MDZiYTdjYTBmZGVhODY2NGJhOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjMyNzEzM2FlMDhjNDY5M2IyOWI4MWUwNjQ0YjQ0MjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jNDVmMTJmMjMwYTQ0MWEyYjcwNmIwZDJlYmMzYjU5YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVhNjI1OTFkOTIwODQ0MmQ5ZDA0MDI5NjZmN2Y2OGM3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JiZjVkZTAzYmI4OTRkZWRhM2EwZTk3ZDMzOTNjOWU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MyODNjYmU5ZGJhMzRiMDdhMThmYzhjYmFhY2JiNjIxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JmNmY5ZjU1YzQ1MDQyYTZhNmM1NjhhMjFjMGU3YjcwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U5NWMxNmM5MzJlYTQ5MGU5YTE5YmI5ZTIwYjA5MjMzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTk3MzYyMGU4M2YxNDdiMWE1OTYzZjQ2YWFkM2NjNzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mZWU4YzU5MjZlMjU0YjkyOWY1YzRmNGJjOTNkMGFjYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mZWUxOWQ5ZGJhNGY0YTVmOTU3ZTA4ZGIyMDU2YzRkZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80NzIyZmIyNTkxNTk0OWJiYmEzODQ1ODNmYThlYjJjMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFhYjFiMmIyYWYxZjRhNzJiNWUyNzkxNzE1NmZjNTU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y5OTMzMDM5MjZhMjQ4NTg5OGM3MTk3OTRhMTQyNjNkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmNlNTk3Njc1ZDc4NGQyZDkzYjcwZWM4NThjNzA3OGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTE4MDVmZTRmY2YwNGNmY2IyOWFmNGFhYWRjY2NjODEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg1OTQ4ODgxYTU2ODQwOTM4NWI2ODY5ZDJkZjdlYjI5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MWVlY2JiNzNkZTE0YjU2ODFlMmFhN2M5MzBhZWMzMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGJhYTNiNTU2YzlhNDViZDllNjFmM2M1ODg5MDBkYmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjU0MDc4MzI2Y2ZiNDU5YmIzMTNiYzExMjQwOWVlMzUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmUzOGZlN2IyN2I0NDFmMWI4ODQzMTY3MWM3ZjkxYTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzI1MzhiM2YxZWJkNDk2ZDkwNGMyMzZjZTQ1ZTIzMGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTdiNzFmNjM4MzI4NDU0Njg0Y2ZmZmY5NGM5MDUwZGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZDgzODU1NzFhMzI0NDdiYmNiZjE1ODI4NjIwZGQwYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85YmU5MmUxODhmNDg0ZTY0YWE2NWYxNTQ1YmE4NzkxYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY5YmQxY2NmNjQzZTRiN2Y4ZTk5ZmYzYWY1NDRkZjNlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VhZmIyYmQzY2Q0NTQxNmU4NWQzYzZmNTViNWYyY2VmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzczNGUxYTE5MzM3ODQ2NGNhZmYwZjIzZTI3NTM4Y2RhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYjUwMDYyNDdmOTA0ZjUzOWJlNDMzZTJkNGE1MjExNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2NmMTdlZjE4MDM1NDljMmFmZTMyNWYzNDk3NWY5ZmYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUwYWVkMTBmMWJiZTQ1ZDM5NzE0ZWY1NzRmNjA1NzJlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTYxNDQ0ZDRlOWIwNDUwNTgwN2Y2YjAyZjMwNDg2MmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzY5MjU3OTEwMzBmNDY5NWI5MDE2ZTQ3YWI1NThlNjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jN2I4MjM5Mjk2ZmY0YzZlYjk4M2MxMTdkNDU0MWRmMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWQyNWY3ZTZiZDk0NGE3ZGIwNmMxYWU5ZjA5ZjBlOTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE3NTZjMjEwMDhiYTQ2OWI4YTYxNGRlZTA5NTk1M2ZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNmZmMTM4MWY4MTk0ODNkOWRmYWEwY2E1ZWUwZWY5NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI1YTRhNTBlMjRhYzRhNmRiYzY2NmQ0OWEzZDBhYmQ2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVmYmUxOTZiODcwMDRhMmI5MDYzNTY0ZWU4NTliMzdlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FlMzQ4MWVkNWE1NTRmZjQ4NTgwYTYzOWVlMjU0NzBkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84YmQ3OGE2NWMzZjY0NGU3YjU1MjViOWU2MmNkOGM1NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U0OTk4NTI0ZjBmYjQ2MTU5NWQ4OGJhYWViODExMmY3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNkZjY2NWZkM2QyZTQ3MmQ4NThjMTQ5ZGZmNzQ1M2Y3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAzYTEyMTkwZTdjZDRjZjdhODI2MzA4YTE0NmU2OWI2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMDkxNTFlZDMxZWM0MTcwOTgzMGRhYTMzMjFmMTBkNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yM2NkMWI0NmQ1YmU0MDIzODlmNTZlNjI0OTlhOThmNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM2Mzc5YWZkNmQ5MDRhOGI4Mjc4ZTI1NGM5NTY3MmQ3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmIyZTkzNTU4YjM0NDY5Nzg0ZTFlZWU1ZTk1YzU0OGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mNTUwN2FhOGQwNTE0MjZhYjU3NjBmMGU0ZTZhMmE4YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE5YzM5MDZkZDQ2NTQ5OWFhZjY2YjNjODQ0MTlhNzEzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWUxYzJlMzc0NDVjNGMwN2FjMDcxNmU4ZTQ0MzdiYmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ZjVhYWU2OGFkY2E0N2FkOThjOWQ3NmYyMGE0ZDdiOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNjBiZDNhNWZiMGU0MjUwYWJlNWY3MjkyMTc5MTI2NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZlZTQ1NDNlNDk2MDQ2N2JiMTY4NmNlYmY4NTU5OGJjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWNmZTliMzFhNTVjNDc3YWI1OTBmY2NkY2Q2ODI1YjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGI1ZmUyYmQwYzUzNDYxYzgxZWZjNTI2MDhjMzkwYzYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2RiNTlkZGJkNzQ4NGRjNzlmZmMyZjg0YzY2NGFjYTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fde9d246780>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# instantiate a feature group for the incidents in the dataframe\n",
"incidents = folium.map.FeatureGroup()\n",
"\n",
"# loop through the 100 crimes and add each to the incidents feature group\n",
"for lat, lng, in zip(df_incidents.Y, df_incidents.X):\n",
" incidents.add_child(\n",
" folium.features.CircleMarker(\n",
" [lat, lng],\n",
" radius=5, # define how big you want the circle markers to be\n",
" color='yellow',\n",
" fill=True,\n",
" fill_color='blue',\n",
" fill_opacity=0.6\n",
" )\n",
" )\n",
"\n",
"# add incidents to map\n",
"sanfran_map.add_child(incidents)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"You can also add some pop-up text that would get displayed when you hover over a marker. Let's make each marker display the category of the crime when hovered over."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": 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;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfNTRkODk3NjdiNzg1NDRhMjg4YTNiNmViODY2NWVlZTAgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTBmYTdkZWM0NTljNDkyNDgzNzkxNjc1YmIxYzEwZTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcxOTA1OTgyNmVhNDQ2MGM5YWRmYTFjYThhYTg4MGQ3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NTQ2ZTc4YjA4N2M0MDViYjI3NDllODRiODExZGZmNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QwZWE3NzEwZTNjYzQzOWRiN2IxNjI2NWJhMzYwOTA2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84YWMyMDAwYWNkOTQ0YmZjYTg4M2E0MmIwNWRlMjQxMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNjhkMTliYTg0Mzk0YjE4ODdlYWQ4ZWI4ZmEzZWE3YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzBkZmFmNzllZjAwNDYyNGFkN2I3NTFkNjBjZDc3NzAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzA5MzgwZWVmNjk2NDVjMDk0NTFhMDUwZTI5OWZhZGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTI3NDRjNjg1MjBmNDQ4Y2FhZjMyNGMxYTQ3MGU0ZGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84ZWFhYzNmYzU0ZmQ0YjUxYWUzYzNkOTU2MTc0Mjc3YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wYjlmODBiODkxZDE0ZGY2YTg0NDk2ZGIyYTRlMWM5NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDE4YjViN2U3ZGJkNDRiOGI2OTU3ZWYyYzA0Yjg4NzUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MDcxZDdiZDMyMWQ0NzQ5OGUwZTk5NTc0Y2U4MGQ5NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjE2YmY0YzM3MzE3NGM2MzkxYTE5NmQ4YTUzZGVlOGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGIzM2ExODMxZWY1NGQ4NGE4MDUwZWUwZGE0OWI4M2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU2YWM2YjA0Y2M4ODRmOTNhM2RhOTM5ZjE1NzE1ZjU0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZjZGMwMzIzNDM5YjQwMThhZTU0NTAyZmUyYWE0NGIxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzIxZDEyYzAyZDBmNDY3MWExZjVhNzYyOTU0Y2U2MWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMmNhOGY0MWI5OGM0Mjc1OTc0OWYxNzc2MDljNGZkYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRkMTcyMmZlMjFiYzRmZjZhYjI4OWE3OTZiMGViZmZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFlYjZkNzlkZjM0YjRiMWE5ZGRjMDNhY2NkMzZjZGEyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTdlZDA0YjAyNTJjNGViNGE5N2FkZGYyYjg4MTEzMDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ExNWNmOGM2ZTQzOTQ2YjdhNWYyZjgyNTNkMTI4NmUyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xOGIxMTY0NGFkZTc0YjY0YTJmMGIyZjE2MDk3M2Q1MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGFkYTA3ZGUwODNmNDMzMmFiNDc1MjFiZTcwMWNmNjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZTQyZmFlMDhmMWY0OGY4OTkxYTdkZDc4MGE3NzRmZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDA4NDgxMjlkNGE3NDQwNmExZDY3NmE2ZTExM2UyNjcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODQ5OGNkZjc1MzI5NGI2ODkxMmQwOWQzYWZiYWFlZmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjY0ZTQ4MzBhNTI2NGE4OWEwZWU3NjA5MTY1Yjk2ZmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNDc2NDM4N2Q4OGU0ZGNkOWM1ZDAxZjFlM2MyY2VmMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lYzc4Mzg2NjM4NGE0NWUxOGY3MGJiYWYyMmU4MmEyNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QxYmExNzM4NTAyNTQzMGI4N2VmYjdmYWZlYmIwZTU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E0OWY4YjY3YzAyYjRmNWE4M2YyNzZlMTAyMzU4MzUyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM5OTZiMTQxODA3ZjQ1NzhiNjFhN2Q2NDg3NDZiMDEwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U3NzA3YmRhMTRjMzQ4ZjNiMGMwY2VhMjRlZGM1NmU4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTlkZDZhZDkwOTFkNGUxODhmMTAyMzdmNDdjMzRlYzkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kZGY2ODU4MDllY2E0MTE5YmYxZTA5OThiNDNjODlmNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzllODFmOGZkMDhkMjQ4Nzg5ODk2MzMyYzFjMjE2MmJhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhhNGRmMjFmMTQ2MjQ3YWJiZjc4YzJhZGNmYmYwOTZmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjk3N2U3MDdmZGI3NDdjOWEzNDc5YTMyOWM2OTQzMjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kZDlmZTg1Y2MyNjE0YTk3ODRhYzNmNzYzYjkyMWNhNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kMjgzN2Q3Mjk2NDI0MDQ4OWNjNTY5MjBjZmM4ZWU4ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hM2MzYmI5OTUwMjA0MWJiYjcxZTEzNmUzM2Q0NzRjMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83YzQ0YTM1MGNjMmU0MDZiYTdjYTBmZGVhODY2NGJhOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjMyNzEzM2FlMDhjNDY5M2IyOWI4MWUwNjQ0YjQ0MjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jNDVmMTJmMjMwYTQ0MWEyYjcwNmIwZDJlYmMzYjU5YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVhNjI1OTFkOTIwODQ0MmQ5ZDA0MDI5NjZmN2Y2OGM3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JiZjVkZTAzYmI4OTRkZWRhM2EwZTk3ZDMzOTNjOWU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MyODNjYmU5ZGJhMzRiMDdhMThmYzhjYmFhY2JiNjIxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JmNmY5ZjU1YzQ1MDQyYTZhNmM1NjhhMjFjMGU3YjcwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U5NWMxNmM5MzJlYTQ5MGU5YTE5YmI5ZTIwYjA5MjMzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTk3MzYyMGU4M2YxNDdiMWE1OTYzZjQ2YWFkM2NjNzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mZWU4YzU5MjZlMjU0YjkyOWY1YzRmNGJjOTNkMGFjYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mZWUxOWQ5ZGJhNGY0YTVmOTU3ZTA4ZGIyMDU2YzRkZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80NzIyZmIyNTkxNTk0OWJiYmEzODQ1ODNmYThlYjJjMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFhYjFiMmIyYWYxZjRhNzJiNWUyNzkxNzE1NmZjNTU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y5OTMzMDM5MjZhMjQ4NTg5OGM3MTk3OTRhMTQyNjNkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmNlNTk3Njc1ZDc4NGQyZDkzYjcwZWM4NThjNzA3OGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTE4MDVmZTRmY2YwNGNmY2IyOWFmNGFhYWRjY2NjODEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg1OTQ4ODgxYTU2ODQwOTM4NWI2ODY5ZDJkZjdlYjI5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MWVlY2JiNzNkZTE0YjU2ODFlMmFhN2M5MzBhZWMzMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGJhYTNiNTU2YzlhNDViZDllNjFmM2M1ODg5MDBkYmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjU0MDc4MzI2Y2ZiNDU5YmIzMTNiYzExMjQwOWVlMzUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmUzOGZlN2IyN2I0NDFmMWI4ODQzMTY3MWM3ZjkxYTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzI1MzhiM2YxZWJkNDk2ZDkwNGMyMzZjZTQ1ZTIzMGQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTdiNzFmNjM4MzI4NDU0Njg0Y2ZmZmY5NGM5MDUwZGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZDgzODU1NzFhMzI0NDdiYmNiZjE1ODI4NjIwZGQwYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85YmU5MmUxODhmNDg0ZTY0YWE2NWYxNTQ1YmE4NzkxYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY5YmQxY2NmNjQzZTRiN2Y4ZTk5ZmYzYWY1NDRkZjNlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VhZmIyYmQzY2Q0NTQxNmU4NWQzYzZmNTViNWYyY2VmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzczNGUxYTE5MzM3ODQ2NGNhZmYwZjIzZTI3NTM4Y2RhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYjUwMDYyNDdmOTA0ZjUzOWJlNDMzZTJkNGE1MjExNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2NmMTdlZjE4MDM1NDljMmFmZTMyNWYzNDk3NWY5ZmYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUwYWVkMTBmMWJiZTQ1ZDM5NzE0ZWY1NzRmNjA1NzJlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTYxNDQ0ZDRlOWIwNDUwNTgwN2Y2YjAyZjMwNDg2MmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzY5MjU3OTEwMzBmNDY5NWI5MDE2ZTQ3YWI1NThlNjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jN2I4MjM5Mjk2ZmY0YzZlYjk4M2MxMTdkNDU0MWRmMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWQyNWY3ZTZiZDk0NGE3ZGIwNmMxYWU5ZjA5ZjBlOTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE3NTZjMjEwMDhiYTQ2OWI4YTYxNGRlZTA5NTk1M2ZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNmZmMTM4MWY4MTk0ODNkOWRmYWEwY2E1ZWUwZWY5NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI1YTRhNTBlMjRhYzRhNmRiYzY2NmQ0OWEzZDBhYmQ2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVmYmUxOTZiODcwMDRhMmI5MDYzNTY0ZWU4NTliMzdlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FlMzQ4MWVkNWE1NTRmZjQ4NTgwYTYzOWVlMjU0NzBkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84YmQ3OGE2NWMzZjY0NGU3YjU1MjViOWU2MmNkOGM1NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U0OTk4NTI0ZjBmYjQ2MTU5NWQ4OGJhYWViODExMmY3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNkZjY2NWZkM2QyZTQ3MmQ4NThjMTQ5ZGZmNzQ1M2Y3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAzYTEyMTkwZTdjZDRjZjdhODI2MzA4YTE0NmU2OWI2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMDkxNTFlZDMxZWM0MTcwOTgzMGRhYTMzMjFmMTBkNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yM2NkMWI0NmQ1YmU0MDIzODlmNTZlNjI0OTlhOThmNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzM2Mzc5YWZkNmQ5MDRhOGI4Mjc4ZTI1NGM5NTY3MmQ3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmIyZTkzNTU4YjM0NDY5Nzg0ZTFlZWU1ZTk1YzU0OGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mNTUwN2FhOGQwNTE0MjZhYjU3NjBmMGU0ZTZhMmE4YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE5YzM5MDZkZDQ2NTQ5OWFhZjY2YjNjODQ0MTlhNzEzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWUxYzJlMzc0NDVjNGMwN2FjMDcxNmU4ZTQ0MzdiYmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ZjVhYWU2OGFkY2E0N2FkOThjOWQ3NmYyMGE0ZDdiOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNjBiZDNhNWZiMGU0MjUwYWJlNWY3MjkyMTc5MTI2NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF82ZWIyOTRiYzE3OWY0NDliYTZjOWY2ZTdiMDZhYTkwNCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZlZTQ1NDNlNDk2MDQ2N2JiMTY4NmNlYmY4NTU5OGJjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWNmZTliMzFhNTVjNDc3YWI1OTBmY2NkY2Q2ODI1YjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZGI1ZmUyYmQwYzUzNDYxYzgxZWZjNTI2MDhjMzkwYzYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzZlYjI5NGJjMTc5ZjQ0OWJhNmM5ZjZlN2IwNmFhOTA0KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2RiNTlkZGJkNzQ4NGRjNzlmZmMyZjg0YzY2NGFjYTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNmViMjk0YmMxNzlmNDQ5YmE2YzlmNmU3YjA2YWE5MDQpOwogICAgICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hOGU4OTBjNTMwMDU0ZDJhYWM5YTIyNTNlNTBlMTg1NCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODY0MzAwNjkxNmRjNDBmZGFlOWYwMjI0OGExYjcxMjAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTgxZGM0YjM4YzhlNGQxN2I0Mzc4NTAxYzFlNTYzZmUgPSAkKCc8ZGl2IGlkPSJodG1sXzE4MWRjNGIzOGM4ZTRkMTdiNDM3ODUwMWMxZTU2M2ZlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XRUFQT04gTEFXUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODY0MzAwNjkxNmRjNDBmZGFlOWYwMjI0OGExYjcxMjAuc2V0Q29udGVudChodG1sXzE4MWRjNGIzOGM4ZTRkMTdiNDM3ODUwMWMxZTU2M2ZlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYThlODkwYzUzMDA1NGQyYWFjOWEyMjUzZTUwZTE4NTQuYmluZFBvcHVwKHBvcHVwXzg2NDMwMDY5MTZkYzQwZmRhZTlmMDIyNDhhMWI3MTIwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Q2ZTdjZjRkMDNhYTQyNjk4YjNmYmViYjJiZGYxMDMwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kZjFmYmY4M2UzYjA0ZWJlYTQwYjE4ZjJmMTQwY2YwNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jYmYyOTIyMzI3YTE0YzI1YTFjZjNhMjNiYWEyYWRlZiA9ICQoJzxkaXYgaWQ9Imh0bWxfY2JmMjkyMjMyN2ExNGMyNWExY2YzYTIzYmFhMmFkZWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kZjFmYmY4M2UzYjA0ZWJlYTQwYjE4ZjJmMTQwY2YwNy5zZXRDb250ZW50KGh0bWxfY2JmMjkyMjMyN2ExNGMyNWExY2YzYTIzYmFhMmFkZWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kNmU3Y2Y0ZDAzYWE0MjY5OGIzZmJlYmIyYmRmMTAzMC5iaW5kUG9wdXAocG9wdXBfZGYxZmJmODNlM2IwNGViZWE0MGIxOGYyZjE0MGNmMDcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTNjZWQ2OWRmM2FhNDYzYjk5OGUxYWZjMDk2YWExNDQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjk5ODA5NjcyOTk1OTYsLTEyMi4zODg4NTYyMDQyOTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mMjk2OTY2YzE3YTU0MzhkYTMyYzIwZmU4MmFhODJlNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ZDlmZDI1MGYwNzg0ZTdiYTRkNGMyMDQ5MmEzYzA1YiA9ICQoJzxkaXYgaWQ9Imh0bWxfOWQ5ZmQyNTBmMDc4NGU3YmE0ZDRjMjA0OTJhM2MwNWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mMjk2OTY2YzE3YTU0MzhkYTMyYzIwZmU4MmFhODJlNi5zZXRDb250ZW50KGh0bWxfOWQ5ZmQyNTBmMDc4NGU3YmE0ZDRjMjA0OTJhM2MwNWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lM2NlZDY5ZGYzYWE0NjNiOTk4ZTFhZmMwOTZhYTE0NC5iaW5kUG9wdXAocG9wdXBfZjI5Njk2NmMxN2E1NDM4ZGEzMmMyMGZlODJhYTgyZTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTQ0ZjMyNWM3ZTAxNDI0MmFlMzE3NmE5ZTgyZGM0ZmIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU3ODgzNzY2ODg3OSwtMTIyLjQxMjk3MDUzNzU5MV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NkNDhjNjAwOWE1MjRmMDQ5N2Y5YWE3MDFhZDMxZWViID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I4ZjIzYjA4NGJiMTQwNzdiNzExOTM0OWFkZTg5Zjg3ID0gJCgnPGRpdiBpZD0iaHRtbF9iOGYyM2IwODRiYjE0MDc3YjcxMTkzNDlhZGU4OWY4NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jZDQ4YzYwMDlhNTI0ZjA0OTdmOWFhNzAxYWQzMWVlYi5zZXRDb250ZW50KGh0bWxfYjhmMjNiMDg0YmIxNDA3N2I3MTE5MzQ5YWRlODlmODcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81NDRmMzI1YzdlMDE0MjQyYWUzMTc2YTllODJkYzRmYi5iaW5kUG9wdXAocG9wdXBfY2Q0OGM2MDA5YTUyNGYwNDk3ZjlhYTcwMWFkMzFlZWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMzc5ODk1NzhjZmUzNGUxNTljZmU0MDFlMzNmOWYxYzEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjUwNTAxMjE0NjY4LC0xMjIuNDE5NjcxNzgwMjk2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTAxMWExMmEwMGNjNGUzYjk1N2Q3MzNhMzJiZDVmNzkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzAzNWRjMmZjMjZhNDg5N2FkNjZkOGY4NmRkNDljM2EgPSAkKCc8ZGl2IGlkPSJodG1sXzcwMzVkYzJmYzI2YTQ4OTdhZDY2ZDhmODZkZDQ5YzNhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2EwMTFhMTJhMDBjYzRlM2I5NTdkNzMzYTMyYmQ1Zjc5LnNldENvbnRlbnQoaHRtbF83MDM1ZGMyZmMyNmE0ODk3YWQ2NmQ4Zjg2ZGQ0OWMzYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzM3OTg5NTc4Y2ZlMzRlMTU5Y2ZlNDAxZTMzZjlmMWMxLmJpbmRQb3B1cChwb3B1cF9hMDExYTEyYTAwY2M0ZTNiOTU3ZDczM2EzMmJkNWY3OSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84OGFlOTE3MTkzNDk0MzZmYjg1OTZmZjM5ODQ2MmI0NCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTM0ZDMxNDYwMmE3NDI0YmJlNDJlMjgwMzdiZGQxZDkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGMwZjY0MTlkNjkzNGQ4NWFmODk5NDgwNzNlZjVkMmIgPSAkKCc8ZGl2IGlkPSJodG1sXzRjMGY2NDE5ZDY5MzRkODVhZjg5OTQ4MDczZWY1ZDJiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81MzRkMzE0NjAyYTc0MjRiYmU0MmUyODAzN2JkZDFkOS5zZXRDb250ZW50KGh0bWxfNGMwZjY0MTlkNjkzNGQ4NWFmODk5NDgwNzNlZjVkMmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84OGFlOTE3MTkzNDk0MzZmYjg1OTZmZjM5ODQ2MmI0NC5iaW5kUG9wdXAocG9wdXBfNTM0ZDMxNDYwMmE3NDI0YmJlNDJlMjgwMzdiZGQxZDkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZmE1NWU0YzVjNjdjNDViNmI1NWUwMjljNjU5YTQwY2QgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDQ5NDc5ZDcxYjNmNDhjZGFlN2NmODUyYWY0OWE5MDQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTBhY2IwOWFmNTdmNGI0M2JlNGRhZGNlYzQzNDcxNzggPSAkKCc8ZGl2IGlkPSJodG1sX2EwYWNiMDlhZjU3ZjRiNDNiZTRkYWRjZWM0MzQ3MTc4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDQ5NDc5ZDcxYjNmNDhjZGFlN2NmODUyYWY0OWE5MDQuc2V0Q29udGVudChodG1sX2EwYWNiMDlhZjU3ZjRiNDNiZTRkYWRjZWM0MzQ3MTc4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZmE1NWU0YzVjNjdjNDViNmI1NWUwMjljNjU5YTQwY2QuYmluZFBvcHVwKHBvcHVwXzQ0OTQ3OWQ3MWIzZjQ4Y2RhZTdjZjg1MmFmNDlhOTA0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzljYzdiMmViMGFmYjQyOTZhMDQ2NjYyMzczMWU2ZGI2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzOTgwNTU5MjYzNCwtMTIyLjQxMTc3ODI5NTk5Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM1N2NiMzJjZTgwZjQxNjc4MmM3NTYxNTgzMTE4OTQ1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc3YjEyNGM5MWM4NjQ0ODNhMjA4ZmY2NjUyMmNkZTJlID0gJCgnPGRpdiBpZD0iaHRtbF83N2IxMjRjOTFjODY0NDgzYTIwOGZmNjY1MjJjZGUyZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNTdjYjMyY2U4MGY0MTY3ODJjNzU2MTU4MzExODk0NS5zZXRDb250ZW50KGh0bWxfNzdiMTI0YzkxYzg2NDQ4M2EyMDhmZjY2NTIyY2RlMmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85Y2M3YjJlYjBhZmI0Mjk2YTA0NjY2MjM3MzFlNmRiNi5iaW5kUG9wdXAocG9wdXBfMzU3Y2IzMmNlODBmNDE2NzgyYzc1NjE1ODMxMTg5NDUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzkyZmJjNDhlZTU5NGY1NGFmY2Q0NjY0Njc1MDM2MDAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83YzY3NjRlYzY5MWY0ZTBjYjliNjA4Zjk1OTlmOGMxZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hOWVlNDYzMDkwYWM0OTkyOGIxODMxODJkMWQyNjUzOCA9ICQoJzxkaXYgaWQ9Imh0bWxfYTllZTQ2MzA5MGFjNDk5MjhiMTgzMTgyZDFkMjY1MzgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83YzY3NjRlYzY5MWY0ZTBjYjliNjA4Zjk1OTlmOGMxZS5zZXRDb250ZW50KGh0bWxfYTllZTQ2MzA5MGFjNDk5MjhiMTgzMTgyZDFkMjY1MzgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83OTJmYmM0OGVlNTk0ZjU0YWZjZDQ2NjQ2NzUwMzYwMC5iaW5kUG9wdXAocG9wdXBfN2M2NzY0ZWM2OTFmNGUwY2I5YjYwOGY5NTk5ZjhjMWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMGUwN2RlYzE5YTFjNDRkODk4ZWQ3ZTU5OTZiYTg2MDkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjA5NjY5NjE1NDk5LC0xMjIuMzg3MTgxNjM1OTk1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzczNDIzMTgwOTk5NGMwMWFkMWZlMjM5ZjNlZmZhOGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDBiMDA4NzBiMTUzNGI4ZGI4MDJmMjJiNDA0OTcyYWEgPSAkKCc8ZGl2IGlkPSJodG1sX2QwYjAwODcwYjE1MzRiOGRiODAyZjIyYjQwNDk3MmFhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzczNDIzMTgwOTk5NGMwMWFkMWZlMjM5ZjNlZmZhOGEuc2V0Q29udGVudChodG1sX2QwYjAwODcwYjE1MzRiOGRiODAyZjIyYjQwNDk3MmFhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMGUwN2RlYzE5YTFjNDRkODk4ZWQ3ZTU5OTZiYTg2MDkuYmluZFBvcHVwKHBvcHVwXzM3MzQyMzE4MDk5OTRjMDFhZDFmZTIzOWYzZWZmYThhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzBkMjlhNTc1YjljZDRiYTRiOTRlYjdiMDU1YTIxZDA0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDc4MTU3ODY5NTA1LC0xMjIuNDc3Mzc2NTI0MDAyOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMTY1OGRkYzc3NDk0NjYyYWRkYzJmMWQ3NzkyNjdmMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NWE4NmUzOTk0MDM0M2U4YjBjODkxMDJmNmNkNjg3NCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTVhODZlMzk5NDAzNDNlOGIwYzg5MTAyZjZjZDY4NzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UxNjU4ZGRjNzc0OTQ2NjJhZGRjMmYxZDc3OTI2N2YzLnNldENvbnRlbnQoaHRtbF85NWE4NmUzOTk0MDM0M2U4YjBjODkxMDJmNmNkNjg3NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzBkMjlhNTc1YjljZDRiYTRiOTRlYjdiMDU1YTIxZDA0LmJpbmRQb3B1cChwb3B1cF9lMTY1OGRkYzc3NDk0NjYyYWRkYzJmMWQ3NzkyNjdmMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81OWM2OTM5NzFlNjY0Zjg5ODI1NmIzOWYyNTc4ZjQzOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NTczODk0Mjk2NTQ5NSwtMTIyLjQ3Nzk2MDMyNzI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI5ODdlZjU0Zjg4ZTRkNDBhN2VjZDhjMDU1YTMyNTAzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAyZTU0YjVjNzkyMjQ2ZjFhMWVmZDIzZDI4MTYyYWNiID0gJCgnPGRpdiBpZD0iaHRtbF8wMmU1NGI1Yzc5MjI0NmYxYTFlZmQyM2QyODE2MmFjYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yOTg3ZWY1NGY4OGU0ZDQwYTdlY2Q4YzA1NWEzMjUwMy5zZXRDb250ZW50KGh0bWxfMDJlNTRiNWM3OTIyNDZmMWExZWZkMjNkMjgxNjJhY2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81OWM2OTM5NzFlNjY0Zjg5ODI1NmIzOWYyNTc4ZjQzOC5iaW5kUG9wdXAocG9wdXBfMjk4N2VmNTRmODhlNGQ0MGE3ZWNkOGMwNTVhMzI1MDMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2JmZDc1MWQxODZiNDY4MWE1MzExZTA5MzlkZDUyNzEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzU2OTcwMjc1NDgyMDYsLTEyMi4zNzY3NTc2NTU1MzAwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NlNjA1YmVkOGM4YzRmZDE4YjljNDE2NWM2OWQxMjRkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU2NGEzZjIxZGRkNDQ1YmRhZjc2M2E5NTI0OWExYzljID0gJCgnPGRpdiBpZD0iaHRtbF81NjRhM2YyMWRkZDQ0NWJkYWY3NjNhOTUyNDlhMWM5YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NlNjA1YmVkOGM4YzRmZDE4YjljNDE2NWM2OWQxMjRkLnNldENvbnRlbnQoaHRtbF81NjRhM2YyMWRkZDQ0NWJkYWY3NjNhOTUyNDlhMWM5Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2NiZmQ3NTFkMTg2YjQ2ODFhNTMxMWUwOTM5ZGQ1MjcxLmJpbmRQb3B1cChwb3B1cF9jZTYwNWJlZDhjOGM0ZmQxOGI5YzQxNjVjNjlkMTI0ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xYmUxMDhmYzAxZTM0YThhYjJlOGUyYmUyZDYwMDQ4ZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTI3MDUxOTk1OTIsLTEyMi40MzIzMjU4NzEwMjhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84NmM1NjYwMWE3NTI0YmZjYWY0Y2JjMDM3YjEzNDAxMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83YWNhNTMzMTBmYTU0ZjdjOWUzOWFiOGJhZmI2YzA0ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfN2FjYTUzMzEwZmE1NGY3YzllMzlhYjhiYWZiNmMwNGQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg2YzU2NjAxYTc1MjRiZmNhZjRjYmMwMzdiMTM0MDEyLnNldENvbnRlbnQoaHRtbF83YWNhNTMzMTBmYTU0ZjdjOWUzOWFiOGJhZmI2YzA0ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzFiZTEwOGZjMDFlMzRhOGFiMmU4ZTJiZTJkNjAwNDhmLmJpbmRQb3B1cChwb3B1cF84NmM1NjYwMWE3NTI0YmZjYWY0Y2JjMDM3YjEzNDAxMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xNjAzMTQxMDNhYzE0NDEzOWJiMDQ2MmNiYTYwZGE1ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MTY0Mjk4MjM4NCwtMTIyLjQwMDkwODY5ODg4OTk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjk2MWJiZTlmNjBhNDVmMWFkMjgyNTA2NWRmNmE5MGIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGY0YTY0ZjY1NTg1NDg1NjljNGNkNzU1ZjQyYmViYmYgPSAkKCc8ZGl2IGlkPSJodG1sXzRmNGE2NGY2NTU4NTQ4NTY5YzRjZDc1NWY0MmJlYmJmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjk2MWJiZTlmNjBhNDVmMWFkMjgyNTA2NWRmNmE5MGIuc2V0Q29udGVudChodG1sXzRmNGE2NGY2NTU4NTQ4NTY5YzRjZDc1NWY0MmJlYmJmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTYwMzE0MTAzYWMxNDQxMzliYjA0NjJjYmE2MGRhNWUuYmluZFBvcHVwKHBvcHVwXzY5NjFiYmU5ZjYwYTQ1ZjFhZDI4MjUwNjVkZjZhOTBiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2JmMzIzNDU2NTYwNTQxNDY4MTgwMmMyOGE5YmYxNzBkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VkNWViYzYwZDc1MDRmMDU5MzUwNjA2ZmFhZGY2MjgxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg0MzUxZTM1NzlmYTQzYzRiYjZhMmNmNDE4NGExYzU4ID0gJCgnPGRpdiBpZD0iaHRtbF84NDM1MWUzNTc5ZmE0M2M0YmI2YTJjZjQxODRhMWM1OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1RPTEVOIFBST1BFUlRZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lZDVlYmM2MGQ3NTA0ZjA1OTM1MDYwNmZhYWRmNjI4MS5zZXRDb250ZW50KGh0bWxfODQzNTFlMzU3OWZhNDNjNGJiNmEyY2Y0MTg0YTFjNTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iZjMyMzQ1NjU2MDU0MTQ2ODE4MDJjMjhhOWJmMTcwZC5iaW5kUG9wdXAocG9wdXBfZWQ1ZWJjNjBkNzUwNGYwNTkzNTA2MDZmYWFkZjYyODEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWM1MzE2NWE1NGRhNDg0Y2JiNTllODZjZWQ2YzFjZGEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTcyODk1OTA0NTc3OTUsLTEyMi40MDY4NzA0MDIwODJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83NDNiMWU0YzE4MjA0NDU4ODlkYzdmOWE4NzRmZDBlZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wNmM2ZGRiODM4Mjk0YTgzYTFiOWVmYTJiMTQwYWEzYyA9ICQoJzxkaXYgaWQ9Imh0bWxfMDZjNmRkYjgzODI5NGE4M2ExYjllZmEyYjE0MGFhM2MiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc0M2IxZTRjMTgyMDQ0NTg4OWRjN2Y5YTg3NGZkMGVkLnNldENvbnRlbnQoaHRtbF8wNmM2ZGRiODM4Mjk0YTgzYTFiOWVmYTJiMTQwYWEzYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzFjNTMxNjVhNTRkYTQ4NGNiYjU5ZTg2Y2VkNmMxY2RhLmJpbmRQb3B1cChwb3B1cF83NDNiMWU0YzE4MjA0NDU4ODlkYzdmOWE4NzRmZDBlZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mZmJlOTI5ZjYyMTE0OGFkOWQ1MGVkODVhOGUyNDg0YSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0ODkwNjMwNTE4MjksLTEyMi40MjAzNTQ3ODA4NjA5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg5MWI3NWQ4MDVjNDQ1YjVhNWExZTIzNjM0M2VkMDFkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU2YWE1NGU1NzM3YzQyMDhiYzY2YzcxNjcwMjE2YTE2ID0gJCgnPGRpdiBpZD0iaHRtbF81NmFhNTRlNTczN2M0MjA4YmM2NmM3MTY3MDIxNmExNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODkxYjc1ZDgwNWM0NDViNWE1YTFlMjM2MzQzZWQwMWQuc2V0Q29udGVudChodG1sXzU2YWE1NGU1NzM3YzQyMDhiYzY2YzcxNjcwMjE2YTE2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZmZiZTkyOWY2MjExNDhhZDlkNTBlZDg1YThlMjQ4NGEuYmluZFBvcHVwKHBvcHVwXzg5MWI3NWQ4MDVjNDQ1YjVhNWExZTIzNjM0M2VkMDFkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2MwNjY1NmFkY2Y2YTQwODY5Y2M5YTIzMzQ2NWU5OTU1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE1NzY1NDI2OTk1LC0xMjIuNDM5OTA5NzY2NzcyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjJjYzk0MGJiMjM5NGNkMWI3MTI0MTExMjY0YmEzODUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjI0MDViZDkwMzg0NDgxYjhlYjY4N2NlZTU1Nzg2OGEgPSAkKCc8ZGl2IGlkPSJodG1sXzIyNDA1YmQ5MDM4NDQ4MWI4ZWI2ODdjZWU1NTc4NjhhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yMmNjOTQwYmIyMzk0Y2QxYjcxMjQxMTEyNjRiYTM4NS5zZXRDb250ZW50KGh0bWxfMjI0MDViZDkwMzg0NDgxYjhlYjY4N2NlZTU1Nzg2OGEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jMDY2NTZhZGNmNmE0MDg2OWNjOWEyMzM0NjVlOTk1NS5iaW5kUG9wdXAocG9wdXBfMjJjYzk0MGJiMjM5NGNkMWI3MTI0MTExMjY0YmEzODUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmJkOTRmMzkzZTQ1NDk0ZWFiYWIxYzAyMTM2MTJiZGUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM1Njk5Mzg2OTE4LC0xMjIuNDA4NDIxMTE2OTIyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjlmYjZlMmY2MDIzNDYxNjk4NTJkNDIxOWM5ZWFlNDQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjRkNWU2OGM0MzMyNDY4ZmIzOTRlYTA1YTgzOWI0NGQgPSAkKCc8ZGl2IGlkPSJodG1sX2Y0ZDVlNjhjNDMzMjQ2OGZiMzk0ZWEwNWE4MzliNDRkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yOWZiNmUyZjYwMjM0NjE2OTg1MmQ0MjE5YzllYWU0NC5zZXRDb250ZW50KGh0bWxfZjRkNWU2OGM0MzMyNDY4ZmIzOTRlYTA1YTgzOWI0NGQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yYmQ5NGYzOTNlNDU0OTRlYWJhYjFjMDIxMzYxMmJkZS5iaW5kUG9wdXAocG9wdXBfMjlmYjZlMmY2MDIzNDYxNjk4NTJkNDIxOWM5ZWFlNDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODZjZDI1MGI5OTU1NGRkMGE3MTk0YTM1NWUzZDIwNzIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzM2MTg2Mjc2NDU2MDQsLTEyMi40MjIzMTU2NzA3NDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81ZDMwY2JjOTkyOTg0ODYwOTJjODU0Y2YxZTUwMGQ2YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YjM0MDgyN2E3MWU0YzVkODZhMjQ0Y2RiZDc4OTQ3NSA9ICQoJzxkaXYgaWQ9Imh0bWxfNGIzNDA4MjdhNzFlNGM1ZDg2YTI0NGNkYmQ3ODk0NzUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZSQVVEPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81ZDMwY2JjOTkyOTg0ODYwOTJjODU0Y2YxZTUwMGQ2Yy5zZXRDb250ZW50KGh0bWxfNGIzNDA4MjdhNzFlNGM1ZDg2YTI0NGNkYmQ3ODk0NzUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84NmNkMjUwYjk5NTU0ZGQwYTcxOTRhMzU1ZTNkMjA3Mi5iaW5kUG9wdXAocG9wdXBfNWQzMGNiYzk5Mjk4NDg2MDkyYzg1NGNmMWU1MDBkNmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjRlNDA2YzJhZWFmNGU1ZmIxMDNiM2QzNjM2NzkyYzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE1YWE0YzQ4YzRhYzQ1OWFhZmU4NDVkYjdkNjJkNGQ0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhjOWMxODVlYmE4ZDRkN2JhNjE0ZGRiN2QwZGFiMzZhID0gJCgnPGRpdiBpZD0iaHRtbF84YzljMTg1ZWJhOGQ0ZDdiYTYxNGRkYjdkMGRhYjM2YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE1YWE0YzQ4YzRhYzQ1OWFhZmU4NDVkYjdkNjJkNGQ0LnNldENvbnRlbnQoaHRtbF84YzljMTg1ZWJhOGQ0ZDdiYTYxNGRkYjdkMGRhYjM2YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzY0ZTQwNmMyYWVhZjRlNWZiMTAzYjNkMzYzNjc5MmM3LmJpbmRQb3B1cChwb3B1cF8xNWFhNGM0OGM0YWM0NTlhYWZlODQ1ZGI3ZDYyZDRkNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iNDRlM2UwM2U3ODc0YmY5OTZlNTg4YzcxMTBhZDQ2MyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzQ0OWJkMmM1NTE0NGQ3Zjk0OTNmOTBiMjk3ZDM2MDggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGRmZDVlZmY4NTNmNGExM2JmYTNiZWNhZDlkZDlhZjIgPSAkKCc8ZGl2IGlkPSJodG1sX2RkZmQ1ZWZmODUzZjRhMTNiZmEzYmVjYWQ5ZGQ5YWYyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83NDQ5YmQyYzU1MTQ0ZDdmOTQ5M2Y5MGIyOTdkMzYwOC5zZXRDb250ZW50KGh0bWxfZGRmZDVlZmY4NTNmNGExM2JmYTNiZWNhZDlkZDlhZjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iNDRlM2UwM2U3ODc0YmY5OTZlNTg4YzcxMTBhZDQ2My5iaW5kUG9wdXAocG9wdXBfNzQ0OWJkMmM1NTE0NGQ3Zjk0OTNmOTBiMjk3ZDM2MDgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjUzZGMyZTJmYzExNGRhZTg5Yzc2Zjg0YjdhMjhiMzEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RmOTU2YjFlNDdmYTQ4YmJhM2FkMmI3YjYxNjFhNDAxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I2YzQxYzcxNTZkYjQyMmY5YWM1NzkyZWE5MGQ5MjcwID0gJCgnPGRpdiBpZD0iaHRtbF9iNmM0MWM3MTU2ZGI0MjJmOWFjNTc5MmVhOTBkOTI3MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RmOTU2YjFlNDdmYTQ4YmJhM2FkMmI3YjYxNjFhNDAxLnNldENvbnRlbnQoaHRtbF9iNmM0MWM3MTU2ZGI0MjJmOWFjNTc5MmVhOTBkOTI3MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Y1M2RjMmUyZmMxMTRkYWU4OWM3NmY4NGI3YTI4YjMxLmJpbmRQb3B1cChwb3B1cF9kZjk1NmIxZTQ3ZmE0OGJiYTNhZDJiN2I2MTYxYTQwMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yNzc3ZTIyY2U2YTU0YWI5Yjg1MTk1YTA0MjM1Y2JlOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3MTQ5Mzk5Njk0MTYsLTEyMi41MDc3NTAxMzEwMDQwMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2IyNjRlYTVlYTkwOTQxY2RhNTI5ZjQwYTRhNzNiNGZjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzIwMmZiNGQ2OTQ1NTQ5Yzc4NTZjZTkzNGJhM2I3ZTk4ID0gJCgnPGRpdiBpZD0iaHRtbF8yMDJmYjRkNjk0NTU0OWM3ODU2Y2U5MzRiYTNiN2U5OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjI2NGVhNWVhOTA5NDFjZGE1MjlmNDBhNGE3M2I0ZmMuc2V0Q29udGVudChodG1sXzIwMmZiNGQ2OTQ1NTQ5Yzc4NTZjZTkzNGJhM2I3ZTk4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjc3N2UyMmNlNmE1NGFiOWI4NTE5NWEwNDIzNWNiZTkuYmluZFBvcHVwKHBvcHVwX2IyNjRlYTVlYTkwOTQxY2RhNTI5ZjQwYTRhNzNiNGZjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzdlYzcyOTEyODZmNTQwOGFiMjY5ZGQ3NmI0OTFlMzhhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE4MzAyMjA0NzY2MDA1LC0xMjIuNDc0NDQ0NjM5NTk0OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kNWQ5M2JkYWQzOTk0NWRkYjljNzQzN2QyMzRjMzEyNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83ZjE1NjU4ZjRmZTc0NjE4OTBmYzY5ZDdmNjI3ZTg3NSA9ICQoJzxkaXYgaWQ9Imh0bWxfN2YxNTY1OGY0ZmU3NDYxODkwZmM2OWQ3ZjYyN2U4NzUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNWQ5M2JkYWQzOTk0NWRkYjljNzQzN2QyMzRjMzEyNS5zZXRDb250ZW50KGh0bWxfN2YxNTY1OGY0ZmU3NDYxODkwZmM2OWQ3ZjYyN2U4NzUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83ZWM3MjkxMjg2ZjU0MDhhYjI2OWRkNzZiNDkxZTM4YS5iaW5kUG9wdXAocG9wdXBfZDVkOTNiZGFkMzk5NDVkZGI5Yzc0MzdkMjM0YzMxMjUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmZiYTM1YTBhM2ZlNDI4YWE4YjlkMjgwYmUzYmQxMjAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWRhZDFhODE5MjY4NGZjYmFkNjlmN2Y0M2Q5MTkyMmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmNiMDgxYjcyZjQzNDM5MDgzYTU1MDdhMWQzZWY5YjQgPSAkKCc8ZGl2IGlkPSJodG1sX2JjYjA4MWI3MmY0MzQzOTA4M2E1NTA3YTFkM2VmOWI0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWRhZDFhODE5MjY4NGZjYmFkNjlmN2Y0M2Q5MTkyMmIuc2V0Q29udGVudChodG1sX2JjYjA4MWI3MmY0MzQzOTA4M2E1NTA3YTFkM2VmOWI0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMmZiYTM1YTBhM2ZlNDI4YWE4YjlkMjgwYmUzYmQxMjAuYmluZFBvcHVwKHBvcHVwX2FkYWQxYTgxOTI2ODRmY2JhZDY5ZjdmNDNkOTE5MjJiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzhjZDEwMmMxZmQ3ZTQ4OTJhN2JmMzNjZTBlZWZkMjAzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NDM3ODMwOTExMiwtMTIyLjQxOTIwMzAwNDI2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2QxMjIwOTlmNjg3YzRmZWU5OTJjMTBmMTBkYTA5MjliID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U2OTIxM2U5ZGE3ODQwNzk4MGY4OWYxMTVhMjkxOTY2ID0gJCgnPGRpdiBpZD0iaHRtbF9lNjkyMTNlOWRhNzg0MDc5ODBmODlmMTE1YTI5MTk2NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QxMjIwOTlmNjg3YzRmZWU5OTJjMTBmMTBkYTA5MjliLnNldENvbnRlbnQoaHRtbF9lNjkyMTNlOWRhNzg0MDc5ODBmODlmMTE1YTI5MTk2Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzhjZDEwMmMxZmQ3ZTQ4OTJhN2JmMzNjZTBlZWZkMjAzLmJpbmRQb3B1cChwb3B1cF9kMTIyMDk5ZjY4N2M0ZmVlOTkyYzEwZjEwZGEwOTI5Yik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yMTVjZWM4MmFiODg0NjEyOGUzNDlhYzEzNzcwY2U0ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTM2ODgyODQ1MzIsLTEyMi40MTI2OTAxNDIzMDgwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg4OWU1MzU3ZjYzNzRhMDNiM2ViYTM2MTk2NmI1OTU4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzIwNDIzNzkyNzIxMDQxNDY5YTc2ZDg4OTQ1YjE4OWJkID0gJCgnPGRpdiBpZD0iaHRtbF8yMDQyMzc5MjcyMTA0MTQ2OWE3NmQ4ODk0NWIxODliZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg4OWU1MzU3ZjYzNzRhMDNiM2ViYTM2MTk2NmI1OTU4LnNldENvbnRlbnQoaHRtbF8yMDQyMzc5MjcyMTA0MTQ2OWE3NmQ4ODk0NWIxODliZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzIxNWNlYzgyYWI4ODQ2MTI4ZTM0OWFjMTM3NzBjZTRlLmJpbmRQb3B1cChwb3B1cF84ODllNTM1N2Y2Mzc0YTAzYjNlYmEzNjE5NjZiNTk1OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xZTAwNTRmYjVkZjk0MTQxYmNlZjc2Njg5MDk1MGZjZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81M2VhZTI2ZDcyMjg0YjBiOGQ5OTcxMDExZjgxMDFjZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82N2VlYmYyMGYyODk0NzZmYmQ5YTVmZjQxZjRiMTUxNyA9ICQoJzxkaXYgaWQ9Imh0bWxfNjdlZWJmMjBmMjg5NDc2ZmJkOWE1ZmY0MWY0YjE1MTciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTNlYWUyNmQ3MjI4NGIwYjhkOTk3MTAxMWY4MTAxY2Yuc2V0Q29udGVudChodG1sXzY3ZWViZjIwZjI4OTQ3NmZiZDlhNWZmNDFmNGIxNTE3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMWUwMDU0ZmI1ZGY5NDE0MWJjZWY3NjY4OTA5NTBmY2YuYmluZFBvcHVwKHBvcHVwXzUzZWFlMjZkNzIyODRiMGI4ZDk5NzEwMTFmODEwMWNmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzc2M2Q5ZDYwOGFiMjRhNDg5OTEyY2U1MDFlMWE4N2JmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3OTIwOTM3NTUzMjk1LC0xMjIuNDEwODgyODI1NTUxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGIzYzJjZWEyNjMyNGYxYzg2NWU0NDIwYTc4ZDRmY2YgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzYyODRlOTE2MWJkNGU1ZTg1OTFiOWY3MWE5NzFkZmQgPSAkKCc8ZGl2IGlkPSJodG1sXzc2Mjg0ZTkxNjFiZDRlNWU4NTkxYjlmNzFhOTcxZGZkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wYjNjMmNlYTI2MzI0ZjFjODY1ZTQ0MjBhNzhkNGZjZi5zZXRDb250ZW50KGh0bWxfNzYyODRlOTE2MWJkNGU1ZTg1OTFiOWY3MWE5NzFkZmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83NjNkOWQ2MDhhYjI0YTQ4OTkxMmNlNTAxZTFhODdiZi5iaW5kUG9wdXAocG9wdXBfMGIzYzJjZWEyNjMyNGYxYzg2NWU0NDIwYTc4ZDRmY2YpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjlkZDE4OTRlNmQ4NDVjNmJhNDYxOTZjMWU0ZDgzODIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy44MDA0NTY2NDcxMDM4OSwtMTIyLjQwMTQzMjc1NDcyMjAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzMzNTNkODM0MThjNGFmYmI0MDRhZDAxOGIxMjZhMzYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWI3YWNlMzQ4ZTcxNGE1ZGI1NGExMWIyMmQxZTlkNjkgPSAkKCc8ZGl2IGlkPSJodG1sX2ViN2FjZTM0OGU3MTRhNWRiNTRhMTFiMjJkMWU5ZDY5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMzM1M2Q4MzQxOGM0YWZiYjQwNGFkMDE4YjEyNmEzNi5zZXRDb250ZW50KGh0bWxfZWI3YWNlMzQ4ZTcxNGE1ZGI1NGExMWIyMmQxZTlkNjkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iOWRkMTg5NGU2ZDg0NWM2YmE0NjE5NmMxZTRkODM4Mi5iaW5kUG9wdXAocG9wdXBfMzMzNTNkODM0MThjNGFmYmI0MDRhZDAxOGIxMjZhMzYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmI0YmI2NmYwOGQ5NGU2OGIyMzZhMDgzMDIxNDA0MzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDM1NTUwNTQyMjY1LC0xMjIuNDIxMTI4MDI5NTA1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDlkYjNiZGMwNDdkNDlhZjhiM2JkMjJlYThjZjJjMzEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjFkYzY5MDdhNTQyNDRjZWIzYzdmNmU1YjJmYTI5MGEgPSAkKCc8ZGl2IGlkPSJodG1sX2IxZGM2OTA3YTU0MjQ0Y2ViM2M3ZjZlNWIyZmEyOTBhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wOWRiM2JkYzA0N2Q0OWFmOGIzYmQyMmVhOGNmMmMzMS5zZXRDb250ZW50KGh0bWxfYjFkYzY5MDdhNTQyNDRjZWIzYzdmNmU1YjJmYTI5MGEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yYjRiYjY2ZjA4ZDk0ZTY4YjIzNmEwODMwMjE0MDQzNy5iaW5kUG9wdXAocG9wdXBfMDlkYjNiZGMwNDdkNDlhZjhiM2JkMjJlYThjZjJjMzEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDFlYjA1ZWFhMzIyNDQzNmJmZWExMTRjMTBiY2EzNzAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODY1NjQ3NjA3Njg1LC0xMjIuNDA3MjQ0MDg3MDMyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTlhOWJjM2EyNmJlNDAxOTk4ZGJjNGE4N2E5YzQyZjQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDFkMjhhZjhlZjE3NDZmMzg3OTBmMDIwNGU2MTcwYjIgPSAkKCc8ZGl2IGlkPSJodG1sXzQxZDI4YWY4ZWYxNzQ2ZjM4NzkwZjAyMDRlNjE3MGIyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lOWE5YmMzYTI2YmU0MDE5OThkYmM0YTg3YTljNDJmNC5zZXRDb250ZW50KGh0bWxfNDFkMjhhZjhlZjE3NDZmMzg3OTBmMDIwNGU2MTcwYjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kMWViMDVlYWEzMjI0NDM2YmZlYTExNGMxMGJjYTM3MC5iaW5kUG9wdXAocG9wdXBfZTlhOWJjM2EyNmJlNDAxOTk4ZGJjNGE4N2E5YzQyZjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfN2YzYjg0ZmMxOTNhNGU4YWFmNmJlZDRjMzk0ZDAwODEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jYzUyYzg0M2NkZTE0Y2EzOGQxYWYxYjMxZWY5N2EyZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kZmRjODdiYTc0ZGU0N2RjYjUxYmRkMzlkMDQ0ODU5YyA9ICQoJzxkaXYgaWQ9Imh0bWxfZGZkYzg3YmE3NGRlNDdkY2I1MWJkZDM5ZDA0NDg1OWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jYzUyYzg0M2NkZTE0Y2EzOGQxYWYxYjMxZWY5N2EyZi5zZXRDb250ZW50KGh0bWxfZGZkYzg3YmE3NGRlNDdkY2I1MWJkZDM5ZDA0NDg1OWMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83ZjNiODRmYzE5M2E0ZThhYWY2YmVkNGMzOTRkMDA4MS5iaW5kUG9wdXAocG9wdXBfY2M1MmM4NDNjZGUxNGNhMzhkMWFmMWIzMWVmOTdhMmYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDMxMzVlZjcyY2I5NGNjY2JjY2M3MzdhNzgxZDU2NTggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80MmE2YjQ2MzUxMmI0M2EyYjYxNTgxMGUwY2ZiODkyMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NTVjZTQzOTdiYTQ0NTJiYmU4M2MzZjc4NGMzYTJlNCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTU1Y2U0Mzk3YmE0NDUyYmJlODNjM2Y3ODRjM2EyZTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80MmE2YjQ2MzUxMmI0M2EyYjYxNTgxMGUwY2ZiODkyMS5zZXRDb250ZW50KGh0bWxfOTU1Y2U0Mzk3YmE0NDUyYmJlODNjM2Y3ODRjM2EyZTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wMzEzNWVmNzJjYjk0Y2NjYmNjYzczN2E3ODFkNTY1OC5iaW5kUG9wdXAocG9wdXBfNDJhNmI0NjM1MTJiNDNhMmI2MTU4MTBlMGNmYjg5MjEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDU5YzM1MmZhMTkzNDU5YWE4MjI2YjMyODkyYmE1NTQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDQxOTI3NTA4OTMyMDUsLTEyMi40NDQ2ODU0ODIyNzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lYTJjMDgwZGJjZTc0YWY1OTEwNjg4MjQzNTI5MTA5OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMmU5NmI0ZTZjMTg0ZTdkOWEzMTdhODY0MWFhYTM5NSA9ICQoJzxkaXYgaWQ9Imh0bWxfMDJlOTZiNGU2YzE4NGU3ZDlhMzE3YTg2NDFhYWEzOTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWEyYzA4MGRiY2U3NGFmNTkxMDY4ODI0MzUyOTEwOTguc2V0Q29udGVudChodG1sXzAyZTk2YjRlNmMxODRlN2Q5YTMxN2E4NjQxYWFhMzk1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDU5YzM1MmZhMTkzNDU5YWE4MjI2YjMyODkyYmE1NTQuYmluZFBvcHVwKHBvcHVwX2VhMmMwODBkYmNlNzRhZjU5MTA2ODgyNDM1MjkxMDk4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzE4MzUyYTFmZTYyOTRiZGRiYzg1ODRiYWQ3MTNlMzA5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBjMTE4YjE1MWZiMDRiN2Q4MGEzN2RhYTZlYWRkMDU0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FhYTQ2NTU0NmRlNTQ3ODg5MGY2ZjVjNDMwMzZhYWM4ID0gJCgnPGRpdiBpZD0iaHRtbF9hYWE0NjU1NDZkZTU0Nzg4OTBmNmY1YzQzMDM2YWFjOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wYzExOGIxNTFmYjA0YjdkODBhMzdkYWE2ZWFkZDA1NC5zZXRDb250ZW50KGh0bWxfYWFhNDY1NTQ2ZGU1NDc4ODkwZjZmNWM0MzAzNmFhYzgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xODM1MmExZmU2Mjk0YmRkYmM4NTg0YmFkNzEzZTMwOS5iaW5kUG9wdXAocG9wdXBfMGMxMThiMTUxZmIwNGI3ZDgwYTM3ZGFhNmVhZGQwNTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTAyNTA0M2NhMzQyNDM0MDgxNDRhZWY3ZmJjOGE2ODggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjg1MjgwNjI3NDY1LC0xMjIuNDc1NjQ3NDYwNzg1OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82YmYyNDIxNGJlZmY0YzQwYTAyY2U5MjJmMDA2NDVjYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lYmNiYTVlODYxNWE0OGVmYWNjNDExMmZmYzMzMzFmZiA9ICQoJzxkaXYgaWQ9Imh0bWxfZWJjYmE1ZTg2MTVhNDhlZmFjYzQxMTJmZmMzMzMxZmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZiZjI0MjE0YmVmZjRjNDBhMDJjZTkyMmYwMDY0NWNhLnNldENvbnRlbnQoaHRtbF9lYmNiYTVlODYxNWE0OGVmYWNjNDExMmZmYzMzMzFmZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2EwMjUwNDNjYTM0MjQzNDA4MTQ0YWVmN2ZiYzhhNjg4LmJpbmRQb3B1cChwb3B1cF82YmYyNDIxNGJlZmY0YzQwYTAyY2U5MjJmMDA2NDVjYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82ZGMwODVjNDZkN2I0ZWJjYTdiZTI5NjcyNGEyYzE5NCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0Mjg1MTczNzQ0NDg5NCwtMTIyLjQyMDk2NzQ0MDU2NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc0YzZlMGRiODFmOTQ1ZWFhOGNhMjkwYjIxNThjZTUyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM3NDRmMDhlOTZlYzQyYmU4NjcwNjIyYmVhZjQxOWNmID0gJCgnPGRpdiBpZD0iaHRtbF8zNzQ0ZjA4ZTk2ZWM0MmJlODY3MDYyMmJlYWY0MTljZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc0YzZlMGRiODFmOTQ1ZWFhOGNhMjkwYjIxNThjZTUyLnNldENvbnRlbnQoaHRtbF8zNzQ0ZjA4ZTk2ZWM0MmJlODY3MDYyMmJlYWY0MTljZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzZkYzA4NWM0NmQ3YjRlYmNhN2JlMjk2NzI0YTJjMTk0LmJpbmRQb3B1cChwb3B1cF83NGM2ZTBkYjgxZjk0NWVhYThjYTI5MGIyMTU4Y2U1Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80NjIyNjIxZTJhYzQ0OWIzYjU1N2UyOTU3ODMwMjI1YiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85NjFhMDdiNmYzYjY0OTQ3ODdiOTZhOWI4NjQ2YzdlMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NDc0ZmQxYzMzMDI0MDAxOTdkMGYyZGQ0MmJjYTBmNCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTQ3NGZkMWMzMzAyNDAwMTk3ZDBmMmRkNDJiY2EwZjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTYxYTA3YjZmM2I2NDk0Nzg3Yjk2YTliODY0NmM3ZTIuc2V0Q29udGVudChodG1sXzk0NzRmZDFjMzMwMjQwMDE5N2QwZjJkZDQyYmNhMGY0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDYyMjYyMWUyYWM0NDliM2I1NTdlMjk1NzgzMDIyNWIuYmluZFBvcHVwKHBvcHVwXzk2MWEwN2I2ZjNiNjQ5NDc4N2I5NmE5Yjg2NDZjN2UyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2EyNWIyMmFkN2M3ODQ0NmY4MjdkZmY5YmIwN2Q3YWI3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc5MTY3NDIxODk2MywtMTIyLjQwNjM0NjQyNTYzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YxNjkxYzBiOWU2ZjRmZWNhZGJlNzI5Y2NmMWUxZjM0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE5MmQzZmFmZTNhMzRiZjFiZTYyNjViNjg0MDRkOTAzID0gJCgnPGRpdiBpZD0iaHRtbF8xOTJkM2ZhZmUzYTM0YmYxYmU2MjY1YjY4NDA0ZDkwMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjE2OTFjMGI5ZTZmNGZlY2FkYmU3MjljY2YxZTFmMzQuc2V0Q29udGVudChodG1sXzE5MmQzZmFmZTNhMzRiZjFiZTYyNjViNjg0MDRkOTAzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYTI1YjIyYWQ3Yzc4NDQ2ZjgyN2RmZjliYjA3ZDdhYjcuYmluZFBvcHVwKHBvcHVwX2YxNjkxYzBiOWU2ZjRmZWNhZGJlNzI5Y2NmMWUxZjM0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI3NjJhYjAyNzY1ZDRmMjBiMGI0OWRmMWNhNDg2ZjkwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY1NzE4NDM5NTI4MiwtMTIyLjQwOTUyOTkxMzI3OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMzOWY1ZjJlNGI2YTRiMzc5ODRiZTY5ZjE2NzNkOTAyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzY2ZjQ2NTgyODlmOTRlOGJiYzY0YmM0YjI2OTQyZWUxID0gJCgnPGRpdiBpZD0iaHRtbF82NmY0NjU4Mjg5Zjk0ZThiYmM2NGJjNGIyNjk0MmVlMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzM5ZjVmMmU0YjZhNGIzNzk4NGJlNjlmMTY3M2Q5MDIuc2V0Q29udGVudChodG1sXzY2ZjQ2NTgyODlmOTRlOGJiYzY0YmM0YjI2OTQyZWUxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjc2MmFiMDI3NjVkNGYyMGIwYjQ5ZGYxY2E0ODZmOTAuYmluZFBvcHVwKHBvcHVwXzMzOWY1ZjJlNGI2YTRiMzc5ODRiZTY5ZjE2NzNkOTAyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzYzZTJkMjM3NWU3NzQ1ZTk5Y2IzOTgwMTk1YmNiMTlhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85ZGEyZWUyZTA0YWE0NzhiODk4Y2IyM2I2ZGVlNGNhZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kY2Q0ZDM4ZmEyNGU0YTI0OTM2ODRmZTE1NDUyYWMwMyA9ICQoJzxkaXYgaWQ9Imh0bWxfZGNkNGQzOGZhMjRlNGEyNDkzNjg0ZmUxNTQ1MmFjMDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWRhMmVlMmUwNGFhNDc4Yjg5OGNiMjNiNmRlZTRjYWUuc2V0Q29udGVudChodG1sX2RjZDRkMzhmYTI0ZTRhMjQ5MzY4NGZlMTU0NTJhYzAzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjNlMmQyMzc1ZTc3NDVlOTljYjM5ODAxOTViY2IxOWEuYmluZFBvcHVwKHBvcHVwXzlkYTJlZTJlMDRhYTQ3OGI4OThjYjIzYjZkZWU0Y2FlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQwZjMxYTU5ZjBmZTQ3NjY5MDBmN2ZhOTZiOGQwMzcwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjc0ZmJjODVlZTU1NDJkZTk1ZGEwM2Y2MmI4MmNjOTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTg2YzY0ZWYxOTY4NDYwYTg3NzRmMDc4NzcyYjYyNTYgPSAkKCc8ZGl2IGlkPSJodG1sXzk4NmM2NGVmMTk2ODQ2MGE4Nzc0ZjA3ODc3MmI2MjU2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjc0ZmJjODVlZTU1NDJkZTk1ZGEwM2Y2MmI4MmNjOTMuc2V0Q29udGVudChodG1sXzk4NmM2NGVmMTk2ODQ2MGE4Nzc0ZjA3ODc3MmI2MjU2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDBmMzFhNTlmMGZlNDc2NjkwMGY3ZmE5NmI4ZDAzNzAuYmluZFBvcHVwKHBvcHVwXzI3NGZiYzg1ZWU1NTQyZGU5NWRhMDNmNjJiODJjYzkzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2JjNzJhOTFhMTA1MDRmOTc4NWRmYjIzNmI0NjNkZjRmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGQyNTIyMmQ1OWFhNGM4Mjg3MmVlNDAxM2QwYjE4ODYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGU1ZmNmNjZmNDBlNDY3MmFmYTZjOGM0NDFjZTc1MjEgPSAkKCc8ZGl2IGlkPSJodG1sXzRlNWZjZjY2ZjQwZTQ2NzJhZmE2YzhjNDQxY2U3NTIxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGQyNTIyMmQ1OWFhNGM4Mjg3MmVlNDAxM2QwYjE4ODYuc2V0Q29udGVudChodG1sXzRlNWZjZjY2ZjQwZTQ2NzJhZmE2YzhjNDQxY2U3NTIxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmM3MmE5MWExMDUwNGY5Nzg1ZGZiMjM2YjQ2M2RmNGYuYmluZFBvcHVwKHBvcHVwX2RkMjUyMjJkNTlhYTRjODI4NzJlZTQwMTNkMGIxODg2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzZlMTdjMjI0Mzg3MDQzYWE5NWFmNjcyNjk5MTIyZTNhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM0MGM4MGEyYjM4YjQ2M2E5NmQyM2UzODY3YTU4NTQ2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzcxYzk3ZTEyMTRkOTQ3ZDdhMmFlM2U3OWI1MzMxYmU0ID0gJCgnPGRpdiBpZD0iaHRtbF83MWM5N2UxMjE0ZDk0N2Q3YTJhZTNlNzliNTMzMWJlNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM0MGM4MGEyYjM4YjQ2M2E5NmQyM2UzODY3YTU4NTQ2LnNldENvbnRlbnQoaHRtbF83MWM5N2UxMjE0ZDk0N2Q3YTJhZTNlNzliNTMzMWJlNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzZlMTdjMjI0Mzg3MDQzYWE5NWFmNjcyNjk5MTIyZTNhLmJpbmRQb3B1cChwb3B1cF8zNDBjODBhMmIzOGI0NjNhOTZkMjNlMzg2N2E1ODU0Nik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81MWJhZGJjZmI4MzI0NDFkOWQxMTNiMTEwZTRjMjdiYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84Nzc2ZDQ3ZTIxOGM0YmM4YjEzY2M3ZDEyNDYwNzc5MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ZDhhYjFjZjkzOWQ0Yzk1OGRkMzk2ZWU1NjI5NGU2MSA9ICQoJzxkaXYgaWQ9Imh0bWxfNWQ4YWIxY2Y5MzlkNGM5NThkZDM5NmVlNTYyOTRlNjEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVUcvTkFSQ09USUM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg3NzZkNDdlMjE4YzRiYzhiMTNjYzdkMTI0NjA3NzkxLnNldENvbnRlbnQoaHRtbF81ZDhhYjFjZjkzOWQ0Yzk1OGRkMzk2ZWU1NjI5NGU2MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzUxYmFkYmNmYjgzMjQ0MWQ5ZDExM2IxMTBlNGMyN2JhLmJpbmRQb3B1cChwb3B1cF84Nzc2ZDQ3ZTIxOGM0YmM4YjEzY2M3ZDEyNDYwNzc5MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yNTY0NGM4YWZmODk0NWUyYjliNTIxZGU5NzY0OWFhOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NjAxNjAxMTQxMDMsLTEyMi40MDM2NDQ2MjA0MzldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMzIzNGQ2MjNlZjM0NTFmOGM5ZDAxYjhiOWUzYTVlYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iNjc5NmZjMWYzNDE0NGZmYjhlOTUzNGJkMWJmODZiOCA9ICQoJzxkaXYgaWQ9Imh0bWxfYjY3OTZmYzFmMzQxNDRmZmI4ZTk1MzRiZDFiZjg2YjgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lMzIzNGQ2MjNlZjM0NTFmOGM5ZDAxYjhiOWUzYTVlYi5zZXRDb250ZW50KGh0bWxfYjY3OTZmYzFmMzQxNDRmZmI4ZTk1MzRiZDFiZjg2YjgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNTY0NGM4YWZmODk0NWUyYjliNTIxZGU5NzY0OWFhOS5iaW5kUG9wdXAocG9wdXBfZTMyMzRkNjIzZWYzNDUxZjhjOWQwMWI4YjllM2E1ZWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDY1NzQ2NGUyNjI3NDQ2M2FiZDNlM2E5Y2UwY2I2Y2UgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjYwMTYwMTE0MTAzLC0xMjIuNDAzNjQ0NjIwNDM5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODY3NDc4YWI2OTA5NDQ3NTlmNzU1MTExOTU3YzBmNjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGFhMTkzZDQ3MWNkNGIxNjg2YzE5MjQ1NTA1ZWYzYzkgPSAkKCc8ZGl2IGlkPSJodG1sXzhhYTE5M2Q0NzFjZDRiMTY4NmMxOTI0NTUwNWVmM2M5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODY3NDc4YWI2OTA5NDQ3NTlmNzU1MTExOTU3YzBmNjIuc2V0Q29udGVudChodG1sXzhhYTE5M2Q0NzFjZDRiMTY4NmMxOTI0NTUwNWVmM2M5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDY1NzQ2NGUyNjI3NDQ2M2FiZDNlM2E5Y2UwY2I2Y2UuYmluZFBvcHVwKHBvcHVwXzg2NzQ3OGFiNjkwOTQ0NzU5Zjc1NTExMTk1N2MwZjYyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzhlNzgwYTVkNmJjNDQxMDFiMmM2MWU3ZjFmOGZhMTNmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTkyMTFmMTFjZmYzNDM4M2I4ZGNhOWExYzllMWUzMzQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWI2ZDUwYTZlMTkxNDYwMDkzMDllZjQzZjMzMDFmZGYgPSAkKCc8ZGl2IGlkPSJodG1sXzFiNmQ1MGE2ZTE5MTQ2MDA5MzA5ZWY0M2YzMzAxZmRmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81OTIxMWYxMWNmZjM0MzgzYjhkY2E5YTFjOWUxZTMzNC5zZXRDb250ZW50KGh0bWxfMWI2ZDUwYTZlMTkxNDYwMDkzMDllZjQzZjMzMDFmZGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84ZTc4MGE1ZDZiYzQ0MTAxYjJjNjFlN2YxZjhmYTEzZi5iaW5kUG9wdXAocG9wdXBfNTkyMTFmMTFjZmYzNDM4M2I4ZGNhOWExYzllMWUzMzQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWQ5NjExMGQ0NzEwNGZkZThkMzE1NTEwZTMyYWZkZjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hNDgxMzM1YWQ0ZmI0YzQ5YTQ2NjIwMzIxNTVlMzY2ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lM2M3YjYyNGFhNzA0NDg3ODkwMmY5OTRkMWUzZmNiOCA9ICQoJzxkaXYgaWQ9Imh0bWxfZTNjN2I2MjRhYTcwNDQ4Nzg5MDJmOTk0ZDFlM2ZjYjgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hNDgxMzM1YWQ0ZmI0YzQ5YTQ2NjIwMzIxNTVlMzY2ZS5zZXRDb250ZW50KGh0bWxfZTNjN2I2MjRhYTcwNDQ4Nzg5MDJmOTk0ZDFlM2ZjYjgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xZDk2MTEwZDQ3MTA0ZmRlOGQzMTU1MTBlMzJhZmRmNi5iaW5kUG9wdXAocG9wdXBfYTQ4MTMzNWFkNGZiNGM0OWE0NjYyMDMyMTU1ZTM2NmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTVkZDMzMjE4ZjMwNDk4MGFkMjliZTYxZTdkYjc2YmQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzc1MTE4ODk1Njk1LC0xMjIuNDE4MDQ1NDUyNzY4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzVmOTExZjdkMGNiNDg4YTgxYzY2OTQwMjk2YjM0MDIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjFlZGQyYWVlNzQ2NGVlZGJlNzUwNzE2MDBlNDViOTkgPSAkKCc8ZGl2IGlkPSJodG1sXzIxZWRkMmFlZTc0NjRlZWRiZTc1MDcxNjAwZTQ1Yjk5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jNWY5MTFmN2QwY2I0ODhhODFjNjY5NDAyOTZiMzQwMi5zZXRDb250ZW50KGh0bWxfMjFlZGQyYWVlNzQ2NGVlZGJlNzUwNzE2MDBlNDViOTkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lNWRkMzMyMThmMzA0OTgwYWQyOWJlNjFlN2RiNzZiZC5iaW5kUG9wdXAocG9wdXBfYzVmOTExZjdkMGNiNDg4YTgxYzY2OTQwMjk2YjM0MDIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjQ1NWIzZWFkNjZjNGMxM2FjZTFlZGY3MzRiZjE0ZWMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIwMjM4NDc4OTc1LC0xMjIuNDAxMTYxNTU1NjAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTliNWEzYTk3NjM3NDdkZDgwMWY3MjA4ZjgyOWJmN2EgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDM5YjRkMGNhMzBmNDIzNmE4YzgzNmFiMGY0MWZmMGMgPSAkKCc8ZGl2IGlkPSJodG1sXzQzOWI0ZDBjYTMwZjQyMzZhOGM4MzZhYjBmNDFmZjBjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTliNWEzYTk3NjM3NDdkZDgwMWY3MjA4ZjgyOWJmN2Euc2V0Q29udGVudChodG1sXzQzOWI0ZDBjYTMwZjQyMzZhOGM4MzZhYjBmNDFmZjBjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjQ1NWIzZWFkNjZjNGMxM2FjZTFlZGY3MzRiZjE0ZWMuYmluZFBvcHVwKHBvcHVwXzk5YjVhM2E5NzYzNzQ3ZGQ4MDFmNzIwOGY4MjliZjdhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzBmMGJjYjgxMGQ4MzRiNzI5YjVlZTM5NjdiN2E2ODM2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI3MDA1MzE5NjI5OTk1LC0xMjIuNDAzNDA4NjY5MTkxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjAwMGQwYjQ1NDZlNDE4NmEwMWZiY2ZlMGNkNDkwM2QgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjk5YTM4NGQ3M2ZkNGIwZmI1ZDZjYWQzMjBkYWNlMWUgPSAkKCc8ZGl2IGlkPSJodG1sX2Y5OWEzODRkNzNmZDRiMGZiNWQ2Y2FkMzIwZGFjZTFlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjAwMGQwYjQ1NDZlNDE4NmEwMWZiY2ZlMGNkNDkwM2Quc2V0Q29udGVudChodG1sX2Y5OWEzODRkNzNmZDRiMGZiNWQ2Y2FkMzIwZGFjZTFlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMGYwYmNiODEwZDgzNGI3MjliNWVlMzk2N2I3YTY4MzYuYmluZFBvcHVwKHBvcHVwX2IwMDBkMGI0NTQ2ZTQxODZhMDFmYmNmZTBjZDQ5MDNkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2NhZTAwODE1NzVkYjRkNWE4ZDBlNDBlYWIzNDU2NDQ4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhiOWQ4ZDBlM2JhMDRiMTViY2VmY2RhYzEyNjcyODYyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBkYjU2YWQwNmU2MzRkYmJiMTU2N2I4ODg1MjdiZjZlID0gJCgnPGRpdiBpZD0iaHRtbF8wZGI1NmFkMDZlNjM0ZGJiYjE1NjdiODg4NTI3YmY2ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84YjlkOGQwZTNiYTA0YjE1YmNlZmNkYWMxMjY3Mjg2Mi5zZXRDb250ZW50KGh0bWxfMGRiNTZhZDA2ZTYzNGRiYmIxNTY3Yjg4ODUyN2JmNmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jYWUwMDgxNTc1ZGI0ZDVhOGQwZTQwZWFiMzQ1NjQ0OC5iaW5kUG9wdXAocG9wdXBfOGI5ZDhkMGUzYmEwNGIxNWJjZWZjZGFjMTI2NzI4NjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOWM5NzlmOTg4MDFhNGRhMjk2MjRjZTg3YWU1MmM4ZTYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTMwMTg2NTM3NDQ2MDQsLTEyMi40MTg1ODcxNzIyMTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84NjA5YTViYjY1MTU0ZDhiYmI1ZWM5MDMwNWE3M2UxZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82ZGY4MzY3NWY3OTk0NmRmOTJhMjMzYWI0YjRhNDU4YSA9ICQoJzxkaXYgaWQ9Imh0bWxfNmRmODM2NzVmNzk5NDZkZjkyYTIzM2FiNGI0YTQ1OGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODYwOWE1YmI2NTE1NGQ4YmJiNWVjOTAzMDVhNzNlMWUuc2V0Q29udGVudChodG1sXzZkZjgzNjc1Zjc5OTQ2ZGY5MmEyMzNhYjRiNGE0NThhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOWM5NzlmOTg4MDFhNGRhMjk2MjRjZTg3YWU1MmM4ZTYuYmluZFBvcHVwKHBvcHVwXzg2MDlhNWJiNjUxNTRkOGJiYjVlYzkwMzA1YTczZTFlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzE5Y2I4OTk0NWEyMjQ0YjliODQ3MzhlZjE2NTExZDU0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0MDQxODM4NTA0MSwtMTIyLjQxNDM3MDYyNzQ5NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJmYjczYTQyY2RkNDRkYTRhZjUxMWIyN2MyNTQ5MGEyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNlMWQxOThlNDY2MjQ2NWQ5YzU3NjMxYzhmY2MwNTRiID0gJCgnPGRpdiBpZD0iaHRtbF8zZTFkMTk4ZTQ2NjI0NjVkOWM1NzYzMWM4ZmNjMDU0YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RlJBVUQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJmYjczYTQyY2RkNDRkYTRhZjUxMWIyN2MyNTQ5MGEyLnNldENvbnRlbnQoaHRtbF8zZTFkMTk4ZTQ2NjI0NjVkOWM1NzYzMWM4ZmNjMDU0Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzE5Y2I4OTk0NWEyMjQ0YjliODQ3MzhlZjE2NTExZDU0LmJpbmRQb3B1cChwb3B1cF8yZmI3M2E0MmNkZDQ0ZGE0YWY1MTFiMjdjMjU0OTBhMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kN2NmNTgxZmRjZGQ0MzAzYTk4MGMxMzBkNDhjOTc1ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MDUzODk5MzcyNSwtMTIyLjQwMzkxNTY4MTU3MTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjY5M2NjOTdiMTg5NDlmZDhhMWQ2NWYyYmRhOWQyZGYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTdlNDI4ZGFjNzBjNDE2OWE4ZTE1Y2UzYzUyYzU4MTUgPSAkKCc8ZGl2IGlkPSJodG1sXzE3ZTQyOGRhYzcwYzQxNjlhOGUxNWNlM2M1MmM1ODE1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNjkzY2M5N2IxODk0OWZkOGExZDY1ZjJiZGE5ZDJkZi5zZXRDb250ZW50KGh0bWxfMTdlNDI4ZGFjNzBjNDE2OWE4ZTE1Y2UzYzUyYzU4MTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kN2NmNTgxZmRjZGQ0MzAzYTk4MGMxMzBkNDhjOTc1ZS5iaW5kUG9wdXAocG9wdXBfZjY5M2NjOTdiMTg5NDlmZDhhMWQ2NWYyYmRhOWQyZGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2FlNWU0NWQ1MTYwNGMwZWIyMGVlNzFjZjBkYWMyYzkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODMwOTk4MjQ0NTkyMSwtMTIyLjQxOTE4MzA5NjM2Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YzNzk1NjU5NzE3ZDQ0YmE5NjZlODZmNWYxMDM1NTk1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M5N2JhMjY2YmYzNjQ1NTI4ZmQ2NmVhNmFiNDUzYzI1ID0gJCgnPGRpdiBpZD0iaHRtbF9jOTdiYTI2NmJmMzY0NTUyOGZkNjZlYTZhYjQ1M2MyNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2YzNzk1NjU5NzE3ZDQ0YmE5NjZlODZmNWYxMDM1NTk1LnNldENvbnRlbnQoaHRtbF9jOTdiYTI2NmJmMzY0NTUyOGZkNjZlYTZhYjQ1M2MyNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2NhZTVlNDVkNTE2MDRjMGViMjBlZTcxY2YwZGFjMmM5LmJpbmRQb3B1cChwb3B1cF9mMzc5NTY1OTcxN2Q0NGJhOTY2ZTg2ZjVmMTAzNTU5NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82NzU3N2ExMzZjNDg0NDE0OTk4ODNiYTQ4ZmUzOTFhOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGRlYWNiMjU0NzJhNDg0Y2E3YjJhZTIyZDEzZjhlNzIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTZiMTAwZmJjMjNkNDE2NmEzMjZiYzBkZTcxNzNhNWMgPSAkKCc8ZGl2IGlkPSJodG1sXzU2YjEwMGZiYzIzZDQxNjZhMzI2YmMwZGU3MTczYTVjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGRlYWNiMjU0NzJhNDg0Y2E3YjJhZTIyZDEzZjhlNzIuc2V0Q29udGVudChodG1sXzU2YjEwMGZiYzIzZDQxNjZhMzI2YmMwZGU3MTczYTVjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjc1NzdhMTM2YzQ4NDQxNDk5ODgzYmE0OGZlMzkxYTkuYmluZFBvcHVwKHBvcHVwX2RkZWFjYjI1NDcyYTQ4NGNhN2IyYWUyMmQxM2Y4ZTcyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzE1MjgyOTVkZmUyODQxNDc4NjRlNmJhZTlkZDc3YWE3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0OTkxMjk0NDM2NiwtMTIyLjQzNzc5OTcwMzQ2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ViMDU4MTZiMzg3NzRkZmU4YTI2NjYzNTEyYjA3YjI0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzIwYTljYzQyNTJjMTQ4NjlhM2ViZjg1ZDk0MzQ0OTdmID0gJCgnPGRpdiBpZD0iaHRtbF8yMGE5Y2M0MjUyYzE0ODY5YTNlYmY4NWQ5NDM0NDk3ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWIwNTgxNmIzODc3NGRmZThhMjY2NjM1MTJiMDdiMjQuc2V0Q29udGVudChodG1sXzIwYTljYzQyNTJjMTQ4NjlhM2ViZjg1ZDk0MzQ0OTdmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTUyODI5NWRmZTI4NDE0Nzg2NGU2YmFlOWRkNzdhYTcuYmluZFBvcHVwKHBvcHVwX2ViMDU4MTZiMzg3NzRkZmU4YTI2NjYzNTEyYjA3YjI0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2JjOTUwMjQ0MzU2OTQ4YzE4NTk5MDQ5YWY3ZWEzMjhmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU1YzA4MzMxMDM4YTQ3OWRhMTQzNjljOTA5YzJiOGY2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg5N2NlMjY4N2E4NjQ5ZDI4YzcxYTExZGJlZWE2Y2RjID0gJCgnPGRpdiBpZD0iaHRtbF84OTdjZTI2ODdhODY0OWQyOGM3MWExMWRiZWVhNmNkYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU1YzA4MzMxMDM4YTQ3OWRhMTQzNjljOTA5YzJiOGY2LnNldENvbnRlbnQoaHRtbF84OTdjZTI2ODdhODY0OWQyOGM3MWExMWRiZWVhNmNkYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2JjOTUwMjQ0MzU2OTQ4YzE4NTk5MDQ5YWY3ZWEzMjhmLmJpbmRQb3B1cChwb3B1cF81NWMwODMzMTAzOGE0NzlkYTE0MzY5YzkwOWMyYjhmNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xNWQxN2FmMDA5NmU0OGRmODg3ZDljNmE1Y2I0MzljYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzA5MDI3NDM2NjksLTEyMi40MjEzMzI2ODQ2MzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mMDBhNzgzMTQ1ZjY0ODc0YjY1ZDkyYjczMDlkN2ZhOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yNWE5MTc3ZmFiNGY0M2M0YmUxNTBkNWM5YmQ3ZTBkYSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjVhOTE3N2ZhYjRmNDNjNGJlMTUwZDVjOWJkN2UwZGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mMDBhNzgzMTQ1ZjY0ODc0YjY1ZDkyYjczMDlkN2ZhOC5zZXRDb250ZW50KGh0bWxfMjVhOTE3N2ZhYjRmNDNjNGJlMTUwZDVjOWJkN2UwZGEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xNWQxN2FmMDA5NmU0OGRmODg3ZDljNmE1Y2I0MzljYS5iaW5kUG9wdXAocG9wdXBfZjAwYTc4MzE0NWY2NDg3NGI2NWQ5MmI3MzA5ZDdmYTgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTBlZWQ2ZTM1MjEzNGQ4YzhlZDgxYmQ3MmIxODRiMTMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGU5ZDgxOWZjYjQ0NGIzMDgyZTc2ZmY1ZWU0NGQ2MmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTk5NGE5YTNlZTg3NDM4Zjg0MzhlYjE5ZWU2NDQ2ODQgPSAkKCc8ZGl2IGlkPSJodG1sXzE5OTRhOWEzZWU4NzQzOGY4NDM4ZWIxOWVlNjQ0Njg0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZGU5ZDgxOWZjYjQ0NGIzMDgyZTc2ZmY1ZWU0NGQ2MmIuc2V0Q29udGVudChodG1sXzE5OTRhOWEzZWU4NzQzOGY4NDM4ZWIxOWVlNjQ0Njg0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTBlZWQ2ZTM1MjEzNGQ4YzhlZDgxYmQ3MmIxODRiMTMuYmluZFBvcHVwKHBvcHVwX2RlOWQ4MTlmY2I0NDRiMzA4MmU3NmZmNWVlNDRkNjJiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI4NGNiZDY5NTQyNjQxMzk4NWRiNzE3ZjA4MmVjMTc0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwMDM3OTk5NTEyNzk1LC0xMjIuNDA0NTk0MTQwNjM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmJiYTk0ZDM2N2YyNGJmNTlkZjlkMjNiODg2ZTNkZWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDU0ZjVhYjA5ZWRjNDhmMmJmN2E0YmYzNWQ2YzdjZWEgPSAkKCc8ZGl2IGlkPSJodG1sXzQ1NGY1YWIwOWVkYzQ4ZjJiZjdhNGJmMzVkNmM3Y2VhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJiYmE5NGQzNjdmMjRiZjU5ZGY5ZDIzYjg4NmUzZGViLnNldENvbnRlbnQoaHRtbF80NTRmNWFiMDllZGM0OGYyYmY3YTRiZjM1ZDZjN2NlYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzI4NGNiZDY5NTQyNjQxMzk4NWRiNzE3ZjA4MmVjMTc0LmJpbmRQb3B1cChwb3B1cF8yYmJhOTRkMzY3ZjI0YmY1OWRmOWQyM2I4ODZlM2RlYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85YjM5MjViNDY0NWM0NGY4OTVjOWI2YzNjOGNjNmZkNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xMDU2NzQyMmE2ODI0NmUxODBjYzdlOTM4OGU3NjYzMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NzFlMzVkZTcyN2Q0NzMxODMzZWM1MDg0NmY2NTQ0NiA9ICQoJzxkaXYgaWQ9Imh0bWxfNTcxZTM1ZGU3MjdkNDczMTgzM2VjNTA4NDZmNjU0NDYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTA1Njc0MjJhNjgyNDZlMTgwY2M3ZTkzODhlNzY2MzIuc2V0Q29udGVudChodG1sXzU3MWUzNWRlNzI3ZDQ3MzE4MzNlYzUwODQ2ZjY1NDQ2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOWIzOTI1YjQ2NDVjNDRmODk1YzliNmMzYzhjYzZmZDQuYmluZFBvcHVwKHBvcHVwXzEwNTY3NDIyYTY4MjQ2ZTE4MGNjN2U5Mzg4ZTc2NjMyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzhiMGI4NDkzYzdiNDQ0ZWE5NTA3NzgyNTgzZDk4ZjIxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NTE1ODc0MTYyMjk1LC0xMjIuNDA3NDM0OTg5NTIzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzllOTk3ZWE2MGQwNGFmMmFmMzk1OWNmYjI4OGM5NTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDhhZTM4MGM1MjI2NDViYTg1YTMzOTZlMTRiZjE3OTMgPSAkKCc8ZGl2IGlkPSJodG1sXzQ4YWUzODBjNTIyNjQ1YmE4NWEzMzk2ZTE0YmYxNzkzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzllOTk3ZWE2MGQwNGFmMmFmMzk1OWNmYjI4OGM5NTUuc2V0Q29udGVudChodG1sXzQ4YWUzODBjNTIyNjQ1YmE4NWEzMzk2ZTE0YmYxNzkzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOGIwYjg0OTNjN2I0NDRlYTk1MDc3ODI1ODNkOThmMjEuYmluZFBvcHVwKHBvcHVwXzM5ZTk5N2VhNjBkMDRhZjJhZjM5NTljZmIyODhjOTU1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2UxYjA1NjFiYWVjNzRiZmE5NjhhYmZiYmNjNjJhMWU1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NjM2I0MDQyYmM2MTRhZmViNmYwYzg0MGU5Yzc5ZWM1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc2MGRkZjM4ODNjYTRhYTQ5ZTNjODMzYmI5M2FkYzgzID0gJCgnPGRpdiBpZD0iaHRtbF83NjBkZGYzODgzY2E0YWE0OWUzYzgzM2JiOTNhZGM4MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UFJPU1RJVFVUSU9OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jYzNiNDA0MmJjNjE0YWZlYjZmMGM4NDBlOWM3OWVjNS5zZXRDb250ZW50KGh0bWxfNzYwZGRmMzg4M2NhNGFhNDllM2M4MzNiYjkzYWRjODMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lMWIwNTYxYmFlYzc0YmZhOTY4YWJmYmJjYzYyYTFlNS5iaW5kUG9wdXAocG9wdXBfY2MzYjQwNDJiYzYxNGFmZWI2ZjBjODQwZTljNzllYzUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTBlZDVhY2ExMzVjNDBkMzhlZTQ3YTE5ZjViOWEzMDAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzg1MjMzNzc2MDMyLC0xMjIuNDAzNDY0MDgwMDMzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTVkMjQ0YTQ5ZmIyNDQ1MjlkZWNjZTBhZjhhOTU2NzYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDE4M2FkZGNjOGMyNGYyZjlmMWY4Y2VkNzZkYmQzNWQgPSAkKCc8ZGl2IGlkPSJodG1sXzAxODNhZGRjYzhjMjRmMmY5ZjFmOGNlZDc2ZGJkMzVkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTVkMjQ0YTQ5ZmIyNDQ1MjlkZWNjZTBhZjhhOTU2NzYuc2V0Q29udGVudChodG1sXzAxODNhZGRjYzhjMjRmMmY5ZjFmOGNlZDc2ZGJkMzVkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTBlZDVhY2ExMzVjNDBkMzhlZTQ3YTE5ZjViOWEzMDAuYmluZFBvcHVwKHBvcHVwXzk1ZDI0NGE0OWZiMjQ0NTI5ZGVjY2UwYWY4YTk1Njc2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzYzY2FhYmQ3YWEwNjQwNmI5NTE5YTM0NDgzNDJjN2I1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83Y2RjMjc5ODczYzg0NzMxYjIyYWYzNDhhOTYyYzY1MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mMmVhYjI1MzMwM2E0M2EwYjk1NmMwZDEwMTY5NjBhZCA9ICQoJzxkaXYgaWQ9Imh0bWxfZjJlYWIyNTMzMDNhNDNhMGI5NTZjMGQxMDE2OTYwYWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2NkYzI3OTg3M2M4NDczMWIyMmFmMzQ4YTk2MmM2NTAuc2V0Q29udGVudChodG1sX2YyZWFiMjUzMzAzYTQzYTBiOTU2YzBkMTAxNjk2MGFkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjNjYWFiZDdhYTA2NDA2Yjk1MTlhMzQ0ODM0MmM3YjUuYmluZFBvcHVwKHBvcHVwXzdjZGMyNzk4NzNjODQ3MzFiMjJhZjM0OGE5NjJjNjUwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2UyN2VmYTQyYTVjZjRjMDg4OWYzZWEyYzBlZDFlNjg0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMGExMTM4NDIyYWE0NzcwOGQyMTliYTM5MTA0MDJjMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80MjVkMjFjOTM5NWM0ZDFiYWIxM2E0MGVkNWRiZTAxMCA9ICQoJzxkaXYgaWQ9Imh0bWxfNDI1ZDIxYzkzOTVjNGQxYmFiMTNhNDBlZDVkYmUwMTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVUcvTkFSQ09USUM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMwYTExMzg0MjJhYTQ3NzA4ZDIxOWJhMzkxMDQwMmMzLnNldENvbnRlbnQoaHRtbF80MjVkMjFjOTM5NWM0ZDFiYWIxM2E0MGVkNWRiZTAxMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2UyN2VmYTQyYTVjZjRjMDg4OWYzZWEyYzBlZDFlNjg0LmJpbmRQb3B1cChwb3B1cF8zMGExMTM4NDIyYWE0NzcwOGQyMTliYTM5MTA0MDJjMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82ODIzOTcwNjI5Y2Y0MDMwYjEwZmVlZTRkNzNiMTIyZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzQ3Y2IyNmNkZWRiNGRiODg2OGFkZmRhZWJiNWNiNzAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYWI3YmQ4ZWU5YmZmNDI0YWEyOGIwOWU3MTAwMDQ0MmMgPSAkKCc8ZGl2IGlkPSJodG1sX2FiN2JkOGVlOWJmZjQyNGFhMjhiMDllNzEwMDA0NDJjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzQ3Y2IyNmNkZWRiNGRiODg2OGFkZmRhZWJiNWNiNzAuc2V0Q29udGVudChodG1sX2FiN2JkOGVlOWJmZjQyNGFhMjhiMDllNzEwMDA0NDJjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjgyMzk3MDYyOWNmNDAzMGIxMGZlZWU0ZDczYjEyMmUuYmluZFBvcHVwKHBvcHVwX2M0N2NiMjZjZGVkYjRkYjg4NjhhZGZkYWViYjVjYjcwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA5NjZlYTFmOTk0OTRhMjI5YWJmMGJlZDEzNjMyY2M3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDg0NTZhMDcxM2U4NDU4MDgyNzQ0MGFmN2QzMjhkNDkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2I2NTYwZWJmMDMzNDZkMGFlNjNkYTA4NmZiMDcxZWEgPSAkKCc8ZGl2IGlkPSJodG1sX2NiNjU2MGViZjAzMzQ2ZDBhZTYzZGEwODZmYjA3MWVhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kODQ1NmEwNzEzZTg0NTgwODI3NDQwYWY3ZDMyOGQ0OS5zZXRDb250ZW50KGh0bWxfY2I2NTYwZWJmMDMzNDZkMGFlNjNkYTA4NmZiMDcxZWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wOTY2ZWExZjk5NDk0YTIyOWFiZjBiZWQxMzYzMmNjNy5iaW5kUG9wdXAocG9wdXBfZDg0NTZhMDcxM2U4NDU4MDgyNzQ0MGFmN2QzMjhkNDkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDZjZTRjYjViMjg1NGNmMmIyMjNkYWU0NTEyNWQ5YjEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjc5YmM2M2FlMTgzNDYxMTk3ZWNlYjQ1OGZjZGU4NjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDc0NWUwZDJhZDQ4NGFkMGE4ZTk2ZWYwM2NiNTRmNzIgPSAkKCc8ZGl2IGlkPSJodG1sXzQ3NDVlMGQyYWQ0ODRhZDBhOGU5NmVmMDNjYjU0ZjcyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjc5YmM2M2FlMTgzNDYxMTk3ZWNlYjQ1OGZjZGU4NjYuc2V0Q29udGVudChodG1sXzQ3NDVlMGQyYWQ0ODRhZDBhOGU5NmVmMDNjYjU0ZjcyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDZjZTRjYjViMjg1NGNmMmIyMjNkYWU0NTEyNWQ5YjEuYmluZFBvcHVwKHBvcHVwXzI3OWJjNjNhZTE4MzQ2MTE5N2VjZWI0NThmY2RlODY2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2IxMzRkODdlZWIwNDRlYWZiZTlmNDljZGUxYTUzN2NlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MDA2NTMyNDM5MjA1LC0xMjIuMzk5ODAyMTQ1Nzk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzc3ZDI0ZDVjMDJiNDdmODk0NmRjNjUxM2IxMWQwNDcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDllNDZkZTEyMDQ2NGQyMGIyNWVkOGUwODUxOWI2ZGUgPSAkKCc8ZGl2IGlkPSJodG1sX2Q5ZTQ2ZGUxMjA0NjRkMjBiMjVlZDhlMDg1MTliNmRlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83NzdkMjRkNWMwMmI0N2Y4OTQ2ZGM2NTEzYjExZDA0Ny5zZXRDb250ZW50KGh0bWxfZDllNDZkZTEyMDQ2NGQyMGIyNWVkOGUwODUxOWI2ZGUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iMTM0ZDg3ZWViMDQ0ZWFmYmU5ZjQ5Y2RlMWE1MzdjZS5iaW5kUG9wdXAocG9wdXBfNzc3ZDI0ZDVjMDJiNDdmODk0NmRjNjUxM2IxMWQwNDcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTFiNzhmMjFmYTA5NGY1NGEzZDRiNzExZmRkZTJiZmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg0YjBiN2FjMmRjMjQ3NTI4YTAxODVmYzBmOTJlNGE2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI3YmJkYzFkYTVmOTQyOThiNWUxNDg5ZDlhZmM0MjRmID0gJCgnPGRpdiBpZD0iaHRtbF8yN2JiZGMxZGE1Zjk0Mjk4YjVlMTQ4OWQ5YWZjNDI0ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NGIwYjdhYzJkYzI0NzUyOGEwMTg1ZmMwZjkyZTRhNi5zZXRDb250ZW50KGh0bWxfMjdiYmRjMWRhNWY5NDI5OGI1ZTE0ODlkOWFmYzQyNGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lMWI3OGYyMWZhMDk0ZjU0YTNkNGI3MTFmZGRlMmJmZi5iaW5kUG9wdXAocG9wdXBfODRiMGI3YWMyZGMyNDc1MjhhMDE4NWZjMGY5MmU0YTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzc2NGFjMGE4NmY5NDczNWE5MGJhMDQyOGUwMTU0MjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJkMTJlZjAyMjE0NDQwYWZiNTM1ZDBjMDY3ZDNkZWU0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgwODU5YzE4MDdlOTQwZThhNjFhMWZhZTE1ZTc0MGI5ID0gJCgnPGRpdiBpZD0iaHRtbF84MDg1OWMxODA3ZTk0MGU4YTYxYTFmYWUxNWU3NDBiOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1VTUElDSU9VUyBPQ0M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJkMTJlZjAyMjE0NDQwYWZiNTM1ZDBjMDY3ZDNkZWU0LnNldENvbnRlbnQoaHRtbF84MDg1OWMxODA3ZTk0MGU4YTYxYTFmYWUxNWU3NDBiOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzc3NjRhYzBhODZmOTQ3MzVhOTBiYTA0MjhlMDE1NDI5LmJpbmRQb3B1cChwb3B1cF8yZDEyZWYwMjIxNDQ0MGFmYjUzNWQwYzA2N2QzZGVlNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xZGIxYTBjZjE3ZGI0MWI2YmI0ZDlmZDAyZWY3YjdjNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWY4MDlkYTk5YjUyNGQ4OWExMzE3ZjYzMDk0ZDY5OTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDUwMmEwY2MyNjk2NDgzMGEyMDNiYmU3MTg2M2Q5MDMgPSAkKCc8ZGl2IGlkPSJodG1sX2Q1MDJhMGNjMjY5NjQ4MzBhMjAzYmJlNzE4NjNkOTAzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNWY4MDlkYTk5YjUyNGQ4OWExMzE3ZjYzMDk0ZDY5OTcuc2V0Q29udGVudChodG1sX2Q1MDJhMGNjMjY5NjQ4MzBhMjAzYmJlNzE4NjNkOTAzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMWRiMWEwY2YxN2RiNDFiNmJiNGQ5ZmQwMmVmN2I3YzYuYmluZFBvcHVwKHBvcHVwXzVmODA5ZGE5OWI1MjRkODlhMTMxN2Y2MzA5NGQ2OTk3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzYxYTlkMTQ0ODQ5MDRlYmZiODNmZWFlN2YxMTBiZDI2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MzIzNTQ0OTkwNCwtMTIyLjQxMTg1NzAzMjU0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmE5ZmQ4NmY4ZDA3NDdlMDlhY2Y2NjIyZmZkOWExNzIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDFmMTBmMTg4ZGJjNGY2MzkxYjI4NWY1Y2NmZWI2MTQgPSAkKCc8ZGl2IGlkPSJodG1sXzAxZjEwZjE4OGRiYzRmNjM5MWIyODVmNWNjZmViNjE0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yYTlmZDg2ZjhkMDc0N2UwOWFjZjY2MjJmZmQ5YTE3Mi5zZXRDb250ZW50KGh0bWxfMDFmMTBmMTg4ZGJjNGY2MzkxYjI4NWY1Y2NmZWI2MTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82MWE5ZDE0NDg0OTA0ZWJmYjgzZmVhZTdmMTEwYmQyNi5iaW5kUG9wdXAocG9wdXBfMmE5ZmQ4NmY4ZDA3NDdlMDlhY2Y2NjIyZmZkOWExNzIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2M4Zjc1ZTJhNjVmNGQyNGI0MGE3MzYxNzgzNWEyNzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTU5OTc3MzM5ODU2LC0xMjIuNDA5NDM1NjE3MTA2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDZiNThkMDQ5NGY2NDQ4OWFlNDFjZWY1NjNmNjM3YTIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTcyYWVkODA0ZDJmNDFmMjhmZWZkMjliNDBkYmI5NTAgPSAkKCc8ZGl2IGlkPSJodG1sXzU3MmFlZDgwNGQyZjQxZjI4ZmVmZDI5YjQwZGJiOTUwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDZiNThkMDQ5NGY2NDQ4OWFlNDFjZWY1NjNmNjM3YTIuc2V0Q29udGVudChodG1sXzU3MmFlZDgwNGQyZjQxZjI4ZmVmZDI5YjQwZGJiOTUwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfM2M4Zjc1ZTJhNjVmNGQyNGI0MGE3MzYxNzgzNWEyNzcuYmluZFBvcHVwKHBvcHVwX2Q2YjU4ZDA0OTRmNjQ0ODlhZTQxY2VmNTYzZjYzN2EyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzdlMDFjMTY4MTVmMjRmOTY5ZDQ1MmIwYThkZDU4YTlkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VhNTc1Zjk0NGY3YjRjYTFiYmExZjY3NjM2ODI5Yjg1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFkM2UzZjlkMzliNzQwMzQ5NGJjM2JjMmM5MmQ0ZmQyID0gJCgnPGRpdiBpZD0iaHRtbF8xZDNlM2Y5ZDM5Yjc0MDM0OTRiYzNiYzJjOTJkNGZkMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lYTU3NWY5NDRmN2I0Y2ExYmJhMWY2NzYzNjgyOWI4NS5zZXRDb250ZW50KGh0bWxfMWQzZTNmOWQzOWI3NDAzNDk0YmMzYmMyYzkyZDRmZDIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83ZTAxYzE2ODE1ZjI0Zjk2OWQ0NTJiMGE4ZGQ1OGE5ZC5iaW5kUG9wdXAocG9wdXBfZWE1NzVmOTQ0ZjdiNGNhMWJiYTFmNjc2MzY4MjliODUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTY3NWQxOWRlYzI1NGJhYzliYTQ4MDNjMzlkNWU2OTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzYwMzc0NDY2ODYyMDQsLTEyMi40MTUxMjY1NDMwMDEwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JkZmY5OGI0MmFmNDQ2NzY5YzIzN2M3MjE2NjMzMTViID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzZhM2I1NjU3YjY3YjQxZjBiMWUwM2NkYzJjZWI0Y2I3ID0gJCgnPGRpdiBpZD0iaHRtbF82YTNiNTY1N2I2N2I0MWYwYjFlMDNjZGMyY2ViNGNiNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iZGZmOThiNDJhZjQ0Njc2OWMyMzdjNzIxNjYzMzE1Yi5zZXRDb250ZW50KGh0bWxfNmEzYjU2NTdiNjdiNDFmMGIxZTAzY2RjMmNlYjRjYjcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lNjc1ZDE5ZGVjMjU0YmFjOWJhNDgwM2MzOWQ1ZTY5OS5iaW5kUG9wdXAocG9wdXBfYmRmZjk4YjQyYWY0NDY3NjljMjM3YzcyMTY2MzMxNWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMGIyNWRkMmU5NGM0NDQyOThlYWYxN2Q5YTJkYWU4OTYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTI3Njc4ODQ4MjEsLTEyMi40MzE5MjgwMTEwODldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNjI1NzQ3YmM0ZmU0YWFmOGRkMjFmNGRkYWE0ODAyMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lNGYwM2ZjZjNjNzA0NzBlYWUzNDY5N2ViOTk2MzNlZCA9ICQoJzxkaXYgaWQ9Imh0bWxfZTRmMDNmY2YzYzcwNDcwZWFlMzQ2OTdlYjk5NjMzZWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xNjI1NzQ3YmM0ZmU0YWFmOGRkMjFmNGRkYWE0ODAyMy5zZXRDb250ZW50KGh0bWxfZTRmMDNmY2YzYzcwNDcwZWFlMzQ2OTdlYjk5NjMzZWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wYjI1ZGQyZTk0YzQ0NDI5OGVhZjE3ZDlhMmRhZTg5Ni5iaW5kUG9wdXAocG9wdXBfMTYyNTc0N2JjNGZlNGFhZjhkZDIxZjRkZGFhNDgwMjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjQ0ODU5YjZmYjhiNDY4MTg5YWMzZWE2ODkyM2ZmOGUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODk1NzEwMjU1ODYzLC0xMjIuNDAyMTYzNzEzNjE4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmZhZWNjMTJlYzI4NGQ3NzlhMzI4OWEyNTNjY2MzNzQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDA0MDlmNWMyZmVjNGFlZWE2OTE1MGMyYjI1YTVmZjQgPSAkKCc8ZGl2IGlkPSJodG1sX2QwNDA5ZjVjMmZlYzRhZWVhNjkxNTBjMmIyNWE1ZmY0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVOS0VOTkVTUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmZhZWNjMTJlYzI4NGQ3NzlhMzI4OWEyNTNjY2MzNzQuc2V0Q29udGVudChodG1sX2QwNDA5ZjVjMmZlYzRhZWVhNjkxNTBjMmIyNWE1ZmY0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjQ0ODU5YjZmYjhiNDY4MTg5YWMzZWE2ODkyM2ZmOGUuYmluZFBvcHVwKHBvcHVwXzJmYWVjYzEyZWMyODRkNzc5YTMyODlhMjUzY2NjMzc0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2QzMDRlN2I5OTE3MzRhYTE5YzJlOWQ2YWU0NmRmNTAyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI1ODI0MDRlMmQ1ZDRmYTZhYWU5NDFjMmY4MGQwMGFhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQxNDdlMDY2YTU3YTRlMjI4NDBjODkxZTYyODc1NWQ3ID0gJCgnPGRpdiBpZD0iaHRtbF80MTQ3ZTA2NmE1N2E0ZTIyODQwYzg5MWU2Mjg3NTVkNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI1ODI0MDRlMmQ1ZDRmYTZhYWU5NDFjMmY4MGQwMGFhLnNldENvbnRlbnQoaHRtbF80MTQ3ZTA2NmE1N2E0ZTIyODQwYzg5MWU2Mjg3NTVkNyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2QzMDRlN2I5OTE3MzRhYTE5YzJlOWQ2YWU0NmRmNTAyLmJpbmRQb3B1cChwb3B1cF8yNTgyNDA0ZTJkNWQ0ZmE2YWFlOTQxYzJmODBkMDBhYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iNGM4ZGNhZDg3MmE0ZGVmYTVjODNmYTM2YmFmOGU5MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNjU1NjUzNDc5NCwtMTIyLjQxMzc5MDk3Mjc4MDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjViOTM4YWJiMjdmNDc0M2JlNzIxZTA3Y2RmZWRmMzMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2JkYzM5M2Q2ZWI1NDAzYWFjZTYzNDRhYjcyNjQwOTIgPSAkKCc8ZGl2IGlkPSJodG1sXzdiZGMzOTNkNmViNTQwM2FhY2U2MzQ0YWI3MjY0MDkyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WQU5EQUxJU008L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY1YjkzOGFiYjI3ZjQ3NDNiZTcyMWUwN2NkZmVkZjMzLnNldENvbnRlbnQoaHRtbF83YmRjMzkzZDZlYjU0MDNhYWNlNjM0NGFiNzI2NDA5Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2I0YzhkY2FkODcyYTRkZWZhNWM4M2ZhMzZiYWY4ZTkxLmJpbmRQb3B1cChwb3B1cF82NWI5MzhhYmIyN2Y0NzQzYmU3MjFlMDdjZGZlZGYzMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82NTgwNzdlNzQ0MjU0NzI5OWY4YTk2MzQ4OWI5MDAxZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84ODhjZTdhZGU3OGY0YTkxOGI5YTVmMTBiODNkMzY5ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zYjY1MTk1MDUxM2I0ZDg1ODU0NWY2OGM3Mzg1ODAyNiA9ICQoJzxkaXYgaWQ9Imh0bWxfM2I2NTE5NTA1MTNiNGQ4NTg1NDVmNjhjNzM4NTgwMjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ODhjZTdhZGU3OGY0YTkxOGI5YTVmMTBiODNkMzY5ZC5zZXRDb250ZW50KGh0bWxfM2I2NTE5NTA1MTNiNGQ4NTg1NDVmNjhjNzM4NTgwMjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82NTgwNzdlNzQ0MjU0NzI5OWY4YTk2MzQ4OWI5MDAxZi5iaW5kUG9wdXAocG9wdXBfODg4Y2U3YWRlNzhmNGE5MThiOWE1ZjEwYjgzZDM2OWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDg1MWE5OTE1YWYwNGQ3ZjkwNjYwNjc5ZjMyYjFiNjIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzczNjIzNjA1MjEyOTYsLTEyMi40MjIwNjcxODQ5MzddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hZDQ2MGU4MmY5ZTY0NTVjOGNhNGZkOGM2OWYxMzYyMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zZDM4ODBjYjNkZTc0NTU4YmY3YWEwMTJiZDg3NTY2NyA9ICQoJzxkaXYgaWQ9Imh0bWxfM2QzODgwY2IzZGU3NDU1OGJmN2FhMDEyYmQ4NzU2NjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWQ0NjBlODJmOWU2NDU1YzhjYTRmZDhjNjlmMTM2MjIuc2V0Q29udGVudChodG1sXzNkMzg4MGNiM2RlNzQ1NThiZjdhYTAxMmJkODc1NjY3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDg1MWE5OTE1YWYwNGQ3ZjkwNjYwNjc5ZjMyYjFiNjIuYmluZFBvcHVwKHBvcHVwX2FkNDYwZTgyZjllNjQ1NWM4Y2E0ZmQ4YzY5ZjEzNjIyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzMyOGQ1YmY0MWNkMDQ5MjBiN2Q5NjQ5OTAzNjlhZDI1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDBhN2ZiZWY4Yzg4NDczNjliOTg2MGE5NDhkNTk5ZDQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2FiNzgxN2MyZTAzNGU3NGE1ZmQ3OGRhODFiODlkYWMgPSAkKCc8ZGl2IGlkPSJodG1sXzNhYjc4MTdjMmUwMzRlNzRhNWZkNzhkYTgxYjg5ZGFjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WQU5EQUxJU008L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QwYTdmYmVmOGM4ODQ3MzY5Yjk4NjBhOTQ4ZDU5OWQ0LnNldENvbnRlbnQoaHRtbF8zYWI3ODE3YzJlMDM0ZTc0YTVmZDc4ZGE4MWI4OWRhYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzMyOGQ1YmY0MWNkMDQ5MjBiN2Q5NjQ5OTAzNjlhZDI1LmJpbmRQb3B1cChwb3B1cF9kMGE3ZmJlZjhjODg0NzM2OWI5ODYwYTk0OGQ1OTlkNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hYTk1YjEyNzMwNTY0ZDA5OTUzNjViMGMwY2I3Y2Q2OCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTk5ODgzMjM3OTc5NiwtMTIyLjQxMTc0NzM3MTkyNF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZhODAwMzgyZWIyYjRiNjJiOGFmOTFjYmIyODU2M2YyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I3YmRkODFjZDQ2MDQ1MzBiYTc3YmM2MDYwMDk2MjU5ID0gJCgnPGRpdiBpZD0iaHRtbF9iN2JkZDgxY2Q0NjA0NTMwYmE3N2JjNjA2MDA5NjI1OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1VTUElDSU9VUyBPQ0M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZhODAwMzgyZWIyYjRiNjJiOGFmOTFjYmIyODU2M2YyLnNldENvbnRlbnQoaHRtbF9iN2JkZDgxY2Q0NjA0NTMwYmE3N2JjNjA2MDA5NjI1OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FhOTViMTI3MzA1NjRkMDk5NTM2NWIwYzBjYjdjZDY4LmJpbmRQb3B1cChwb3B1cF82YTgwMDM4MmViMmI0YjYyYjhhZjkxY2JiMjg1NjNmMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jYjMyOGFlNDhhMmM0NTdlYWJjYzk1NjBiNjA3N2FmZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZiOWRjYzAzOTk0ZTQ5NjNiNGI4ZmQ5MmI1MDg2NzA2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzkzNzFjODMwZmZjMDRjODQ5Yjc5NTc0ZjA2NmQ2NGNjID0gJCgnPGRpdiBpZD0iaHRtbF85MzcxYzgzMGZmYzA0Yzg0OWI3OTU3NGYwNjZkNjRjYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZiOWRjYzAzOTk0ZTQ5NjNiNGI4ZmQ5MmI1MDg2NzA2LnNldENvbnRlbnQoaHRtbF85MzcxYzgzMGZmYzA0Yzg0OWI3OTU3NGYwNjZkNjRjYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2NiMzI4YWU0OGEyYzQ1N2VhYmNjOTU2MGI2MDc3YWZlLmJpbmRQb3B1cChwb3B1cF9mYjlkY2MwMzk5NGU0OTYzYjRiOGZkOTJiNTA4NjcwNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81ZmFkYjMzODQ5YTI0MjI2YWZmNDA0MzQ1NjYyMTU2OSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTAyMjY2MjI3ODYsLTEyMi40MTE5ODc2NDM1OTUwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg0YmFhNzRjOGQxZjQ3ZjA5YWJiYzMyOTQ1ZTk0NWQzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2MzYTcyODY5OWFhOTQ2ZTdiM2Y5Y2NmYjY3ODUyNjZjID0gJCgnPGRpdiBpZD0iaHRtbF9jM2E3Mjg2OTlhYTk0NmU3YjNmOWNjZmI2Nzg1MjY2YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NGJhYTc0YzhkMWY0N2YwOWFiYmMzMjk0NWU5NDVkMy5zZXRDb250ZW50KGh0bWxfYzNhNzI4Njk5YWE5NDZlN2IzZjljY2ZiNjc4NTI2NmMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81ZmFkYjMzODQ5YTI0MjI2YWZmNDA0MzQ1NjYyMTU2OS5iaW5kUG9wdXAocG9wdXBfODRiYWE3NGM4ZDFmNDdmMDlhYmJjMzI5NDVlOTQ1ZDMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzFkM2Y5OTc2Nzk3NDA2NmFiNjcyZmJjNDczNGQ1NDIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zOGUyMzZiNjRhZjc0ODI0YTBlZWZlNDU0NzdmMDE0ZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NjM5MTFkNGM1NDg0ZDQxOTY4ZmU4YWUzNDUxN2IwZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNTYzOTExZDRjNTQ4NGQ0MTk2OGZlOGFlMzQ1MTdiMGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zOGUyMzZiNjRhZjc0ODI0YTBlZWZlNDU0NzdmMDE0Zi5zZXRDb250ZW50KGh0bWxfNTYzOTExZDRjNTQ4NGQ0MTk2OGZlOGFlMzQ1MTdiMGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83MWQzZjk5NzY3OTc0MDY2YWI2NzJmYmM0NzM0ZDU0Mi5iaW5kUG9wdXAocG9wdXBfMzhlMjM2YjY0YWY3NDgyNGEwZWVmZTQ1NDc3ZjAxNGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWE5OGIxMDI0NmNlNGMwNWI5YjY1ZmQ1YmRlYTA2ZDkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzUxOTE4MjY3MjE3LC0xMjIuNDY2NTU4NzgwNjgzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfZjI4MmU1MzQ2MDEwNDllZmFjNDVjNmNmN2QzNDUzMDUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmI5NzIyZjIwMDEwNDg2ZTkyNWEwMjE1M2NhMWFhOWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmFkZjMxN2U0N2EzNDE3NDhkM2NkODdlYjQ1ZDY0OTQgPSAkKCc8ZGl2IGlkPSJodG1sXzZhZGYzMTdlNDdhMzQxNzQ4ZDNjZDg3ZWI0NWQ2NDk0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82Yjk3MjJmMjAwMTA0ODZlOTI1YTAyMTUzY2ExYWE5Yi5zZXRDb250ZW50KGh0bWxfNmFkZjMxN2U0N2EzNDE3NDhkM2NkODdlYjQ1ZDY0OTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xYTk4YjEwMjQ2Y2U0YzA1YjliNjVmZDViZGVhMDZkOS5iaW5kUG9wdXAocG9wdXBfNmI5NzIyZjIwMDEwNDg2ZTkyNWEwMjE1M2NhMWFhOWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTFkNGVjOWQ5OTZlNDljZTkzMmJmNThkZDMzYWQ3OTAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkwODQxNzI5MDI4LC0xMjIuNDg2OTI1OTYwMTE0MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iYWU1MzJlY2U0OTQ0ZjY1YWJhMzM5YWIxOWFjNzZjMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YTQ4NTU0N2M5OGM0MzkwYjVmZWNmZjhlMGNjNDI2NyA9ICQoJzxkaXYgaWQ9Imh0bWxfNGE0ODU1NDdjOThjNDM5MGI1ZmVjZmY4ZTBjYzQyNjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iYWU1MzJlY2U0OTQ0ZjY1YWJhMzM5YWIxOWFjNzZjMC5zZXRDb250ZW50KGh0bWxfNGE0ODU1NDdjOThjNDM5MGI1ZmVjZmY4ZTBjYzQyNjcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81MWQ0ZWM5ZDk5NmU0OWNlOTMyYmY1OGRkMzNhZDc5MC5iaW5kUG9wdXAocG9wdXBfYmFlNTMyZWNlNDk0NGY2NWFiYTMzOWFiMTlhYzc2YzApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjEzYmNlMmM1MjdiNDM3ZDhmZjdlNTE4ZTkwMDUzODUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njg1MzYwMTIzNTgzLC0xMjIuNDE1NjE2MzM4MzE5OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ZDRmMDFmZmMyNTc0NTc0YWMzNDJlMDhkOTA3NTY2NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lNjEzNDIxMjVhNjA0MDZjOWMyMjBiMzMwYWRiYWYyOCA9ICQoJzxkaXYgaWQ9Imh0bWxfZTYxMzQyMTI1YTYwNDA2YzljMjIwYjMzMGFkYmFmMjgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2Q0ZjAxZmZjMjU3NDU3NGFjMzQyZTA4ZDkwNzU2NjYuc2V0Q29udGVudChodG1sX2U2MTM0MjEyNWE2MDQwNmM5YzIyMGIzMzBhZGJhZjI4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYjEzYmNlMmM1MjdiNDM3ZDhmZjdlNTE4ZTkwMDUzODUuYmluZFBvcHVwKHBvcHVwXzdkNGYwMWZmYzI1NzQ1NzRhYzM0MmUwOGQ5MDc1NjY2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2IzNWIzMjA2MmMxZTQ0YTNiYmY4NDMwZjlkMTY1NjliID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDI5NzcxNDA3NCwtMTIyLjQ0OTc1MTY1MjU2M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM0OTEzZjgzY2Y2ZTQ2YTVhNGI4ODg3NGNhYzc5ZmM5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNmN2YyMjZiZmM5ZDQwNmE4MTk4NmY0Y2I2Y2QyMjJkID0gJCgnPGRpdiBpZD0iaHRtbF8zZjdmMjI2YmZjOWQ0MDZhODE5ODZmNGNiNmNkMjIyZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM0OTEzZjgzY2Y2ZTQ2YTVhNGI4ODg3NGNhYzc5ZmM5LnNldENvbnRlbnQoaHRtbF8zZjdmMjI2YmZjOWQ0MDZhODE5ODZmNGNiNmNkMjIyZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2IzNWIzMjA2MmMxZTQ0YTNiYmY4NDMwZjlkMTY1NjliLmJpbmRQb3B1cChwb3B1cF8zNDkxM2Y4M2NmNmU0NmE1YTRiODg4NzRjYWM3OWZjOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mYjExNWYyOWQ3Mzc0OTUwODQyN2Q1NGU2YTE4NTVjNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yMTA1NjJmMjlkZGI0ZWFhOWI0YTcxOGMyODRlNjUxZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ZTA1ZDkwN2QzMTI0YTc3YTcyNDlhNDJmOTBmZDU4YyA9ICQoJzxkaXYgaWQ9Imh0bWxfOWUwNWQ5MDdkMzEyNGE3N2E3MjQ5YTQyZjkwZmQ1OGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzIxMDU2MmYyOWRkYjRlYWE5YjRhNzE4YzI4NGU2NTFlLnNldENvbnRlbnQoaHRtbF85ZTA1ZDkwN2QzMTI0YTc3YTcyNDlhNDJmOTBmZDU4Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2ZiMTE1ZjI5ZDczNzQ5NTA4NDI3ZDU0ZTZhMTg1NWM2LmJpbmRQb3B1cChwb3B1cF8yMTA1NjJmMjlkZGI0ZWFhOWI0YTcxOGMyODRlNjUxZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jZTM1NDg1NzYxNGU0MmZlOTNkMTZjNWJmMTFhODE1NSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTI2ODE0NjkwODM5NiwtMTIyLjQ3MjcxNTc1OTYzMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2YyODJlNTM0NjAxMDQ5ZWZhYzQ1YzZjZjdkMzQ1MzA1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA2ZjE2OTE4YjI3ZDQ1NGFiNDZiN2ZmYzhlZjZkZmY4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzExMGQwMDk1NDk3MjRkNmRiMDFjYTc2ZjNhNjEwZmZlID0gJCgnPGRpdiBpZD0iaHRtbF8xMTBkMDA5NTQ5NzI0ZDZkYjAxY2E3NmYzYTYxMGZmZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDZmMTY5MThiMjdkNDU0YWI0NmI3ZmZjOGVmNmRmZjguc2V0Q29udGVudChodG1sXzExMGQwMDk1NDk3MjRkNmRiMDFjYTc2ZjNhNjEwZmZlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfY2UzNTQ4NTc2MTRlNDJmZTkzZDE2YzViZjExYTgxNTUuYmluZFBvcHVwKHBvcHVwXzA2ZjE2OTE4YjI3ZDQ1NGFiNDZiN2ZmYzhlZjZkZmY4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mMjgyZTUzNDYwMTA0OWVmYWM0NWM2Y2Y3ZDM0NTMwNSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWUxYjg1ZDNmNGE1NGRjZGE1ZDRlMTE5ZjgzZWZmNTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IzYjhmNTUwNDExODRkZWU4YzA5YjFiNzcxYTBkOTNjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xNjRiMjZhY2FhYTg0ZTM4OWZmMmVlOTNlOWVmNzVkMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IzZTIxODkzODBiOTRkM2M5OWQ4NzgzOGU3OTBhYzNmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNjc5ZjUxZGRmMzk0ZGVhOWU0OWY3YjYyZTBlMWU2MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wM2I5ZGNhMzgwNzA0ODkxYjgxNDZkNGE2NjkxMjhkYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjY2Y2I2OGNhZmM5NDExYTlmZmViMmUzMzIzYjJhOWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGVlZmRmMDY5NGU3NGQ5ZmI5Zjc2NmYxMzM0ZWNlOWMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWE1MjlhYzU4ZWQ1NDIxZDhjOTNmZWE1OTFlOTkwOWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xYjIyZDcwYTE5ZWM0MTkxYjJlMGMwOTQ4MzVhMWQ0OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83ZjhlYzMzOGY4MjU0MmNjYjJlNzZiODljNjRjZWIxNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDVhZGZjZjBmNGY1NDMyNWI4ZTliNjhlOGQ2MTE5YmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZTgyNTQ2ZDBmM2E0YzNmYWEzOGQ3MjdkNDIyMWU1OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGFkYTFjOTEyNjFkNGQxZjk4MTc5ODdlYTdkMDhhZTggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjI4NWEwOTc3MzIyNGVlZWEwZTdkZDE3NDY2Y2JmODAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk5YTg4ODkxOGJhZjRiMDJhMmFiOWM5MWI3MzQ3NDFhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y5NDYzNmEzNTIxYjQ0YWQ5MDBiNDJjMzAyNTU3MzI0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzgwMjUzZGI3OWYxNDZjZjk1ODUzNjVlNDMyMDFkOGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81ZGZlYmE0MjkwYWE0NThmODcwODk0YWMyNzI5MjJiYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRmYTU4NTg2MWE5NjQ5NzRhZDNlNDJhYWYyYTg1Y2NkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAzMGIzM2M0M2MxNjQzYTc4NjY2NWJhMWVmMmExM2RkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjU1NjA2Nzg3OWM1NDRmZmIwNDgzODJkMDY5YjI5MDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RiYmJiODM1ZmQxMTRhYTNiOWM2NzdhODU3ODU0YzhlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zYTJjMGEyMWQwZDI0YjdlOGI2NmE4NWMxMjQzOTNhYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmMyMTEzNDE5ZGQ0NDQ3ZGE4NmUwZWUxMTdlYmEzNjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kMmYyOWUyNmY0ODM0YjRmOGMwMDNjZWU4MWYyN2Q2ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2U0ZGMyOTZmNjlkNDRhMGE5MmQyNDFhMjUzNDUzMDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzVhYTQ0MjY2MzJiNDg5OGFmZjBiMmY2YTFmY2FmN2YgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDdlYjBkZWJlYTEwNGJjNjlhNDUwZjFjMDA2ZWQ4MzcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNTg1NzM5Y2NkYmI0YzU1YjM4YjIwMWIxOTUwNWU4MyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83MzNkZDNkNTdiZmE0ZDVkODA1YzgxMjQzMjdkOTZkNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzgzNDkyZDMyYzRlMzRhMzc4NzI5NDNkNjk4OGI5NjU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzc5NThhMDgyMDc1MDQ0NmViOGU5OTk4Mjc2YzYxOTZkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFmNTZkMzk5NWEwODRhMTFiOWZiMTY3NDQ1OGVlZjZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVhYzViZGM0MWY4YTQ0NTZiNWY4NTkyODI2NTZkYzA3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjI5YTRmZWEyMDQzNDgyNmE5Y2ViMTQyYTI5OTI2ZjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xMDhjODgxMmZkZGU0ZGQzYmY1MWZiM2MwYTMzYjdiNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk1N2Q2NTg0M2I5MDQ1MGM4MmUzODBkZDgyZTJhZDlhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzczYzkwOWU5MGY4MjQ3NTA5MDQxMGQzZGViODUzNmQ0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGZkYWQ0NGVjZDVhNGJkNmJlNGNlNzFmOGQxNzdmZTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82OGQ5MWZmNGM2YzQ0ODEzYWNjNjYwMWQ2OTRiYmJlNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jODdmMjQxNjdiYTA0OTZkOTc3ZWRkZWRmNjgwYTFkNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNjgwZjIzZTgwNzk0ZjM4YWM0N2JkNGYwNjFjMjEzNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81ZDA2YTQwNjFkOTY0YzczOWM5NDk3M2FlNWVmNzcwMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzEyNzU2NGQxMzkxNDFlNzllNDJiZGZlOGI2MGVmOTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNDM4MmNkYmYxOGY0NTAxYWYwODI4MzU0ZjE2YWNkNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y3ZDg3MDM2NjE0ODRlZDM5YmUzNjczY2EyNDAwOWY5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y4NGQ4N2M2NGZmZTQ1MGZiMmRmMjdjOGE3ZWU1MTFjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2EyMTI1MWNkNGRiODQ2M2M4N2RkMjEyNTlkZGY3YjM5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZkMzk2MzEzNWU2NjRmOGU4MDllY2JiMDg4MDkwOGM1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QxZTZmZmFiNjkxMDRhYTg5MzM2YWUxZDM2NTc5NTUxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTIxOWU1YWUyMDM4NGYzYmIyNjhjZjg3ODgwZmQ4Y2IgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NTZkODgwYmM2YzM0NzA2OTRhMDMyZTk1ZTFlYjhjMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81YTRlNzRkMGQ1MzU0MjFlYTZkNTQzNDFlMGNhMWEzNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jM2IwNDc5NWNlNmY0ZWQ5YWE0MGU3MGY5ZWJhYTJhZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQxZGFiNGRiOWU1NjQ4MWU4MWE1YWJmNjBkN2ExNTM1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY1NDZmMjMzNTQzYjQwODBhMzYzODY3ZWJkMmI2OWI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGNlNzAxZWE2MDUyNGM5OTk2NDRlNjgzN2U2NWI4ZDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDA4NzY3N2Y4ODMwNGUzNmFiYzFkOWY1M2VhNWNiZjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUwNWMzMGZlMDYzZDQyMTdiNTEwNThmN2QxN2ExMjgyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNzI5YTA0ODhlNTY0NzJkYTBjYWZkM2Q4MzljZjc0ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTdhZDE2OWZhODkzNGQyNDg0YjQ4OTI3NTliZjcxMTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzEyMTlhODM3MjE3NDczZWJmNmNkYTRiMjQwYTQwNmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWM2NzMyZjAwNmM1NDQ1Nzk4MzU1M2ExOWQ4ODc4ZDkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjVjNDU1ZWRjMDE1NDU2OWJhNDEwYzk1NjIwZDdlYjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2I5NWI4YTQ5MmI2NGY4YzliZDJhMGIwMDFlZWFlYTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81MjA3NTFiNjFkODM0NjgyYTMzYTMzYTMxMTQ3NjlkMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMTRhNGNlMzFlZjk0ZTUxYmNlZjBjN2U3ZDEwZjJhNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQzNmVkNWIyZjI3ODQ1YmFhZGE2NWE3YmVjMGNkMWI1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzMzYWY4YjRhNzkxOTQ2YTg5YjFkOWEyZTIxMzk1ZjQwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ3MGQ3YWI1Mjk5MzQ4OGRhMmRkYWVmYTI1YWYyNzhjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NDY3NTQ2NTA5MDM0OTkwODhkMDFjNmRkYTU4YjAxZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODRkZWZlYmMxNGMxNDRlOGFhNGY2NTJmNGQ4ZjI4OTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYwYzMxZjhmMzUwNDQ5ZTE4YWY3OTlkNGQ1NDZlNDZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWExMDNmYWQ2YWMwNDA5ZDk0OTg2NDZmMzYxZTgxNDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjJmYzM2MTNhNDI0NDI3ZWJhZTQxNThjMjg5M2Y1Y2YgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85OWJkNjlhOWRiZjY0NjdiYjkzZmYxMjM5Y2UyYzkwZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTZhMjM5YzMzZmVlNDRhMGFjMzE5NmY2ZWI3MmNkZDYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FiZjY5MTQ0NjY5MzRkNmE4NzdmNGQxNDAzYTAxMThkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYTliM2ZkNzg3NDk0OTI2ODQxNWE3ZmI1ZjgwZmIzYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JmNTVkZDU3NTMwZjRkMjZhNDNhYTJkOGI4NWE1ZTRjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JmOGFmNTY5NTRhMDQxMTQ5ODJiNmMwZWU2ZDk4NTg2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ2OWYyZTNhY2Y2NjQ2ZjY5NGU4MWJkNzZhMDM0ODYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iZDIzNmUyMTI3NDg0ZjY4OTRiODhkYmU5NGI0YzU1YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE3YWJmMmM2NWZkYzQyN2M4YjQyYWM0Y2M5MDk2ZjIzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IzY2VjYjdiODZmMTRlOTE5NjRjYWI3Y2EwYjgzYTVkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg3ZjRiM2E0OTUwYTQ0ZWViZWEzYzk1ODc0YTdmOTQ4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xZDk1ODFmZjUzM2U0MmNiYWEzYWM5NjVhYjA5ZTAyNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80OWExOTM3Njg4NTk0ZGYzYjJlNTYyMmEzMTBiMDkxMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJmN2RkOTI3NzczMTQwM2Q5YmRmMDM0OTdlMmMxYzNiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzIwNjM0YmZlYTkzNDlhNDlkNmFlMzI1MzY3MjI5MGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81Y2M4YzhiYTRjNGM0NmNhYmQ5YzVhYjM2YWFjMjc2MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA1NGFhYTMyZWMzNTQxZjQ4MjY5ZTA3Mjg5ZTE2NTcwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWZkMTA5YzllMjExNGNiNWFhNDRjNTExZDEzNzE2NzMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNDBiOTJhZDFkNWE0NGVkOWQxMGY2MzJiZDU2ZmNiMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NDBiMjAwODE0OGQ0OGM1OTE1Njk0M2UwOGFjOThiZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF83NGU4NmViZTEwNjg0YjU2OGZmMzc1OWI5MThiYjE3ZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY5YTg3YTY5OWYwZjQ2MjU5ZmIzODVkNzJlODE4ZjMwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDJlOWM2MjYwZTVlNGM5MThlMDE3MjIyNjlkMGFmMmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmJhYzEzMWY0ZTE3NGIwN2E1YmVjNjRlZDk0MTE4MjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwXzc0ZTg2ZWJlMTA2ODRiNTY4ZmYzNzU5YjkxOGJiMTdlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmFlOWM4ZmMzN2NkNDhmZjhiZTA2YTQ1NDMwYTRlOTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfNzRlODZlYmUxMDY4NGI1NjhmZjM3NTliOTE4YmIxN2UpOwogICAgICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fde9d246780>"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# instantiate a feature group for the incidents in the dataframe\n",
"incidents = folium.map.FeatureGroup()\n",
"\n",
"# loop through the 100 crimes and add each to the incidents feature group\n",
"for lat, lng, in zip(df_incidents.Y, df_incidents.X):\n",
" incidents.add_child(\n",
" folium.features.CircleMarker(\n",
" [lat, lng],\n",
" radius=5, # define how big you want the circle markers to be\n",
" color='yellow',\n",
" fill=True,\n",
" fill_color='blue',\n",
" fill_opacity=0.6\n",
" )\n",
" )\n",
"\n",
"# add pop-up text to each marker on the map\n",
"latitudes = list(df_incidents.Y)\n",
"longitudes = list(df_incidents.X)\n",
"labels = list(df_incidents.Category)\n",
"\n",
"for lat, lng, label in zip(latitudes, longitudes, labels):\n",
" folium.Marker([lat, lng], popup=label).add_to(sanfran_map) \n",
" \n",
"# add incidents to map\n",
"sanfran_map.add_child(incidents)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Isn't this really cool? Now you are able to know what crime category occurred at each marker.\n",
"\n",
"If you find the map to be so congested will all these markers, there are two remedies to this problem. The simpler solution is to remove these location markers and just add the text to the circle markers themselves as follows:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": 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;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfMWM2NDBiZDRiODczNGQ3NjliNTZlOGQzOGQ2ODcwYjYgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAwMmRjOTdjY2RiNTQzZGNhNGZiY2QyMjA0Y2YxZGNkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jZDYxY2EzOTc4OGQ0M2Y1YjNmNzE2NzVmNWI2NzFjZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMDMxZTNkNWQ2NzY0MmZjOTY3OTZkOGMwODZjZjE2NSA9ICQoJzxkaXYgaWQ9Imh0bWxfYjAzMWUzZDVkNjc2NDJmYzk2Nzk2ZDhjMDg2Y2YxNjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jZDYxY2EzOTc4OGQ0M2Y1YjNmNzE2NzVmNWI2NzFjZi5zZXRDb250ZW50KGh0bWxfYjAzMWUzZDVkNjc2NDJmYzk2Nzk2ZDhjMDg2Y2YxNjUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDAyZGM5N2NjZGI1NDNkY2E0ZmJjZDIyMDRjZjFkY2QuYmluZFBvcHVwKHBvcHVwX2NkNjFjYTM5Nzg4ZDQzZjViM2Y3MTY3NWY1YjY3MWNmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzAxMTgwY2UyZTQzMzQxMmY4ZjAwZmJjMzRlMTEzYjBmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jYzhkMWFlY2ZhZmU0MTljYTBmNzM5ODE5NDc2NjNjNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81N2U1NWQyOGEzMWE0MTQzODgwNzZhYzc2NzZmZDY1MiA9ICQoJzxkaXYgaWQ9Imh0bWxfNTdlNTVkMjhhMzFhNDE0Mzg4MDc2YWM3Njc2ZmQ2NTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jYzhkMWFlY2ZhZmU0MTljYTBmNzM5ODE5NDc2NjNjNC5zZXRDb250ZW50KGh0bWxfNTdlNTVkMjhhMzFhNDE0Mzg4MDc2YWM3Njc2ZmQ2NTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDExODBjZTJlNDMzNDEyZjhmMDBmYmMzNGUxMTNiMGYuYmluZFBvcHVwKHBvcHVwX2NjOGQxYWVjZmFmZTQxOWNhMGY3Mzk4MTk0NzY2M2M0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZmZGZhNzFjYzVlNjRkOWJiNTZjZGQxMWMxOWZmOGZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI5OTgwOTY3Mjk5NTk2LC0xMjIuMzg4ODU2MjA0MjkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWM4NGEyNTM1MTIyNGU1YzhhYTM1NGIzNDU3NjQxNGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjVkZWEzNmIxZDU4NGM0Y2FjNmQxMTgzZWFkNzczMGYgPSAkKCc8ZGl2IGlkPSJodG1sXzY1ZGVhMzZiMWQ1ODRjNGNhYzZkMTE4M2VhZDc3MzBmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWM4NGEyNTM1MTIyNGU1YzhhYTM1NGIzNDU3NjQxNGEuc2V0Q29udGVudChodG1sXzY1ZGVhMzZiMWQ1ODRjNGNhYzZkMTE4M2VhZDc3MzBmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzZmZGZhNzFjYzVlNjRkOWJiNTZjZGQxMWMxOWZmOGZhLmJpbmRQb3B1cChwb3B1cF85Yzg0YTI1MzUxMjI0ZTVjOGFhMzU0YjM0NTc2NDE0YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iOTllMjM5MTcwMDI0NjQ5YWFlNTQ2MmRiYmI2YmE0MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTc4ODM3NjY4ODc5LC0xMjIuNDEyOTcwNTM3NTkxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjhkNTMxYTUzOTE3NDIxNDgwZTE1ODNiZjI5Mzk1YTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGJmZmY5NzE0ZGM4NGVmMWFmY2ZiOGMyYWZhNWY3YWUgPSAkKCc8ZGl2IGlkPSJodG1sX2RiZmZmOTcxNGRjODRlZjFhZmNmYjhjMmFmYTVmN2FlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y4ZDUzMWE1MzkxNzQyMTQ4MGUxNTgzYmYyOTM5NWE2LnNldENvbnRlbnQoaHRtbF9kYmZmZjk3MTRkYzg0ZWYxYWZjZmI4YzJhZmE1ZjdhZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iOTllMjM5MTcwMDI0NjQ5YWFlNTQ2MmRiYmI2YmE0MC5iaW5kUG9wdXAocG9wdXBfZjhkNTMxYTUzOTE3NDIxNDgwZTE1ODNiZjI5Mzk1YTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGFlNGUwMDFjZTkxNGRlZmE0MTc4MmUwZDBiMjM0M2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjUwNTAxMjE0NjY4LC0xMjIuNDE5NjcxNzgwMjk2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGEzNjExMjc3MGRkNGI1Njg5NDJiNTU4YmY2MDk2ZmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmY4NGRlNmE5Y2ZlNDJjMTliZTgyZmFhMDdmODhiYzIgPSAkKCc8ZGl2IGlkPSJodG1sX2ZmODRkZTZhOWNmZTQyYzE5YmU4MmZhYTA3Zjg4YmMyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RhMzYxMTI3NzBkZDRiNTY4OTQyYjU1OGJmNjA5NmZlLnNldENvbnRlbnQoaHRtbF9mZjg0ZGU2YTljZmU0MmMxOWJlODJmYWEwN2Y4OGJjMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80YWU0ZTAwMWNlOTE0ZGVmYTQxNzgyZTBkMGIyMzQzZC5iaW5kUG9wdXAocG9wdXBfZGEzNjExMjc3MGRkNGI1Njg5NDJiNTU4YmY2MDk2ZmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTc5NjdkMWViOTY0NDkyMGFkMDVjNzEzNmE3ZDA5ZjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMTg1NTU4MjksLTEyMi40MjYwNzcxNzczNzQ5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q4ZGRhMjY1Mzk5NzQ1YWM4ZGIyY2U1OWU5ZWI2YmYyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk2NmJlZTI1YWFjMjQxZjc4MjQ2MDg3YTRiOWFmMjM1ID0gJCgnPGRpdiBpZD0iaHRtbF85NjZiZWUyNWFhYzI0MWY3ODI0NjA4N2E0YjlhZjIzNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDhkZGEyNjUzOTk3NDVhYzhkYjJjZTU5ZTllYjZiZjIuc2V0Q29udGVudChodG1sXzk2NmJlZTI1YWFjMjQxZjc4MjQ2MDg3YTRiOWFmMjM1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzE3OTY3ZDFlYjk2NDQ5MjBhZDA1YzcxMzZhN2QwOWYyLmJpbmRQb3B1cChwb3B1cF9kOGRkYTI2NTM5OTc0NWFjOGRiMmNlNTllOWViNmJmMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNjhiOTZhYjg5Y2M0ZTAyODQwNGEzNjAxYTg0NWFlNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDg3ODkzNjAyMTQsLTEyMi40MDU3MjE0NTQ1NjddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zNzA3YjMwYThiYWM0YmY3OTFlNTFhMmMzZDJiZDFiMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hNjA1MjczZWY3Y2E0NjM3OWQ4MTQ0YmM1YWRlNDBiNiA9ICQoJzxkaXYgaWQ9Imh0bWxfYTYwNTI3M2VmN2NhNDYzNzlkODE0NGJjNWFkZTQwYjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNzA3YjMwYThiYWM0YmY3OTFlNTFhMmMzZDJiZDFiMC5zZXRDb250ZW50KGh0bWxfYTYwNTI3M2VmN2NhNDYzNzlkODE0NGJjNWFkZTQwYjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjY4Yjk2YWI4OWNjNGUwMjg0MDRhMzYwMWE4NDVhZTYuYmluZFBvcHVwKHBvcHVwXzM3MDdiMzBhOGJhYzRiZjc5MWU1MWEyYzNkMmJkMWIwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U1MjE4N2IwNzA1MTQ1NzViYmY0MzMzYTA3MjNiY2YwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzOTgwNTU5MjYzNCwtMTIyLjQxMTc3ODI5NTk5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE2OGMyMzgyMzZjZTQ3NTE5NmJlMDJiZmY3OTYwMjI4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U4M2I0MTFhZWRhMTQzNzg5NmJhOGE2ZmE3NDYyZjU2ID0gJCgnPGRpdiBpZD0iaHRtbF9lODNiNDExYWVkYTE0Mzc4OTZiYThhNmZhNzQ2MmY1NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xNjhjMjM4MjM2Y2U0NzUxOTZiZTAyYmZmNzk2MDIyOC5zZXRDb250ZW50KGh0bWxfZTgzYjQxMWFlZGExNDM3ODk2YmE4YTZmYTc0NjJmNTYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTUyMTg3YjA3MDUxNDU3NWJiZjQzMzNhMDcyM2JjZjAuYmluZFBvcHVwKHBvcHVwXzE2OGMyMzgyMzZjZTQ3NTE5NmJlMDJiZmY3OTYwMjI4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2YyODgwMmViZTY0YjRjZDc4NzY1ZTcwYzQzMWNmYjIwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1Nzg3NjIxODI5Mjk1LC0xMjIuMzkzMzU3MjQxNDUxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmVlZDIxZTVhOTA0NDgyNmJhZmFhYTM4NDRkMGZlZjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODQ4M2RmNWE0NDAwNDg4Zjg3NjJmYjdhOGVmYTQ4OTQgPSAkKCc8ZGl2IGlkPSJodG1sXzg0ODNkZjVhNDQwMDQ4OGY4NzYyZmI3YThlZmE0ODk0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmVlZDIxZTVhOTA0NDgyNmJhZmFhYTM4NDRkMGZlZjYuc2V0Q29udGVudChodG1sXzg0ODNkZjVhNDQwMDQ4OGY4NzYyZmI3YThlZmE0ODk0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2YyODgwMmViZTY0YjRjZDc4NzY1ZTcwYzQzMWNmYjIwLmJpbmRQb3B1cChwb3B1cF8yZWVkMjFlNWE5MDQ0ODI2YmFmYWFhMzg0NGQwZmVmNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83MWNlYzczMjIxM2E0MmYwYThmMmEzMzliMTY2N2FhOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hNDVhYmViZWZjZDg0NTBhOWI1MThiYzQzZDY2YWJkZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80MDljNDhiYzE0ZDA0MGZmODA5ZTMxMzc0ZjBiZTk1ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNDA5YzQ4YmMxNGQwNDBmZjgwOWUzMTM3NGYwYmU5NWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hNDVhYmViZWZjZDg0NTBhOWI1MThiYzQzZDY2YWJkZC5zZXRDb250ZW50KGh0bWxfNDA5YzQ4YmMxNGQwNDBmZjgwOWUzMTM3NGYwYmU5NWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzFjZWM3MzIyMTNhNDJmMGE4ZjJhMzM5YjE2NjdhYTkuYmluZFBvcHVwKHBvcHVwX2E0NWFiZWJlZmNkODQ1MGE5YjUxOGJjNDNkNjZhYmRkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2NjMDdjMzJiZDY0NzRhODliYmZiNWYxNWUyZWUyM2YyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDc4MTU3ODY5NTA1LC0xMjIuNDc3Mzc2NTI0MDAyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMWEyZTVlNmE0NDY0MjM2OWY2Zjg4YjkzMGU1MDM0OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wNGQ4MDI1MjQzMTM0NTY1YjY0MTliNjM3ZmIwYWZiNSA9ICQoJzxkaXYgaWQ9Imh0bWxfMDRkODAyNTI0MzEzNDU2NWI2NDE5YjYzN2ZiMGFmYjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UxYTJlNWU2YTQ0NjQyMzY5ZjZmODhiOTMwZTUwMzQ5LnNldENvbnRlbnQoaHRtbF8wNGQ4MDI1MjQzMTM0NTY1YjY0MTliNjM3ZmIwYWZiNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jYzA3YzMyYmQ2NDc0YTg5YmJmYjVmMTVlMmVlMjNmMi5iaW5kUG9wdXAocG9wdXBfZTFhMmU1ZTZhNDQ2NDIzNjlmNmY4OGI5MzBlNTAzNDkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTczNWU3ZjA0ZTFhNGJjNzg1NDJlODhjMTlhZDg3NWIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wZThlODk1YjY1MmE0YzMwODY2OTRhODQzYzc3ZGQ1NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85MTg4ODdlZTYwNGU0YTViODhjYTE1MzdhYjU4OGFkOSA9ICQoJzxkaXYgaWQ9Imh0bWxfOTE4ODg3ZWU2MDRlNGE1Yjg4Y2ExNTM3YWI1ODhhZDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGU4ZTg5NWI2NTJhNGMzMDg2Njk0YTg0M2M3N2RkNTUuc2V0Q29udGVudChodG1sXzkxODg4N2VlNjA0ZTRhNWI4OGNhMTUzN2FiNTg4YWQ5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzU3MzVlN2YwNGUxYTRiYzc4NTQyZTg4YzE5YWQ4NzViLmJpbmRQb3B1cChwb3B1cF8wZThlODk1YjY1MmE0YzMwODY2OTRhODQzYzc3ZGQ1NSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80MzczOWMwMWQ0YWU0NjYxOGU5OGNmMzlmMTY2MmU5YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTQ1MTk0MDgxMDlmNDJmZWExZTliMjg3MDA5NDYwNGUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWVmNTE1NWM1YmI1NDk3OThiNTQ1MmU0YzVjNDdiMjEgPSAkKCc8ZGl2IGlkPSJodG1sXzFlZjUxNTVjNWJiNTQ5Nzk4YjU0NTJlNGM1YzQ3YjIxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTQ1MTk0MDgxMDlmNDJmZWExZTliMjg3MDA5NDYwNGUuc2V0Q29udGVudChodG1sXzFlZjUxNTVjNWJiNTQ5Nzk4YjU0NTJlNGM1YzQ3YjIxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQzNzM5YzAxZDRhZTQ2NjE4ZTk4Y2YzOWYxNjYyZTljLmJpbmRQb3B1cChwb3B1cF85NDUxOTQwODEwOWY0MmZlYTFlOWIyODcwMDk0NjA0ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMTg4MWNhNDA4OTE0MjU3YWY4NDM4ZWM0YTcxOWVkNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTI3MDUxOTk1OTIsLTEyMi40MzIzMjU4NzEwMjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zYTNhMjI2NmUwZTY0YWQzYWEzMzBjZjhhYzgwYWZiMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hYjQyZjAyMGI4ZDA0ZDlmODIxYzg0ZGI4MzA3MDBmMyA9ICQoJzxkaXYgaWQ9Imh0bWxfYWI0MmYwMjBiOGQwNGQ5ZjgyMWM4NGRiODMwNzAwZjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNhM2EyMjY2ZTBlNjRhZDNhYTMzMGNmOGFjODBhZmIyLnNldENvbnRlbnQoaHRtbF9hYjQyZjAyMGI4ZDA0ZDlmODIxYzg0ZGI4MzA3MDBmMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jMTg4MWNhNDA4OTE0MjU3YWY4NDM4ZWM0YTcxOWVkNC5iaW5kUG9wdXAocG9wdXBfM2EzYTIyNjZlMGU2NGFkM2FhMzMwY2Y4YWM4MGFmYjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjg0NTRjYzVjN2Q5NGI1ZDlmYTlmNWZjZWQzNDJmMTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzgyMGFkMzc5ZmMwZjRhZjRiODU2ZGMyNmMzNTNiNzM4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBlYmIxNDc3YTY2NTQ2NmU4NTFhMWM2ZjYxYWJiZDZjID0gJCgnPGRpdiBpZD0iaHRtbF8wZWJiMTQ3N2E2NjU0NjZlODUxYTFjNmY2MWFiYmQ2YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzgyMGFkMzc5ZmMwZjRhZjRiODU2ZGMyNmMzNTNiNzM4LnNldENvbnRlbnQoaHRtbF8wZWJiMTQ3N2E2NjU0NjZlODUxYTFjNmY2MWFiYmQ2Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mODQ1NGNjNWM3ZDk0YjVkOWZhOWY1ZmNlZDM0MmYxMC5iaW5kUG9wdXAocG9wdXBfODIwYWQzNzlmYzBmNGFmNGI4NTZkYzI2YzM1M2I3MzgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTFkMGUyYWQzZDczNGU0MDkyMmU4ZDAwYmE2YTBkMTQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM3MDY5MzAxNTQ1LC0xMjIuNDA4NTk1MTEwODY5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjkwZjQ3NzcxZmQ2NDVjNmFiOTgwMmI1YmFkNWZkZTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTk5MTE4MGQxY2IxNDk2NjhhOThkYmJmNzE1NmRmZmIgPSAkKCc8ZGl2IGlkPSJodG1sXzE5OTExODBkMWNiMTQ5NjY4YTk4ZGJiZjcxNTZkZmZiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVE9MRU4gUFJPUEVSVFk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y5MGY0Nzc3MWZkNjQ1YzZhYjk4MDJiNWJhZDVmZGUzLnNldENvbnRlbnQoaHRtbF8xOTkxMTgwZDFjYjE0OTY2OGE5OGRiYmY3MTU2ZGZmYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85MWQwZTJhZDNkNzM0ZTQwOTIyZThkMDBiYTZhMGQxNC5iaW5kUG9wdXAocG9wdXBfZjkwZjQ3NzcxZmQ2NDVjNmFiOTgwMmI1YmFkNWZkZTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmViMmJiMWIxZjUzNGFjNTg0Yzk5NmZmN2YwNjIwYmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTcyODk1OTA0NTc3OTUsLTEyMi40MDY4NzA0MDIwODJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80YThiYzZlYjA3ZDc0ZWU0OTcyNzE0OTU5MTEyYzExMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMWI5NTA3YmM0YmU0ODQwOTllM2FmNjg4NTA5YWFiMiA9ICQoJzxkaXYgaWQ9Imh0bWxfYjFiOTUwN2JjNGJlNDg0MDk5ZTNhZjY4ODUwOWFhYjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRhOGJjNmViMDdkNzRlZTQ5NzI3MTQ5NTkxMTJjMTEwLnNldENvbnRlbnQoaHRtbF9iMWI5NTA3YmM0YmU0ODQwOTllM2FmNjg4NTA5YWFiMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yZWIyYmIxYjFmNTM0YWM1ODRjOTk2ZmY3ZjA2MjBiYy5iaW5kUG9wdXAocG9wdXBfNGE4YmM2ZWIwN2Q3NGVlNDk3MjcxNDk1OTExMmMxMTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODA2MDBlYTRiYjg5NGZhODk0MTNlNGE2NGM2MGU5MjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kNmQ5MGRkMjNkN2Y0MjJjOTQzMzk5NzUxM2IxNDY1YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82YjA0NTI2NGI2ZjI0NWE3OWViODdmNGFhM2QxM2QzNCA9ICQoJzxkaXYgaWQ9Imh0bWxfNmIwNDUyNjRiNmYyNDVhNzllYjg3ZjRhYTNkMTNkMzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q2ZDkwZGQyM2Q3ZjQyMmM5NDMzOTk3NTEzYjE0NjViLnNldENvbnRlbnQoaHRtbF82YjA0NTI2NGI2ZjI0NWE3OWViODdmNGFhM2QxM2QzNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84MDYwMGVhNGJiODk0ZmE4OTQxM2U0YTY0YzYwZTkyOC5iaW5kUG9wdXAocG9wdXBfZDZkOTBkZDIzZDdmNDIyYzk0MzM5OTc1MTNiMTQ2NWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTRlZGUwN2UwNWEzNDVjYmIyNDcwNDUwZTYwYmZlODMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTU3NjU0MjY5OTUsLTEyMi40Mzk5MDk3NjY3NzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NzJhYTM3NjAxMTE0M2M1YjM1NmE3YjBlZDgyNGE5MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zZjE2Yzg0NzUzYmI0MDc4YWYyNmJkNjRlNmRiMmViMyA9ICQoJzxkaXYgaWQ9Imh0bWxfM2YxNmM4NDc1M2JiNDA3OGFmMjZiZDY0ZTZkYjJlYjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU3MmFhMzc2MDExMTQzYzViMzU2YTdiMGVkODI0YTkyLnNldENvbnRlbnQoaHRtbF8zZjE2Yzg0NzUzYmI0MDc4YWYyNmJkNjRlNmRiMmViMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85NGVkZTA3ZTA1YTM0NWNiYjI0NzA0NTBlNjBiZmU4My5iaW5kUG9wdXAocG9wdXBfNTcyYWEzNzYwMTExNDNjNWIzNTZhN2IwZWQ4MjRhOTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGQ4NjdhMTVmOGUxNDEwM2JiMTZkODEzN2I3MDI4N2IgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM1Njk5Mzg2OTE4LC0xMjIuNDA4NDIxMTE2OTIyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTRiMTk0ZjcyZWY4NGQxZjkzM2M1MzhjMGQ0ZjA5NjkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjJhOTY0MWRlODUwNGFiODlhNjAyYmFkMmEzYzVlN2MgPSAkKCc8ZGl2IGlkPSJodG1sX2YyYTk2NDFkZTg1MDRhYjg5YTYwMmJhZDJhM2M1ZTdjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NGIxOTRmNzJlZjg0ZDFmOTMzYzUzOGMwZDRmMDk2OS5zZXRDb250ZW50KGh0bWxfZjJhOTY0MWRlODUwNGFiODlhNjAyYmFkMmEzYzVlN2MpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGQ4NjdhMTVmOGUxNDEwM2JiMTZkODEzN2I3MDI4N2IuYmluZFBvcHVwKHBvcHVwXzU0YjE5NGY3MmVmODRkMWY5MzNjNTM4YzBkNGYwOTY5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYzNzQ0YTIxMTk2MTQ1ODdhMGExMDIzNWYwYzFiNTYzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTc3YzdlMjU2YTQwNGJiN2I3Y2I2YjViNTczZTkzMWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWEwZGJjZDk0ZGJiNDEzNThjM2JkYjEyMTUzNTM1NDAgPSAkKCc8ZGl2IGlkPSJodG1sXzVhMGRiY2Q5NGRiYjQxMzU4YzNiZGIxMjE1MzUzNTQwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GUkFVRDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTc3YzdlMjU2YTQwNGJiN2I3Y2I2YjViNTczZTkzMWMuc2V0Q29udGVudChodG1sXzVhMGRiY2Q5NGRiYjQxMzU4YzNiZGIxMjE1MzUzNTQwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzYzNzQ0YTIxMTk2MTQ1ODdhMGExMDIzNWYwYzFiNTYzLmJpbmRQb3B1cChwb3B1cF9lNzdjN2UyNTZhNDA0YmI3YjdjYjZiNWI1NzNlOTMxYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82NTY5NGU2ODE2YWY0OWQ4ODEyYjU2MGI0ODdjNTNmNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5Mjg0MTI4NDA0NDcwNSwtMTIyLjQyNDUxOTgzNTAwOTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmU2Njg4ZGJhZjI4NGFiN2FkZDgxZWMyN2IxMmFmNGYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGExZDM1ODc0OTVmNDU5MDg4NGZjNGE0YTAxNzVhNmUgPSAkKCc8ZGl2IGlkPSJodG1sX2RhMWQzNTg3NDk1ZjQ1OTA4ODRmYzRhNGEwMTc1YTZlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmU2Njg4ZGJhZjI4NGFiN2FkZDgxZWMyN2IxMmFmNGYuc2V0Q29udGVudChodG1sX2RhMWQzNTg3NDk1ZjQ1OTA4ODRmYzRhNGEwMTc1YTZlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzY1Njk0ZTY4MTZhZjQ5ZDg4MTJiNTYwYjQ4N2M1M2Y2LmJpbmRQb3B1cChwb3B1cF82ZTY2ODhkYmFmMjg0YWI3YWRkODFlYzI3YjEyYWY0Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMTA3OTU0M2Q5ZGI0MWJmYjYyYjczYWNkNGQ2MjJkZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODA1NTc3NzY2ZTg3NGYwOGJjZmQxN2M2MWJmZTYzYzMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmQ1NzdjNDYzNTc4NDZjMjlhNTQ1YTk4N2U0NjRmMTMgPSAkKCc8ZGl2IGlkPSJodG1sX2ZkNTc3YzQ2MzU3ODQ2YzI5YTU0NWE5ODdlNDY0ZjEzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84MDU1Nzc3NjZlODc0ZjA4YmNmZDE3YzYxYmZlNjNjMy5zZXRDb250ZW50KGh0bWxfZmQ1NzdjNDYzNTc4NDZjMjlhNTQ1YTk4N2U0NjRmMTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDEwNzk1NDNkOWRiNDFiZmI2MmI3M2FjZDRkNjIyZGYuYmluZFBvcHVwKHBvcHVwXzgwNTU3Nzc2NmU4NzRmMDhiY2ZkMTdjNjFiZmU2M2MzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzEyODE3ZDEzNTVkODRkMTNiMjVlMWFiNTNlYzA1ZDdiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lNjQ5Y2VhYmFmYWY0ZjM1ODA1NzNkZTZjZWY3MDQ5MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MjE0YTAzODk5NWQ0MGIzOTk1NGIxOWQ0NDVhZTdlMiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjIxNGEwMzg5OTVkNDBiMzk5NTRiMTlkNDQ1YWU3ZTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lNjQ5Y2VhYmFmYWY0ZjM1ODA1NzNkZTZjZWY3MDQ5My5zZXRDb250ZW50KGh0bWxfNjIxNGEwMzg5OTVkNDBiMzk5NTRiMTlkNDQ1YWU3ZTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTI4MTdkMTM1NWQ4NGQxM2IyNWUxYWI1M2VjMDVkN2IuYmluZFBvcHVwKHBvcHVwX2U2NDljZWFiYWZhZjRmMzU4MDU3M2RlNmNlZjcwNDkzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdhZmJjMDE5ZDg2ZDQ4ZjE4MWZiODM5YjlhMDViNWY4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzcxNDkzOTk2OTQxNiwtMTIyLjUwNzc1MDEzMTAwNDAyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNThiOGVmMGQyNTlkNGViNDk3NmJiNmM2N2FjOTUzNDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjhiNDVkMjkzZGY5NDFhMTg2OWRmNzBhODg3ZmRhOWQgPSAkKCc8ZGl2IGlkPSJodG1sXzI4YjQ1ZDI5M2RmOTQxYTE4NjlkZjcwYTg4N2ZkYTlkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81OGI4ZWYwZDI1OWQ0ZWI0OTc2YmI2YzY3YWM5NTM0MC5zZXRDb250ZW50KGh0bWxfMjhiNDVkMjkzZGY5NDFhMTg2OWRmNzBhODg3ZmRhOWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfN2FmYmMwMTlkODZkNDhmMTgxZmI4MzliOWEwNWI1ZjguYmluZFBvcHVwKHBvcHVwXzU4YjhlZjBkMjU5ZDRlYjQ5NzZiYjZjNjdhYzk1MzQwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzcyOWM3NDYyY2VhZTQxYTI4ZjM4ZGQ2MzM3OTYyZGJjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE4MzAyMjA0NzY2MDA1LC0xMjIuNDc0NDQ0NjM5NTk0OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wYzYzOGQxMjg2ZTI0YjgwYmEwZTA4ZTQxZjgwZTQ2ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mYmYxYTEzZWFjNjE0ODE0YjYxMGVkOWFiYzQ5ZWY3YyA9ICQoJzxkaXYgaWQ9Imh0bWxfZmJmMWExM2VhYzYxNDgxNGI2MTBlZDlhYmM0OWVmN2MiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wYzYzOGQxMjg2ZTI0YjgwYmEwZTA4ZTQxZjgwZTQ2ZS5zZXRDb250ZW50KGh0bWxfZmJmMWExM2VhYzYxNDgxNGI2MTBlZDlhYmM0OWVmN2MpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzI5Yzc0NjJjZWFlNDFhMjhmMzhkZDYzMzc5NjJkYmMuYmluZFBvcHVwKHBvcHVwXzBjNjM4ZDEyODZlMjRiODBiYTBlMDhlNDFmODBlNDZlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I5NmE5NDMxZGY5OTQ2N2FiNzExYzNhMzMyZDZlNTUzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NTc1MjMxNzYxNSwtMTIyLjQyNzU2MjU5Njk4NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzIwMWU0Y2Q2OTc1YTQ3Mjc5ZTE3MDQ1YTc1ZjU1OTQyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U4OTM2NzhhZmVlNjRhOTJhNjdjMjM2NGM4NjBhNjNjID0gJCgnPGRpdiBpZD0iaHRtbF9lODkzNjc4YWZlZTY0YTkyYTY3YzIzNjRjODYwYTYzYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzIwMWU0Y2Q2OTc1YTQ3Mjc5ZTE3MDQ1YTc1ZjU1OTQyLnNldENvbnRlbnQoaHRtbF9lODkzNjc4YWZlZTY0YTkyYTY3YzIzNjRjODYwYTYzYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iOTZhOTQzMWRmOTk0NjdhYjcxMWMzYTMzMmQ2ZTU1My5iaW5kUG9wdXAocG9wdXBfMjAxZTRjZDY5NzVhNDcyNzllMTcwNDVhNzVmNTU5NDIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjJlZDA5NzIyNDdkNDE3ODhiMGU1Mjc2ZmYwZTdhOGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWM2OGVjNzUzNmMzNDRlY2I4N2Q0YzBlMzk2NWE2MTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTQ0ZjIxOTEyOTMyNGZiNzgxZGRmNGM2OGI1MDI5MmYgPSAkKCc8ZGl2IGlkPSJodG1sXzU0NGYyMTkxMjkzMjRmYjc4MWRkZjRjNjhiNTAyOTJmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWM2OGVjNzUzNmMzNDRlY2I4N2Q0YzBlMzk2NWE2MTQuc2V0Q29udGVudChodG1sXzU0NGYyMTkxMjkzMjRmYjc4MWRkZjRjNjhiNTAyOTJmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2IyZWQwOTcyMjQ3ZDQxNzg4YjBlNTI3NmZmMGU3YThjLmJpbmRQb3B1cChwb3B1cF8xYzY4ZWM3NTM2YzM0NGVjYjg3ZDRjMGUzOTY1YTYxNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kODllMTYwOGQxZjA0MWIzYjI2OTIzMjczOTY2MzQ5NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTM2ODgyODQ1MzIsLTEyMi40MTI2OTAxNDIzMDgwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg5ZTZmZDk3MWUyNzRlNTM5MTU1NWU3MDJiNWEzMjllID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I0NDBkZDljMDk2MzRkNTdhYjQzMDdjNzkxNzljZTZhID0gJCgnPGRpdiBpZD0iaHRtbF9iNDQwZGQ5YzA5NjM0ZDU3YWI0MzA3Yzc5MTc5Y2U2YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg5ZTZmZDk3MWUyNzRlNTM5MTU1NWU3MDJiNWEzMjllLnNldENvbnRlbnQoaHRtbF9iNDQwZGQ5YzA5NjM0ZDU3YWI0MzA3Yzc5MTc5Y2U2YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kODllMTYwOGQxZjA0MWIzYjI2OTIzMjczOTY2MzQ5NC5iaW5kUG9wdXAocG9wdXBfODllNmZkOTcxZTI3NGU1MzkxNTU1ZTcwMmI1YTMyOWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjliMzRlNTE0YTY5NDM0OTlmMTYxZmI1OGYwZjY0YTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MDkyMDEwNDYyMzc5LC0xMjIuNDM0NjA5MjgwMzUyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTZmZTNjM2Y5NjNmNDlkMTlmYmZiOWJjMThkY2JhNTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDU1MDIxZWQ0ZWJkNDk5Y2FmOGQyZTAzYzJhZTE3NzMgPSAkKCc8ZGl2IGlkPSJodG1sX2Q1NTAyMWVkNGViZDQ5OWNhZjhkMmUwM2MyYWUxNzczIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E2ZmUzYzNmOTYzZjQ5ZDE5ZmJmYjliYzE4ZGNiYTU3LnNldENvbnRlbnQoaHRtbF9kNTUwMjFlZDRlYmQ0OTljYWY4ZDJlMDNjMmFlMTc3Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82OWIzNGU1MTRhNjk0MzQ5OWYxNjFmYjU4ZjBmNjRhOS5iaW5kUG9wdXAocG9wdXBfYTZmZTNjM2Y5NjNmNDlkMTlmYmZiOWJjMThkY2JhNTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGQ2Yzg0NGQ2Y2I1NGU4YjlhNjM0Y2E0MTM5ZjU5NzkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc5MjA5Mzc1NTMyOTUsLTEyMi40MTA4ODI4MjU1NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZjJkYmNkMWVjYzg0ZmRkODlhZDI1OWQ2M2U3MmY5OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xYTRlNTc5NDdkMjk0ZTBlODAzYzRjMDU5NWQzNDU4OSA9ICQoJzxkaXYgaWQ9Imh0bWxfMWE0ZTU3OTQ3ZDI5NGUwZTgwM2M0YzA1OTVkMzQ1ODkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZFSElDTEUgVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRmMmRiY2QxZWNjODRmZGQ4OWFkMjU5ZDYzZTcyZjk4LnNldENvbnRlbnQoaHRtbF8xYTRlNTc5NDdkMjk0ZTBlODAzYzRjMDU5NWQzNDU4OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wZDZjODQ0ZDZjYjU0ZThiOWE2MzRjYTQxMzlmNTk3OS5iaW5kUG9wdXAocG9wdXBfNGYyZGJjZDFlY2M4NGZkZDg5YWQyNTlkNjNlNzJmOTgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDY1MTI5NTk1NzU2NDc5ZmJmNjc5NzEzYjNiZDQ1MmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy44MDA0NTY2NDcxMDM4OSwtMTIyLjQwMTQzMjc1NDcyMjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmU3MzAwN2JjODY0NDhmMGFjOWZmMzA4ZDQ1ZjcxMDQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGU5ODk2MzdmODZiNDBhNGEwMjQ2YzA4Njc0NTUwYWQgPSAkKCc8ZGl2IGlkPSJodG1sXzhlOTg5NjM3Zjg2YjQwYTRhMDI0NmMwODY3NDU1MGFkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZTczMDA3YmM4NjQ0OGYwYWM5ZmYzMDhkNDVmNzEwNC5zZXRDb250ZW50KGh0bWxfOGU5ODk2MzdmODZiNDBhNGEwMjQ2YzA4Njc0NTUwYWQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDY1MTI5NTk1NzU2NDc5ZmJmNjc5NzEzYjNiZDQ1MmIuYmluZFBvcHVwKHBvcHVwXzZlNzMwMDdiYzg2NDQ4ZjBhYzlmZjMwOGQ0NWY3MTA0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQxM2JmMDA5ODFlNTQyMDA5OTFkNzM1MTk5YmFkY2E0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y5MTcwYTk3MWJmOTRhZGY4ODcwZDQ3MjFjYjkwM2I0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzcxYjU0YzQ0ZTkwNTQwNmE4ZWIwNGYwZGU3Yzg2NTczID0gJCgnPGRpdiBpZD0iaHRtbF83MWI1NGM0NGU5MDU0MDZhOGViMDRmMGRlN2M4NjU3MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjkxNzBhOTcxYmY5NGFkZjg4NzBkNDcyMWNiOTAzYjQuc2V0Q29udGVudChodG1sXzcxYjU0YzQ0ZTkwNTQwNmE4ZWIwNGYwZGU3Yzg2NTczKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQxM2JmMDA5ODFlNTQyMDA5OTFkNzM1MTk5YmFkY2E0LmJpbmRQb3B1cChwb3B1cF9mOTE3MGE5NzFiZjk0YWRmODg3MGQ0NzIxY2I5MDNiNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNmNiODlmZDRiZDM0ODZiYTUyNmZhMTEzNTk3ODNmMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NjU2NDc2MDc2ODUsLTEyMi40MDcyNDQwODcwMzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZmYwZTUwZDVhMDc0ZWIwOWM4NDVkYjIwMzA5YzFkOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hYTRlNzg4M2QyNmI0NTBiYjc1MTkwMGYwNjRlNGRlZCA9ICQoJzxkaXYgaWQ9Imh0bWxfYWE0ZTc4ODNkMjZiNDUwYmI3NTE5MDBmMDY0ZTRkZWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZmZjBlNTBkNWEwNzRlYjA5Yzg0NWRiMjAzMDljMWQ4LnNldENvbnRlbnQoaHRtbF9hYTRlNzg4M2QyNmI0NTBiYjc1MTkwMGYwNjRlNGRlZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iNmNiODlmZDRiZDM0ODZiYTUyNmZhMTEzNTk3ODNmMy5iaW5kUG9wdXAocG9wdXBfZmZmMGU1MGQ1YTA3NGViMDljODQ1ZGIyMDMwOWMxZDgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWFjZDVhOGVlNTVlNDM1MDlhYWQ1NjI3MDE1MDI0NDcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jMzcxYzU2ZGNmZDk0NDY4YWNiMWVkMDZiYThkYTA1NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83MGI3YzkxODg2MTI0NWZjOWU2NzFjOGQ4YzVlNWUxMSA9ICQoJzxkaXYgaWQ9Imh0bWxfNzBiN2M5MTg4NjEyNDVmYzllNjcxYzhkOGM1ZTVlMTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jMzcxYzU2ZGNmZDk0NDY4YWNiMWVkMDZiYThkYTA1Ni5zZXRDb250ZW50KGh0bWxfNzBiN2M5MTg4NjEyNDVmYzllNjcxYzhkOGM1ZTVlMTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWFjZDVhOGVlNTVlNDM1MDlhYWQ1NjI3MDE1MDI0NDcuYmluZFBvcHVwKHBvcHVwX2MzNzFjNTZkY2ZkOTQ0NjhhY2IxZWQwNmJhOGRhMDU2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ4ZGM3YjkzMzlmMjQwNGNiZmQxN2M3YTI4NTUxM2VkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDk3MjZkMDU0MzdmNGE1YTlkMWZiZTQyZGIzMzFhZWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzVlNDEzOGViMTBmNDIyNTgwN2UxYWRkMjdiYzhjOTAgPSAkKCc8ZGl2IGlkPSJodG1sX2M1ZTQxMzhlYjEwZjQyMjU4MDdlMWFkZDI3YmM4YzkwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDk3MjZkMDU0MzdmNGE1YTlkMWZiZTQyZGIzMzFhZWMuc2V0Q29udGVudChodG1sX2M1ZTQxMzhlYjEwZjQyMjU4MDdlMWFkZDI3YmM4YzkwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQ4ZGM3YjkzMzlmMjQwNGNiZmQxN2M3YTI4NTUxM2VkLmJpbmRQb3B1cChwb3B1cF8wOTcyNmQwNTQzN2Y0YTVhOWQxZmJlNDJkYjMzMWFlYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81Mzk4MjQ5MzQyMDc0YjcwOGMwNzljZjNkOWZjMTVjMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzliMWEzYTVjOWIxMzRmN2U5NDViZmRjYjg5ZmNmMDYyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RmMTBiMWI2MWY1YTRlNzY5MWZhZDMyZTQ1NTExYjVhID0gJCgnPGRpdiBpZD0iaHRtbF9kZjEwYjFiNjFmNWE0ZTc2OTFmYWQzMmU0NTUxMWI1YSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85YjFhM2E1YzliMTM0ZjdlOTQ1YmZkY2I4OWZjZjA2Mi5zZXRDb250ZW50KGh0bWxfZGYxMGIxYjYxZjVhNGU3NjkxZmFkMzJlNDU1MTFiNWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNTM5ODI0OTM0MjA3NGI3MDhjMDc5Y2YzZDlmYzE1YzMuYmluZFBvcHVwKHBvcHVwXzliMWEzYTVjOWIxMzRmN2U5NDViZmRjYjg5ZmNmMDYyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M0NTgxZGZkMjkyNjQ5ODE5MDUyNDUzYzk3NzExNzZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ5MTMxNDIzMzA5OTRlZjJiNGZkMjkxYjQwMGMzNDFjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NkMjY3YzAxYWMwYjQ2YTRhYzM0ZDU3NWZiMDE0OTQ0ID0gJCgnPGRpdiBpZD0iaHRtbF9jZDI2N2MwMWFjMGI0NmE0YWMzNGQ1NzVmYjAxNDk0NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80OTEzMTQyMzMwOTk0ZWYyYjRmZDI5MWI0MDBjMzQxYy5zZXRDb250ZW50KGh0bWxfY2QyNjdjMDFhYzBiNDZhNGFjMzRkNTc1ZmIwMTQ5NDQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzQ1ODFkZmQyOTI2NDk4MTkwNTI0NTNjOTc3MTE3NmEuYmluZFBvcHVwKHBvcHVwXzQ5MTMxNDIzMzA5OTRlZjJiNGZkMjkxYjQwMGMzNDFjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M0ODU0NmZkOGI0NTQyODU4NWIyZTNiNjE3MDIyNjUzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTk2ZmE0N2JmZDg2NDM1MGEzM2VlNzk3MjUwZjZjZTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjVmODZmMWIwNWRmNGFmOTk1NGMwMDQxOWQyOWJkZTcgPSAkKCc8ZGl2IGlkPSJodG1sXzY1Zjg2ZjFiMDVkZjRhZjk5NTRjMDA0MTlkMjliZGU3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lOTZmYTQ3YmZkODY0MzUwYTMzZWU3OTcyNTBmNmNlMS5zZXRDb250ZW50KGh0bWxfNjVmODZmMWIwNWRmNGFmOTk1NGMwMDQxOWQyOWJkZTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzQ4NTQ2ZmQ4YjQ1NDI4NTg1YjJlM2I2MTcwMjI2NTMuYmluZFBvcHVwKHBvcHVwX2U5NmZhNDdiZmQ4NjQzNTBhMzNlZTc5NzI1MGY2Y2UxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzgzM2U1NjRmZTgxMjRhOTVhNDVlYzMxYTY3MTZkYTQ3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQyODUxNzM3NDQ0ODk0LC0xMjIuNDIwOTY3NDQwNTY0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTU0OTIyOGI0NWJlNDIyNWE0MThjNTNiY2Q5MDliYzAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTA3ODc2MjhjYjg0NGIxZDg4YWNhYTFiNDg1YTVlZTYgPSAkKCc8ZGl2IGlkPSJodG1sX2UwNzg3NjI4Y2I4NDRiMWQ4OGFjYWExYjQ4NWE1ZWU2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTU0OTIyOGI0NWJlNDIyNWE0MThjNTNiY2Q5MDliYzAuc2V0Q29udGVudChodG1sX2UwNzg3NjI4Y2I4NDRiMWQ4OGFjYWExYjQ4NWE1ZWU2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzgzM2U1NjRmZTgxMjRhOTVhNDVlYzMxYTY3MTZkYTQ3LmJpbmRQb3B1cChwb3B1cF81NTQ5MjI4YjQ1YmU0MjI1YTQxOGM1M2JjZDkwOWJjMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NzcyZThmMGIyYWU0ZGY2YjdhMDY1ZDVlZTM1ZWM4MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mYzVkZDNkMzAyZjE0OWRlYTQyZWE1NzhkNmEzZGMwNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mYTU0NjIyMmU4ODU0YTRmYjU5YWJjYjM1MTJiMzI1NCA9ICQoJzxkaXYgaWQ9Imh0bWxfZmE1NDYyMjJlODg1NGE0ZmI1OWFiY2IzNTEyYjMyNTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmM1ZGQzZDMwMmYxNDlkZWE0MmVhNTc4ZDZhM2RjMDcuc2V0Q29udGVudChodG1sX2ZhNTQ2MjIyZTg4NTRhNGZiNTlhYmNiMzUxMmIzMjU0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzk3NzJlOGYwYjJhZTRkZjZiN2EwNjVkNWVlMzVlYzgyLmJpbmRQb3B1cChwb3B1cF9mYzVkZDNkMzAyZjE0OWRlYTQyZWE1NzhkNmEzZGMwNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kN2JkN2IzNzYyZmY0ZjgwYTg1MGMxMTg1NjAyNTNiZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81OTA2OTcxNDIyODg0YTFkOWMzZmU3MTFiYWRmYWViNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMTJlNGI3N2RiNjE0ZmE0ODkxMDQwYTdiMjRlZmI4YiA9ICQoJzxkaXYgaWQ9Imh0bWxfMjEyZTRiNzdkYjYxNGZhNDg5MTA0MGE3YjI0ZWZiOGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU5MDY5NzE0MjI4ODRhMWQ5YzNmZTcxMWJhZGZhZWI3LnNldENvbnRlbnQoaHRtbF8yMTJlNGI3N2RiNjE0ZmE0ODkxMDQwYTdiMjRlZmI4Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kN2JkN2IzNzYyZmY0ZjgwYTg1MGMxMTg1NjAyNTNiZS5iaW5kUG9wdXAocG9wdXBfNTkwNjk3MTQyMjg4NGExZDljM2ZlNzExYmFkZmFlYjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDBiYTJhMDkyZDRmNDRjYjgzNGQ1NGZlNTJmNjBjZWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjU3MTg0Mzk1MjgyLC0xMjIuNDA5NTI5OTEzMjc4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmEwMDFhYjg5NjVjNGY0NTkxMTI2ODFlYTNjNTgyZDkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjdlZGNhMGIxZDRiNGJlZTlmMTllNGNlZTdkNmZiYmQgPSAkKCc8ZGl2IGlkPSJodG1sXzI3ZWRjYTBiMWQ0YjRiZWU5ZjE5ZTRjZWU3ZDZmYmJkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iYTAwMWFiODk2NWM0ZjQ1OTExMjY4MWVhM2M1ODJkOS5zZXRDb250ZW50KGh0bWxfMjdlZGNhMGIxZDRiNGJlZTlmMTllNGNlZTdkNmZiYmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNDBiYTJhMDkyZDRmNDRjYjgzNGQ1NGZlNTJmNjBjZWYuYmluZFBvcHVwKHBvcHVwX2JhMDAxYWI4OTY1YzRmNDU5MTEyNjgxZWEzYzU4MmQ5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JkMWI1NDk2MjAwNTQyMWJhOTJiNjM4MjJhODA5MTRkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iNGY4MjEzMGUwMjg0MGRjOTA0Nzg3MDIxNjYwOTM2NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ZGZlMWJjYjE5ZDI0YTE4ODdkZjJmYzdlYTU1NTRhNiA9ICQoJzxkaXYgaWQ9Imh0bWxfNWRmZTFiY2IxOWQyNGExODg3ZGYyZmM3ZWE1NTU0YTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjRmODIxMzBlMDI4NDBkYzkwNDc4NzAyMTY2MDkzNjcuc2V0Q29udGVudChodG1sXzVkZmUxYmNiMTlkMjRhMTg4N2RmMmZjN2VhNTU1NGE2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2JkMWI1NDk2MjAwNTQyMWJhOTJiNjM4MjJhODA5MTRkLmJpbmRQb3B1cChwb3B1cF9iNGY4MjEzMGUwMjg0MGRjOTA0Nzg3MDIxNjYwOTM2Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kMmJkNmJmMmZkNDY0ZWI2ODBmZjI2NzFmN2QwMGE4OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMyMzY5OWZjMDdmZTRiNGQ4ODZmOGFlYmVhMzc5NWUzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc3NWYyNGUzNmE1ZDRjMDU4NzE1OGU5OTFmZmEyNWY4ID0gJCgnPGRpdiBpZD0iaHRtbF83NzVmMjRlMzZhNWQ0YzA1ODcxNThlOTkxZmZhMjVmOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMyMzY5OWZjMDdmZTRiNGQ4ODZmOGFlYmVhMzc5NWUzLnNldENvbnRlbnQoaHRtbF83NzVmMjRlMzZhNWQ0YzA1ODcxNThlOTkxZmZhMjVmOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kMmJkNmJmMmZkNDY0ZWI2ODBmZjI2NzFmN2QwMGE4OS5iaW5kUG9wdXAocG9wdXBfMzIzNjk5ZmMwN2ZlNGI0ZDg4NmY4YWViZWEzNzk1ZTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmE0MTZhMDM0OGU3NDE0NjlhZTgxNDQzMGZhNDM0ZDAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZTZjMjE2MGU0Mjc0MDZkYmM5ZTA1ZmEyNmNkYjM5NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jZDAzNzZmMTM4NTc0ZTg2OTllZWJkY2Y2N2Y3ZmNhMCA9ICQoJzxkaXYgaWQ9Imh0bWxfY2QwMzc2ZjEzODU3NGU4Njk5ZWViZGNmNjdmN2ZjYTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ZTZjMjE2MGU0Mjc0MDZkYmM5ZTA1ZmEyNmNkYjM5NS5zZXRDb250ZW50KGh0bWxfY2QwMzc2ZjEzODU3NGU4Njk5ZWViZGNmNjdmN2ZjYTApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZmE0MTZhMDM0OGU3NDE0NjlhZTgxNDQzMGZhNDM0ZDAuYmluZFBvcHVwKHBvcHVwXzRlNmMyMTYwZTQyNzQwNmRiYzllMDVmYTI2Y2RiMzk1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZmY2RiMTkwM2I1OTRkNjI5MjZmZDkzYjAwZDQyZTc0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2EwNTg0ODI4MmZhOTQwNjhhZGI1MDIyMzdhM2VjMjM3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBmNzVmNGRjM2ZmMzQ0YzE4MjY4ZjlmNzFmOTM3ZDRiID0gJCgnPGRpdiBpZD0iaHRtbF8wZjc1ZjRkYzNmZjM0NGMxODI2OGY5ZjcxZjkzN2Q0YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2EwNTg0ODI4MmZhOTQwNjhhZGI1MDIyMzdhM2VjMjM3LnNldENvbnRlbnQoaHRtbF8wZjc1ZjRkYzNmZjM0NGMxODI2OGY5ZjcxZjkzN2Q0Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mZmNkYjE5MDNiNTk0ZDYyOTI2ZmQ5M2IwMGQ0MmU3NC5iaW5kUG9wdXAocG9wdXBfYTA1ODQ4MjgyZmE5NDA2OGFkYjUwMjIzN2EzZWMyMzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzQ2NTIxZTY4ZWQ3NDk5NWJjMTkwZjUyZTdmZWU1YjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTMxMDgzNDMzMjY0LC0xMjIuNDQ0MzE0MDI1MTg4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjNjY2ZiMmUwYjMxNDE3YmE0MTg0MzRiN2EyOWI2NzMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzkyYjA4NWQ1YTZiNDBhNWIzY2QwYTkxZmEyZWU5YTkgPSAkKCc8ZGl2IGlkPSJodG1sXzM5MmIwODVkNWE2YjQwYTViM2NkMGE5MWZhMmVlOWE5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mM2NjZmIyZTBiMzE0MTdiYTQxODQzNGI3YTI5YjY3My5zZXRDb250ZW50KGh0bWxfMzkyYjA4NWQ1YTZiNDBhNWIzY2QwYTkxZmEyZWU5YTkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzQ2NTIxZTY4ZWQ3NDk5NWJjMTkwZjUyZTdmZWU1YjkuYmluZFBvcHVwKHBvcHVwX2YzY2NmYjJlMGIzMTQxN2JhNDE4NDM0YjdhMjliNjczKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QwY2JhN2QwYzkxMDRhOWQ4OTE1OTZhYTI2OTM3MzgwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U3NWQyZmJmMTgzODRkMTBhOWQ2ODk0Y2IwNjg4OGMwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhiZDY0YjhmZjc4MzQzMzg4MGFmMDBjMjI0YWYwODI1ID0gJCgnPGRpdiBpZD0iaHRtbF84YmQ2NGI4ZmY3ODM0MzM4ODBhZjAwYzIyNGFmMDgyNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U3NWQyZmJmMTgzODRkMTBhOWQ2ODk0Y2IwNjg4OGMwLnNldENvbnRlbnQoaHRtbF84YmQ2NGI4ZmY3ODM0MzM4ODBhZjAwYzIyNGFmMDgyNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kMGNiYTdkMGM5MTA0YTlkODkxNTk2YWEyNjkzNzM4MC5iaW5kUG9wdXAocG9wdXBfZTc1ZDJmYmYxODM4NGQxMGE5ZDY4OTRjYjA2ODg4YzApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWI1MDFlMjk4OWFhNGE4OWE0NzgyMDVmZWEwNTNkMTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjYwMTYwMTE0MTAzLC0xMjIuNDAzNjQ0NjIwNDM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmQ4ZjkwYzVmMWExNDE0ZmI2MzVjOTBlZDAxNDY2NGYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTRlOTllNjVkZjI1NDFkNDlmNmVjM2RjNmIzNDQzZjggPSAkKCc8ZGl2IGlkPSJodG1sX2E0ZTk5ZTY1ZGYyNTQxZDQ5ZjZlYzNkYzZiMzQ0M2Y4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmQ4ZjkwYzVmMWExNDE0ZmI2MzVjOTBlZDAxNDY2NGYuc2V0Q29udGVudChodG1sX2E0ZTk5ZTY1ZGYyNTQxZDQ5ZjZlYzNkYzZiMzQ0M2Y4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ViNTAxZTI5ODlhYTRhODlhNDc4MjA1ZmVhMDUzZDE5LmJpbmRQb3B1cChwb3B1cF82ZDhmOTBjNWYxYTE0MTRmYjYzNWM5MGVkMDE0NjY0Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84ZDdkMjQ3MTkzODA0NmQ2OWEwNTczYjY3ZjRiNWUwYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQzNjA3MmNjYTdkMTQ2OGFhOWRhYWYwMjMyZGFkMzdiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzczOGI1NTg4NzExNzRmNmM5MTU4ZTMzMTRjZjA1MjMwID0gJCgnPGRpdiBpZD0iaHRtbF83MzhiNTU4ODcxMTc0ZjZjOTE1OGUzMzE0Y2YwNTIzMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDM2MDcyY2NhN2QxNDY4YWE5ZGFhZjAyMzJkYWQzN2Iuc2V0Q29udGVudChodG1sXzczOGI1NTg4NzExNzRmNmM5MTU4ZTMzMTRjZjA1MjMwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzhkN2QyNDcxOTM4MDQ2ZDY5YTA1NzNiNjdmNGI1ZTBiLmJpbmRQb3B1cChwb3B1cF80MzYwNzJjY2E3ZDE0NjhhYTlkYWFmMDIzMmRhZDM3Yik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yY2VkMjg4ZjQwYWM0ZWI0YTA3MjRhNzMwZWVlOWQxYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE3ODhhMGE1YzAzMDRmZDBhNTljNGNmNjFiN2Q0NzUwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU3ZTEwNDcxZDkwYzQ3YWRiMWRiMzE4NjM3ZDFiODZmID0gJCgnPGRpdiBpZD0iaHRtbF81N2UxMDQ3MWQ5MGM0N2FkYjFkYjMxODYzN2QxYjg2ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE3ODhhMGE1YzAzMDRmZDBhNTljNGNmNjFiN2Q0NzUwLnNldENvbnRlbnQoaHRtbF81N2UxMDQ3MWQ5MGM0N2FkYjFkYjMxODYzN2QxYjg2Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yY2VkMjg4ZjQwYWM0ZWI0YTA3MjRhNzMwZWVlOWQxYi5iaW5kUG9wdXAocG9wdXBfMTc4OGEwYTVjMDMwNGZkMGE1OWM0Y2Y2MWI3ZDQ3NTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2IwMWYzMDZlNmY2NGQ5ZGEwZmIyZjEzZGQzMjRjNDEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzc1MTE4ODk1Njk1LC0xMjIuNDE4MDQ1NDUyNzY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTU5MDNiZTg4NDgzNDg1MzhkMzNlOWIyZDg2ZjA0MWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWE1OTE3MTczNDdiNDUxYjg1OWQ2NzY0NTU5ZjQ5M2IgPSAkKCc8ZGl2IGlkPSJodG1sXzVhNTkxNzE3MzQ3YjQ1MWI4NTlkNjc2NDU1OWY0OTNiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NTkwM2JlODg0ODM0ODUzOGQzM2U5YjJkODZmMDQxZC5zZXRDb250ZW50KGh0bWxfNWE1OTE3MTczNDdiNDUxYjg1OWQ2NzY0NTU5ZjQ5M2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfN2IwMWYzMDZlNmY2NGQ5ZGEwZmIyZjEzZGQzMjRjNDEuYmluZFBvcHVwKHBvcHVwXzU1OTAzYmU4ODQ4MzQ4NTM4ZDMzZTliMmQ4NmYwNDFkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVkYTUwYjVlYjJiODQ1NjFiODhjZDE5ZDVhOGM2ODAyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgyMDIzODQ3ODk3NSwtMTIyLjQwMTE2MTU1NTYwMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU4MzY4MWY5YmQ5YjQ1NTVhNjg4N2VhMGI2NGU3ODY0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUzYzY2OGQyMmY0NTRiOGE4NjkxYmRmYTliMTZiNTk2ID0gJCgnPGRpdiBpZD0iaHRtbF81M2M2NjhkMjJmNDU0YjhhODY5MWJkZmE5YjE2YjU5NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU4MzY4MWY5YmQ5YjQ1NTVhNjg4N2VhMGI2NGU3ODY0LnNldENvbnRlbnQoaHRtbF81M2M2NjhkMjJmNDU0YjhhODY5MWJkZmE5YjE2YjU5Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81ZGE1MGI1ZWIyYjg0NTYxYjg4Y2QxOWQ1YThjNjgwMi5iaW5kUG9wdXAocG9wdXBfNTgzNjgxZjliZDliNDU1NWE2ODg3ZWEwYjY0ZTc4NjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmVmMjYzZTFjMWI3NGUwNGI1NDM5Y2EwMTZhYWQ3ZTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjcwMDUzMTk2Mjk5OTUsLTEyMi40MDM0MDg2NjkxOTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jMTBkMmY1ZWNiODA0YWQwODY5OWZmODQwZDY2YmIzMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yYmFiMjJjM2JiYWU0ZWUyOTUxYTE2NjU0NjFiYmRhZSA9ICQoJzxkaXYgaWQ9Imh0bWxfMmJhYjIyYzNiYmFlNGVlMjk1MWExNjY1NDYxYmJkYWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jMTBkMmY1ZWNiODA0YWQwODY5OWZmODQwZDY2YmIzMC5zZXRDb250ZW50KGh0bWxfMmJhYjIyYzNiYmFlNGVlMjk1MWExNjY1NDYxYmJkYWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZmVmMjYzZTFjMWI3NGUwNGI1NDM5Y2EwMTZhYWQ3ZTEuYmluZFBvcHVwKHBvcHVwX2MxMGQyZjVlY2I4MDRhZDA4Njk5ZmY4NDBkNjZiYjMwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRkMTc1ZDE2ZmEzMzQwOTdiYmQ0MTQxOTJiYTU1N2QzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzYzN2U0YzcwZjE0YzQ2YmRhYjAxZDVlMmNkNzcxMTg0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RlNzkxOWM0YzBkMzRhYWNhZjg0OWQ5ZGQzNWNiNWU5ID0gJCgnPGRpdiBpZD0iaHRtbF9kZTc5MTljNGMwZDM0YWFjYWY4NDlkOWRkMzVjYjVlOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82MzdlNGM3MGYxNGM0NmJkYWIwMWQ1ZTJjZDc3MTE4NC5zZXRDb250ZW50KGh0bWxfZGU3OTE5YzRjMGQzNGFhY2FmODQ5ZDlkZDM1Y2I1ZTkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNGQxNzVkMTZmYTMzNDA5N2JiZDQxNDE5MmJhNTU3ZDMuYmluZFBvcHVwKHBvcHVwXzYzN2U0YzcwZjE0YzQ2YmRhYjAxZDVlMmNkNzcxMTg0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZiN2ZmNDlmMGIyNDRlODRiMWZhYjFiYTdjOTczMmNhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmYzOWY4NWJhMDMxNDAwMzliZTM2YmZiNmY1MjExNjAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzJkN2RlYzIzMmNhNDg0ZmE0YTNiOGRmMWQ1ZTM2MjQgPSAkKCc8ZGl2IGlkPSJodG1sXzcyZDdkZWMyMzJjYTQ4NGZhNGEzYjhkZjFkNWUzNjI0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJmMzlmODViYTAzMTQwMDM5YmUzNmJmYjZmNTIxMTYwLnNldENvbnRlbnQoaHRtbF83MmQ3ZGVjMjMyY2E0ODRmYTRhM2I4ZGYxZDVlMzYyNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mYjdmZjQ5ZjBiMjQ0ZTg0YjFmYWIxYmE3Yzk3MzJjYS5iaW5kUG9wdXAocG9wdXBfMmYzOWY4NWJhMDMxNDAwMzliZTM2YmZiNmY1MjExNjApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmM0YjFkNDYyOGE2NDBhYWI2NWNhNTg4NTU4MzFmOTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDdmODRkNzE5ZjdiNDlhZDg0ZWQxZjllZGQ3NWMzMWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGVhMmI3OGFjNTM2NDVhNTg2NmViZmJlMmI1NmE5NjYgPSAkKCc8ZGl2IGlkPSJodG1sXzhlYTJiNzhhYzUzNjQ1YTU4NjZlYmZiZTJiNTZhOTY2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GUkFVRDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDdmODRkNzE5ZjdiNDlhZDg0ZWQxZjllZGQ3NWMzMWQuc2V0Q29udGVudChodG1sXzhlYTJiNzhhYzUzNjQ1YTU4NjZlYmZiZTJiNTZhOTY2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ZjNGIxZDQ2MjhhNjQwYWFiNjVjYTU4ODU1ODMxZjkyLmJpbmRQb3B1cChwb3B1cF8wN2Y4NGQ3MTlmN2I0OWFkODRlZDFmOWVkZDc1YzMxZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83MzAzNTg5NTdhMDk0YWNiYTVlOTIyZTIwMTQ3MjU3NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MDUzODk5MzcyNSwtMTIyLjQwMzkxNTY4MTU3MTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGE2NjJiYjhjNDdiNDBjYThlMTdkZWUwNTBhN2Y4MWMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODRiYzdkYzI1NWIyNGFiMDgxZDcwOTQ1ODc3MTQ0NDkgPSAkKCc8ZGl2IGlkPSJodG1sXzg0YmM3ZGMyNTViMjRhYjA4MWQ3MDk0NTg3NzE0NDQ5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kYTY2MmJiOGM0N2I0MGNhOGUxN2RlZTA1MGE3ZjgxYy5zZXRDb250ZW50KGh0bWxfODRiYzdkYzI1NWIyNGFiMDgxZDcwOTQ1ODc3MTQ0NDkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzMwMzU4OTU3YTA5NGFjYmE1ZTkyMmUyMDE0NzI1NzYuYmluZFBvcHVwKHBvcHVwX2RhNjYyYmI4YzQ3YjQwY2E4ZTE3ZGVlMDUwYTdmODFjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA2ZTk4YmQ4NDI1ODQ0YTdiNzNjMDk5MjhiZjAyODEzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85ZWQwYmE0ZGMzMWU0MTFkYjk1NTIzNjI0MzA1ZGQyMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84ODY4YzYyZDc1OTE0M2E0YTE4OWEyODZkMGU3YzJlNiA9ICQoJzxkaXYgaWQ9Imh0bWxfODg2OGM2MmQ3NTkxNDNhNGExODlhMjg2ZDBlN2MyZTYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85ZWQwYmE0ZGMzMWU0MTFkYjk1NTIzNjI0MzA1ZGQyMS5zZXRDb250ZW50KGh0bWxfODg2OGM2MmQ3NTkxNDNhNGExODlhMjg2ZDBlN2MyZTYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDZlOThiZDg0MjU4NDRhN2I3M2MwOTkyOGJmMDI4MTMuYmluZFBvcHVwKHBvcHVwXzllZDBiYTRkYzMxZTQxMWRiOTU1MjM2MjQzMDVkZDIxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ2YmEwOGEyNTYwODQ5YzZhZWMyM2U4YjE5MzEwOTZlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQwNzM2MDU0ODM1NzksLTEyMi4zODg3NTMwNDY5OTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hODlkY2M5NmRjY2E0ZDVmYjIxMTBjMTU2ZDQxMzA2MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hOWVhMDk2YWQ2ZjU0OGQ5YTRmMDE2MzRkMDNiYjUzMiA9ICQoJzxkaXYgaWQ9Imh0bWxfYTllYTA5NmFkNmY1NDhkOWE0ZjAxNjM0ZDAzYmI1MzIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hODlkY2M5NmRjY2E0ZDVmYjIxMTBjMTU2ZDQxMzA2MS5zZXRDb250ZW50KGh0bWxfYTllYTA5NmFkNmY1NDhkOWE0ZjAxNjM0ZDAzYmI1MzIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNDZiYTA4YTI1NjA4NDljNmFlYzIzZThiMTkzMTA5NmUuYmluZFBvcHVwKHBvcHVwX2E4OWRjYzk2ZGNjYTRkNWZiMjExMGMxNTZkNDEzMDYxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RjMWQzNDJhMTFlZDQ3NjFhZTMwMDJhMTU4YzlkNjQxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0OTkxMjk0NDM2NiwtMTIyLjQzNzc5OTcwMzQ2OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhkM2ExZDJlNWUzZDQ2NDFhNDI4Y2I1ZTc0YTZkZDAwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgzOGQ5YmQ3NTIxNTRjOGY4OTUzZmNlNDczMDRhMWEwID0gJCgnPGRpdiBpZD0iaHRtbF84MzhkOWJkNzUyMTU0YzhmODk1M2ZjZTQ3MzA0YTFhMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOGQzYTFkMmU1ZTNkNDY0MWE0MjhjYjVlNzRhNmRkMDAuc2V0Q29udGVudChodG1sXzgzOGQ5YmQ3NTIxNTRjOGY4OTUzZmNlNDczMDRhMWEwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2RjMWQzNDJhMTFlZDQ3NjFhZTMwMDJhMTU4YzlkNjQxLmJpbmRQb3B1cChwb3B1cF84ZDNhMWQyZTVlM2Q0NjQxYTQyOGNiNWU3NGE2ZGQwMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZjhhNmQ0YmEzYmU0Mjk1OWI5NzAyYTg0NDZhYjllNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzA5MDI3NDM2NjksLTEyMi40MjEzMzI2ODQ2MzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NTVkMDYzNWY4Njc0ODAxYWY3ZjY0NTIzZWNlZWYxOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NjJmOTQ1YmRkMTM0MjFjYjM3ODBmMmE1Y2E0NzUxNSA9ICQoJzxkaXYgaWQ9Imh0bWxfNTYyZjk0NWJkZDEzNDIxY2IzNzgwZjJhNWNhNDc1MTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NTVkMDYzNWY4Njc0ODAxYWY3ZjY0NTIzZWNlZWYxOC5zZXRDb250ZW50KGh0bWxfNTYyZjk0NWJkZDEzNDIxY2IzNzgwZjJhNWNhNDc1MTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMmY4YTZkNGJhM2JlNDI5NTliOTcwMmE4NDQ2YWI5ZTUuYmluZFBvcHVwKHBvcHVwXzU1NWQwNjM1Zjg2NzQ4MDFhZjdmNjQ1MjNlY2VlZjE4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzEyMTQ3NjhlNGMxYzQ2MDlhNmFlNjEwZGYwMTM2NTczID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQzZTc1MmI1MDMwNzRjZDViMTdhZGQ4ZThjYmRjZDgyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgyOGY1MmJmNDhkMDQyODdhYTI1OTZiMThhYzljMjVkID0gJCgnPGRpdiBpZD0iaHRtbF84MjhmNTJiZjQ4ZDA0Mjg3YWEyNTk2YjE4YWM5YzI1ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQzZTc1MmI1MDMwNzRjZDViMTdhZGQ4ZThjYmRjZDgyLnNldENvbnRlbnQoaHRtbF84MjhmNTJiZjQ4ZDA0Mjg3YWEyNTk2YjE4YWM5YzI1ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xMjE0NzY4ZTRjMWM0NjA5YTZhZTYxMGRmMDEzNjU3My5iaW5kUG9wdXAocG9wdXBfNDNlNzUyYjUwMzA3NGNkNWIxN2FkZDhlOGNiZGNkODIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjUxYzMzMDgzODkzNGZkY2IxOWQ3NjE3MjY2NmNmOTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjA2ZWI1NDk2YzRiNDAxYjgzZTgwY2RiYmZkZWRhYzUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWMxNmNhZGUxNWNlNGU5YjgzNDJkMzE3MjI1MGY4NGEgPSAkKCc8ZGl2IGlkPSJodG1sXzFjMTZjYWRlMTVjZTRlOWI4MzQyZDMxNzIyNTBmODRhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjA2ZWI1NDk2YzRiNDAxYjgzZTgwY2RiYmZkZWRhYzUuc2V0Q29udGVudChodG1sXzFjMTZjYWRlMTVjZTRlOWI4MzQyZDMxNzIyNTBmODRhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzI1MWMzMzA4Mzg5MzRmZGNiMTlkNzYxNzI2NjZjZjkzLmJpbmRQb3B1cChwb3B1cF9mMDZlYjU0OTZjNGI0MDFiODNlODBjZGJiZmRlZGFjNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85YTU0MjBiN2M4YWE0ZTM1YTlmNzlmMDc5ZTQ0MTdlMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDAzNzk5OTUxMjc5NSwtMTIyLjQwNDU5NDE0MDYzNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y3YTdhODliZmNjMjRjZmE4YjgxNTg1MThmYmU3Nzg1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU5OWVhNzY2Mjk0MTRkZmRhZjFlZTVmZDY5MmZjNWMzID0gJCgnPGRpdiBpZD0iaHRtbF81OTllYTc2NjI5NDE0ZGZkYWYxZWU1ZmQ2OTJmYzVjMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mN2E3YTg5YmZjYzI0Y2ZhOGI4MTU4NTE4ZmJlNzc4NS5zZXRDb250ZW50KGh0bWxfNTk5ZWE3NjYyOTQxNGRmZGFmMWVlNWZkNjkyZmM1YzMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWE1NDIwYjdjOGFhNGUzNWE5Zjc5ZjA3OWU0NDE3ZTEuYmluZFBvcHVwKHBvcHVwX2Y3YTdhODliZmNjMjRjZmE4YjgxNTg1MThmYmU3Nzg1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNjNWM5OTkyNjk2YzRjNDRhYzVmMWY5M2RmNTM3NzNmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzk1MzMzODI2NzQzNiwtMTIyLjM5NzM3Mzc0MDA2Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2QzYzdjOGU4MTcwMjQwZGU4MDc3NGE2OWY0MzllY2IzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAzZDIwOGUyOWU0ODRiMmM4YThkZWViNWI1ZTBmZWY2ID0gJCgnPGRpdiBpZD0iaHRtbF8wM2QyMDhlMjllNDg0YjJjOGE4ZGVlYjViNWUwZmVmNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kM2M3YzhlODE3MDI0MGRlODA3NzRhNjlmNDM5ZWNiMy5zZXRDb250ZW50KGh0bWxfMDNkMjA4ZTI5ZTQ4NGIyYzhhOGRlZWI1YjVlMGZlZjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfM2M1Yzk5OTI2OTZjNGM0NGFjNWYxZjkzZGY1Mzc3M2YuYmluZFBvcHVwKHBvcHVwX2QzYzdjOGU4MTcwMjQwZGU4MDc3NGE2OWY0MzllY2IzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI5ODg5YjdmNjU3MjRjZmU5NWY3OGY4NTI5YTM0M2U0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NTE1ODc0MTYyMjk1LC0xMjIuNDA3NDM0OTg5NTIzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTg0ZTMzYzk0ZjgyNDY5OWI2ODJiZjgyMWViYzdiN2EgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmJmZTY3YWM3NjFkNGRiZGE2YjA1OTQ4NzM4NzEzOGUgPSAkKCc8ZGl2IGlkPSJodG1sXzZiZmU2N2FjNzYxZDRkYmRhNmIwNTk0ODczODcxMzhlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTg0ZTMzYzk0ZjgyNDY5OWI2ODJiZjgyMWViYzdiN2Euc2V0Q29udGVudChodG1sXzZiZmU2N2FjNzYxZDRkYmRhNmIwNTk0ODczODcxMzhlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzI5ODg5YjdmNjU3MjRjZmU5NWY3OGY4NTI5YTM0M2U0LmJpbmRQb3B1cChwb3B1cF85ODRlMzNjOTRmODI0Njk5YjY4MmJmODIxZWJjN2I3YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MDBjNzRkODA5Mzc0OGI0YjcxODZmYjg5MDFmMTY1YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ZTdiMjYxNTliNDM0OGZkOTY1MDdiYWFkODdjZjBkYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xYWJmZTE5MmM1Nzk0ODBkODhlNjBhODJkMDI1N2YwZSA9ICQoJzxkaXYgaWQ9Imh0bWxfMWFiZmUxOTJjNTc5NDgwZDg4ZTYwYTgyZDAyNTdmMGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBST1NUSVRVVElPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2U3YjI2MTU5YjQzNDhmZDk2NTA3YmFhZDg3Y2YwZGIuc2V0Q29udGVudChodG1sXzFhYmZlMTkyYzU3OTQ4MGQ4OGU2MGE4MmQwMjU3ZjBlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzkwMGM3NGQ4MDkzNzQ4YjRiNzE4NmZiODkwMWYxNjVhLmJpbmRQb3B1cChwb3B1cF83ZTdiMjYxNTliNDM0OGZkOTY1MDdiYWFkODdjZjBkYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lMjAxNTg5OTQzMWM0YTc5OTg1YjQ3ZWI0ZmY2N2NhYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wOTU3MGQxZDQzODI0MjYxYWViYTc0ZmI3NzNkZmRjNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80NDIwMjdjOGMzNGY0NTIzODI1ZjJhZTg2Mjg0YjJlOCA9ICQoJzxkaXYgaWQ9Imh0bWxfNDQyMDI3YzhjMzRmNDUyMzgyNWYyYWU4NjI4NGIyZTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wOTU3MGQxZDQzODI0MjYxYWViYTc0ZmI3NzNkZmRjNC5zZXRDb250ZW50KGh0bWxfNDQyMDI3YzhjMzRmNDUyMzgyNWYyYWU4NjI4NGIyZTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTIwMTU4OTk0MzFjNGE3OTk4NWI0N2ViNGZmNjdjYWEuYmluZFBvcHVwKHBvcHVwXzA5NTcwZDFkNDM4MjQyNjFhZWJhNzRmYjc3M2RmZGM0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdhYmQxYWQ2OTgzMjQ0ZGQ5Zjc5OTNlOTU4MjljMTQ4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yZGZjMzYyNWU5NDE0YWU2YTNjZTc4NTMxOTM3ZjhiNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YTg3NmFmMmFlNjk0ZTMxYTc2YTdkZmE3NDcwMTBjNyA9ICQoJzxkaXYgaWQ9Imh0bWxfNGE4NzZhZjJhZTY5NGUzMWE3NmE3ZGZhNzQ3MDEwYzciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmRmYzM2MjVlOTQxNGFlNmEzY2U3ODUzMTkzN2Y4YjUuc2V0Q29udGVudChodG1sXzRhODc2YWYyYWU2OTRlMzFhNzZhN2RmYTc0NzAxMGM3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzdhYmQxYWQ2OTgzMjQ0ZGQ5Zjc5OTNlOTU4MjljMTQ4LmJpbmRQb3B1cChwb3B1cF8yZGZjMzYyNWU5NDE0YWU2YTNjZTc4NTMxOTM3ZjhiNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iMDk3N2RmMTJlMzU0OTJiYTc3OTdjMzczNzE5ZDJmMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWE1M2VhNmMxZTBhNGIxZDhjNDkyNDYyMWMyNDBlM2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTE4ZWUzMzRkNTU4NDg5YWE5ZjY0NTc3ZjE0NWUwZDYgPSAkKCc8ZGl2IGlkPSJodG1sXzExOGVlMzM0ZDU1ODQ4OWFhOWY2NDU3N2YxNDVlMGQ2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lYTUzZWE2YzFlMGE0YjFkOGM0OTI0NjIxYzI0MGUzYy5zZXRDb250ZW50KGh0bWxfMTE4ZWUzMzRkNTU4NDg5YWE5ZjY0NTc3ZjE0NWUwZDYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjA5NzdkZjEyZTM1NDkyYmE3Nzk3YzM3MzcxOWQyZjEuYmluZFBvcHVwKHBvcHVwX2VhNTNlYTZjMWUwYTRiMWQ4YzQ5MjQ2MjFjMjQwZTNjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg4M2Y1ZTA2YjJlNDQ5NWJiNDNlMTExODFmOTgyY2Q5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81Y2RkYzdlYmYyYjg0YmJhODkyOGU4MWEyNTMxYmYxMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83ZjZmZGU1M2QwZmU0NWU1YTBhNjIxZTE0OTMwNmE5OCA9ICQoJzxkaXYgaWQ9Imh0bWxfN2Y2ZmRlNTNkMGZlNDVlNWEwYTYyMWUxNDkzMDZhOTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81Y2RkYzdlYmYyYjg0YmJhODkyOGU4MWEyNTMxYmYxMC5zZXRDb250ZW50KGh0bWxfN2Y2ZmRlNTNkMGZlNDVlNWEwYTYyMWUxNDkzMDZhOTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODgzZjVlMDZiMmU0NDk1YmI0M2UxMTE4MWY5ODJjZDkuYmluZFBvcHVwKHBvcHVwXzVjZGRjN2ViZjJiODRiYmE4OTI4ZTgxYTI1MzFiZjEwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZlMzVhMzhmMzg4MDQwNzE5ZmU4MTM1MmU2Yzk1ODdkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzdhNzkyYzg5ZWVmNDAzZThhMzQzZDY1NDQ2ZmJlM2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjY5YWVlODEwNDIwNGM2YmJlY2E1MmUwM2YzYjBmODcgPSAkKCc8ZGl2IGlkPSJodG1sX2Y2OWFlZTgxMDQyMDRjNmJiZWNhNTJlMDNmM2IwZjg3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zN2E3OTJjODllZWY0MDNlOGEzNDNkNjU0NDZmYmUzZS5zZXRDb250ZW50KGh0bWxfZjY5YWVlODEwNDIwNGM2YmJlY2E1MmUwM2YzYjBmODcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmUzNWEzOGYzODgwNDA3MTlmZTgxMzUyZTZjOTU4N2QuYmluZFBvcHVwKHBvcHVwXzM3YTc5MmM4OWVlZjQwM2U4YTM0M2Q2NTQ0NmZiZTNlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg1ZmVjNGVhMGI4NDRiNzI4NGRmOTJlOThjMTg3ZGFhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI5MjExNDY0NzM1OSwtMTIyLjQwMDgzNDI4MzAzMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQyYjQ5ZDMyODU5ZDQ2NzY5MmZlOGZhZTliYjBkYWJmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgwMWQzZTQyY2UxZDQ5ODhhM2Q3MjVhZWM0ZTJkN2RlID0gJCgnPGRpdiBpZD0iaHRtbF84MDFkM2U0MmNlMWQ0OTg4YTNkNzI1YWVjNGUyZDdkZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQyYjQ5ZDMyODU5ZDQ2NzY5MmZlOGZhZTliYjBkYWJmLnNldENvbnRlbnQoaHRtbF84MDFkM2U0MmNlMWQ0OTg4YTNkNzI1YWVjNGUyZDdkZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84NWZlYzRlYTBiODQ0YjcyODRkZjkyZTk4YzE4N2RhYS5iaW5kUG9wdXAocG9wdXBfNDJiNDlkMzI4NTlkNDY3NjkyZmU4ZmFlOWJiMGRhYmYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODBmY2E2ZjZlOTA2NDA5NDk1YjAwOGE4NTgzZTk5ZjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mMTEyMzYzMDc0ZWI0NzlkOWNkNmVkZmQxNmM0Nzg4ZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iYzI1MjQ4YWIxYWM0N2NhYWUxMTQwYzEzYmFkYmExZiA9ICQoJzxkaXYgaWQ9Imh0bWxfYmMyNTI0OGFiMWFjNDdjYWFlMTE0MGMxM2JhZGJhMWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2YxMTIzNjMwNzRlYjQ3OWQ5Y2Q2ZWRmZDE2YzQ3ODhmLnNldENvbnRlbnQoaHRtbF9iYzI1MjQ4YWIxYWM0N2NhYWUxMTQwYzEzYmFkYmExZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84MGZjYTZmNmU5MDY0MDk0OTViMDA4YTg1ODNlOTlmMC5iaW5kUG9wdXAocG9wdXBfZjExMjM2MzA3NGViNDc5ZDljZDZlZGZkMTZjNDc4OGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmYxYzJmYjgwOGZhNDkxOThjYzU3MTMyODgyMzlhMmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI1ZjY4MzIzMTQ4MTRlYTM5YzE4ZjdiYjdiNTY3ZjNhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2UzZjYxNDg3ZGU2OTQyNWJhMzQ1ZGQzZDU2NjU4ZGYyID0gJCgnPGRpdiBpZD0iaHRtbF9lM2Y2MTQ4N2RlNjk0MjViYTM0NWRkM2Q1NjY1OGRmMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNWY2ODMyMzE0ODE0ZWEzOWMxOGY3YmI3YjU2N2YzYS5zZXRDb250ZW50KGh0bWxfZTNmNjE0ODdkZTY5NDI1YmEzNDVkZDNkNTY2NThkZjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYmYxYzJmYjgwOGZhNDkxOThjYzU3MTMyODgyMzlhMmEuYmluZFBvcHVwKHBvcHVwXzI1ZjY4MzIzMTQ4MTRlYTM5YzE4ZjdiYjdiNTY3ZjNhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E1MDM5YzQ5YmU2MTQwOTc4YTgyMzZiNzBmYjZiNzJhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jYzFkOWZkMDE2YTY0MWEzOWQ5YWZkODhjY2UwYjYxMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jYjMxOTdlNjgzOTM0NDVhODMzYWNiOTNiMzFjMzg0OSA9ICQoJzxkaXYgaWQ9Imh0bWxfY2IzMTk3ZTY4MzkzNDQ1YTgzM2FjYjkzYjMxYzM4NDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNVU1BJQ0lPVVMgT0NDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jYzFkOWZkMDE2YTY0MWEzOWQ5YWZkODhjY2UwYjYxMy5zZXRDb250ZW50KGh0bWxfY2IzMTk3ZTY4MzkzNDQ1YTgzM2FjYjkzYjMxYzM4NDkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTUwMzljNDliZTYxNDA5NzhhODIzNmI3MGZiNmI3MmEuYmluZFBvcHVwKHBvcHVwX2NjMWQ5ZmQwMTZhNjQxYTM5ZDlhZmQ4OGNjZTBiNjEzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlhM2Q2NTUzY2JmZjRiNTVhZWQxN2U2ZTYwNDIxNzUxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84NDU2NzMxYTBjNWM0MDk1YjJiMjhiMDdiZDIwMWMxYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80MzNjZTBmZTNiMmM0YTgwODcyNmU4NTZiMjdmMmRmMyA9ICQoJzxkaXYgaWQ9Imh0bWxfNDMzY2UwZmUzYjJjNGE4MDg3MjZlODU2YjI3ZjJkZjMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NDU2NzMxYTBjNWM0MDk1YjJiMjhiMDdiZDIwMWMxYS5zZXRDb250ZW50KGh0bWxfNDMzY2UwZmUzYjJjNGE4MDg3MjZlODU2YjI3ZjJkZjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWEzZDY1NTNjYmZmNGI1NWFlZDE3ZTZlNjA0MjE3NTEuYmluZFBvcHVwKHBvcHVwXzg0NTY3MzFhMGM1YzQwOTViMmIyOGIwN2JkMjAxYzFhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY3YTNjZTJkZWNlODQxODFhZTAyZDRhOTUxZmI2ZjU5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MzIzNTQ0OTkwNCwtMTIyLjQxMTg1NzAzMjU0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWZkYzZjNjdmYmUxNDAxYWFjNzVlMjI0NGY1NDQ3NzAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmU3NGE1YjExMmMxNDRiMmE3YTgwMzdjODllMGM4YWUgPSAkKCc8ZGl2IGlkPSJodG1sX2ZlNzRhNWIxMTJjMTQ0YjJhN2E4MDM3Yzg5ZTBjOGFlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hZmRjNmM2N2ZiZTE0MDFhYWM3NWUyMjQ0ZjU0NDc3MC5zZXRDb250ZW50KGh0bWxfZmU3NGE1YjExMmMxNDRiMmE3YTgwMzdjODllMGM4YWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjdhM2NlMmRlY2U4NDE4MWFlMDJkNGE5NTFmYjZmNTkuYmluZFBvcHVwKHBvcHVwX2FmZGM2YzY3ZmJlMTQwMWFhYzc1ZTIyNDRmNTQ0NzcwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzljNWFiNTM4OGI1MzQ1Mzc4M2JlNDE5NDAwZWM1YjBmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzlhNDUyZmRmYjkxYjQ1MmM5MTEyZTdiZTY1NjM4MGIyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzRlZmI3ZjQ3OTQ1NzRiNWY5NmYxNWEzOWNhYTFhYTlkID0gJCgnPGRpdiBpZD0iaHRtbF80ZWZiN2Y0Nzk0NTc0YjVmOTZmMTVhMzljYWExYWE5ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzlhNDUyZmRmYjkxYjQ1MmM5MTEyZTdiZTY1NjM4MGIyLnNldENvbnRlbnQoaHRtbF80ZWZiN2Y0Nzk0NTc0YjVmOTZmMTVhMzljYWExYWE5ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85YzVhYjUzODhiNTM0NTM3ODNiZTQxOTQwMGVjNWIwZi5iaW5kUG9wdXAocG9wdXBfOWE0NTJmZGZiOTFiNDUyYzkxMTJlN2JlNjU2MzgwYjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfM2YwMzUxZjQxYmEwNDhhMjhlZmYwZTI3YzgwNGUzYWEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODcwNzk4MTQ0NDQzLC0xMjIuNDI1ODgzMzU4MTQ4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTEzNWIwMjI3NmY0NDVjMjhlNzNhNTdjMTBiOGM0ZWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTc2YTJiMzhhMjJkNDE4ZjljNTFkOWNiOTY0MDgxZGIgPSAkKCc8ZGl2IGlkPSJodG1sXzE3NmEyYjM4YTIyZDQxOGY5YzUxZDljYjk2NDA4MWRiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzkxMzViMDIyNzZmNDQ1YzI4ZTczYTU3YzEwYjhjNGVkLnNldENvbnRlbnQoaHRtbF8xNzZhMmIzOGEyMmQ0MThmOWM1MWQ5Y2I5NjQwODFkYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zZjAzNTFmNDFiYTA0OGEyOGVmZjBlMjdjODA0ZTNhYS5iaW5kUG9wdXAocG9wdXBfOTEzNWIwMjI3NmY0NDVjMjhlNzNhNTdjMTBiOGM0ZWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODU4MDg4MzlmOTA4NGQ0NTkyYWZmNmNmZDA0NjczNmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzYwMzc0NDY2ODYyMDQsLTEyMi40MTUxMjY1NDMwMDEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU0YmRmM2MwOGU4YTRiZDQ4YWYzZWY4NTczODYxYmViID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUxOGNmOGU2Y2NiODRjN2U5MDg3YjQxYjVjNjg5ZTE4ID0gJCgnPGRpdiBpZD0iaHRtbF81MThjZjhlNmNjYjg0YzdlOTA4N2I0MWI1YzY4OWUxOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NGJkZjNjMDhlOGE0YmQ0OGFmM2VmODU3Mzg2MWJlYi5zZXRDb250ZW50KGh0bWxfNTE4Y2Y4ZTZjY2I4NGM3ZTkwODdiNDFiNWM2ODllMTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfODU4MDg4MzlmOTA4NGQ0NTkyYWZmNmNmZDA0NjczNmMuYmluZFBvcHVwKHBvcHVwXzU0YmRmM2MwOGU4YTRiZDQ4YWYzZWY4NTczODYxYmViKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E1ZDkzNDExNGVlYTQwNWU5YWYxYjc2OTc0ZDAyNzBkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEyNzY3ODg0ODIxLC0xMjIuNDMxOTI4MDExMDg5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmU4Yjg5ZDRiOWU2NDA3YWE0ZjhkYTdjZGVhOTg3ZTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWQyODA1ZTE2NGY1NDZlYTlkMWJkY2U4MWYyMDljY2UgPSAkKCc8ZGl2IGlkPSJodG1sXzlkMjgwNWUxNjRmNTQ2ZWE5ZDFiZGNlODFmMjA5Y2NlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmU4Yjg5ZDRiOWU2NDA3YWE0ZjhkYTdjZGVhOTg3ZTcuc2V0Q29udGVudChodG1sXzlkMjgwNWUxNjRmNTQ2ZWE5ZDFiZGNlODFmMjA5Y2NlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2E1ZDkzNDExNGVlYTQwNWU5YWYxYjc2OTc0ZDAyNzBkLmJpbmRQb3B1cChwb3B1cF8yZThiODlkNGI5ZTY0MDdhYTRmOGRhN2NkZWE5ODdlNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hYjNjZmY1YjIwMzc0ZGY5OGNiNTY4NTg4MmM5ZjNiZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4OTU3MTAyNTU4NjMsLTEyMi40MDIxNjM3MTM2MThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kNzM3ZDdmNjI2ZjY0ZjJmYjI5NWJkOTA3ZmZjNzQ2YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yMGZkNjkzNmJmZDk0Yzg3OTEyODhhZjAxZWZjNGE0NSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjBmZDY5MzZiZmQ5NGM4NzkxMjg4YWYwMWVmYzRhNDUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVU5LRU5ORVNTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNzM3ZDdmNjI2ZjY0ZjJmYjI5NWJkOTA3ZmZjNzQ2YS5zZXRDb250ZW50KGh0bWxfMjBmZDY5MzZiZmQ5NGM4NzkxMjg4YWYwMWVmYzRhNDUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYWIzY2ZmNWIyMDM3NGRmOThjYjU2ODU4ODJjOWYzYmQuYmluZFBvcHVwKHBvcHVwX2Q3MzdkN2Y2MjZmNjRmMmZiMjk1YmQ5MDdmZmM3NDZhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QxZjQ0NDNmMmNhYjRlMGVhNDlkYzBkMmZiMTM3ZTNhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkyNjIwNDBkY2Y1YjQzNWI5NDFmOGM1Y2FlZGUxZDMxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM4ZjJiMzk4YWMxYTQxMWU4ZWJiOGIyYzZhMzU4NWU1ID0gJCgnPGRpdiBpZD0iaHRtbF8zOGYyYjM5OGFjMWE0MTFlOGViYjhiMmM2YTM1ODVlNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzkyNjIwNDBkY2Y1YjQzNWI5NDFmOGM1Y2FlZGUxZDMxLnNldENvbnRlbnQoaHRtbF8zOGYyYjM5OGFjMWE0MTFlOGViYjhiMmM2YTM1ODVlNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kMWY0NDQzZjJjYWI0ZTBlYTQ5ZGMwZDJmYjEzN2UzYS5iaW5kUG9wdXAocG9wdXBfOTI2MjA0MGRjZjViNDM1Yjk0MWY4YzVjYWVkZTFkMzEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTliZTRiZjQ0YTg3NDc4YThkY2RhNWVkMTA3OGE3YWMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM4MzY1NTY1MzQ3OTQsLTEyMi40MTM3OTA5NzI3ODA5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RkMmQzNmMxNWVjZjQwZWFiNTUwYWNhNzY0N2M4MDExID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgxMWJmMmJiOGI1NTQ5YmJhNzc0ZDk3Y2YzZjdhZjNkID0gJCgnPGRpdiBpZD0iaHRtbF84MTFiZjJiYjhiNTU0OWJiYTc3NGQ5N2NmM2Y3YWYzZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kZDJkMzZjMTVlY2Y0MGVhYjU1MGFjYTc2NDdjODAxMS5zZXRDb250ZW50KGh0bWxfODExYmYyYmI4YjU1NDliYmE3NzRkOTdjZjNmN2FmM2QpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTliZTRiZjQ0YTg3NDc4YThkY2RhNWVkMTA3OGE3YWMuYmluZFBvcHVwKHBvcHVwX2RkMmQzNmMxNWVjZjQwZWFiNTUwYWNhNzY0N2M4MDExKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZkMTNjZjE2OTdlMzQ0YzZhMGQ5ZDBjZmM5NjdkOWFlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VjZmQ3OTk3N2RlNjQwYjNiYTM1YjE2OTg1OGExMGQ2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M0ZTllYWU5ZTQ5MDRkNWQ5N2I0ZjNmMzQ5ZTMwNWI2ID0gJCgnPGRpdiBpZD0iaHRtbF9jNGU5ZWFlOWU0OTA0ZDVkOTdiNGYzZjM0OWUzMDViNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VjZmQ3OTk3N2RlNjQwYjNiYTM1YjE2OTg1OGExMGQ2LnNldENvbnRlbnQoaHRtbF9jNGU5ZWFlOWU0OTA0ZDVkOTdiNGYzZjM0OWUzMDViNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82ZDEzY2YxNjk3ZTM0NGM2YTBkOWQwY2ZjOTY3ZDlhZS5iaW5kUG9wdXAocG9wdXBfZWNmZDc5OTc3ZGU2NDBiM2JhMzViMTY5ODU4YTEwZDYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDQ1YTY2OTQ0Y2FkNGYyYjlmNTBjODkyOTcyMjAyNDEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzczNjIzNjA1MjEyOTYsLTEyMi40MjIwNjcxODQ5MzddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81OTM5NGZkNDRhNWI0MjQ5ODhmYWQyYTkzYzQ0YzQ5YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85MTM1NDVkNmY2ZDU0NWU4OGU2Y2IzYzEwMGY2NTIwOSA9ICQoJzxkaXYgaWQ9Imh0bWxfOTEzNTQ1ZDZmNmQ1NDVlODhlNmNiM2MxMDBmNjUyMDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTkzOTRmZDQ0YTViNDI0OTg4ZmFkMmE5M2M0NGM0OWMuc2V0Q29udGVudChodG1sXzkxMzU0NWQ2ZjZkNTQ1ZTg4ZTZjYjNjMTAwZjY1MjA5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQ0NWE2Njk0NGNhZDRmMmI5ZjUwYzg5Mjk3MjIwMjQxLmJpbmRQb3B1cChwb3B1cF81OTM5NGZkNDRhNWI0MjQ5ODhmYWQyYTkzYzQ0YzQ5Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jOWJiNjYzZjljZTM0ZWM2YTFmNjljYTZiMjQ4YmU0NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM5ZDg1YjA3NzcwZTQ2NTA5YjM5M2NmMmMxMDc3M2ZkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNjOGU0OTIwZWZiMzQ3ZWFiMmVmMjYzMTBhMTliNThkID0gJCgnPGRpdiBpZD0iaHRtbF8zYzhlNDkyMGVmYjM0N2VhYjJlZjI2MzEwYTE5YjU4ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zOWQ4NWIwNzc3MGU0NjUwOWIzOTNjZjJjMTA3NzNmZC5zZXRDb250ZW50KGh0bWxfM2M4ZTQ5MjBlZmIzNDdlYWIyZWYyNjMxMGExOWI1OGQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzliYjY2M2Y5Y2UzNGVjNmExZjY5Y2E2YjI0OGJlNDYuYmluZFBvcHVwKHBvcHVwXzM5ZDg1YjA3NzcwZTQ2NTA5YjM5M2NmMmMxMDc3M2ZkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUzOTM5NTBjZGU3YzQzODU4ZjQxOTcyMjFiODVhNjFhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1OTk4ODMyMzc5Nzk2LC0xMjIuNDExNzQ3MzcxOTI0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzdkOTA3YmM4NmQ4NGViMzg4ZTczNjc3N2UyMmM1M2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTc3N2RhOGJmZGMyNDRlNjg3YzE2YTM5MzZiNzIzNDAgPSAkKCc8ZGl2IGlkPSJodG1sXzU3NzdkYThiZmRjMjQ0ZTY4N2MxNmEzOTM2YjcyMzQwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVVNQSUNJT1VTIE9DQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzdkOTA3YmM4NmQ4NGViMzg4ZTczNjc3N2UyMmM1M2Uuc2V0Q29udGVudChodG1sXzU3NzdkYThiZmRjMjQ0ZTY4N2MxNmEzOTM2YjcyMzQwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzUzOTM5NTBjZGU3YzQzODU4ZjQxOTcyMjFiODVhNjFhLmJpbmRQb3B1cChwb3B1cF9jN2Q5MDdiYzg2ZDg0ZWIzODhlNzM2Nzc3ZTIyYzUzZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNWJkMTgyMmE2YjU0Yzg4OWM0MGU2ZDAyZWJiM2MzOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI4ZWU4MDI3NDkxYTRhMDRhZTE1MTEwN2JhNzM1OTNmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2VjYmIzMDA5YzcxYTQzNTc4ZDg5Y2RhZTU1OTZjZWE5ID0gJCgnPGRpdiBpZD0iaHRtbF9lY2JiMzAwOWM3MWE0MzU3OGQ4OWNkYWU1NTk2Y2VhOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI4ZWU4MDI3NDkxYTRhMDRhZTE1MTEwN2JhNzM1OTNmLnNldENvbnRlbnQoaHRtbF9lY2JiMzAwOWM3MWE0MzU3OGQ4OWNkYWU1NTk2Y2VhOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hNWJkMTgyMmE2YjU0Yzg4OWM0MGU2ZDAyZWJiM2MzOS5iaW5kUG9wdXAocG9wdXBfMjhlZTgwMjc0OTFhNGEwNGFlMTUxMTA3YmE3MzU5M2YpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTZkNGZjNjYzOTNiNGVkZmE5YTViZDA4Y2M2YTk2MmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODUwMjI2NjIyNzg2LC0xMjIuNDExOTg3NjQzNTk1MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80YTMwOWY3YmJlNDU0NWM0OTJmNTIzM2MyMzEzZGUyMik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iZDBiMDk4NmE3MjI0MWQ0OGQ3YzFkNzA1ZmRhYWJlMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85MmM1Yjg2Nzk5NWQ0YmZhYmZiMzY0YTNiOGQxZWY5YyA9ICQoJzxkaXYgaWQ9Imh0bWxfOTJjNWI4Njc5OTVkNGJmYWJmYjM2NGEzYjhkMWVmOWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmQwYjA5ODZhNzIyNDFkNDhkN2MxZDcwNWZkYWFiZTMuc2V0Q29udGVudChodG1sXzkyYzViODY3OTk1ZDRiZmFiZmIzNjRhM2I4ZDFlZjljKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzU2ZDRmYzY2MzkzYjRlZGZhOWE1YmQwOGNjNmE5NjJjLmJpbmRQb3B1cChwb3B1cF9iZDBiMDk4NmE3MjI0MWQ0OGQ3YzFkNzA1ZmRhYWJlMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85YmJhZjg0NTJjZDA0OTlhYWNmYzIyZGQzZTIzYWQ0ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDYyMDY0OTEwNjQ5NSwtMTIyLjUwMDM4MDQyNzkxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkzNGJkYjM5ZmU3MzQ2MjNhNDg2OTYyMzFjM2M4MWZlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FhZTkzNmI0NzMwYjQ0NzI5Y2Y3ODRlYWQwMzZmMTU2ID0gJCgnPGRpdiBpZD0iaHRtbF9hYWU5MzZiNDczMGI0NDcyOWNmNzg0ZWFkMDM2ZjE1NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzkzNGJkYjM5ZmU3MzQ2MjNhNDg2OTYyMzFjM2M4MWZlLnNldENvbnRlbnQoaHRtbF9hYWU5MzZiNDczMGI0NDcyOWNmNzg0ZWFkMDM2ZjE1Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85YmJhZjg0NTJjZDA0OTlhYWNmYzIyZGQzZTIzYWQ0Zi5iaW5kUG9wdXAocG9wdXBfOTM0YmRiMzlmZTczNDYyM2E0ODY5NjIzMWMzYzgxZmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmVmMGFhNjJlY2FjNGJkMjg5MDkzYmE4N2RmOGVjMGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzUxOTE4MjY3MjE3LC0xMjIuNDY2NTU4NzgwNjgzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjZiMmZkYmU2NWQ5NDRiN2IwYzc0MGYxMDg4MWYyYjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDkyZDQyYjcxMDY0NGJiYWExOWEyODVlYTMxZGZkZmUgPSAkKCc8ZGl2IGlkPSJodG1sXzQ5MmQ0MmI3MTA2NDRiYmFhMTlhMjg1ZWEzMWRmZGZlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iNmIyZmRiZTY1ZDk0NGI3YjBjNzQwZjEwODgxZjJiNy5zZXRDb250ZW50KGh0bWxfNDkyZDQyYjcxMDY0NGJiYWExOWEyODVlYTMxZGZkZmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmVmMGFhNjJlY2FjNGJkMjg5MDkzYmE4N2RmOGVjMGYuYmluZFBvcHVwKHBvcHVwX2I2YjJmZGJlNjVkOTQ0YjdiMGM3NDBmMTA4ODFmMmI3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IwYWE2NjRiYWQ2NzQ1YTg5ZTkyZTgyZjBmZTVhYTFkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQ5MDg0MTcyOTAyOCwtMTIyLjQ4NjkyNTk2MDExNDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzVkMDA3YTNjMDQ3NGVkN2FlMDRkOTUwMWJmNTc4NmMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzAwNzQwMjUxNWVhNGVjOTkxN2Y5NjA0MDM0YzFlN2QgPSAkKCc8ZGl2IGlkPSJodG1sXzMwMDc0MDI1MTVlYTRlYzk5MTdmOTYwNDAzNGMxZTdkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzVkMDA3YTNjMDQ3NGVkN2FlMDRkOTUwMWJmNTc4NmMuc2V0Q29udGVudChodG1sXzMwMDc0MDI1MTVlYTRlYzk5MTdmOTYwNDAzNGMxZTdkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2IwYWE2NjRiYWQ2NzQ1YTg5ZTkyZTgyZjBmZTVhYTFkLmJpbmRQb3B1cChwb3B1cF83NWQwMDdhM2MwNDc0ZWQ3YWUwNGQ5NTAxYmY1Nzg2Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83OWEzZjEyMjY1YzI0YWY1YTYxYjVkMDdiZjVjM2YyNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2ODUzNjAxMjM1ODMsLTEyMi40MTU2MTYzMzgzMTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U1ZDM3YWI3ZTU2YzQwYmRiYmIyNGJiZmViMjYxNGFjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzkxNzA3ZWVjZTU2NzQ2M2Y5ZGY3YzgzZDU4YjFiMzU5ID0gJCgnPGRpdiBpZD0iaHRtbF85MTcwN2VlY2U1Njc0NjNmOWRmN2M4M2Q1OGIxYjM1OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lNWQzN2FiN2U1NmM0MGJkYmJiMjRiYmZlYjI2MTRhYy5zZXRDb250ZW50KGh0bWxfOTE3MDdlZWNlNTY3NDYzZjlkZjdjODNkNThiMWIzNTkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNzlhM2YxMjI2NWMyNGFmNWE2MWI1ZDA3YmY1YzNmMjcuYmluZFBvcHVwKHBvcHVwX2U1ZDM3YWI3ZTU2YzQwYmRiYmIyNGJiZmViMjYxNGFjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y4YTc0YTA0MzU1ZjQwMmY5NzZiM2U3NjNhYWNhNmJjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDI5NzcxNDA3NCwtMTIyLjQ0OTc1MTY1MjU2M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzRhMzA5ZjdiYmU0NTQ1YzQ5MmY1MjMzYzIzMTNkZTIyKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc5ZDYzNDFjMzNhMDQxZDViZGVkYjE4YjA4ZGZjM2IwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ0OTY3NGE4NTZkOTRkYzRhM2RkYWE0MjY0ZGY2NWJjID0gJCgnPGRpdiBpZD0iaHRtbF80NDk2NzRhODU2ZDk0ZGM0YTNkZGFhNDI2NGRmNjViYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc5ZDYzNDFjMzNhMDQxZDViZGVkYjE4YjA4ZGZjM2IwLnNldENvbnRlbnQoaHRtbF80NDk2NzRhODU2ZDk0ZGM0YTNkZGFhNDI2NGRmNjViYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mOGE3NGEwNDM1NWY0MDJmOTc2YjNlNzYzYWFjYTZiYy5iaW5kUG9wdXAocG9wdXBfNzlkNjM0MWMzM2EwNDFkNWJkZWRiMThiMDhkZmMzYjApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDJlNmE3NjM5OTAyNDE3M2JhNTgxNjUyM2FhYzA2ZWEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNWM2NTBhNmE2NGRkNDA5MzhlNTA5ZTExOWNjMmFlNzcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzQ2OTBkM2ZiNTAzNDFhZjhlZDY1MzM3N2U5OWY4ZDYgPSAkKCc8ZGl2IGlkPSJodG1sXzM0NjkwZDNmYjUwMzQxYWY4ZWQ2NTMzNzdlOTlmOGQ2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81YzY1MGE2YTY0ZGQ0MDkzOGU1MDllMTE5Y2MyYWU3Ny5zZXRDb250ZW50KGh0bWxfMzQ2OTBkM2ZiNTAzNDFhZjhlZDY1MzM3N2U5OWY4ZDYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDJlNmE3NjM5OTAyNDE3M2JhNTgxNjUyM2FhYzA2ZWEuYmluZFBvcHVwKHBvcHVwXzVjNjUwYTZhNjRkZDQwOTM4ZTUwOWUxMTljYzJhZTc3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IxZDRjNzJkYmY4YTQwMDRiMzg3MmE2YTZmY2I3MzMzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM1MjY4MTQ2OTA4Mzk2LC0xMjIuNDcyNzE1NzU5NjMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNGEzMDlmN2JiZTQ1NDVjNDkyZjUyMzNjMjMxM2RlMjIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjU3ZTFiNjBmMjczNDNhYzhlMmU2YzQxYzRmZGE2YWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGExNzM4NDYxODI2NDk5ZTkzMTdlNWEzODgwZWIwMmMgPSAkKCc8ZGl2IGlkPSJodG1sXzhhMTczODQ2MTgyNjQ5OWU5MzE3ZTVhMzg4MGViMDJjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNTdlMWI2MGYyNzM0M2FjOGUyZTZjNDFjNGZkYTZhZS5zZXRDb250ZW50KGh0bWxfOGExNzM4NDYxODI2NDk5ZTkzMTdlNWEzODgwZWIwMmMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjFkNGM3MmRiZjhhNDAwNGIzODcyYTZhNmZjYjczMzMuYmluZFBvcHVwKHBvcHVwXzI1N2UxYjYwZjI3MzQzYWM4ZTJlNmM0MWM0ZmRhNmFlKTsKCiAgICAgICAgICAgIAogICAgICAgIAo8L3NjcmlwdD4=\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fde9f5d0630>"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# create map and display it\n",
"sanfran_map = folium.Map(location=[latitude, longitude], zoom_start=12)\n",
"\n",
"# loop through the 100 crimes and add each to the map\n",
"for lat, lng, label in zip(df_incidents.Y, df_incidents.X, df_incidents.Category):\n",
" folium.features.CircleMarker(\n",
" [lat, lng],\n",
" radius=5, # define how big you want the circle markers to be\n",
" color='yellow',\n",
" fill=True,\n",
" popup=label,\n",
" fill_color='blue',\n",
" fill_opacity=0.6\n",
" ).add_to(sanfran_map)\n",
"\n",
"# show map\n",
"sanfran_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"The other proper remedy is to group the markers into different clusters. Each cluster is then represented by the number of crimes in each neighborhood. These clusters can be thought of as pockets of San Francisco which you can then analyze separately.\n",
"\n",
"To implement this, we start off by instantiating a *MarkerCluster* object and adding all the data points in the dataframe to this object."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": 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;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZjVlMWFkZDQyYWYzNDE3MmIxMWZlMWNhZDc0ZjYyOTAgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQubWFya2VyY2x1c3Rlci8xLjEuMC9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4xLjAvTWFya2VyQ2x1c3Rlci5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMS4wL01hcmtlckNsdXN0ZXIuRGVmYXVsdC5jc3MiLz4KPC9oZWFkPgo8Ym9keT4gICAgCiAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9saXVtLW1hcCIgaWQ9Im1hcF9mNWUxYWRkNDJhZjM0MTcyYjExZmUxY2FkNzRmNjI5MCIgPjwvZGl2PgogICAgICAgIAo8L2JvZHk+CjxzY3JpcHQ+ICAgIAogICAgCgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXBfZjVlMWFkZDQyYWYzNDE3MmIxMWZlMWNhZDc0ZjYyOTAgPSBMLm1hcCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXBfZjVlMWFkZDQyYWYzNDE3MmIxMWZlMWNhZDc0ZjYyOTAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NlbnRlcjogWzM3Ljc3LC0xMjIuNDJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzU4NzlkZjBjY2FiYjQzNTU5MDRmNWFjM2E0OGViNzFmID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y1ZTFhZGQ0MmFmMzQxNzJiMTFmZTFjYWQ3NGY2MjkwKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUgPSBMLm1hcmtlckNsdXN0ZXJHcm91cCh7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIG1hcF9mNWUxYWRkNDJhZjM0MTcyYjExZmUxY2FkNzRmNjI5MC5hZGRMYXllcihtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2QzNTRlZDYyYWYzNjQyNWY4ZjBiZWY1MmY3ZjlkOTk2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE3MDNlNDFhOGQ2MDRmNGE4MzkzOTM5NGVkMzI4YmNlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U2ZWVhMTM1ODhjODQxNDBiODEzZjVhOGU4MzhiMjY3ID0gJCgnPGRpdiBpZD0iaHRtbF9lNmVlYTEzNTg4Yzg0MTQwYjgxM2Y1YThlODM4YjI2NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0VBUE9OIExBV1M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE3MDNlNDFhOGQ2MDRmNGE4MzkzOTM5NGVkMzI4YmNlLnNldENvbnRlbnQoaHRtbF9lNmVlYTEzNTg4Yzg0MTQwYjgxM2Y1YThlODM4YjI2Nyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2QzNTRlZDYyYWYzNjQyNWY4ZjBiZWY1MmY3ZjlkOTk2LmJpbmRQb3B1cChwb3B1cF8xNzAzZTQxYThkNjA0ZjRhODM5MzkzOTRlZDMyOGJjZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84YmI0ZjBiMWU5MWI0NGZkYmRhMjhjNDMyNWVmZmJkZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNDgwNDc4OWZhNGM0MzZiOTRjZWMwY2Y4ZTUxMjAxZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83OThjMGZhOTBiYWY0OTIyYjM2MjgxZmQ4MGJhY2EzMiA9ICQoJzxkaXYgaWQ9Imh0bWxfNzk4YzBmYTkwYmFmNDkyMmIzNjI4MWZkODBiYWNhMzIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNDgwNDc4OWZhNGM0MzZiOTRjZWMwY2Y4ZTUxMjAxZi5zZXRDb250ZW50KGh0bWxfNzk4YzBmYTkwYmFmNDkyMmIzNjI4MWZkODBiYWNhMzIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84YmI0ZjBiMWU5MWI0NGZkYmRhMjhjNDMyNWVmZmJkZC5iaW5kUG9wdXAocG9wdXBfZjQ4MDQ3ODlmYTRjNDM2Yjk0Y2VjMGNmOGU1MTIwMWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDkxYjA1ZTYyMzkxNGRhNDlhNmQ2MDJkNTNmMTQxNzAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjk5ODA5NjcyOTk1OTYsLTEyMi4zODg4NTYyMDQyOTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFlZTFkNmZkNGE1ZTRjODU5YWY2YzYwYjM2Y2NhZjQyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2MwNThhMGNlZGE0ZDQzOTNhMTJkYWI4MWRiOWRlNDhkID0gJCgnPGRpdiBpZD0iaHRtbF9jMDU4YTBjZWRhNGQ0MzkzYTEyZGFiODFkYjlkZTQ4ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFlZTFkNmZkNGE1ZTRjODU5YWY2YzYwYjM2Y2NhZjQyLnNldENvbnRlbnQoaHRtbF9jMDU4YTBjZWRhNGQ0MzkzYTEyZGFiODFkYjlkZTQ4ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzA5MWIwNWU2MjM5MTRkYTQ5YTZkNjAyZDUzZjE0MTcwLmJpbmRQb3B1cChwb3B1cF8xZWUxZDZmZDRhNWU0Yzg1OWFmNmM2MGIzNmNjYWY0Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lM2U4Mzc5ODQ1MDU0YzdjYjAwMTNhMjFhMDA0YWM0NCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTc4ODM3NjY4ODc5LC0xMjIuNDEyOTcwNTM3NTkxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNjBjMjg4ZDc2NDY0MDgwYTA3ZmRjZmFjZmIwNzZjNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82NjQxZTRiN2U5OTY0OWE4OTI3ZTVjZWIxYTdhZjM2MiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjY0MWU0YjdlOTk2NDlhODkyN2U1Y2ViMWE3YWYzNjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTYwYzI4OGQ3NjQ2NDA4MGEwN2ZkY2ZhY2ZiMDc2Yzcuc2V0Q29udGVudChodG1sXzY2NDFlNGI3ZTk5NjQ5YTg5MjdlNWNlYjFhN2FmMzYyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTNlODM3OTg0NTA1NGM3Y2IwMDEzYTIxYTAwNGFjNDQuYmluZFBvcHVwKHBvcHVwXzE2MGMyODhkNzY0NjQwODBhMDdmZGNmYWNmYjA3NmM3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzc1NmJlZjkxMjFhNTQ2MzBhODMyM2M1ZGY5YTA4ZTViID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY1MDUwMTIxNDY2OCwtMTIyLjQxOTY3MTc4MDI5Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjE1YTk0NWE5MDkzNGYyMGI4YzAyMTY5ZjE5MmI3ZDcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWU3MDMxNGFlM2VlNDlhOTk0NGRhMTg5NzVjMzBmYWEgPSAkKCc8ZGl2IGlkPSJodG1sXzFlNzAzMTRhZTNlZTQ5YTk5NDRkYTE4OTc1YzMwZmFhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzIxNWE5NDVhOTA5MzRmMjBiOGMwMjE2OWYxOTJiN2Q3LnNldENvbnRlbnQoaHRtbF8xZTcwMzE0YWUzZWU0OWE5OTQ0ZGExODk3NWMzMGZhYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzc1NmJlZjkxMjFhNTQ2MzBhODMyM2M1ZGY5YTA4ZTViLmJpbmRQb3B1cChwb3B1cF8yMTVhOTQ1YTkwOTM0ZjIwYjhjMDIxNjlmMTkyYjdkNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80M2RhNWNiMGFhZTk0NGVhYjAxZmE3NTQzZWJmNDFiNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kMDRiYWU4NmZhZmU0NjQ0OGQ3NDBhNGNkMTI4NGFjZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80OTRmOGY0MDhhN2I0MzA3YTBjZWI0M2QwMjE3MTc5ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfNDk0ZjhmNDA4YTdiNDMwN2EwY2ViNDNkMDIxNzE3OWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2QwNGJhZTg2ZmFmZTQ2NDQ4ZDc0MGE0Y2QxMjg0YWNmLnNldENvbnRlbnQoaHRtbF80OTRmOGY0MDhhN2I0MzA3YTBjZWI0M2QwMjE3MTc5ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzQzZGE1Y2IwYWFlOTQ0ZWFiMDFmYTc1NDNlYmY0MWI1LmJpbmRQb3B1cChwb3B1cF9kMDRiYWU4NmZhZmU0NjQ0OGQ3NDBhNGNkMTI4NGFjZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wZDU0OWFkODk0ZDg0M2U3YTRlMTlhYTQzNmQwYzNhOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDg3ODkzNjAyMTQsLTEyMi40MDU3MjE0NTQ1NjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZhMmNjZmNiZDMwNjQ0ZDViYjc2NDcyMjgzYTdmNWYzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YyNDQ5YTUxNDlmMDRjZjQ4YjMzOWU0NTc5NDcxNTI4ID0gJCgnPGRpdiBpZD0iaHRtbF9mMjQ0OWE1MTQ5ZjA0Y2Y0OGIzMzllNDU3OTQ3MTUyOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZhMmNjZmNiZDMwNjQ0ZDViYjc2NDcyMjgzYTdmNWYzLnNldENvbnRlbnQoaHRtbF9mMjQ0OWE1MTQ5ZjA0Y2Y0OGIzMzllNDU3OTQ3MTUyOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzBkNTQ5YWQ4OTRkODQzZTdhNGUxOWFhNDM2ZDBjM2E5LmJpbmRQb3B1cChwb3B1cF82YTJjY2ZjYmQzMDY0NGQ1YmI3NjQ3MjI4M2E3ZjVmMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mYzZjZDEwYmFmODU0YTBiOWVjMGU1YTIzYTA0Y2Q2YiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4Mzk4MDU1OTI2MzQsLTEyMi40MTE3NzgyOTU5OTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRhNDdhNjg4NmUzMTQzNDZiYmZhYmY2OTU1NTllNTYwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU4ZGViODAyYjAzODQ3ODVhOWNmNjdhZTgzNmE2ZjVmID0gJCgnPGRpdiBpZD0iaHRtbF81OGRlYjgwMmIwMzg0Nzg1YTljZjY3YWU4MzZhNmY1ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80YTQ3YTY4ODZlMzE0MzQ2YmJmYWJmNjk1NTU5ZTU2MC5zZXRDb250ZW50KGh0bWxfNThkZWI4MDJiMDM4NDc4NWE5Y2Y2N2FlODM2YTZmNWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mYzZjZDEwYmFmODU0YTBiOWVjMGU1YTIzYTA0Y2Q2Yi5iaW5kUG9wdXAocG9wdXBfNGE0N2E2ODg2ZTMxNDM0NmJiZmFiZjY5NTU1OWU1NjApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmNjYTllYjUxZGI2NGQxZGJlZjVhNjQ0NzUwNTEyODIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M2OTU4MjcwYzJlYzRmMzZhMDQ4YTViNmU1YTNhYzFjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE0ZGQxMGU5OTc3NzQ5ZDU4NjQ5ODhkYTRjZWM2MWEyID0gJCgnPGRpdiBpZD0iaHRtbF8xNGRkMTBlOTk3Nzc0OWQ1ODY0OTg4ZGE0Y2VjNjFhMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M2OTU4MjcwYzJlYzRmMzZhMDQ4YTViNmU1YTNhYzFjLnNldENvbnRlbnQoaHRtbF8xNGRkMTBlOTk3Nzc0OWQ1ODY0OTg4ZGE0Y2VjNjFhMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2JjY2E5ZWI1MWRiNjRkMWRiZWY1YTY0NDc1MDUxMjgyLmJpbmRQb3B1cChwb3B1cF9jNjk1ODI3MGMyZWM0ZjM2YTA0OGE1YjZlNWEzYWMxYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hMDg5ZDYwY2Y4YzE0NjZlYmE4N2Y4NDI4OTlhMGQ2OSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FiMmZiZjE4OTRhZjRjODlhNzk4Yzg2NmVjODQ1M2M0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y5YWEzNzIwY2EyZjRmNTliZWE3NWJkNWQyYzE1NjcwID0gJCgnPGRpdiBpZD0iaHRtbF9mOWFhMzcyMGNhMmY0ZjU5YmVhNzViZDVkMmMxNTY3MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FiMmZiZjE4OTRhZjRjODlhNzk4Yzg2NmVjODQ1M2M0LnNldENvbnRlbnQoaHRtbF9mOWFhMzcyMGNhMmY0ZjU5YmVhNzViZDVkMmMxNTY3MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2EwODlkNjBjZjhjMTQ2NmViYTg3Zjg0Mjg5OWEwZDY5LmJpbmRQb3B1cChwb3B1cF9hYjJmYmYxODk0YWY0Yzg5YTc5OGM4NjZlYzg0NTNjNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl81M2EyYWUyOTA3ZGU0MThmYTcyNGRkYWNlM2MyNTc3NSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85NDU2YzFjZWVkNTk0NmM1OWZkOTBhNWI1MGI4NTk5MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xMTc4ZjBjMDM0NTY0YTM4YjZmNDEzNjU3MDhhMTYxMCA9ICQoJzxkaXYgaWQ9Imh0bWxfMTE3OGYwYzAzNDU2NGEzOGI2ZjQxMzY1NzA4YTE2MTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzk0NTZjMWNlZWQ1OTQ2YzU5ZmQ5MGE1YjUwYjg1OTkyLnNldENvbnRlbnQoaHRtbF8xMTc4ZjBjMDM0NTY0YTM4YjZmNDEzNjU3MDhhMTYxMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzUzYTJhZTI5MDdkZTQxOGZhNzI0ZGRhY2UzYzI1Nzc1LmJpbmRQb3B1cChwb3B1cF85NDU2YzFjZWVkNTk0NmM1OWZkOTBhNWI1MGI4NTk5Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82MDYyYjllNjJiYzU0YWViYjliMjQ2ZmRjMGQ2NDE5MyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NTczODk0Mjk2NTQ5NSwtMTIyLjQ3Nzk2MDMyNzI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2NlY2JiYjQ1OTMyNDljMGI2NDVjOGFjNThmNmU2NmQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjYwYzQyMjg1NDk1NGM3OThkNDE2ZjgwMjM4YjE2NmEgPSAkKCc8ZGl2IGlkPSJodG1sX2I2MGM0MjI4NTQ5NTRjNzk4ZDQxNmY4MDIzOGIxNjZhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NjZWNiYmI0NTkzMjQ5YzBiNjQ1YzhhYzU4ZjZlNjZkLnNldENvbnRlbnQoaHRtbF9iNjBjNDIyODU0OTU0Yzc5OGQ0MTZmODAyMzhiMTY2YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzYwNjJiOWU2MmJjNTRhZWJiOWIyNDZmZGMwZDY0MTkzLmJpbmRQb3B1cChwb3B1cF9jY2VjYmJiNDU5MzI0OWMwYjY0NWM4YWM1OGY2ZTY2ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82NTI5ODAzZDFmNzQ0ZTNlYTFiYWI4NzM4MWI1NWJhMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMDZjNjMzNTVkYmQ0YmFiYjY4MjUzYTY5OGQwNGY4MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85NDRmMzA2ZTZlODc0OWY1YTUyMTc0MmFkZTU5OGZmMiA9ICQoJzxkaXYgaWQ9Imh0bWxfOTQ0ZjMwNmU2ZTg3NDlmNWE1MjE3NDJhZGU1OThmZjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lMDZjNjMzNTVkYmQ0YmFiYjY4MjUzYTY5OGQwNGY4MC5zZXRDb250ZW50KGh0bWxfOTQ0ZjMwNmU2ZTg3NDlmNWE1MjE3NDJhZGU1OThmZjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82NTI5ODAzZDFmNzQ0ZTNlYTFiYWI4NzM4MWI1NWJhMS5iaW5kUG9wdXAocG9wdXBfZTA2YzYzMzU1ZGJkNGJhYmI2ODI1M2E2OThkMDRmODApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOWMzM2VkZDNiNmQzNGU5MWJmYTc5N2M2MDc0ZWZjMjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82YzMxN2EwOTRkMzg0ZWY3YWY5ZGM0MTc2OGJiN2EyMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83YjQyMzhlNjM5NmU0MWU1OGM0ZjgxMGE5YTdhMTMyYiA9ICQoJzxkaXYgaWQ9Imh0bWxfN2I0MjM4ZTYzOTZlNDFlNThjNGY4MTBhOWE3YTEzMmIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZjMzE3YTA5NGQzODRlZjdhZjlkYzQxNzY4YmI3YTIyLnNldENvbnRlbnQoaHRtbF83YjQyMzhlNjM5NmU0MWU1OGM0ZjgxMGE5YTdhMTMyYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzljMzNlZGQzYjZkMzRlOTFiZmE3OTdjNjA3NGVmYzI2LmJpbmRQb3B1cChwb3B1cF82YzMxN2EwOTRkMzg0ZWY3YWY5ZGM0MTc2OGJiN2EyMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xNDFmMzhhZjc4YzY0ODQ5YjA0YjgyYzEyYTI1YWY1YyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MTY0Mjk4MjM4NCwtMTIyLjQwMDkwODY5ODg4OTk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jNDhhNDZjNjM0Yzc0OGJhOWJhNjg0NWM5MTBmMTljMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wM2FhYmI1MjVjMmY0OWVkODZlZjFlMTg5YTdkY2E3OCA9ICQoJzxkaXYgaWQ9Imh0bWxfMDNhYWJiNTI1YzJmNDllZDg2ZWYxZTE4OWE3ZGNhNzgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jNDhhNDZjNjM0Yzc0OGJhOWJhNjg0NWM5MTBmMTljMi5zZXRDb250ZW50KGh0bWxfMDNhYWJiNTI1YzJmNDllZDg2ZWYxZTE4OWE3ZGNhNzgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xNDFmMzhhZjc4YzY0ODQ5YjA0YjgyYzEyYTI1YWY1Yy5iaW5kUG9wdXAocG9wdXBfYzQ4YTQ2YzYzNGM3NDhiYTliYTY4NDVjOTEwZjE5YzIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDkyZjBlYmE0ZjJjNDQ4NGIxYmVjYTkzNjhhNWNjODcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM3MDY5MzAxNTQ1LC0xMjIuNDA4NTk1MTEwODY5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iMDI0OGU4NTk5YWI0NjQ5YWQ4ZjIyNWI2ODAxOTcxMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yNWNmYmRiZWE4OGU0NWFhOWI1MzRlMzYyMjZhZjE1ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfMjVjZmJkYmVhODhlNDVhYTliNTM0ZTM2MjI2YWYxNWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNUT0xFTiBQUk9QRVJUWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjAyNDhlODU5OWFiNDY0OWFkOGYyMjViNjgwMTk3MTEuc2V0Q29udGVudChodG1sXzI1Y2ZiZGJlYTg4ZTQ1YWE5YjUzNGUzNjIyNmFmMTVkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDkyZjBlYmE0ZjJjNDQ4NGIxYmVjYTkzNjhhNWNjODcuYmluZFBvcHVwKHBvcHVwX2IwMjQ4ZTg1OTlhYjQ2NDlhZDhmMjI1YjY4MDE5NzExKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Y0MDY3MjAyZTg1YzQzZGU4ZmQ2OTgxNDEwMzFhNmEwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zZGNiNTc3NTkzZDc0MjVkYWIwY2MyYjIzYTkzZmQ2MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84ZTI5ZWZlYTk5NDM0OGE4OTk4ZjM4MGVhMDBiMmZlYiA9ICQoJzxkaXYgaWQ9Imh0bWxfOGUyOWVmZWE5OTQzNDhhODk5OGYzODBlYTAwYjJmZWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNkY2I1Nzc1OTNkNzQyNWRhYjBjYzJiMjNhOTNmZDYxLnNldENvbnRlbnQoaHRtbF84ZTI5ZWZlYTk5NDM0OGE4OTk4ZjM4MGVhMDBiMmZlYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Y0MDY3MjAyZTg1YzQzZGU4ZmQ2OTgxNDEwMzFhNmEwLmJpbmRQb3B1cChwb3B1cF8zZGNiNTc3NTkzZDc0MjVkYWIwY2MyYjIzYTkzZmQ2MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xNGZiYmFhYjg5YmY0NjI0ODM1Y2EwNDhmYzU5OTdlZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0ODkwNjMwNTE4MjksLTEyMi40MjAzNTQ3ODA4NjA5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2E2YzQ4NDIyNTE1NGY2ZTk2MDQzZWIwOTljNDY5ZTIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzRmOGU1MWY2YTFiNDViMDgwNDlhMjFhZGNiYmEyODggPSAkKCc8ZGl2IGlkPSJodG1sXzc0ZjhlNTFmNmExYjQ1YjA4MDQ5YTIxYWRjYmJhMjg4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83YTZjNDg0MjI1MTU0ZjZlOTYwNDNlYjA5OWM0NjllMi5zZXRDb250ZW50KGh0bWxfNzRmOGU1MWY2YTFiNDViMDgwNDlhMjFhZGNiYmEyODgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xNGZiYmFhYjg5YmY0NjI0ODM1Y2EwNDhmYzU5OTdlZC5iaW5kUG9wdXAocG9wdXBfN2E2YzQ4NDIyNTE1NGY2ZTk2MDQzZWIwOTljNDY5ZTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmU2NDA5OGNhZTBlNDRmMjk3N2MzYmM2MzhkODFjODYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTU3NjU0MjY5OTUsLTEyMi40Mzk5MDk3NjY3NzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI0Mjk3NDZjNzYzMjQzNzFiNTNmYzMyZjFmNTY2MjY4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc1MWE1ZDdkZGQ5OTRlZjU5YWJiMWY2MzU4MGI3NWQ5ID0gJCgnPGRpdiBpZD0iaHRtbF83NTFhNWQ3ZGRkOTk0ZWY1OWFiYjFmNjM1ODBiNzVkOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjQyOTc0NmM3NjMyNDM3MWI1M2ZjMzJmMWY1NjYyNjguc2V0Q29udGVudChodG1sXzc1MWE1ZDdkZGQ5OTRlZjU5YWJiMWY2MzU4MGI3NWQ5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmU2NDA5OGNhZTBlNDRmMjk3N2MzYmM2MzhkODFjODYuYmluZFBvcHVwKHBvcHVwXzI0Mjk3NDZjNzYzMjQzNzFiNTNmYzMyZjFmNTY2MjY4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzgxYWI2OGQ3MTNjOTQ1ZmViYzY0ZWYzYjU2ZjU5ZTdlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWUzYmMyYTJkZDFkNDcxMTk4NWY5NTM4OGU0YjdmMjggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjQ4YzllYjE1NjUwNGVhYmE3YTk3Yjc5YzUxMTZjOTggPSAkKCc8ZGl2IGlkPSJodG1sXzI0OGM5ZWIxNTY1MDRlYWJhN2E5N2I3OWM1MTE2Yzk4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hZTNiYzJhMmRkMWQ0NzExOTg1Zjk1Mzg4ZTRiN2YyOC5zZXRDb250ZW50KGh0bWxfMjQ4YzllYjE1NjUwNGVhYmE3YTk3Yjc5YzUxMTZjOTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84MWFiNjhkNzEzYzk0NWZlYmM2NGVmM2I1NmY1OWU3ZS5iaW5kUG9wdXAocG9wdXBfYWUzYmMyYTJkZDFkNDcxMTk4NWY5NTM4OGU0YjdmMjgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2ZhZTE5YWMzNjdhNDFhMzlmMjRhNTY1YTBmMmZmM2YgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzM2MTg2Mjc2NDU2MDQsLTEyMi40MjIzMTU2NzA3NDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzUwNjA1NzY4NDFkODRiYzQ5YmIyMzU2NzM2MmUyN2M2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE2YTRjZTRkOTJhZjQ2ZmI5OTAxYzkxM2MyZWQ4YzZlID0gJCgnPGRpdiBpZD0iaHRtbF8xNmE0Y2U0ZDkyYWY0NmZiOTkwMWM5MTNjMmVkOGM2ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RlJBVUQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzUwNjA1NzY4NDFkODRiYzQ5YmIyMzU2NzM2MmUyN2M2LnNldENvbnRlbnQoaHRtbF8xNmE0Y2U0ZDkyYWY0NmZiOTkwMWM5MTNjMmVkOGM2ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzNmYWUxOWFjMzY3YTQxYTM5ZjI0YTU2NWEwZjJmZjNmLmJpbmRQb3B1cChwb3B1cF81MDYwNTc2ODQxZDg0YmM0OWJiMjM1NjczNjJlMjdjNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wMjNkMTQ3MTNkMWY0YWFkYjllZmI2ZDg5OGRkZjA4OCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5Mjg0MTI4NDA0NDcwNSwtMTIyLjQyNDUxOTgzNTAwOTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NDJjZTc5OTA1ODI0NmNlYmY4NzI0YmRiYWYzMzFjZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lZGYxYjBmODIzNmE0OGY2ODE1ZGJkZGI0ZmM1ZGQ3YiA9ICQoJzxkaXYgaWQ9Imh0bWxfZWRmMWIwZjgyMzZhNDhmNjgxNWRiZGRiNGZjNWRkN2IiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NDJjZTc5OTA1ODI0NmNlYmY4NzI0YmRiYWYzMzFjZi5zZXRDb250ZW50KGh0bWxfZWRmMWIwZjgyMzZhNDhmNjgxNWRiZGRiNGZjNWRkN2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wMjNkMTQ3MTNkMWY0YWFkYjllZmI2ZDg5OGRkZjA4OC5iaW5kUG9wdXAocG9wdXBfNTQyY2U3OTkwNTgyNDZjZWJmODcyNGJkYmFmMzMxY2YpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDBhOTI2MjM5NWNmNDgyZDhlMDQyYzljNTdkZTU2NTEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWJiMGFlYWNlNWIxNDhmYjgyNDdkMmE4YzBhNWJmMWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjUxM2Q3NjhmNTRiNDAxZjhhNzQwOWNmMzMwYjFlMzEgPSAkKCc8ZGl2IGlkPSJodG1sX2I1MTNkNzY4ZjU0YjQwMWY4YTc0MDljZjMzMGIxZTMxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lYmIwYWVhY2U1YjE0OGZiODI0N2QyYThjMGE1YmYxYi5zZXRDb250ZW50KGh0bWxfYjUxM2Q3NjhmNTRiNDAxZjhhNzQwOWNmMzMwYjFlMzEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kMGE5MjYyMzk1Y2Y0ODJkOGUwNDJjOWM1N2RlNTY1MS5iaW5kUG9wdXAocG9wdXBfZWJiMGFlYWNlNWIxNDhmYjgyNDdkMmE4YzBhNWJmMWIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDA3Y2NjOWRkNTVmNGQ1OThkODBlNzUyMzUzNDNhNWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTk5MmE4OTIxNDBlNDkwNWJmMzdkODU2MmY2Zjg3ZGIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTM4MzU5MzBiN2Y5NGFlOWE4ZGM5ZThmMTllMzMwMmQgPSAkKCc8ZGl2IGlkPSJodG1sX2EzODM1OTMwYjdmOTRhZTlhOGRjOWU4ZjE5ZTMzMDJkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTk5MmE4OTIxNDBlNDkwNWJmMzdkODU2MmY2Zjg3ZGIuc2V0Q29udGVudChodG1sX2EzODM1OTMwYjdmOTRhZTlhOGRjOWU4ZjE5ZTMzMDJkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMDA3Y2NjOWRkNTVmNGQ1OThkODBlNzUyMzUzNDNhNWUuYmluZFBvcHVwKHBvcHVwXzE5OTJhODkyMTQwZTQ5MDViZjM3ZDg1NjJmNmY4N2RiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2NlMjQ3MzE2ZTQ3OTQ4Y2I4MTI4OWI5ZTY5OWRiYmIyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzcxNDkzOTk2OTQxNiwtMTIyLjUwNzc1MDEzMTAwNDAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMTBhOTkxYzY4ZjU0MTdmODMyZmE1NmM2OGVlMTg2MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lOGFlNWE3ZTU4ZTU0MzM5OWZkZjRkNDliNjAxZjg0MSA9ICQoJzxkaXYgaWQ9Imh0bWxfZThhZTVhN2U1OGU1NDMzOTlmZGY0ZDQ5YjYwMWY4NDEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ExMGE5OTFjNjhmNTQxN2Y4MzJmYTU2YzY4ZWUxODYyLnNldENvbnRlbnQoaHRtbF9lOGFlNWE3ZTU4ZTU0MzM5OWZkZjRkNDliNjAxZjg0MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2NlMjQ3MzE2ZTQ3OTQ4Y2I4MTI4OWI5ZTY5OWRiYmIyLmJpbmRQb3B1cChwb3B1cF9hMTBhOTkxYzY4ZjU0MTdmODMyZmE1NmM2OGVlMTg2Mik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hOGI5OWM5YTRmOWI0OGY1OGU4MzUwZTcxN2FjNTgxYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kZDk2NTFlNThmMDg0ZWJlODJhNzAzMGNmN2VmN2IwZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82ODJmZDUxYmVhYTI0MjJkOGE5MDdiOTc5NGUxOTEyNiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjgyZmQ1MWJlYWEyNDIyZDhhOTA3Yjk3OTRlMTkxMjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kZDk2NTFlNThmMDg0ZWJlODJhNzAzMGNmN2VmN2IwZC5zZXRDb250ZW50KGh0bWxfNjgyZmQ1MWJlYWEyNDIyZDhhOTA3Yjk3OTRlMTkxMjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hOGI5OWM5YTRmOWI0OGY1OGU4MzUwZTcxN2FjNTgxYi5iaW5kUG9wdXAocG9wdXBfZGQ5NjUxZTU4ZjA4NGViZTgyYTcwMzBjZjdlZjdiMGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjQ3ODc2NTIyOWNjNGZiYzk4NjhiNDMzZjVmMzBjZTYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hYmRkNDVjYzczMDA0NjRlYWYzMTQ4ZjFiYzY2ZWVlOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83OGViZmE0ZmMyMTY0N2JiOTQ4Mzc1NmViMDhjZDdlYSA9ICQoJzxkaXYgaWQ9Imh0bWxfNzhlYmZhNGZjMjE2NDdiYjk0ODM3NTZlYjA4Y2Q3ZWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hYmRkNDVjYzczMDA0NjRlYWYzMTQ4ZjFiYzY2ZWVlOC5zZXRDb250ZW50KGh0bWxfNzhlYmZhNGZjMjE2NDdiYjk0ODM3NTZlYjA4Y2Q3ZWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNDc4NzY1MjI5Y2M0ZmJjOTg2OGI0MzNmNWYzMGNlNi5iaW5kUG9wdXAocG9wdXBfYWJkZDQ1Y2M3MzAwNDY0ZWFmMzE0OGYxYmM2NmVlZTgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfN2ZkNWMxZGRhMWViNDRmOGJmMmI1MzU3ZWRkMzU2M2EgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZjgxZDVhZWI4MDc0NWUzOGY4ODNlY2M1MTRhMTI1NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81YjkzOGFkYTY3NmY0ZmZlODI1MDdmYWU3NzY3YTk1MCA9ICQoJzxkaXYgaWQ9Imh0bWxfNWI5MzhhZGE2NzZmNGZmZTgyNTA3ZmFlNzc2N2E5NTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mZjgxZDVhZWI4MDc0NWUzOGY4ODNlY2M1MTRhMTI1NC5zZXRDb250ZW50KGh0bWxfNWI5MzhhZGE2NzZmNGZmZTgyNTA3ZmFlNzc2N2E5NTApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83ZmQ1YzFkZGExZWI0NGY4YmYyYjUzNTdlZGQzNTYzYS5iaW5kUG9wdXAocG9wdXBfZmY4MWQ1YWViODA3NDVlMzhmODgzZWNjNTE0YTEyNTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjNlN2RhOGE4NTQzNDFmZDk3OTZkNjMxYTY4MjY3MjggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzk1ZmQ4N2RmMWYwZDQ3MTFiNjMxZGQ1YmEyYThmOTY3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhkODVhNmI0ZjliMDQzMWE4NmNkOTYyZmZlMGNlMDYzID0gJCgnPGRpdiBpZD0iaHRtbF84ZDg1YTZiNGY5YjA0MzFhODZjZDk2MmZmZTBjZTA2MyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzk1ZmQ4N2RmMWYwZDQ3MTFiNjMxZGQ1YmEyYThmOTY3LnNldENvbnRlbnQoaHRtbF84ZDg1YTZiNGY5YjA0MzFhODZjZDk2MmZmZTBjZTA2Myk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzYzZTdkYThhODU0MzQxZmQ5Nzk2ZDYzMWE2ODI2NzI4LmJpbmRQb3B1cChwb3B1cF85NWZkODdkZjFmMGQ0NzExYjYzMWRkNWJhMmE4Zjk2Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hZWQ1NGY2MDdhZGQ0MDIzOTk3OGU0OWI2YTdjNTJhMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMzOTRhYzU0YTJiNzQ1YWZiNjU4ZmU4MWM0ZDM3YjY1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzRkNWRlMThjNDIxYjRhNzc4ZWNiZDg0ZWUzN2VmNDJiID0gJCgnPGRpdiBpZD0iaHRtbF80ZDVkZTE4YzQyMWI0YTc3OGVjYmQ4NGVlMzdlZjQyYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMzk0YWM1NGEyYjc0NWFmYjY1OGZlODFjNGQzN2I2NS5zZXRDb250ZW50KGh0bWxfNGQ1ZGUxOGM0MjFiNGE3NzhlY2JkODRlZTM3ZWY0MmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hZWQ1NGY2MDdhZGQ0MDIzOTk3OGU0OWI2YTdjNTJhMy5iaW5kUG9wdXAocG9wdXBfMzM5NGFjNTRhMmI3NDVhZmI2NThmZTgxYzRkMzdiNjUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmZhZWU4M2E3NjBmNDI5ZThhYzIwMDkzYzdjMmEzYTMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc5MjA5Mzc1NTMyOTUsLTEyMi40MTA4ODI4MjU1NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJlOTBhNDQ5MDQ2ZDQ4MmQ5ZWI2Mjg3NmQ1NTA0ODU5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQxYTg3Y2IxMWI4YjQ0YmY4MjMzZjZlZWExZDllMTFlID0gJCgnPGRpdiBpZD0iaHRtbF80MWE4N2NiMTFiOGI0NGJmODIzM2Y2ZWVhMWQ5ZTExZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkVISUNMRSBUSEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmU5MGE0NDkwNDZkNDgyZDllYjYyODc2ZDU1MDQ4NTkuc2V0Q29udGVudChodG1sXzQxYTg3Y2IxMWI4YjQ0YmY4MjMzZjZlZWExZDllMTFlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmZhZWU4M2E3NjBmNDI5ZThhYzIwMDkzYzdjMmEzYTMuYmluZFBvcHVwKHBvcHVwXzJlOTBhNDQ5MDQ2ZDQ4MmQ5ZWI2Mjg3NmQ1NTA0ODU5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzY5ZTAyODRhNTVmOTRmNjViODU3YjQ1ZjljZmNmZjA5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfM2RmNWVlM2I1YjRhNGU1Nzg1YTA3OGE0ZDU4YjIwZDUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDgyYTM1OWIxMTdiNDEzNmE2NzVhYzM0MTFkODFhYmMgPSAkKCc8ZGl2IGlkPSJodG1sXzQ4MmEzNTliMTE3YjQxMzZhNjc1YWMzNDExZDgxYWJjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zZGY1ZWUzYjViNGE0ZTU3ODVhMDc4YTRkNThiMjBkNS5zZXRDb250ZW50KGh0bWxfNDgyYTM1OWIxMTdiNDEzNmE2NzVhYzM0MTFkODFhYmMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82OWUwMjg0YTU1Zjk0ZjY1Yjg1N2I0NWY5Y2ZjZmYwOS5iaW5kUG9wdXAocG9wdXBfM2RmNWVlM2I1YjRhNGU1Nzg1YTA3OGE0ZDU4YjIwZDUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGQzMmJhYTI5MjIyNDkxZWJkOTI5ZWQ4MjlhYTgxODQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDM1NTUwNTQyMjY1LC0xMjIuNDIxMTI4MDI5NTA1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wMzRjYzlmNzI4Y2U0ZjQxYjYxY2M1MTg4ZTMxNDVjYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ZDU2ZjRhYzVmNmY0ZTk1YWQzODYzMzgwYTJiODVmYyA9ICQoJzxkaXYgaWQ9Imh0bWxfNWQ1NmY0YWM1ZjZmNGU5NWFkMzg2MzM4MGEyYjg1ZmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzAzNGNjOWY3MjhjZTRmNDFiNjFjYzUxODhlMzE0NWNiLnNldENvbnRlbnQoaHRtbF81ZDU2ZjRhYzVmNmY0ZTk1YWQzODYzMzgwYTJiODVmYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzRkMzJiYWEyOTIyMjQ5MWViZDkyOWVkODI5YWE4MTg0LmJpbmRQb3B1cChwb3B1cF8wMzRjYzlmNzI4Y2U0ZjQxYjYxY2M1MTg4ZTMxNDVjYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lYjM2NzliNzhmNGY0NzIyYmE2ZDI0MzRmNGRkMjIwYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NjU2NDc2MDc2ODUsLTEyMi40MDcyNDQwODcwMzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzk5OWNiYzc3YTE2YzRmMTdhOGM2ZThhMDNiOTg2M2JlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I3MzNmMDNkOGMzOTRiY2NhNWEwMWU2MzkyYWM5ZWE4ID0gJCgnPGRpdiBpZD0iaHRtbF9iNzMzZjAzZDhjMzk0YmNjYTVhMDFlNjM5MmFjOWVhOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTk5Y2JjNzdhMTZjNGYxN2E4YzZlOGEwM2I5ODYzYmUuc2V0Q29udGVudChodG1sX2I3MzNmMDNkOGMzOTRiY2NhNWEwMWU2MzkyYWM5ZWE4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZWIzNjc5Yjc4ZjRmNDcyMmJhNmQyNDM0ZjRkZDIyMGMuYmluZFBvcHVwKHBvcHVwXzk5OWNiYzc3YTE2YzRmMTdhOGM2ZThhMDNiOTg2M2JlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzkxZjZkODNiNDI3YTQ0NmY4NDc3Nzk1MGVhZjE5ZGM3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85OTc0NzZiNWVlMzk0NDNhOTQxMTQwZDI5OTliZDkxNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jMmE2MGM4YTAyNzQ0ZWE1ODQ1MTQxMDZiNzFmOTAzOCA9ICQoJzxkaXYgaWQ9Imh0bWxfYzJhNjBjOGEwMjc0NGVhNTg0NTE0MTA2YjcxZjkwMzgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85OTc0NzZiNWVlMzk0NDNhOTQxMTQwZDI5OTliZDkxNS5zZXRDb250ZW50KGh0bWxfYzJhNjBjOGEwMjc0NGVhNTg0NTE0MTA2YjcxZjkwMzgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85MWY2ZDgzYjQyN2E0NDZmODQ3Nzc5NTBlYWYxOWRjNy5iaW5kUG9wdXAocG9wdXBfOTk3NDc2YjVlZTM5NDQzYTk0MTE0MGQyOTk5YmQ5MTUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTEzMmU1MDU1NTFhNGIzOGExMDRmZGRiYWI2ZTBlM2IgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRlMmU0YzBjZWU4ZTQzMmE4ODk4MDVkNTQzYjJmMWE5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2VhMGZhODFiM2NjYzQ3NzM5ODFiNjhlNWMwNTQ0ZWFmID0gJCgnPGRpdiBpZD0iaHRtbF9lYTBmYTgxYjNjY2M0NzczOTgxYjY4ZTVjMDU0NGVhZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRlMmU0YzBjZWU4ZTQzMmE4ODk4MDVkNTQzYjJmMWE5LnNldENvbnRlbnQoaHRtbF9lYTBmYTgxYjNjY2M0NzczOTgxYjY4ZTVjMDU0NGVhZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2UxMzJlNTA1NTUxYTRiMzhhMTA0ZmRkYmFiNmUwZTNiLmJpbmRQb3B1cChwb3B1cF80ZTJlNGMwY2VlOGU0MzJhODg5ODA1ZDU0M2IyZjFhOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zZjQ4NDhlMjdmOGI0NzEzYTg2NGQ4ZjU1N2UyYjE3ZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzcwMWUyOGJlMjM4NDczZGEyMTViOGUzNjEzNzIzMTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2I3ZDYyODVjNTYxNGNlODhhNmEwZTVmYTFhNzg3MzggPSAkKCc8ZGl2IGlkPSJodG1sX2NiN2Q2Mjg1YzU2MTRjZTg4YTZhMGU1ZmExYTc4NzM4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc3MDFlMjhiZTIzODQ3M2RhMjE1YjhlMzYxMzcyMzE2LnNldENvbnRlbnQoaHRtbF9jYjdkNjI4NWM1NjE0Y2U4OGE2YTBlNWZhMWE3ODczOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzNmNDg0OGUyN2Y4YjQ3MTNhODY0ZDhmNTU3ZTJiMTdmLmJpbmRQb3B1cChwb3B1cF83NzAxZTI4YmUyMzg0NzNkYTIxNWI4ZTM2MTM3MjMxNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83NDI1NjI3NmVmNjA0MTUyYWRjNTJiNzRkZjhmNDJkMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQ2OTI4MjAwNDEsLTEyMi40MTU3NTcwMzkxOTZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzYyMjlmNzI4YzM2NzQ4OTlhNTdkZTlhYmFiMjI5ZjY0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgyZTVkMGU3ZDE4ZDQxNGJhMjI1ZTk3MDAwMGU2MzdlID0gJCgnPGRpdiBpZD0iaHRtbF84MmU1ZDBlN2QxOGQ0MTRiYTIyNWU5NzAwMDBlNjM3ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82MjI5ZjcyOGMzNjc0ODk5YTU3ZGU5YWJhYjIyOWY2NC5zZXRDb250ZW50KGh0bWxfODJlNWQwZTdkMThkNDE0YmEyMjVlOTcwMDAwZTYzN2UpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83NDI1NjI3NmVmNjA0MTUyYWRjNTJiNzRkZjhmNDJkMy5iaW5kUG9wdXAocG9wdXBfNjIyOWY3MjhjMzY3NDg5OWE1N2RlOWFiYWIyMjlmNjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjI1NzBkYTM1YWY5NDdhNmFkNjg5NjQxOWVhNzc1YWMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjg1MjgwNjI3NDY1LC0xMjIuNDc1NjQ3NDYwNzg1OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZjY2RhNDk3Zjg0OTQ1NTI4Zjg2OTVkYzFhNTYyZTY4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgwMGU0NGY2YTUxYzRjMjU4ZTExMTBhZDNhYmRiNmY1ID0gJCgnPGRpdiBpZD0iaHRtbF84MDBlNDRmNmE1MWM0YzI1OGUxMTEwYWQzYWJkYjZmNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Uk9CQkVSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmNjZGE0OTdmODQ5NDU1MjhmODY5NWRjMWE1NjJlNjguc2V0Q29udGVudChodG1sXzgwMGU0NGY2YTUxYzRjMjU4ZTExMTBhZDNhYmRiNmY1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYjI1NzBkYTM1YWY5NDdhNmFkNjg5NjQxOWVhNzc1YWMuYmluZFBvcHVwKHBvcHVwXzZjY2RhNDk3Zjg0OTQ1NTI4Zjg2OTVkYzFhNTYyZTY4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2YxMGRmMzMxOTU3NzQwMzI4OTMzN2U5ZmUyZTljY2UzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQyODUxNzM3NDQ0ODk0LC0xMjIuNDIwOTY3NDQwNTY0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ZDM2ZGUzN2I1MzY0ZTQ0YjFkYzg1N2FmZDQ5ZjNjZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hNWE5ZDQ5ZWE4MzU0ZjdhYmVlYTk4NTNlNzY0NzUyOCA9ICQoJzxkaXYgaWQ9Imh0bWxfYTVhOWQ0OWVhODM1NGY3YWJlZWE5ODUzZTc2NDc1MjgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83ZDM2ZGUzN2I1MzY0ZTQ0YjFkYzg1N2FmZDQ5ZjNjZC5zZXRDb250ZW50KGh0bWxfYTVhOWQ0OWVhODM1NGY3YWJlZWE5ODUzZTc2NDc1MjgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mMTBkZjMzMTk1Nzc0MDMyODkzMzdlOWZlMmU5Y2NlMy5iaW5kUG9wdXAocG9wdXBfN2QzNmRlMzdiNTM2NGU0NGIxZGM4NTdhZmQ0OWYzY2QpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfN2IxNGQyNTAyOTBjNDAwYmE3ODBjOTkwNDJkNjhhY2EgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIxMTk4NDg4OTMxLC0xMjIuNDE1NjY5NjYxNDQzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wNDVmYWFhOWZiNmQ0Mzk1OWViYTFjNWM2NDJlMDdlZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lODQyZjY0YTYzNmI0MTQxYmQ5MGIxMmYyMjA0MzExMSA9ICQoJzxkaXYgaWQ9Imh0bWxfZTg0MmY2NGE2MzZiNDE0MWJkOTBiMTJmMjIwNDMxMTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDQ1ZmFhYTlmYjZkNDM5NTllYmExYzVjNjQyZTA3ZWQuc2V0Q29udGVudChodG1sX2U4NDJmNjRhNjM2YjQxNDFiZDkwYjEyZjIyMDQzMTExKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfN2IxNGQyNTAyOTBjNDAwYmE3ODBjOTkwNDJkNjhhY2EuYmluZFBvcHVwKHBvcHVwXzA0NWZhYWE5ZmI2ZDQzOTU5ZWJhMWM1YzY0MmUwN2VkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzBhMzAxMjU3ZmJkODRhY2JhMzdjYTkwOWU0OWU2MWE1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc5MTY3NDIxODk2MywtMTIyLjQwNjM0NjQyNTYzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTkyNTkyN2EwYmQ0NGZkZmIzYmI4NjFjOTI0ZjczY2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDg1ZWQxYjI4MzRhNGM0ZDljOTkzOTk4MTMyYTczNWUgPSAkKCc8ZGl2IGlkPSJodG1sXzA4NWVkMWIyODM0YTRjNGQ5Yzk5Mzk5ODEzMmE3MzVlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85OTI1OTI3YTBiZDQ0ZmRmYjNiYjg2MWM5MjRmNzNjYy5zZXRDb250ZW50KGh0bWxfMDg1ZWQxYjI4MzRhNGM0ZDljOTkzOTk4MTMyYTczNWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wYTMwMTI1N2ZiZDg0YWNiYTM3Y2E5MDllNDllNjFhNS5iaW5kUG9wdXAocG9wdXBfOTkyNTkyN2EwYmQ0NGZkZmIzYmI4NjFjOTI0ZjczY2MpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjM0OGZmZTk1ZDJiNDAyODgwMTAzN2NhYTM2YmI5ZDkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjU3MTg0Mzk1MjgyLC0xMjIuNDA5NTI5OTEzMjc4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yODEzMDNiYzVmY2Q0ZmViOGVkNzFiZjBlZjliNWNiMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hOWM3OWY2ZWVmOGU0NTZiODcyNDg3MGM1M2I2NDVkZCA9ICQoJzxkaXYgaWQ9Imh0bWxfYTljNzlmNmVlZjhlNDU2Yjg3MjQ4NzBjNTNiNjQ1ZGQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI4MTMwM2JjNWZjZDRmZWI4ZWQ3MWJmMGVmOWI1Y2IzLnNldENvbnRlbnQoaHRtbF9hOWM3OWY2ZWVmOGU0NTZiODcyNDg3MGM1M2I2NDVkZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2IzNDhmZmU5NWQyYjQwMjg4MDEwMzdjYWEzNmJiOWQ5LmJpbmRQb3B1cChwb3B1cF8yODEzMDNiYzVmY2Q0ZmViOGVkNzFiZjBlZjliNWNiMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kY2MzNzEzNGRiNzM0ZjFiYWQ3NmQ0Mzc2NzNiYzRiNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kN2VkOTJlMzVmMmI0NzQzYTdmY2NiYWRmZTk4YWU4MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yOTQzMWExYTVmZGI0MzFiYmJkOGYwNmYxNzkyY2E1ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfMjk0MzFhMWE1ZmRiNDMxYmJiZDhmMDZmMTc5MmNhNWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZDdlZDkyZTM1ZjJiNDc0M2E3ZmNjYmFkZmU5OGFlODIuc2V0Q29udGVudChodG1sXzI5NDMxYTFhNWZkYjQzMWJiYmQ4ZjA2ZjE3OTJjYTVlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZGNjMzcxMzRkYjczNGYxYmFkNzZkNDM3NjczYmM0YjQuYmluZFBvcHVwKHBvcHVwX2Q3ZWQ5MmUzNWYyYjQ3NDNhN2ZjY2JhZGZlOThhZTgyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2UyNzAzN2U2YWMwMTQwOTFhZjY1ODBkZTFmMDEyOTU0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ODM3MDQyYjRhZDc0MDdlOTE2MGU2YjkxYjM1YWY3YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84N2M5N2M5OGZiNmI0OTYwYTlkMzQyZTRiMmQ5MTVjNSA9ICQoJzxkaXYgaWQ9Imh0bWxfODdjOTdjOThmYjZiNDk2MGE5ZDM0MmU0YjJkOTE1YzUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ODM3MDQyYjRhZDc0MDdlOTE2MGU2YjkxYjM1YWY3YS5zZXRDb250ZW50KGh0bWxfODdjOTdjOThmYjZiNDk2MGE5ZDM0MmU0YjJkOTE1YzUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lMjcwMzdlNmFjMDE0MDkxYWY2NTgwZGUxZjAxMjk1NC5iaW5kUG9wdXAocG9wdXBfNDgzNzA0MmI0YWQ3NDA3ZTkxNjBlNmI5MWIzNWFmN2EpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTdiMDgxOThmN2M0NGRhYjg1Mjk5MmRmOTc4ZDJhOTYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc5ZDcxNjAyNTg1MzQ0NjE4NTdmZDRmMTYyYmNiNzU3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzczNGY0MTU3N2I0MzQzNjM5OTc3MjYyYWE2ZWFjZjg1ID0gJCgnPGRpdiBpZD0iaHRtbF83MzRmNDE1NzdiNDM0MzYzOTk3NzI2MmFhNmVhY2Y4NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc5ZDcxNjAyNTg1MzQ0NjE4NTdmZDRmMTYyYmNiNzU3LnNldENvbnRlbnQoaHRtbF83MzRmNDE1NzdiNDM0MzYzOTk3NzI2MmFhNmVhY2Y4NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2U3YjA4MTk4ZjdjNDRkYWI4NTI5OTJkZjk3OGQyYTk2LmJpbmRQb3B1cChwb3B1cF83OWQ3MTYwMjU4NTM0NDYxODU3ZmQ0ZjE2MmJjYjc1Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80ZjkwZTNkYTllZWM0ZjIxODBjYmExZjE3NzBmZTRlZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JlNjUxYmZkZTdhYzQ3ZjE5NmY0ZGE5Y2Q1ZDVjM2JmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzkwODc0ZGQyYzM3ZjQyMzFiNTI1YmViNTU3OWQwNjU5ID0gJCgnPGRpdiBpZD0iaHRtbF85MDg3NGRkMmMzN2Y0MjMxYjUyNWJlYjU1NzlkMDY1OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JlNjUxYmZkZTdhYzQ3ZjE5NmY0ZGE5Y2Q1ZDVjM2JmLnNldENvbnRlbnQoaHRtbF85MDg3NGRkMmMzN2Y0MjMxYjUyNWJlYjU1NzlkMDY1OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzRmOTBlM2RhOWVlYzRmMjE4MGNiYTFmMTc3MGZlNGVlLmJpbmRQb3B1cChwb3B1cF9iZTY1MWJmZGU3YWM0N2YxOTZmNGRhOWNkNWQ1YzNiZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80NTQ4OWQzMmY4MTI0OThmYTZiNTFkYmViOGFjMWU5ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ3MTY1NGNjYmQ1YjRjZmE5MDIxNTc2MDZjZTg1MDJiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzc1NTJhNDY4NjRjMzQ4NWU4NDAyODVmOGZmOTUwZDc1ID0gJCgnPGRpdiBpZD0iaHRtbF83NTUyYTQ2ODY0YzM0ODVlODQwMjg1ZjhmZjk1MGQ3NSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVRy9OQVJDT1RJQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDcxNjU0Y2NiZDViNGNmYTkwMjE1NzYwNmNlODUwMmIuc2V0Q29udGVudChodG1sXzc1NTJhNDY4NjRjMzQ4NWU4NDAyODVmOGZmOTUwZDc1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDU0ODlkMzJmODEyNDk4ZmE2YjUxZGJlYjhhYzFlOWUuYmluZFBvcHVwKHBvcHVwXzQ3MTY1NGNjYmQ1YjRjZmE5MDIxNTc2MDZjZTg1MDJiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzAwZjc4OGZiM2ExODQ0Mjc5OTczMzYzOGE4MmRmOThjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODY2NjFmMzdjYzg4NGVmYTgzNzdmYWRjOWZjMTc3ZTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWQxN2Y0MTkwMzg5NDA4MGEyNTRhOWIwNDExZWU0YWQgPSAkKCc8ZGl2IGlkPSJodG1sX2VkMTdmNDE5MDM4OTQwODBhMjU0YTliMDQxMWVlNGFkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODY2NjFmMzdjYzg4NGVmYTgzNzdmYWRjOWZjMTc3ZTYuc2V0Q29udGVudChodG1sX2VkMTdmNDE5MDM4OTQwODBhMjU0YTliMDQxMWVlNGFkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMDBmNzg4ZmIzYTE4NDQyNzk5NzMzNjM4YTgyZGY5OGMuYmluZFBvcHVwKHBvcHVwXzg2NjYxZjM3Y2M4ODRlZmE4Mzc3ZmFkYzlmYzE3N2U2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzU5MWEyNWFmMTQ2ZTQ0MGQ4MTE3MWJhZmY1MmM5N2JkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzkyNmYzYjNiZmVhNDlkMTg0ODRmNmI3Mzk1NjJkZjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjc2MjJiZDQ1MDI3NGM5YTg3MzBkNDZjNzFmM2EyN2QgPSAkKCc8ZGl2IGlkPSJodG1sX2Y3NjIyYmQ0NTAyNzRjOWE4NzMwZDQ2YzcxZjNhMjdkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzkyNmYzYjNiZmVhNDlkMTg0ODRmNmI3Mzk1NjJkZjYuc2V0Q29udGVudChodG1sX2Y3NjIyYmQ0NTAyNzRjOWE4NzMwZDQ2YzcxZjNhMjdkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNTkxYTI1YWYxNDZlNDQwZDgxMTcxYmFmZjUyYzk3YmQuYmluZFBvcHVwKHBvcHVwXzc5MjZmM2IzYmZlYTQ5ZDE4NDg0ZjZiNzM5NTYyZGY2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzExMjc2OTFhOWY0MDQxYmE4NDBjMmUxYjBhZjI2Y2U4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80NzY4NDEyMTQwNTk0MjZmYjg0YThhY2MxMmE0MDZiNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mZTVlNDJkNmU1Mzk0ZTc5ODgzYjU2ZTExMjcwNTcyZCA9ICQoJzxkaXYgaWQ9Imh0bWxfZmU1ZTQyZDZlNTM5NGU3OTg4M2I1NmUxMTI3MDU3MmQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ3Njg0MTIxNDA1OTQyNmZiODRhOGFjYzEyYTQwNmI1LnNldENvbnRlbnQoaHRtbF9mZTVlNDJkNmU1Mzk0ZTc5ODgzYjU2ZTExMjcwNTcyZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzExMjc2OTFhOWY0MDQxYmE4NDBjMmUxYjBhZjI2Y2U4LmJpbmRQb3B1cChwb3B1cF80NzY4NDEyMTQwNTk0MjZmYjg0YThhY2MxMmE0MDZiNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wYTUzMTUzZTg4MDM0NzdhYmE0MWEyZmFlOGM1MWJjNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjJjYjY0NjEwOWE5NGQ3YTgxYWRkYmRjOTkyMTk5ZTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2UyMDM3MGQ5ODhhNDlhZjlkZTQwZjQ3YzA3NDFjMDUgPSAkKCc8ZGl2IGlkPSJodG1sXzNlMjAzNzBkOTg4YTQ5YWY5ZGU0MGY0N2MwNzQxYzA1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjJjYjY0NjEwOWE5NGQ3YTgxYWRkYmRjOTkyMTk5ZTguc2V0Q29udGVudChodG1sXzNlMjAzNzBkOTg4YTQ5YWY5ZGU0MGY0N2MwNzQxYzA1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMGE1MzE1M2U4ODAzNDc3YWJhNDFhMmZhZThjNTFiYzYuYmluZFBvcHVwKHBvcHVwX2IyY2I2NDYxMDlhOTRkN2E4MWFkZGJkYzk5MjE5OWU4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzgzNzA0NWJkYjliYjQ4N2Y4MTQ0ZTQ2MmVkMjUzNTNkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3NTExODg5NTY5NSwtMTIyLjQxODA0NTQ1Mjc2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmVlYjQ4MGIxNjYzNDY2NTliMDdjMGMzZjdjNTE1ODQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzAwNTM3NzA4MGIwNDIwYzkzOWVlZjQ3NDkwNjExMzQgPSAkKCc8ZGl2IGlkPSJodG1sXzcwMDUzNzcwODBiMDQyMGM5MzllZWY0NzQ5MDYxMTM0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iZWViNDgwYjE2NjM0NjY1OWIwN2MwYzNmN2M1MTU4NC5zZXRDb250ZW50KGh0bWxfNzAwNTM3NzA4MGIwNDIwYzkzOWVlZjQ3NDkwNjExMzQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84MzcwNDViZGI5YmI0ODdmODE0NGU0NjJlZDI1MzUzZC5iaW5kUG9wdXAocG9wdXBfYmVlYjQ4MGIxNjYzNDY2NTliMDdjMGMzZjdjNTE1ODQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmNkZTUyMTg3YzlmNGQ4MjlkMWU3MjRiMjYwNjQ4NjIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIwMjM4NDc4OTc1LC0xMjIuNDAxMTYxNTU1NjAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jMmMzYTJhMjc3NjA0Y2YzODY0YzlkYjFlYmI1ZDU1ZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mZTFiZmYwNDQ1YWQ0ZmY3YjAzNGNlNTE3OTVkMTZlMSA9ICQoJzxkaXYgaWQ9Imh0bWxfZmUxYmZmMDQ0NWFkNGZmN2IwMzRjZTUxNzk1ZDE2ZTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jMmMzYTJhMjc3NjA0Y2YzODY0YzlkYjFlYmI1ZDU1Zi5zZXRDb250ZW50KGh0bWxfZmUxYmZmMDQ0NWFkNGZmN2IwMzRjZTUxNzk1ZDE2ZTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iY2RlNTIxODdjOWY0ZDgyOWQxZTcyNGIyNjA2NDg2Mi5iaW5kUG9wdXAocG9wdXBfYzJjM2EyYTI3NzYwNGNmMzg2NGM5ZGIxZWJiNWQ1NWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjY3MzVkMjk5MTE1NDJiNDliMzdhNjY2OTliOWNkNDkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjcwMDUzMTk2Mjk5OTUsLTEyMi40MDM0MDg2NjkxOTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM0NGZkNWJiNDRjZDQ1NTM5MDkwOGUyODY0YTg4ODBkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ZlNmQwY2M3NjAxYjRlMDc4NzdmM2QzYzZhNjY4NWY0ID0gJCgnPGRpdiBpZD0iaHRtbF9mZTZkMGNjNzYwMWI0ZTA3ODc3ZjNkM2M2YTY2ODVmNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM0NGZkNWJiNDRjZDQ1NTM5MDkwOGUyODY0YTg4ODBkLnNldENvbnRlbnQoaHRtbF9mZTZkMGNjNzYwMWI0ZTA3ODc3ZjNkM2M2YTY2ODVmNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Y2NzM1ZDI5OTExNTQyYjQ5YjM3YTY2Njk5YjljZDQ5LmJpbmRQb3B1cChwb3B1cF8zNDRmZDViYjQ0Y2Q0NTUzOTA5MDhlMjg2NGE4ODgwZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mNWVkNjY4NzE3MjA0YzY4ODRkMjRlM2I2YThhM2U2YyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNDQzNzQxNDEsLTEyMi40MTI5MzA1MjIwNTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FhMjE5NjcxZWZkYjRlNzU4ODQwMDU0YmUyYTZjMDVhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFkNWRjZTAxMTMyNjRmZDRiMDExZmU5NmUzMmZiOWFlID0gJCgnPGRpdiBpZD0iaHRtbF8xZDVkY2UwMTEzMjY0ZmQ0YjAxMWZlOTZlMzJmYjlhZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hYTIxOTY3MWVmZGI0ZTc1ODg0MDA1NGJlMmE2YzA1YS5zZXRDb250ZW50KGh0bWxfMWQ1ZGNlMDExMzI2NGZkNGIwMTFmZTk2ZTMyZmI5YWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mNWVkNjY4NzE3MjA0YzY4ODRkMjRlM2I2YThhM2U2Yy5iaW5kUG9wdXAocG9wdXBfYWEyMTk2NzFlZmRiNGU3NTg4NDAwNTRiZTJhNmMwNWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNWIwZTQ4MGE0YTViNDEzMTk4NzQwYzA0YjkyMjE2NDggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTMwMTg2NTM3NDQ2MDQsLTEyMi40MTg1ODcxNzIyMTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg1ZmQ2ODVlZjY0YjQwNGVhOGZlZTAxY2E2ZDI1ODY5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA4YTI3YWY0N2VlODQ4NzQ5MTdhYmFlNTA3OWZkNmFiID0gJCgnPGRpdiBpZD0iaHRtbF8wOGEyN2FmNDdlZTg0ODc0OTE3YWJhZTUwNzlmZDZhYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NWZkNjg1ZWY2NGI0MDRlYThmZWUwMWNhNmQyNTg2OS5zZXRDb250ZW50KGh0bWxfMDhhMjdhZjQ3ZWU4NDg3NDkxN2FiYWU1MDc5ZmQ2YWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81YjBlNDgwYTRhNWI0MTMxOTg3NDBjMDRiOTIyMTY0OC5iaW5kUG9wdXAocG9wdXBfODVmZDY4NWVmNjRiNDA0ZWE4ZmVlMDFjYTZkMjU4NjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDE1ZGQwZDZjMDc3NGFiNTkzYTk0ZjFkY2ZjMTg1YTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hOTUzZWNlNDBkNDM0YTQyYTNhNzk5MDIxYjY1ZGE1NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lM2RmZWU5MDY0ZTk0MmRmOGMxOTFmY2ZlMjg4MWJhMyA9ICQoJzxkaXYgaWQ9Imh0bWxfZTNkZmVlOTA2NGU5NDJkZjhjMTkxZmNmZTI4ODFiYTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZSQVVEPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hOTUzZWNlNDBkNDM0YTQyYTNhNzk5MDIxYjY1ZGE1Ni5zZXRDb250ZW50KGh0bWxfZTNkZmVlOTA2NGU5NDJkZjhjMTkxZmNmZTI4ODFiYTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80MTVkZDBkNmMwNzc0YWI1OTNhOTRmMWRjZmMxODVhOS5iaW5kUG9wdXAocG9wdXBfYTk1M2VjZTQwZDQzNGE0MmEzYTc5OTAyMWI2NWRhNTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOWViMmZmYmUzMzExNDk0ZGEwNTQzOTE5ZjU2MWE0YjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDg1YzBlYmZlZDFjNDMwMGFiOTU3NTk2NTA2N2QyZWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjVlNTljNGNjMjIzNGU2YWI5ODRjMDIxNGRkMzYzMmUgPSAkKCc8ZGl2IGlkPSJodG1sXzI1ZTU5YzRjYzIyMzRlNmFiOTg0YzAyMTRkZDM2MzJlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kODVjMGViZmVkMWM0MzAwYWI5NTc1OTY1MDY3ZDJlZS5zZXRDb250ZW50KGh0bWxfMjVlNTljNGNjMjIzNGU2YWI5ODRjMDIxNGRkMzYzMmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85ZWIyZmZiZTMzMTE0OTRkYTA1NDM5MTlmNTYxYTRiNi5iaW5kUG9wdXAocG9wdXBfZDg1YzBlYmZlZDFjNDMwMGFiOTU3NTk2NTA2N2QyZWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTg5OWI5NDY4Zjk2NGIyZGI3MWFmMTA2NzFlZjQ1MzIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODMwOTk4MjQ0NTkyMSwtMTIyLjQxOTE4MzA5NjM2Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTY0OTRhZjkyNTRlNDVhZmEyMTUxNmIzZTgxZDM3ZWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjkwODk4MWI5MWRhNDE5YTllZTg1NmQ1OTYyOWI1MTkgPSAkKCc8ZGl2IGlkPSJodG1sXzY5MDg5ODFiOTFkYTQxOWE5ZWU4NTZkNTk2MjliNTE5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTY0OTRhZjkyNTRlNDVhZmEyMTUxNmIzZTgxZDM3ZWQuc2V0Q29udGVudChodG1sXzY5MDg5ODFiOTFkYTQxOWE5ZWU4NTZkNTk2MjliNTE5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNTg5OWI5NDY4Zjk2NGIyZGI3MWFmMTA2NzFlZjQ1MzIuYmluZFBvcHVwKHBvcHVwX2U2NDk0YWY5MjU0ZTQ1YWZhMjE1MTZiM2U4MWQzN2VkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Y5NmNjZjkwYTRmNzRlNDhiMmJkOTQxYzg1MmMwYTM4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQwNzM2MDU0ODM1NzksLTEyMi4zODg3NTMwNDY5OTddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRjYmM3ZGExNGI3NDQwYmFhOTEzMjQ4YWNiZTQzMTFhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE5ZjA5OTQ3Yjg4MTQ5M2NhNDNjMzAwM2Q3NjhiM2Y5ID0gJCgnPGRpdiBpZD0iaHRtbF8xOWYwOTk0N2I4ODE0OTNjYTQzYzMwMDNkNzY4YjNmOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRjYmM3ZGExNGI3NDQwYmFhOTEzMjQ4YWNiZTQzMTFhLnNldENvbnRlbnQoaHRtbF8xOWYwOTk0N2I4ODE0OTNjYTQzYzMwMDNkNzY4YjNmOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Y5NmNjZjkwYTRmNzRlNDhiMmJkOTQxYzg1MmMwYTM4LmJpbmRQb3B1cChwb3B1cF80Y2JjN2RhMTRiNzQ0MGJhYTkxMzI0OGFjYmU0MzExYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zMjZmMDg1NWE3ZDQ0YmU4ODcwYzBlNjllZDc5YmIwYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDk5MTI5NDQzNjYsLTEyMi40Mzc3OTk3MDM0NjhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQyZDQyYjFkZWJlNjRkNzlhNGNmZDE1ZGNmNDY5MmIwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E4M2JiNjdlZjQzYTRhZTJhMGQzZGM5MzBlODEwNmRhID0gJCgnPGRpdiBpZD0iaHRtbF9hODNiYjY3ZWY0M2E0YWUyYTBkM2RjOTMwZTgxMDZkYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDJkNDJiMWRlYmU2NGQ3OWE0Y2ZkMTVkY2Y0NjkyYjAuc2V0Q29udGVudChodG1sX2E4M2JiNjdlZjQzYTRhZTJhMGQzZGM5MzBlODEwNmRhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMzI2ZjA4NTVhN2Q0NGJlODg3MGMwZTY5ZWQ3OWJiMGMuYmluZFBvcHVwKHBvcHVwXzQyZDQyYjFkZWJlNjRkNzlhNGNmZDE1ZGNmNDY5MmIwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzU3OWUzMjk4ZjNjODRkODY5MTk1YzBmOTM0MzRkZTg2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzZhYWNjMDcxOGEzNDMwZGFmODEzMTk0NDcyYzI4ZWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWFlMDQyYWMyOGIzNDA2ZDhhYTFmYzE1MzRmOTQ5ODAgPSAkKCc8ZGl2IGlkPSJodG1sXzlhZTA0MmFjMjhiMzQwNmQ4YWExZmMxNTM0Zjk0OTgwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzZhYWNjMDcxOGEzNDMwZGFmODEzMTk0NDcyYzI4ZWEuc2V0Q29udGVudChodG1sXzlhZTA0MmFjMjhiMzQwNmQ4YWExZmMxNTM0Zjk0OTgwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNTc5ZTMyOThmM2M4NGQ4NjkxOTVjMGY5MzQzNGRlODYuYmluZFBvcHVwKHBvcHVwXzc2YWFjYzA3MThhMzQzMGRhZjgxMzE5NDQ3MmMyOGVhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2VmNDJmNzA5OWM2MzQ5MjVhNDhlNDdmNTljODgwYTQ4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTYwMzc1ZTUwYjI2NDU3Njk1MjZhNDkyM2JlMDk5OTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTYxMzE4OTIxMmViNDI5YTg5MmQ1NjUxNTcxYTE5MDEgPSAkKCc8ZGl2IGlkPSJodG1sXzU2MTMxODkyMTJlYjQyOWE4OTJkNTY1MTU3MWExOTAxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTYwMzc1ZTUwYjI2NDU3Njk1MjZhNDkyM2JlMDk5OTAuc2V0Q29udGVudChodG1sXzU2MTMxODkyMTJlYjQyOWE4OTJkNTY1MTU3MWExOTAxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZWY0MmY3MDk5YzYzNDkyNWE0OGU0N2Y1OWM4ODBhNDguYmluZFBvcHVwKHBvcHVwXzU2MDM3NWU1MGIyNjQ1NzY5NTI2YTQ5MjNiZTA5OTkwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI4MzA3MTQ3Y2MxNTRkMDg5YjIxNzBlYjc5YmQ4YzY5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgyMjQ1ODIyMzkxNywtMTIyLjQ0NjYxMjk3ODgzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmNmOGM0OTRlZmNhNGI4M2I1NDU3MDM3ZDM5MzNhY2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTIwZjBkMjIyMGMzNDU1MDk5MDBhZTgwNjQ2NzJjMDggPSAkKCc8ZGl2IGlkPSJodG1sXzUyMGYwZDIyMjBjMzQ1NTA5OTAwYWU4MDY0NjcyYzA4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmNmOGM0OTRlZmNhNGI4M2I1NDU3MDM3ZDM5MzNhY2Uuc2V0Q29udGVudChodG1sXzUyMGYwZDIyMjBjMzQ1NTA5OTAwYWU4MDY0NjcyYzA4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjgzMDcxNDdjYzE1NGQwODliMjE3MGViNzliZDhjNjkuYmluZFBvcHVwKHBvcHVwX2JjZjhjNDk0ZWZjYTRiODNiNTQ1NzAzN2QzOTMzYWNlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzNiODMyMTNmZjk0ODQ3Mjk5NWQ4MjcyZTUzYzRjZTg0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwMDM3OTk5NTEyNzk1LC0xMjIuNDA0NTk0MTQwNjM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83OGU4ZGY0ZGI5MWY0ODI0YmQ3NGIxYTY2NjJjZjUyYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lNjZhZTdiMzM3Zjk0Yjk3YjYwYTQyY2FkNTllNzNmMiA9ICQoJzxkaXYgaWQ9Imh0bWxfZTY2YWU3YjMzN2Y5NGI5N2I2MGE0MmNhZDU5ZTczZjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzhlOGRmNGRiOTFmNDgyNGJkNzRiMWE2NjYyY2Y1MmMuc2V0Q29udGVudChodG1sX2U2NmFlN2IzMzdmOTRiOTdiNjBhNDJjYWQ1OWU3M2YyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfM2I4MzIxM2ZmOTQ4NDcyOTk1ZDgyNzJlNTNjNGNlODQuYmluZFBvcHVwKHBvcHVwXzc4ZThkZjRkYjkxZjQ4MjRiZDc0YjFhNjY2MmNmNTJjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2MwODcxNDFiOGQzMTRhM2E4OGNiNTIyZGE2NjJiY2Y3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzk1MzMzODI2NzQzNiwtMTIyLjM5NzM3Mzc0MDA2Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDE3NjE0NzkzYjgyNDUwMzgzNjE1MjBjODJjYmE0Y2EgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTgzZjc5OWFkMmRjNDdkODkwNzdkOGQ4NjYzOWJjMGYgPSAkKCc8ZGl2IGlkPSJodG1sXzk4M2Y3OTlhZDJkYzQ3ZDg5MDc3ZDhkODY2MzliYzBmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzAxNzYxNDc5M2I4MjQ1MDM4MzYxNTIwYzgyY2JhNGNhLnNldENvbnRlbnQoaHRtbF85ODNmNzk5YWQyZGM0N2Q4OTA3N2Q4ZDg2NjM5YmMwZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2MwODcxNDFiOGQzMTRhM2E4OGNiNTIyZGE2NjJiY2Y3LmJpbmRQb3B1cChwb3B1cF8wMTc2MTQ3OTNiODI0NTAzODM2MTUyMGM4MmNiYTRjYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84ZDMyODc1OTU4ZmI0YzliYTFiNGJhMzQxYzIyYjUxNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTc3NWQwZDQyZDY1NDM2NjlkNDA4MTU1YzExY2E5YTkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjU1NWQ5YTdhOTM4NDBiZGFkZWU0NGQwZmU1OTRiOGMgPSAkKCc8ZGl2IGlkPSJodG1sXzY1NTVkOWE3YTkzODQwYmRhZGVlNDRkMGZlNTk0YjhjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTc3NWQwZDQyZDY1NDM2NjlkNDA4MTU1YzExY2E5YTkuc2V0Q29udGVudChodG1sXzY1NTVkOWE3YTkzODQwYmRhZGVlNDRkMGZlNTk0YjhjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOGQzMjg3NTk1OGZiNGM5YmExYjRiYTM0MWMyMmI1MTUuYmluZFBvcHVwKHBvcHVwXzU3NzVkMGQ0MmQ2NTQzNjY5ZDQwODE1NWMxMWNhOWE5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzRmMmE1ZTA0ODU2YTQ3YTdiYmMyNTIwNzAyMWEzYTgwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTcxMGI0ZmY1YTdjNGI2MThmMWQ4ZWYwMGNiYzgyMjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTI1MWNhYzA4MjMxNDdkYmE5M2RhNjA0NjUyMjFkNzUgPSAkKCc8ZGl2IGlkPSJodG1sXzkyNTFjYWMwODIzMTQ3ZGJhOTNkYTYwNDY1MjIxZDc1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QUk9TVElUVVRJT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2E3MTBiNGZmNWE3YzRiNjE4ZjFkOGVmMDBjYmM4MjIyLnNldENvbnRlbnQoaHRtbF85MjUxY2FjMDgyMzE0N2RiYTkzZGE2MDQ2NTIyMWQ3NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzRmMmE1ZTA0ODU2YTQ3YTdiYmMyNTIwNzAyMWEzYTgwLmJpbmRQb3B1cChwb3B1cF9hNzEwYjRmZjVhN2M0YjYxOGYxZDhlZjAwY2JjODIyMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wNjExZjRlZGQxOTk0NDkxODhjOGNmYjU4NTkxNGFkMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM0MTAxNmU2NzljZTQ2MDBhM2VkM2ExMWE2MTFmNGJkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JmZjU0OWQ4ZGJhYjRkNGI4OGY2YWEyZDA0NWQ4MzFiID0gJCgnPGRpdiBpZD0iaHRtbF9iZmY1NDlkOGRiYWI0ZDRiODhmNmFhMmQwNDVkODMxYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM0MTAxNmU2NzljZTQ2MDBhM2VkM2ExMWE2MTFmNGJkLnNldENvbnRlbnQoaHRtbF9iZmY1NDlkOGRiYWI0ZDRiODhmNmFhMmQwNDVkODMxYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzA2MTFmNGVkZDE5OTQ0OTE4OGM4Y2ZiNTg1OTE0YWQxLmJpbmRQb3B1cChwb3B1cF8zNDEwMTZlNjc5Y2U0NjAwYTNlZDNhMTFhNjExZjRiZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iMjQzYmFkYzAxMTg0NzIzYmM5ZGM0NDNmYzNkMjg5ZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3MzI5MTgwNjkwMjk5NiwtMTIyLjQzNjYxNDE4MTMzMTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yZTg0MWM1NGRkMWE0OGZjOTc4MjAwZjFiOGE4NDA3YiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MTYxYmJjOGVkYWQ0OGE2OThlN2UyYzc5NzdiOWY2ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfNjE2MWJiYzhlZGFkNDhhNjk4ZTdlMmM3OTc3YjlmNmQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmU4NDFjNTRkZDFhNDhmYzk3ODIwMGYxYjhhODQwN2Iuc2V0Q29udGVudChodG1sXzYxNjFiYmM4ZWRhZDQ4YTY5OGU3ZTJjNzk3N2I5ZjZkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYjI0M2JhZGMwMTE4NDcyM2JjOWRjNDQzZmMzZDI4OWQuYmluZFBvcHVwKHBvcHVwXzJlODQxYzU0ZGQxYTQ4ZmM5NzgyMDBmMWI4YTg0MDdiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzdhMThlYjJiOWQ1YTQ4NmY5ZDMwOGY5ODViODg4NTVkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzUzZWY5ZGY0OTI3YjQ0ZjFiZjk4OGQ3MGViNWMwZjZlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUyZTU4NjJhYTViYTQ2MzQ5YjhhMGJkMGRjNzU5M2Q0ID0gJCgnPGRpdiBpZD0iaHRtbF81MmU1ODYyYWE1YmE0NjM0OWI4YTBiZDBkYzc1OTNkNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVRy9OQVJDT1RJQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTNlZjlkZjQ5MjdiNDRmMWJmOTg4ZDcwZWI1YzBmNmUuc2V0Q29udGVudChodG1sXzUyZTU4NjJhYTViYTQ2MzQ5YjhhMGJkMGRjNzU5M2Q0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfN2ExOGViMmI5ZDVhNDg2ZjlkMzA4Zjk4NWI4ODg1NWQuYmluZFBvcHVwKHBvcHVwXzUzZWY5ZGY0OTI3YjQ0ZjFiZjk4OGQ3MGViNWMwZjZlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2QyNzFiMzhjODlhYTRjZTRiYmNiMDJmZTI3ZjUwMWM4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M3Y2ZiYjVmZTVhODQ4MThiMDU5MDBjNzQwNjA0YmQyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Y3NzJhMzQ1NjdmYjRiNDhhMDdjMTcxZGY1Y2UwN2RhID0gJCgnPGRpdiBpZD0iaHRtbF9mNzcyYTM0NTY3ZmI0YjQ4YTA3YzE3MWRmNWNlMDdkYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M3Y2ZiYjVmZTVhODQ4MThiMDU5MDBjNzQwNjA0YmQyLnNldENvbnRlbnQoaHRtbF9mNzcyYTM0NTY3ZmI0YjQ4YTA3YzE3MWRmNWNlMDdkYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2QyNzFiMzhjODlhYTRjZTRiYmNiMDJmZTI3ZjUwMWM4LmJpbmRQb3B1cChwb3B1cF9jN2NmYmI1ZmU1YTg0ODE4YjA1OTAwYzc0MDYwNGJkMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jNzk2N2U1MTEyZjM0ZTNjOGUwZTM4ZmIxMDZmODg0NSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyODQxODA3MDY2MDIwNCwtMTIyLjQ1MDAwMDc5MDQ0NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2NiM2JkNTBjZmVmNDVmZWJlYjUzMWEwMjU5YzBlN2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTg0YjJiYTY2MmU0NDcyZGE3YWQwZWViM2ZkNGIzNWUgPSAkKCc8ZGl2IGlkPSJodG1sXzk4NGIyYmE2NjJlNDQ3MmRhN2FkMGVlYjNmZDRiMzVlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83Y2IzYmQ1MGNmZWY0NWZlYmViNTMxYTAyNTljMGU3ZS5zZXRDb250ZW50KGh0bWxfOTg0YjJiYTY2MmU0NDcyZGE3YWQwZWViM2ZkNGIzNWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jNzk2N2U1MTEyZjM0ZTNjOGUwZTM4ZmIxMDZmODg0NS5iaW5kUG9wdXAocG9wdXBfN2NiM2JkNTBjZmVmNDVmZWJlYjUzMWEwMjU5YzBlN2UpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODg4ZGUwODk1OTNkNDE2M2JhOTRhYTgwZmM2ZTc3YWEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lZDZlN2Y2NzAzNzc0N2JlYTdjYzA1ZDFkMTIxZjNmYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ZDAxMTJmN2RiYTQ0ZTEzOTZmOTBkNzcxNTYzOGY0MyA9ICQoJzxkaXYgaWQ9Imh0bWxfOWQwMTEyZjdkYmE0NGUxMzk2ZjkwZDc3MTU2MzhmNDMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lZDZlN2Y2NzAzNzc0N2JlYTdjYzA1ZDFkMTIxZjNmYy5zZXRDb250ZW50KGh0bWxfOWQwMTEyZjdkYmE0NGUxMzk2ZjkwZDc3MTU2MzhmNDMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84ODhkZTA4OTU5M2Q0MTYzYmE5NGFhODBmYzZlNzdhYS5iaW5kUG9wdXAocG9wdXBfZWQ2ZTdmNjcwMzc3NDdiZWE3Y2MwNWQxZDEyMWYzZmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDY2Yjc2ODcxOGI5NDE3M2JmMDZiMTc5ZDAzZDYzZDcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU4NWI0MzJlYTg3ZTQ3MzI4ZTNlODA4MTk0OWIzMDgxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgwZDVlMWI5OGIwMzQ4MTVhOTRkOTYyMmQ2MzcxMTQ5ID0gJCgnPGRpdiBpZD0iaHRtbF84MGQ1ZTFiOThiMDM0ODE1YTk0ZDk2MjJkNjM3MTE0OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTg1YjQzMmVhODdlNDczMjhlM2U4MDgxOTQ5YjMwODEuc2V0Q29udGVudChodG1sXzgwZDVlMWI5OGIwMzQ4MTVhOTRkOTYyMmQ2MzcxMTQ5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDY2Yjc2ODcxOGI5NDE3M2JmMDZiMTc5ZDAzZDYzZDcuYmluZFBvcHVwKHBvcHVwXzU4NWI0MzJlYTg3ZTQ3MzI4ZTNlODA4MTk0OWIzMDgxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzE0OGU1NGYwYmUwMDQ1NTFhOGZmN2UxYTI1OTU0NmY4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YzOWMwZmI2ZjkwODQ2NDFiM2RkYzM4MTUxYTliOGI1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q4MWE5MDNjNDQ1MTQyMmZhNWU5NzA5YzI2NzFlNDU4ID0gJCgnPGRpdiBpZD0iaHRtbF9kODFhOTAzYzQ0NTE0MjJmYTVlOTcwOWMyNjcxZTQ1OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mMzljMGZiNmY5MDg0NjQxYjNkZGMzODE1MWE5YjhiNS5zZXRDb250ZW50KGh0bWxfZDgxYTkwM2M0NDUxNDIyZmE1ZTk3MDljMjY3MWU0NTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xNDhlNTRmMGJlMDA0NTUxYThmZjdlMWEyNTk1NDZmOC5iaW5kUG9wdXAocG9wdXBfZjM5YzBmYjZmOTA4NDY0MWIzZGRjMzgxNTFhOWI4YjUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTNhYjI1ODNiMzU4NDVlNjkwZmU1NDNhZDJhNzIzOGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTcxNjEyNzA2ZTM3NGQwNjk4YzE2YzY4YTg4YmZiOTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmY0ZTJhOTk5YjNkNGU0NTk0MThmYTU3NTZkYmJhZTMgPSAkKCc8ZGl2IGlkPSJodG1sX2JmNGUyYTk5OWIzZDRlNDU5NDE4ZmE1NzU2ZGJiYWUzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVVNQSUNJT1VTIE9DQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTcxNjEyNzA2ZTM3NGQwNjk4YzE2YzY4YTg4YmZiOTAuc2V0Q29udGVudChodG1sX2JmNGUyYTk5OWIzZDRlNDU5NDE4ZmE1NzU2ZGJiYWUzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTNhYjI1ODNiMzU4NDVlNjkwZmU1NDNhZDJhNzIzOGYuYmluZFBvcHVwKHBvcHVwX2U3MTYxMjcwNmUzNzRkMDY5OGMxNmM2OGE4OGJmYjkwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Y4ZTc1MjU3MTNlNDQ3MjZhYmI2YzYwYjQ1NDc2NGM0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FlN2ZkNTA3MDU1MjRiOTg4ZDg5MmQwMzc0MDM4MTM2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQzZTIwNTRmMmMzNDRmNWFiMGRkNjY0YzViYWI0YjNkID0gJCgnPGRpdiBpZD0iaHRtbF80M2UyMDU0ZjJjMzQ0ZjVhYjBkZDY2NGM1YmFiNGIzZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FlN2ZkNTA3MDU1MjRiOTg4ZDg5MmQwMzc0MDM4MTM2LnNldENvbnRlbnQoaHRtbF80M2UyMDU0ZjJjMzQ0ZjVhYjBkZDY2NGM1YmFiNGIzZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Y4ZTc1MjU3MTNlNDQ3MjZhYmI2YzYwYjQ1NDc2NGM0LmJpbmRQb3B1cChwb3B1cF9hZTdmZDUwNzA1NTI0Yjk4OGQ4OTJkMDM3NDAzODEzNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kM2EzN2MyOTBiMDc0Mzc0OTcyYjY1Y2VlZWNmYzgyNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2Q2Y2I0MjE3ZmExNDE2NzkyMWYyNDEwMDhjZmE1N2YgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTNmOTE1MjYwNjBjNGM0ZjlkZjk0ZDlhMGEyNWIxODEgPSAkKCc8ZGl2IGlkPSJodG1sXzkzZjkxNTI2MDYwYzRjNGY5ZGY5NGQ5YTBhMjViMTgxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jZDZjYjQyMTdmYTE0MTY3OTIxZjI0MTAwOGNmYTU3Zi5zZXRDb250ZW50KGh0bWxfOTNmOTE1MjYwNjBjNGM0ZjlkZjk0ZDlhMGEyNWIxODEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kM2EzN2MyOTBiMDc0Mzc0OTcyYjY1Y2VlZWNmYzgyNS5iaW5kUG9wdXAocG9wdXBfY2Q2Y2I0MjE3ZmExNDE2NzkyMWYyNDEwMDhjZmE1N2YpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNWZhNmEwZGYyNDE1NDMyNzgyMzdmMTc0MzY3ZmY3NjAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTU5OTc3MzM5ODU2LC0xMjIuNDA5NDM1NjE3MTA2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yNTIyOGEzYTk0MTk0ZWRhODlmMmQ5NDQ4ZWU1YzQ5ZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85MTEzY2MzNTg2MzA0OTdjOGFmYjQwMmIwOTYwZTE1NCA9ICQoJzxkaXYgaWQ9Imh0bWxfOTExM2NjMzU4NjMwNDk3YzhhZmI0MDJiMDk2MGUxNTQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNTIyOGEzYTk0MTk0ZWRhODlmMmQ5NDQ4ZWU1YzQ5ZS5zZXRDb250ZW50KGh0bWxfOTExM2NjMzU4NjMwNDk3YzhhZmI0MDJiMDk2MGUxNTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81ZmE2YTBkZjI0MTU0MzI3ODIzN2YxNzQzNjdmZjc2MC5iaW5kUG9wdXAocG9wdXBfMjUyMjhhM2E5NDE5NGVkYTg5ZjJkOTQ0OGVlNWM0OWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDk2YzFlZWIwNzNmNDVjODliYWIzZTk2MzU0OTJkZTcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODcwNzk4MTQ0NDQzLC0xMjIuNDI1ODgzMzU4MTQ4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81OTFlMGY2ZDdjNjY0ZGFhOGVmZWUzNThlNWViMWVlOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80ZTE4MjY2ZWRhYjE0MGRhOTU0OTMzOTI4Mjg2NDQxZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNGUxODI2NmVkYWIxNDBkYTk1NDkzMzkyODI4NjQ0MWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTkxZTBmNmQ3YzY2NGRhYThlZmVlMzU4ZTVlYjFlZTkuc2V0Q29udGVudChodG1sXzRlMTgyNjZlZGFiMTQwZGE5NTQ5MzM5MjgyODY0NDFmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDk2YzFlZWIwNzNmNDVjODliYWIzZTk2MzU0OTJkZTcuYmluZFBvcHVwKHBvcHVwXzU5MWUwZjZkN2M2NjRkYWE4ZWZlZTM1OGU1ZWIxZWU5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI0ZDZlZGE2MWRjNTRlZjc5ZTQzNTY2ZTZkZGI2NTQ1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZkYmRhMjkwN2JmOTQ5ZmQ5MWU5N2Y0MzU5YmNhOGJhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YyYjg2MGM3YTRjMDQ1MmU5YTY1ZThhYjJiNTA0MWExID0gJCgnPGRpdiBpZD0iaHRtbF9mMmI4NjBjN2E0YzA0NTJlOWE2NWU4YWIyYjUwNDFhMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mZGJkYTI5MDdiZjk0OWZkOTFlOTdmNDM1OWJjYThiYS5zZXRDb250ZW50KGh0bWxfZjJiODYwYzdhNGMwNDUyZTlhNjVlOGFiMmI1MDQxYTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNGQ2ZWRhNjFkYzU0ZWY3OWU0MzU2NmU2ZGRiNjU0NS5iaW5kUG9wdXAocG9wdXBfZmRiZGEyOTA3YmY5NDlmZDkxZTk3ZjQzNTliY2E4YmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNmIzNDQwNTQ2MTM4NDU0ZmEzZWI1MGUwM2JjMzBkMjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTI3Njc4ODQ4MjEsLTEyMi40MzE5MjgwMTEwODldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY4NmQ2NDIzNGMxYTRhODNiMGE3MmY4NjExMGVlNDhmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzViNzIxMGViYmQyNjQ0MmFhNjhmNTYwZTdhZjRjZjZlID0gJCgnPGRpdiBpZD0iaHRtbF81YjcyMTBlYmJkMjY0NDJhYTY4ZjU2MGU3YWY0Y2Y2ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY4NmQ2NDIzNGMxYTRhODNiMGE3MmY4NjExMGVlNDhmLnNldENvbnRlbnQoaHRtbF81YjcyMTBlYmJkMjY0NDJhYTY4ZjU2MGU3YWY0Y2Y2ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzZiMzQ0MDU0NjEzODQ1NGZhM2ViNTBlMDNiYzMwZDI5LmJpbmRQb3B1cChwb3B1cF82ODZkNjQyMzRjMWE0YTgzYjBhNzJmODYxMTBlZTQ4Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yNTVlM2YyNDE1NGY0OTVjODRjYTMzZmE0NjdmMDY3ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4OTU3MTAyNTU4NjMsLTEyMi40MDIxNjM3MTM2MThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ0MGVkNTJlNDFjZTQ3OWQ5NjU0OGJjMTkyMWE2M2NhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzdlNTc1YmFjYWU4YTQ2ODg5NDAzMzk1Nzc5NWY0YTMxID0gJCgnPGRpdiBpZD0iaHRtbF83ZTU3NWJhY2FlOGE0Njg4OTQwMzM5NTc3OTVmNGEzMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVTktFTk5FU1M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ0MGVkNTJlNDFjZTQ3OWQ5NjU0OGJjMTkyMWE2M2NhLnNldENvbnRlbnQoaHRtbF83ZTU3NWJhY2FlOGE0Njg4OTQwMzM5NTc3OTVmNGEzMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzI1NWUzZjI0MTU0ZjQ5NWM4NGNhMzNmYTQ2N2YwNjdlLmJpbmRQb3B1cChwb3B1cF80NDBlZDUyZTQxY2U0NzlkOTY1NDhiYzE5MjFhNjNjYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80ZTI1NjQwZDQ2MWU0Y2UzYTY4NmU3YjEwNzFkNjA2ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UyN2ExYTBkY2YwMjQ4NDk5NmVlNzRkYjEyYTc2MjA1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJlOWExZDk3YjE5YzQwNzliMzZkNjExOGI0M2EzNWVlID0gJCgnPGRpdiBpZD0iaHRtbF8yZTlhMWQ5N2IxOWM0MDc5YjM2ZDYxMThiNDNhMzVlZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UyN2ExYTBkY2YwMjQ4NDk5NmVlNzRkYjEyYTc2MjA1LnNldENvbnRlbnQoaHRtbF8yZTlhMWQ5N2IxOWM0MDc5YjM2ZDYxMThiNDNhMzVlZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzRlMjU2NDBkNDYxZTRjZTNhNjg2ZTdiMTA3MWQ2MDZlLmJpbmRQb3B1cChwb3B1cF9lMjdhMWEwZGNmMDI0ODQ5OTZlZTc0ZGIxMmE3NjIwNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zYTAzYjhhZTFiNTg0NzJlODEwN2FmOWUyZDRiNGVkZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNjU1NjUzNDc5NCwtMTIyLjQxMzc5MDk3Mjc4MDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hYjZlMzI4YzE2Y2E0Nzg1YWY2NjU3NDAzNzk3NzhhOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80NjM3NGVhZWNkZDE0ZDE5OWU1MTgxNmNiNDUyZjU2OSA9ICQoJzxkaXYgaWQ9Imh0bWxfNDYzNzRlYWVjZGQxNGQxOTllNTE4MTZjYjQ1MmY1NjkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWI2ZTMyOGMxNmNhNDc4NWFmNjY1NzQwMzc5Nzc4YTkuc2V0Q29udGVudChodG1sXzQ2Mzc0ZWFlY2RkMTRkMTk5ZTUxODE2Y2I0NTJmNTY5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfM2EwM2I4YWUxYjU4NDcyZTgxMDdhZjllMmQ0YjRlZGYuYmluZFBvcHVwKHBvcHVwX2FiNmUzMjhjMTZjYTQ3ODVhZjY2NTc0MDM3OTc3OGE5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI2YTYzYmEwY2M4MTRkZTI5ZWFkYzM5ZmQ2OWY2ZTUzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTAyYzRlNjg2YmI5NDdlN2JjM2IyNDJjNzM1YTY1MjkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjIxOGQ5ZTMxOTdkNGM5M2FjMDdhZmI3OGFmMjc1ZjYgPSAkKCc8ZGl2IGlkPSJodG1sXzIyMThkOWUzMTk3ZDRjOTNhYzA3YWZiNzhhZjI3NWY2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTAyYzRlNjg2YmI5NDdlN2JjM2IyNDJjNzM1YTY1Mjkuc2V0Q29udGVudChodG1sXzIyMThkOWUzMTk3ZDRjOTNhYzA3YWZiNzhhZjI3NWY2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjZhNjNiYTBjYzgxNGRlMjllYWRjMzlmZDY5ZjZlNTMuYmluZFBvcHVwKHBvcHVwXzEwMmM0ZTY4NmJiOTQ3ZTdiYzNiMjQyYzczNWE2NTI5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzBmMTk0NTIxN2RiNDQ5ZWJiMjU1ZGEyOGQ0NTdhN2EyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iMDZlZTlhNzUyNTQ0ODliOTRlZDgzZjQzN2UyYmYyNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMDg2NmJkNmU0YWY0YWZmYTkyNTQwMzYwMzRjZThiYiA9ICQoJzxkaXYgaWQ9Imh0bWxfMDA4NjZiZDZlNGFmNGFmZmE5MjU0MDM2MDM0Y2U4YmIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjA2ZWU5YTc1MjU0NDg5Yjk0ZWQ4M2Y0MzdlMmJmMjUuc2V0Q29udGVudChodG1sXzAwODY2YmQ2ZTRhZjRhZmZhOTI1NDAzNjAzNGNlOGJiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMGYxOTQ1MjE3ZGI0NDllYmIyNTVkYTI4ZDQ1N2E3YTIuYmluZFBvcHVwKHBvcHVwX2IwNmVlOWE3NTI1NDQ4OWI5NGVkODNmNDM3ZTJiZjI1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2JmNWE0NDYwYzc5ZDRlYmFiZDllOTVjZDMxNzVhNmRmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80N2ZmMDAxZDkwNGI0ODBjYWJlMDYzNTkwNzU0YzFiNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81Zjg4Zjk2MWE5ODk0ZTcwOGU4YmM4MjY3YjkyNzExOSA9ICQoJzxkaXYgaWQ9Imh0bWxfNWY4OGY5NjFhOTg5NGU3MDhlOGJjODI2N2I5MjcxMTkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDdmZjAwMWQ5MDRiNDgwY2FiZTA2MzU5MDc1NGMxYjUuc2V0Q29udGVudChodG1sXzVmODhmOTYxYTk4OTRlNzA4ZThiYzgyNjdiOTI3MTE5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmY1YTQ0NjBjNzlkNGViYWJkOWU5NWNkMzE3NWE2ZGYuYmluZFBvcHVwKHBvcHVwXzQ3ZmYwMDFkOTA0YjQ4MGNhYmUwNjM1OTA3NTRjMWI1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI2ZWYxMTdmMTg5YjRjMzY5YWY5MDQzZTgwYWRiMTY2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1OTk4ODMyMzc5Nzk2LC0xMjIuNDExNzQ3MzcxOTI0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85MTg4YTI1NWVhYmE0MTU0YWY4ZDU0Y2IyMDVkOTJkNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mM2NkMjU3NjdmYmY0NmRhYjBlYzcyNGY1Y2FkOTEwNSA9ICQoJzxkaXYgaWQ9Imh0bWxfZjNjZDI1NzY3ZmJmNDZkYWIwZWM3MjRmNWNhZDkxMDUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNVU1BJQ0lPVVMgT0NDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85MTg4YTI1NWVhYmE0MTU0YWY4ZDU0Y2IyMDVkOTJkNC5zZXRDb250ZW50KGh0bWxfZjNjZDI1NzY3ZmJmNDZkYWIwZWM3MjRmNWNhZDkxMDUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yNmVmMTE3ZjE4OWI0YzM2OWFmOTA0M2U4MGFkYjE2Ni5iaW5kUG9wdXAocG9wdXBfOTE4OGEyNTVlYWJhNDE1NGFmOGQ1NGNiMjA1ZDkyZDQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTgxODdmN2UwNzc5NDA3NjhlNzkzYmY4YjAxZGM2NzIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjMzNzU4MDU4MDU5LC0xMjIuNDIwNDM0NzI0NTUyOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VhNTZiYjg0YTdmMTQxODliYzEyNTVmOTFlNzc3ZjhlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJiMTdmOTUxZGIwNjRmZWNhMzIyZjI0NjIyNmZhOGJiID0gJCgnPGRpdiBpZD0iaHRtbF8yYjE3Zjk1MWRiMDY0ZmVjYTMyMmYyNDYyMjZmYThiYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VhNTZiYjg0YTdmMTQxODliYzEyNTVmOTFlNzc3ZjhlLnNldENvbnRlbnQoaHRtbF8yYjE3Zjk1MWRiMDY0ZmVjYTMyMmYyNDYyMjZmYThiYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzE4MTg3ZjdlMDc3OTQwNzY4ZTc5M2JmOGIwMWRjNjcyLmJpbmRQb3B1cChwb3B1cF9lYTU2YmI4NGE3ZjE0MTg5YmMxMjU1ZjkxZTc3N2Y4ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zZGMxZGJlNjdiMjQ0OTVlYjIwOTIwMDEwMWE0MWRkNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTAyMjY2MjI3ODYsLTEyMi40MTE5ODc2NDM1OTUwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMmZjZWQ1NmJlYzNjNDc3NTgwMzk4Yjg4ZTZkZTAxMDggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWMzNjYyNTFkYzRkNDE3ZmJmNDI2NzgzNjgzNjRmYTIgPSAkKCc8ZGl2IGlkPSJodG1sXzVjMzY2MjUxZGM0ZDQxN2ZiZjQyNjc4MzY4MzY0ZmEyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJmY2VkNTZiZWMzYzQ3NzU4MDM5OGI4OGU2ZGUwMTA4LnNldENvbnRlbnQoaHRtbF81YzM2NjI1MWRjNGQ0MTdmYmY0MjY3ODM2ODM2NGZhMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzNkYzFkYmU2N2IyNDQ5NWViMjA5MjAwMTAxYTQxZGQ0LmJpbmRQb3B1cChwb3B1cF8yZmNlZDU2YmVjM2M0Nzc1ODAzOThiODhlNmRlMDEwOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jNDZkZGVkNzFjYzU0ZjEzOWVmODAwMzQwNmMzMzZkOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDYyMDY0OTEwNjQ5NSwtMTIyLjUwMDM4MDQyNzkxNV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODgzM2YxZjhkOWVlNGJmZWI4M2VmZGQyMTBlZjljZDEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzU0YWM1MjQxNWQwNDg4MDg4OGNkNGI1ZmIxZTU3OWQgPSAkKCc8ZGl2IGlkPSJodG1sXzM1NGFjNTI0MTVkMDQ4ODA4ODhjZDRiNWZiMWU1NzlkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODgzM2YxZjhkOWVlNGJmZWI4M2VmZGQyMTBlZjljZDEuc2V0Q29udGVudChodG1sXzM1NGFjNTI0MTVkMDQ4ODA4ODhjZDRiNWZiMWU1NzlkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYzQ2ZGRlZDcxY2M1NGYxMzllZjgwMDM0MDZjMzM2ZDguYmluZFBvcHVwKHBvcHVwXzg4MzNmMWY4ZDllZTRiZmViODNlZmRkMjEwZWY5Y2QxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZmMTE2ZmQyODgwNTQ2OWU4MDlmZDBlMjYxMDZkNWYzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1MTkxODI2NzIxNywtMTIyLjQ2NjU1ODc4MDY4M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTliZDU3YTBmMGVhNDYyNWJmN2MxOTdhMDg3N2ZiNTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGVmMWU0ODZlNmY2NGZhOGE5ZDc5MmQ4YTE5ODRiZmMgPSAkKCc8ZGl2IGlkPSJodG1sXzRlZjFlNDg2ZTZmNjRmYThhOWQ3OTJkOGExOTg0YmZjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85OWJkNTdhMGYwZWE0NjI1YmY3YzE5N2EwODc3ZmI1My5zZXRDb250ZW50KGh0bWxfNGVmMWU0ODZlNmY2NGZhOGE5ZDc5MmQ4YTE5ODRiZmMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mZjExNmZkMjg4MDU0NjllODA5ZmQwZTI2MTA2ZDVmMy5iaW5kUG9wdXAocG9wdXBfOTliZDU3YTBmMGVhNDYyNWJmN2MxOTdhMDg3N2ZiNTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2RlZjA0YjRkNmUzNDI5YjhhYThiYWQ2YjgzM2I5YzkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkwODQxNzI5MDI4LC0xMjIuNDg2OTI1OTYwMTE0MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RiOGU1YmZiNTZjYzQwOWZhMzMzY2E0NTIyMWJiMWM2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg5MTViMTU3NTA2NTQ5ZmM5MzhiNzk3ZjhkNjRlN2U1ID0gJCgnPGRpdiBpZD0iaHRtbF84OTE1YjE1NzUwNjU0OWZjOTM4Yjc5N2Y4ZDY0ZTdlNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RiOGU1YmZiNTZjYzQwOWZhMzMzY2E0NTIyMWJiMWM2LnNldENvbnRlbnQoaHRtbF84OTE1YjE1NzUwNjU0OWZjOTM4Yjc5N2Y4ZDY0ZTdlNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzNkZWYwNGI0ZDZlMzQyOWI4YWE4YmFkNmI4MzNiOWM5LmJpbmRQb3B1cChwb3B1cF9kYjhlNWJmYjU2Y2M0MDlmYTMzM2NhNDUyMjFiYjFjNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83MDE2OWFhODE0ZWE0ODllODU5NDcxNWMwZjcyNzE2NyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2ODUzNjAxMjM1ODMsLTEyMi40MTU2MTYzMzgzMTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfZmEzOWUzYWJhOGJhNDdlZGJmOGY0NzAyMDNjMWZhZWUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWY3OWY3ODdiMGFhNGM4NTk3M2QzMGVkMjY1YzNiYjUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODYzNWY1OGUzODE1NGVhM2IxMWQzM2FmM2MzNzk3MTggPSAkKCc8ZGl2IGlkPSJodG1sXzg2MzVmNThlMzgxNTRlYTNiMTFkMzNhZjNjMzc5NzE4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzlmNzlmNzg3YjBhYTRjODU5NzNkMzBlZDI2NWMzYmI1LnNldENvbnRlbnQoaHRtbF84NjM1ZjU4ZTM4MTU0ZWEzYjExZDMzYWYzYzM3OTcxOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzcwMTY5YWE4MTRlYTQ4OWU4NTk0NzE1YzBmNzI3MTY3LmJpbmRQb3B1cChwb3B1cF85Zjc5Zjc4N2IwYWE0Yzg1OTczZDMwZWQyNjVjM2JiNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wZTg1YmE2ZDU1MmY0MjFjOWE4MzA1NzZmYmRmM2ZiNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzliYzA0NDIyZWZiMDQ2YmI5ZDYzYWZlYmI5NDc0ODE3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNhYzU5MTk5YzY5YjRhMmY4NDE4YjYyNWMwZjQ4ZmI2ID0gJCgnPGRpdiBpZD0iaHRtbF8zYWM1OTE5OWM2OWI0YTJmODQxOGI2MjVjMGY0OGZiNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzliYzA0NDIyZWZiMDQ2YmI5ZDYzYWZlYmI5NDc0ODE3LnNldENvbnRlbnQoaHRtbF8zYWM1OTE5OWM2OWI0YTJmODQxOGI2MjVjMGY0OGZiNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzBlODViYTZkNTUyZjQyMWM5YTgzMDU3NmZiZGYzZmI0LmJpbmRQb3B1cChwb3B1cF85YmMwNDQyMmVmYjA0NmJiOWQ2M2FmZWJiOTQ3NDgxNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iNTFlMGY1ODc3NTA0ZmMxYjA5YzI5YTYxMTZiZWM0OCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyX2ZhMzllM2FiYThiYTQ3ZWRiZjhmNDcwMjAzYzFmYWVlKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UyZTAxYzM3ODBiYzRhMThhZjc4MzAyYzBhNjk1YmM4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU3ZGU2NDc0ZmZjNDQwMGI4OWJmZDFmOGRkYWFkMDFjID0gJCgnPGRpdiBpZD0iaHRtbF81N2RlNjQ3NGZmYzQ0MDBiODliZmQxZjhkZGFhZDAxYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTJlMDFjMzc4MGJjNGExOGFmNzgzMDJjMGE2OTViYzguc2V0Q29udGVudChodG1sXzU3ZGU2NDc0ZmZjNDQwMGI4OWJmZDFmOGRkYWFkMDFjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYjUxZTBmNTg3NzUwNGZjMWIwOWMyOWE2MTE2YmVjNDguYmluZFBvcHVwKHBvcHVwX2UyZTAxYzM3ODBiYzRhMThhZjc4MzAyYzBhNjk1YmM4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2M1ZWZjZGEyYjBmYzQ5OTA4ODUzNjFjNzliNmI5ZGYzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM1MjY4MTQ2OTA4Mzk2LC0xMjIuNDcyNzE1NzU5NjMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl9mYTM5ZTNhYmE4YmE0N2VkYmY4ZjQ3MDIwM2MxZmFlZSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kZWYxOWZhMjY1ZDQ0YzliOTNmNTkxMzUwODcxNmM3OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mMjNkNTI4MmZmMGI0N2Q1OGUwYjMxZjU1ODdlMWE1OSA9ICQoJzxkaXYgaWQ9Imh0bWxfZjIzZDUyODJmZjBiNDdkNThlMGIzMWY1NTg3ZTFhNTkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RlZjE5ZmEyNjVkNDRjOWI5M2Y1OTEzNTA4NzE2Yzc5LnNldENvbnRlbnQoaHRtbF9mMjNkNTI4MmZmMGI0N2Q1OGUwYjMxZjU1ODdlMWE1OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2M1ZWZjZGEyYjBmYzQ5OTA4ODUzNjFjNzliNmI5ZGYzLmJpbmRQb3B1cChwb3B1cF9kZWYxOWZhMjY1ZDQ0YzliOTNmNTkxMzUwODcxNmM3OSk7CgogICAgICAgICAgICAKICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fde9d9764a8>"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from folium import plugins\n",
"\n",
"# let's start again with a clean copy of the map of San Francisco\n",
"sanfran_map = folium.Map(location = [latitude, longitude], zoom_start = 12)\n",
"\n",
"# instantiate a mark cluster object for the incidents in the dataframe\n",
"incidents = plugins.MarkerCluster().add_to(sanfran_map)\n",
"\n",
"# loop through the dataframe and add each data point to the mark cluster\n",
"for lat, lng, label, in zip(df_incidents.Y, df_incidents.X, df_incidents.Category):\n",
" folium.Marker(\n",
" location=[lat, lng],\n",
" icon=None,\n",
" popup=label,\n",
" ).add_to(incidents)\n",
"\n",
"# display map\n",
"sanfran_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Notice how when you zoom out all the way, all markers are grouped into one cluster, *the global cluster*, of 100 markers or crimes, which is the total number of crimes in our dataframe. Once you start zooming in, the *global cluster* will start breaking up into smaller clusters. Zooming in all the way will result in individual markers."
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Choropleth Maps <a id=\"8\"></a>\n",
"\n",
"A `Choropleth` map is a thematic map in which areas are shaded or patterned in proportion to the measurement of the statistical variable being displayed on the map, such as population density or per-capita income. The choropleth map provides an easy way to visualize how a measurement varies across a geographic area or it shows the level of variability within a region. Below is a `Choropleth` map of the US depicting the population by square mile per state.\n",
"\n",
"<img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Images/2000_census_population_density_map_by_state.png\" width = 600> "
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now, let's create our own `Choropleth` map of the world depicting immigration from various countries to Canada.\n",
"\n",
"Let's first download and import our primary Canadian immigration dataset using *pandas* `read_excel()` method. Normally, before we can do that, we would need to download a module which *pandas* requires to read in excel files. This module is **xlrd**. For your convenience, we have pre-installed this module, so you would not have to worry about that. Otherwise, you would need to run the following line of code to install the **xlrd** module:\n",
"```\n",
"!conda install -c anaconda xlrd --yes\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Download the dataset and read it into a *pandas* dataframe:"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Data downloaded and read into a dataframe!\n"
]
}
],
"source": [
"df_can = pd.read_excel('https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/Canada.xlsx',\n",
" sheet_name='Canada by Citizenship',\n",
" skiprows=range(20),\n",
" skipfooter=2)\n",
"\n",
"print('Data downloaded and read into a dataframe!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Type</th>\n",
" <th>Coverage</th>\n",
" <th>OdName</th>\n",
" <th>AREA</th>\n",
" <th>AreaName</th>\n",
" <th>REG</th>\n",
" <th>RegName</th>\n",
" <th>DEV</th>\n",
" <th>DevName</th>\n",
" <th>1980</th>\n",
" <th>...</th>\n",
" <th>2004</th>\n",
" <th>2005</th>\n",
" <th>2006</th>\n",
" <th>2007</th>\n",
" <th>2008</th>\n",
" <th>2009</th>\n",
" <th>2010</th>\n",
" <th>2011</th>\n",
" <th>2012</th>\n",
" <th>2013</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Afghanistan</td>\n",
" <td>935</td>\n",
" <td>Asia</td>\n",
" <td>5501</td>\n",
" <td>Southern Asia</td>\n",
" <td>902</td>\n",
" <td>Developing regions</td>\n",
" <td>16</td>\n",
" <td>...</td>\n",
" <td>2978</td>\n",
" <td>3436</td>\n",
" <td>3009</td>\n",
" <td>2652</td>\n",
" <td>2111</td>\n",
" <td>1746</td>\n",
" <td>1758</td>\n",
" <td>2203</td>\n",
" <td>2635</td>\n",
" <td>2004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Albania</td>\n",
" <td>908</td>\n",
" <td>Europe</td>\n",
" <td>925</td>\n",
" <td>Southern Europe</td>\n",
" <td>901</td>\n",
" <td>Developed regions</td>\n",
" <td>1</td>\n",
" <td>...</td>\n",
" <td>1450</td>\n",
" <td>1223</td>\n",
" <td>856</td>\n",
" <td>702</td>\n",
" <td>560</td>\n",
" <td>716</td>\n",
" <td>561</td>\n",
" <td>539</td>\n",
" <td>620</td>\n",
" <td>603</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Algeria</td>\n",
" <td>903</td>\n",
" <td>Africa</td>\n",
" <td>912</td>\n",
" <td>Northern Africa</td>\n",
" <td>902</td>\n",
" <td>Developing regions</td>\n",
" <td>80</td>\n",
" <td>...</td>\n",
" <td>3616</td>\n",
" <td>3626</td>\n",
" <td>4807</td>\n",
" <td>3623</td>\n",
" <td>4005</td>\n",
" <td>5393</td>\n",
" <td>4752</td>\n",
" <td>4325</td>\n",
" <td>3774</td>\n",
" <td>4331</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>American Samoa</td>\n",
" <td>909</td>\n",
" <td>Oceania</td>\n",
" <td>957</td>\n",
" <td>Polynesia</td>\n",
" <td>902</td>\n",
" <td>Developing regions</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Immigrants</td>\n",
" <td>Foreigners</td>\n",
" <td>Andorra</td>\n",
" <td>908</td>\n",
" <td>Europe</td>\n",
" <td>925</td>\n",
" <td>Southern Europe</td>\n",
" <td>901</td>\n",
" <td>Developed regions</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 43 columns</p>\n",
"</div>"
],
"text/plain": [
" Type Coverage OdName AREA AreaName REG \\\n",
"0 Immigrants Foreigners Afghanistan 935 Asia 5501 \n",
"1 Immigrants Foreigners Albania 908 Europe 925 \n",
"2 Immigrants Foreigners Algeria 903 Africa 912 \n",
"3 Immigrants Foreigners American Samoa 909 Oceania 957 \n",
"4 Immigrants Foreigners Andorra 908 Europe 925 \n",
"\n",
" RegName DEV DevName 1980 ... 2004 2005 2006 \\\n",
"0 Southern Asia 902 Developing regions 16 ... 2978 3436 3009 \n",
"1 Southern Europe 901 Developed regions 1 ... 1450 1223 856 \n",
"2 Northern Africa 902 Developing regions 80 ... 3616 3626 4807 \n",
"3 Polynesia 902 Developing regions 0 ... 0 0 1 \n",
"4 Southern Europe 901 Developed regions 0 ... 0 0 1 \n",
"\n",
" 2007 2008 2009 2010 2011 2012 2013 \n",
"0 2652 2111 1746 1758 2203 2635 2004 \n",
"1 702 560 716 561 539 620 603 \n",
"2 3623 4005 5393 4752 4325 3774 4331 \n",
"3 0 0 0 0 0 0 0 \n",
"4 1 0 0 0 0 1 1 \n",
"\n",
"[5 rows x 43 columns]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_can.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's find out how many entries there are in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(195, 43)\n"
]
}
],
"source": [
"# print the dimensions of the dataframe\n",
"print(df_can.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Clean up data. We will make some modifications to the original dataset to make it easier to create our visualizations. Refer to *Introduction to Matplotlib and Line Plots* and *Area Plots, Histograms, and Bar Plots* notebooks for a detailed description of this preprocessing."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"data dimensions: (195, 39)\n"
]
}
],
"source": [
"# clean up the dataset to remove unnecessary columns (eg. REG) \n",
"df_can.drop(['AREA','REG','DEV','Type','Coverage'], axis=1, inplace=True)\n",
"\n",
"# let's rename the columns so that they make sense\n",
"df_can.rename(columns={'OdName':'Country', 'AreaName':'Continent','RegName':'Region'}, inplace=True)\n",
"\n",
"# for sake of consistency, let's also make all column labels of type string\n",
"df_can.columns = list(map(str, df_can.columns))\n",
"\n",
"# add total column\n",
"df_can['Total'] = df_can.sum(axis=1)\n",
"\n",
"# years that we will be using in this lesson - useful for plotting later on\n",
"years = list(map(str, range(1980, 2014)))\n",
"print ('data dimensions:', df_can.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items of our cleaned dataframe."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Country</th>\n",
" <th>Continent</th>\n",
" <th>Region</th>\n",
" <th>DevName</th>\n",
" <th>1980</th>\n",
" <th>1981</th>\n",
" <th>1982</th>\n",
" <th>1983</th>\n",
" <th>1984</th>\n",
" <th>1985</th>\n",
" <th>...</th>\n",
" <th>2005</th>\n",
" <th>2006</th>\n",
" <th>2007</th>\n",
" <th>2008</th>\n",
" <th>2009</th>\n",
" <th>2010</th>\n",
" <th>2011</th>\n",
" <th>2012</th>\n",
" <th>2013</th>\n",
" <th>Total</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Afghanistan</td>\n",
" <td>Asia</td>\n",
" <td>Southern Asia</td>\n",
" <td>Developing regions</td>\n",
" <td>16</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>47</td>\n",
" <td>71</td>\n",
" <td>340</td>\n",
" <td>...</td>\n",
" <td>3436</td>\n",
" <td>3009</td>\n",
" <td>2652</td>\n",
" <td>2111</td>\n",
" <td>1746</td>\n",
" <td>1758</td>\n",
" <td>2203</td>\n",
" <td>2635</td>\n",
" <td>2004</td>\n",
" <td>58639</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Albania</td>\n",
" <td>Europe</td>\n",
" <td>Southern Europe</td>\n",
" <td>Developed regions</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>1223</td>\n",
" <td>856</td>\n",
" <td>702</td>\n",
" <td>560</td>\n",
" <td>716</td>\n",
" <td>561</td>\n",
" <td>539</td>\n",
" <td>620</td>\n",
" <td>603</td>\n",
" <td>15699</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Algeria</td>\n",
" <td>Africa</td>\n",
" <td>Northern Africa</td>\n",
" <td>Developing regions</td>\n",
" <td>80</td>\n",
" <td>67</td>\n",
" <td>71</td>\n",
" <td>69</td>\n",
" <td>63</td>\n",
" <td>44</td>\n",
" <td>...</td>\n",
" <td>3626</td>\n",
" <td>4807</td>\n",
" <td>3623</td>\n",
" <td>4005</td>\n",
" <td>5393</td>\n",
" <td>4752</td>\n",
" <td>4325</td>\n",
" <td>3774</td>\n",
" <td>4331</td>\n",
" <td>69439</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>American Samoa</td>\n",
" <td>Oceania</td>\n",
" <td>Polynesia</td>\n",
" <td>Developing regions</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Andorra</td>\n",
" <td>Europe</td>\n",
" <td>Southern Europe</td>\n",
" <td>Developed regions</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>15</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 39 columns</p>\n",
"</div>"
],
"text/plain": [
" Country Continent Region DevName 1980 1981 \\\n",
"0 Afghanistan Asia Southern Asia Developing regions 16 39 \n",
"1 Albania Europe Southern Europe Developed regions 1 0 \n",
"2 Algeria Africa Northern Africa Developing regions 80 67 \n",
"3 American Samoa Oceania Polynesia Developing regions 0 1 \n",
"4 Andorra Europe Southern Europe Developed regions 0 0 \n",
"\n",
" 1982 1983 1984 1985 ... 2005 2006 2007 2008 2009 2010 2011 \\\n",
"0 39 47 71 340 ... 3436 3009 2652 2111 1746 1758 2203 \n",
"1 0 0 0 0 ... 1223 856 702 560 716 561 539 \n",
"2 71 69 63 44 ... 3626 4807 3623 4005 5393 4752 4325 \n",
"3 0 0 0 0 ... 0 1 0 0 0 0 0 \n",
"4 0 0 0 0 ... 0 1 1 0 0 0 0 \n",
"\n",
" 2012 2013 Total \n",
"0 2635 2004 58639 \n",
"1 620 603 15699 \n",
"2 3774 4331 69439 \n",
"3 0 0 6 \n",
"4 1 1 15 \n",
"\n",
"[5 rows x 39 columns]"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_can.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"In order to create a `Choropleth` map, we need a GeoJSON file that defines the areas/boundaries of the state, county, or country that we are interested in. In our case, since we are endeavoring to create a world map, we want a GeoJSON that defines the boundaries of all world countries. For your convenience, we will be providing you with this file, so let's go ahead and download it. Let's name it **world_countries.json**."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"GeoJSON file downloaded!\n"
]
}
],
"source": [
"# download countries geojson file\n",
"!wget --quiet https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DV0101EN/labs/Data_Files/world_countries.json -O world_countries.json\n",
" \n",
"print('GeoJSON file downloaded!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Now that we have the GeoJSON file, let's create a world map, centered around **[0, 0]** *latitude* and *longitude* values, with an intial zoom level of 2, and using *Mapbox Bright* style."
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"button": false,
"collapsed": false,
"deletable": true,
"editable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"world_geo = r'world_countries.json' # geojson file\n",
"\n",
"# create a plain world map\n",
"world_map = folium.Map(location=[0, 0], zoom_start=2, tiles='Mapbox Bright')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"And now to create a `Choropleth` map, we will use the *choropleth* method with the following main parameters:\n",
"\n",
"1. geo_data, which is the GeoJSON file.\n",
"2. data, which is the dataframe containing the data.\n",
"3. columns, which represents the columns in the dataframe that will be used to create the `Choropleth` map.\n",
"4. key_on, which is the key or variable in the GeoJSON file that contains the name of the variable of interest. To determine that, you will need to open the GeoJSON file using any text editor and note the name of the key or variable that contains the name of the countries, since the countries are our variable of interest. In this case, **name** is the key in the GeoJSON file that contains the name of the countries. Note that this key is case_sensitive, so you need to pass exactly as it exists in the GeoJSON file."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"button": false,
"collapsed": true,
"deletable": true,
"new_sheet": false,
"run_control": {
"read_only": 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;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZmM0ZjA5NjEwNzdhNDg0NGE4OTVlNTJkMzkwOWM5OTMgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2QzLzMuNS41L2QzLm1pbi5qcyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvbGl1bS1tYXAiIGlkPSJtYXBfZmM0ZjA5NjEwNzdhNDg0NGE4OTVlNTJkMzkwOWM5OTMiID48L2Rpdj4KICAgICAgICAKPC9ib2R5Pgo8c2NyaXB0PiAgICAKICAgIAoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgYm91bmRzID0gbnVsbDsKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFwX2ZjNGYwOTYxMDc3YTQ4NDRhODk1ZTUyZDM5MDljOTkzID0gTC5tYXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFwX2ZjNGYwOTYxMDc3YTQ4NDRhODk1ZTUyZDM5MDljOTkzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjZW50ZXI6IFswLDBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfOTdlMmFiM2M3YTIyNDYwN2FmYTg3OTNjZWFkMDhlOWMgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlcy5tYXBib3guY29tL3YzL21hcGJveC53b3JsZC1icmlnaHQve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mYzRmMDk2MTA3N2E0ODQ0YTg5NWU1MmQzOTA5Yzk5Myk7CiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIHZhciBnZW9fanNvbl83YTE1MDc4NzU1NDc0OTNjOTg3OGM4MDFiNjJlZDk2NyA9IEwuZ2VvSnNvbigKICAgICAgICAgICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNjEuMjEwODE3LCAzNS42NTAwNzJdLCBbNjIuMjMwNjUxLCAzNS4yNzA2NjRdLCBbNjIuOTg0NjYyLCAzNS40MDQwNDFdLCBbNjMuMTkzNTM4LCAzNS44NTcxNjZdLCBbNjMuOTgyODk2LCAzNi4wMDc5NTddLCBbNjQuNTQ2NDc5LCAzNi4zMTIwNzNdLCBbNjQuNzQ2MTA1LCAzNy4xMTE4MThdLCBbNjUuNTg4OTQ4LCAzNy4zMDUyMTddLCBbNjUuNzQ1NjMxLCAzNy42NjExNjRdLCBbNjYuMjE3Mzg1LCAzNy4zOTM3OV0sIFs2Ni41MTg2MDcsIDM3LjM2Mjc4NF0sIFs2Ny4wNzU3ODIsIDM3LjM1NjE0NF0sIFs2Ny44MywgMzcuMTQ0OTk0XSwgWzY4LjEzNTU2MiwgMzcuMDIzMTE1XSwgWzY4Ljg1OTQ0NiwgMzcuMzQ0MzM2XSwgWzY5LjE5NjI3MywgMzcuMTUxMTQ0XSwgWzY5LjUxODc4NSwgMzcuNjA4OTk3XSwgWzcwLjExNjU3OCwgMzcuNTg4MjIzXSwgWzcwLjI3MDU3NCwgMzcuNzM1MTY1XSwgWzcwLjM3NjMwNCwgMzguMTM4Mzk2XSwgWzcwLjgwNjgyMSwgMzguNDg2MjgyXSwgWzcxLjM0ODEzMSwgMzguMjU4OTA1XSwgWzcxLjIzOTQwNCwgMzcuOTUzMjY1XSwgWzcxLjU0MTkxOCwgMzcuOTA1Nzc0XSwgWzcxLjQ0ODY5MywgMzcuMDY1NjQ1XSwgWzcxLjg0NDYzOCwgMzYuNzM4MTcxXSwgWzcyLjE5MzA0MSwgMzYuOTQ4Mjg4XSwgWzcyLjYzNjg5LCAzNy4wNDc1NThdLCBbNzMuMjYwMDU2LCAzNy40OTUyNTddLCBbNzMuOTQ4Njk2LCAzNy40MjE1NjZdLCBbNzQuOTgwMDAyLCAzNy40MTk5OV0sIFs3NS4xNTgwMjgsIDM3LjEzMzAzMV0sIFs3NC41NzU4OTMsIDM3LjAyMDg0MV0sIFs3NC4wNjc1NTIsIDM2LjgzNjE3Nl0sIFs3Mi45MjAwMjUsIDM2LjcyMDAwN10sIFs3MS44NDYyOTIsIDM2LjUwOTk0Ml0sIFs3MS4yNjIzNDgsIDM2LjA3NDM4OF0sIFs3MS40OTg3NjgsIDM1LjY1MDU2M10sIFs3MS42MTMwNzYsIDM1LjE1MzIwM10sIFs3MS4xMTUwMTksIDM0LjczMzEyNl0sIFs3MS4xNTY3NzMsIDM0LjM0ODkxMV0sIFs3MC44ODE4MDMsIDMzLjk4ODg1Nl0sIFs2OS45MzA1NDMsIDM0LjAyMDEyXSwgWzcwLjMyMzU5NCwgMzMuMzU4NTMzXSwgWzY5LjY4NzE0NywgMzMuMTA1NDk5XSwgWzY5LjI2MjUyMiwgMzIuNTAxOTQ0XSwgWzY5LjMxNzc2NCwgMzEuOTAxNDEyXSwgWzY4LjkyNjY3NywgMzEuNjIwMTg5XSwgWzY4LjU1NjkzMiwgMzEuNzEzMzFdLCBbNjcuNzkyNjg5LCAzMS41ODI5M10sIFs2Ny42ODMzOTQsIDMxLjMwMzE1NF0sIFs2Ni45Mzg4OTEsIDMxLjMwNDkxMV0sIFs2Ni4zODE0NTgsIDMwLjczODg5OV0sIFs2Ni4zNDY0NzMsIDI5Ljg4Nzk0M10sIFs2NS4wNDY4NjIsIDI5LjQ3MjE4MV0sIFs2NC4zNTA0MTksIDI5LjU2MDAzMV0sIFs2NC4xNDgwMDIsIDI5LjM0MDgxOV0sIFs2My41NTAyNjEsIDI5LjQ2ODMzMV0sIFs2Mi41NDk4NTcsIDI5LjMxODU3Ml0sIFs2MC44NzQyNDgsIDI5LjgyOTIzOV0sIFs2MS43ODEyMjIsIDMwLjczNTg1XSwgWzYxLjY5OTMxNCwgMzEuMzc5NTA2XSwgWzYwLjk0MTk0NSwgMzEuNTQ4MDc1XSwgWzYwLjg2MzY1NSwgMzIuMTgyOTJdLCBbNjAuNTM2MDc4LCAzMi45ODEyNjldLCBbNjAuOTYzNywgMzMuNTI4ODMyXSwgWzYwLjUyODQzLCAzMy42NzY0NDZdLCBbNjAuODAzMTkzLCAzNC40MDQxMDJdLCBbNjEuMjEwODE3LCAzNS42NTAwNzJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFGRyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQWZnaGFuaXN0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNi4zMjY1MjgsIC01Ljg3NzQ3XSwgWzE2LjU3MzE4LCAtNi42MjI2NDVdLCBbMTYuODYwMTkxLCAtNy4yMjIyOThdLCBbMTcuMDg5OTk2LCAtNy41NDU2ODldLCBbMTcuNDcyOTcsIC04LjA2ODU1MV0sIFsxOC4xMzQyMjIsIC03Ljk4NzY3OF0sIFsxOC40NjQxNzYsIC03Ljg0NzAxNF0sIFsxOS4wMTY3NTIsIC03Ljk4ODI0Nl0sIFsxOS4xNjY2MTMsIC03LjczODE4NF0sIFsxOS40MTc1MDIsIC03LjE1NTQyOV0sIFsyMC4wMzc3MjMsIC03LjExNjM2MV0sIFsyMC4wOTE2MjIsIC02Ljk0MzA5XSwgWzIwLjYwMTgyMywgLTYuOTM5MzE4XSwgWzIwLjUxNDc0OCwgLTcuMjk5NjA2XSwgWzIxLjcyODExMSwgLTcuMjkwODcyXSwgWzIxLjc0NjQ1NiwgLTcuOTIwMDg1XSwgWzIxLjk0OTEzMSwgLTguMzA1OTAxXSwgWzIxLjgwMTgwMSwgLTguOTA4NzA3XSwgWzIxLjg3NTE4MiwgLTkuNTIzNzA4XSwgWzIyLjIwODc1MywgLTkuODk0Nzk2XSwgWzIyLjE1NTI2OCwgLTExLjA4NDgwMV0sIFsyMi40MDI3OTgsIC0xMC45OTMwNzVdLCBbMjIuODM3MzQ1LCAtMTEuMDE3NjIyXSwgWzIzLjQ1Njc5MSwgLTEwLjg2Nzg2M10sIFsyMy45MTIyMTUsIC0xMC45MjY4MjZdLCBbMjQuMDE3ODk0LCAtMTEuMjM3Mjk4XSwgWzIzLjkwNDE1NCwgLTExLjcyMjI4Ml0sIFsyNC4wNzk5MDUsIC0xMi4xOTEyOTddLCBbMjMuOTMwOTIyLCAtMTIuNTY1ODQ4XSwgWzI0LjAxNjEzNywgLTEyLjkxMTA0Nl0sIFsyMS45MzM4ODYsIC0xMi44OTg0MzddLCBbMjEuODg3ODQzLCAtMTYuMDgwMzFdLCBbMjIuNTYyNDc4LCAtMTYuODk4NDUxXSwgWzIzLjIxNTA0OCwgLTE3LjUyMzExNl0sIFsyMS4zNzcxNzYsIC0xNy45MzA2MzZdLCBbMTguOTU2MTg3LCAtMTcuNzg5MDk1XSwgWzE4LjI2MzMwOSwgLTE3LjMwOTk1MV0sIFsxNC4yMDk3MDcsIC0xNy4zNTMxMDFdLCBbMTQuMDU4NTAxLCAtMTcuNDIzMzgxXSwgWzEzLjQ2MjM2MiwgLTE2Ljk3MTIxMl0sIFsxMi44MTQwODEsIC0xNi45NDEzNDNdLCBbMTIuMjE1NDYxLCAtMTcuMTExNjY4XSwgWzExLjczNDE5OSwgLTE3LjMwMTg4OV0sIFsxMS42NDAwOTYsIC0xNi42NzMxNDJdLCBbMTEuNzc4NTM3LCAtMTUuNzkzODE2XSwgWzEyLjEyMzU4MSwgLTE0Ljg3ODMxNl0sIFsxMi4xNzU2MTksIC0xNC40NDkxNDRdLCBbMTIuNTAwMDk1LCAtMTMuNTQ3N10sIFsxMi43Mzg0NzksIC0xMy4xMzc5MDZdLCBbMTMuMzEyOTE0LCAtMTIuNDgzNjNdLCBbMTMuNjMzNzIxLCAtMTIuMDM4NjQ1XSwgWzEzLjczODcyOCwgLTExLjI5Nzg2M10sIFsxMy42ODYzNzksIC0xMC43MzEwNzZdLCBbMTMuMzg3MzI4LCAtMTAuMzczNTc4XSwgWzEzLjEyMDk4OCwgLTkuNzY2ODk3XSwgWzEyLjg3NTM3LCAtOS4xNjY5MzRdLCBbMTIuOTI5MDYxLCAtOC45NTkwOTFdLCBbMTMuMjM2NDMzLCAtOC41NjI2MjldLCBbMTIuOTMzMDQsIC03LjU5NjUzOV0sIFsxMi43MjgyOTgsIC02LjkyNzEyMl0sIFsxMi4yMjczNDcsIC02LjI5NDQ0OF0sIFsxMi4zMjI0MzIsIC02LjEwMDA5Ml0sIFsxMi43MzUxNzEsIC01Ljk2NTY4Ml0sIFsxMy4wMjQ4NjksIC01Ljk4NDM4OV0sIFsxMy4zNzU1OTcsIC01Ljg2NDI0MV0sIFsxNi4zMjY1MjgsIC01Ljg3NzQ3XV1dLCBbW1sxMi40MzY2ODgsIC01LjY4NDMwNF0sIFsxMi4xODIzMzcsIC01Ljc4OTkzMV0sIFsxMS45MTQ5NjMsIC01LjAzNzk4N10sIFsxMi4zMTg2MDgsIC00LjYwNjIzXSwgWzEyLjYyMDc2LCAtNC40MzgwMjNdLCBbMTIuOTk1NTE3LCAtNC43ODExMDNdLCBbMTIuNjMxNjEyLCAtNC45OTEyNzFdLCBbMTIuNDY4MDA0LCAtNS4yNDgzNjJdLCBbMTIuNDM2Njg4LCAtNS42ODQzMDRdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFHTyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQW5nb2xhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1syMC41OTAyNDcsIDQxLjg1NTQwNF0sIFsyMC40NjMxNzUsIDQxLjUxNTA4OV0sIFsyMC42MDUxODIsIDQxLjA4NjIyNl0sIFsyMS4wMjAwNCwgNDAuODQyNzI3XSwgWzIwLjk5OTk5LCA0MC41ODAwMDRdLCBbMjAuNjc0OTk3LCA0MC40MzVdLCBbMjAuNjE1LCA0MC4xMTAwMDddLCBbMjAuMTUwMDE2LCAzOS42MjQ5OThdLCBbMTkuOTgsIDM5LjY5NDk5M10sIFsxOS45NjAwMDIsIDM5LjkxNTAwNl0sIFsxOS40MDYwODIsIDQwLjI1MDc3M10sIFsxOS4zMTkwNTksIDQwLjcyNzIzXSwgWzE5LjQwMzU1LCA0MS40MDk1NjZdLCBbMTkuNTQwMDI3LCA0MS43MTk5ODZdLCBbMTkuMzcxNzY5LCA0MS44Nzc1NDhdLCBbMTkuMzA0NDg2LCA0Mi4xOTU3NDVdLCBbMTkuNzM4MDUxLCA0Mi42ODgyNDddLCBbMTkuODAxNjEzLCA0Mi41MDAwOTNdLCBbMjAuMDcwNywgNDIuNTg4NjNdLCBbMjAuMjgzNzU1LCA0Mi4zMjAyNl0sIFsyMC41MjI5NSwgNDIuMjE3ODddLCBbMjAuNTkwMjQ3LCA0MS44NTU0MDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFMQiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQWxiYW5pYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNTEuNTc5NTE5LCAyNC4yNDU0OTddLCBbNTEuNzU3NDQxLCAyNC4yOTQwNzNdLCBbNTEuNzk0Mzg5LCAyNC4wMTk4MjZdLCBbNTIuNTc3MDgxLCAyNC4xNzc0MzldLCBbNTMuNDA0MDA3LCAyNC4xNTEzMTddLCBbNTQuMDA4MDAxLCAyNC4xMjE3NThdLCBbNTQuNjkzMDI0LCAyNC43OTc4OTJdLCBbNTUuNDM5MDI1LCAyNS40MzkxNDVdLCBbNTYuMDcwODIxLCAyNi4wNTU0NjRdLCBbNTYuMjYxMDQyLCAyNS43MTQ2MDZdLCBbNTYuMzk2ODQ3LCAyNC45MjQ3MzJdLCBbNTUuODg2MjMzLCAyNC45MjA4MzFdLCBbNTUuODA0MTE5LCAyNC4yNjk2MDRdLCBbNTUuOTgxMjE0LCAyNC4xMzA1NDNdLCBbNTUuNTI4NjMyLCAyMy45MzM2MDRdLCBbNTUuNTI1ODQxLCAyMy41MjQ4NjldLCBbNTUuMjM0NDg5LCAyMy4xMTA5OTNdLCBbNTUuMjA4MzQxLCAyMi43MDgzM10sIFs1NS4wMDY4MDMsIDIyLjQ5Njk0OF0sIFs1Mi4wMDA3MzMsIDIzLjAwMTE1NF0sIFs1MS42MTc3MDgsIDI0LjAxNDIxOV0sIFs1MS41Nzk1MTksIDI0LjI0NTQ5N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQVJFIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJVbml0ZWQgQXJhYiBFbWlyYXRlcyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy02NS41LCAtNTUuMl0sIFstNjYuNDUsIC01NS4yNV0sIFstNjYuOTU5OTIsIC01NC44OTY4MV0sIFstNjcuNTYyNDQsIC01NC44NzAwMV0sIFstNjguNjMzMzUsIC01NC44Njk1XSwgWy02OC42MzQwMSwgLTUyLjYzNjM3XSwgWy02OC4yNSwgLTUzLjFdLCBbLTY3Ljc1LCAtNTMuODVdLCBbLTY2LjQ1LCAtNTQuNDVdLCBbLTY1LjA1LCAtNTQuN10sIFstNjUuNSwgLTU1LjJdXV0sIFtbWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdLCBbLTY0LjM3NzAyMSwgLTIyLjc5ODA5MV0sIFstNjMuOTg2ODM4LCAtMjEuOTkzNjQ0XSwgWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdLCBbLTYyLjY4NTA1NywgLTIyLjI0OTAyOV0sIFstNjAuODQ2NTY1LCAtMjMuODgwNzEzXSwgWy02MC4wMjg5NjYsIC0yNC4wMzI3OTZdLCBbLTU4LjgwNzEyOCwgLTI0Ljc3MTQ1OV0sIFstNTcuNzc3MjE3LCAtMjUuMTYyMzRdLCBbLTU3LjYzMzY2LCAtMjUuNjAzNjU3XSwgWy01OC42MTgxNzQsIC0yNy4xMjM3MTldLCBbLTU3LjYwOTc2LCAtMjcuMzk1ODk5XSwgWy01Ni40ODY3MDIsIC0yNy41NDg0OTldLCBbLTU1LjY5NTg0NiwgLTI3LjM4NzgzN10sIFstNTQuNzg4Nzk1LCAtMjYuNjIxNzg2XSwgWy01NC42MjUyOTEsIC0yNS43MzkyNTVdLCBbLTU0LjEzMDA1LCAtMjUuNTQ3NjM5XSwgWy01My42MjgzNDksIC0yNi4xMjQ4NjVdLCBbLTUzLjY0ODczNSwgLTI2LjkyMzQ3M10sIFstNTQuNDkwNzI1LCAtMjcuNDc0NzU3XSwgWy01NS4xNjIyODYsIC0yNy44ODE5MTVdLCBbLTU2LjI5MDksIC0yOC44NTI3NjFdLCBbLTU3LjYyNTEzMywgLTMwLjIxNjI5NV0sIFstNTcuODc0OTM3LCAtMzEuMDE2NTU2XSwgWy01OC4xNDI0NCwgLTMyLjA0NDUwNF0sIFstNTguMTMyNjQ4LCAtMzMuMDQwNTY3XSwgWy01OC4zNDk2MTEsIC0zMy4yNjMxODldLCBbLTU4LjQyNzA3NCwgLTMzLjkwOTQ1NF0sIFstNTguNDk1NDQyLCAtMzQuNDMxNDldLCBbLTU3LjIyNTgzLCAtMzUuMjg4MDI3XSwgWy01Ny4zNjIzNTksIC0zNS45NzczOV0sIFstNTYuNzM3NDg3LCAtMzYuNDEzMTI2XSwgWy01Ni43ODgyODUsIC0zNi45MDE1NzJdLCBbLTU3Ljc0OTE1NywgLTM4LjE4Mzg3MV0sIFstNTkuMjMxODU3LCAtMzguNzIwMjJdLCBbLTYxLjIzNzQ0NSwgLTM4LjkyODQyNV0sIFstNjIuMzM1OTU3LCAtMzguODI3NzA3XSwgWy02Mi4xMjU3NjMsIC0zOS40MjQxMDVdLCBbLTYyLjMzMDUzMSwgLTQwLjE3MjU4Nl0sIFstNjIuMTQ1OTk0LCAtNDAuNjc2ODk3XSwgWy02Mi43NDU4MDMsIC00MS4wMjg3NjFdLCBbLTYzLjc3MDQ5NSwgLTQxLjE2Njc4OV0sIFstNjQuNzMyMDksIC00MC44MDI2NzddLCBbLTY1LjExODAzNSwgLTQxLjA2NDMxNV0sIFstNjQuOTc4NTYxLCAtNDIuMDU4MDAxXSwgWy02NC4zMDM0MDgsIC00Mi4zNTkwMTZdLCBbLTYzLjc1NTk0OCwgLTQyLjA0MzY4N10sIFstNjMuNDU4MDU5LCAtNDIuNTYzMTM4XSwgWy02NC4zNzg4MDQsIC00Mi44NzM1NThdLCBbLTY1LjE4MTgwNCwgLTQzLjQ5NTM4MV0sIFstNjUuMzI4ODIzLCAtNDQuNTAxMzY2XSwgWy02NS41NjUyNjksIC00NS4wMzY3ODZdLCBbLTY2LjUwOTk2NiwgLTQ1LjAzOTYyOF0sIFstNjcuMjkzNzk0LCAtNDUuNTUxODk2XSwgWy02Ny41ODA1NDYsIC00Ni4zMDE3NzNdLCBbLTY2LjU5NzA2NiwgLTQ3LjAzMzkyNV0sIFstNjUuNjQxMDI3LCAtNDcuMjM2MTM1XSwgWy02NS45ODUwODgsIC00OC4xMzMyODldLCBbLTY3LjE2NjE3OSwgLTQ4LjY5NzMzN10sIFstNjcuODE2MDg4LCAtNDkuODY5NjY5XSwgWy02OC43Mjg3NDUsIC01MC4yNjQyMThdLCBbLTY5LjEzODUzOSwgLTUwLjczMjUxXSwgWy02OC44MTU1NjEsIC01MS43NzExMDRdLCBbLTY4LjE0OTk5NSwgLTUyLjM0OTk4M10sIFstNjguNTcxNTQ1LCAtNTIuMjk5NDQ0XSwgWy02OS40OTgzNjIsIC01Mi4xNDI3NjFdLCBbLTcxLjkxNDgwNCwgLTUyLjAwOTAyMl0sIFstNzIuMzI5NDA0LCAtNTEuNDI1OTU2XSwgWy03Mi4zMDk5NzQsIC01MC42NzcwMV0sIFstNzIuOTc1NzQ3LCAtNTAuNzQxNDVdLCBbLTczLjMyODA1MSwgLTUwLjM3ODc4NV0sIFstNzMuNDE1NDM2LCAtNDkuMzE4NDM2XSwgWy03Mi42NDgyNDcsIC00OC44Nzg2MThdLCBbLTcyLjMzMTE2MSwgLTQ4LjI0NDIzOF0sIFstNzIuNDQ3MzU1LCAtNDcuNzM4NTMzXSwgWy03MS45MTcyNTgsIC00Ni44ODQ4MzhdLCBbLTcxLjU1MjAwOSwgLTQ1LjU2MDczM10sIFstNzEuNjU5MzE2LCAtNDQuOTczNjg5XSwgWy03MS4yMjI3NzksIC00NC43ODQyNDNdLCBbLTcxLjMyOTgwMSwgLTQ0LjQwNzUyMl0sIFstNzEuNzkzNjIzLCAtNDQuMjA3MTcyXSwgWy03MS40NjQwNTYsIC00My43ODc2MTFdLCBbLTcxLjkxNTQyNCwgLTQzLjQwODU2NV0sIFstNzIuMTQ4ODk4LCAtNDIuMjU0ODg4XSwgWy03MS43NDY4MDQsIC00Mi4wNTEzODZdLCBbLTcxLjkxNTczNCwgLTQwLjgzMjMzOV0sIFstNzEuNjgwNzYxLCAtMzkuODA4MTY0XSwgWy03MS40MTM1MTcsIC0zOC45MTYwMjJdLCBbLTcwLjgxNDY2NCwgLTM4LjU1Mjk5NV0sIFstNzEuMTE4NjI1LCAtMzcuNTc2ODI3XSwgWy03MS4xMjE4ODEsIC0zNi42NTgxMjRdLCBbLTcwLjM2NDc2OSwgLTM2LjAwNTA4OV0sIFstNzAuMzg4MDQ5LCAtMzUuMTY5Njg4XSwgWy02OS44MTczMDksIC0zNC4xOTM1NzFdLCBbLTY5LjgxNDc3NywgLTMzLjI3Mzg4Nl0sIFstNzAuMDc0Mzk5LCAtMzMuMDkxMjFdLCBbLTcwLjUzNTA2OSwgLTMxLjM2NTAxXSwgWy02OS45MTkwMDgsIC0zMC4zMzYzMzldLCBbLTcwLjAxMzU1LCAtMjkuMzY3OTIzXSwgWy02OS42NTYxMywgLTI4LjQ1OTE0MV0sIFstNjkuMDAxMjM1LCAtMjcuNTIxMjE0XSwgWy02OC4yOTU1NDIsIC0yNi44OTkzNF0sIFstNjguNTk0OCwgLTI2LjUwNjkwOV0sIFstNjguMzg2MDAxLCAtMjYuMTg1MDE2XSwgWy02OC40MTc2NTMsIC0yNC41MTg1NTVdLCBbLTY3LjMyODQ0MywgLTI0LjAyNTMwM10sIFstNjYuOTg1MjM0LCAtMjIuOTg2MzQ5XSwgWy02Ny4xMDY2NzQsIC0yMi43MzU5MjVdLCBbLTY2LjI3MzMzOSwgLTIxLjgzMjMxXSwgWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFSRyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQXJnZW50aW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s0My41ODI3NDYsIDQxLjA5MjE0M10sIFs0NC45NzI0OCwgNDEuMjQ4MTI5XSwgWzQ1LjE3OTQ5NiwgNDAuOTg1MzU0XSwgWzQ1LjU2MDM1MSwgNDAuODEyMjldLCBbNDUuMzU5MTc1LCA0MC41NjE1MDRdLCBbNDUuODkxOTA3LCA0MC4yMTg0NzZdLCBbNDUuNjEwMDEyLCAzOS44OTk5OTRdLCBbNDYuMDM0NTM0LCAzOS42MjgwMjFdLCBbNDYuNDgzNDk5LCAzOS40NjQxNTVdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ni4xNDM2MjMsIDM4Ljc0MTIwMV0sIFs0NS43MzUzNzksIDM5LjMxOTcxOV0sIFs0NS43Mzk5NzgsIDM5LjQ3Mzk5OV0sIFs0NS4yOTgxNDUsIDM5LjQ3MTc1MV0sIFs0NS4wMDE5ODcsIDM5Ljc0MDAwNF0sIFs0NC43OTM5OSwgMzkuNzEzMDAzXSwgWzQ0LjQwMDAwOSwgNDAuMDA1XSwgWzQzLjY1NjQzNiwgNDAuMjUzNTY0XSwgWzQzLjc1MjY1OCwgNDAuNzQwMjAxXSwgWzQzLjU4Mjc0NiwgNDEuMDkyMTQzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJBUk0iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkFybWVuaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1stNTkuNTcyMDk1LCAtODAuMDQwMTc5XSwgWy01OS44NjU4NDksIC04MC41NDk2NTddLCBbLTYwLjE1OTY1NiwgLTgxLjAwMDMyN10sIFstNjIuMjU1MzkzLCAtODAuODYzMTc4XSwgWy02NC40ODgxMjUsIC04MC45MjE5MzRdLCBbLTY1Ljc0MTY2NiwgLTgwLjU4ODgyN10sIFstNjUuNzQxNjY2LCAtODAuNTQ5NjU3XSwgWy02Ni4yOTAwMzEsIC04MC4yNTU3NzNdLCBbLTY0LjAzNzY4OCwgLTgwLjI5NDk0NF0sIFstNjEuODgzMjQ2LCAtODAuMzkyODddLCBbLTYxLjEzODk3NiwgLTc5Ljk4MTM3MV0sIFstNjAuNjEwMTE5LCAtNzkuNjI4Njc5XSwgWy01OS41NzIwOTUsIC04MC4wNDAxNzldXV0sIFtbWy0xNTkuMjA4MTg0LCAtNzkuNDk3MDU5XSwgWy0xNjEuMTI3NjAxLCAtNzkuNjM0MjA5XSwgWy0xNjIuNDM5ODQ3LCAtNzkuMjgxNDY1XSwgWy0xNjMuMDI3NDA4LCAtNzguOTI4Nzc0XSwgWy0xNjMuMDY2NjA0LCAtNzguODY5OTY2XSwgWy0xNjMuNzEyODk2LCAtNzguNTk1NjY3XSwgWy0xNjMuNzEyODk2LCAtNzguNTk1NjY3XSwgWy0xNjMuMTA1ODAxLCAtNzguMjIzMzM4XSwgWy0xNjEuMjQ1MTEzLCAtNzguMzgwMTc2XSwgWy0xNjAuMjQ2MjA4LCAtNzguNjkzNjQ1XSwgWy0xNTkuNDgyNDA1LCAtNzkuMDQ2MzM4XSwgWy0xNTkuMjA4MTg0LCAtNzkuNDk3MDU5XV1dLCBbW1stNDUuMTU0NzU4LCAtNzguMDQ3MDddLCBbLTQzLjkyMDgyOCwgLTc4LjQ3ODEwM10sIFstNDMuNDg5OTUsIC03OS4wODU1Nl0sIFstNDMuMzcyNDM4LCAtNzkuNTE2NjQ1XSwgWy00My4zMzMyNjcsIC04MC4wMjYxMjNdLCBbLTQ0Ljg4MDUzNywgLTgwLjMzOTY0NF0sIFstNDYuNTA2MTc0LCAtODAuNTk0MzU3XSwgWy00OC4zODY0MjEsIC04MC44Mjk0ODVdLCBbLTUwLjQ4MjEwNywgLTgxLjAyNTQ0Ml0sIFstNTIuODUxOTg4LCAtODAuOTY2Njg1XSwgWy01NC4xNjQyNTksIC04MC42MzM1MjhdLCBbLTUzLjk4Nzk5MSwgLTgwLjIyMjAyOF0sIFstNTEuODUzMTM0LCAtNzkuOTQ3NzNdLCBbLTUwLjk5MTMyNiwgLTc5LjYxNDYyM10sIFstNTAuMzY0NTk1LCAtNzkuMTgzNDg3XSwgWy00OS45MTQxMzEsIC03OC44MTEyMDldLCBbLTQ5LjMwNjk1OSwgLTc4LjQ1ODU2OV0sIFstNDguNjYwNjE2LCAtNzguMDQ3MDE4XSwgWy00OC42NjA2MTYsIC03OC4wNDcwMTldLCBbLTQ4LjE1MTM5NiwgLTc4LjA0NzA3XSwgWy00Ni42NjI4NTcsIC03Ny44MzE0NzZdLCBbLTQ1LjE1NDc1OCwgLTc4LjA0NzA3XV1dLCBbW1stMTIxLjIxMTUxMSwgLTczLjUwMDk5XSwgWy0xMTkuOTE4ODUxLCAtNzMuNjU3NzI1XSwgWy0xMTguNzI0MTQzLCAtNzMuNDgxMzUzXSwgWy0xMTkuMjkyMTE5LCAtNzMuODM0MDk3XSwgWy0xMjAuMjMyMjE3LCAtNzQuMDg4ODFdLCBbLTEyMS42MjI4MywgLTc0LjAxMDQ2OF0sIFstMTIyLjYyMTczNSwgLTczLjY1Nzc3OF0sIFstMTIyLjYyMTczNSwgLTczLjY1Nzc3N10sIFstMTIyLjQwNjI0NSwgLTczLjMyNDYxOV0sIFstMTIxLjIxMTUxMSwgLTczLjUwMDk5XV1dLCBbW1stMTI1LjU1OTU2NiwgLTczLjQ4MTM1M10sIFstMTI0LjAzMTg4MiwgLTczLjg3MzI2OF0sIFstMTI0LjYxOTQ2OSwgLTczLjgzNDA5N10sIFstMTI1LjkxMjE4MSwgLTczLjczNjExOF0sIFstMTI3LjI4MzEzLCAtNzMuNDYxNzY5XSwgWy0xMjcuMjgzMTMsIC03My40NjE3NjhdLCBbLTEyNi41NTg0NzIsIC03My4yNDYyMjZdLCBbLTEyNS41NTk1NjYsIC03My40ODEzNTNdXV0sIFtbWy05OC45ODE1NSwgLTcxLjkzMzMzNF0sIFstOTcuODg0NzQzLCAtNzIuMDcwNTM1XSwgWy05Ni43ODc5MzcsIC03MS45NTI5NzFdLCBbLTk2LjIwMDM1LCAtNzIuNTIxMjA1XSwgWy05Ni45ODM3NjUsIC03Mi40NDI4NjRdLCBbLTk4LjE5ODA4MywgLTcyLjQ4MjAzNV0sIFstOTkuNDMyMDEzLCAtNzIuNDQyODY0XSwgWy0xMDAuNzgzNDU1LCAtNzIuNTAxNjJdLCBbLTEwMS44MDE4NjgsIC03Mi4zMDU2NjNdLCBbLTEwMi4zMzA3MjUsIC03MS44OTQxNjRdLCBbLTEwMi4zMzA3MjUsIC03MS44OTQxNjRdLCBbLTEwMS43MDM5NjcsIC03MS43MTc3OTJdLCBbLTEwMC40MzA5MTksIC03MS44NTQ5OTNdLCBbLTk4Ljk4MTU1LCAtNzEuOTMzMzM0XV1dLCBbW1stNjguNDUxMzQ2LCAtNzAuOTU1ODIzXSwgWy02OC4zMzM4MzQsIC03MS40MDY0OTNdLCBbLTY4LjUxMDEyOCwgLTcxLjc5ODQwN10sIFstNjguNzg0Mjk3LCAtNzIuMTcwNzM2XSwgWy02OS45NTk0NzEsIC03Mi4zMDc4ODVdLCBbLTcxLjA3NTg4OSwgLTcyLjUwMzg0Ml0sIFstNzIuMzg4MTM0LCAtNzIuNDg0MjU3XSwgWy03MS44OTg1LCAtNzIuMDkyMzQzXSwgWy03My4wNzM2MjIsIC03Mi4yMjk0OTJdLCBbLTc0LjE5MDA0LCAtNzIuMzY2NjkzXSwgWy03NC45NTM4OTUsIC03Mi4wNzI3NTddLCBbLTc1LjAxMjYyNSwgLTcxLjY2MTI1OF0sIFstNzMuOTE1ODE5LCAtNzEuMjY5MzQ1XSwgWy03My45MTU4MTksIC03MS4yNjkzNDRdLCBbLTczLjIzMDMzMSwgLTcxLjE1MTc4XSwgWy03Mi4wNzQ3MTcsIC03MS4xOTA5NTFdLCBbLTcxLjc4MDk2MiwgLTcwLjY4MTQ3M10sIFstNzEuNzIyMTgsIC03MC4zMDkxOTZdLCBbLTcxLjc0MTc5MSwgLTY5LjUwNTc4Ml0sIFstNzEuMTczODE1LCAtNjkuMDM1NDc1XSwgWy03MC4yNTMyNTIsIC02OC44Nzg3NF0sIFstNjkuNzI0NDQ3LCAtNjkuMjUxMDE3XSwgWy02OS40ODk0MjIsIC02OS42MjMzNDZdLCBbLTY5LjA1ODUxOCwgLTcwLjA3NDAxNl0sIFstNjguNzI1NTQxLCAtNzAuNTA1MTUzXSwgWy02OC40NTEzNDYsIC03MC45NTU4MjNdXV0sIFtbWy01OC42MTQxNDMsIC02NC4xNTI0NjddLCBbLTU5LjA0NTA3MywgLTY0LjM2ODAxXSwgWy01OS43ODkzNDIsIC02NC4yMTEyMjNdLCBbLTYwLjYxMTkyOCwgLTY0LjMwOTIwMl0sIFstNjEuMjk3NDE2LCAtNjQuNTQ0MzNdLCBbLTYyLjAyMjEsIC02NC43OTkwOTRdLCBbLTYyLjUxMTc2LCAtNjUuMDkzMDNdLCBbLTYyLjY0ODg1OCwgLTY1LjQ4NDk0Ml0sIFstNjIuNTkwMTI4LCAtNjUuODU3MjE5XSwgWy02Mi4xMjAwNzksIC02Ni4xOTAzMjZdLCBbLTYyLjgwNTU2NywgLTY2LjQyNTUwNV0sIFstNjMuNzQ1NjksIC02Ni41MDM4NDddLCBbLTY0LjI5NDEwNiwgLTY2LjgzNzAwNF0sIFstNjQuODgxNjkzLCAtNjcuMTUwNDc0XSwgWy02NS41MDg0MjUsIC02Ny41ODE2MV0sIFstNjUuNjY1MDgyLCAtNjcuOTUzODg3XSwgWy02NS4zMTI1NDUsIC02OC4zNjUzMzVdLCBbLTY0Ljc4MzcxNSwgLTY4LjY3ODkwOF0sIFstNjMuOTYxMTAzLCAtNjguOTEzOTg0XSwgWy02My4xOTczLCAtNjkuMjI3NTU2XSwgWy02Mi43ODU5NTUsIC02OS42MTk0MTldLCBbLTYyLjU3MDUxNiwgLTY5Ljk5MTc0N10sIFstNjIuMjc2NzM2LCAtNzAuMzgzNjYxXSwgWy02MS44MDY2NjEsIC03MC43MTY3NjhdLCBbLTYxLjUxMjkwNiwgLTcxLjA4OTA0NV0sIFstNjEuMzc1ODA5LCAtNzIuMDEwMDc0XSwgWy02MS4wODE5NzcsIC03Mi4zODIzNTFdLCBbLTYxLjAwMzY2MSwgLTcyLjc3NDI2NV0sIFstNjAuNjkwMjY5LCAtNzMuMTY2MTc5XSwgWy02MC44MjczNjcsIC03My42OTUyNDJdLCBbLTYxLjM3NTgwOSwgLTc0LjEwNjc0Ml0sIFstNjEuOTYzMzcsIC03NC40Mzk4NDhdLCBbLTYzLjI5NTIwMSwgLTc0LjU3Njk5N10sIFstNjMuNzQ1NjksIC03NC45Mjk3NF0sIFstNjQuMzUyODM2LCAtNzUuMjYyODQ3XSwgWy02NS44NjA5ODcsIC03NS42MzUxMjRdLCBbLTY3LjE5MjgxOCwgLTc1Ljc5MTkxXSwgWy02OC40NDYyODIsIC03Ni4wMDc0NTJdLCBbLTY5Ljc5NzcyNCwgLTc2LjIyMjk5NV0sIFstNzAuNjAwNzI0LCAtNzYuNjM0NDk0XSwgWy03Mi4yMDY3NzYsIC03Ni42NzM2NjVdLCBbLTczLjk2OTUzNiwgLTc2LjYzNDQ5NF0sIFstNzUuNTU1OTc3LCAtNzYuNzEyODg3XSwgWy03Ny4yNDAzNywgLTc2LjcxMjg4N10sIFstNzYuOTI2OTc5LCAtNzcuMTA0ODAyXSwgWy03NS4zOTkyOTQsIC03Ny4yODEwN10sIFstNzQuMjgyODc2LCAtNzcuNTU1NDJdLCBbLTczLjY1NjExOSwgLTc3LjkwODExMl0sIFstNzQuNzcyNTM2LCAtNzguMjIxNjMzXSwgWy03Ni40OTYxLCAtNzguMTIzNjU0XSwgWy03Ny45MjU4NTgsIC03OC4zNzg0MTldLCBbLTc3Ljk4NDY2NiwgLTc4Ljc4OTkxOF0sIFstNzguMDIzNzg1LCAtNzkuMTgxODMzXSwgWy03Ni44NDg2MzcsIC03OS41MTQ5MzldLCBbLTc2LjYzMzIyNCwgLTc5Ljg4NzIxNl0sIFstNzUuMzYwMDk3LCAtODAuMjU5NTQ1XSwgWy03My4yNDQ4NTIsIC04MC40MTYzMzFdLCBbLTcxLjQ0Mjk0NiwgLTgwLjY5MDYzXSwgWy03MC4wMTMxNjMsIC04MS4wMDQxNTFdLCBbLTY4LjE5MTY0NiwgLTgxLjMxNzY3Ml0sIFstNjUuNzA0Mjc5LCAtODEuNDc0NDU4XSwgWy02My4yNTYwMywgLTgxLjc0ODc1N10sIFstNjEuNTUyMDI2LCAtODIuMDQyNjkyXSwgWy01OS42OTE0MTYsIC04Mi4zNzU4NV0sIFstNTguNzEyMTIxLCAtODIuODQ2MTA2XSwgWy01OC4yMjI0ODcsIC04My4yMTg0MzRdLCBbLTU3LjAwODExNywgLTgyLjg2NTY5MV0sIFstNTUuMzYyODk0LCAtODIuNTcxNzU1XSwgWy01My42MTk3NzEsIC04Mi4yNTgyMzVdLCBbLTUxLjU0MzY0NCwgLTgyLjAwMzUyMV0sIFstNDkuNzYxMzUsIC04MS43MjkxNzFdLCBbLTQ3LjI3MzkzMSwgLTgxLjcwOTU4Nl0sIFstNDQuODI1NzA4LCAtODEuODQ2NzM1XSwgWy00Mi44MDgzNjMsIC04Mi4wODE5MTVdLCBbLTQyLjE2MjAyLCAtODEuNjUwODNdLCBbLTQwLjc3MTQzMywgLTgxLjM1Njg5NF0sIFstMzguMjQ0ODE4LCAtODEuMzM3MzA5XSwgWy0zNi4yNjY2NywgLTgxLjEyMTcxNV0sIFstMzQuMzg2Mzk3LCAtODAuOTA2MTcyXSwgWy0zMi4zMTAyOTYsIC04MC43NjkwMjNdLCBbLTMwLjA5NzA5OCwgLTgwLjU5MjY1MV0sIFstMjguNTQ5ODAyLCAtODAuMzM3OTM4XSwgWy0yOS4yNTQ5MDEsIC03OS45ODUxOTVdLCBbLTI5LjY4NTgwNSwgLTc5LjYzMjUwM10sIFstMjkuNjg1ODA1LCAtNzkuMjYwMjI2XSwgWy0zMS42MjQ4MDgsIC03OS4yOTkzOTddLCBbLTMzLjY4MTMyNCwgLTc5LjQ1NjEzMl0sIFstMzUuNjM5OTEyLCAtNzkuNDU2MTMyXSwgWy0zNS45MTQxMDcsIC03OS4wODM4NTVdLCBbLTM1Ljc3NzAxLCAtNzguMzM5MjQ4XSwgWy0zNS4zMjY1NDYsIC03OC4xMjM2NTRdLCBbLTMzLjg5Njc2MywgLTc3Ljg4ODUyNl0sIFstMzIuMjEyMzY5LCAtNzcuNjUzNDVdLCBbLTMwLjk5ODA1MSwgLTc3LjM1OTUxNV0sIFstMjkuNzgzNzMyLCAtNzcuMDY1NTc5XSwgWy0yOC44ODI3NzksIC03Ni42NzM2NjVdLCBbLTI3LjUxMTc1MiwgLTc2LjQ5NzM0NV0sIFstMjYuMTYwMzM2LCAtNzYuMzYwMTQ0XSwgWy0yNS40NzQ4MjIsIC03Ni4yODE4MDNdLCBbLTIzLjkyNzU1MiwgLTc2LjI0MjU4XSwgWy0yMi40NTg1OTgsIC03Ni4xMDU0MzFdLCBbLTIxLjIyNDY5NCwgLTc1LjkwOTQ3NF0sIFstMjAuMDEwMzc1LCAtNzUuNjc0MzQ2XSwgWy0xOC45MTM1NDMsIC03NS40MzkyMThdLCBbLTE3LjUyMjk4MiwgLTc1LjEyNTY5OF0sIFstMTYuNjQxNTg5LCAtNzQuNzkyNTRdLCBbLTE1LjcwMTQ5MSwgLTc0LjQ5ODYwNF0sIFstMTUuNDA3NzEsIC03NC4xMDY3NDJdLCBbLTE2LjQ2NTMyLCAtNzMuODcxNjE0XSwgWy0xNi4xMTI3ODQsIC03My40NjAxMTRdLCBbLTE1LjQ0Njg1NSwgLTczLjE0NjU0Ml0sIFstMTQuNDA4ODA1LCAtNzIuOTUwNTg1XSwgWy0xMy4zMTE5NzMsIC03Mi43MTU0NTddLCBbLTEyLjI5MzUwOCwgLTcyLjQwMTkzNl0sIFstMTEuNTEwMDY3LCAtNzIuMDEwMDc0XSwgWy0xMS4wMjA0MzMsIC03MS41Mzk3NjddLCBbLTEwLjI5NTc3NCwgLTcxLjI2NTQxNl0sIFstOS4xMDEwMTUsIC03MS4zMjQyMjRdLCBbLTguNjExMzgxLCAtNzEuNjU3MzNdLCBbLTcuNDE2NjIyLCAtNzEuNjk2NTAxXSwgWy03LjM3NzQ1MSwgLTcxLjMyNDIyNF0sIFstNi44NjgyMzIsIC03MC45MzIzMV0sIFstNS43OTA5ODUsIC03MS4wMzAyODldLCBbLTUuNTM2Mzc1LCAtNzEuNDAyNjE3XSwgWy00LjM0MTY2NywgLTcxLjQ2MTM3M10sIFstMy4wNDg5ODEsIC03MS4yODUwNTNdLCBbLTEuNzk1NDkyLCAtNzEuMTY3NDM4XSwgWy0wLjY1OTQ4OSwgLTcxLjIyNjI0Nl0sIFstMC4yMjg2MzcsIC03MS42Mzc3NDVdLCBbMC44NjgxOTUsIC03MS4zMDQ2MzldLCBbMS44ODY2ODYsIC03MS4xMjgyNjddLCBbMy4wMjI2MzgsIC03MC45OTExMThdLCBbNC4xMzkwNTUsIC03MC44NTM5MTddLCBbNS4xNTc1NDYsIC03MC42MTg3ODldLCBbNi4yNzM5MTIsIC03MC40NjIwNTVdLCBbNy4xMzU3MiwgLTcwLjI0NjUxMl0sIFs3Ljc0Mjg2NiwgLTY5Ljg5Mzc2OV0sIFs4LjQ4NzExLCAtNzAuMTQ4NTM0XSwgWzkuNTI1MTM1LCAtNzAuMDExMzMzXSwgWzEwLjI0OTg0NSwgLTcwLjQ4MTY0XSwgWzEwLjgxNzgyMSwgLTcwLjgzNDMzMl0sIFsxMS45NTM4MjQsIC03MC42MzgzNzVdLCBbMTIuNDA0Mjg3LCAtNzAuMjQ2NTEyXSwgWzEzLjQyMjc3OCwgLTY5Ljk3MjE2Ml0sIFsxNC43MzQ5OTgsIC03MC4wMzA5MThdLCBbMTUuMTI2NzU3LCAtNzAuNDAzMjQ3XSwgWzE1Ljk0OTM0MiwgLTcwLjAzMDkxOF0sIFsxNy4wMjY1ODksIC02OS45MTMzNTRdLCBbMTguMjAxNzExLCAtNjkuODc0MTgzXSwgWzE5LjI1OTM3MywgLTY5Ljg5Mzc2OV0sIFsyMC4zNzU3MzksIC03MC4wMTEzMzNdLCBbMjEuNDUyOTg1LCAtNzAuMDcwMTRdLCBbMjEuOTIzMDM0LCAtNzAuNDAzMjQ3XSwgWzIyLjU2OTQwMywgLTcwLjY5NzE4Ml0sIFsyMy42NjYxODQsIC03MC41MjA4MTFdLCBbMjQuODQxMzU3LCAtNzAuNDgxNjRdLCBbMjUuOTc3MzA5LCAtNzAuNDgxNjRdLCBbMjcuMDkzNzI2LCAtNzAuNDYyMDU1XSwgWzI4LjA5MjU4LCAtNzAuMzI0ODU0XSwgWzI5LjE1MDI0MiwgLTcwLjIwNzI5XSwgWzMwLjAzMTU4MywgLTY5LjkzMjk0XSwgWzMwLjk3MTczMywgLTY5Ljc1NjYyXSwgWzMxLjk5MDE3MiwgLTY5LjY1ODY0MV0sIFszMi43NTQwNTMsIC02OS4zODQyOTFdLCBbMzMuMzAyNDQzLCAtNjguODM1NjQyXSwgWzMzLjg3MDQxOSwgLTY4LjUwMjU4OF0sIFszNC45MDg0OTUsIC02OC42NTkyNzFdLCBbMzUuMzAwMjAyLCAtNjkuMDEyMDE0XSwgWzM2LjE2MjAxLCAtNjkuMjQ3MTQyXSwgWzM3LjIwMDAzNSwgLTY5LjE2ODc0OF0sIFszNy45MDUxMDgsIC02OS41MjE0NF0sIFszOC42NDk0MDQsIC02OS43NzYyMDVdLCBbMzkuNjY3ODk0LCAtNjkuNTQxMDc3XSwgWzQwLjAyMDQzMSwgLTY5LjEwOTk0MV0sIFs0MC45MjEzNTgsIC02OC45MzM2MjFdLCBbNDEuOTU5NDM0LCAtNjguNjAwNTE0XSwgWzQyLjkzODcwMiwgLTY4LjQ2MzMxM10sIFs0NC4xMTM4NzYsIC02OC4yNjc0MDhdLCBbNDQuODk3MjkxLCAtNjguMDUxODY2XSwgWzQ1LjcxOTkyOCwgLTY3LjgxNjczOF0sIFs0Ni41MDMzNDMsIC02Ny42MDExOTZdLCBbNDcuNDQzNDQsIC02Ny43MTg3NTldLCBbNDguMzQ0NDE5LCAtNjcuMzY2MDY4XSwgWzQ4Ljk5MDczNiwgLTY3LjA5MTcxOF0sIFs0OS45MzA4ODUsIC02Ny4xMTEzMDNdLCBbNTAuNzUzNDcxLCAtNjYuODc2MTc1XSwgWzUwLjk0OTMyNSwgLTY2LjUyMzQ4NF0sIFs1MS43OTE1NDcsIC02Ni4yNDkxMzNdLCBbNTIuNjE0MTMzLCAtNjYuMDUzMTc2XSwgWzUzLjYxMzAzOCwgLTY1Ljg5NjM5XSwgWzU0LjUzMzU1LCAtNjUuODE4MDQ5XSwgWzU1LjQxNDk0MywgLTY1Ljg3NjgwNV0sIFs1Ni4zNTUwNDEsIC02NS45NzQ3ODNdLCBbNTcuMTU4MDkzLCAtNjYuMjQ5MTMzXSwgWzU3LjI1NTk2OCwgLTY2LjY4MDIxOF0sIFs1OC4xMzczNjEsIC02Ny4wMTMzMjRdLCBbNTguNzQ0NTA4LCAtNjcuMjg3Njc1XSwgWzU5LjkzOTMxOCwgLTY3LjQwNTIzOV0sIFs2MC42MDUyMjEsIC02Ny42Nzk1ODldLCBbNjEuNDI3ODA2LCAtNjcuOTUzODg3XSwgWzYyLjM4NzQ4OSwgLTY4LjAxMjY5NV0sIFs2My4xOTA0OSwgLTY3LjgxNjczOF0sIFs2NC4wNTIzNDksIC02Ny40MDUyMzldLCBbNjQuOTkyNDQ3LCAtNjcuNjIwNzI5XSwgWzY1Ljk3MTcxNSwgLTY3LjczODM0NV0sIFs2Ni45MTE4NjQsIC02Ny44NTU5MDldLCBbNjcuODkxMTMzLCAtNjcuOTM0MzAyXSwgWzY4Ljg5MDAzOCwgLTY3LjkzNDMwMl0sIFs2OS43MTI2MjQsIC02OC45NzI3OTFdLCBbNjkuNjczNDUzLCAtNjkuMjI3NTU2XSwgWzY5LjU1NTk0MSwgLTY5LjY3ODIyNl0sIFs2OC41OTYyNTgsIC02OS45MzI5NF0sIFs2Ny44MTI3NCwgLTcwLjMwNTI2OF0sIFs2Ny45NDk4ODksIC03MC42OTcxODJdLCBbNjkuMDY2MzA3LCAtNzAuNjc3NTQ1XSwgWzY4LjkyOTE1NywgLTcxLjA2OTQ1OV0sIFs2OC40MTk5ODksIC03MS40NDE3ODhdLCBbNjcuOTQ5ODg5LCAtNzEuODUzMjg3XSwgWzY4LjcxMzc3LCAtNzIuMTY2ODA4XSwgWzY5Ljg2OTMwNywgLTcyLjI2NDc4N10sIFs3MS4wMjQ4OTUsIC03Mi4wODg0MTVdLCBbNzEuNTczMjg1LCAtNzEuNjk2NTAxXSwgWzcxLjkwNjI4OCwgLTcxLjMyNDIyNF0sIFs3Mi40NTQ2MjcsIC03MS4wMTA3MDNdLCBbNzMuMDgxNDEsIC03MC43MTY3NjhdLCBbNzMuMzM2MDIsIC03MC4zNjQwMjRdLCBbNzMuODY0ODc3LCAtNjkuODc0MTgzXSwgWzc0LjQ5MTU1NywgLTY5Ljc3NjIwNV0sIFs3NS42Mjc1NiwgLTY5LjczNzAzNF0sIFs3Ni42MjY0NjUsIC02OS42MTk0MTldLCBbNzcuNjQ0OTA0LCAtNjkuNDYyNjg0XSwgWzc4LjEzNDUzOSwgLTY5LjA3MDc3XSwgWzc4LjQyODM3MSwgLTY4LjY5ODQ0MV0sIFs3OS4xMTM4NTksIC02OC4zMjYyMTZdLCBbODAuMDkzMTI3LCAtNjguMDcxNTAzXSwgWzgwLjkzNTM1LCAtNjcuODc1NTQ2XSwgWzgxLjQ4Mzc5MiwgLTY3LjU0MjM4OF0sIFs4Mi4wNTE3NjcsIC02Ny4zNjYwNjhdLCBbODIuNzc2NDI2LCAtNjcuMjA5MjgyXSwgWzgzLjc3NTMzMSwgLTY3LjMwNzI2XSwgWzg0LjY3NjIwNiwgLTY3LjIwOTI4Ml0sIFs4NS42NTU1MjcsIC02Ny4wOTE3MThdLCBbODYuNzUyMzU5LCAtNjcuMTUwNDc0XSwgWzg3LjQ3NzAxNywgLTY2Ljg3NjE3NV0sIFs4Ny45ODYyODksIC02Ni4yMDk5MTFdLCBbODguMzU4NDExLCAtNjYuNDg0MjYxXSwgWzg4LjgyODQwOCwgLTY2Ljk1NDU2OF0sIFs4OS42NzA2MywgLTY3LjE1MDQ3NF0sIFs5MC42MzAzNjUsIC02Ny4yMjg4NjddLCBbOTEuNTkwMSwgLTY3LjExMTMwM10sIFs5Mi42MDg1MzksIC02Ny4xODk2OTZdLCBbOTMuNTQ4NjM3LCAtNjcuMjA5MjgyXSwgWzk0LjE3NTQyLCAtNjcuMTExMzAzXSwgWzk1LjAxNzU5MSwgLTY3LjE3MDExMV0sIFs5NS43ODE0NzIsIC02Ny4zODU2NTNdLCBbOTYuNjgyMzk5LCAtNjcuMjQ4NTA0XSwgWzk3Ljc1OTY0NiwgLTY3LjI0ODUwNF0sIFs5OC42ODAyMSwgLTY3LjExMTMwM10sIFs5OS43MTgxODIsIC02Ny4yNDg1MDRdLCBbMTAwLjM4NDE4OCwgLTY2LjkxNTM0Nl0sIFsxMDAuODkzMzU2LCAtNjYuNTgyMjRdLCBbMTAxLjU3ODg5NiwgLTY2LjMwNzg5XSwgWzEwMi44MzI0MTEsIC02NS41NjMyODRdLCBbMTAzLjQ3ODY3NiwgLTY1LjcwMDQ4NV0sIFsxMDQuMjQyNTU3LCAtNjUuOTc0NzgzXSwgWzEwNC45MDg0NiwgLTY2LjMyNzUyN10sIFsxMDYuMTgxNTYxLCAtNjYuOTM0OTMxXSwgWzEwNy4xNjA4ODEsIC02Ni45NTQ1NjhdLCBbMTA4LjA4MTM5MywgLTY2Ljk1NDU2OF0sIFsxMDkuMTU4NjQsIC02Ni44MzcwMDRdLCBbMTEwLjIzNTgzNSwgLTY2LjY5OTgwNF0sIFsxMTEuMDU4NDcyLCAtNjYuNDI1NTA1XSwgWzExMS43NDM5NiwgLTY2LjEzMTU3XSwgWzExMi44NjAzNzgsIC02Ni4wOTIzNDddLCBbMTEzLjYwNDY3MywgLTY1Ljg3NjgwNV0sIFsxMTQuMzg4MDg4LCAtNjYuMDcyNzYyXSwgWzExNC44OTczMDgsIC02Ni4zODYyODNdLCBbMTE1LjYwMjM4MSwgLTY2LjY5OTgwNF0sIFsxMTYuNjk5MTYxLCAtNjYuNjYwNjMzXSwgWzExNy4zODQ3MDEsIC02Ni45MTUzNDZdLCBbMTE4LjU3OTQ2LCAtNjcuMTcwMTExXSwgWzExOS44MzI5MjQsIC02Ny4yNjgwODldLCBbMTIwLjg3MSwgLTY3LjE4OTY5Nl0sIFsxMjEuNjU0NDE1LCAtNjYuODc2MTc1XSwgWzEyMi4zMjAzNjksIC02Ni41NjI2NTRdLCBbMTIzLjIyMTI5NiwgLTY2LjQ4NDI2MV0sIFsxMjQuMTIyMjc0LCAtNjYuNjIxNDYyXSwgWzEyNS4xNjAyNDcsIC02Ni43MTkzODldLCBbMTI2LjEwMDM5NiwgLTY2LjU2MjY1NF0sIFsxMjcuMDAxNDI3LCAtNjYuNTYyNjU0XSwgWzEyNy44ODI3NjgsIC02Ni42NjA2MzNdLCBbMTI4LjgwMzI4LCAtNjYuNzU4NjExXSwgWzEyOS43MDQyNTksIC02Ni41ODIyNF0sIFsxMzAuNzgxNDU0LCAtNjYuNDI1NTA1XSwgWzEzMS43OTk5NDUsIC02Ni4zODYyODNdLCBbMTMyLjkzNTg5NiwgLTY2LjM4NjI4M10sIFsxMzMuODU2NDYsIC02Ni4yODgzMDRdLCBbMTM0Ljc1NzM4NywgLTY2LjIwOTk2M10sIFsxMzUuMDMxNTgyLCAtNjUuNzIwMDddLCBbMTM1LjA3MDc1MywgLTY1LjMwODU3MV0sIFsxMzUuNjk3NDg1LCAtNjUuNTgyODY5XSwgWzEzNS44NzM4MDUsIC02Ni4wMzM1OTFdLCBbMTM2LjIwNjcwNSwgLTY2LjQ0NTA5XSwgWzEzNi42MTgwNDksIC02Ni43NzgxOTddLCBbMTM3LjQ2MDI3MSwgLTY2Ljk1NDU2OF0sIFsxMzguNTk2MjIzLCAtNjYuODk1NzYxXSwgWzEzOS45MDg0NDIsIC02Ni44NzYxNzVdLCBbMTQwLjgwOTQyMSwgLTY2LjgxNzM2N10sIFsxNDIuMTIxNjkyLCAtNjYuODE3MzY3XSwgWzE0My4wNjE4NDIsIC02Ni43OTc3ODJdLCBbMTQ0LjM3NDA2MSwgLTY2LjgzNzAwNF0sIFsxNDUuNDkwNDI3LCAtNjYuOTE1MzQ2XSwgWzE0Ni4xOTU1NTIsIC02Ny4yMjg4NjddLCBbMTQ1Ljk5OTY5OSwgLTY3LjYwMTE5Nl0sIFsxNDYuNjQ2MDY3LCAtNjcuODk1MTMxXSwgWzE0Ny43MjMyNjMsIC02OC4xMzAyNTldLCBbMTQ4LjgzOTYyOSwgLTY4LjM4NTAyNF0sIFsxNTAuMTMyMzE0LCAtNjguNTYxMjkyXSwgWzE1MS40ODM3MDUsIC02OC43MTgxM10sIFsxNTIuNTAyMjQ3LCAtNjguODc0ODEzXSwgWzE1My42MzgxOTksIC02OC44OTQ1MDJdLCBbMTU0LjI4NDU2NywgLTY4LjU2MTI5Ml0sIFsxNTUuMTY1ODU3LCAtNjguODM1NjQyXSwgWzE1NS45Mjk3OSwgLTY5LjE0OTIxNV0sIFsxNTYuODExMTMyLCAtNjkuMzg0MjkxXSwgWzE1OC4wMjU1MjgsIC02OS40ODIyNjldLCBbMTU5LjE4MTAxMywgLTY5LjU5OTgzM10sIFsxNTkuNjcwNjk5LCAtNjkuOTkxNzQ3XSwgWzE2MC44MDY2NSwgLTcwLjIyNjg3NV0sIFsxNjEuNTcwNDc5LCAtNzAuNTc5NjE4XSwgWzE2Mi42ODY4OTcsIC03MC43MzYzNTNdLCBbMTYzLjg0MjQzNCwgLTcwLjcxNjc2OF0sIFsxNjQuOTE5NjgxLCAtNzAuNzc1NTI0XSwgWzE2Ni4xMTQ0NCwgLTcwLjc1NTkzOF0sIFsxNjcuMzA5MDk1LCAtNzAuODM0MzMyXSwgWzE2OC40MjU2MTYsIC03MC45NzE0ODFdLCBbMTY5LjQ2MzU4OSwgLTcxLjIwNjY2XSwgWzE3MC41MDE2NjUsIC03MS40MDI2MTddLCBbMTcxLjIwNjc5LCAtNzEuNjk2NTAxXSwgWzE3MS4wODkyMjcsIC03Mi4wODg0MTVdLCBbMTcwLjU2MDQyMiwgLTcyLjQ0MTE1OV0sIFsxNzAuMTA5OTU4LCAtNzIuODkxODI5XSwgWzE2OS43NTczNywgLTczLjI0NDUyXSwgWzE2OS4yODczMjEsIC03My42NTYwMl0sIFsxNjcuOTc1MTAxLCAtNzMuODEyODA2XSwgWzE2Ny4zODc0ODksIC03NC4xNjU0OThdLCBbMTY2LjA5NDgwMywgLTc0LjM4MTA0XSwgWzE2NS42NDQzOTEsIC03NC43NzI5NTRdLCBbMTY0Ljk1ODg1MSwgLTc1LjE0NTI4M10sIFsxNjQuMjM0MTkzLCAtNzUuNDU4ODA0XSwgWzE2My44MjI3OTcsIC03NS44NzAzMDNdLCBbMTYzLjU2ODIzOSwgLTc2LjI0MjU4XSwgWzE2My40NzAyNiwgLTc2LjY5MzMwMl0sIFsxNjMuNDg5ODk3LCAtNzcuMDY1NTc5XSwgWzE2NC4wNTc4NzMsIC03Ny40NTc0NDJdLCBbMTY0LjI3MzM2MywgLTc3LjgyOTc3XSwgWzE2NC43NDM0NjQsIC03OC4xODI1MTRdLCBbMTY2LjYwNDEyNiwgLTc4LjMxOTYxMV0sIFsxNjYuOTk1NzgxLCAtNzguNzUwNzQ4XSwgWzE2NS4xOTM4NzYsIC03OC45MDc0ODNdLCBbMTYzLjY2NjIxNywgLTc5LjEyMzAyNV0sIFsxNjEuNzY2Mzg1LCAtNzkuMTYyMjQ4XSwgWzE2MC45MjQxNjIsIC03OS43MzA0ODJdLCBbMTYwLjc0Nzg5NCwgLTgwLjIwMDczN10sIFsxNjAuMzE2OTY0LCAtODAuNTczMDY2XSwgWzE1OS43ODgyMTEsIC04MC45NDUzOTVdLCBbMTYxLjEyMDAxNiwgLTgxLjI3ODUwMV0sIFsxNjEuNjI5Mjg3LCAtODEuNjkwMDAxXSwgWzE2Mi40OTA5OTIsIC04Mi4wNjIyNzhdLCBbMTYzLjcwNTMzNiwgLTgyLjM5NTQzNV0sIFsxNjUuMDk1OTQ5LCAtODIuNzA4OTU2XSwgWzE2Ni42MDQxMjYsIC04My4wMjI0NzddLCBbMTY4Ljg5NTY2NSwgLTgzLjMzNTk5OF0sIFsxNjkuNDA0NzgyLCAtODMuODI1ODkxXSwgWzE3Mi4yODM5MzQsIC04NC4wNDE0MzNdLCBbMTcyLjQ3NzA0OSwgLTg0LjExNzkxNF0sIFsxNzMuMjI0MDgzLCAtODQuNDEzNzFdLCBbMTc1Ljk4NTY3MiwgLTg0LjE1ODk5N10sIFsxNzguMjc3MjEyLCAtODQuNDcyNTE4XSwgWzE4MCwgLTg0LjcxMzM4XSwgWy0xNzkuOTQyNDk5LCAtODQuNzIxNDQzXSwgWy0xNzkuMDU4Njc3LCAtODQuMTM5NDEyXSwgWy0xNzcuMjU2NzcyLCAtODQuNDUyOTMzXSwgWy0xNzcuMTQwODA3LCAtODQuNDE3OTQxXSwgWy0xNzYuMDg0NjczLCAtODQuMDk5MjU5XSwgWy0xNzUuOTQ3MjM1LCAtODQuMTEwNDQ5XSwgWy0xNzUuODI5ODgyLCAtODQuMTE3OTE0XSwgWy0xNzQuMzgyNTAzLCAtODQuNTM0MzIzXSwgWy0xNzMuMTE2NTU5LCAtODQuMTE3OTE0XSwgWy0xNzIuODg5MTA2LCAtODQuMDYxMDE5XSwgWy0xNjkuOTUxMjIzLCAtODMuODg0NjQ3XSwgWy0xNjguOTk5OTg5LCAtODQuMTE3OTE0XSwgWy0xNjguNTMwMTk5LCAtODQuMjM3MzldLCBbLTE2Ny4wMjIwOTksIC04NC41NzA0OTddLCBbLTE2NC4xODIxNDQsIC04NC44MjUyMV0sIFstMTYxLjkyOTc3NSwgLTg1LjEzODczMV0sIFstMTU4LjA3MTM4LCAtODUuMzczOTFdLCBbLTE1NS4xOTIyNTMsIC04NS4wOTk1Nl0sIFstMTUwLjk0MjA5OSwgLTg1LjI5NTUxN10sIFstMTQ4LjUzMzA3MywgLTg1LjYwOTAzOF0sIFstMTQ1Ljg4ODkxOCwgLTg1LjMxNTEwMl0sIFstMTQzLjEwNzcxOCwgLTg1LjA0MDc1Ml0sIFstMTQyLjg5MjI3OSwgLTg0LjU3MDQ5N10sIFstMTQ2LjgyOTA2OCwgLTg0LjUzMTI3NF0sIFstMTUwLjA2MDczMiwgLTg0LjI5NjE0Nl0sIFstMTUwLjkwMjkyOCwgLTgzLjkwNDIzMl0sIFstMTUzLjU4NjIwMSwgLTgzLjY4ODY5XSwgWy0xNTMuNDA5OTA3LCAtODMuMjM4MDJdLCBbLTE1My4wMzc3NTksIC04Mi44MjY1Ml0sIFstMTUyLjY2NTYzNywgLTgyLjQ1NDE5Ml0sIFstMTUyLjg2MTUxNywgLTgyLjA0MjY5Ml0sIFstMTU0LjUyNjI5OSwgLTgxLjc2ODM5NF0sIFstMTU1LjI5MDE4LCAtODEuNDE1NjVdLCBbLTE1Ni44Mzc0NSwgLTgxLjEwMjEyOV0sIFstMTU0LjQwODc4NywgLTgxLjE2MDkzN10sIFstMTUyLjA5NzY2MiwgLTgxLjAwNDE1MV0sIFstMTUwLjY0ODI5MywgLTgxLjMzNzMwOV0sIFstMTQ4Ljg2NTk5OCwgLTgxLjA0MzM3M10sIFstMTQ3LjIyMDc1LCAtODAuNjcxMDQ1XSwgWy0xNDYuNDE3NzQ5LCAtODAuMzM3OTM4XSwgWy0xNDYuNzcwMjg2LCAtNzkuOTI2NDM5XSwgWy0xNDguMDYyOTQ3LCAtNzkuNjUyMDg5XSwgWy0xNDkuNTMxOTAxLCAtNzkuMzU4MjA1XSwgWy0xNTEuNTg4NDE2LCAtNzkuMjk5Mzk3XSwgWy0xNTMuMzkwMzIyLCAtNzkuMTYyMjQ4XSwgWy0xNTUuMzI5Mzc2LCAtNzkuMDY0MjY5XSwgWy0xNTUuOTc1NjY4LCAtNzguNjkxOTRdLCBbLTE1Ny4yNjgzMDIsIC03OC4zNzg0MTldLCBbLTE1OC4wNTE3NjgsIC03OC4wMjU2NzZdLCBbLTE1OC4zNjUxMzQsIC03Ni44ODkyMDddLCBbLTE1Ny44NzU0NzQsIC03Ni45ODcyMzhdLCBbLTE1Ni45NzQ1NzMsIC03Ny4zMDA3NTldLCBbLTE1NS4zMjkzNzYsIC03Ny4yMDI3MjhdLCBbLTE1My43NDI4MzIsIC03Ny4wNjU1NzldLCBbLTE1Mi45MjAyNDcsIC03Ny40OTY2NjRdLCBbLTE1MS4zMzM3OCwgLTc3LjM5ODczN10sIFstMTUwLjAwMTk1LCAtNzcuMTgzMTQzXSwgWy0xNDguNzQ4NDg2LCAtNzYuOTA4ODQ1XSwgWy0xNDcuNjEyNDgzLCAtNzYuNTc1NzM4XSwgWy0xNDYuMTA0NDA5LCAtNzYuNDc3NzZdLCBbLTE0Ni4xNDM1MjgsIC03Ni4xMDU0MzFdLCBbLTE0Ni40OTYwOTEsIC03NS43MzMxNTRdLCBbLTE0Ni4yMDIzMSwgLTc1LjM4MDQxMV0sIFstMTQ0LjkwOTYyNCwgLTc1LjIwNDAzOV0sIFstMTQ0LjMyMjAzNywgLTc1LjUzNzE5N10sIFstMTQyLjc5NDM1MywgLTc1LjM0MTI0XSwgWy0xNDEuNjM4NzY0LCAtNzUuMDg2NDc1XSwgWy0xNDAuMjA5MDA3LCAtNzUuMDY2ODldLCBbLTEzOC44NTc1OSwgLTc0Ljk2ODkxMV0sIFstMTM3LjUwNjIsIC03NC43MzM3ODNdLCBbLTEzNi40Mjg5MDEsIC03NC41MTgyNDFdLCBbLTEzNS4yMTQ1ODMsIC03NC4zMDI2OTldLCBbLTEzNC40MzExOTQsIC03NC4zNjE0NTVdLCBbLTEzMy43NDU2NTQsIC03NC40Mzk4NDhdLCBbLTEzMi4yNTcxNjgsIC03NC4zMDI2OTldLCBbLTEzMC45MjUzMTEsIC03NC40NzkwMTldLCBbLTEyOS41NTQyODQsIC03NC40NTk0MzNdLCBbLTEyOC4yNDIwMzgsIC03NC4zMjIyODRdLCBbLTEyNi44OTA2MjIsIC03NC40MjAyNjNdLCBbLTEyNS40MDIwODIsIC03NC41MTgyNDFdLCBbLTEyNC4wMTE0OTYsIC03NC40NzkwMTldLCBbLTEyMi41NjIxNTIsIC03NC40OTg2MDRdLCBbLTEyMS4wNzM2MTMsIC03NC41MTgyNDFdLCBbLTExOS43MDI1NiwgLTc0LjQ3OTAxOV0sIFstMTE4LjY4NDE0NSwgLTc0LjE4NTA4M10sIFstMTE3LjQ2OTgwMSwgLTc0LjAyODM0OF0sIFstMTE2LjIxNjMxMiwgLTc0LjI0Mzg5MV0sIFstMTE1LjAyMTU1MiwgLTc0LjA2NzUxOV0sIFstMTEzLjk0NDMzMSwgLTczLjcxNDgyOF0sIFstMTEzLjI5Nzk4OCwgLTc0LjAyODM0OF0sIFstMTEyLjk0NTQ1MiwgLTc0LjM4MTA0XSwgWy0xMTIuMjk5MDgzLCAtNzQuNzE0MTk4XSwgWy0xMTEuMjYxMDU5LCAtNzQuNDIwMjYzXSwgWy0xMTAuMDY2MzI1LCAtNzQuNzkyNTRdLCBbLTEwOC43MTQ5MDksIC03NC45MTAxMDNdLCBbLTEwNy41NTkzNDYsIC03NS4xODQ0NTRdLCBbLTEwNi4xNDkxNDgsIC03NS4xMjU2OThdLCBbLTEwNC44NzYwNzQsIC03NC45NDkzMjZdLCBbLTEwMy4zNjc5NDksIC03NC45ODg0OTddLCBbLTEwMi4wMTY1MDcsIC03NS4xMjU2OThdLCBbLTEwMC42NDU1MzEsIC03NS4zMDIwMThdLCBbLTEwMC4xMTY3LCAtNzQuODcwOTMzXSwgWy0xMDAuNzYzMDQzLCAtNzQuNTM3ODI2XSwgWy0xMDEuMjUyNzAzLCAtNzQuMTg1MDgzXSwgWy0xMDIuNTQ1MzM3LCAtNzQuMTA2NzQyXSwgWy0xMDMuMTEzMzEzLCAtNzMuNzM0NDEzXSwgWy0xMDMuMzI4NzUyLCAtNzMuMzYyMDg0XSwgWy0xMDMuNjgxMjg5LCAtNzIuNjE3NTNdLCBbLTEwMi45MTc0ODUsIC03Mi43NTQ2NzldLCBbLTEwMS42MDUyNCwgLTcyLjgxMzQzNl0sIFstMTAwLjMxMjUyOCwgLTcyLjc1NDY3OV0sIFstOTkuMTM3MzgsIC03Mi45MTE0MTRdLCBbLTk4LjExODg4OSwgLTczLjIwNTM1XSwgWy05Ny42ODgwMzcsIC03My41NTgwNDFdLCBbLTk2LjMzNjU5NSwgLTczLjYxNjg0OV0sIFstOTUuMDQzOTYxLCAtNzMuNDc5N10sIFstOTMuNjcyOTA3LCAtNzMuMjgzNzQzXSwgWy05Mi40MzkwMDMsIC03My4xNjYxNzldLCBbLTkxLjQyMDU2NCwgLTczLjQwMTMwN10sIFstOTAuMDg4NzMzLCAtNzMuMzIyOTE0XSwgWy04OS4yMjY5NTEsIC03Mi41NTg3MjJdLCBbLTg4LjQyMzk1MSwgLTczLjAwOTM5M10sIFstODcuMjY4MzM3LCAtNzMuMTg1NzY0XSwgWy04Ni4wMTQ4MjIsIC03My4wODc3ODZdLCBbLTg1LjE5MjIzNiwgLTczLjQ3OTddLCBbLTgzLjg3OTk5MSwgLTczLjUxODg3MV0sIFstODIuNjY1NjQ2LCAtNzMuNjM2NDM0XSwgWy04MS40NzA5MTMsIC03My44NTE5NzddLCBbLTgwLjY4NzQ0NywgLTczLjQ3OTddLCBbLTgwLjI5NTc5MSwgLTczLjEyNjk1Nl0sIFstNzkuMjk2ODg2LCAtNzMuNTE4ODcxXSwgWy03Ny45MjU4NTgsIC03My40MjA4OTJdLCBbLTc2LjkwNzM2NywgLTczLjYzNjQzNF0sIFstNzYuMjIxODc5LCAtNzMuOTY5NTQxXSwgWy03NC44OTAwNDksIC03My44NzE2MTRdLCBbLTczLjg1MjAyNCwgLTczLjY1NjAyXSwgWy03Mi44MzM1MzMsIC03My40MDEzMDddLCBbLTcxLjYxOTIxNSwgLTczLjI2NDE1N10sIFstNzAuMjA5MDQyLCAtNzMuMTQ2NTQyXSwgWy02OC45MzU5MTYsIC03My4wMDkzOTNdLCBbLTY3Ljk1NjYyMiwgLTcyLjc5Mzg1XSwgWy02Ny4zNjkwNjEsIC03Mi40ODAzMjldLCBbLTY3LjEzNDAzNiwgLTcyLjA0OTI0NF0sIFstNjcuMjUxNTQ4LCAtNzEuNjM3NzQ1XSwgWy02Ny41NjQ5NCwgLTcxLjI0NTgzMV0sIFstNjcuOTE3NDc3LCAtNzAuODUzOTE3XSwgWy02OC4yMzA4NDMsIC03MC40NjIwNTVdLCBbLTY4LjQ4NTQ1MiwgLTcwLjEwOTMxMV0sIFstNjguNTQ0MjA5LCAtNjkuNzE3Mzk3XSwgWy02OC40NDYyODIsIC02OS4zMjU1MzVdLCBbLTY3Ljk3NjIzMywgLTY4Ljk1MzIwNl0sIFstNjcuNTg0NSwgLTY4LjU0MTcwN10sIFstNjcuNDI3ODQzLCAtNjguMTQ5ODQ0XSwgWy02Ny42MjM2NywgLTY3LjcxODc1OV0sIFstNjcuNzQxMTgzLCAtNjcuMzI2ODQ1XSwgWy02Ny4yNTE1NDgsIC02Ni44NzYxNzVdLCBbLTY2LjcwMzE4NCwgLTY2LjU4MjI0XSwgWy02Ni4wNTY4MTUsIC02Ni4yMDk5NjNdLCBbLTY1LjM3MTMyNywgLTY1Ljg5NjM5XSwgWy02NC41NjgyNzYsIC02NS42MDI1MDZdLCBbLTY0LjE3NjU0MiwgLTY1LjE3MTQyM10sIFstNjMuNjI4MTUyLCAtNjQuODk3MDczXSwgWy02My4wMDEzOTQsIC02NC42NDIzMDhdLCBbLTYyLjA0MTY4NiwgLTY0LjU4MzU1Ml0sIFstNjEuNDE0OTI4LCAtNjQuMjcwMDMxXSwgWy02MC43MDk4NTUsIC02NC4wNzQwNzRdLCBbLTU5Ljg4NzI2OSwgLTYzLjk1NjUxXSwgWy01OS4xNjI1ODUsIC02My43MDE3NDVdLCBbLTU4LjU5NDU1NywgLTYzLjM4ODIyNF0sIFstNTcuODExMTQzLCAtNjMuMjcwNjZdLCBbLTU3LjIyMzU4MiwgLTYzLjUyNTQyNV0sIFstNTcuNTk1NzMsIC02My44NTg1MzJdLCBbLTU4LjYxNDE0MywgLTY0LjE1MjQ2N11dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQVRBIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJBbnRhcmN0aWNhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s2OC45MzUsIC00OC42MjVdLCBbNjkuNTgsIC00OC45NF0sIFs3MC41MjUsIC00OS4wNjVdLCBbNzAuNTYsIC00OS4yNTVdLCBbNzAuMjgsIC00OS43MV0sIFs2OC43NDUsIC00OS43NzVdLCBbNjguNzIsIC00OS4yNDI1XSwgWzY4Ljg2NzUsIC00OC44M10sIFs2OC45MzUsIC00OC42MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFURiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRnJlbmNoIFNvdXRoZXJuIGFuZCBBbnRhcmN0aWMgTGFuZHMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNDUuMzk3OTc4LCAtNDAuNzkyNTQ5XSwgWzE0Ni4zNjQxMjEsIC00MS4xMzc2OTVdLCBbMTQ2LjkwODU4NCwgLTQxLjAwMDU0Nl0sIFsxNDcuNjg5MjU5LCAtNDAuODA4MjU4XSwgWzE0OC4yODkwNjgsIC00MC44NzU0MzhdLCBbMTQ4LjM1OTg2NSwgLTQyLjA2MjQ0NV0sIFsxNDguMDE3MzAxLCAtNDIuNDA3MDI0XSwgWzE0Ny45MTQwNTIsIC00My4yMTE1MjJdLCBbMTQ3LjU2NDU2NCwgLTQyLjkzNzY4OV0sIFsxNDYuODcwMzQzLCAtNDMuNjM0NTk3XSwgWzE0Ni42NjMzMjcsIC00My41ODA4NTRdLCBbMTQ2LjA0ODM3OCwgLTQzLjU0OTc0NV0sIFsxNDUuNDMxOTMsIC00Mi42OTM3NzZdLCBbMTQ1LjI5NTA5LCAtNDIuMDMzNjFdLCBbMTQ0LjcxODA3MSwgLTQxLjE2MjU1Ml0sIFsxNDQuNzQzNzU1LCAtNDAuNzAzOTc1XSwgWzE0NS4zOTc5NzgsIC00MC43OTI1NDldXV0sIFtbWzE0My41NjE4MTEsIC0xMy43NjM2NTZdLCBbMTQzLjkyMjA5OSwgLTE0LjU0ODMxMV0sIFsxNDQuNTYzNzE0LCAtMTQuMTcxMTc2XSwgWzE0NC44OTQ5MDgsIC0xNC41OTQ0NThdLCBbMTQ1LjM3NDcyNCwgLTE0Ljk4NDk3Nl0sIFsxNDUuMjcxOTkxLCAtMTUuNDI4MjA1XSwgWzE0NS40ODUyNiwgLTE2LjI4NTY3Ml0sIFsxNDUuNjM3MDMzLCAtMTYuNzg0OTE4XSwgWzE0NS44ODg5MDQsIC0xNi45MDY5MjZdLCBbMTQ2LjE2MDMwOSwgLTE3Ljc2MTY1NV0sIFsxNDYuMDYzNjc0LCAtMTguMjgwMDczXSwgWzE0Ni4zODc0NzgsIC0xOC45NTgyNzRdLCBbMTQ3LjQ3MTA4MiwgLTE5LjQ4MDcyM10sIFsxNDguMTc3NjAyLCAtMTkuOTU1OTM5XSwgWzE0OC44NDg0MTQsIC0yMC4zOTEyMV0sIFsxNDguNzE3NDY1LCAtMjAuNjMzNDY5XSwgWzE0OS4yODk0MiwgLTIxLjI2MDUxMV0sIFsxNDkuNjc4MzM3LCAtMjIuMzQyNTEyXSwgWzE1MC4wNzczODIsIC0yMi4xMjI3ODRdLCBbMTUwLjQ4MjkzOSwgLTIyLjU1NjE0Ml0sIFsxNTAuNzI3MjY1LCAtMjIuNDAyNDA1XSwgWzE1MC44OTk1NTQsIC0yMy40NjIyMzddLCBbMTUxLjYwOTE3NSwgLTI0LjA3NjI1Nl0sIFsxNTIuMDczNTQsIC0yNC40NTc4ODddLCBbMTUyLjg1NTE5NywgLTI1LjI2NzUwMV0sIFsxNTMuMTM2MTYyLCAtMjYuMDcxMTczXSwgWzE1My4xNjE5NDksIC0yNi42NDEzMTldLCBbMTUzLjA5MjkwOSwgLTI3LjI2MDNdLCBbMTUzLjU2OTQ2OSwgLTI4LjExMDA2N10sIFsxNTMuNTEyMTA4LCAtMjguOTk1MDc3XSwgWzE1My4zMzkwOTUsIC0yOS40NTgyMDJdLCBbMTUzLjA2OTI0MSwgLTMwLjM1MDI0XSwgWzE1My4wODk2MDIsIC0zMC45MjM2NDJdLCBbMTUyLjg5MTU3OCwgLTMxLjY0MDQ0Nl0sIFsxNTIuNDUwMDAyLCAtMzIuNTUwMDAzXSwgWzE1MS43MDkxMTcsIC0zMy4wNDEzNDJdLCBbMTUxLjM0Mzk3MiwgLTMzLjgxNjAyM10sIFsxNTEuMDEwNTU1LCAtMzQuMzEwMzZdLCBbMTUwLjcxNDEzOSwgLTM1LjE3MzQ2XSwgWzE1MC4zMjgyMiwgLTM1LjY3MTg3OV0sIFsxNTAuMDc1MjEyLCAtMzYuNDIwMjA2XSwgWzE0OS45NDYxMjQsIC0zNy4xMDkwNTJdLCBbMTQ5Ljk5NzI4NCwgLTM3LjQyNTI2MV0sIFsxNDkuNDIzODgyLCAtMzcuNzcyNjgxXSwgWzE0OC4zMDQ2MjIsIC0zNy44MDkwNjFdLCBbMTQ3LjM4MTczMywgLTM4LjIxOTIxN10sIFsxNDYuOTIyMTIzLCAtMzguNjA2NTMyXSwgWzE0Ni4zMTc5MjIsIC0zOS4wMzU3NTddLCBbMTQ1LjQ4OTY1MiwgLTM4LjU5Mzc2OF0sIFsxNDQuODc2OTc2LCAtMzguNDE3NDQ4XSwgWzE0NS4wMzIyMTIsIC0zNy44OTYxODhdLCBbMTQ0LjQ4NTY4MiwgLTM4LjA4NTMyNF0sIFsxNDMuNjA5OTc0LCAtMzguODA5NDY1XSwgWzE0Mi43NDU0MjcsIC0zOC41MzgyNjhdLCBbMTQyLjE3ODMzLCAtMzguMzgwMDM0XSwgWzE0MS42MDY1ODIsIC0zOC4zMDg1MTRdLCBbMTQwLjYzODU3OSwgLTM4LjAxOTMzM10sIFsxMzkuOTkyMTU4LCAtMzcuNDAyOTM2XSwgWzEzOS44MDY1ODgsIC0zNi42NDM2MDNdLCBbMTM5LjU3NDE0OCwgLTM2LjEzODM2Ml0sIFsxMzkuMDgyODA4LCAtMzUuNzMyNzU0XSwgWzEzOC4xMjA3NDgsIC0zNS42MTIyOTZdLCBbMTM4LjQ0OTQ2MiwgLTM1LjEyNzI2MV0sIFsxMzguMjA3NTY0LCAtMzQuMzg0NzIzXSwgWzEzNy43MTkxNywgLTM1LjA3NjgyNV0sIFsxMzYuODI5NDA2LCAtMzUuMjYwNTM1XSwgWzEzNy4zNTIzNzEsIC0zNC43MDczMzldLCBbMTM3LjUwMzg4NiwgLTM0LjEzMDI2OF0sIFsxMzcuODkwMTE2LCAtMzMuNjQwNDc5XSwgWzEzNy44MTAzMjgsIC0zMi45MDAwMDddLCBbMTM2Ljk5NjgzNywgLTMzLjc1Mjc3MV0sIFsxMzYuMzcyMDY5LCAtMzQuMDk0NzY2XSwgWzEzNS45ODkwNDMsIC0zNC44OTAxMThdLCBbMTM1LjIwODIxMywgLTM0LjQ3ODY3XSwgWzEzNS4yMzkyMTgsIC0zMy45NDc5NTNdLCBbMTM0LjYxMzQxNywgLTMzLjIyMjc3OF0sIFsxMzQuMDg1OTA0LCAtMzIuODQ4MDcyXSwgWzEzNC4yNzM5MDMsIC0zMi42MTcyMzRdLCBbMTMyLjk5MDc3NywgLTMyLjAxMTIyNF0sIFsxMzIuMjg4MDgxLCAtMzEuOTgyNjQ3XSwgWzEzMS4zMjYzMzEsIC0zMS40OTU4MDNdLCBbMTI5LjUzNTc5NCwgLTMxLjU5MDQyM10sIFsxMjguMjQwOTM4LCAtMzEuOTQ4NDg5XSwgWzEyNy4xMDI4NjcsIC0zMi4yODIyNjddLCBbMTI2LjE0ODcxNCwgLTMyLjIxNTk2Nl0sIFsxMjUuMDg4NjIzLCAtMzIuNzI4NzUxXSwgWzEyNC4yMjE2NDgsIC0zMi45NTk0ODddLCBbMTI0LjAyODk0NywgLTMzLjQ4Mzg0N10sIFsxMjMuNjU5NjY3LCAtMzMuODkwMTc5XSwgWzEyMi44MTEwMzYsIC0zMy45MTQ0NjddLCBbMTIyLjE4MzA2NCwgLTM0LjAwMzQwMl0sIFsxMjEuMjk5MTkxLCAtMzMuODIxMDM2XSwgWzEyMC41ODAyNjgsIC0zMy45MzAxNzddLCBbMTE5Ljg5MzY5NSwgLTMzLjk3NjA2NV0sIFsxMTkuMjk4ODk5LCAtMzQuNTA5MzY2XSwgWzExOS4wMDczNDEsIC0zNC40NjQxNDldLCBbMTE4LjUwNTcxOCwgLTM0Ljc0NjgxOV0sIFsxMTguMDI0OTcyLCAtMzUuMDY0NzMzXSwgWzExNy4yOTU1MDcsIC0zNS4wMjU0NTldLCBbMTE2LjYyNTEwOSwgLTM1LjAyNTA5N10sIFsxMTUuNTY0MzQ3LCAtMzQuMzg2NDI4XSwgWzExNS4wMjY4MDksIC0zNC4xOTY1MTddLCBbMTE1LjA0ODYxNiwgLTMzLjYyMzQyNV0sIFsxMTUuNTQ1MTIzLCAtMzMuNDg3MjU4XSwgWzExNS43MTQ2NzQsIC0zMy4yNTk1NzJdLCBbMTE1LjY3OTM3OSwgLTMyLjkwMDM2OV0sIFsxMTUuODAxNjQ1LCAtMzIuMjA1MDYyXSwgWzExNS42ODk2MTEsIC0zMS42MTI0MzddLCBbMTE1LjE2MDkwOSwgLTMwLjYwMTU5NF0sIFsxMTQuOTk3MDQzLCAtMzAuMDMwNzI1XSwgWzExNS4wNDAwMzgsIC0yOS40NjEwOTVdLCBbMTE0LjY0MTk3NCwgLTI4LjgxMDIzMV0sIFsxMTQuNjE2NDk4LCAtMjguNTE2Mzk5XSwgWzExNC4xNzM1NzksIC0yOC4xMTgwNzddLCBbMTE0LjA0ODg4NCwgLTI3LjMzNDc2NV0sIFsxMTMuNDc3NDk4LCAtMjYuNTQzMTM0XSwgWzExMy4zMzg5NTMsIC0yNi4xMTY1NDVdLCBbMTEzLjc3ODM1OCwgLTI2LjU0OTAyNV0sIFsxMTMuNDQwOTYyLCAtMjUuNjIxMjc4XSwgWzExMy45MzY5MDEsIC0yNS45MTEyMzVdLCBbMTE0LjIzMjg1MiwgLTI2LjI5ODQ0Nl0sIFsxMTQuMjE2MTYxLCAtMjUuNzg2MjgxXSwgWzExMy43MjEyNTUsIC0yNC45OTg5MzldLCBbMTEzLjYyNTM0NCwgLTI0LjY4Mzk3MV0sIFsxMTMuMzkzNTIzLCAtMjQuMzg0NzY0XSwgWzExMy41MDIwNDQsIC0yMy44MDYzNV0sIFsxMTMuNzA2OTkzLCAtMjMuNTYwMjE1XSwgWzExMy44NDM0MTgsIC0yMy4wNTk5ODddLCBbMTEzLjczNjU1MiwgLTIyLjQ3NTQ3NV0sIFsxMTQuMTQ5NzU2LCAtMjEuNzU1ODgxXSwgWzExNC4yMjUzMDcsIC0yMi41MTc0ODhdLCBbMTE0LjY0Nzc2MiwgLTIxLjgyOTUyXSwgWzExNS40NjAxNjcsIC0yMS40OTUxNzNdLCBbMTE1Ljk0NzM3MywgLTIxLjA2ODY4OF0sIFsxMTYuNzExNjE1LCAtMjAuNzAxNjgyXSwgWzExNy4xNjYzMTYsIC0yMC42MjM1OTldLCBbMTE3LjQ0MTU0NSwgLTIwLjc0Njg5OV0sIFsxMTguMjI5NTU5LCAtMjAuMzc0MjA4XSwgWzExOC44MzYwODUsIC0yMC4yNjMzMTFdLCBbMTE4Ljk4NzgwNywgLTIwLjA0NDIwM10sIFsxMTkuMjUyNDk0LCAtMTkuOTUyOTQyXSwgWzExOS44MDUyMjUsIC0xOS45NzY1MDZdLCBbMTIwLjg1NjIyLCAtMTkuNjgzNzA4XSwgWzEyMS4zOTk4NTYsIC0xOS4yMzk3NTZdLCBbMTIxLjY1NTEzOCwgLTE4LjcwNTMxOF0sIFsxMjIuMjQxNjY1LCAtMTguMTk3NjQ5XSwgWzEyMi4yODY2MjQsIC0xNy43OTg2MDNdLCBbMTIyLjMxMjc3MiwgLTE3LjI1NDk2N10sIFsxMjMuMDEyNTc0LCAtMTYuNDA1Ml0sIFsxMjMuNDMzNzg5LCAtMTcuMjY4NTU4XSwgWzEyMy44NTkzNDUsIC0xNy4wNjkwMzVdLCBbMTIzLjUwMzI0MiwgLTE2LjU5NjUwNl0sIFsxMjMuODE3MDczLCAtMTYuMTExMzE2XSwgWzEyNC4yNTgyODcsIC0xNi4zMjc5NDRdLCBbMTI0LjM3OTcyNiwgLTE1LjU2NzA2XSwgWzEyNC45MjYxNTMsIC0xNS4wNzUxXSwgWzEyNS4xNjcyNzUsIC0xNC42ODAzOTZdLCBbMTI1LjY3MDA4NywgLTE0LjUxMDA3XSwgWzEyNS42ODU3OTYsIC0xNC4yMzA2NTZdLCBbMTI2LjEyNTE0OSwgLTE0LjM0NzM0MV0sIFsxMjYuMTQyODIzLCAtMTQuMDk1OTg3XSwgWzEyNi41ODI1ODksIC0xMy45NTI3OTFdLCBbMTI3LjA2NTg2NywgLTEzLjgxNzk2OF0sIFsxMjcuODA0NjMzLCAtMTQuMjc2OTA2XSwgWzEyOC4zNTk2OSwgLTE0Ljg2OTE3XSwgWzEyOC45ODU1NDMsIC0xNC44NzU5OTFdLCBbMTI5LjYyMTQ3MywgLTE0Ljk2OTc4NF0sIFsxMjkuNDA5NiwgLTE0LjQyMDY3XSwgWzEyOS44ODg2NDEsIC0xMy42MTg3MDNdLCBbMTMwLjMzOTQ2NiwgLTEzLjM1NzM3Nl0sIFsxMzAuMTgzNTA2LCAtMTMuMTA3NTJdLCBbMTMwLjYxNzc5NSwgLTEyLjUzNjM5Ml0sIFsxMzEuMjIzNDk1LCAtMTIuMTgzNjQ5XSwgWzEzMS43MzUwOTEsIC0xMi4zMDI0NTNdLCBbMTMyLjU3NTI5OCwgLTEyLjExNDA0MV0sIFsxMzIuNTU3MjEyLCAtMTEuNjAzMDEyXSwgWzEzMS44MjQ2OTgsIC0xMS4yNzM3ODJdLCBbMTMyLjM1NzIyNCwgLTExLjEyODUxOV0sIFsxMzMuMDE5NTYxLCAtMTEuMzc2NDExXSwgWzEzMy41NTA4NDYsIC0xMS43ODY1MTVdLCBbMTM0LjM5MzA2OCwgLTEyLjA0MjM2NV0sIFsxMzQuNjc4NjMyLCAtMTEuOTQxMTgzXSwgWzEzNS4yOTg0OTEsIC0xMi4yNDg2MDZdLCBbMTM1Ljg4MjY5MywgLTExLjk2MjI2N10sIFsxMzYuMjU4MzgxLCAtMTIuMDQ5MzQyXSwgWzEzNi40OTI0NzUsIC0xMS44NTcyMDldLCBbMTM2Ljk1MTYyLCAtMTIuMzUxOTU5XSwgWzEzNi42ODUxMjUsIC0xMi44ODcyMjNdLCBbMTM2LjMwNTQwNywgLTEzLjI5MTIzXSwgWzEzNS45NjE3NTgsIC0xMy4zMjQ1MDldLCBbMTM2LjA3NzYxNywgLTEzLjcyNDI3OF0sIFsxMzUuNzgzODM2LCAtMTQuMjIzOTg5XSwgWzEzNS40Mjg2NjQsIC0xNC43MTU0MzJdLCBbMTM1LjUwMDE4NCwgLTE0Ljk5Nzc0MV0sIFsxMzYuMjk1MTc1LCAtMTUuNTUwMjY1XSwgWzEzNy4wNjUzNiwgLTE1Ljg3MDc2Ml0sIFsxMzcuNTgwNDcxLCAtMTYuMjE1MDgyXSwgWzEzOC4zMDMyMTcsIC0xNi44MDc2MDRdLCBbMTM4LjU4NTE2NCwgLTE2LjgwNjYyMl0sIFsxMzkuMTA4NTQzLCAtMTcuMDYyNjc5XSwgWzEzOS4yNjA1NzUsIC0xNy4zNzE2MDFdLCBbMTQwLjIxNTI0NSwgLTE3LjcxMDgwNV0sIFsxNDAuODc1NDYzLCAtMTcuMzY5MDY5XSwgWzE0MS4wNzExMSwgLTE2LjgzMjA0N10sIFsxNDEuMjc0MDk1LCAtMTYuMzg4ODddLCBbMTQxLjM5ODIyMiwgLTE1Ljg0MDUzMl0sIFsxNDEuNzAyMTgzLCAtMTUuMDQ0OTIxXSwgWzE0MS41NjMzOCwgLTE0LjU2MTMzM10sIFsxNDEuNjM1NTIsIC0xNC4yNzAzOTVdLCBbMTQxLjUxOTg2OSwgLTEzLjY5ODA3OF0sIFsxNDEuNjUwOTIsIC0xMi45NDQ2ODhdLCBbMTQxLjg0MjY5MSwgLTEyLjc0MTU0OF0sIFsxNDEuNjg2OTksIC0xMi40MDc2MTRdLCBbMTQxLjkyODYyOSwgLTExLjg3NzQ2Nl0sIFsxNDIuMTE4NDg4LCAtMTEuMzI4MDQyXSwgWzE0Mi4xNDM3MDYsIC0xMS4wNDI3MzddLCBbMTQyLjUxNTI2LCAtMTAuNjY4MTg2XSwgWzE0Mi43OTczMSwgLTExLjE1NzM1NV0sIFsxNDIuODY2NzYzLCAtMTEuNzg0NzA3XSwgWzE0My4xMTU5NDcsIC0xMS45MDU2M10sIFsxNDMuMTU4NjMyLCAtMTIuMzI1NjU2XSwgWzE0My41MjIxMjQsIC0xMi44MzQzNThdLCBbMTQzLjU5NzE1OCwgLTEzLjQwMDQyMl0sIFsxNDMuNTYxODExLCAtMTMuNzYzNjU2XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJBVVMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkF1c3RyYWxpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTYuOTc5NjY3LCA0OC4xMjM0OTddLCBbMTYuOTAzNzU0LCA0Ny43MTQ4NjZdLCBbMTYuMzQwNTg0LCA0Ny43MTI5MDJdLCBbMTYuNTM0MjY4LCA0Ny40OTYxNzFdLCBbMTYuMjAyMjk4LCA0Ni44NTIzODZdLCBbMTYuMDExNjY0LCA0Ni42ODM2MTFdLCBbMTUuMTM3MDkyLCA0Ni42NTg3MDNdLCBbMTQuNjMyNDcyLCA0Ni40MzE4MTddLCBbMTMuODA2NDc1LCA0Ni41MDkzMDZdLCBbMTIuMzc2NDg1LCA0Ni43Njc1NTldLCBbMTIuMTUzMDg4LCA0Ny4xMTUzOTNdLCBbMTEuMTY0ODI4LCA0Ni45NDE1NzldLCBbMTEuMDQ4NTU2LCA0Ni43NTEzNTldLCBbMTAuNDQyNzAxLCA0Ni44OTM1NDZdLCBbOS45MzI0NDgsIDQ2LjkyMDcyOF0sIFs5LjQ3OTk3LCA0Ny4xMDI4MV0sIFs5LjYzMjkzMiwgNDcuMzQ3NjAxXSwgWzkuNTk0MjI2LCA0Ny41MjUwNThdLCBbOS44OTYwNjgsIDQ3LjU4MDE5N10sIFsxMC40MDIwODQsIDQ3LjMwMjQ4OF0sIFsxMC41NDQ1MDQsIDQ3LjU2NjM5OV0sIFsxMS40MjY0MTQsIDQ3LjUyMzc2Nl0sIFsxMi4xNDEzNTcsIDQ3LjcwMzA4M10sIFsxMi42MjA3NiwgNDcuNjcyMzg4XSwgWzEyLjkzMjYyNywgNDcuNDY3NjQ2XSwgWzEzLjAyNTg1MSwgNDcuNjM3NTg0XSwgWzEyLjg4NDEwMywgNDguMjg5MTQ2XSwgWzEzLjI0MzM1NywgNDguNDE2MTE1XSwgWzEzLjU5NTk0NiwgNDguODc3MTcyXSwgWzE0LjMzODg5OCwgNDguNTU1MzA1XSwgWzE0LjkwMTQ0NywgNDguOTY0NDAyXSwgWzE1LjI1MzQxNiwgNDkuMDM5MDc0XSwgWzE2LjAyOTY0NywgNDguNzMzODk5XSwgWzE2LjQ5OTI4MywgNDguNzg1ODA4XSwgWzE2Ljk2MDI4OCwgNDguNTk2OTgyXSwgWzE2Ljg3OTk4MywgNDguNDcwMDEzXSwgWzE2Ljk3OTY2NywgNDguMTIzNDk3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJBVVQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkF1c3RyaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1s0NS4wMDE5ODcsIDM5Ljc0MDAwNF0sIFs0NS4yOTgxNDUsIDM5LjQ3MTc1MV0sIFs0NS43Mzk5NzgsIDM5LjQ3Mzk5OV0sIFs0NS43MzUzNzksIDM5LjMxOTcxOV0sIFs0Ni4xNDM2MjMsIDM4Ljc0MTIwMV0sIFs0NS40NTc3MjIsIDM4Ljg3NDEzOV0sIFs0NC45NTI2ODgsIDM5LjMzNTc2NV0sIFs0NC43OTM5OSwgMzkuNzEzMDAzXSwgWzQ1LjAwMTk4NywgMzkuNzQwMDA0XV1dLCBbW1s0Ny4zNzMzMTUsIDQxLjIxOTczMl0sIFs0Ny44MTU2NjYsIDQxLjE1MTQxNl0sIFs0Ny45ODcyODMsIDQxLjQwNTgxOV0sIFs0OC41ODQzNTMsIDQxLjgwODg3XSwgWzQ5LjExMDI2NCwgNDEuMjgyMjg3XSwgWzQ5LjYxODkxNSwgNDAuNTcyOTI0XSwgWzUwLjA4NDgzLCA0MC41MjYxNTddLCBbNTAuMzkyODIxLCA0MC4yNTY1NjFdLCBbNDkuNTY5MjAyLCA0MC4xNzYxMDFdLCBbNDkuMzk1MjU5LCAzOS4zOTk0ODJdLCBbNDkuMjIzMjI4LCAzOS4wNDkyMTldLCBbNDguODU2NTMyLCAzOC44MTU0ODZdLCBbNDguODgzMjQ5LCAzOC4zMjAyNDVdLCBbNDguNjM0Mzc1LCAzOC4yNzAzNzhdLCBbNDguMDEwNzQ0LCAzOC43OTQwMTVdLCBbNDguMzU1NTI5LCAzOS4yODg3NjVdLCBbNDguMDYwMDk1LCAzOS41ODIyMzVdLCBbNDcuNjg1MDc5LCAzOS41MDgzNjRdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ni40ODM0OTksIDM5LjQ2NDE1NV0sIFs0Ni4wMzQ1MzQsIDM5LjYyODAyMV0sIFs0NS42MTAwMTIsIDM5Ljg5OTk5NF0sIFs0NS44OTE5MDcsIDQwLjIxODQ3Nl0sIFs0NS4zNTkxNzUsIDQwLjU2MTUwNF0sIFs0NS41NjAzNTEsIDQwLjgxMjI5XSwgWzQ1LjE3OTQ5NiwgNDAuOTg1MzU0XSwgWzQ0Ljk3MjQ4LCA0MS4yNDgxMjldLCBbNDUuMjE3NDI2LCA0MS40MTE0NTJdLCBbNDUuOTYyNjAxLCA0MS4xMjM4NzNdLCBbNDYuNTAxNjM3LCA0MS4wNjQ0NDVdLCBbNDYuNjM3OTA4LCA0MS4xODE2NzNdLCBbNDYuMTQ1NDMyLCA0MS43MjI4MDJdLCBbNDYuNDA0OTUxLCA0MS44NjA2NzVdLCBbNDYuNjg2MDcxLCA0MS44MjcxMzddLCBbNDcuMzczMzE1LCA0MS4yMTk3MzJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFaRSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQXplcmJhaWphbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMjkuMzM5OTk4LCAtNC40OTk5ODNdLCBbMjkuMjc2Mzg0LCAtMy4yOTM5MDddLCBbMjkuMDI0OTI2LCAtMi44MzkyNThdLCBbMjkuNjMyMTc2LCAtMi45MTc4NThdLCBbMjkuOTM4MzU5LCAtMi4zNDg0ODddLCBbMzAuNDY5Njk2LCAtMi40MTM4NThdLCBbMzAuNTI3Njc3LCAtMi44MDc2MzJdLCBbMzAuNzQzMDEzLCAtMy4wMzQyODVdLCBbMzAuNzUyMjYzLCAtMy4zNTkzM10sIFszMC41MDU1NiwgLTMuNTY4NTY3XSwgWzMwLjExNjMzMywgLTQuMDkwMTM4XSwgWzI5Ljc1MzUxMiwgLTQuNDUyMzg5XSwgWzI5LjMzOTk5OCwgLTQuNDk5OTgzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCREkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJ1cnVuZGkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzMuMzE0OTcxLCA1MS4zNDU3ODFdLCBbNC4wNDcwNzEsIDUxLjI2NzI1OV0sIFs0Ljk3Mzk5MSwgNTEuNDc1MDI0XSwgWzUuNjA2OTc2LCA1MS4wMzcyOThdLCBbNi4xNTY2NTgsIDUwLjgwMzcyMV0sIFs2LjA0MzA3MywgNTAuMTI4MDUyXSwgWzUuNzgyNDE3LCA1MC4wOTAzMjhdLCBbNS42NzQwNTIsIDQ5LjUyOTQ4NF0sIFs0Ljc5OTIyMiwgNDkuOTg1MzczXSwgWzQuMjg2MDIzLCA0OS45MDc0OTddLCBbMy41ODgxODQsIDUwLjM3ODk5Ml0sIFszLjEyMzI1MiwgNTAuNzgwMzYzXSwgWzIuNjU4NDIyLCA1MC43OTY4NDhdLCBbMi41MTM1NzMsIDUxLjE0ODUwNl0sIFszLjMxNDk3MSwgNTEuMzQ1NzgxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCRUwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJlbGdpdW0iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIuNjkxNzAyLCA2LjI1ODgxN10sIFsxLjg2NTI0MSwgNi4xNDIxNThdLCBbMS42MTg5NTEsIDYuODMyMDM4XSwgWzEuNjY0NDc4LCA5LjEyODU5XSwgWzEuNDYzMDQzLCA5LjMzNDYyNF0sIFsxLjQyNTA2MSwgOS44MjUzOTVdLCBbMS4wNzc3OTUsIDEwLjE3NTYwN10sIFswLjc3MjMzNiwgMTAuNDcwODA4XSwgWzAuODk5NTYzLCAxMC45OTczMzldLCBbMS4yNDM0NywgMTEuMTEwNTExXSwgWzEuNDQ3MTc4LCAxMS41NDc3MTldLCBbMS45MzU5ODYsIDExLjY0MTE1XSwgWzIuMTU0NDc0LCAxMS45NDAxNV0sIFsyLjQ5MDE2NCwgMTIuMjMzMDUyXSwgWzIuODQ4NjQzLCAxMi4yMzU2MzZdLCBbMy42MTExOCwgMTEuNjYwMTY3XSwgWzMuNTcyMjE2LCAxMS4zMjc5MzldLCBbMy43OTcxMTIsIDEwLjczNDc0Nl0sIFszLjYwMDA3LCAxMC4zMzIxODZdLCBbMy43MDU0MzgsIDEwLjA2MzIxXSwgWzMuMjIwMzUyLCA5LjQ0NDE1M10sIFsyLjkxMjMwOCwgOS4xMzc2MDhdLCBbMi43MjM3OTMsIDguNTA2ODQ1XSwgWzIuNzQ5MDYzLCA3Ljg3MDczNF0sIFsyLjY5MTcwMiwgNi4yNTg4MTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJFTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQmVuaW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjgyNzQ5NiwgOS42NDI0NjFdLCBbLTMuNTExODk5LCA5LjkwMDMyNl0sIFstMy45ODA0NDksIDkuODYyMzQ0XSwgWy00LjMzMDI0NywgOS42MTA4MzVdLCBbLTQuNzc5ODg0LCA5LjgyMTk4NV0sIFstNC45NTQ2NTMsIDEwLjE1MjcxNF0sIFstNS40MDQzNDIsIDEwLjM3MDczN10sIFstNS40NzA1NjUsIDEwLjk1MTI3XSwgWy01LjE5Nzg0MywgMTEuMzc1MTQ2XSwgWy01LjIyMDk0MiwgMTEuNzEzODU5XSwgWy00LjQyNzE2NiwgMTIuNTQyNjQ2XSwgWy00LjI4MDQwNSwgMTMuMjI4NDQ0XSwgWy00LjAwNjM5MSwgMTMuNDcyNDg1XSwgWy0zLjUyMjgwMywgMTMuMzM3NjYyXSwgWy0zLjEwMzcwNywgMTMuNTQxMjY3XSwgWy0yLjk2NzY5NCwgMTMuNzk4MTVdLCBbLTIuMTkxODI1LCAxNC4yNDY0MThdLCBbLTIuMDAxMDM1LCAxNC41NTkwMDhdLCBbLTEuMDY2MzYzLCAxNC45NzM4MTVdLCBbLTAuNTE1ODU0LCAxNS4xMTYxNThdLCBbLTAuMjY2MjU3LCAxNC45MjQzMDldLCBbMC4zNzQ4OTIsIDE0LjkyODkwOF0sIFswLjI5NTY0NiwgMTQuNDQ0MjM1XSwgWzAuNDI5OTI4LCAxMy45ODg3MzNdLCBbMC45OTMwNDYsIDEzLjMzNTc1XSwgWzEuMDI0MTAzLCAxMi44NTE4MjZdLCBbMi4xNzcxMDgsIDEyLjYyNTAxOF0sIFsyLjE1NDQ3NCwgMTEuOTQwMTVdLCBbMS45MzU5ODYsIDExLjY0MTE1XSwgWzEuNDQ3MTc4LCAxMS41NDc3MTldLCBbMS4yNDM0NywgMTEuMTEwNTExXSwgWzAuODk5NTYzLCAxMC45OTczMzldLCBbMC4wMjM4MDMsIDExLjAxODY4Ml0sIFstMC40Mzg3MDIsIDExLjA5ODM0MV0sIFstMC43NjE1NzYsIDEwLjkzNjkzXSwgWy0xLjIwMzM1OCwgMTEuMDA5ODE5XSwgWy0yLjk0MDQwOSwgMTAuOTYyNjldLCBbLTIuOTYzODk2LCAxMC4zOTUzMzVdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkZBIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCdXJraW5hIEZhc28iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkyLjY3MjcyMSwgMjIuMDQxMjM5XSwgWzkyLjY1MjI1NywgMjEuMzI0MDQ4XSwgWzkyLjMwMzIzNCwgMjEuNDc1NDg1XSwgWzkyLjM2ODU1NCwgMjAuNjcwODgzXSwgWzkyLjA4Mjg4NiwgMjEuMTkyMTk1XSwgWzkyLjAyNTIxNSwgMjEuNzAxNTddLCBbOTEuODM0ODkxLCAyMi4xODI5MzZdLCBbOTEuNDE3MDg3LCAyMi43NjUwMTldLCBbOTAuNDk2MDA2LCAyMi44MDUwMTddLCBbOTAuNTg2OTU3LCAyMi4zOTI3OTRdLCBbOTAuMjcyOTcxLCAyMS44MzYzNjhdLCBbODkuODQ3NDY3LCAyMi4wMzkxNDZdLCBbODkuNzAyMDUsIDIxLjg1NzExNl0sIFs4OS40MTg4NjMsIDIxLjk2NjE3OV0sIFs4OS4wMzE5NjEsIDIyLjA1NTcwOF0sIFs4OC44NzYzMTIsIDIyLjg3OTE0Nl0sIFs4OC41Mjk3NywgMjMuNjMxMTQyXSwgWzg4LjY5OTk0LCAyNC4yMzM3MTVdLCBbODguMDg0NDIyLCAyNC41MDE2NTddLCBbODguMzA2MzczLCAyNC44NjYwNzldLCBbODguOTMxNTU0LCAyNS4yMzg2OTJdLCBbODguMjA5Nzg5LCAyNS43NjgwNjZdLCBbODguNTYzMDQ5LCAyNi40NDY1MjZdLCBbODkuMzU1MDk0LCAyNi4wMTQ0MDddLCBbODkuODMyNDgxLCAyNS45NjUwODJdLCBbODkuOTIwNjkzLCAyNS4yNjk3NV0sIFs5MC44NzIyMTEsIDI1LjEzMjYwMV0sIFs5MS43OTk1OTYsIDI1LjE0NzQzMl0sIFs5Mi4zNzYyMDIsIDI0Ljk3NjY5M10sIFs5MS45MTUwOTMsIDI0LjEzMDQxNF0sIFs5MS40Njc3MywgMjQuMDcyNjM5XSwgWzkxLjE1ODk2MywgMjMuNTAzNTI3XSwgWzkxLjcwNjQ3NSwgMjIuOTg1MjY0XSwgWzkxLjg2OTkyOCwgMjMuNjI0MzQ2XSwgWzkyLjE0NjAzNSwgMjMuNjI3NDk5XSwgWzkyLjY3MjcyMSwgMjIuMDQxMjM5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCR0QiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJhbmdsYWRlc2giLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIyLjY1NzE1LCA0NC4yMzQ5MjNdLCBbMjIuOTQ0ODMyLCA0My44MjM3ODVdLCBbMjMuMzMyMzAyLCA0My44OTcwMTFdLCBbMjQuMTAwNjc5LCA0My43NDEwNTFdLCBbMjUuNTY5MjcyLCA0My42ODg0NDVdLCBbMjYuMDY1MTU5LCA0My45NDM0OTRdLCBbMjcuMjQyNCwgNDQuMTc1OTg2XSwgWzI3Ljk3MDEwNywgNDMuODEyNDY4XSwgWzI4LjU1ODA4MSwgNDMuNzA3NDYyXSwgWzI4LjAzOTA5NSwgNDMuMjkzMTcyXSwgWzI3LjY3Mzg5OCwgNDIuNTc3ODkyXSwgWzI3Ljk5NjcyLCA0Mi4wMDczNTldLCBbMjcuMTM1NzM5LCA0Mi4xNDE0ODVdLCBbMjYuMTE3MDQyLCA0MS44MjY5MDVdLCBbMjYuMTA2MTM4LCA0MS4zMjg4OTldLCBbMjUuMTk3MjAxLCA0MS4yMzQ0ODZdLCBbMjQuNDkyNjQ1LCA0MS41ODM4OTZdLCBbMjMuNjkyMDc0LCA0MS4zMDkwODFdLCBbMjIuOTUyMzc3LCA0MS4zMzc5OTRdLCBbMjIuODgxMzc0LCA0MS45OTkyOTddLCBbMjIuMzgwNTI2LCA0Mi4zMjAyNl0sIFsyMi41NDUwMTIsIDQyLjQ2MTM2Ml0sIFsyMi40MzY1OTUsIDQyLjU4MDMyMV0sIFsyMi42MDQ4MDEsIDQyLjg5ODUxOV0sIFsyMi45ODYwMTksIDQzLjIxMTE2MV0sIFsyMi41MDAxNTcsIDQzLjY0MjgxNF0sIFsyMi40MTA0NDYsIDQ0LjAwODA2M10sIFsyMi42NTcxNSwgNDQuMjM0OTIzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCR1IiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJ1bGdhcmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbLTc3LjUzNDY2LCAyMy43NTk3NV0sIFstNzcuNzgsIDIzLjcxXSwgWy03OC4wMzQwNSwgMjQuMjg2MTVdLCBbLTc4LjQwODQ4LCAyNC41NzU2NF0sIFstNzguMTkwODcsIDI1LjIxMDNdLCBbLTc3Ljg5LCAyNS4xN10sIFstNzcuNTQsIDI0LjM0XSwgWy03Ny41MzQ2NiwgMjMuNzU5NzVdXV0sIFtbWy03Ny44MiwgMjYuNThdLCBbLTc4LjkxLCAyNi40Ml0sIFstNzguOTgsIDI2Ljc5XSwgWy03OC41MSwgMjYuODddLCBbLTc3Ljg1LCAyNi44NF0sIFstNzcuODIsIDI2LjU4XV1dLCBbW1stNzcsIDI2LjU5XSwgWy03Ny4xNzI1NSwgMjUuODc5MThdLCBbLTc3LjM1NjQxLCAyNi4wMDczNV0sIFstNzcuMzQsIDI2LjUzXSwgWy03Ny43ODgwMiwgMjYuOTI1MTZdLCBbLTc3Ljc5LCAyNy4wNF0sIFstNzcsIDI2LjU5XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJCSFMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlRoZSBCYWhhbWFzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxOS4wMDU0ODYsIDQ0Ljg2MDIzNF0sIFsxOS4zNjgwMywgNDQuODYzXSwgWzE5LjExNzYxLCA0NC40MjMwN10sIFsxOS41OTk3NiwgNDQuMDM4NDddLCBbMTkuNDU0LCA0My41NjgxXSwgWzE5LjIxODUyLCA0My41MjM4NF0sIFsxOS4wMzE2NSwgNDMuNDMyNTNdLCBbMTguNzA2NDgsIDQzLjIwMDExXSwgWzE4LjU2LCA0Mi42NV0sIFsxNy42NzQ5MjIsIDQzLjAyODU2M10sIFsxNy4yOTczNzMsIDQzLjQ0NjM0MV0sIFsxNi45MTYxNTYsIDQzLjY2NzcyMl0sIFsxNi40NTY0NDMsIDQ0LjA0MTI0XSwgWzE2LjIzOTY2LCA0NC4zNTExNDNdLCBbMTUuNzUwMDI2LCA0NC44MTg3MTJdLCBbMTUuOTU5MzY3LCA0NS4yMzM3NzddLCBbMTYuMzE4MTU3LCA0NS4wMDQxMjddLCBbMTYuNTM0OTM5LCA0NS4yMTE2MDhdLCBbMTcuMDAyMTQ2LCA0NS4yMzM3NzddLCBbMTcuODYxNzgzLCA0NS4wNjc3NF0sIFsxOC41NTMyMTQsIDQ1LjA4MTU5XSwgWzE5LjAwNTQ4NiwgNDQuODYwMjM0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCSUgiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJvc25pYSBhbmQgSGVyemVnb3ZpbmEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzIzLjQ4NDEyOCwgNTMuOTEyNDk4XSwgWzI0LjQ1MDY4NCwgNTMuOTA1NzAyXSwgWzI1LjUzNjM1NCwgNTQuMjgyNDIzXSwgWzI1Ljc2ODQzMywgNTQuODQ2OTYzXSwgWzI2LjU4ODI3OSwgNTUuMTY3MTc2XSwgWzI2LjQ5NDMzMSwgNTUuNjE1MTA3XSwgWzI3LjEwMjQ2LCA1NS43ODMzMTRdLCBbMjguMTc2NzA5LCA1Ni4xNjkxM10sIFsyOS4yMjk1MTMsIDU1LjkxODM0NF0sIFsyOS4zNzE1NzIsIDU1LjY3MDA5MV0sIFsyOS44OTYyOTQsIDU1Ljc4OTQ2M10sIFszMC44NzM5MDksIDU1LjU1MDk3Nl0sIFszMC45NzE4MzYsIDU1LjA4MTU0OF0sIFszMC43NTc1MzQsIDU0LjgxMTc3MV0sIFszMS4zODQ0NzIsIDU0LjE1NzA1Nl0sIFszMS43OTE0MjQsIDUzLjk3NDYzOV0sIFszMS43MzEyNzMsIDUzLjc5NDAyOV0sIFszMi40MDU1OTksIDUzLjYxODA0NV0sIFszMi42OTM2NDMsIDUzLjM1MTQyMV0sIFszMi4zMDQ1MTksIDUzLjEzMjcyNl0sIFszMS40OTc2NDQsIDUzLjE2NzQyN10sIFszMS4zMDUyMDEsIDUzLjA3Mzk5Nl0sIFszMS41NDAwMTgsIDUyLjc0MjA1Ml0sIFszMS43ODU5OTgsIDUyLjEwMTY3OF0sIFszMC45Mjc1NDksIDUyLjA0MjM1M10sIFszMC42MTk0NTQsIDUxLjgyMjgwNl0sIFszMC41NTUxMTcsIDUxLjMxOTUwM10sIFszMC4xNTczNjQsIDUxLjQxNjEzOF0sIFsyOS4yNTQ5MzgsIDUxLjM2ODIzNF0sIFsyOC45OTI4MzUsIDUxLjYwMjA0NF0sIFsyOC42MTc2MTMsIDUxLjQyNzcxNF0sIFsyOC4yNDE2MTUsIDUxLjU3MjIyN10sIFsyNy40NTQwNjYsIDUxLjU5MjMwM10sIFsyNi4zMzc5NTksIDUxLjgzMjI4OV0sIFsyNS4zMjc3ODgsIDUxLjkxMDY1Nl0sIFsyNC41NTMxMDYsIDUxLjg4ODQ2MV0sIFsyNC4wMDUwNzgsIDUxLjYxNzQ0NF0sIFsyMy41MjcwNzEsIDUxLjU3ODQ1NF0sIFsyMy41MDgwMDIsIDUyLjAyMzY0N10sIFsyMy4xOTk0OTQsIDUyLjQ4Njk3N10sIFsyMy43OTkxOTksIDUyLjY5MTA5OV0sIFsyMy44MDQ5MzUsIDUzLjA4OTczMV0sIFsyMy41Mjc1MzYsIDUzLjQ3MDEyMl0sIFsyMy40ODQxMjgsIDUzLjkxMjQ5OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkxSIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCZWxhcnVzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stODkuMTQzMDgsIDE3LjgwODMxOV0sIFstODkuMTUwOTA5LCAxNy45NTU0NjhdLCBbLTg5LjAyOTg1NywgMTguMDAxNTExXSwgWy04OC44NDgzNDQsIDE3Ljg4MzE5OF0sIFstODguNDkwMTIzLCAxOC40ODY4MzFdLCBbLTg4LjMwMDAzMSwgMTguNDk5OTgyXSwgWy04OC4yOTYzMzYsIDE4LjM1MzI3M10sIFstODguMTA2ODEzLCAxOC4zNDg2NzRdLCBbLTg4LjEyMzQ3OSwgMTguMDc2Njc1XSwgWy04OC4yODUzNTUsIDE3LjY0NDE0M10sIFstODguMTk3ODY3LCAxNy40ODk0NzVdLCBbLTg4LjMwMjY0MSwgMTcuMTMxNjk0XSwgWy04OC4yMzk1MTgsIDE3LjAzNjA2Nl0sIFstODguMzU1NDI4LCAxNi41MzA3NzRdLCBbLTg4LjU1MTgyNSwgMTYuMjY1NDY3XSwgWy04OC43MzI0MzQsIDE2LjIzMzYzNV0sIFstODguOTMwNjEzLCAxNS44ODcyNzNdLCBbLTg5LjIyOTEyMiwgMTUuODg2OTM4XSwgWy04OS4xNTA4MDYsIDE3LjAxNTU3N10sIFstODkuMTQzMDgsIDE3LjgwODMxOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkxaIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCZWxpemUiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdLCBbLTYzLjk4NjgzOCwgLTIxLjk5MzY0NF0sIFstNjQuMzc3MDIxLCAtMjIuNzk4MDkxXSwgWy02NC45NjQ4OTIsIC0yMi4wNzU4NjJdLCBbLTY2LjI3MzMzOSwgLTIxLjgzMjMxXSwgWy02Ny4xMDY2NzQsIC0yMi43MzU5MjVdLCBbLTY3LjgyODE4LCAtMjIuODcyOTE5XSwgWy02OC4yMTk5MTMsIC0yMS40OTQzNDddLCBbLTY4Ljc1NzE2NywgLTIwLjM3MjY1OF0sIFstNjguNDQyMjI1LCAtMTkuNDA1MDY4XSwgWy02OC45NjY4MTgsIC0xOC45ODE2ODNdLCBbLTY5LjEwMDI0NywgLTE4LjI2MDEyNV0sIFstNjkuNTkwNDI0LCAtMTcuNTgwMDEyXSwgWy02OC45NTk2MzUsIC0xNi41MDA2OThdLCBbLTY5LjM4OTc2NCwgLTE1LjY2MDEyOV0sIFstNjkuMTYwMzQ3LCAtMTUuMzIzOTc0XSwgWy02OS4zMzk1MzUsIC0xNC45NTMxOTVdLCBbLTY4Ljk0ODg4NywgLTE0LjQ1MzYzOV0sIFstNjguOTI5MjI0LCAtMTMuNjAyNjg0XSwgWy02OC44ODAwOCwgLTEyLjg5OTcyOV0sIFstNjguNjY1MDgsIC0xMi41NjEzXSwgWy02OS41Mjk2NzgsIC0xMC45NTE3MzRdLCBbLTY4Ljc4NjE1OCwgLTExLjAzNjM4XSwgWy02OC4yNzEyNTQsIC0xMS4wMTQ1MjFdLCBbLTY4LjA0ODE5MiwgLTEwLjcxMjA1OV0sIFstNjcuMTczODAxLCAtMTAuMzA2ODEyXSwgWy02Ni42NDY5MDgsIC05LjkzMTMzMV0sIFstNjUuMzM4NDM1LCAtOS43NjE5ODhdLCBbLTY1LjQ0NDgzNywgLTEwLjUxMTQ1MV0sIFstNjUuMzIxODk5LCAtMTAuODk1ODcyXSwgWy02NS40MDIyODEsIC0xMS41NjYyN10sIFstNjQuMzE2MzUzLCAtMTIuNDYxOTc4XSwgWy02My4xOTY0OTksIC0xMi42MjcwMzNdLCBbLTYyLjgwMzA2LCAtMTMuMDAwNjUzXSwgWy02Mi4xMjcwODEsIC0xMy4xOTg3ODFdLCBbLTYxLjcxMzIwNCwgLTEzLjQ4OTIwMl0sIFstNjEuMDg0MTIxLCAtMTMuNDc5Mzg0XSwgWy02MC41MDMzMDQsIC0xMy43NzU5NTVdLCBbLTYwLjQ1OTE5OCwgLTE0LjM1NDAwN10sIFstNjAuMjY0MzI2LCAtMTQuNjQ1OTc5XSwgWy02MC4yNTExNDksIC0xNS4wNzcyMTldLCBbLTYwLjU0Mjk2NiwgLTE1LjA5MzkxXSwgWy02MC4xNTgzOSwgLTE2LjI1ODI4NF0sIFstNTguMjQxMjIsIC0xNi4yOTk1NzNdLCBbLTU4LjM4ODA1OCwgLTE2Ljg3NzEwOV0sIFstNTguMjgwODA0LCAtMTcuMjcxNzFdLCBbLTU3LjczNDU1OCwgLTE3LjU1MjQ2OF0sIFstNTcuNDk4MzcxLCAtMTguMTc0MTg4XSwgWy01Ny42NzYwMDksIC0xOC45NjE4NF0sIFstNTcuOTQ5OTk3LCAtMTkuNDAwMDA0XSwgWy01Ny44NTM4MDIsIC0xOS45Njk5OTVdLCBbLTU4LjE2NjM5MiwgLTIwLjE3NjcwMV0sIFstNTguMTgzNDcxLCAtMTkuODY4Mzk5XSwgWy01OS4xMTUwNDIsIC0xOS4zNTY5MDZdLCBbLTYwLjA0MzU2NSwgLTE5LjM0Mjc0N10sIFstNjEuNzg2MzI2LCAtMTkuNjMzNzM3XSwgWy02Mi4yNjU5NjEsIC0yMC41MTM3MzVdLCBbLTYyLjI5MTE3OSwgLTIxLjA1MTYzNV0sIFstNjIuNjg1MDU3LCAtMjIuMjQ5MDI5XSwgWy02Mi44NDY0NjgsIC0yMi4wMzQ5ODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJPTCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQm9saXZpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTU3LjYyNTEzMywgLTMwLjIxNjI5NV0sIFstNTYuMjkwOSwgLTI4Ljg1Mjc2MV0sIFstNTUuMTYyMjg2LCAtMjcuODgxOTE1XSwgWy01NC40OTA3MjUsIC0yNy40NzQ3NTddLCBbLTUzLjY0ODczNSwgLTI2LjkyMzQ3M10sIFstNTMuNjI4MzQ5LCAtMjYuMTI0ODY1XSwgWy01NC4xMzAwNSwgLTI1LjU0NzYzOV0sIFstNTQuNjI1MjkxLCAtMjUuNzM5MjU1XSwgWy01NC40Mjg5NDYsIC0yNS4xNjIxODVdLCBbLTU0LjI5MzQ3NiwgLTI0LjU3MDhdLCBbLTU0LjI5Mjk2LCAtMjQuMDIxMDE0XSwgWy01NC42NTI4MzQsIC0yMy44Mzk1NzhdLCBbLTU1LjAyNzkwMiwgLTI0LjAwMTI3NF0sIFstNTUuNDAwNzQ3LCAtMjMuOTU2OTM1XSwgWy01NS41MTc2MzksIC0yMy41NzE5OThdLCBbLTU1LjYxMDY4MywgLTIyLjY1NTYxOV0sIFstNTUuNzk3OTU4LCAtMjIuMzU2OTNdLCBbLTU2LjQ3MzMxNywgLTIyLjA4NjNdLCBbLTU2Ljg4MTUxLCAtMjIuMjgyMTU0XSwgWy01Ny45MzcxNTYsIC0yMi4wOTAxNzZdLCBbLTU3Ljg3MDY3NCwgLTIwLjczMjY4OF0sIFstNTguMTY2MzkyLCAtMjAuMTc2NzAxXSwgWy01Ny44NTM4MDIsIC0xOS45Njk5OTVdLCBbLTU3Ljk0OTk5NywgLTE5LjQwMDAwNF0sIFstNTcuNjc2MDA5LCAtMTguOTYxODRdLCBbLTU3LjQ5ODM3MSwgLTE4LjE3NDE4OF0sIFstNTcuNzM0NTU4LCAtMTcuNTUyNDY4XSwgWy01OC4yODA4MDQsIC0xNy4yNzE3MV0sIFstNTguMzg4MDU4LCAtMTYuODc3MTA5XSwgWy01OC4yNDEyMiwgLTE2LjI5OTU3M10sIFstNjAuMTU4MzksIC0xNi4yNTgyODRdLCBbLTYwLjU0Mjk2NiwgLTE1LjA5MzkxXSwgWy02MC4yNTExNDksIC0xNS4wNzcyMTldLCBbLTYwLjI2NDMyNiwgLTE0LjY0NTk3OV0sIFstNjAuNDU5MTk4LCAtMTQuMzU0MDA3XSwgWy02MC41MDMzMDQsIC0xMy43NzU5NTVdLCBbLTYxLjA4NDEyMSwgLTEzLjQ3OTM4NF0sIFstNjEuNzEzMjA0LCAtMTMuNDg5MjAyXSwgWy02Mi4xMjcwODEsIC0xMy4xOTg3ODFdLCBbLTYyLjgwMzA2LCAtMTMuMDAwNjUzXSwgWy02My4xOTY0OTksIC0xMi42MjcwMzNdLCBbLTY0LjMxNjM1MywgLTEyLjQ2MTk3OF0sIFstNjUuNDAyMjgxLCAtMTEuNTY2MjddLCBbLTY1LjMyMTg5OSwgLTEwLjg5NTg3Ml0sIFstNjUuNDQ0ODM3LCAtMTAuNTExNDUxXSwgWy02NS4zMzg0MzUsIC05Ljc2MTk4OF0sIFstNjYuNjQ2OTA4LCAtOS45MzEzMzFdLCBbLTY3LjE3MzgwMSwgLTEwLjMwNjgxMl0sIFstNjguMDQ4MTkyLCAtMTAuNzEyMDU5XSwgWy02OC4yNzEyNTQsIC0xMS4wMTQ1MjFdLCBbLTY4Ljc4NjE1OCwgLTExLjAzNjM4XSwgWy02OS41Mjk2NzgsIC0xMC45NTE3MzRdLCBbLTcwLjA5Mzc1MiwgLTExLjEyMzk3Ml0sIFstNzAuNTQ4Njg2LCAtMTEuMDA5MTQ3XSwgWy03MC40ODE4OTQsIC05LjQ5MDExOF0sIFstNzEuMzAyNDEyLCAtMTAuMDc5NDM2XSwgWy03Mi4xODQ4OTEsIC0xMC4wNTM1OThdLCBbLTcyLjU2MzAzMywgLTkuNTIwMTk0XSwgWy03My4yMjY3MTMsIC05LjQ2MjIxM10sIFstNzMuMDE1MzgzLCAtOS4wMzI4MzNdLCBbLTczLjU3MTA1OSwgLTguNDI0NDQ3XSwgWy03My45ODcyMzUsIC03LjUyMzgzXSwgWy03My43MjM0MDEsIC03LjM0MDk5OV0sIFstNzMuNzI0NDg3LCAtNi45MTg1OTVdLCBbLTczLjEyMDAyNywgLTYuNjI5OTMxXSwgWy03My4yMTk3MTEsIC02LjA4OTE4OV0sIFstNzIuOTY0NTA3LCAtNS43NDEyNTFdLCBbLTcyLjg5MTkyOCwgLTUuMjc0NTYxXSwgWy03MS43NDg0MDYsIC00LjU5Mzk4M10sIFstNzAuOTI4ODQzLCAtNC40MDE1OTFdLCBbLTcwLjc5NDc2OSwgLTQuMjUxMjY1XSwgWy02OS44OTM2MzUsIC00LjI5ODE4N10sIFstNjkuNDQ0MTAyLCAtMS41NTYyODddLCBbLTY5LjQyMDQ4NiwgLTEuMTIyNjE5XSwgWy02OS41NzcwNjUsIC0wLjU0OTk5Ml0sIFstNzAuMDIwNjU2LCAtMC4xODUxNTZdLCBbLTcwLjAxNTU2NiwgMC41NDE0MTRdLCBbLTY5LjQ1MjM5NiwgMC43MDYxNTldLCBbLTY5LjI1MjQzNCwgMC42MDI2NTFdLCBbLTY5LjIxODYzOCwgMC45ODU2NzddLCBbLTY5LjgwNDU5NywgMS4wODkwODFdLCBbLTY5LjgxNjk3MywgMS43MTQ4MDVdLCBbLTY3Ljg2ODU2NSwgMS42OTI0NTVdLCBbLTY3LjUzNzgxLCAyLjAzNzE2M10sIFstNjcuMjU5OTk4LCAxLjcxOTk5OV0sIFstNjcuMDY1MDQ4LCAxLjEzMDExMl0sIFstNjYuODc2MzI2LCAxLjI1MzM2MV0sIFstNjYuMzI1NzY1LCAwLjcyNDQ1Ml0sIFstNjUuNTQ4MjY3LCAwLjc4OTI1NF0sIFstNjUuMzU0NzEzLCAxLjA5NTI4Ml0sIFstNjQuNjExMDEyLCAxLjMyODczMV0sIFstNjQuMTk5MzA2LCAxLjQ5Mjg1NV0sIFstNjQuMDgzMDg1LCAxLjkxNjM2OV0sIFstNjMuMzY4Nzg4LCAyLjIwMDldLCBbLTYzLjQyMjg2NywgMi40MTEwNjhdLCBbLTY0LjI2OTk5OSwgMi40OTcwMDZdLCBbLTY0LjQwODgyOCwgMy4xMjY3ODZdLCBbLTY0LjM2ODQ5NCwgMy43OTcyMV0sIFstNjQuODE2MDY0LCA0LjA1NjQ0NV0sIFstNjQuNjI4NjU5LCA0LjE0ODQ4MV0sIFstNjMuODg4MzQzLCA0LjAyMDUzXSwgWy02My4wOTMxOTgsIDMuNzcwNTcxXSwgWy02Mi44MDQ1MzMsIDQuMDA2OTY1XSwgWy02Mi4wODU0MywgNC4xNjIxMjRdLCBbLTYwLjk2Njg5MywgNC41MzY0NjhdLCBbLTYwLjYwMTE3OSwgNC45MTgwOThdLCBbLTYwLjczMzU3NCwgNS4yMDAyNzddLCBbLTYwLjIxMzY4MywgNS4yNDQ0ODZdLCBbLTU5Ljk4MDk1OSwgNS4wMTQwNjFdLCBbLTYwLjExMTAwMiwgNC41NzQ5NjddLCBbLTU5Ljc2NzQwNiwgNC40MjM1MDNdLCBbLTU5LjUzODA0LCAzLjk1ODgwM10sIFstNTkuODE1NDEzLCAzLjYwNjQ5OV0sIFstNTkuOTc0NTI1LCAyLjc1NTIzM10sIFstNTkuNzE4NTQ2LCAyLjI0OTYzXSwgWy01OS42NDYwNDQsIDEuNzg2ODk0XSwgWy01OS4wMzA4NjIsIDEuMzE3Njk4XSwgWy01OC41NDAwMTMsIDEuMjY4MDg4XSwgWy01OC40Mjk0NzcsIDEuNDYzOTQyXSwgWy01OC4xMTM0NSwgMS41MDcxOTVdLCBbLTU3LjY2MDk3MSwgMS42ODI1ODVdLCBbLTU3LjMzNTgyMywgMS45NDg1MzhdLCBbLTU2Ljc4MjcwNCwgMS44NjM3MTFdLCBbLTU2LjUzOTM4NiwgMS44OTk1MjNdLCBbLTU1Ljk5NTY5OCwgMS44MTc2NjddLCBbLTU1LjkwNTYsIDIuMDIxOTk2XSwgWy01Ni4wNzMzNDIsIDIuMjIwNzk1XSwgWy01NS45NzMzMjIsIDIuNTEwMzY0XSwgWy01NS41Njk3NTUsIDIuNDIxNTA2XSwgWy01NS4wOTc1ODcsIDIuNTIzNzQ4XSwgWy01NC41MjQ3NTQsIDIuMzExODQ5XSwgWy01NC4wODgwNjMsIDIuMTA1NTU3XSwgWy01My43Nzg1MjEsIDIuMzc2NzAzXSwgWy01My41NTQ4MzksIDIuMzM0ODk3XSwgWy01My40MTg0NjUsIDIuMDUzMzg5XSwgWy01Mi45Mzk2NTcsIDIuMTI0ODU4XSwgWy01Mi41NTY0MjUsIDIuNTA0NzA1XSwgWy01Mi4yNDkzMzgsIDMuMjQxMDk0XSwgWy01MS42NTc3OTcsIDQuMTU2MjMyXSwgWy01MS4zMTcxNDYsIDQuMjAzNDkxXSwgWy01MS4wNjk3NzEsIDMuNjUwMzk4XSwgWy01MC41MDg4NzUsIDEuOTAxNTY0XSwgWy00OS45NzQwNzYsIDEuNzM2NDgzXSwgWy00OS45NDcxMDEsIDEuMDQ2MTldLCBbLTUwLjY5OTI1MSwgMC4yMjI5ODRdLCBbLTUwLjM4ODIxMSwgLTAuMDc4NDQ1XSwgWy00OC42MjA1NjcsIC0wLjIzNTQ4OV0sIFstNDguNTg0NDk3LCAtMS4yMzc4MDVdLCBbLTQ3LjgyNDk1NiwgLTAuNTgxNjE4XSwgWy00Ni41NjY1ODQsIC0wLjk0MTAyOF0sIFstNDQuOTA1NzAzLCAtMS41NTE3NF0sIFstNDQuNDE3NjE5LCAtMi4xMzc3NV0sIFstNDQuNTgxNTg5LCAtMi42OTEzMDhdLCBbLTQzLjQxODc5MSwgLTIuMzgzMTFdLCBbLTQxLjQ3MjY1NywgLTIuOTEyMDE4XSwgWy0zOS45Nzg2NjUsIC0yLjg3MzA1NF0sIFstMzguNTAwMzgzLCAtMy43MDA2NTJdLCBbLTM3LjIyMzI1MiwgLTQuODIwOTQ2XSwgWy0zNi40NTI5MzcsIC01LjEwOTQwNF0sIFstMzUuNTk3Nzk2LCAtNS4xNDk1MDRdLCBbLTM1LjIzNTM4OSwgLTUuNDY0OTM3XSwgWy0zNC44OTYwMywgLTYuNzM4MTkzXSwgWy0zNC43Mjk5OTMsIC03LjM0MzIyMV0sIFstMzUuMTI4MjEyLCAtOC45OTY0MDFdLCBbLTM1LjYzNjk2NywgLTkuNjQ5MjgyXSwgWy0zNy4wNDY1MTksIC0xMS4wNDA3MjFdLCBbLTM3LjY4MzYxMiwgLTEyLjE3MTE5NV0sIFstMzguNDIzODc3LCAtMTMuMDM4MTE5XSwgWy0zOC42NzM4ODcsIC0xMy4wNTc2NTJdLCBbLTM4Ljk1MzI3NiwgLTEzLjc5MzM3XSwgWy0zOC44ODIyOTgsIC0xNS42NjcwNTRdLCBbLTM5LjE2MTA5MiwgLTE3LjIwODQwN10sIFstMzkuMjY3MzM5LCAtMTcuODY3NzQ2XSwgWy0zOS41ODM1MjEsIC0xOC4yNjIyOTZdLCBbLTM5Ljc2MDgyMywgLTE5LjU5OTExM10sIFstNDAuNzc0NzQxLCAtMjAuOTA0NTEyXSwgWy00MC45NDQ3NTYsIC0yMS45MzczMTddLCBbLTQxLjc1NDE2NCwgLTIyLjM3MDY3Nl0sIFstNDEuOTg4Mjg0LCAtMjIuOTcwMDddLCBbLTQzLjA3NDcwNCwgLTIyLjk2NzY5M10sIFstNDQuNjQ3ODEyLCAtMjMuMzUxOTU5XSwgWy00NS4zNTIxMzYsIC0yMy43OTY4NDJdLCBbLTQ2LjQ3MjA5MywgLTI0LjA4ODk2OV0sIFstNDcuNjQ4OTcyLCAtMjQuODg1MTk5XSwgWy00OC40OTU0NTgsIC0yNS44NzcwMjVdLCBbLTQ4LjY0MTAwNSwgLTI2LjYyMzY5OF0sIFstNDguNDc0NzM2LCAtMjcuMTc1OTEyXSwgWy00OC42NjE1MiwgLTI4LjE4NjEzNV0sIFstNDguODg4NDU3LCAtMjguNjc0MTE1XSwgWy00OS41ODczMjksIC0yOS4yMjQ0NjldLCBbLTUwLjY5Njg3NCwgLTMwLjk4NDQ2NV0sIFstNTEuNTc2MjI2LCAtMzEuNzc3Njk4XSwgWy01Mi4yNTYwODEsIC0zMi4yNDUzN10sIFstNTIuNzEyMSwgLTMzLjE5NjU3OF0sIFstNTMuMzczNjYyLCAtMzMuNzY4Mzc4XSwgWy01My42NTA1NDQsIC0zMy4yMDIwMDRdLCBbLTUzLjIwOTU4OSwgLTMyLjcyNzY2Nl0sIFstNTMuNzg3OTUyLCAtMzIuMDQ3MjQzXSwgWy01NC41NzI0NTIsIC0zMS40OTQ1MTFdLCBbLTU1LjYwMTUxLCAtMzAuODUzODc5XSwgWy01NS45NzMyNDUsIC0zMC44ODMwNzZdLCBbLTU2Ljk3NjAyNiwgLTMwLjEwOTY4Nl0sIFstNTcuNjI1MTMzLCAtMzAuMjE2Mjk1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCUkEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJyYXppbCIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTE0LjIwNDAxNywgNC41MjU4NzRdLCBbMTE0LjU5OTk2MSwgNC45MDAwMTFdLCBbMTE1LjQ1MDcxLCA1LjQ0NzczXSwgWzExNS40MDU3LCA0Ljk1NTIyOF0sIFsxMTUuMzQ3NDYxLCA0LjMxNjYzNl0sIFsxMTQuODY5NTU3LCA0LjM0ODMxNF0sIFsxMTQuNjU5NTk2LCA0LjAwNzYzN10sIFsxMTQuMjA0MDE3LCA0LjUyNTg3NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQlJOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCcnVuZWkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkxLjY5NjY1NywgMjcuNzcxNzQyXSwgWzkyLjEwMzcxMiwgMjcuNDUyNjE0XSwgWzkyLjAzMzQ4NCwgMjYuODM4MzFdLCBbOTEuMjE3NTEzLCAyNi44MDg2NDhdLCBbOTAuMzczMjc1LCAyNi44NzU3MjRdLCBbODkuNzQ0NTI4LCAyNi43MTk0MDNdLCBbODguODM1NjQzLCAyNy4wOTg5NjZdLCBbODguODE0MjQ4LCAyNy4yOTkzMTZdLCBbODkuNDc1ODEsIDI4LjA0Mjc1OV0sIFs5MC4wMTU4MjksIDI4LjI5NjQzOV0sIFs5MC43MzA1MTQsIDI4LjA2NDk1NF0sIFs5MS4yNTg4NTQsIDI4LjA0MDYxNF0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQlROIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCaHV0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzI1LjY0OTE2MywgLTE4LjUzNjAyNl0sIFsyNS44NTAzOTEsIC0xOC43MTQ0MTNdLCBbMjYuMTY0NzkxLCAtMTkuMjkzMDg2XSwgWzI3LjI5NjUwNSwgLTIwLjM5MTUyXSwgWzI3LjcyNDc0NywgLTIwLjQ5OTA1OV0sIFsyNy43MjcyMjgsIC0yMC44NTE4MDJdLCBbMjguMDIxMzcsIC0yMS40ODU5NzVdLCBbMjguNzk0NjU2LCAtMjEuNjM5NDU0XSwgWzI5LjQzMjE4OCwgLTIyLjA5MTMxM10sIFsyOC4wMTcyMzYsIC0yMi44Mjc3NTRdLCBbMjcuMTE5NDEsIC0yMy41NzQzMjNdLCBbMjYuNzg2NDA3LCAtMjQuMjQwNjkxXSwgWzI2LjQ4NTc1MywgLTI0LjYxNjMyN10sIFsyNS45NDE2NTIsIC0yNC42OTYzNzNdLCBbMjUuNzY1ODQ5LCAtMjUuMTc0ODQ1XSwgWzI1LjY2NDY2NiwgLTI1LjQ4NjgxNl0sIFsyNS4wMjUxNzEsIC0yNS43MTk2N10sIFsyNC4yMTEyNjcsIC0yNS42NzAyMTZdLCBbMjMuNzMzNTcsIC0yNS4zOTAxMjldLCBbMjMuMzEyMDk3LCAtMjUuMjY4NjldLCBbMjIuODI0MjcxLCAtMjUuNTAwNDU5XSwgWzIyLjU3OTUzMiwgLTI1Ljk3OTQ0OF0sIFsyMi4xMDU5NjksIC0yNi4yODAyNTZdLCBbMjEuNjA1ODk2LCAtMjYuNzI2NTM0XSwgWzIwLjg4OTYwOSwgLTI2LjgyODU0M10sIFsyMC42NjY0NywgLTI2LjQ3NzQ1M10sIFsyMC43NTg2MDksIC0yNS44NjgxMzZdLCBbMjAuMTY1NzI2LCAtMjQuOTE3OTYyXSwgWzE5Ljg5NTc2OCwgLTI0Ljc2Nzc5XSwgWzE5Ljg5NTQ1OCwgLTIxLjg0OTE1N10sIFsyMC44ODExMzQsIC0yMS44MTQzMjddLCBbMjAuOTEwNjQxLCAtMTguMjUyMjE5XSwgWzIxLjY1NTA0LCAtMTguMjE5MTQ2XSwgWzIzLjE5Njg1OCwgLTE3Ljg2OTAzOF0sIFsyMy41NzkwMDYsIC0xOC4yODEyNjFdLCBbMjQuMjE3MzY1LCAtMTcuODg5MzQ3XSwgWzI0LjUyMDcwNSwgLTE3Ljg4NzEyNV0sIFsyNS4wODQ0NDMsIC0xNy42NjE4MTZdLCBbMjUuMjY0MjI2LCAtMTcuNzM2NTRdLCBbMjUuNjQ5MTYzLCAtMTguNTM2MDI2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCV0EiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJvdHN3YW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxNS4yNzk0NiwgNy40MjE5MjVdLCBbMTYuMTA2MjMyLCA3LjQ5NzA4OF0sIFsxNi4yOTA1NjIsIDcuNzU0MzA3XSwgWzE2LjQ1NjE4NSwgNy43MzQ3NzRdLCBbMTYuNzA1OTg4LCA3LjUwODMyOF0sIFsxNy45NjQ5MywgNy44OTA5MTRdLCBbMTguMzg5NTU1LCA4LjI4MTMwNF0sIFsxOC45MTEwMjIsIDguNjMwODk1XSwgWzE4LjgxMjAxLCA4Ljk4MjkxNV0sIFsxOS4wOTQwMDgsIDkuMDc0ODQ3XSwgWzIwLjA1OTY4NSwgOS4wMTI3MDZdLCBbMjEuMDAwODY4LCA5LjQ3NTk4NV0sIFsyMS43MjM4MjIsIDEwLjU2NzA1Nl0sIFsyMi4yMzExMjksIDEwLjk3MTg4OV0sIFsyMi44NjQxNjUsIDExLjE0MjM5NV0sIFsyMi45Nzc1NDQsIDEwLjcxNDQ2M10sIFsyMy41NTQzMDQsIDEwLjA4OTI1NV0sIFsyMy41NTcyNSwgOS42ODEyMThdLCBbMjMuMzk0Nzc5LCA5LjI2NTA2OF0sIFsyMy40NTkwMTMsIDguOTU0Mjg2XSwgWzIzLjgwNTgxMywgOC42NjYzMTldLCBbMjQuNTY3MzY5LCA4LjIyOTE4OF0sIFsyNS4xMTQ5MzIsIDcuODI1MTA0XSwgWzI1LjEyNDEzMSwgNy41MDAwODVdLCBbMjUuNzk2NjQ4LCA2Ljk3OTMxNl0sIFsyNi4yMTM0MTgsIDYuNTQ2NjAzXSwgWzI2LjQ2NTkwOSwgNS45NDY3MTddLCBbMjcuMjEzNDA5LCA1LjU1MDk1M10sIFsyNy4zNzQyMjYsIDUuMjMzOTQ0XSwgWzI3LjA0NDA2NSwgNS4xMjc4NTNdLCBbMjYuNDAyNzYxLCA1LjE1MDg3NV0sIFsyNS42NTA0NTUsIDUuMjU2MDg4XSwgWzI1LjI3ODc5OCwgNS4xNzA0MDhdLCBbMjUuMTI4ODMzLCA0LjkyNzI0NV0sIFsyNC44MDUwMjksIDQuODk3MjQ3XSwgWzI0LjQxMDUzMSwgNS4xMDg3ODRdLCBbMjMuMjk3MjE0LCA0LjYwOTY5M10sIFsyMi44NDE0OCwgNC43MTAxMjZdLCBbMjIuNzA0MTI0LCA0LjYzMzA1MV0sIFsyMi40MDUxMjQsIDQuMDI5MTZdLCBbMjEuNjU5MTIzLCA0LjIyNDM0Ml0sIFsyMC45Mjc1OTEsIDQuMzIyNzg2XSwgWzIwLjI5MDY3OSwgNC42OTE2NzhdLCBbMTkuNDY3Nzg0LCA1LjAzMTUyOF0sIFsxOC45MzIzMTIsIDQuNzA5NTA2XSwgWzE4LjU0Mjk4MiwgNC4yMDE3ODVdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxNy44MDk5LCAzLjU2MDE5Nl0sIFsxNy4xMzMwNDIsIDMuNzI4MTk3XSwgWzE2LjUzNzA1OCwgMy4xOTgyNTVdLCBbMTYuMDEyODUyLCAyLjI2NzY0XSwgWzE1LjkwNzM4MSwgMi41NTczODldLCBbMTUuODYyNzMyLCAzLjAxMzUzN10sIFsxNS40MDUzOTYsIDMuMzM1MzAxXSwgWzE1LjAzNjIyLCAzLjg1MTM2N10sIFsxNC45NTA5NTMsIDQuMjEwMzg5XSwgWzE0LjQ3ODM3MiwgNC43MzI2MDVdLCBbMTQuNTU4OTM2LCA1LjAzMDU5OF0sIFsxNC40NTk0MDcsIDUuNDUxNzYxXSwgWzE0LjUzNjU2LCA2LjIyNjk1OV0sIFsxNC43NzY1NDUsIDYuNDA4NDk4XSwgWzE1LjI3OTQ2LCA3LjQyMTkyNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ0FGIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1stNjMuNjY0NSwgNDYuNTUwMDFdLCBbLTYyLjkzOTMsIDQ2LjQxNTg3XSwgWy02Mi4wMTIwOCwgNDYuNDQzMTRdLCBbLTYyLjUwMzkxLCA0Ni4wMzMzOV0sIFstNjIuODc0MzMsIDQ1Ljk2ODE4XSwgWy02NC4xNDI4LCA0Ni4zOTI2NV0sIFstNjQuMzkyNjEsIDQ2LjcyNzQ3XSwgWy02NC4wMTQ4NiwgNDcuMDM2MDFdLCBbLTYzLjY2NDUsIDQ2LjU1MDAxXV1dLCBbW1stNjEuODA2MzA1LCA0OS4xMDUwNl0sIFstNjIuMjkzMTgsIDQ5LjA4NzE3XSwgWy02My41ODkyNiwgNDkuNDAwNjldLCBbLTY0LjUxOTEyLCA0OS44NzMwNF0sIFstNjQuMTczMjIsIDQ5Ljk1NzE4XSwgWy02Mi44NTgyOSwgNDkuNzA2NDFdLCBbLTYxLjgzNTU4NSwgNDkuMjg4NTVdLCBbLTYxLjgwNjMwNSwgNDkuMTA1MDZdXV0sIFtbWy0xMjMuNTEwMDAyLCA0OC41MTAwMTFdLCBbLTEyNC4wMTI4OTEsIDQ4LjM3MDg0Nl0sIFstMTI1LjY1NTAxMywgNDguODI1MDA1XSwgWy0xMjUuOTU0OTk0LCA0OS4xNzk5OTZdLCBbLTEyNi44NTAwMDQsIDQ5LjUzXSwgWy0xMjcuMDI5OTkzLCA0OS44MTQ5OTZdLCBbLTEyOC4wNTkzMzYsIDQ5Ljk5NDk1OV0sIFstMTI4LjQ0NDU4NCwgNTAuNTM5MTM4XSwgWy0xMjguMzU4NDE0LCA1MC43NzA2NDhdLCBbLTEyNy4zMDg1ODEsIDUwLjU1MjU3NF0sIFstMTI2LjY5NTAwMSwgNTAuNDAwOTAzXSwgWy0xMjUuNzU1MDA3LCA1MC4yOTUwMThdLCBbLTEyNS40MTUwMDIsIDQ5Ljk1MDAwMV0sIFstMTI0LjkyMDc2OCwgNDkuNDc1Mjc1XSwgWy0xMjMuOTIyNTA5LCA0OS4wNjI0ODRdLCBbLTEyMy41MTAwMDIsIDQ4LjUxMDAxMV1dXSwgW1tbLTU2LjEzNDAzNiwgNTAuNjg3MDFdLCBbLTU2Ljc5NTg4MiwgNDkuODEyMzA5XSwgWy01Ni4xNDMxMDUsIDUwLjE1MDExN10sIFstNTUuNDcxNDkyLCA0OS45MzU4MTVdLCBbLTU1LjgyMjQwMSwgNDkuNTg3MTI5XSwgWy01NC45MzUxNDMsIDQ5LjMxMzAxMV0sIFstNTQuNDczNzc1LCA0OS41NTY2OTFdLCBbLTUzLjQ3NjU0OSwgNDkuMjQ5MTM5XSwgWy01My43ODYwMTQsIDQ4LjUxNjc4MV0sIFstNTMuMDg2MTM0LCA0OC42ODc4MDRdLCBbLTUyLjk1ODY0OCwgNDguMTU3MTY0XSwgWy01Mi42NDgwOTksIDQ3LjUzNTU0OF0sIFstNTMuMDY5MTU4LCA0Ni42NTU0OTldLCBbLTUzLjUyMTQ1NiwgNDYuNjE4MjkyXSwgWy01NC4xNzg5MzYsIDQ2LjgwNzA2Nl0sIFstNTMuOTYxODY5LCA0Ny42MjUyMDddLCBbLTU0LjI0MDQ4MiwgNDcuNzUyMjc5XSwgWy01NS40MDA3NzMsIDQ2Ljg4NDk5NF0sIFstNTUuOTk3NDgxLCA0Ni45MTk3Ml0sIFstNTUuMjkxMjE5LCA0Ny4zODk1NjJdLCBbLTU2LjI1MDc5OSwgNDcuNjMyNTQ1XSwgWy01Ny4zMjUyMjksIDQ3LjU3MjgwN10sIFstNTkuMjY2MDE1LCA0Ny42MDMzNDhdLCBbLTU5LjQxOTQ5NCwgNDcuODk5NDU0XSwgWy01OC43OTY1ODYsIDQ4LjI1MTUyNV0sIFstNTkuMjMxNjI1LCA0OC41MjMxODhdLCBbLTU4LjM5MTgwNSwgNDkuMTI1NTgxXSwgWy01Ny4zNTg2OSwgNTAuNzE4Mjc0XSwgWy01Ni43Mzg2NSwgNTEuMjg3NDM4XSwgWy01NS44NzA5NzcsIDUxLjYzMjA5NF0sIFstNTUuNDA2OTc0LCA1MS41ODgyNzNdLCBbLTU1LjYwMDIxOCwgNTEuMzE3MDc1XSwgWy01Ni4xMzQwMzYsIDUwLjY4NzAxXV1dLCBbW1stMTMyLjcxMDAwOCwgNTQuMDQwMDA5XSwgWy0xMzIuNzEwMDA5LCA1NC4wNDAwMDldLCBbLTEzMi43MTAwMDgsIDU0LjA0MDAwOV0sIFstMTMyLjcxMDAwOCwgNTQuMDQwMDA5XSwgWy0xMzEuNzQ5OTksIDU0LjEyMDAwNF0sIFstMTMyLjA0OTQ4LCA1Mi45ODQ2MjFdLCBbLTEzMS4xNzkwNDMsIDUyLjE4MDQzM10sIFstMTMxLjU3NzgzLCA1Mi4xODIzNzFdLCBbLTEzMi4xODA0MjgsIDUyLjYzOTcwN10sIFstMTMyLjU0OTk5MiwgNTMuMTAwMDE1XSwgWy0xMzMuMDU0NjExLCA1My40MTE0NjldLCBbLTEzMy4yMzk2NjQsIDUzLjg1MTA4XSwgWy0xMzMuMTgwMDA0LCA1NC4xNjk5NzVdLCBbLTEzMi43MTAwMDgsIDU0LjA0MDAwOV1dXSwgW1tbLTc5LjI2NTgyLCA2Mi4xNTg2NzVdLCBbLTc5LjY1NzUyLCA2MS42MzMwOF0sIFstODAuMDk5NTYsIDYxLjcxODFdLCBbLTgwLjM2MjE1LCA2Mi4wMTY0OV0sIFstODAuMzE1Mzk1LCA2Mi4wODU1NjVdLCBbLTc5LjkyOTM5LCA2Mi4zODU2XSwgWy03OS41MjAwMiwgNjIuMzYzNzFdLCBbLTc5LjI2NTgyLCA2Mi4xNTg2NzVdXV0sIFtbWy04MS44OTgyNSwgNjIuNzEwOF0sIFstODMuMDY4NTcsIDYyLjE1OTIyXSwgWy04My43NzQ2MiwgNjIuMTgyMzFdLCBbLTgzLjk5MzY3LCA2Mi40NTI4XSwgWy04My4yNTA0OCwgNjIuOTE0MDldLCBbLTgxLjg3Njk5LCA2Mi45MDQ1OF0sIFstODEuODk4MjUsIDYyLjcxMDhdXV0sIFtbWy04NS4xNjEzMDgsIDY1LjY1NzI4NV0sIFstODQuOTc1NzY0LCA2NS4yMTc1MThdLCBbLTg0LjQ2NDAxMiwgNjUuMzcxNzcyXSwgWy04My44ODI2MjYsIDY1LjEwOTYxOF0sIFstODIuNzg3NTc3LCA2NC43NjY2OTNdLCBbLTgxLjY0MjAxNCwgNjQuNDU1MTM2XSwgWy04MS41NTM0NCwgNjMuOTc5NjA5XSwgWy04MC44MTczNjEsIDY0LjA1NzQ4Nl0sIFstODAuMTAzNDUxLCA2My43MjU5ODFdLCBbLTgwLjk5MTAyLCA2My40MTEyNDZdLCBbLTgyLjU0NzE3OCwgNjMuNjUxNzIyXSwgWy04My4xMDg3OTgsIDY0LjEwMTg3Nl0sIFstODQuMTAwNDE3LCA2My41Njk3MTJdLCBbLTg1LjUyMzQwNSwgNjMuMDUyMzc5XSwgWy04NS44NjY3NjksIDYzLjYzNzI1M10sIFstODcuMjIxOTgzLCA2My41NDEyMzhdLCBbLTg2LjM1Mjc2LCA2NC4wMzU4MzNdLCBbLTg2LjIyNDg4NiwgNjQuODIyOTE3XSwgWy04NS44ODM4NDgsIDY1LjczODc3OF0sIFstODUuMTYxMzA4LCA2NS42NTcyODVdXV0sIFtbWy03NS44NjU4OCwgNjcuMTQ4ODZdLCBbLTc2Ljk4Njg3LCA2Ny4wOTg3M10sIFstNzcuMjM2NCwgNjcuNTg4MDldLCBbLTc2LjgxMTY2LCA2OC4xNDg1Nl0sIFstNzUuODk1MjEsIDY4LjI4NzIxXSwgWy03NS4xMTQ1LCA2OC4wMTAzNl0sIFstNzUuMTAzMzMsIDY3LjU4MjAyXSwgWy03NS4yMTU5NywgNjcuNDQ0MjVdLCBbLTc1Ljg2NTg4LCA2Ny4xNDg4Nl1dXSwgW1tbLTk1LjY0NzY4MSwgNjkuMTA3NjldLCBbLTk2LjI2OTUyMSwgNjguNzU3MDRdLCBbLTk3LjYxNzQwMSwgNjkuMDYwMDNdLCBbLTk4LjQzMTgwMSwgNjguOTUwN10sIFstOTkuNzk3NDAxLCA2OS40MDAwM10sIFstOTguOTE3NDAxLCA2OS43MTAwM10sIFstOTguMjE4MjYxLCA3MC4xNDM1NF0sIFstOTcuMTU3NDAxLCA2OS44NjAwM10sIFstOTYuNTU3NDAxLCA2OS42ODAwM10sIFstOTYuMjU3NDAxLCA2OS40OTAwM10sIFstOTUuNjQ3NjgxLCA2OS4xMDc2OV1dXSwgW1tbLTkwLjU0NzEsIDY5LjQ5NzY2XSwgWy05MC41NTE1MSwgNjguNDc0OTldLCBbLTg5LjIxNTE1LCA2OS4yNTg3M10sIFstODguMDE5NjYsIDY4LjYxNTA4XSwgWy04OC4zMTc0OSwgNjcuODczMzhdLCBbLTg3LjM1MDE3LCA2Ny4xOTg3Ml0sIFstODYuMzA2MDcsIDY3LjkyMTQ2XSwgWy04NS41NzY2NCwgNjguNzg0NTZdLCBbLTg1LjUyMTk3LCA2OS44ODIxMV0sIFstODQuMTAwODEsIDY5LjgwNTM5XSwgWy04Mi42MjI1OCwgNjkuNjU4MjZdLCBbLTgxLjI4MDQzLCA2OS4xNjIwMl0sIFstODEuMjIwMiwgNjguNjY1NjddLCBbLTgxLjk2NDM2LCA2OC4xMzI1M10sIFstODEuMjU5MjgsIDY3LjU5NzE2XSwgWy04MS4zODY1MywgNjcuMTEwNzhdLCBbLTgzLjM0NDU2LCA2Ni40MTE1NF0sIFstODQuNzM1NDIsIDY2LjI1NzNdLCBbLTg1Ljc2OTQzLCA2Ni41NTgzM10sIFstODYuMDY3NiwgNjYuMDU2MjVdLCBbLTg3LjAzMTQzLCA2NS4yMTI5N10sIFstODcuMzIzMjQsIDY0Ljc3NTYzXSwgWy04OC40ODI5NiwgNjQuMDk4OTddLCBbLTg5LjkxNDQ0LCA2NC4wMzI3M10sIFstOTAuNzAzOTgsIDYzLjYxMDE3XSwgWy05MC43NzAwNCwgNjIuOTYwMjFdLCBbLTkxLjkzMzQyLCA2Mi44MzUwOF0sIFstOTMuMTU2OTgsIDYyLjAyNDY5XSwgWy05NC4yNDE1MywgNjAuODk4NjVdLCBbLTk0LjYyOTMxLCA2MC4xMTAyMV0sIFstOTQuNjg0NiwgNTguOTQ4ODJdLCBbLTkzLjIxNTAyLCA1OC43ODIxMl0sIFstOTIuNzY0NjIsIDU3Ljg0NTcxXSwgWy05Mi4yOTcwMywgNTcuMDg3MDldLCBbLTkwLjg5NzY5LCA1Ny4yODQ2OF0sIFstODkuMDM5NTMsIDU2Ljg1MTcyXSwgWy04OC4wMzk3OCwgNTYuNDcxNjJdLCBbLTg3LjMyNDIxLCA1NS45OTkxNF0sIFstODYuMDcxMjEsIDU1LjcyMzgzXSwgWy04NS4wMTE4MSwgNTUuMzAyNl0sIFstODMuMzYwNTUsIDU1LjI0NDg5XSwgWy04Mi4yNzI4NSwgNTUuMTQ4MzJdLCBbLTgyLjQzNjIsIDU0LjI4MjI3XSwgWy04Mi4xMjUwMiwgNTMuMjc3MDNdLCBbLTgxLjQwMDc1LCA1Mi4xNTc4OF0sIFstNzkuOTEyODksIDUxLjIwODQyXSwgWy03OS4xNDMwMSwgNTEuNTMzOTNdLCBbLTc4LjYwMTkxLCA1Mi41NjIwOF0sIFstNzkuMTI0MjEsIDU0LjE0MTQ1XSwgWy03OS44Mjk1OCwgNTQuNjY3NzJdLCBbLTc4LjIyODc0LCA1NS4xMzY0NV0sIFstNzcuMDk1NiwgNTUuODM3NDFdLCBbLTc2LjU0MTM3LCA1Ni41MzQyM10sIFstNzYuNjIzMTksIDU3LjIwMjYzXSwgWy03Ny4zMDIyNiwgNTguMDUyMDldLCBbLTc4LjUxNjg4LCA1OC44MDQ1OF0sIFstNzcuMzM2NzYsIDU5Ljg1MjYxXSwgWy03Ny43NzI3MiwgNjAuNzU3ODhdLCBbLTc4LjEwNjg3LCA2Mi4zMTk2NF0sIFstNzcuNDEwNjcsIDYyLjU1MDUzXSwgWy03NS42OTYyMSwgNjIuMjc4NF0sIFstNzQuNjY4MiwgNjIuMTgxMTFdLCBbLTczLjgzOTg4LCA2Mi40NDM4XSwgWy03Mi45MDg1MywgNjIuMTA1MDddLCBbLTcxLjY3NzA4LCA2MS41MjUzNV0sIFstNzEuMzczNjksIDYxLjEzNzE3XSwgWy02OS41OTA0MiwgNjEuMDYxNDFdLCBbLTY5LjYyMDMzLCA2MC4yMjEyNV0sIFstNjkuMjg3OSwgNTguOTU3MzZdLCBbLTY4LjM3NDU1LCA1OC44MDEwNl0sIFstNjcuNjQ5NzYsIDU4LjIxMjA2XSwgWy02Ni4yMDE3OCwgNTguNzY3MzFdLCBbLTY1LjI0NTE3LCA1OS44NzA3MV0sIFstNjQuNTgzNTIsIDYwLjMzNTU4XSwgWy02My44MDQ3NSwgNTkuNDQyNl0sIFstNjIuNTAyMzYsIDU4LjE2NzA4XSwgWy02MS4zOTY1NSwgNTYuOTY3NDVdLCBbLTYxLjc5ODY2LCA1Ni4zMzk0NV0sIFstNjAuNDY4NTMsIDU1Ljc3NTQ4XSwgWy01OS41Njk2MiwgNTUuMjA0MDddLCBbLTU3Ljk3NTA4LCA1NC45NDU0OV0sIFstNTcuMzMzMiwgNTQuNjI2NV0sIFstNTYuOTM2ODksIDUzLjc4MDMyXSwgWy01Ni4xNTgxMSwgNTMuNjQ3NDldLCBbLTU1Ljc1NjMyLCA1My4yNzAzNl0sIFstNTUuNjgzMzgsIDUyLjE0NjY0XSwgWy01Ni40MDkxNiwgNTEuNzcwN10sIFstNTcuMTI2OTEsIDUxLjQxOTcyXSwgWy01OC43NzQ4MiwgNTEuMDY0M10sIFstNjAuMDMzMDksIDUwLjI0Mjc3XSwgWy02MS43MjM2NiwgNTAuMDgwNDZdLCBbLTYzLjg2MjUxLCA1MC4yOTA5OV0sIFstNjUuMzYzMzEsIDUwLjI5ODJdLCBbLTY2LjM5OTA1LCA1MC4yMjg5N10sIFstNjcuMjM2MzEsIDQ5LjUxMTU2XSwgWy02OC41MTExNCwgNDkuMDY4MzZdLCBbLTY5Ljk1MzYyLCA0Ny43NDQ4OF0sIFstNzEuMTA0NTgsIDQ2LjgyMTcxXSwgWy03MC4yNTUyMiwgNDYuOTg2MDZdLCBbLTY4LjY1LCA0OC4zXSwgWy02Ni41NTI0MywgNDkuMTMzMV0sIFstNjUuMDU2MjYsIDQ5LjIzMjc4XSwgWy02NC4xNzA5OSwgNDguNzQyNDhdLCBbLTY1LjExNTQ1LCA0OC4wNzA4NV0sIFstNjQuNzk4NTQsIDQ2Ljk5Mjk3XSwgWy02NC40NzIxOSwgNDYuMjM4NDldLCBbLTYzLjE3MzI5LCA0NS43MzkwMl0sIFstNjEuNTIwNzIsIDQ1Ljg4Mzc3XSwgWy02MC41MTgxNSwgNDcuMDA3OTNdLCBbLTYwLjQ0ODYsIDQ2LjI4MjY0XSwgWy01OS44MDI4NywgNDUuOTIwNF0sIFstNjEuMDM5ODgsIDQ1LjI2NTI1XSwgWy02My4yNTQ3MSwgNDQuNjcwMTRdLCBbLTY0LjI0NjU2LCA0NC4yNjU1M10sIFstNjUuMzY0MDYsIDQzLjU0NTIzXSwgWy02Ni4xMjM0LCA0My42MTg2N10sIFstNjYuMTYxNzMsIDQ0LjQ2NTEyXSwgWy02NC40MjU0OSwgNDUuMjkyMDRdLCBbLTY2LjAyNjA1LCA0NS4yNTkzMV0sIFstNjcuMTM3NDEsIDQ1LjEzNzUzXSwgWy02Ny43OTEzNCwgNDUuNzAyODFdLCBbLTY3Ljc5MDQ2LCA0Ny4wNjYzNl0sIFstNjguMjM0NDQsIDQ3LjM1NDg2XSwgWy02OC45MDUsIDQ3LjE4NV0sIFstNjkuMjM3MjE2LCA0Ny40NDc3ODFdLCBbLTY5Ljk5OTk3LCA0Ni42OTMwN10sIFstNzAuMzA1LCA0NS45MTVdLCBbLTcwLjY2LCA0NS40Nl0sIFstNzEuMDg0ODIsIDQ1LjMwNTI0XSwgWy03MS40MDUsIDQ1LjI1NV0sIFstNzEuNTA1MDYsIDQ1LjAwODJdLCBbLTczLjM0NzgzLCA0NS4wMDczOF0sIFstNzQuODY3LCA0NS4wMDA0OF0sIFstNzUuMzE4MjEsIDQ0LjgxNjQ1XSwgWy03Ni4zNzUsIDQ0LjA5NjMxXSwgWy03Ni41LCA0NC4wMTg0NTldLCBbLTc2LjgyMDAzNCwgNDMuNjI4Nzg0XSwgWy03Ny43Mzc4ODUsIDQzLjYyOTA1Nl0sIFstNzguNzIwMjgsIDQzLjYyNTA4OV0sIFstNzkuMTcxNjc0LCA0My40NjYzMzldLCBbLTc5LjAxLCA0My4yN10sIFstNzguOTIsIDQyLjk2NV0sIFstNzguOTM5MzYyLCA0Mi44NjM2MTFdLCBbLTgwLjI0NzQ0OCwgNDIuMzY2Ml0sIFstODEuMjc3NzQ3LCA0Mi4yMDkwMjZdLCBbLTgyLjQzOTI3OCwgNDEuNjc1MTA1XSwgWy04Mi42OTAwODksIDQxLjY3NTEwNV0sIFstODMuMDI5ODEsIDQxLjgzMjc5Nl0sIFstODMuMTQyLCA0MS45NzU2ODFdLCBbLTgzLjEyLCA0Mi4wOF0sIFstODIuOSwgNDIuNDNdLCBbLTgyLjQzLCA0Mi45OF0sIFstODIuMTM3NjQyLCA0My41NzEwODhdLCBbLTgyLjMzNzc2MywgNDQuNDRdLCBbLTgyLjU1MDkyNSwgNDUuMzQ3NTE3XSwgWy04My41OTI4NTEsIDQ1LjgxNjg5NF0sIFstODMuNDY5NTUxLCA0NS45OTQ2ODZdLCBbLTgzLjYxNjEzMSwgNDYuMTE2OTI3XSwgWy04My44OTA3NjUsIDQ2LjExNjkyN10sIFstODQuMDkxODUxLCA0Ni4yNzU0MTldLCBbLTg0LjE0MjEyLCA0Ni41MTIyMjZdLCBbLTg0LjMzNjcsIDQ2LjQwODc3XSwgWy04NC42MDQ5LCA0Ni40Mzk2XSwgWy04NC41NDM3NDksIDQ2LjUzODY4NF0sIFstODQuNzc5MjM4LCA0Ni42MzcxMDJdLCBbLTg0Ljg3NjA4LCA0Ni45MDAwODNdLCBbLTg1LjY1MjM2MywgNDcuMjIwMjE5XSwgWy04Ni40NjE5OTEsIDQ3LjU1MzMzOF0sIFstODcuNDM5NzkzLCA0Ny45NF0sIFstODguMzc4MTE0LCA0OC4zMDI5MThdLCBbLTg5LjI3MjkxNywgNDguMDE5ODA4XSwgWy04OS42LCA0OC4wMV0sIFstOTAuODMsIDQ4LjI3XSwgWy05MS42NCwgNDguMTRdLCBbLTkyLjYxLCA0OC40NV0sIFstOTMuNjMwODcsIDQ4LjYwOTI2XSwgWy05NC4zMjkxNCwgNDguNjcwNzRdLCBbLTk0LjY0LCA0OC44NF0sIFstOTQuODE3NTgsIDQ5LjM4OTA1XSwgWy05NS4xNTYwOSwgNDkuMzg0MjVdLCBbLTk1LjE1OTA3LCA0OV0sIFstOTcuMjI4NzIsIDQ5LjAwMDddLCBbLTEwMC42NSwgNDldLCBbLTEwNC4wNDgyNiwgNDguOTk5ODZdLCBbLTEwNy4wNSwgNDldLCBbLTExMC4wNSwgNDldLCBbLTExMywgNDldLCBbLTExNi4wNDgxOCwgNDldLCBbLTExNy4wMzEyMSwgNDldLCBbLTEyMCwgNDldLCBbLTEyMi44NCwgNDldLCBbLTEyMi45NzQyMSwgNDkuMDAyNTM4XSwgWy0xMjQuOTEwMjQsIDQ5Ljk4NDU2XSwgWy0xMjUuNjI0NjEsIDUwLjQxNjU2XSwgWy0xMjcuNDM1NjEsIDUwLjgzMDYxXSwgWy0xMjcuOTkyNzYsIDUxLjcxNTgzXSwgWy0xMjcuODUwMzIsIDUyLjMyOTYxXSwgWy0xMjkuMTI5NzksIDUyLjc1NTM4XSwgWy0xMjkuMzA1MjMsIDUzLjU2MTU5XSwgWy0xMzAuNTE0OTcsIDU0LjI4NzU3XSwgWy0xMzAuNTM2MTEsIDU0LjgwMjc4XSwgWy0xMjkuOTgsIDU1LjI4NV0sIFstMTMwLjAwNzc4LCA1NS45MTU4M10sIFstMTMxLjcwNzgxLCA1Ni41NTIxMl0sIFstMTMyLjczMDQyLCA1Ny42OTI4OV0sIFstMTMzLjM1NTU2LCA1OC40MTAyOF0sIFstMTM0LjI3MTExLCA1OC44NjExMV0sIFstMTM0Ljk0NSwgNTkuMjcwNTZdLCBbLTEzNS40NzU4MywgNTkuNzg3NzhdLCBbLTEzNi40Nzk3MiwgNTkuNDYzODldLCBbLTEzNy40NTI1LCA1OC45MDVdLCBbLTEzOC4zNDA4OSwgNTkuNTYyMTFdLCBbLTEzOS4wMzksIDYwXSwgWy0xNDAuMDEzLCA2MC4yNzY4Ml0sIFstMTQwLjk5Nzc4LCA2MC4zMDYzOV0sIFstMTQwLjk5MjUsIDY2LjAwMDAzXSwgWy0xNDAuOTg2LCA2OS43MTJdLCBbLTEzOS4xMjA1MiwgNjkuNDcxMDJdLCBbLTEzNy41NDYzNiwgNjguOTkwMDJdLCBbLTEzNi41MDM1OCwgNjguODk4MDRdLCBbLTEzNS42MjU3NiwgNjkuMzE1MTJdLCBbLTEzNC40MTQ2NCwgNjkuNjI3NDNdLCBbLTEzMi45MjkyNSwgNjkuNTA1MzRdLCBbLTEzMS40MzEzNiwgNjkuOTQ0NTFdLCBbLTEyOS43OTQ3MSwgNzAuMTkzNjldLCBbLTEyOS4xMDc3MywgNjkuNzc5MjddLCBbLTEyOC4zNjE1NiwgNzAuMDEyODZdLCBbLTEyOC4xMzgxNywgNzAuNDgzODRdLCBbLTEyNy40NDcxMiwgNzAuMzc3MjFdLCBbLTEyNS43NTYzMiwgNjkuNDgwNThdLCBbLTEyNC40MjQ4MywgNzAuMTU4NF0sIFstMTI0LjI4OTY4LCA2OS4zOTk2OV0sIFstMTIzLjA2MTA4LCA2OS41NjM3Ml0sIFstMTIyLjY4MzUsIDY5Ljg1NTUzXSwgWy0xMjEuNDcyMjYsIDY5Ljc5Nzc4XSwgWy0xMTkuOTQyODgsIDY5LjM3Nzg2XSwgWy0xMTcuNjAyNjgsIDY5LjAxMTI4XSwgWy0xMTYuMjI2NDMsIDY4Ljg0MTUxXSwgWy0xMTUuMjQ2OSwgNjguOTA1OTFdLCBbLTExMy44OTc5NCwgNjguMzk4OV0sIFstMTE1LjMwNDg5LCA2Ny45MDI2MV0sIFstMTEzLjQ5NzI3LCA2Ny42ODgxNV0sIFstMTEwLjc5OCwgNjcuODA2MTJdLCBbLTEwOS45NDYxOSwgNjcuOTgxMDRdLCBbLTEwOC44ODAyLCA2Ny4zODE0NF0sIFstMTA3Ljc5MjM5LCA2Ny44ODczNl0sIFstMTA4LjgxMjk5LCA2OC4zMTE2NF0sIFstMTA4LjE2NzIxLCA2OC42NTM5Ml0sIFstMTA2Ljk1LCA2OC43XSwgWy0xMDYuMTUsIDY4LjhdLCBbLTEwNS4zNDI4MiwgNjguNTYxMjJdLCBbLTEwNC4zMzc5MSwgNjguMDE4XSwgWy0xMDMuMjIxMTUsIDY4LjA5Nzc1XSwgWy0xMDEuNDU0MzMsIDY3LjY0Njg5XSwgWy05OS45MDE5NSwgNjcuODA1NjZdLCBbLTk4LjQ0MzIsIDY3Ljc4MTY1XSwgWy05OC41NTg2LCA2OC40MDM5NF0sIFstOTcuNjY5NDgsIDY4LjU3ODY0XSwgWy05Ni4xMTk5MSwgNjguMjM5MzldLCBbLTk2LjEyNTg4LCA2Ny4yOTMzOF0sIFstOTUuNDg5NDMsIDY4LjA5MDddLCBbLTk0LjY4NSwgNjguMDYzODNdLCBbLTk0LjIzMjgyLCA2OS4wNjkwM10sIFstOTUuMzA0MDgsIDY5LjY4NTcxXSwgWy05Ni40NzEzMSwgNzAuMDg5NzZdLCBbLTk2LjM5MTE1LCA3MS4xOTQ4Ml0sIFstOTUuMjA4OCwgNzEuOTIwNTNdLCBbLTkzLjg4OTk3LCA3MS43NjAxNV0sIFstOTIuODc4MTgsIDcxLjMxODY5XSwgWy05MS41MTk2NCwgNzAuMTkxMjldLCBbLTkyLjQwNjkyLCA2OS42OTk5N10sIFstOTAuNTQ3MSwgNjkuNDk3NjZdXV0sIFtbWy0xMTQuMTY3MTcsIDczLjEyMTQ1XSwgWy0xMTQuNjY2MzQsIDcyLjY1Mjc3XSwgWy0xMTIuNDQxMDIsIDcyLjk1NTRdLCBbLTExMS4wNTAzOSwgNzIuNDUwNF0sIFstMTA5LjkyMDM1LCA3Mi45NjExM10sIFstMTA5LjAwNjU0LCA3Mi42MzMzNV0sIFstMTA4LjE4ODM1LCA3MS42NTA4OV0sIFstMTA3LjY4NTk5LCA3Mi4wNjU0OF0sIFstMTA4LjM5NjM5LCA3My4wODk1M10sIFstMTA3LjUxNjQ1LCA3My4yMzU5OF0sIFstMTA2LjUyMjU5LCA3My4wNzYwMV0sIFstMTA1LjQwMjQ2LCA3Mi42NzI1OV0sIFstMTA0Ljc3NDg0LCA3MS42OTg0XSwgWy0xMDQuNDY0NzYsIDcwLjk5Mjk3XSwgWy0xMDIuNzg1MzcsIDcwLjQ5Nzc2XSwgWy0xMDAuOTgwNzgsIDcwLjAyNDMyXSwgWy0xMDEuMDg5MjksIDY5LjU4NDQ3XSwgWy0xMDIuNzMxMTYsIDY5LjUwNDAyXSwgWy0xMDIuMDkzMjksIDY5LjExOTYyXSwgWy0xMDIuNDMwMjQsIDY4Ljc1MjgyXSwgWy0xMDQuMjQsIDY4LjkxXSwgWy0xMDUuOTYsIDY5LjE4XSwgWy0xMDcuMTIyNTQsIDY5LjExOTIyXSwgWy0xMDksIDY4Ljc4XSwgWy0xMTEuNTM0MTQ5LCA2OC42MzAwNTldLCBbLTExMy4zMTMyLCA2OC41MzU1NF0sIFstMTEzLjg1NDk2LCA2OS4wMDc0NF0sIFstMTE1LjIyLCA2OS4yOF0sIFstMTE2LjEwNzk0LCA2OS4xNjgyMV0sIFstMTE3LjM0LCA2OS45Nl0sIFstMTE2LjY3NDczLCA3MC4wNjY1NV0sIFstMTE1LjEzMTEyLCA3MC4yMzczXSwgWy0xMTMuNzIxNDEsIDcwLjE5MjM3XSwgWy0xMTIuNDE2MSwgNzAuMzY2MzhdLCBbLTExNC4zNSwgNzAuNl0sIFstMTE2LjQ4Njg0LCA3MC41MjA0NV0sIFstMTE3LjkwNDgsIDcwLjU0MDU2XSwgWy0xMTguNDMyMzgsIDcwLjkwOTJdLCBbLTExNi4xMTMxMSwgNzEuMzA5MThdLCBbLTExNy42NTU2OCwgNzEuMjk1Ml0sIFstMTE5LjQwMTk5LCA3MS41NTg1OV0sIFstMTE4LjU2MjY3LCA3Mi4zMDc4NV0sIFstMTE3Ljg2NjQyLCA3Mi43MDU5NF0sIFstMTE1LjE4OTA5LCA3My4zMTQ1OV0sIFstMTE0LjE2NzE3LCA3My4xMjE0NV1dXSwgW1tbLTEwNC41LCA3My40Ml0sIFstMTA1LjM4LCA3Mi43Nl0sIFstMTA2Ljk0LCA3My40Nl0sIFstMTA2LjYsIDczLjZdLCBbLTEwNS4yNiwgNzMuNjRdLCBbLTEwNC41LCA3My40Ml1dXSwgW1tbLTc2LjM0LCA3My4xMDI2ODVdLCBbLTc2LjI1MTQwNCwgNzIuODI2Mzg1XSwgWy03Ny4zMTQ0MzgsIDcyLjg1NTU0NV0sIFstNzguMzkxNjcsIDcyLjg3NjY1Nl0sIFstNzkuNDg2MjUyLCA3Mi43NDIyMDNdLCBbLTc5Ljc3NTgzMywgNzIuODAyOTAyXSwgWy04MC44NzYwOTksIDczLjMzMzE4M10sIFstODAuODMzODg1LCA3My42OTMxODRdLCBbLTgwLjM1MzA1OCwgNzMuNzU5NzJdLCBbLTc4LjA2NDQzOCwgNzMuNjUxOTMyXSwgWy03Ni4zNCwgNzMuMTAyNjg1XV1dLCBbW1stODYuNTYyMTc5LCA3My4xNTc0NDddLCBbLTg1Ljc3NDM3MSwgNzIuNTM0MTI2XSwgWy04NC44NTAxMTIsIDczLjM0MDI3OF0sIFstODIuMzE1NTksIDczLjc1MDk1MV0sIFstODAuNjAwMDg4LCA3Mi43MTY1NDRdLCBbLTgwLjc0ODk0MiwgNzIuMDYxOTA3XSwgWy03OC43NzA2MzksIDcyLjM1MjE3M10sIFstNzcuODI0NjI0LCA3Mi43NDk2MTddLCBbLTc1LjYwNTg0NSwgNzIuMjQzNjc4XSwgWy03NC4yMjg2MTYsIDcxLjc2NzE0NF0sIFstNzQuMDk5MTQxLCA3MS4zMzA4NF0sIFstNzIuMjQyMjI2LCA3MS41NTY5MjVdLCBbLTcxLjIwMDAxNSwgNzAuOTIwMDEzXSwgWy02OC43ODYwNTQsIDcwLjUyNTAyNF0sIFstNjcuOTE0OTcsIDcwLjEyMTk0OF0sIFstNjYuOTY5MDMzLCA2OS4xODYwODddLCBbLTY4LjgwNTEyMywgNjguNzIwMTk4XSwgWy02Ni40NDk4NjYsIDY4LjA2NzE2M10sIFstNjQuODYyMzE0LCA2Ny44NDc1MzldLCBbLTYzLjQyNDkzNCwgNjYuOTI4NDczXSwgWy02MS44NTE5ODEsIDY2Ljg2MjEyMV0sIFstNjIuMTYzMTc3LCA2Ni4xNjAyNTFdLCBbLTYzLjkxODQ0NCwgNjQuOTk4NjY5XSwgWy02NS4xNDg4NiwgNjUuNDI2MDMzXSwgWy02Ni43MjEyMTksIDY2LjM4ODA0MV0sIFstNjguMDE1MDE2LCA2Ni4yNjI3MjZdLCBbLTY4LjE0MTI4NywgNjUuNjg5Nzg5XSwgWy02Ny4wODk2NDYsIDY1LjEwODQ1NV0sIFstNjUuNzMyMDgsIDY0LjY0ODQwNl0sIFstNjUuMzIwMTY4LCA2NC4zODI3MzddLCBbLTY0LjY2OTQwNiwgNjMuMzkyOTI3XSwgWy02NS4wMTM4MDQsIDYyLjY3NDE4NV0sIFstNjYuMjc1MDQ1LCA2Mi45NDUwOTldLCBbLTY4Ljc4MzE4NiwgNjMuNzQ1NjddLCBbLTY3LjM2OTY4MSwgNjIuODgzOTY2XSwgWy02Ni4zMjgyOTcsIDYyLjI4MDA3NV0sIFstNjYuMTY1NTY4LCA2MS45MzA4OTddLCBbLTY4Ljg3NzM2NywgNjIuMzMwMTQ5XSwgWy03MS4wMjM0MzcsIDYyLjkxMDcwOF0sIFstNzIuMjM1Mzc5LCA2My4zOTc4MzZdLCBbLTcxLjg4NjI3OCwgNjMuNjc5OTg5XSwgWy03My4zNzgzMDYsIDY0LjE5Mzk2M10sIFstNzQuODM0NDE5LCA2NC42NzkwNzZdLCBbLTc0LjgxODUwMywgNjQuMzg5MDkzXSwgWy03Ny43MDk5OCwgNjQuMjI5NTQyXSwgWy03OC41NTU5NDksIDY0LjU3MjkwNl0sIFstNzcuODk3MjgxLCA2NS4zMDkxOTJdLCBbLTc2LjAxODI3NCwgNjUuMzI2OTY5XSwgWy03My45NTk3OTUsIDY1LjQ1NDc2NV0sIFstNzQuMjkzODgzLCA2NS44MTE3NzFdLCBbLTczLjk0NDkxMiwgNjYuMzEwNTc4XSwgWy03Mi42NTExNjcsIDY3LjI4NDU3Nl0sIFstNzIuOTI2MDYsIDY3LjcyNjkyNl0sIFstNzMuMzExNjE4LCA2OC4wNjk0MzddLCBbLTc0Ljg0MzMwNywgNjguNTU0NjI3XSwgWy03Ni44NjkxMDEsIDY4Ljg5NDczNl0sIFstNzYuMjI4NjQ5LCA2OS4xNDc3NjldLCBbLTc3LjI4NzM3LCA2OS43Njk1NF0sIFstNzguMTY4NjM0LCA2OS44MjY0ODhdLCBbLTc4Ljk1NzI0MiwgNzAuMTY2ODhdLCBbLTc5LjQ5MjQ1NSwgNjkuODcxODA4XSwgWy04MS4zMDU0NzEsIDY5Ljc0MzE4NV0sIFstODQuOTQ0NzA2LCA2OS45NjY2MzRdLCBbLTg3LjA2MDAwMywgNzAuMjYwMDAxXSwgWy04OC42ODE3MTMsIDcwLjQxMDc0MV0sIFstODkuNTEzNDIsIDcwLjc2MjAzOF0sIFstODguNDY3NzIxLCA3MS4yMTgxODZdLCBbLTg5Ljg4ODE1MSwgNzEuMjIyNTUyXSwgWy05MC4yMDUxNiwgNzIuMjM1MDc0XSwgWy04OS40MzY1NzcsIDczLjEyOTQ2NF0sIFstODguNDA4MjQyLCA3My41Mzc4ODldLCBbLTg1LjgyNjE1MSwgNzMuODAzODE2XSwgWy04Ni41NjIxNzksIDczLjE1NzQ0N11dXSwgW1tbLTEwMC4zNTY0MiwgNzMuODQzODldLCBbLTk5LjE2Mzg3LCA3My42MzMzOV0sIFstOTcuMzgsIDczLjc2XSwgWy05Ny4xMiwgNzMuNDddLCBbLTk4LjA1MzU5LCA3Mi45OTA1Ml0sIFstOTYuNTQsIDcyLjU2XSwgWy05Ni43MiwgNzEuNjZdLCBbLTk4LjM1OTY2LCA3MS4yNzI4NV0sIFstOTkuMzIyODYsIDcxLjM1NjM5XSwgWy0xMDAuMDE0ODIsIDcxLjczODI3XSwgWy0xMDIuNSwgNzIuNTFdLCBbLTEwMi40OCwgNzIuODNdLCBbLTEwMC40MzgzNiwgNzIuNzA1ODhdLCBbLTEwMS41NCwgNzMuMzZdLCBbLTEwMC4zNTY0MiwgNzMuODQzODldXV0sIFtbWy05My4xOTYyOTYsIDcyLjc3MTk5Ml0sIFstOTQuMjY5MDQ3LCA3Mi4wMjQ1OTZdLCBbLTk1LjQwOTg1NiwgNzIuMDYxODgxXSwgWy05Ni4wMzM3NDUsIDcyLjk0MDI3N10sIFstOTYuMDE4MjY4LCA3My40Mzc0M10sIFstOTUuNDk1NzkzLCA3My44NjI0MTddLCBbLTk0LjUwMzY1OCwgNzQuMTM0OTA3XSwgWy05Mi40MjAwMTIsIDc0LjEwMDAyNV0sIFstOTAuNTA5NzkzLCA3My44NTY3MzJdLCBbLTkyLjAwMzk2NSwgNzIuOTY2MjQ0XSwgWy05My4xOTYyOTYsIDcyLjc3MTk5Ml1dXSwgW1tbLTEyMC40NiwgNzEuMzgzNjAyXSwgWy0xMjMuMDkyMTksIDcwLjkwMTY0XSwgWy0xMjMuNjIsIDcxLjM0XSwgWy0xMjUuOTI4OTQ5LCA3MS44Njg2ODhdLCBbLTEyNS41LCA3Mi4yOTIyNjFdLCBbLTEyNC44MDcyOSwgNzMuMDIyNTZdLCBbLTEyMy45NCwgNzMuNjhdLCBbLTEyNC45MTc3NSwgNzQuMjkyNzVdLCBbLTEyMS41Mzc4OCwgNzQuNDQ4OTNdLCBbLTEyMC4xMDk3OCwgNzQuMjQxMzVdLCBbLTExNy41NTU2NCwgNzQuMTg1NzddLCBbLTExNi41ODQ0MiwgNzMuODk2MDddLCBbLTExNS41MTA4MSwgNzMuNDc1MTldLCBbLTExNi43Njc5NCwgNzMuMjIyOTJdLCBbLTExOS4yMiwgNzIuNTJdLCBbLTEyMC40NiwgNzEuODJdLCBbLTEyMC40NiwgNzEuMzgzNjAyXV1dLCBbW1stOTMuNjEyNzU2LCA3NC45Nzk5OTddLCBbLTk0LjE1NjkwOSwgNzQuNTkyMzQ3XSwgWy05NS42MDg2ODEsIDc0LjY2Njg2NF0sIFstOTYuODIwOTMyLCA3NC45Mjc2MjNdLCBbLTk2LjI4ODU4NywgNzUuMzc3ODI4XSwgWy05NC44NTA4MiwgNzUuNjQ3MjE4XSwgWy05My45Nzc3NDcsIDc1LjI5NjQ5XSwgWy05My42MTI3NTYsIDc0Ljk3OTk5N11dXSwgW1tbLTk4LjUsIDc2LjcyXSwgWy05Ny43MzU1ODUsIDc2LjI1NjU2XSwgWy05Ny43MDQ0MTUsIDc1Ljc0MzQ0XSwgWy05OC4xNiwgNzVdLCBbLTk5LjgwODc0LCA3NC44OTc0NF0sIFstMTAwLjg4MzY2LCA3NS4wNTczNl0sIFstMTAwLjg2MjkyLCA3NS42NDA3NV0sIFstMTAyLjUwMjA5LCA3NS41NjM4XSwgWy0xMDIuNTY1NTIsIDc2LjMzNjZdLCBbLTEwMS40ODk3MywgNzYuMzA1MzddLCBbLTk5Ljk4MzQ5LCA3Ni42NDYzNF0sIFstOTguNTc2OTksIDc2LjU4ODU5XSwgWy05OC41LCA3Ni43Ml1dXSwgW1tbLTEwOC4yMTE0MSwgNzYuMjAxNjhdLCBbLTEwNy44MTk0MywgNzUuODQ1NTJdLCBbLTEwNi45Mjg5MywgNzYuMDEyODJdLCBbLTEwNS44ODEsIDc1Ljk2OTRdLCBbLTEwNS43MDQ5OCwgNzUuNDc5NTFdLCBbLTEwNi4zMTM0NywgNzUuMDA1MjddLCBbLTEwOS43LCA3NC44NV0sIFstMTEyLjIyMzA3LCA3NC40MTY5Nl0sIFstMTEzLjc0MzgxLCA3NC4zOTQyN10sIFstMTEzLjg3MTM1LCA3NC43MjAyOV0sIFstMTExLjc5NDIxLCA3NS4xNjI1XSwgWy0xMTYuMzEyMjEsIDc1LjA0MzQzXSwgWy0xMTcuNzEwNCwgNzUuMjIyMl0sIFstMTE2LjM0NjAyLCA3Ni4xOTkwM10sIFstMTE1LjQwNDg3LCA3Ni40Nzg4N10sIFstMTEyLjU5MDU2LCA3Ni4xNDEzNF0sIFstMTEwLjgxNDIyLCA3NS41NDkxOV0sIFstMTA5LjA2NzEsIDc1LjQ3MzIxXSwgWy0xMTAuNDk3MjYsIDc2LjQyOTgyXSwgWy0xMDkuNTgxMSwgNzYuNzk0MTddLCBbLTEwOC41NDg1OSwgNzYuNjc4MzJdLCBbLTEwOC4yMTE0MSwgNzYuMjAxNjhdXV0sIFtbWy05NC42ODQwODYsIDc3LjA5Nzg3OF0sIFstOTMuNTczOTIxLCA3Ni43NzYyOTZdLCBbLTkxLjYwNTAyMywgNzYuNzc4NTE4XSwgWy05MC43NDE4NDYsIDc2LjQ0OTU5N10sIFstOTAuOTY5NjYxLCA3Ni4wNzQwMTNdLCBbLTg5LjgyMjIzOCwgNzUuODQ3Nzc0XSwgWy04OS4xODcwODMsIDc1LjYxMDE2Nl0sIFstODcuODM4Mjc2LCA3NS41NjYxODldLCBbLTg2LjM3OTE5MiwgNzUuNDgyNDIxXSwgWy04NC43ODk2MjUsIDc1LjY5OTIwNF0sIFstODIuNzUzNDQ1LCA3NS43ODQzMTVdLCBbLTgxLjEyODUzMSwgNzUuNzEzOTgzXSwgWy04MC4wNTc1MTEsIDc1LjMzNjg0OV0sIFstNzkuODMzOTMzLCA3NC45MjMxMjddLCBbLTgwLjQ1Nzc3MSwgNzQuNjU3MzA0XSwgWy04MS45NDg4NDMsIDc0LjQ0MjQ1OV0sIFstODMuMjI4ODk0LCA3NC41NjQwMjhdLCBbLTg2LjA5NzQ1MiwgNzQuNDEwMDMyXSwgWy04OC4xNTAzNSwgNzQuMzkyMzA3XSwgWy04OS43NjQ3MjIsIDc0LjUxNTU1NV0sIFstOTIuNDIyNDQxLCA3NC44Mzc3NThdLCBbLTkyLjc2ODI4NSwgNzUuMzg2ODJdLCBbLTkyLjg4OTkwNiwgNzUuODgyNjU1XSwgWy05My44OTM4MjQsIDc2LjMxOTI0NF0sIFstOTUuOTYyNDU3LCA3Ni40NDEzODFdLCBbLTk3LjEyMTM3OSwgNzYuNzUxMDc4XSwgWy05Ni43NDUxMjMsIDc3LjE2MTM4OV0sIFstOTQuNjg0MDg2LCA3Ny4wOTc4NzhdXV0sIFtbWy0xMTYuMTk4NTg3LCA3Ny42NDUyODddLCBbLTExNi4zMzU4MTMsIDc2Ljg3Njk2Ml0sIFstMTE3LjEwNjA1MSwgNzYuNTMwMDMyXSwgWy0xMTguMDQwNDEyLCA3Ni40ODExNzJdLCBbLTExOS44OTkzMTgsIDc2LjA1MzIxM10sIFstMTIxLjQ5OTk5NSwgNzUuOTAwMDE5XSwgWy0xMjIuODU0OTI0LCA3Ni4xMTY1NDNdLCBbLTEyMi44NTQ5MjUsIDc2LjExNjU0M10sIFstMTIxLjE1NzUzNSwgNzYuODY0NTA4XSwgWy0xMTkuMTAzOTM5LCA3Ny41MTIyMl0sIFstMTE3LjU3MDEzMSwgNzcuNDk4MzE5XSwgWy0xMTYuMTk4NTg3LCA3Ny42NDUyODddXV0sIFtbWy05My44NDAwMDMsIDc3LjUxOTk5N10sIFstOTQuMjk1NjA4LCA3Ny40OTEzNDNdLCBbLTk2LjE2OTY1NCwgNzcuNTU1MTExXSwgWy05Ni40MzYzMDQsIDc3LjgzNDYyOV0sIFstOTQuNDIyNTc3LCA3Ny44MjAwMDVdLCBbLTkzLjcyMDY1NiwgNzcuNjM0MzMxXSwgWy05My44NDAwMDMsIDc3LjUxOTk5N11dXSwgW1tbLTExMC4xODY5MzgsIDc3LjY5NzAxNV0sIFstMTEyLjA1MTE5MSwgNzcuNDA5MjI5XSwgWy0xMTMuNTM0Mjc5LCA3Ny43MzIyMDddLCBbLTExMi43MjQ1ODcsIDc4LjA1MTA1XSwgWy0xMTEuMjY0NDQzLCA3OC4xNTI5NTZdLCBbLTEwOS44NTQ0NTIsIDc3Ljk5NjMyNV0sIFstMTEwLjE4NjkzOCwgNzcuNjk3MDE1XV1dLCBbW1stMTA5LjY2MzE0NiwgNzguNjAxOTczXSwgWy0xMTAuODgxMzE0LCA3OC40MDY5Ml0sIFstMTEyLjU0MjA5MSwgNzguNDA3OTAyXSwgWy0xMTIuNTI1ODkxLCA3OC41NTA1NTVdLCBbLTExMS41MDAwMSwgNzguODQ5OTk0XSwgWy0xMTAuOTYzNjYxLCA3OC44MDQ0NDFdLCBbLTEwOS42NjMxNDYsIDc4LjYwMTk3M11dXSwgW1tbLTk1LjgzMDI5NSwgNzguMDU2OTQxXSwgWy05Ny4zMDk4NDMsIDc3Ljg1MDU5N10sIFstOTguMTI0Mjg5LCA3OC4wODI4NTddLCBbLTk4LjU1Mjg2OCwgNzguNDU4MTA1XSwgWy05OC42MzE5ODQsIDc4Ljg3MTkzXSwgWy05Ny4zMzcyMzEsIDc4LjgzMTk4NF0sIFstOTYuNzU0Mzk5LCA3OC43NjU4MTNdLCBbLTk1LjU1OTI3OCwgNzguNDE4MzE1XSwgWy05NS44MzAyOTUsIDc4LjA1Njk0MV1dXSwgW1tbLTEwMC4wNjAxOTIsIDc4LjMyNDc1NF0sIFstOTkuNjcwOTM5LCA3Ny45MDc1NDVdLCBbLTEwMS4zMDM5NCwgNzguMDE4OTg1XSwgWy0xMDIuOTQ5ODA5LCA3OC4zNDMyMjldLCBbLTEwNS4xNzYxMzMsIDc4LjM4MDMzMl0sIFstMTA0LjIxMDQyOSwgNzguNjc3NDJdLCBbLTEwNS40MTk1OCwgNzguOTE4MzM2XSwgWy0xMDUuNDkyMjg5LCA3OS4zMDE1OTRdLCBbLTEwMy41MjkyODIsIDc5LjE2NTM0OV0sIFstMTAwLjgyNTE1OCwgNzguODAwNDYyXSwgWy0xMDAuMDYwMTkyLCA3OC4zMjQ3NTRdXV0sIFtbWy04Ny4wMiwgNzkuNjZdLCBbLTg1LjgxNDM1LCA3OS4zMzY5XSwgWy04Ny4xODc1NiwgNzkuMDM5M10sIFstODkuMDM1MzUsIDc4LjI4NzIzXSwgWy05MC44MDQzNiwgNzguMjE1MzNdLCBbLTkyLjg3NjY5LCA3OC4zNDMzM10sIFstOTMuOTUxMTYsIDc4Ljc1MDk5XSwgWy05My45MzU3NCwgNzkuMTEzNzNdLCBbLTkzLjE0NTI0LCA3OS4zODAxXSwgWy05NC45NzQsIDc5LjM3MjQ4XSwgWy05Ni4wNzYxNCwgNzkuNzA1MDJdLCBbLTk2LjcwOTcyLCA4MC4xNTc3N10sIFstOTYuMDE2NDQsIDgwLjYwMjMzXSwgWy05NS4zMjM0NSwgODAuOTA3MjldLCBbLTk0LjI5ODQzLCA4MC45NzcyN10sIFstOTQuNzM1NDIsIDgxLjIwNjQ2XSwgWy05Mi40MDk4NCwgODEuMjU3MzldLCBbLTkxLjEzMjg5LCA4MC43MjM0NV0sIFstODkuNDUsIDgwLjUwOTMyMl0sIFstODcuODEsIDgwLjMyXSwgWy04Ny4wMiwgNzkuNjZdXV0sIFtbWy02OC41LCA4My4xMDYzMjJdLCBbLTY1LjgyNzM1LCA4My4wMjgwMV0sIFstNjMuNjgsIDgyLjldLCBbLTYxLjg1LCA4Mi42Mjg2XSwgWy02MS44OTM4OCwgODIuMzYxNjVdLCBbLTY0LjMzNCwgODEuOTI3NzVdLCBbLTY2Ljc1MzQyLCA4MS43MjUyN10sIFstNjcuNjU3NTUsIDgxLjUwMTQxXSwgWy02NS40ODAzMSwgODEuNTA2NTddLCBbLTY3Ljg0LCA4MC45XSwgWy02OS40Njk3LCA4MC42MTY4M10sIFstNzEuMTgsIDc5LjhdLCBbLTczLjI0MjgsIDc5LjYzNDE1XSwgWy03My44OCwgNzkuNDMwMTYyXSwgWy03Ni45MDc3MywgNzkuMzIzMDldLCBbLTc1LjUyOTI0LCA3OS4xOTc2Nl0sIFstNzYuMjIwNDYsIDc5LjAxOTA3XSwgWy03NS4zOTM0NSwgNzguNTI1ODFdLCBbLTc2LjM0MzU0LCA3OC4xODI5Nl0sIFstNzcuODg4NTEsIDc3Ljg5OTkxXSwgWy03OC4zNjI2OSwgNzcuNTA4NTldLCBbLTc5Ljc1OTUxLCA3Ny4yMDk2OF0sIFstNzkuNjE5NjUsIDc2Ljk4MzM2XSwgWy03Ny45MTA4OSwgNzcuMDIyMDQ1XSwgWy03Ny44ODkxMSwgNzYuNzc3OTU1XSwgWy04MC41NjEyNSwgNzYuMTc4MTJdLCBbLTgzLjE3NDM5LCA3Ni40NTQwM10sIFstODYuMTExODQsIDc2LjI5OTAxXSwgWy04Ny42LCA3Ni40Ml0sIFstODkuNDkwNjgsIDc2LjQ3MjM5XSwgWy04OS42MTYxLCA3Ni45NTIxM10sIFstODcuNzY3MzksIDc3LjE3ODMzXSwgWy04OC4yNiwgNzcuOV0sIFstODcuNjUsIDc3Ljk3MDIyMl0sIFstODQuOTc2MzQsIDc3LjUzODczXSwgWy04Ni4zNCwgNzguMThdLCBbLTg3Ljk2MTkyLCA3OC4zNzE4MV0sIFstODcuMTUxOTgsIDc4Ljc1ODY3XSwgWy04NS4zNzg2OCwgNzguOTk2OV0sIFstODUuMDk0OTUsIDc5LjM0NTQzXSwgWy04Ni41MDczNCwgNzkuNzM2MjRdLCBbLTg2LjkzMTc5LCA4MC4yNTE0NV0sIFstODQuMTk4NDQsIDgwLjIwODM2XSwgWy04My40MDg2OTYsIDgwLjFdLCBbLTgxLjg0ODIzLCA4MC40NjQ0Ml0sIFstODQuMSwgODAuNThdLCBbLTg3LjU5ODk1LCA4MC41MTYyN10sIFstODkuMzY2NjMsIDgwLjg1NTY5XSwgWy05MC4yLCA4MS4yNl0sIFstOTEuMzY3ODYsIDgxLjU1MzFdLCBbLTkxLjU4NzAyLCA4MS44OTQyOV0sIFstOTAuMSwgODIuMDg1XSwgWy04OC45MzIyNywgODIuMTE3NTFdLCBbLTg2Ljk3MDI0LCA4Mi4yNzk2MV0sIFstODUuNSwgODIuNjUyMjczXSwgWy04NC4yNjAwMDUsIDgyLjZdLCBbLTgzLjE4LCA4Mi4zMl0sIFstODIuNDIsIDgyLjg2XSwgWy04MS4xLCA4My4wMl0sIFstNzkuMzA2NjQsIDgzLjEzMDU2XSwgWy03Ni4yNSwgODMuMTcyMDU5XSwgWy03NS43MTg3OCwgODMuMDY0MDRdLCBbLTcyLjgzMTUzLCA4My4yMzMyNF0sIFstNzAuNjY1NzY1LCA4My4xNjk3ODFdLCBbLTY4LjUsIDgzLjEwNjMyMl1dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQ0FOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDYW5hZGEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkuNTk0MjI2LCA0Ny41MjUwNThdLCBbOS42MzI5MzIsIDQ3LjM0NzYwMV0sIFs5LjQ3OTk3LCA0Ny4xMDI4MV0sIFs5LjkzMjQ0OCwgNDYuOTIwNzI4XSwgWzEwLjQ0MjcwMSwgNDYuODkzNTQ2XSwgWzEwLjM2MzM3OCwgNDYuNDgzNTcxXSwgWzkuOTIyODM3LCA0Ni4zMTQ4OTldLCBbOS4xODI4ODIsIDQ2LjQ0MDIxNV0sIFs4Ljk2NjMwNiwgNDYuMDM2OTMyXSwgWzguNDg5OTUyLCA0Ni4wMDUxNTFdLCBbOC4zMTY2MywgNDYuMTYzNjQyXSwgWzcuNzU1OTkyLCA0NS44MjQ0OV0sIFs3LjI3Mzg1MSwgNDUuNzc2OTQ4XSwgWzYuODQzNTkzLCA0NS45OTExNDddLCBbNi41MDAxLCA0Ni40Mjk2NzNdLCBbNi4wMjI2MDksIDQ2LjI3Mjk5XSwgWzYuMDM3Mzg5LCA0Ni43MjU3NzldLCBbNi43Njg3MTQsIDQ3LjI4NzcwOF0sIFs2LjczNjU3MSwgNDcuNTQxODAxXSwgWzcuMTkyMjAyLCA0Ny40NDk3NjZdLCBbNy40NjY3NTksIDQ3LjYyMDU4Ml0sIFs4LjMxNzMwMSwgNDcuNjEzNThdLCBbOC41MjI2MTIsIDQ3LjgzMDgyOF0sIFs5LjU5NDIyNiwgNDcuNTI1MDU4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDSEUiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlN3aXR6ZXJsYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbLTY4LjYzNDAxLCAtNTIuNjM2MzddLCBbLTY4LjYzMzM1LCAtNTQuODY5NV0sIFstNjcuNTYyNDQsIC01NC44NzAwMV0sIFstNjYuOTU5OTIsIC01NC44OTY4MV0sIFstNjcuMjkxMDMsIC01NS4zMDEyNF0sIFstNjguMTQ4NjMsIC01NS42MTE4M10sIFstNjguNjM5OTkxLCAtNTUuNTgwMDE4XSwgWy02OS4yMzIxLCAtNTUuNDk5MDZdLCBbLTY5Ljk1ODA5LCAtNTUuMTk4NDNdLCBbLTcxLjAwNTY4LCAtNTUuMDUzODNdLCBbLTcyLjI2MzksIC01NC40OTUxNF0sIFstNzMuMjg1MiwgLTUzLjk1NzUyXSwgWy03NC42NjI1MywgLTUyLjgzNzQ5XSwgWy03My44MzgxLCAtNTMuMDQ3NDNdLCBbLTcyLjQzNDE4LCAtNTMuNzE1NF0sIFstNzEuMTA3NzMsIC01NC4wNzQzM10sIFstNzAuNTkxNzgsIC01My42MTU4M10sIFstNzAuMjY3NDgsIC01Mi45MzEyM10sIFstNjkuMzQ1NjUsIC01Mi41MTgzXSwgWy02OC42MzQwMSwgLTUyLjYzNjM3XV1dLCBbW1stNjguMjE5OTEzLCAtMjEuNDk0MzQ3XSwgWy02Ny44MjgxOCwgLTIyLjg3MjkxOV0sIFstNjcuMTA2Njc0LCAtMjIuNzM1OTI1XSwgWy02Ni45ODUyMzQsIC0yMi45ODYzNDldLCBbLTY3LjMyODQ0MywgLTI0LjAyNTMwM10sIFstNjguNDE3NjUzLCAtMjQuNTE4NTU1XSwgWy02OC4zODYwMDEsIC0yNi4xODUwMTZdLCBbLTY4LjU5NDgsIC0yNi41MDY5MDldLCBbLTY4LjI5NTU0MiwgLTI2Ljg5OTM0XSwgWy02OS4wMDEyMzUsIC0yNy41MjEyMTRdLCBbLTY5LjY1NjEzLCAtMjguNDU5MTQxXSwgWy03MC4wMTM1NSwgLTI5LjM2NzkyM10sIFstNjkuOTE5MDA4LCAtMzAuMzM2MzM5XSwgWy03MC41MzUwNjksIC0zMS4zNjUwMV0sIFstNzAuMDc0Mzk5LCAtMzMuMDkxMjFdLCBbLTY5LjgxNDc3NywgLTMzLjI3Mzg4Nl0sIFstNjkuODE3MzA5LCAtMzQuMTkzNTcxXSwgWy03MC4zODgwNDksIC0zNS4xNjk2ODhdLCBbLTcwLjM2NDc2OSwgLTM2LjAwNTA4OV0sIFstNzEuMTIxODgxLCAtMzYuNjU4MTI0XSwgWy03MS4xMTg2MjUsIC0zNy41NzY4MjddLCBbLTcwLjgxNDY2NCwgLTM4LjU1Mjk5NV0sIFstNzEuNDEzNTE3LCAtMzguOTE2MDIyXSwgWy03MS42ODA3NjEsIC0zOS44MDgxNjRdLCBbLTcxLjkxNTczNCwgLTQwLjgzMjMzOV0sIFstNzEuNzQ2ODA0LCAtNDIuMDUxMzg2XSwgWy03Mi4xNDg4OTgsIC00Mi4yNTQ4ODhdLCBbLTcxLjkxNTQyNCwgLTQzLjQwODU2NV0sIFstNzEuNDY0MDU2LCAtNDMuNzg3NjExXSwgWy03MS43OTM2MjMsIC00NC4yMDcxNzJdLCBbLTcxLjMyOTgwMSwgLTQ0LjQwNzUyMl0sIFstNzEuMjIyNzc5LCAtNDQuNzg0MjQzXSwgWy03MS42NTkzMTYsIC00NC45NzM2ODldLCBbLTcxLjU1MjAwOSwgLTQ1LjU2MDczM10sIFstNzEuOTE3MjU4LCAtNDYuODg0ODM4XSwgWy03Mi40NDczNTUsIC00Ny43Mzg1MzNdLCBbLTcyLjMzMTE2MSwgLTQ4LjI0NDIzOF0sIFstNzIuNjQ4MjQ3LCAtNDguODc4NjE4XSwgWy03My40MTU0MzYsIC00OS4zMTg0MzZdLCBbLTczLjMyODA1MSwgLTUwLjM3ODc4NV0sIFstNzIuOTc1NzQ3LCAtNTAuNzQxNDVdLCBbLTcyLjMwOTk3NCwgLTUwLjY3NzAxXSwgWy03Mi4zMjk0MDQsIC01MS40MjU5NTZdLCBbLTcxLjkxNDgwNCwgLTUyLjAwOTAyMl0sIFstNjkuNDk4MzYyLCAtNTIuMTQyNzYxXSwgWy02OC41NzE1NDUsIC01Mi4yOTk0NDRdLCBbLTY5LjQ2MTI4NCwgLTUyLjI5MTk1MV0sIFstNjkuOTQyNzgsIC01Mi41Mzc5MzFdLCBbLTcwLjg0NTEwMiwgLTUyLjg5OTIwMV0sIFstNzEuMDA2MzMyLCAtNTMuODMzMjUyXSwgWy03MS40Mjk3OTUsIC01My44NTY0NTVdLCBbLTcyLjU1Nzk0MywgLTUzLjUzMTQxXSwgWy03My43MDI3NTcsIC01Mi44MzUwNjldLCBbLTczLjcwMjc1NywgLTUyLjgzNTA3XSwgWy03NC45NDY3NjMsIC01Mi4yNjI3NTRdLCBbLTc1LjI2MDAyNiwgLTUxLjYyOTM1NV0sIFstNzQuOTc2NjMyLCAtNTEuMDQzMzk2XSwgWy03NS40Nzk3NTQsIC01MC4zNzgzNzJdLCBbLTc1LjYwODAxNSwgLTQ4LjY3Mzc3M10sIFstNzUuMTgyNzcsIC00Ny43MTE5MTldLCBbLTc0LjEyNjU4MSwgLTQ2LjkzOTI1M10sIFstNzUuNjQ0Mzk1LCAtNDYuNjQ3NjQzXSwgWy03NC42OTIxNTQsIC00NS43NjM5NzZdLCBbLTc0LjM1MTcwOSwgLTQ0LjEwMzA0NF0sIFstNzMuMjQwMzU2LCAtNDQuNDU0OTYxXSwgWy03Mi43MTc4MDQsIC00Mi4zODMzNTZdLCBbLTczLjM4ODksIC00Mi4xMTc1MzJdLCBbLTczLjcwMTMzNiwgLTQzLjM2NTc3Nl0sIFstNzQuMzMxOTQzLCAtNDMuMjI0OTU4XSwgWy03NC4wMTc5NTcsIC00MS43OTQ4MTNdLCBbLTczLjY3NzA5OSwgLTM5Ljk0MjIxM10sIFstNzMuMjE3NTkzLCAtMzkuMjU4Njg5XSwgWy03My41MDU1NTksIC0zOC4yODI4ODNdLCBbLTczLjU4ODA2MSwgLTM3LjE1NjI4NV0sIFstNzMuMTY2NzE3LCAtMzcuMTIzNzhdLCBbLTcyLjU1MzEzNywgLTM1LjUwODg0XSwgWy03MS44NjE3MzIsIC0zMy45MDkwOTNdLCBbLTcxLjQzODQ1LCAtMzIuNDE4ODk5XSwgWy03MS42Njg3MjEsIC0zMC45MjA2NDVdLCBbLTcxLjM3MDA4MywgLTMwLjA5NTY4Ml0sIFstNzEuNDg5ODk0LCAtMjguODYxNDQyXSwgWy03MC45MDUxMjQsIC0yNy42NDAzOF0sIFstNzAuNzI0OTU0LCAtMjUuNzA1OTI0XSwgWy03MC40MDM5NjYsIC0yMy42Mjg5OTddLCBbLTcwLjA5MTI0NiwgLTIxLjM5MzMxOV0sIFstNzAuMTY0NDIsIC0xOS43NTY0NjhdLCBbLTcwLjM3MjU3MiwgLTE4LjM0Nzk3NV0sIFstNjkuODU4NDQ0LCAtMTguMDkyNjk0XSwgWy02OS41OTA0MjQsIC0xNy41ODAwMTJdLCBbLTY5LjEwMDI0NywgLTE4LjI2MDEyNV0sIFstNjguOTY2ODE4LCAtMTguOTgxNjgzXSwgWy02OC40NDIyMjUsIC0xOS40MDUwNjhdLCBbLTY4Ljc1NzE2NywgLTIwLjM3MjY1OF0sIFstNjguMjE5OTEzLCAtMjEuNDk0MzQ3XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJDSEwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNoaWxlIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTEwLjMzOTE4OCwgMTguNjc4Mzk1XSwgWzEwOS40NzUyMSwgMTguMTk3NzAxXSwgWzEwOC42NTUyMDgsIDE4LjUwNzY4Ml0sIFsxMDguNjI2MjE3LCAxOS4zNjc4ODhdLCBbMTA5LjExOTA1NiwgMTkuODIxMDM5XSwgWzExMC4yMTE1OTksIDIwLjEwMTI1NF0sIFsxMTAuNzg2NTUxLCAyMC4wNzc1MzRdLCBbMTExLjAxMDA1MSwgMTkuNjk1OTNdLCBbMTEwLjU3MDY0NywgMTkuMjU1ODc5XSwgWzExMC4zMzkxODgsIDE4LjY3ODM5NV1dXSwgW1tbMTI3LjY1NzQwNywgNDkuNzYwMjddLCBbMTI5LjM5NzgxOCwgNDkuNDQwNl0sIFsxMzAuNTgyMjkzLCA0OC43Mjk2ODddLCBbMTMwLjk4NzI4MiwgNDcuNzkwMTMyXSwgWzEzMi41MDY2NzIsIDQ3Ljc4ODk3XSwgWzEzMy4zNzM1OTYsIDQ4LjE4MzQ0Ml0sIFsxMzUuMDI2MzExLCA0OC40NzgyM10sIFsxMzQuNTAwODE0LCA0Ny41Nzg0NF0sIFsxMzQuMTEyMzYyLCA0Ny4yMTI0NjddLCBbMTMzLjc2OTY0NCwgNDYuMTE2OTI3XSwgWzEzMy4wOTcxMjcsIDQ1LjE0NDA2Nl0sIFsxMzEuODgzNDU0LCA0NS4zMjExNjJdLCBbMTMxLjAyNTIxMiwgNDQuOTY3OTUzXSwgWzEzMS4yODg1NTUsIDQ0LjExMTUyXSwgWzEzMS4xNDQ2ODgsIDQyLjkyOTk5XSwgWzEzMC42MzM4NjYsIDQyLjkwMzAxNV0sIFsxMzAuNjQwMDE2LCA0Mi4zOTUwMDldLCBbMTI5Ljk5NDI2NywgNDIuOTg1Mzg3XSwgWzEyOS41OTY2NjksIDQyLjQyNDk4Ml0sIFsxMjguMDUyMjE1LCA0MS45OTQyODVdLCBbMTI4LjIwODQzMywgNDEuNDY2NzcyXSwgWzEyNy4zNDM3ODMsIDQxLjUwMzE1Ml0sIFsxMjYuODY5MDgzLCA0MS44MTY1NjldLCBbMTI2LjE4MjA0NSwgNDEuMTA3MzM2XSwgWzEyNS4wNzk5NDIsIDQwLjU2OTgyNF0sIFsxMjQuMjY1NjI1LCAzOS45Mjg0OTNdLCBbMTIyLjg2NzU3LCAzOS42Mzc3ODhdLCBbMTIyLjEzMTM4OCwgMzkuMTcwNDUyXSwgWzEyMS4wNTQ1NTQsIDM4Ljg5NzQ3MV0sIFsxMjEuNTg1OTk1LCAzOS4zNjA4NTRdLCBbMTIxLjM3Njc1NywgMzkuNzUwMjYxXSwgWzEyMi4xNjg1OTUsIDQwLjQyMjQ0M10sIFsxMjEuNjQwMzU5LCA0MC45NDYzOV0sIFsxMjAuNzY4NjI5LCA0MC41OTMzODhdLCBbMTE5LjYzOTYwMiwgMzkuODk4MDU2XSwgWzExOS4wMjM0NjQsIDM5LjI1MjMzM10sIFsxMTguMDQyNzQ5LCAzOS4yMDQyNzRdLCBbMTE3LjUzMjcwMiwgMzguNzM3NjM2XSwgWzExOC4wNTk2OTksIDM4LjA2MTQ3Nl0sIFsxMTguODc4MTUsIDM3Ljg5NzMyNV0sIFsxMTguOTExNjM2LCAzNy40NDg0NjRdLCBbMTE5LjcwMjgwMiwgMzcuMTU2Mzg5XSwgWzEyMC44MjM0NTcsIDM3Ljg3MDQyOF0sIFsxMjEuNzExMjU5LCAzNy40ODExMjNdLCBbMTIyLjM1NzkzNywgMzcuNDU0NDg0XSwgWzEyMi41MTk5OTUsIDM2LjkzMDYxNF0sIFsxMjEuMTA0MTY0LCAzNi42NTEzMjldLCBbMTIwLjYzNzAwOSwgMzYuMTExNDRdLCBbMTE5LjY2NDU2MiwgMzUuNjA5NzkxXSwgWzExOS4xNTEyMDgsIDM0LjkwOTg1OV0sIFsxMjAuMjI3NTI1LCAzNC4zNjAzMzJdLCBbMTIwLjYyMDM2OSwgMzMuMzc2NzIzXSwgWzEyMS4yMjkwMTQsIDMyLjQ2MDMxOV0sIFsxMjEuOTA4MTQ2LCAzMS42OTIxNzRdLCBbMTIxLjg5MTkxOSwgMzAuOTQ5MzUyXSwgWzEyMS4yNjQyNTcsIDMwLjY3NjI2N10sIFsxMjEuNTAzNTE5LCAzMC4xNDI5MTVdLCBbMTIyLjA5MjExNCwgMjkuODMyNTJdLCBbMTIxLjkzODQyOCwgMjkuMDE4MDIyXSwgWzEyMS42ODQ0MzksIDI4LjIyNTUxM10sIFsxMjEuMTI1NjYxLCAyOC4xMzU2NzNdLCBbMTIwLjM5NTQ3MywgMjcuMDUzMjA3XSwgWzExOS41ODU0OTcsIDI1Ljc0MDc4MV0sIFsxMTguNjU2ODcxLCAyNC41NDczOTFdLCBbMTE3LjI4MTYwNiwgMjMuNjI0NTAxXSwgWzExNS44OTA3MzUsIDIyLjc4Mjg3M10sIFsxMTQuNzYzODI3LCAyMi42NjgwNzRdLCBbMTE0LjE1MjU0NywgMjIuMjIzNzZdLCBbMTEzLjgwNjc4LCAyMi41NDgzNF0sIFsxMTMuMjQxMDc4LCAyMi4wNTEzNjddLCBbMTExLjg0MzU5MiwgMjEuNTUwNDk0XSwgWzExMC43ODU0NjYsIDIxLjM5NzE0NF0sIFsxMTAuNDQ0MDM5LCAyMC4zNDEwMzNdLCBbMTA5Ljg4OTg2MSwgMjAuMjgyNDU3XSwgWzEwOS42Mjc2NTUsIDIxLjAwODIyN10sIFsxMDkuODY0NDg4LCAyMS4zOTUwNTFdLCBbMTA4LjUyMjgxMywgMjEuNzE1MjEyXSwgWzEwOC4wNTAxOCwgMjEuNTUyMzhdLCBbMTA3LjA0MzQyLCAyMS44MTE4OTldLCBbMTA2LjU2NzI3MywgMjIuMjE4MjA1XSwgWzEwNi43MjU0MDMsIDIyLjc5NDI2OF0sIFsxMDUuODExMjQ3LCAyMi45NzY4OTJdLCBbMTA1LjMyOTIwOSwgMjMuMzUyMDYzXSwgWzEwNC40NzY4NTgsIDIyLjgxOTE1XSwgWzEwMy41MDQ1MTUsIDIyLjcwMzc1N10sIFsxMDIuNzA2OTkyLCAyMi43MDg3OTVdLCBbMTAyLjE3MDQzNiwgMjIuNDY0NzUzXSwgWzEwMS42NTIwMTgsIDIyLjMxODE5OV0sIFsxMDEuODAzMTIsIDIxLjE3NDM2N10sIFsxMDEuMjcwMDI2LCAyMS4yMDE2NTJdLCBbMTAxLjE4MDAwNSwgMjEuNDM2NTczXSwgWzEwMS4xNTAwMzMsIDIxLjg0OTk4NF0sIFsxMDAuNDE2NTM4LCAyMS41NTg4MzldLCBbOTkuOTgzNDg5LCAyMS43NDI5MzddLCBbOTkuMjQwODk5LCAyMi4xMTgzMTRdLCBbOTkuNTMxOTkyLCAyMi45NDkwMzldLCBbOTguODk4NzQ5LCAyMy4xNDI3MjJdLCBbOTguNjYwMjYyLCAyNC4wNjMyODZdLCBbOTcuNjA0NzIsIDIzLjg5NzQwNV0sIFs5Ny43MjQ2MDksIDI1LjA4MzYzN10sIFs5OC42NzE4MzgsIDI1LjkxODcwM10sIFs5OC43MTIwOTQsIDI2Ljc0MzUzNl0sIFs5OC42ODI2OSwgMjcuNTA4ODEyXSwgWzk4LjI0NjIzMSwgMjcuNzQ3MjIxXSwgWzk3LjkxMTk4OCwgMjguMzM1OTQ1XSwgWzk3LjMyNzExNCwgMjguMjYxNTgzXSwgWzk2LjI0ODgzMywgMjguNDExMDMxXSwgWzk2LjU4NjU5MSwgMjguODMwOThdLCBbOTYuMTE3Njc5LCAyOS40NTI4MDJdLCBbOTUuNDA0ODAyLCAyOS4wMzE3MTddLCBbOTQuNTY1OTksIDI5LjI3NzQzOF0sIFs5My40MTMzNDgsIDI4LjY0MDYyOV0sIFs5Mi41MDMxMTksIDI3Ljg5Njg3Nl0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml0sIFs5MS4yNTg4NTQsIDI4LjA0MDYxNF0sIFs5MC43MzA1MTQsIDI4LjA2NDk1NF0sIFs5MC4wMTU4MjksIDI4LjI5NjQzOV0sIFs4OS40NzU4MSwgMjguMDQyNzU5XSwgWzg4LjgxNDI0OCwgMjcuMjk5MzE2XSwgWzg4LjczMDMyNiwgMjguMDg2ODY1XSwgWzg4LjEyMDQ0MSwgMjcuODc2NTQyXSwgWzg2Ljk1NDUxNywgMjcuOTc0MjYyXSwgWzg1LjgyMzMyLCAyOC4yMDM1NzZdLCBbODUuMDExNjM4LCAyOC42NDI3NzRdLCBbODQuMjM0NTgsIDI4LjgzOTg5NF0sIFs4My44OTg5OTMsIDI5LjMyMDIyNl0sIFs4My4zMzcxMTUsIDI5LjQ2MzczMl0sIFs4Mi4zMjc1MTMsIDMwLjExNTI2OF0sIFs4MS41MjU4MDQsIDMwLjQyMjcxN10sIFs4MS4xMTEyNTYsIDMwLjE4MzQ4MV0sIFs3OS43MjEzNjcsIDMwLjg4MjcxNV0sIFs3OC43Mzg4OTQsIDMxLjUxNTkwNl0sIFs3OC40NTg0NDYsIDMyLjYxODE2NF0sIFs3OS4xNzYxMjksIDMyLjQ4Mzc4XSwgWzc5LjIwODg5MiwgMzIuOTk0Mzk1XSwgWzc4LjgxMTA4NiwgMzMuNTA2MTk4XSwgWzc4LjkxMjI2OSwgMzQuMzIxOTM2XSwgWzc3LjgzNzQ1MSwgMzUuNDk0MDFdLCBbNzYuMTkyODQ4LCAzNS44OTg0MDNdLCBbNzUuODk2ODk3LCAzNi42NjY4MDZdLCBbNzUuMTU4MDI4LCAzNy4xMzMwMzFdLCBbNzQuOTgwMDAyLCAzNy40MTk5OV0sIFs3NC44Mjk5ODYsIDM3Ljk5MDAwN10sIFs3NC44NjQ4MTYsIDM4LjM3ODg0Nl0sIFs3NC4yNTc1MTQsIDM4LjYwNjUwN10sIFs3My45Mjg4NTIsIDM4LjUwNTgxNV0sIFs3My42NzUzNzksIDM5LjQzMTIzN10sIFs3My45NjAwMTMsIDM5LjY2MDAwOF0sIFs3My44MjIyNDQsIDM5Ljg5Mzk3M10sIFs3NC43NzY4NjIsIDQwLjM2NjQyNV0sIFs3NS40Njc4MjgsIDQwLjU2MjA3Ml0sIFs3Ni41MjYzNjgsIDQwLjQyNzk0Nl0sIFs3Ni45MDQ0ODQsIDQxLjA2NjQ4Nl0sIFs3OC4xODcxOTcsIDQxLjE4NTMxNl0sIFs3OC41NDM2NjEsIDQxLjU4MjI0M10sIFs4MC4xMTk0MywgNDIuMTIzOTQxXSwgWzgwLjI1OTk5LCA0Mi4zNDk5OTldLCBbODAuMTgwMTUsIDQyLjkyMDA2OF0sIFs4MC44NjYyMDYsIDQzLjE4MDM2Ml0sIFs3OS45NjYxMDYsIDQ0LjkxNzUxN10sIFs4MS45NDcwNzEsIDQ1LjMxNzAyN10sIFs4Mi40NTg5MjYsIDQ1LjUzOTY1XSwgWzgzLjE4MDQ4NCwgNDcuMzMwMDMxXSwgWzg1LjE2NDI5LCA0Ny4wMDA5NTZdLCBbODUuNzIwNDg0LCA0Ny40NTI5NjldLCBbODUuNzY4MjMzLCA0OC40NTU3NTFdLCBbODYuNTk4Nzc2LCA0OC41NDkxODJdLCBbODcuMzU5OTcsIDQ5LjIxNDk4MV0sIFs4Ny43NTEyNjQsIDQ5LjI5NzE5OF0sIFs4OC4wMTM4MzIsIDQ4LjU5OTQ2M10sIFs4OC44NTQyOTgsIDQ4LjA2OTA4Ml0sIFs5MC4yODA4MjYsIDQ3LjY5MzU0OV0sIFs5MC45NzA4MDksIDQ2Ljg4ODE0Nl0sIFs5MC41ODU3NjgsIDQ1LjcxOTcxNl0sIFs5MC45NDU1NCwgNDUuMjg2MDczXSwgWzkyLjEzMzg5MSwgNDUuMTE1MDc2XSwgWzkzLjQ4MDczNCwgNDQuOTc1NDcyXSwgWzk0LjY4ODkyOSwgNDQuMzUyMzMyXSwgWzk1LjMwNjg3NSwgNDQuMjQxMzMxXSwgWzk1Ljc2MjQ1NSwgNDMuMzE5NDQ5XSwgWzk2LjM0OTM5NiwgNDIuNzI1NjM1XSwgWzk3LjQ1MTc1NywgNDIuNzQ4ODldLCBbOTkuNTE1ODE3LCA0Mi41MjQ2OTFdLCBbMTAwLjg0NTg2NiwgNDIuNjYzODA0XSwgWzEwMS44MzMwNCwgNDIuNTE0ODczXSwgWzEwMy4zMTIyNzgsIDQxLjkwNzQ2OF0sIFsxMDQuNTIyMjgyLCA0MS45MDgzNDddLCBbMTA0Ljk2NDk5NCwgNDEuNTk3NDFdLCBbMTA2LjEyOTMxNiwgNDIuMTM0MzI4XSwgWzEwNy43NDQ3NzMsIDQyLjQ4MTUxNl0sIFsxMDkuMjQzNTk2LCA0Mi41MTk0NDZdLCBbMTEwLjQxMjEwMywgNDIuODcxMjM0XSwgWzExMS4xMjk2ODIsIDQzLjQwNjgzNF0sIFsxMTEuODI5NTg4LCA0My43NDMxMThdLCBbMTExLjY2NzczNywgNDQuMDczMTc2XSwgWzExMS4zNDgzNzcsIDQ0LjQ1NzQ0Ml0sIFsxMTEuODczMzA2LCA0NS4xMDIwNzldLCBbMTEyLjQzNjA2MiwgNDUuMDExNjQ2XSwgWzExMy40NjM5MDcsIDQ0LjgwODg5M10sIFsxMTQuNDYwMzMyLCA0NS4zMzk4MTddLCBbMTE1Ljk4NTA5NiwgNDUuNzI3MjM1XSwgWzExNi43MTc4NjgsIDQ2LjM4ODIwMl0sIFsxMTcuNDIxNzAxLCA0Ni42NzI3MzNdLCBbMTE4Ljg3NDMyNiwgNDYuODA1NDEyXSwgWzExOS42NjMyNywgNDYuNjkyNjhdLCBbMTE5Ljc3MjgyNCwgNDcuMDQ4MDU5XSwgWzExOC44NjY1NzQsIDQ3Ljc0NzA2XSwgWzExOC4wNjQxNDMsIDQ4LjA2NjczXSwgWzExNy4yOTU1MDcsIDQ3LjY5NzcwOV0sIFsxMTYuMzA4OTUzLCA0Ny44NTM0MV0sIFsxMTUuNzQyODM3LCA0Ny43MjY1NDVdLCBbMTE1LjQ4NTI4MiwgNDguMTM1MzgzXSwgWzExNi4xOTE4MDIsIDQ5LjEzNDU5OF0sIFsxMTYuNjc4ODAxLCA0OS44ODg1MzFdLCBbMTE3Ljg3OTI0NCwgNDkuNTEwOTgzXSwgWzExOS4yODg0NjEsIDUwLjE0Mjg4M10sIFsxMTkuMjc5MzY2LCA1MC41ODI5MDhdLCBbMTIwLjE4MjA1LCA1MS42NDM1NjZdLCBbMTIwLjczODE5MSwgNTEuOTY0MTE1XSwgWzEyMC43MjU3ODksIDUyLjUxNjIyNl0sIFsxMjAuMTc3MDg5LCA1Mi43NTM4ODZdLCBbMTIxLjAwMzA4NSwgNTMuMjUxNDAxXSwgWzEyMi4yNDU3NDgsIDUzLjQzMTcyNl0sIFsxMjMuNTcxNTA3LCA1My40NTg4MDRdLCBbMTI1LjA2ODIxMSwgNTMuMTYxMDQ1XSwgWzEyNS45NDYzNDksIDUyLjc5Mjc5OV0sIFsxMjYuNTY0Mzk5LCA1MS43ODQyNTVdLCBbMTI2LjkzOTE1NywgNTEuMzUzODk0XSwgWzEyNy4yODc0NTYsIDUwLjczOTc5N10sIFsxMjcuNjU3NDA3LCA0OS43NjAyN11dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQ0hOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDaGluYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNiMTAwMjYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTIuODU2MTI1LCA0Ljk5NDQ3Nl0sIFstMy4zMTEwODQsIDQuOTg0Mjk2XSwgWy00LjAwODgyLCA1LjE3OTgxM10sIFstNC42NDk5MTcsIDUuMTY4MjY0XSwgWy01LjgzNDQ5NiwgNC45OTM3MDFdLCBbLTYuNTI4NzY5LCA0LjcwNTA4OF0sIFstNy41MTg5NDEsIDQuMzM4Mjg4XSwgWy03LjcxMjE1OSwgNC4zNjQ1NjZdLCBbLTcuNjM1MzY4LCA1LjE4ODE1OV0sIFstNy41Mzk3MTUsIDUuMzEzMzQ1XSwgWy03LjU3MDE1MywgNS43MDczNTJdLCBbLTcuOTkzNjkzLCA2LjEyNjE5XSwgWy04LjMxMTM0OCwgNi4xOTMwMzNdLCBbLTguNjAyODgsIDYuNDY3NTY0XSwgWy04LjM4NTQ1MiwgNi45MTE4MDFdLCBbLTguNDg1NDQ2LCA3LjM5NTIwOF0sIFstOC40MzkyOTgsIDcuNjg2MDQzXSwgWy04LjI4MDcwMywgNy42ODcxOF0sIFstOC4yMjE3OTIsIDguMTIzMzI5XSwgWy04LjI5OTA0OSwgOC4zMTY0NDRdLCBbLTguMjAzNDk5LCA4LjQ1NTQ1M10sIFstNy44MzIxLCA4LjU3NTcwNF0sIFstOC4wNzkxMTQsIDkuMzc2MjI0XSwgWy04LjMwOTYxNiwgOS43ODk1MzJdLCBbLTguMjI5MzM3LCAxMC4xMjkwMl0sIFstOC4wMjk5NDQsIDEwLjIwNjUzNV0sIFstNy44OTk1OSwgMTAuMjk3MzgyXSwgWy03LjYyMjc1OSwgMTAuMTQ3MjM2XSwgWy02Ljg1MDUwNywgMTAuMTM4OTk0XSwgWy02LjY2NjQ2MSwgMTAuNDMwODExXSwgWy02LjQ5Mzk2NSwgMTAuNDExMzAzXSwgWy02LjIwNTIyMywgMTAuNTI0MDYxXSwgWy02LjA1MDQ1MiwgMTAuMDk2MzYxXSwgWy01LjgxNjkyNiwgMTAuMjIyNTU1XSwgWy01LjQwNDM0MiwgMTAuMzcwNzM3XSwgWy00Ljk1NDY1MywgMTAuMTUyNzE0XSwgWy00Ljc3OTg4NCwgOS44MjE5ODVdLCBbLTQuMzMwMjQ3LCA5LjYxMDgzNV0sIFstMy45ODA0NDksIDkuODYyMzQ0XSwgWy0zLjUxMTg5OSwgOS45MDAzMjZdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV0sIFstMi41NjIxOSwgOC4yMTk2MjhdLCBbLTIuOTgzNTg1LCA3LjM3OTcwNV0sIFstMy4yNDQzNywgNi4yNTA0NzJdLCBbLTIuODEwNzAxLCA1LjM4OTA1MV0sIFstMi44NTYxMjUsIDQuOTk0NDc2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDSVYiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkl2b3J5IENvYXN0IiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzEyLjk1MTMzNCwgMi4zMjE2MTZdLCBbMTIuMzU5MzgsIDIuMTkyODEyXSwgWzExLjc1MTY2NSwgMi4zMjY3NThdLCBbMTEuMjc2NDQ5LCAyLjI2MTA1MV0sIFs5LjY0OTE1OCwgMi4yODM4NjZdLCBbOS43OTUxOTYsIDMuMDczNDA0XSwgWzkuNDA0MzY3LCAzLjczNDUyN10sIFs4Ljk0ODExNiwgMy45MDQxMjldLCBbOC43NDQ5MjQsIDQuMzUyMjE1XSwgWzguNDg4ODE2LCA0LjQ5NTYxN10sIFs4LjUwMDI4OCwgNC43NzE5ODNdLCBbOC43NTc1MzMsIDUuNDc5NjY2XSwgWzkuMjMzMTYzLCA2LjQ0NDQ5MV0sIFs5LjUyMjcwNiwgNi40NTM0ODJdLCBbMTAuMTE4Mjc3LCA3LjAzODc3XSwgWzEwLjQ5NzM3NSwgNy4wNTUzNThdLCBbMTEuMDU4Nzg4LCA2LjY0NDQyN10sIFsxMS43NDU3NzQsIDYuOTgxMzgzXSwgWzExLjgzOTMwOSwgNy4zOTcwNDJdLCBbMTIuMDYzOTQ2LCA3Ljc5OTgwOF0sIFsxMi4yMTg4NzIsIDguMzA1ODI0XSwgWzEyLjc1MzY3MiwgOC43MTc3NjNdLCBbMTIuOTU1NDY4LCA5LjQxNzc3Ml0sIFsxMy4xNjc2LCA5LjY0MDYyNl0sIFsxMy4zMDg2NzYsIDEwLjE2MDM2Ml0sIFsxMy41NzI5NSwgMTAuNzk4NTY2XSwgWzE0LjQxNTM3OSwgMTEuNTcyMzY5XSwgWzE0LjQ2ODE5MiwgMTEuOTA0NzUyXSwgWzE0LjU3NzE3OCwgMTIuMDg1MzYxXSwgWzE0LjE4MTMzNiwgMTIuNDgzNjU3XSwgWzE0LjIxMzUzMSwgMTIuODAyMDM1XSwgWzE0LjQ5NTc4NywgMTIuODU5Mzk2XSwgWzE0Ljg5MzM4NiwgMTIuMjE5MDQ4XSwgWzE0Ljk2MDE1MiwgMTEuNTU1NTc0XSwgWzE0LjkyMzU2NSwgMTAuODkxMzI1XSwgWzE1LjQ2Nzg3MywgOS45ODIzMzddLCBbMTQuOTA5MzU0LCA5Ljk5MjEyOV0sIFsxNC42MjcyMDEsIDkuOTIwOTE5XSwgWzE0LjE3MTQ2NiwgMTAuMDIxMzc4XSwgWzEzLjk1NDIxOCwgOS41NDk0OTVdLCBbMTQuNTQ0NDY3LCA4Ljk2NTg2MV0sIFsxNC45Nzk5OTYsIDguNzk2MTA0XSwgWzE1LjEyMDg2NiwgOC4zODIxNV0sIFsxNS40MzYwOTIsIDcuNjkyODEyXSwgWzE1LjI3OTQ2LCA3LjQyMTkyNV0sIFsxNC43NzY1NDUsIDYuNDA4NDk4XSwgWzE0LjUzNjU2LCA2LjIyNjk1OV0sIFsxNC40NTk0MDcsIDUuNDUxNzYxXSwgWzE0LjU1ODkzNiwgNS4wMzA1OThdLCBbMTQuNDc4MzcyLCA0LjczMjYwNV0sIFsxNC45NTA5NTMsIDQuMjEwMzg5XSwgWzE1LjAzNjIyLCAzLjg1MTM2N10sIFsxNS40MDUzOTYsIDMuMzM1MzAxXSwgWzE1Ljg2MjczMiwgMy4wMTM1MzddLCBbMTUuOTA3MzgxLCAyLjU1NzM4OV0sIFsxNi4wMTI4NTIsIDIuMjY3NjRdLCBbMTUuOTQwOTE5LCAxLjcyNzY3M10sIFsxNS4xNDYzNDIsIDEuOTY0MDE1XSwgWzE0LjMzNzgxMywgMi4yMjc4NzVdLCBbMTMuMDc1ODIyLCAyLjI2NzA5N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ01SIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDYW1lcm9vbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMzAuODMzODYsIDMuNTA5MTY2XSwgWzMwLjc3MzM0NywgMi4zMzk4ODNdLCBbMzEuMTc0MTQ5LCAyLjIwNDQ2NV0sIFszMC44NTI2NywgMS44NDkzOTZdLCBbMzAuNDY4NTA4LCAxLjU4MzgwNV0sIFszMC4wODYxNTQsIDEuMDYyMzEzXSwgWzI5Ljg3NTc3OSwgMC41OTczOF0sIFsyOS44MTk1MDMsIC0wLjIwNTMxXSwgWzI5LjU4NzgzOCwgLTAuNTg3NDA2XSwgWzI5LjU3OTQ2NiwgLTEuMzQxMzEzXSwgWzI5LjI5MTg4NywgLTEuNjIwMDU2XSwgWzI5LjI1NDgzNSwgLTIuMjE1MTFdLCBbMjkuMTE3NDc5LCAtMi4yOTIyMTFdLCBbMjkuMDI0OTI2LCAtMi44MzkyNThdLCBbMjkuMjc2Mzg0LCAtMy4yOTM5MDddLCBbMjkuMzM5OTk4LCAtNC40OTk5ODNdLCBbMjkuNTE5OTg3LCAtNS40MTk5NzldLCBbMjkuNDE5OTkzLCAtNS45Mzk5OTldLCBbMjkuNjIwMDMyLCAtNi41MjAwMTVdLCBbMzAuMTk5OTk3LCAtNy4wNzk5ODFdLCBbMzAuNzQwMDE1LCAtOC4zNDAwMDddLCBbMzAuMzQ2MDg2LCAtOC4yMzgyNTddLCBbMjkuMDAyOTEyLCAtOC40MDcwMzJdLCBbMjguNzM0ODY3LCAtOC41MjY1NTldLCBbMjguNDQ5ODcxLCAtOS4xNjQ5MThdLCBbMjguNjczNjgyLCAtOS42MDU5MjVdLCBbMjguNDk2MDcsIC0xMC43ODk4ODRdLCBbMjguMzcyMjUzLCAtMTEuNzkzNjQ3XSwgWzI4LjY0MjQxNywgLTExLjk3MTU2OV0sIFsyOS4zNDE1NDgsIC0xMi4zNjA3NDRdLCBbMjkuNjE2MDAxLCAtMTIuMTc4ODk1XSwgWzI5LjY5OTYxNCwgLTEzLjI1NzIyN10sIFsyOC45MzQyODYsIC0xMy4yNDg5NThdLCBbMjguNTIzNTYyLCAtMTIuNjk4NjA0XSwgWzI4LjE1NTEwOSwgLTEyLjI3MjQ4MV0sIFsyNy4zODg3OTksIC0xMi4xMzI3NDddLCBbMjcuMTY0NDIsIC0xMS42MDg3NDhdLCBbMjYuNTUzMDg4LCAtMTEuOTI0NDRdLCBbMjUuNzUyMzEsIC0xMS43ODQ5NjVdLCBbMjUuNDE4MTE4LCAtMTEuMzMwOTM2XSwgWzI0Ljc4MzE3LCAtMTEuMjM4Njk0XSwgWzI0LjMxNDUxNiwgLTExLjI2MjgyNl0sIFsyNC4yNTcxNTUsIC0xMC45NTE5OTNdLCBbMjMuOTEyMjE1LCAtMTAuOTI2ODI2XSwgWzIzLjQ1Njc5MSwgLTEwLjg2Nzg2M10sIFsyMi44MzczNDUsIC0xMS4wMTc2MjJdLCBbMjIuNDAyNzk4LCAtMTAuOTkzMDc1XSwgWzIyLjE1NTI2OCwgLTExLjA4NDgwMV0sIFsyMi4yMDg3NTMsIC05Ljg5NDc5Nl0sIFsyMS44NzUxODIsIC05LjUyMzcwOF0sIFsyMS44MDE4MDEsIC04LjkwODcwN10sIFsyMS45NDkxMzEsIC04LjMwNTkwMV0sIFsyMS43NDY0NTYsIC03LjkyMDA4NV0sIFsyMS43MjgxMTEsIC03LjI5MDg3Ml0sIFsyMC41MTQ3NDgsIC03LjI5OTYwNl0sIFsyMC42MDE4MjMsIC02LjkzOTMxOF0sIFsyMC4wOTE2MjIsIC02Ljk0MzA5XSwgWzIwLjAzNzcyMywgLTcuMTE2MzYxXSwgWzE5LjQxNzUwMiwgLTcuMTU1NDI5XSwgWzE5LjE2NjYxMywgLTcuNzM4MTg0XSwgWzE5LjAxNjc1MiwgLTcuOTg4MjQ2XSwgWzE4LjQ2NDE3NiwgLTcuODQ3MDE0XSwgWzE4LjEzNDIyMiwgLTcuOTg3Njc4XSwgWzE3LjQ3Mjk3LCAtOC4wNjg1NTFdLCBbMTcuMDg5OTk2LCAtNy41NDU2ODldLCBbMTYuODYwMTkxLCAtNy4yMjIyOThdLCBbMTYuNTczMTgsIC02LjYyMjY0NV0sIFsxNi4zMjY1MjgsIC01Ljg3NzQ3XSwgWzEzLjM3NTU5NywgLTUuODY0MjQxXSwgWzEzLjAyNDg2OSwgLTUuOTg0Mzg5XSwgWzEyLjczNTE3MSwgLTUuOTY1NjgyXSwgWzEyLjMyMjQzMiwgLTYuMTAwMDkyXSwgWzEyLjE4MjMzNywgLTUuNzg5OTMxXSwgWzEyLjQzNjY4OCwgLTUuNjg0MzA0XSwgWzEyLjQ2ODAwNCwgLTUuMjQ4MzYyXSwgWzEyLjYzMTYxMiwgLTQuOTkxMjcxXSwgWzEyLjk5NTUxNywgLTQuNzgxMTAzXSwgWzEzLjI1ODI0LCAtNC44ODI5NTddLCBbMTMuNjAwMjM1LCAtNC41MDAxMzhdLCBbMTQuMTQ0OTU2LCAtNC41MTAwMDldLCBbMTQuMjA5MDM1LCAtNC43OTMwOTJdLCBbMTQuNTgyNjA0LCAtNC45NzAyMzldLCBbMTUuMTcwOTkyLCAtNC4zNDM1MDddLCBbMTUuNzUzNTQsIC0zLjg1NTE2NV0sIFsxNi4wMDYyOSwgLTMuNTM1MTMzXSwgWzE1Ljk3MjgwMywgLTIuNzEyMzkyXSwgWzE2LjQwNzA5MiwgLTEuNzQwOTI3XSwgWzE2Ljg2NTMwNywgLTEuMjI1ODE2XSwgWzE3LjUyMzcxNiwgLTAuNzQzODNdLCBbMTcuNjM4NjQ1LCAtMC40MjQ4MzJdLCBbMTcuNjYzNTUzLCAtMC4wNTgwODRdLCBbMTcuODI2NTQsIDAuMjg4OTIzXSwgWzE3Ljc3NDE5MiwgMC44NTU2NTldLCBbMTcuODk4ODM1LCAxLjc0MTgzMl0sIFsxOC4wOTQyNzYsIDIuMzY1NzIyXSwgWzE4LjM5Mzc5MiwgMi45MDA0NDNdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxOC41NDI5ODIsIDQuMjAxNzg1XSwgWzE4LjkzMjMxMiwgNC43MDk1MDZdLCBbMTkuNDY3Nzg0LCA1LjAzMTUyOF0sIFsyMC4yOTA2NzksIDQuNjkxNjc4XSwgWzIwLjkyNzU5MSwgNC4zMjI3ODZdLCBbMjEuNjU5MTIzLCA0LjIyNDM0Ml0sIFsyMi40MDUxMjQsIDQuMDI5MTZdLCBbMjIuNzA0MTI0LCA0LjYzMzA1MV0sIFsyMi44NDE0OCwgNC43MTAxMjZdLCBbMjMuMjk3MjE0LCA0LjYwOTY5M10sIFsyNC40MTA1MzEsIDUuMTA4Nzg0XSwgWzI0LjgwNTAyOSwgNC44OTcyNDddLCBbMjUuMTI4ODMzLCA0LjkyNzI0NV0sIFsyNS4yNzg3OTgsIDUuMTcwNDA4XSwgWzI1LjY1MDQ1NSwgNS4yNTYwODhdLCBbMjYuNDAyNzYxLCA1LjE1MDg3NV0sIFsyNy4wNDQwNjUsIDUuMTI3ODUzXSwgWzI3LjM3NDIyNiwgNS4yMzM5NDRdLCBbMjcuOTc5OTc3LCA0LjQwODQxM10sIFsyOC40Mjg5OTQsIDQuMjg3MTU1XSwgWzI4LjY5NjY3OCwgNC40NTUwNzddLCBbMjkuMTU5MDc4LCA0LjM4OTI2N10sIFsyOS43MTU5OTUsIDQuNjAwODA1XSwgWzI5Ljk1MzUsIDQuMTczNjk5XSwgWzMwLjgzMzg2LCAzLjUwOTE2Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ09EIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZSBDb25nbyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTIuOTk1NTE3LCAtNC43ODExMDNdLCBbMTIuNjIwNzYsIC00LjQzODAyM10sIFsxMi4zMTg2MDgsIC00LjYwNjIzXSwgWzExLjkxNDk2MywgLTUuMDM3OTg3XSwgWzExLjA5Mzc3MywgLTMuOTc4ODI3XSwgWzExLjg1NTEyMiwgLTMuNDI2ODcxXSwgWzExLjQ3ODAzOSwgLTIuNzY1NjE5XSwgWzExLjgyMDk2NCwgLTIuNTE0MTYxXSwgWzEyLjQ5NTcwMywgLTIuMzkxNjg4XSwgWzEyLjU3NTI4NCwgLTEuOTQ4NTExXSwgWzEzLjEwOTYxOSwgLTIuNDI4NzRdLCBbMTMuOTkyNDA3LCAtMi40NzA4MDVdLCBbMTQuMjk5MjEsIC0xLjk5ODI3Nl0sIFsxNC40MjU0NTYsIC0xLjMzMzQwN10sIFsxNC4zMTY0MTgsIC0wLjU1MjYyN10sIFsxMy44NDMzMjEsIDAuMDM4NzU4XSwgWzE0LjI3NjI2NiwgMS4xOTY5M10sIFsxNC4wMjY2NjksIDEuMzk1Njc3XSwgWzEzLjI4MjYzMSwgMS4zMTQxODRdLCBbMTMuMDAzMTE0LCAxLjgzMDg5Nl0sIFsxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzE0LjMzNzgxMywgMi4yMjc4NzVdLCBbMTUuMTQ2MzQyLCAxLjk2NDAxNV0sIFsxNS45NDA5MTksIDEuNzI3NjczXSwgWzE2LjAxMjg1MiwgMi4yNjc2NF0sIFsxNi41MzcwNTgsIDMuMTk4MjU1XSwgWzE3LjEzMzA0MiwgMy43MjgxOTddLCBbMTcuODA5OSwgMy41NjAxOTZdLCBbMTguNDUzMDY1LCAzLjUwNDM4Nl0sIFsxOC4zOTM3OTIsIDIuOTAwNDQzXSwgWzE4LjA5NDI3NiwgMi4zNjU3MjJdLCBbMTcuODk4ODM1LCAxLjc0MTgzMl0sIFsxNy43NzQxOTIsIDAuODU1NjU5XSwgWzE3LjgyNjU0LCAwLjI4ODkyM10sIFsxNy42NjM1NTMsIC0wLjA1ODA4NF0sIFsxNy42Mzg2NDUsIC0wLjQyNDgzMl0sIFsxNy41MjM3MTYsIC0wLjc0MzgzXSwgWzE2Ljg2NTMwNywgLTEuMjI1ODE2XSwgWzE2LjQwNzA5MiwgLTEuNzQwOTI3XSwgWzE1Ljk3MjgwMywgLTIuNzEyMzkyXSwgWzE2LjAwNjI5LCAtMy41MzUxMzNdLCBbMTUuNzUzNTQsIC0zLjg1NTE2NV0sIFsxNS4xNzA5OTIsIC00LjM0MzUwN10sIFsxNC41ODI2MDQsIC00Ljk3MDIzOV0sIFsxNC4yMDkwMzUsIC00Ljc5MzA5Ml0sIFsxNC4xNDQ5NTYsIC00LjUxMDAwOV0sIFsxMy42MDAyMzUsIC00LjUwMDEzOF0sIFsxMy4yNTgyNCwgLTQuODgyOTU3XSwgWzEyLjk5NTUxNywgLTQuNzgxMTAzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDT0ciLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlJlcHVibGljIG9mIHRoZSBDb25nbyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTc1LjM3MzIyMywgLTAuMTUyMDMyXSwgWy03NS44MDE0NjYsIDAuMDg0ODAxXSwgWy03Ni4yOTIzMTQsIDAuNDE2MDQ3XSwgWy03Ni41NzYzOCwgMC4yNTY5MzZdLCBbLTc3LjQyNDk4NCwgMC4zOTU2ODddLCBbLTc3LjY2ODYxMywgMC44MjU4OTNdLCBbLTc3Ljg1NTA2MSwgMC44MDk5MjVdLCBbLTc4Ljg1NTI1OSwgMS4zODA5MjRdLCBbLTc4Ljk5MDkzNSwgMS42OTEzN10sIFstNzguNjE3ODMxLCAxLjc2NjQwNF0sIFstNzguNjYyMTE4LCAyLjI2NzM1NV0sIFstNzguNDI3NjEsIDIuNjI5NTU2XSwgWy03Ny45MzE1NDMsIDIuNjk2NjA2XSwgWy03Ny41MTA0MzEsIDMuMzI1MDE3XSwgWy03Ny4xMjc2OSwgMy44NDk2MzZdLCBbLTc3LjQ5NjI3MiwgNC4wODc2MDZdLCBbLTc3LjMwNzYwMSwgNC42Njc5ODRdLCBbLTc3LjUzMzIyMSwgNS41ODI4MTJdLCBbLTc3LjMxODgxNSwgNS44NDUzNTRdLCBbLTc3LjQ3NjY2MSwgNi42OTExMTZdLCBbLTc3Ljg4MTU3MSwgNy4yMjM3NzFdLCBbLTc3Ljc1MzQxNCwgNy43MDk4NF0sIFstNzcuNDMxMTA4LCA3LjYzODA2MV0sIFstNzcuMjQyNTY2LCA3LjkzNTI3OF0sIFstNzcuNDc0NzIzLCA4LjUyNDI4Nl0sIFstNzcuMzUzMzYxLCA4LjY3MDUwNV0sIFstNzYuODM2Njc0LCA4LjYzODc0OV0sIFstNzYuMDg2Mzg0LCA5LjMzNjgyMV0sIFstNzUuNjc0NiwgOS40NDMyNDhdLCBbLTc1LjY2NDcwNCwgOS43NzQwMDNdLCBbLTc1LjQ4MDQyNiwgMTAuNjE4OTldLCBbLTc0LjkwNjg5NSwgMTEuMDgzMDQ1XSwgWy03NC4yNzY3NTMsIDExLjEwMjAzNl0sIFstNzQuMTk3MjIzLCAxMS4zMTA0NzNdLCBbLTczLjQxNDc2NCwgMTEuMjI3MDE1XSwgWy03Mi42Mjc4MzUsIDExLjczMTk3Ml0sIFstNzIuMjM4MTk1LCAxMS45NTU1NV0sIFstNzEuNzU0MDksIDEyLjQzNzMwM10sIFstNzEuMzk5ODIyLCAxMi4zNzYwNDFdLCBbLTcxLjEzNzQ2MSwgMTIuMTEyOTgyXSwgWy03MS4zMzE1ODQsIDExLjc3NjI4NF0sIFstNzEuOTczOTIyLCAxMS42MDg2NzJdLCBbLTcyLjIyNzU3NSwgMTEuMTA4NzAyXSwgWy03Mi42MTQ2NTgsIDEwLjgyMTk3NV0sIFstNzIuOTA1Mjg2LCAxMC40NTAzNDRdLCBbLTczLjAyNzYwNCwgOS43MzY3N10sIFstNzMuMzA0OTUyLCA5LjE1Ml0sIFstNzIuNzg4NzMsIDkuMDg1MDI3XSwgWy03Mi42NjA0OTUsIDguNjI1Mjg4XSwgWy03Mi40Mzk4NjIsIDguNDA1Mjc1XSwgWy03Mi4zNjA5MDEsIDguMDAyNjM4XSwgWy03Mi40Nzk2NzksIDcuNjMyNTA2XSwgWy03Mi40NDQ0ODcsIDcuNDIzNzg1XSwgWy03Mi4xOTgzNTIsIDcuMzQwNDMxXSwgWy03MS45NjAxNzYsIDYuOTkxNjE1XSwgWy03MC42NzQyMzQsIDcuMDg3Nzg1XSwgWy03MC4wOTMzMTMsIDYuOTYwMzc2XSwgWy02OS4zODk0OCwgNi4wOTk4NjFdLCBbLTY4Ljk4NTMxOSwgNi4yMDY4MDVdLCBbLTY4LjI2NTA1MiwgNi4xNTMyNjhdLCBbLTY3LjY5NTA4NywgNi4yNjczMThdLCBbLTY3LjM0MTQ0LCA2LjA5NTQ2OF0sIFstNjcuNTIxNTMyLCA1LjU1Njg3XSwgWy02Ny43NDQ2OTcsIDUuMjIxMTI5XSwgWy02Ny44MjMwMTIsIDQuNTAzOTM3XSwgWy02Ny42MjE4MzYsIDMuODM5NDgyXSwgWy02Ny4zMzc1NjQsIDMuNTQyMzQyXSwgWy02Ny4zMDMxNzMsIDMuMzE4NDU0XSwgWy02Ny44MDk5MzgsIDIuODIwNjU1XSwgWy02Ny40NDcwOTIsIDIuNjAwMjgxXSwgWy02Ny4xODEyOTQsIDIuMjUwNjM4XSwgWy02Ni44NzYzMjYsIDEuMjUzMzYxXSwgWy02Ny4wNjUwNDgsIDEuMTMwMTEyXSwgWy02Ny4yNTk5OTgsIDEuNzE5OTk5XSwgWy02Ny41Mzc4MSwgMi4wMzcxNjNdLCBbLTY3Ljg2ODU2NSwgMS42OTI0NTVdLCBbLTY5LjgxNjk3MywgMS43MTQ4MDVdLCBbLTY5LjgwNDU5NywgMS4wODkwODFdLCBbLTY5LjIxODYzOCwgMC45ODU2NzddLCBbLTY5LjI1MjQzNCwgMC42MDI2NTFdLCBbLTY5LjQ1MjM5NiwgMC43MDYxNTldLCBbLTcwLjAxNTU2NiwgMC41NDE0MTRdLCBbLTcwLjAyMDY1NiwgLTAuMTg1MTU2XSwgWy02OS41NzcwNjUsIC0wLjU0OTk5Ml0sIFstNjkuNDIwNDg2LCAtMS4xMjI2MTldLCBbLTY5LjQ0NDEwMiwgLTEuNTU2Mjg3XSwgWy02OS44OTM2MzUsIC00LjI5ODE4N10sIFstNzAuMzk0MDQ0LCAtMy43NjY1OTFdLCBbLTcwLjY5MjY4MiwgLTMuNzQyODcyXSwgWy03MC4wNDc3MDksIC0yLjcyNTE1Nl0sIFstNzAuODEzNDc2LCAtMi4yNTY4NjVdLCBbLTcxLjQxMzY0NiwgLTIuMzQyODAyXSwgWy03MS43NzQ3NjEsIC0yLjE2OTc5XSwgWy03Mi4zMjU3ODcsIC0yLjQzNDIxOF0sIFstNzMuMDcwMzkyLCAtMi4zMDg5NTRdLCBbLTczLjY1OTUwNCwgLTEuMjYwNDkxXSwgWy03NC4xMjIzOTUsIC0xLjAwMjgzM10sIFstNzQuNDQxNjAxLCAtMC41MzA4Ml0sIFstNzUuMTA2NjI1LCAtMC4wNTcyMDVdLCBbLTc1LjM3MzIyMywgLTAuMTUyMDMyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDT0wiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNvbG9tYmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stODIuOTY1NzgzLCA4LjIyNTAyOF0sIFstODMuNTA4NDM3LCA4LjQ0NjkyN10sIFstODMuNzExNDc0LCA4LjY1NjgzNl0sIFstODMuNTk2MzEzLCA4LjgzMDQ0M10sIFstODMuNjMyNjQyLCA5LjA1MTM4Nl0sIFstODMuOTA5ODg2LCA5LjI5MDgwM10sIFstODQuMzAzNDAyLCA5LjQ4NzM1NF0sIFstODQuNjQ3NjQ0LCA5LjYxNTUzN10sIFstODQuNzEzMzUxLCA5LjkwODA1Ml0sIFstODQuOTc1NjYsIDEwLjA4NjcyM10sIFstODQuOTExMzc1LCA5Ljc5NTk5Ml0sIFstODUuMTEwOTIzLCA5LjU1NzA0XSwgWy04NS4zMzk0ODgsIDkuODM0NTQyXSwgWy04NS42NjA3ODcsIDkuOTMzMzQ3XSwgWy04NS43OTc0NDUsIDEwLjEzNDg4Nl0sIFstODUuNzkxNzA5LCAxMC40MzkzMzddLCBbLTg1LjY1OTMxNCwgMTAuNzU0MzMxXSwgWy04NS45NDE3MjUsIDEwLjg5NTI3OF0sIFstODUuNzEyNTQsIDExLjA4ODQ0NV0sIFstODUuNTYxODUyLCAxMS4yMTcxMTldLCBbLTg0LjkwMzAwMywgMTAuOTUyMzAzXSwgWy04NC42NzMwNjksIDExLjA4MjY1N10sIFstODQuMzU1OTMxLCAxMC45OTkyMjZdLCBbLTg0LjE5MDE3OSwgMTAuNzkzNDVdLCBbLTgzLjg5NTA1NCwgMTAuNzI2ODM5XSwgWy04My42NTU2MTIsIDEwLjkzODc2NF0sIFstODMuNDAyMzIsIDEwLjM5NTQzOF0sIFstODMuMDE1Njc3LCA5Ljk5Mjk4Ml0sIFstODIuNTQ2MTk2LCA5LjU2NjEzNV0sIFstODIuOTMyODkxLCA5LjQ3NjgxMl0sIFstODIuOTI3MTU1LCA5LjA3NDMzXSwgWy04Mi43MTkxODMsIDguOTI1NzA5XSwgWy04Mi44Njg2NTcsIDguODA3MjY2XSwgWy04Mi44Mjk3NzEsIDguNjI2Mjk1XSwgWy04Mi45MTMxNzYsIDguNDIzNTE3XSwgWy04Mi45NjU3ODMsIDguMjI1MDI4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJDUkkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNvc3RhIFJpY2EiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy04Mi4yNjgxNTEsIDIzLjE4ODYxMV0sIFstODEuNDA0NDU3LCAyMy4xMTcyNzFdLCBbLTgwLjYxODc2OSwgMjMuMTA1OThdLCBbLTc5LjY3OTUyNCwgMjIuNzY1MzAzXSwgWy03OS4yODE0ODYsIDIyLjM5OTIwMl0sIFstNzguMzQ3NDM0LCAyMi41MTIxNjZdLCBbLTc3Ljk5MzI5NiwgMjIuMjc3MTk0XSwgWy03Ny4xNDY0MjIsIDIxLjY1Nzg1MV0sIFstNzYuNTIzODI1LCAyMS4yMDY4Ml0sIFstNzYuMTk0NjIsIDIxLjIyMDU2NV0sIFstNzUuNTk4MjIyLCAyMS4wMTY2MjRdLCBbLTc1LjY3MTA2LCAyMC43MzUwOTFdLCBbLTc0LjkzMzg5NiwgMjAuNjkzOTA1XSwgWy03NC4xNzgwMjUsIDIwLjI4NDYyOF0sIFstNzQuMjk2NjQ4LCAyMC4wNTAzNzldLCBbLTc0Ljk2MTU5NSwgMTkuOTIzNDM1XSwgWy03NS42MzQ2OCwgMTkuODczNzc0XSwgWy03Ni4zMjM2NTYsIDE5Ljk1Mjg5MV0sIFstNzcuNzU1NDgxLCAxOS44NTU0ODFdLCBbLTc3LjA4NTEwOCwgMjAuNDEzMzU0XSwgWy03Ny40OTI2NTUsIDIwLjY3MzEwNV0sIFstNzguMTM3MjkyLCAyMC43Mzk5NDldLCBbLTc4LjQ4MjgyNywgMjEuMDI4NjEzXSwgWy03OC43MTk4NjcsIDIxLjU5ODExNF0sIFstNzkuMjg1LCAyMS41NTkxNzVdLCBbLTgwLjIxNzQ3NSwgMjEuODI3MzI0XSwgWy04MC41MTc1MzUsIDIyLjAzNzA3OV0sIFstODEuODIwOTQzLCAyMi4xOTIwNTddLCBbLTgyLjE2OTk5MiwgMjIuMzg3MTA5XSwgWy04MS43OTUwMDIsIDIyLjYzNjk2NV0sIFstODIuNzc1ODk4LCAyMi42ODgxNV0sIFstODMuNDk0NDU5LCAyMi4xNjg1MThdLCBbLTgzLjkwODgsIDIyLjE1NDU2NV0sIFstODQuMDUyMTUxLCAyMS45MTA1NzVdLCBbLTg0LjU0NzAzLCAyMS44MDEyMjhdLCBbLTg0Ljk3NDkxMSwgMjEuODk2MDI4XSwgWy04NC40NDcwNjIsIDIyLjIwNDk1XSwgWy04NC4yMzAzNTcsIDIyLjU2NTc1NV0sIFstODMuNzc4MjQsIDIyLjc4ODExOF0sIFstODMuMjY3NTQ4LCAyMi45ODMwNDJdLCBbLTgyLjUxMDQzNiwgMjMuMDc4NzQ3XSwgWy04Mi4yNjgxNTEsIDIzLjE4ODYxMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1VCIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDdWJhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szMi43MzE3OCwgMzUuMTQwMDI2XSwgWzMyLjgwMjQ3NCwgMzUuMTQ1NTA0XSwgWzMyLjk0Njk2MSwgMzUuMzg2NzAzXSwgWzMzLjY2NzIyNywgMzUuMzczMjE2XSwgWzM0LjU3NjQ3NCwgMzUuNjcxNTk2XSwgWzMzLjkwMDgwNCwgMzUuMjQ1NzU2XSwgWzMzLjk3MzYxNywgMzUuMDU4NTA2XSwgWzMzLjg2NjQ0LCAzNS4wOTM1OTVdLCBbMzMuNjc1MzkyLCAzNS4wMTc4NjNdLCBbMzMuNTI1Njg1LCAzNS4wMzg2ODhdLCBbMzMuNDc1ODE3LCAzNS4wMDAzNDVdLCBbMzMuNDU1OTIyLCAzNS4xMDE0MjRdLCBbMzMuMzgzODMzLCAzNS4xNjI3MTJdLCBbMzMuMTkwOTc3LCAzNS4xNzMxMjVdLCBbMzIuOTE5NTcyLCAzNS4wODc4MzNdLCBbMzIuNzMxNzgsIDM1LjE0MDAyNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiLTk5IiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJOb3J0aGVybiBDeXBydXMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzMzLjk3MzYxNywgMzUuMDU4NTA2XSwgWzM0LjAwNDg4MSwgMzQuOTc4MDk4XSwgWzMyLjk3OTgyNywgMzQuNTcxODY5XSwgWzMyLjQ5MDI5NiwgMzQuNzAxNjU1XSwgWzMyLjI1NjY2NywgMzUuMTAzMjMyXSwgWzMyLjczMTc4LCAzNS4xNDAwMjZdLCBbMzIuOTE5NTcyLCAzNS4wODc4MzNdLCBbMzMuMTkwOTc3LCAzNS4xNzMxMjVdLCBbMzMuMzgzODMzLCAzNS4xNjI3MTJdLCBbMzMuNDU1OTIyLCAzNS4xMDE0MjRdLCBbMzMuNDc1ODE3LCAzNS4wMDAzNDVdLCBbMzMuNTI1Njg1LCAzNS4wMzg2ODhdLCBbMzMuNjc1MzkyLCAzNS4wMTc4NjNdLCBbMzMuODY2NDQsIDM1LjA5MzU5NV0sIFszMy45NzM2MTcsIDM1LjA1ODUwNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1lQIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDeXBydXMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzE2Ljk2MDI4OCwgNDguNTk2OTgyXSwgWzE2LjQ5OTI4MywgNDguNzg1ODA4XSwgWzE2LjAyOTY0NywgNDguNzMzODk5XSwgWzE1LjI1MzQxNiwgNDkuMDM5MDc0XSwgWzE0LjkwMTQ0NywgNDguOTY0NDAyXSwgWzE0LjMzODg5OCwgNDguNTU1MzA1XSwgWzEzLjU5NTk0NiwgNDguODc3MTcyXSwgWzEzLjAzMTMyOSwgNDkuMzA3MDY4XSwgWzEyLjUyMTAyNCwgNDkuNTQ3NDE1XSwgWzEyLjQxNTE5MSwgNDkuOTY5MTIxXSwgWzEyLjI0MDExMSwgNTAuMjY2MzM4XSwgWzEyLjk2NjgzNywgNTAuNDg0MDc2XSwgWzEzLjMzODEzMiwgNTAuNzMzMjM0XSwgWzE0LjA1NjIyOCwgNTAuOTI2OTE4XSwgWzE0LjMwNzAxMywgNTEuMTE3MjY4XSwgWzE0LjU3MDcxOCwgNTEuMDAyMzM5XSwgWzE1LjAxNjk5NiwgNTEuMTA2Njc0XSwgWzE1LjQ5MDk3MiwgNTAuNzg0NzNdLCBbMTYuMjM4NjI3LCA1MC42OTc3MzNdLCBbMTYuMTc2MjUzLCA1MC40MjI2MDddLCBbMTYuNzE5NDc2LCA1MC4yMTU3NDddLCBbMTYuODY4NzY5LCA1MC40NzM5NzRdLCBbMTcuNTU0NTY3LCA1MC4zNjIxNDZdLCBbMTcuNjQ5NDQ1LCA1MC4wNDkwMzhdLCBbMTguMzkyOTE0LCA0OS45ODg2MjldLCBbMTguODUzMTQ0LCA0OS40OTYyM10sIFsxOC41NTQ5NzEsIDQ5LjQ5NTAxNV0sIFsxOC4zOTk5OTQsIDQ5LjMxNTAwMV0sIFsxOC4xNzA0OTgsIDQ5LjI3MTUxNV0sIFsxOC4xMDQ5NzMsIDQ5LjA0Mzk4M10sIFsxNy45MTM1MTIsIDQ4Ljk5NjQ5M10sIFsxNy44ODY0ODUsIDQ4LjkwMzQ3NV0sIFsxNy41NDUwMDcsIDQ4LjgwMDAxOV0sIFsxNy4xMDE5ODUsIDQ4LjgxNjk2OV0sIFsxNi45NjAyODgsIDQ4LjU5Njk4Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1pFIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDemVjaCBSZXB1YmxpYyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbOS45MjE5MDYsIDU0Ljk4MzEwNF0sIFs5LjkzOTU4LCA1NC41OTY2NDJdLCBbMTAuOTUwMTEyLCA1NC4zNjM2MDddLCBbMTAuOTM5NDY3LCA1NC4wMDg2OTNdLCBbMTEuOTU2MjUyLCA1NC4xOTY0ODZdLCBbMTIuNTE4NDQsIDU0LjQ3MDM3MV0sIFsxMy42NDc0NjcsIDU0LjA3NTUxMV0sIFsxNC4xMTk2ODYsIDUzLjc1NzAyOV0sIFsxNC4zNTMzMTUsIDUzLjI0ODE3MV0sIFsxNC4wNzQ1MjEsIDUyLjk4MTI2M10sIFsxNC40Mzc2LCA1Mi42MjQ4NV0sIFsxNC42ODUwMjYsIDUyLjA4OTk0N10sIFsxNC42MDcwOTgsIDUxLjc0NTE4OF0sIFsxNS4wMTY5OTYsIDUxLjEwNjY3NF0sIFsxNC41NzA3MTgsIDUxLjAwMjMzOV0sIFsxNC4zMDcwMTMsIDUxLjExNzI2OF0sIFsxNC4wNTYyMjgsIDUwLjkyNjkxOF0sIFsxMy4zMzgxMzIsIDUwLjczMzIzNF0sIFsxMi45NjY4MzcsIDUwLjQ4NDA3Nl0sIFsxMi4yNDAxMTEsIDUwLjI2NjMzOF0sIFsxMi40MTUxOTEsIDQ5Ljk2OTEyMV0sIFsxMi41MjEwMjQsIDQ5LjU0NzQxNV0sIFsxMy4wMzEzMjksIDQ5LjMwNzA2OF0sIFsxMy41OTU5NDYsIDQ4Ljg3NzE3Ml0sIFsxMy4yNDMzNTcsIDQ4LjQxNjExNV0sIFsxMi44ODQxMDMsIDQ4LjI4OTE0Nl0sIFsxMy4wMjU4NTEsIDQ3LjYzNzU4NF0sIFsxMi45MzI2MjcsIDQ3LjQ2NzY0Nl0sIFsxMi42MjA3NiwgNDcuNjcyMzg4XSwgWzEyLjE0MTM1NywgNDcuNzAzMDgzXSwgWzExLjQyNjQxNCwgNDcuNTIzNzY2XSwgWzEwLjU0NDUwNCwgNDcuNTY2Mzk5XSwgWzEwLjQwMjA4NCwgNDcuMzAyNDg4XSwgWzkuODk2MDY4LCA0Ny41ODAxOTddLCBbOS41OTQyMjYsIDQ3LjUyNTA1OF0sIFs4LjUyMjYxMiwgNDcuODMwODI4XSwgWzguMzE3MzAxLCA0Ny42MTM1OF0sIFs3LjQ2Njc1OSwgNDcuNjIwNTgyXSwgWzcuNTkzNjc2LCA0OC4zMzMwMTldLCBbOC4wOTkyNzksIDQ5LjAxNzc4NF0sIFs2LjY1ODIzLCA0OS4yMDE5NThdLCBbNi4xODYzMiwgNDkuNDYzODAzXSwgWzYuMjQyNzUxLCA0OS45MDIyMjZdLCBbNi4wNDMwNzMsIDUwLjEyODA1Ml0sIFs2LjE1NjY1OCwgNTAuODAzNzIxXSwgWzUuOTg4NjU4LCA1MS44NTE2MTZdLCBbNi41ODkzOTcsIDUxLjg1MjAyOV0sIFs2Ljg0Mjg3LCA1Mi4yMjg0NF0sIFs3LjA5MjA1MywgNTMuMTQ0MDQzXSwgWzYuOTA1MTQsIDUzLjQ4MjE2Ml0sIFs3LjEwMDQyNSwgNTMuNjkzOTMyXSwgWzcuOTM2MjM5LCA1My43NDgyOTZdLCBbOC4xMjE3MDYsIDUzLjUyNzc5Ml0sIFs4LjgwMDczNCwgNTQuMDIwNzg2XSwgWzguNTcyMTE4LCA1NC4zOTU2NDZdLCBbOC41MjYyMjksIDU0Ljk2Mjc0NF0sIFs5LjI4MjA0OSwgNTQuODMwODY1XSwgWzkuOTIxOTA2LCA1NC45ODMxMDRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRFVSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR2VybWFueSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNDMuMDgxMjI2LCAxMi42OTk2MzldLCBbNDMuMzE3ODUyLCAxMi4zOTAxNDhdLCBbNDMuMjg2MzgxLCAxMS45NzQ5MjhdLCBbNDIuNzE1ODc0LCAxMS43MzU2NDFdLCBbNDMuMTQ1MzA1LCAxMS40NjIwNF0sIFs0Mi43NzY4NTIsIDEwLjkyNjg3OV0sIFs0Mi41NTQ5MywgMTEuMTA1MTFdLCBbNDIuMzE0MTQsIDExLjAzNDJdLCBbNDEuNzU1NTcsIDExLjA1MDkxXSwgWzQxLjczOTU5LCAxMS4zNTUxMV0sIFs0MS42NjE3NiwgMTEuNjMxMl0sIFs0MiwgMTIuMV0sIFs0Mi4zNTE1NiwgMTIuNTQyMjNdLCBbNDIuNzc5NjQyLCAxMi40NTU0MTZdLCBbNDMuMDgxMjI2LCAxMi42OTk2MzldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRKSSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRGppYm91dGkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxMi42OTAwMDYsIDU1LjYwOTk5MV0sIFsxMi4wODk5OTEsIDU0LjgwMDAxNV0sIFsxMS4wNDM1NDMsIDU1LjM2NDg2NF0sIFsxMC45MDM5MTQsIDU1Ljc3OTk1NV0sIFsxMi4zNzA5MDQsIDU2LjExMTQwN10sIFsxMi42OTAwMDYsIDU1LjYwOTk5MV1dXSwgW1tbMTAuOTEyMTgyLCA1Ni40NTg2MjFdLCBbMTAuNjY3ODA0LCA1Ni4wODEzODNdLCBbMTAuMzY5OTkzLCA1Ni4xOTAwMDddLCBbOS42NDk5ODUsIDU1LjQ2OTk5OV0sIFs5LjkyMTkwNiwgNTQuOTgzMTA0XSwgWzkuMjgyMDQ5LCA1NC44MzA4NjVdLCBbOC41MjYyMjksIDU0Ljk2Mjc0NF0sIFs4LjEyMDMxMSwgNTUuNTE3NzIzXSwgWzguMDg5OTc3LCA1Ni41NDAwMTJdLCBbOC4yNTY1ODIsIDU2LjgwOTk2OV0sIFs4LjU0MzQzOCwgNTcuMTEwMDAzXSwgWzkuNDI0NDY5LCA1Ny4xNzIwNjZdLCBbOS43NzU1NTksIDU3LjQ0Nzk0MV0sIFsxMC41ODAwMDYsIDU3LjczMDAxN10sIFsxMC41NDYxMDYsIDU3LjIxNTczM10sIFsxMC4yNSwgNTYuODkwMDE2XSwgWzEwLjM2OTk5MywgNTYuNjA5OTgyXSwgWzEwLjkxMjE4MiwgNTYuNDU4NjIxXV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJETksiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkRlbm1hcmsiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03MS43MTIzNjEsIDE5LjcxNDQ1Nl0sIFstNzEuNTg3MzA0LCAxOS44ODQ5MTFdLCBbLTcwLjgwNjcwNiwgMTkuODgwMjg2XSwgWy03MC4yMTQzNjUsIDE5LjYyMjg4NV0sIFstNjkuOTUwODE1LCAxOS42NDhdLCBbLTY5Ljc2OTI1LCAxOS4yOTMyNjddLCBbLTY5LjIyMjEyNiwgMTkuMzEzMjE0XSwgWy02OS4yNTQzNDYsIDE5LjAxNTE5Nl0sIFstNjguODA5NDEyLCAxOC45NzkwNzRdLCBbLTY4LjMxNzk0MywgMTguNjEyMTk4XSwgWy02OC42ODkzMTYsIDE4LjIwNTE0Ml0sIFstNjkuMTY0OTQ2LCAxOC40MjI2NDhdLCBbLTY5LjYyMzk4OCwgMTguMzgwNzEzXSwgWy02OS45NTI5MzQsIDE4LjQyODMwN10sIFstNzAuMTMzMjMzLCAxOC4yNDU5MTVdLCBbLTcwLjUxNzEzNywgMTguMTg0MjkxXSwgWy03MC42NjkyOTgsIDE4LjQyNjg4Nl0sIFstNzAuOTk5OTUsIDE4LjI4MzMyOV0sIFstNzEuNDAwMjEsIDE3LjU5ODU2NF0sIFstNzEuNjU3NjYyLCAxNy43NTc1NzNdLCBbLTcxLjcwODMwNSwgMTguMDQ0OTk3XSwgWy03MS42ODc3MzgsIDE4LjMxNjY2XSwgWy03MS45NDUxMTIsIDE4LjYxNjldLCBbLTcxLjcwMTMwMywgMTguNzg1NDE3XSwgWy03MS42MjQ4NzMsIDE5LjE2OTgzOF0sIFstNzEuNzEyMzYxLCAxOS43MTQ0NTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkRPTSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRG9taW5pY2FuIFJlcHVibGljIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMS45OTk1MDYsIDIzLjQ3MTY2OF0sIFs4LjU3Mjg5MywgMjEuNTY1NjYxXSwgWzUuNjc3NTY2LCAxOS42MDEyMDddLCBbNC4yNjc0MTksIDE5LjE1NTI2NV0sIFszLjE1ODEzMywgMTkuMDU3MzY0XSwgWzMuMTQ2NjYxLCAxOS42OTM1NzldLCBbMi42ODM1ODgsIDE5Ljg1NjIzXSwgWzIuMDYwOTkxLCAyMC4xNDIyMzNdLCBbMS44MjMyMjgsIDIwLjYxMDgwOV0sIFstMS41NTAwNTUsIDIyLjc5MjY2Nl0sIFstNC45MjMzMzcsIDI0Ljk3NDU3NF0sIFstOC42ODQ0LCAyNy4zOTU3NDRdLCBbLTguNjY1MTI0LCAyNy41ODk0NzldLCBbLTguNjY1NTksIDI3LjY1NjQyNl0sIFstOC42NzQxMTYsIDI4Ljg0MTI4OV0sIFstNy4wNTkyMjgsIDI5LjU3OTIyOF0sIFstNi4wNjA2MzIsIDI5LjczMTddLCBbLTUuMjQyMTI5LCAzMC4wMDA0NDNdLCBbLTQuODU5NjQ2LCAzMC41MDExODhdLCBbLTMuNjkwNDQxLCAzMC44OTY5NTJdLCBbLTMuNjQ3NDk4LCAzMS42MzcyOTRdLCBbLTMuMDY4OTgsIDMxLjcyNDQ5OF0sIFstMi42MTY2MDUsIDMyLjA5NDM0Nl0sIFstMS4zMDc4OTksIDMyLjI2Mjg4OV0sIFstMS4xMjQ1NTEsIDMyLjY1MTUyMl0sIFstMS4zODgwNDksIDMyLjg2NDAxNV0sIFstMS43MzM0NTUsIDMzLjkxOTcxM10sIFstMS43OTI5ODYsIDM0LjUyNzkxOV0sIFstMi4xNjk5MTQsIDM1LjE2ODM5Nl0sIFstMS4yMDg2MDMsIDM1LjcxNDg0OV0sIFstMC4xMjc0NTQsIDM1Ljg4ODY2Ml0sIFswLjUwMzg3NywgMzYuMzAxMjczXSwgWzEuNDY2OTE5LCAzNi42MDU2NDddLCBbMy4xNjE2OTksIDM2Ljc4MzkwNV0sIFs0LjgxNTc1OCwgMzYuODY1MDM3XSwgWzUuMzIwMTIsIDM2LjcxNjUxOV0sIFs2LjI2MTgyLCAzNy4xMTA2NTVdLCBbNy4zMzAzODUsIDM3LjExODM4MV0sIFs3LjczNzA3OCwgMzYuODg1NzA4XSwgWzguNDIwOTY0LCAzNi45NDY0MjddLCBbOC4yMTc4MjQsIDM2LjQzMzE3N10sIFs4LjM3NjM2OCwgMzUuNDc5ODc2XSwgWzguMTQwOTgxLCAzNC42NTUxNDZdLCBbNy41MjQ0ODIsIDM0LjA5NzM3Nl0sIFs3LjYxMjY0MiwgMzMuMzQ0MTE1XSwgWzguNDMwNDczLCAzMi43NDgzMzddLCBbOC40MzkxMDMsIDMyLjUwNjI4NV0sIFs5LjA1NTYwMywgMzIuMTAyNjkyXSwgWzkuNDgyMTQsIDMwLjMwNzU1Nl0sIFs5LjgwNTYzNCwgMjkuNDI0NjM4XSwgWzkuODU5OTk4LCAyOC45NTk5OV0sIFs5LjY4Mzg4NSwgMjguMTQ0MTc0XSwgWzkuNzU2MTI4LCAyNy42ODgyNTldLCBbOS42MjkwNTYsIDI3LjE0MDk1M10sIFs5LjcxNjI4NiwgMjYuNTEyMjA2XSwgWzkuMzE5NDExLCAyNi4wOTQzMjVdLCBbOS45MTA2OTMsIDI1LjM2NTQ1NV0sIFs5Ljk0ODI2MSwgMjQuOTM2OTU0XSwgWzEwLjMwMzg0NywgMjQuMzc5MzEzXSwgWzEwLjc3MTM2NCwgMjQuNTYyNTMyXSwgWzExLjU2MDY2OSwgMjQuMDk3OTA5XSwgWzExLjk5OTUwNiwgMjMuNDcxNjY4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJEWkEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkFsZ2VyaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy04MC4zMDI1NjEsIC0zLjQwNDg1Nl0sIFstNzkuNzcwMjkzLCAtMi42NTc1MTJdLCBbLTc5Ljk4NjU1OSwgLTIuMjIwNzk0XSwgWy04MC4zNjg3ODQsIC0yLjY4NTE1OV0sIFstODAuOTY3NzY1LCAtMi4yNDY5NDNdLCBbLTgwLjc2NDgwNiwgLTEuOTY1MDQ4XSwgWy04MC45MzM2NTksIC0xLjA1NzQ1NV0sIFstODAuNTgzMzcsIC0wLjkwNjY2M10sIFstODAuMzk5MzI1LCAtMC4yODM3MDNdLCBbLTgwLjAyMDg5OCwgMC4zNjAzNF0sIFstODAuMDkwNjEsIDAuNzY4NDI5XSwgWy03OS41NDI3NjIsIDAuOTgyOTM4XSwgWy03OC44NTUyNTksIDEuMzgwOTI0XSwgWy03Ny44NTUwNjEsIDAuODA5OTI1XSwgWy03Ny42Njg2MTMsIDAuODI1ODkzXSwgWy03Ny40MjQ5ODQsIDAuMzk1Njg3XSwgWy03Ni41NzYzOCwgMC4yNTY5MzZdLCBbLTc2LjI5MjMxNCwgMC40MTYwNDddLCBbLTc1LjgwMTQ2NiwgMC4wODQ4MDFdLCBbLTc1LjM3MzIyMywgLTAuMTUyMDMyXSwgWy03NS4yMzM3MjMsIC0wLjkxMTQxN10sIFstNzUuNTQ0OTk2LCAtMS41NjE2MV0sIFstNzYuNjM1Mzk0LCAtMi42MDg2NzhdLCBbLTc3LjgzNzkwNSwgLTMuMDAzMDIxXSwgWy03OC40NTA2ODQsIC0zLjg3MzA5N10sIFstNzguNjM5ODk3LCAtNC41NDc3ODRdLCBbLTc5LjIwNTI4OSwgLTQuOTU5MTI5XSwgWy03OS42MjQ5NzksIC00LjQ1NDE5OF0sIFstODAuMDI4OTA4LCAtNC4zNDYwOTFdLCBbLTgwLjQ0MjI0MiwgLTQuNDI1NzI0XSwgWy04MC40NjkyOTUsIC00LjA1OTI4N10sIFstODAuMTg0MDE1LCAtMy44MjExNjJdLCBbLTgwLjMwMjU2MSwgLTMuNDA0ODU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJFQ1UiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkVjdWFkb3IiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzM0LjkyMjYsIDI5LjUwMTMzXSwgWzM0LjY0MTc0LCAyOS4wOTk0Ml0sIFszNC40MjY1NSwgMjguMzQzOTldLCBbMzQuMTU0NTEsIDI3LjgyMzNdLCBbMzMuOTIxMzYsIDI3LjY0ODddLCBbMzMuNTg4MTEsIDI3Ljk3MTM2XSwgWzMzLjEzNjc2LCAyOC40MTc2NV0sIFszMi40MjMyMywgMjkuODUxMDhdLCBbMzIuMzIwNDYsIDI5Ljc2MDQzXSwgWzMyLjczNDgyLCAyOC43MDUyM10sIFszMy4zNDg3NiwgMjcuNjk5ODldLCBbMzQuMTA0NTUsIDI2LjE0MjI3XSwgWzM0LjQ3Mzg3LCAyNS41OTg1Nl0sIFszNC43OTUwNywgMjUuMDMzNzVdLCBbMzUuNjkyNDEsIDIzLjkyNjcxXSwgWzM1LjQ5MzcyLCAyMy43NTIzN10sIFszNS41MjU5OCwgMjMuMTAyNDRdLCBbMzYuNjkwNjksIDIyLjIwNDg1XSwgWzM2Ljg2NjIzLCAyMl0sIFszMi45LCAyMl0sIFsyOS4wMiwgMjJdLCBbMjUsIDIyXSwgWzI1LCAyNS42ODI1XSwgWzI1LCAyOS4yMzg2NTVdLCBbMjQuNzAwMDcsIDMwLjA0NDE5XSwgWzI0Ljk1NzYyLCAzMC42NjE2XSwgWzI0LjgwMjg3LCAzMS4wODkyOV0sIFsyNS4xNjQ4MiwgMzEuNTY5MTVdLCBbMjYuNDk1MzMsIDMxLjU4NTY4XSwgWzI3LjQ1NzYyLCAzMS4zMjEyNl0sIFsyOC40NTA0OCwgMzEuMDI1NzddLCBbMjguOTEzNTMsIDMwLjg3MDA1XSwgWzI5LjY4MzQyLCAzMS4xODY4Nl0sIFszMC4wOTUwMywgMzEuNDczNF0sIFszMC45NzY5MywgMzEuNTU1ODZdLCBbMzEuNjg3OTYsIDMxLjQyOTZdLCBbMzEuOTYwNDEsIDMwLjkzMzZdLCBbMzIuMTkyNDcsIDMxLjI2MDM0XSwgWzMyLjk5MzkyLCAzMS4wMjQwN10sIFszMy43NzM0LCAzMC45Njc0Nl0sIFszNC4yNjU0NCwgMzEuMjE5MzZdLCBbMzQuOTIyNiwgMjkuNTAxMzNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkVHWSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRWd5cHQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQyLjM1MTU2LCAxMi41NDIyM10sIFs0Mi4wMDk3NSwgMTIuODY1ODJdLCBbNDEuNTk4NTYsIDEzLjQ1MjA5XSwgWzQxLjE1NTE5NCwgMTMuNzczMzJdLCBbNDAuODk2NiwgMTQuMTE4NjRdLCBbNDAuMDI2MjE5LCAxNC41MTk1NzldLCBbMzkuMzQwNjEsIDE0LjUzMTU1XSwgWzM5LjA5OTQsIDE0Ljc0MDY0XSwgWzM4LjUxMjk1LCAxNC41MDU0N10sIFszNy45MDYwNywgMTQuOTU5NDNdLCBbMzcuNTkzNzcsIDE0LjIxMzFdLCBbMzYuNDI5NTEsIDE0LjQyMjExXSwgWzM2LjMyMzE4OSwgMTQuODIyNDgxXSwgWzM2Ljc1Mzg2LCAxNi4yOTE4NzRdLCBbMzYuODUyNTMsIDE2Ljk1NjU1XSwgWzM3LjE2NzQ3LCAxNy4yNjMxNF0sIFszNy45MDQsIDE3LjQyNzU0XSwgWzM4LjQxMDA5LCAxNy45OTgzMDddLCBbMzguOTkwNjIzLCAxNi44NDA2MjZdLCBbMzkuMjY2MTEsIDE1LjkyMjcyM10sIFszOS44MTQyOTQsIDE1LjQzNTY0N10sIFs0MS4xNzkyNzUsIDE0LjQ5MTA4XSwgWzQxLjczNDk1MiwgMTMuOTIxMDM3XSwgWzQyLjI3NjgzMSwgMTMuMzQzOTkyXSwgWzQyLjU4OTU3NiwgMTMuMDAwNDIxXSwgWzQzLjA4MTIyNiwgMTIuNjk5NjM5XSwgWzQyLjc3OTY0MiwgMTIuNDU1NDE2XSwgWzQyLjM1MTU2LCAxMi41NDIyM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVJJIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFcml0cmVhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOS4wMzQ4MTgsIDQxLjg4MDU3MV0sIFstOC45ODQ0MzMsIDQyLjU5Mjc3NV0sIFstOS4zOTI4ODQsIDQzLjAyNjYyNV0sIFstNy45NzgxOSwgNDMuNzQ4MzM4XSwgWy02Ljc1NDQ5MiwgNDMuNTY3OTA5XSwgWy01LjQxMTg4NiwgNDMuNTc0MjRdLCBbLTQuMzQ3ODQzLCA0My40MDM0NDldLCBbLTMuNTE3NTMyLCA0My40NTU5MDFdLCBbLTEuOTAxMzUxLCA0My40MjI4MDJdLCBbLTEuNTAyNzcxLCA0My4wMzQwMTRdLCBbMC4zMzgwNDcsIDQyLjU3OTU0Nl0sIFswLjcwMTU5MSwgNDIuNzk1NzM0XSwgWzEuODI2NzkzLCA0Mi4zNDMzODVdLCBbMi45ODU5OTksIDQyLjQ3MzAxNV0sIFszLjAzOTQ4NCwgNDEuODkyMTJdLCBbMi4wOTE4NDIsIDQxLjIyNjA4OV0sIFswLjgxMDUyNSwgNDEuMDE0NzMyXSwgWzAuNzIxMzMxLCA0MC42NzgzMThdLCBbMC4xMDY2OTIsIDQwLjEyMzkzNF0sIFstMC4yNzg3MTEsIDM5LjMwOTk3OF0sIFswLjExMTI5MSwgMzguNzM4NTE0XSwgWy0wLjQ2NzEyNCwgMzguMjkyMzY2XSwgWy0wLjY4MzM4OSwgMzcuNjQyMzU0XSwgWy0xLjQzODM4MiwgMzcuNDQzMDY0XSwgWy0yLjE0NjQ1MywgMzYuNjc0MTQ0XSwgWy0zLjQxNTc4MSwgMzYuNjU4OV0sIFstNC4zNjg5MDEsIDM2LjY3NzgzOV0sIFstNC45OTUyMTksIDM2LjMyNDcwOF0sIFstNS4zNzcxNiwgMzUuOTQ2ODVdLCBbLTUuODY2NDMyLCAzNi4wMjk4MTddLCBbLTYuMjM2Njk0LCAzNi4zNjc2NzddLCBbLTYuNTIwMTkxLCAzNi45NDI5MTNdLCBbLTcuNDUzNzI2LCAzNy4wOTc3ODhdLCBbLTcuNTM3MTA1LCAzNy40Mjg5MDRdLCBbLTcuMTY2NTA4LCAzNy44MDM4OTRdLCBbLTcuMDI5MjgxLCAzOC4wNzU3NjRdLCBbLTcuMzc0MDkyLCAzOC4zNzMwNTldLCBbLTcuMDk4MDM3LCAzOS4wMzAwNzNdLCBbLTcuNDk4NjMyLCAzOS42Mjk1NzFdLCBbLTcuMDY2NTkyLCAzOS43MTE4OTJdLCBbLTcuMDI2NDEzLCA0MC4xODQ1MjRdLCBbLTYuODY0MDIsIDQwLjMzMDg3Ml0sIFstNi44NTExMjcsIDQxLjExMTA4M10sIFstNi4zODkwODgsIDQxLjM4MTgxNV0sIFstNi42Njg2MDYsIDQxLjg4MzM4N10sIFstNy4yNTEzMDksIDQxLjkxODM0Nl0sIFstNy40MjI1MTMsIDQxLjc5MjA3NV0sIFstOC4wMTMxNzUsIDQxLjc5MDg4Nl0sIFstOC4yNjM4NTcsIDQyLjI4MDQ2OV0sIFstOC42NzE5NDYsIDQyLjEzNDY4OV0sIFstOS4wMzQ4MTgsIDQxLjg4MDU3MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVNQIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJTcGFpbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMjQuMzEyODYzLCA1Ny43OTM0MjRdLCBbMjQuNDI4OTI4LCA1OC4zODM0MTNdLCBbMjQuMDYxMTk4LCA1OC4yNTczNzVdLCBbMjMuNDI2NTYsIDU4LjYxMjc1M10sIFsyMy4zMzk3OTUsIDU5LjE4NzI0XSwgWzI0LjYwNDIxNCwgNTkuNDY1ODU0XSwgWzI1Ljg2NDE4OSwgNTkuNjExMDldLCBbMjYuOTQ5MTM2LCA1OS40NDU4MDNdLCBbMjcuOTgxMTE0LCA1OS40NzUzODhdLCBbMjguMTMxNjk5LCA1OS4zMDA4MjVdLCBbMjcuNDIwMTY2LCA1OC43MjQ1ODFdLCBbMjcuNzE2Njg2LCA1Ny43OTE4OTldLCBbMjcuMjg4MTg1LCA1Ny40NzQ1MjhdLCBbMjYuNDYzNTMyLCA1Ny40NzYzODldLCBbMjUuNjAyODEsIDU3Ljg0NzUyOV0sIFsyNS4xNjQ1OTQsIDU3Ljk3MDE1N10sIFsyNC4zMTI4NjMsIDU3Ljc5MzQyNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRVNUIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFc3RvbmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szNy45MDYwNywgMTQuOTU5NDNdLCBbMzguNTEyOTUsIDE0LjUwNTQ3XSwgWzM5LjA5OTQsIDE0Ljc0MDY0XSwgWzM5LjM0MDYxLCAxNC41MzE1NV0sIFs0MC4wMjYyNSwgMTQuNTE5NTldLCBbNDAuODk2NiwgMTQuMTE4NjRdLCBbNDEuMTU1MiwgMTMuNzczMzNdLCBbNDEuNTk4NTYsIDEzLjQ1MjA5XSwgWzQyLjAwOTc1LCAxMi44NjU4Ml0sIFs0Mi4zNTE1NiwgMTIuNTQyMjNdLCBbNDIsIDEyLjFdLCBbNDEuNjYxNzYsIDExLjYzMTJdLCBbNDEuNzM5NTksIDExLjM1NTExXSwgWzQxLjc1NTU3LCAxMS4wNTA5MV0sIFs0Mi4zMTQxNCwgMTEuMDM0Ml0sIFs0Mi41NTQ5MywgMTEuMTA1MTFdLCBbNDIuNzc2ODUyLCAxMC45MjY4NzldLCBbNDIuNTU4NzYsIDEwLjU3MjU4XSwgWzQyLjkyODEyLCAxMC4wMjE5NF0sIFs0My4yOTY5OSwgOS41NDA0OF0sIFs0My42Nzg3NSwgOS4xODM1OF0sIFs0Ni45NDgzNCwgNy45OTY4OF0sIFs0Ny43ODk0MiwgOC4wMDNdLCBbNDQuOTYzNiwgNS4wMDE2Ml0sIFs0My42NjA4NywgNC45NTc1NV0sIFs0Mi43Njk2NywgNC4yNTI1OV0sIFs0Mi4xMjg2MSwgNC4yMzQxM10sIFs0MS44NTUwODMsIDMuOTE4OTEyXSwgWzQxLjE3MTgsIDMuOTE5MDldLCBbNDAuNzY4NDgsIDQuMjU3MDJdLCBbMzkuODU0OTQsIDMuODM4NzldLCBbMzkuNTU5Mzg0LCAzLjQyMjA2XSwgWzM4Ljg5MjUxLCAzLjUwMDc0XSwgWzM4LjY3MTE0LCAzLjYxNjA3XSwgWzM4LjQzNjk3LCAzLjU4ODUxXSwgWzM4LjEyMDkxNSwgMy41OTg2MDVdLCBbMzYuODU1MDkzLCA0LjQ0Nzg2NF0sIFszNi4xNTkwNzksIDQuNDQ3ODY0XSwgWzM1LjgxNzQ0OCwgNC43NzY5NjZdLCBbMzUuODE3NDQ4LCA1LjMzODIzMl0sIFszNS4yOTgwMDcsIDUuNTA2XSwgWzM0LjcwNzAyLCA2LjU5NDIyXSwgWzM0LjI1MDMyLCA2LjgyNjA3XSwgWzM0LjA3NTEsIDcuMjI1OTVdLCBbMzMuNTY4MjksIDcuNzEzMzRdLCBbMzIuOTU0MTgsIDcuNzg0OTddLCBbMzMuMjk0OCwgOC4zNTQ1OF0sIFszMy44MjU1LCA4LjM3OTE2XSwgWzMzLjk3NDk4LCA4LjY4NDU2XSwgWzMzLjk2MTYyLCA5LjU4MzU4XSwgWzM0LjI1NzQ1LCAxMC42MzAwOV0sIFszNC43MzExNSwgMTAuOTEwMTddLCBbMzQuODMxNjMsIDExLjMxODk2XSwgWzM1LjI2MDQ5LCAxMi4wODI4Nl0sIFszNS44NjM2MywgMTIuNTc4MjhdLCBbMzYuMjcwMjIsIDEzLjU2MzMzXSwgWzM2LjQyOTUxLCAxNC40MjIxMV0sIFszNy41OTM3NywgMTQuMjEzMV0sIFszNy45MDYwNywgMTQuOTU5NDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkVUSCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRXRoaW9waWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzI4LjU5MTkzLCA2OS4wNjQ3NzddLCBbMjguNDQ1OTQ0LCA2OC4zNjQ2MTNdLCBbMjkuOTc3NDI2LCA2Ny42OTgyOTddLCBbMjkuMDU0NTg5LCA2Ni45NDQyODZdLCBbMzAuMjE3NjUsIDY1LjgwNTk4XSwgWzI5LjU0NDQzLCA2NC45NDg2NzJdLCBbMzAuNDQ0Njg1LCA2NC4yMDQ0NTNdLCBbMzAuMDM1ODcyLCA2My41NTI4MTRdLCBbMzEuNTE2MDkyLCA2Mi44Njc2ODddLCBbMzEuMTM5OTkxLCA2Mi4zNTc2OTNdLCBbMzAuMjExMTA3LCA2MS43ODAwMjhdLCBbMjguMDY5OTk4LCA2MC41MDM1MTddLCBbMjYuMjU1MTczLCA2MC40MjM5NjFdLCBbMjQuNDk2NjI0LCA2MC4wNTczMTZdLCBbMjIuODY5Njk1LCA1OS44NDYzNzNdLCBbMjIuMjkwNzY0LCA2MC4zOTE5MjFdLCBbMjEuMzIyMjQ0LCA2MC43MjAxN10sIFsyMS41NDQ4NjYsIDYxLjcwNTMyOV0sIFsyMS4wNTkyMTEsIDYyLjYwNzM5M10sIFsyMS41MzYwMjksIDYzLjE4OTczNV0sIFsyMi40NDI3NDQsIDYzLjgxNzgxXSwgWzI0LjczMDUxMiwgNjQuOTAyMzQ0XSwgWzI1LjM5ODA2OCwgNjUuMTExNDI3XSwgWzI1LjI5NDA0MywgNjUuNTM0MzQ2XSwgWzIzLjkwMzM3OSwgNjYuMDA2OTI3XSwgWzIzLjU2NTg4LCA2Ni4zOTYwNTFdLCBbMjMuNTM5NDczLCA2Ny45MzYwMDldLCBbMjEuOTc4NTM1LCA2OC42MTY4NDZdLCBbMjAuNjQ1NTkzLCA2OS4xMDYyNDddLCBbMjEuMjQ0OTM2LCA2OS4zNzA0NDNdLCBbMjIuMzU2MjM4LCA2OC44NDE3NDFdLCBbMjMuNjYyMDUsIDY4Ljg5MTI0N10sIFsyNC43MzU2NzksIDY4LjY0OTU1N10sIFsyNS42ODkyMTMsIDY5LjA5MjExNF0sIFsyNi4xNzk2MjIsIDY5LjgyNTI5OV0sIFsyNy43MzIyOTIsIDcwLjE2NDE5M10sIFsyOS4wMTU1NzMsIDY5Ljc2NjQ5MV0sIFsyOC41OTE5MywgNjkuMDY0Nzc3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJGSU4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkZpbmxhbmQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNzguMzczNiwgLTE3LjMzOTkyXSwgWzE3OC43MTgwNiwgLTE3LjYyODQ2XSwgWzE3OC41NTI3MSwgLTE4LjE1MDU5XSwgWzE3Ny45MzI2NiwgLTE4LjI4Nzk5XSwgWzE3Ny4zODE0NiwgLTE4LjE2NDMyXSwgWzE3Ny4yODUwNCwgLTE3LjcyNDY1XSwgWzE3Ny42NzA4NywgLTE3LjM4MTE0XSwgWzE3OC4xMjU1NywgLTE3LjUwNDgxXSwgWzE3OC4zNzM2LCAtMTcuMzM5OTJdXV0sIFtbWzE3OS4zNjQxNDMsIC0xNi44MDEzNTRdLCBbMTc4LjcyNTA1OSwgLTE3LjAxMjA0Ml0sIFsxNzguNTk2ODM5LCAtMTYuNjM5MTVdLCBbMTc5LjA5NjYwOSwgLTE2LjQzMzk4NF0sIFsxNzkuNDEzNTA5LCAtMTYuMzc5MDU0XSwgWzE4MCwgLTE2LjA2NzEzM10sIFsxODAsIC0xNi41NTUyMTddLCBbMTc5LjM2NDE0MywgLTE2LjgwMTM1NF1dXSwgW1tbLTE3OS45MTczNjksIC0xNi41MDE3ODNdLCBbLTE4MCwgLTE2LjU1NTIxN10sIFstMTgwLCAtMTYuMDY3MTMzXSwgWy0xNzkuNzkzMzIsIC0xNi4wMjA4ODJdLCBbLTE3OS45MTczNjksIC0xNi41MDE3ODNdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkZKSSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRmlqaSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYxLjIsIC01MS44NV0sIFstNjAsIC01MS4yNV0sIFstNTkuMTUsIC01MS41XSwgWy01OC41NSwgLTUxLjFdLCBbLTU3Ljc1LCAtNTEuNTVdLCBbLTU4LjA1LCAtNTEuOV0sIFstNTkuNCwgLTUyLjJdLCBbLTU5Ljg1LCAtNTEuODVdLCBbLTYwLjcsIC01Mi4zXSwgWy02MS4yLCAtNTEuODVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkZMSyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRmFsa2xhbmQgSXNsYW5kcyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy01Mi41NTY0MjUsIDIuNTA0NzA1XSwgWy01Mi45Mzk2NTcsIDIuMTI0ODU4XSwgWy01My40MTg0NjUsIDIuMDUzMzg5XSwgWy01My41NTQ4MzksIDIuMzM0ODk3XSwgWy01My43Nzg1MjEsIDIuMzc2NzAzXSwgWy01NC4wODgwNjMsIDIuMTA1NTU3XSwgWy01NC41MjQ3NTQsIDIuMzExODQ5XSwgWy01NC4yNzEyMywgMi43Mzg3NDhdLCBbLTU0LjE4NDI4NCwgMy4xOTQxNzJdLCBbLTU0LjAxMTUwNCwgMy42MjI1N10sIFstNTQuMzk5NTQyLCA0LjIxMjYxMV0sIFstNTQuNDc4NjMzLCA0Ljg5Njc1Nl0sIFstNTMuOTU4MDQ1LCA1Ljc1NjU0OF0sIFstNTMuNjE4NDUzLCA1LjY0NjUyOV0sIFstNTIuODgyMTQxLCA1LjQwOTg1MV0sIFstNTEuODIzMzQzLCA0LjU2NTc2OF0sIFstNTEuNjU3Nzk3LCA0LjE1NjIzMl0sIFstNTIuMjQ5MzM4LCAzLjI0MTA5NF0sIFstNTIuNTU2NDI1LCAyLjUwNDcwNV1dXSwgW1tbOS41NjAwMTYsIDQyLjE1MjQ5Ml0sIFs5LjIyOTc1MiwgNDEuMzgwMDA3XSwgWzguNzc1NzIzLCA0MS41ODM2MTJdLCBbOC41NDQyMTMsIDQyLjI1NjUxN10sIFs4Ljc0NjAwOSwgNDIuNjI4MTIyXSwgWzkuMzkwMDAxLCA0My4wMDk5ODVdLCBbOS41NjAwMTYsIDQyLjE1MjQ5Ml1dXSwgW1tbMy41ODgxODQsIDUwLjM3ODk5Ml0sIFs0LjI4NjAyMywgNDkuOTA3NDk3XSwgWzQuNzk5MjIyLCA0OS45ODUzNzNdLCBbNS42NzQwNTIsIDQ5LjUyOTQ4NF0sIFs1Ljg5Nzc1OSwgNDkuNDQyNjY3XSwgWzYuMTg2MzIsIDQ5LjQ2MzgwM10sIFs2LjY1ODIzLCA0OS4yMDE5NThdLCBbOC4wOTkyNzksIDQ5LjAxNzc4NF0sIFs3LjU5MzY3NiwgNDguMzMzMDE5XSwgWzcuNDY2NzU5LCA0Ny42MjA1ODJdLCBbNy4xOTIyMDIsIDQ3LjQ0OTc2Nl0sIFs2LjczNjU3MSwgNDcuNTQxODAxXSwgWzYuNzY4NzE0LCA0Ny4yODc3MDhdLCBbNi4wMzczODksIDQ2LjcyNTc3OV0sIFs2LjAyMjYwOSwgNDYuMjcyOTldLCBbNi41MDAxLCA0Ni40Mjk2NzNdLCBbNi44NDM1OTMsIDQ1Ljk5MTE0N10sIFs2LjgwMjM1NSwgNDUuNzA4NThdLCBbNy4wOTY2NTIsIDQ1LjMzMzA5OV0sIFs2Ljc0OTk1NSwgNDUuMDI4NTE4XSwgWzcuMDA3NTYyLCA0NC4yNTQ3NjddLCBbNy41NDk1OTYsIDQ0LjEyNzkwMV0sIFs3LjQzNTE4NSwgNDMuNjkzODQ1XSwgWzYuNTI5MjQ1LCA0My4xMjg4OTJdLCBbNC41NTY5NjMsIDQzLjM5OTY1MV0sIFszLjEwMDQxMSwgNDMuMDc1MjAxXSwgWzIuOTg1OTk5LCA0Mi40NzMwMTVdLCBbMS44MjY3OTMsIDQyLjM0MzM4NV0sIFswLjcwMTU5MSwgNDIuNzk1NzM0XSwgWzAuMzM4MDQ3LCA0Mi41Nzk1NDZdLCBbLTEuNTAyNzcxLCA0My4wMzQwMTRdLCBbLTEuOTAxMzUxLCA0My40MjI4MDJdLCBbLTEuMzg0MjI1LCA0NC4wMjI2MV0sIFstMS4xOTM3OTgsIDQ2LjAxNDkxOF0sIFstMi4yMjU3MjQsIDQ3LjA2NDM2M10sIFstMi45NjMyNzYsIDQ3LjU3MDMyN10sIFstNC40OTE1NTUsIDQ3Ljk1NDk1NF0sIFstNC41OTIzNSwgNDguNjg0MTZdLCBbLTMuMjk1ODE0LCA0OC45MDE2OTJdLCBbLTEuNjE2NTExLCA0OC42NDQ0MjFdLCBbLTEuOTMzNDk0LCA0OS43NzYzNDJdLCBbLTAuOTg5NDY5LCA0OS4zNDczNzZdLCBbMS4zMzg3NjEsIDUwLjEyNzE3M10sIFsxLjYzOTAwMSwgNTAuOTQ2NjA2XSwgWzIuNTEzNTczLCA1MS4xNDg1MDZdLCBbMi42NTg0MjIsIDUwLjc5Njg0OF0sIFszLjEyMzI1MiwgNTAuNzgwMzYzXSwgWzMuNTg4MTg0LCA1MC4zNzg5OTJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkZSQSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRnJhbmNlIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMS4wOTM3NzMsIC0zLjk3ODgyN10sIFsxMC4wNjYxMzUsIC0yLjk2OTQ4M10sIFs5LjQwNTI0NSwgLTIuMTQ0MzEzXSwgWzguNzk3OTk2LCAtMS4xMTEzMDFdLCBbOC44MzAwODcsIC0wLjc3OTA3NF0sIFs5LjA0ODQyLCAtMC40NTkzNTFdLCBbOS4yOTEzNTEsIDAuMjY4NjY2XSwgWzkuNDkyODg5LCAxLjAxMDEyXSwgWzkuODMwMjg0LCAxLjA2Nzg5NF0sIFsxMS4yODUwNzksIDEuMDU3NjYyXSwgWzExLjI3NjQ0OSwgMi4yNjEwNTFdLCBbMTEuNzUxNjY1LCAyLjMyNjc1OF0sIFsxMi4zNTkzOCwgMi4xOTI4MTJdLCBbMTIuOTUxMzM0LCAyLjMyMTYxNl0sIFsxMy4wNzU4MjIsIDIuMjY3MDk3XSwgWzEzLjAwMzExNCwgMS44MzA4OTZdLCBbMTMuMjgyNjMxLCAxLjMxNDE4NF0sIFsxNC4wMjY2NjksIDEuMzk1Njc3XSwgWzE0LjI3NjI2NiwgMS4xOTY5M10sIFsxMy44NDMzMjEsIDAuMDM4NzU4XSwgWzE0LjMxNjQxOCwgLTAuNTUyNjI3XSwgWzE0LjQyNTQ1NiwgLTEuMzMzNDA3XSwgWzE0LjI5OTIxLCAtMS45OTgyNzZdLCBbMTMuOTkyNDA3LCAtMi40NzA4MDVdLCBbMTMuMTA5NjE5LCAtMi40Mjg3NF0sIFsxMi41NzUyODQsIC0xLjk0ODUxMV0sIFsxMi40OTU3MDMsIC0yLjM5MTY4OF0sIFsxMS44MjA5NjQsIC0yLjUxNDE2MV0sIFsxMS40NzgwMzksIC0yLjc2NTYxOV0sIFsxMS44NTUxMjIsIC0zLjQyNjg3MV0sIFsxMS4wOTM3NzMsIC0zLjk3ODgyN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR0FCIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHYWJvbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy01LjY2MTk0OSwgNTQuNTU0NjAzXSwgWy02LjE5Nzg4NSwgNTMuODY3NTY1XSwgWy02Ljk1MzczLCA1NC4wNzM3MDJdLCBbLTcuNTcyMTY4LCA1NC4wNTk5NTZdLCBbLTcuMzY2MDMxLCA1NC41OTU4NDFdLCBbLTcuNTcyMTY4LCA1NS4xMzE2MjJdLCBbLTYuNzMzODQ3LCA1NS4xNzI4Nl0sIFstNS42NjE5NDksIDU0LjU1NDYwM11dXSwgW1tbLTMuMDA1MDA1LCA1OC42MzVdLCBbLTQuMDczODI4LCA1Ny41NTMwMjVdLCBbLTMuMDU1MDAyLCA1Ny42OTAwMTldLCBbLTEuOTU5MjgxLCA1Ny42ODQ4XSwgWy0yLjIxOTk4OCwgNTYuODcwMDE3XSwgWy0zLjExOTAwMywgNTUuOTczNzkzXSwgWy0yLjA4NTAwOSwgNTUuOTA5OTk4XSwgWy0yLjAwNTY3NiwgNTUuODA0OTAzXSwgWy0xLjExNDk5MSwgNTQuNjI0OTg2XSwgWy0wLjQzMDQ4NSwgNTQuNDY0Mzc2XSwgWzAuMTg0OTgxLCA1My4zMjUwMTRdLCBbMC40Njk5NzcsIDUyLjkyOTk5OV0sIFsxLjY4MTUzMSwgNTIuNzM5NTJdLCBbMS41NTk5ODgsIDUyLjA5OTk5OF0sIFsxLjA1MDU2MiwgNTEuODA2NzYxXSwgWzEuNDQ5ODY1LCA1MS4yODk0MjhdLCBbMC41NTAzMzQsIDUwLjc2NTczOV0sIFstMC43ODc1MTcsIDUwLjc3NDk4OV0sIFstMi40ODk5OTgsIDUwLjUwMDAxOV0sIFstMi45NTYyNzQsIDUwLjY5Njg4XSwgWy0zLjYxNzQ0OCwgNTAuMjI4MzU2XSwgWy00LjU0MjUwOCwgNTAuMzQxODM3XSwgWy01LjI0NTAyMywgNDkuOTZdLCBbLTUuNzc2NTY3LCA1MC4xNTk2NzhdLCBbLTQuMzA5OTksIDUxLjIxMDAwMV0sIFstMy40MTQ4NTEsIDUxLjQyNjAwOV0sIFstMy40MjI3MTksIDUxLjQyNjg0OF0sIFstNC45ODQzNjcsIDUxLjU5MzQ2Nl0sIFstNS4yNjcyOTYsIDUxLjk5MTRdLCBbLTQuMjIyMzQ3LCA1Mi4zMDEzNTZdLCBbLTQuNzcwMDEzLCA1Mi44NDAwMDVdLCBbLTQuNTc5OTk5LCA1My40OTUwMDRdLCBbLTMuMDkzODMxLCA1My40MDQ1NDddLCBbLTMuMDkyMDgsIDUzLjQwNDQ0MV0sIFstMi45NDUwMDksIDUzLjk4NV0sIFstMy42MTQ3MDEsIDU0LjYwMDkzN10sIFstMy42MzAwMDUsIDU0LjYxNTAxM10sIFstNC44NDQxNjksIDU0Ljc5MDk3MV0sIFstNS4wODI1MjcsIDU1LjA2MTYwMV0sIFstNC43MTkxMTIsIDU1LjUwODQ3M10sIFstNS4wNDc5ODEsIDU1Ljc4Mzk4Nl0sIFstNS41ODYzOTgsIDU1LjMxMTE0Nl0sIFstNS42NDQ5OTksIDU2LjI3NTAxNV0sIFstNi4xNDk5ODEsIDU2Ljc4NTAxXSwgWy01Ljc4NjgyNSwgNTcuODE4ODQ4XSwgWy01LjAwOTk5OSwgNTguNjMwMDEzXSwgWy00LjIxMTQ5NSwgNTguNTUwODQ1XSwgWy0zLjAwNTAwNSwgNTguNjM1XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJHQlIiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIlVuaXRlZCBLaW5nZG9tIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s0MS41NTQwODQsIDQxLjUzNTY1Nl0sIFs0MS43MDMxNzEsIDQxLjk2Mjk0M10sIFs0MS40NTM0NywgNDIuNjQ1MTIzXSwgWzQwLjg3NTQ2OSwgNDMuMDEzNjI4XSwgWzQwLjMyMTM5NCwgNDMuMTI4NjM0XSwgWzM5Ljk1NTAwOSwgNDMuNDM0OTk4XSwgWzQwLjA3Njk2NSwgNDMuNTUzMTA0XSwgWzQwLjkyMjE4NSwgNDMuMzgyMTU5XSwgWzQyLjM5NDM5NSwgNDMuMjIwMzA4XSwgWzQzLjc1NjAxNywgNDIuNzQwODI4XSwgWzQzLjkzMTIsIDQyLjU1NDk3NF0sIFs0NC41Mzc2MjMsIDQyLjcxMTk5M10sIFs0NS40NzAyNzksIDQyLjUwMjc4MV0sIFs0NS43NzY0MSwgNDIuMDkyNDQ0XSwgWzQ2LjQwNDk1MSwgNDEuODYwNjc1XSwgWzQ2LjE0NTQzMiwgNDEuNzIyODAyXSwgWzQ2LjYzNzkwOCwgNDEuMTgxNjczXSwgWzQ2LjUwMTYzNywgNDEuMDY0NDQ1XSwgWzQ1Ljk2MjYwMSwgNDEuMTIzODczXSwgWzQ1LjIxNzQyNiwgNDEuNDExNDUyXSwgWzQ0Ljk3MjQ4LCA0MS4yNDgxMjldLCBbNDMuNTgyNzQ2LCA0MS4wOTIxNDNdLCBbNDIuNjE5NTQ5LCA0MS41ODMxNzNdLCBbNDEuNTU0MDg0LCA0MS41MzU2NTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkdFTyIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR2VvcmdpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMS4wNjAxMjIsIDUuOTI4ODM3XSwgWy0wLjUwNzYzOCwgNS4zNDM0NzNdLCBbLTEuMDYzNjI1LCA1LjAwMDU0OF0sIFstMS45NjQ3MDcsIDQuNzEwNDYyXSwgWy0yLjg1NjEyNSwgNC45OTQ0NzZdLCBbLTIuODEwNzAxLCA1LjM4OTA1MV0sIFstMy4yNDQzNywgNi4yNTA0NzJdLCBbLTIuOTgzNTg1LCA3LjM3OTcwNV0sIFstMi41NjIxOSwgOC4yMTk2MjhdLCBbLTIuODI3NDk2LCA5LjY0MjQ2MV0sIFstMi45NjM4OTYsIDEwLjM5NTMzNV0sIFstMi45NDA0MDksIDEwLjk2MjY5XSwgWy0xLjIwMzM1OCwgMTEuMDA5ODE5XSwgWy0wLjc2MTU3NiwgMTAuOTM2OTNdLCBbLTAuNDM4NzAyLCAxMS4wOTgzNDFdLCBbMC4wMjM4MDMsIDExLjAxODY4Ml0sIFstMC4wNDk3ODUsIDEwLjcwNjkxOF0sIFswLjM2NzU4LCAxMC4xOTEyMTNdLCBbMC4zNjU5MDEsIDkuNDY1MDA0XSwgWzAuNDYxMTkyLCA4LjY3NzIyM10sIFswLjcxMjAyOSwgOC4zMTI0NjVdLCBbMC40OTA5NTcsIDcuNDExNzQ0XSwgWzAuNTcwMzg0LCA2LjkxNDM1OV0sIFswLjgzNjkzMSwgNi4yNzk5NzldLCBbMS4wNjAxMjIsIDUuOTI4ODM3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHSEEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkdoYW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOC40MzkyOTgsIDcuNjg2MDQzXSwgWy04LjcyMjEyNCwgNy43MTE2NzRdLCBbLTguOTI2MDY1LCA3LjMwOTAzN10sIFstOS4yMDg3ODYsIDcuMzEzOTIxXSwgWy05LjQwMzM0OCwgNy41MjY5MDVdLCBbLTkuMzM3MjgsIDcuOTI4NTM0XSwgWy05Ljc1NTM0MiwgOC41NDEwNTVdLCBbLTEwLjAxNjU2NywgOC40Mjg1MDRdLCBbLTEwLjIzMDA5NCwgOC40MDYyMDZdLCBbLTEwLjUwNTQ3NywgOC4zNDg4OTZdLCBbLTEwLjQ5NDMxNSwgOC43MTU1NDFdLCBbLTEwLjY1NDc3LCA4Ljk3NzE3OF0sIFstMTAuNjIyMzk1LCA5LjI2NzkxXSwgWy0xMC44MzkxNTIsIDkuNjg4MjQ2XSwgWy0xMS4xMTc0ODEsIDEwLjA0NTg3M10sIFstMTEuOTE3Mjc3LCAxMC4wNDY5ODRdLCBbLTEyLjE1MDMzOCwgOS44NTg1NzJdLCBbLTEyLjQyNTkyOSwgOS44MzU4MzRdLCBbLTEyLjU5NjcxOSwgOS42MjAxODhdLCBbLTEyLjcxMTk1OCwgOS4zNDI3MTJdLCBbLTEzLjI0NjU1LCA4LjkwMzA0OV0sIFstMTMuNjg1MTU0LCA5LjQ5NDc0NF0sIFstMTQuMDc0MDQ1LCA5Ljg4NjE2N10sIFstMTQuMzMwMDc2LCAxMC4wMTU3Ml0sIFstMTQuNTc5Njk5LCAxMC4yMTQ0NjddLCBbLTE0LjY5MzIzMiwgMTAuNjU2MzAxXSwgWy0xNC44Mzk1NTQsIDEwLjg3NjU3Ml0sIFstMTUuMTMwMzExLCAxMS4wNDA0MTJdLCBbLTE0LjY4NTY4NywgMTEuNTI3ODI0XSwgWy0xNC4zODIxOTIsIDExLjUwOTI3Ml0sIFstMTQuMTIxNDA2LCAxMS42NzcxMTddLCBbLTEzLjkwMDgsIDExLjY3ODcxOV0sIFstMTMuNzQzMTYxLCAxMS44MTEyNjldLCBbLTEzLjgyODI3MiwgMTIuMTQyNjQ0XSwgWy0xMy43MTg3NDQsIDEyLjI0NzE4Nl0sIFstMTMuNzAwNDc2LCAxMi41ODYxODNdLCBbLTEzLjIxNzgxOCwgMTIuNTc1ODc0XSwgWy0xMi40OTkwNTEsIDEyLjMzMjA5XSwgWy0xMi4yNzg1OTksIDEyLjM1NDQ0XSwgWy0xMi4yMDM1NjUsIDEyLjQ2NTY0OF0sIFstMTEuNjU4MzAxLCAxMi4zODY1ODNdLCBbLTExLjUxMzk0MywgMTIuNDQyOTg4XSwgWy0xMS40NTYxNjksIDEyLjA3NjgzNF0sIFstMTEuMjk3NTc0LCAxMi4wNzc5NzFdLCBbLTExLjAzNjU1NiwgMTIuMjExMjQ1XSwgWy0xMC44NzA4MywgMTIuMTc3ODg3XSwgWy0xMC41OTMyMjQsIDExLjkyMzk3NV0sIFstMTAuMTY1MjE0LCAxMS44NDQwODRdLCBbLTkuODkwOTkzLCAxMi4wNjA0NzldLCBbLTkuNTY3OTEyLCAxMi4xOTQyNDNdLCBbLTkuMzI3NjE2LCAxMi4zMzQyODZdLCBbLTkuMTI3NDc0LCAxMi4zMDgwNl0sIFstOC45MDUyNjUsIDEyLjA4ODM1OF0sIFstOC43ODYwOTksIDExLjgxMjU2MV0sIFstOC4zNzYzMDUsIDExLjM5MzY0Nl0sIFstOC41ODEzMDUsIDExLjEzNjI0Nl0sIFstOC42MjAzMjEsIDEwLjgxMDg5MV0sIFstOC40MDczMTEsIDEwLjkwOTI1N10sIFstOC4yODIzNTcsIDEwLjc5MjU5N10sIFstOC4zMzUzNzcsIDEwLjQ5NDgxMl0sIFstOC4wMjk5NDQsIDEwLjIwNjUzNV0sIFstOC4yMjkzMzcsIDEwLjEyOTAyXSwgWy04LjMwOTYxNiwgOS43ODk1MzJdLCBbLTguMDc5MTE0LCA5LjM3NjIyNF0sIFstNy44MzIxLCA4LjU3NTcwNF0sIFstOC4yMDM0OTksIDguNDU1NDUzXSwgWy04LjI5OTA0OSwgOC4zMTY0NDRdLCBbLTguMjIxNzkyLCA4LjEyMzMyOV0sIFstOC4yODA3MDMsIDcuNjg3MThdLCBbLTguNDM5Mjk4LCA3LjY4NjA0M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR0lOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHdWluZWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNi44NDE1MjUsIDEzLjE1MTM5NF0sIFstMTYuNzEzNzI5LCAxMy41OTQ5NTldLCBbLTE1LjYyNDU5NiwgMTMuNjIzNTg3XSwgWy0xNS4zOTg3NywgMTMuODYwMzY5XSwgWy0xNS4wODE3MzUsIDEzLjg3NjQ5Ml0sIFstMTQuNjg3MDMxLCAxMy42MzAzNTddLCBbLTE0LjM3NjcxNCwgMTMuNjI1NjhdLCBbLTE0LjA0Njk5MiwgMTMuNzk0MDY4XSwgWy0xMy44NDQ5NjMsIDEzLjUwNTA0Ml0sIFstMTQuMjc3NzAyLCAxMy4yODA1ODVdLCBbLTE0LjcxMjE5NywgMTMuMjk4MjA3XSwgWy0xNS4xNDExNjMsIDEzLjUwOTUxMl0sIFstMTUuNTExODEzLCAxMy4yNzg1N10sIFstMTUuNjkxMDAxLCAxMy4yNzAzNTNdLCBbLTE1LjkzMTI5NiwgMTMuMTMwMjg0XSwgWy0xNi44NDE1MjUsIDEzLjE1MTM5NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR01CIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHYW1iaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNS4xMzAzMTEsIDExLjA0MDQxMl0sIFstMTUuNjY0MTgsIDExLjQ1ODQ3NF0sIFstMTYuMDg1MjE0LCAxMS41MjQ1OTRdLCBbLTE2LjMxNDc4NywgMTEuODA2NTE1XSwgWy0xNi4zMDg5NDcsIDExLjk1ODcwMl0sIFstMTYuNjEzODM4LCAxMi4xNzA5MTFdLCBbLTE2LjY3NzQ1MiwgMTIuMzg0ODUyXSwgWy0xNi4xNDc3MTcsIDEyLjU0Nzc2Ml0sIFstMTUuODE2NTc0LCAxMi41MTU1NjddLCBbLTE1LjU0ODQ3NywgMTIuNjI4MTddLCBbLTEzLjcwMDQ3NiwgMTIuNTg2MTgzXSwgWy0xMy43MTg3NDQsIDEyLjI0NzE4Nl0sIFstMTMuODI4MjcyLCAxMi4xNDI2NDRdLCBbLTEzLjc0MzE2MSwgMTEuODExMjY5XSwgWy0xMy45MDA4LCAxMS42Nzg3MTldLCBbLTE0LjEyMTQwNiwgMTEuNjc3MTE3XSwgWy0xNC4zODIxOTIsIDExLjUwOTI3Ml0sIFstMTQuNjg1Njg3LCAxMS41Mjc4MjRdLCBbLTE1LjEzMDMxMSwgMTEuMDQwNDEyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHTkIiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1aW5lYSBCaXNzYXUiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkuNDkyODg5LCAxLjAxMDEyXSwgWzkuMzA1NjEzLCAxLjE2MDkxMV0sIFs5LjY0OTE1OCwgMi4yODM4NjZdLCBbMTEuMjc2NDQ5LCAyLjI2MTA1MV0sIFsxMS4yODUwNzksIDEuMDU3NjYyXSwgWzkuODMwMjg0LCAxLjA2Nzg5NF0sIFs5LjQ5Mjg4OSwgMS4wMTAxMl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR05RIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFcXVhdG9yaWFsIEd1aW5lYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWzIzLjY5OTk4LCAzNS43MDUwMDRdLCBbMjQuMjQ2NjY1LCAzNS4zNjgwMjJdLCBbMjUuMDI1MDE1LCAzNS40MjQ5OTZdLCBbMjUuNzY5MjA4LCAzNS4zNTQwMThdLCBbMjUuNzQ1MDIzLCAzNS4xNzk5OThdLCBbMjYuMjkwMDAzLCAzNS4yOTk5OV0sIFsyNi4xNjQ5OTgsIDM1LjAwNDk5NV0sIFsyNC43MjQ5ODIsIDM0LjkxOTk4OF0sIFsyNC43MzUwMDcsIDM1LjA4NDk5MV0sIFsyMy41MTQ5NzgsIDM1LjI3OTk5Ml0sIFsyMy42OTk5OCwgMzUuNzA1MDA0XV1dLCBbW1syNi42MDQxOTYsIDQxLjU2MjExNV0sIFsyNi4yOTQ2MDIsIDQwLjkzNjI2MV0sIFsyNi4wNTY5NDIsIDQwLjgyNDEyM10sIFsyNS40NDc2NzcsIDQwLjg1MjU0NV0sIFsyNC45MjU4NDgsIDQwLjk0NzA2Ml0sIFsyMy43MTQ4MTEsIDQwLjY4NzEyOV0sIFsyNC40MDc5OTksIDQwLjEyNDk5M10sIFsyMy44OTk5NjgsIDM5Ljk2MjAwNl0sIFsyMy4zNDI5OTksIDM5Ljk2MDk5OF0sIFsyMi44MTM5ODgsIDQwLjQ3NjAwNV0sIFsyMi42MjYyOTksIDQwLjI1NjU2MV0sIFsyMi44NDk3NDgsIDM5LjY1OTMxMV0sIFsyMy4zNTAwMjcsIDM5LjE5MDAxMV0sIFsyMi45NzMwOTksIDM4Ljk3MDkwM10sIFsyMy41MzAwMTYsIDM4LjUxMDAwMV0sIFsyNC4wMjUwMjUsIDM4LjIxOTk5M10sIFsyNC4wNDAwMTEsIDM3LjY1NTAxNV0sIFsyMy4xMTUwMDMsIDM3LjkyMDAxMV0sIFsyMy40MDk5NzIsIDM3LjQwOTk5MV0sIFsyMi43NzQ5NzIsIDM3LjMwNTAxXSwgWzIzLjE1NDIyNSwgMzYuNDIyNTA2XSwgWzIyLjQ5MDAyOCwgMzYuNDFdLCBbMjEuNjcwMDI2LCAzNi44NDQ5ODZdLCBbMjEuMjk1MDExLCAzNy42NDQ5ODldLCBbMjEuMTIwMDM0LCAzOC4zMTAzMjNdLCBbMjAuNzMwMDMyLCAzOC43Njk5ODVdLCBbMjAuMjE3NzEyLCAzOS4zNDAyMzVdLCBbMjAuMTUwMDE2LCAzOS42MjQ5OThdLCBbMjAuNjE1LCA0MC4xMTAwMDddLCBbMjAuNjc0OTk3LCA0MC40MzVdLCBbMjAuOTk5OTksIDQwLjU4MDAwNF0sIFsyMS4wMjAwNCwgNDAuODQyNzI3XSwgWzIxLjY3NDE2MSwgNDAuOTMxMjc1XSwgWzIyLjA1NTM3OCwgNDEuMTQ5ODY2XSwgWzIyLjU5NzMwOCwgNDEuMTMwNDg3XSwgWzIyLjc2MTc3LCA0MS4zMDQ4XSwgWzIyLjk1MjM3NywgNDEuMzM3OTk0XSwgWzIzLjY5MjA3NCwgNDEuMzA5MDgxXSwgWzI0LjQ5MjY0NSwgNDEuNTgzODk2XSwgWzI1LjE5NzIwMSwgNDEuMjM0NDg2XSwgWzI2LjEwNjEzOCwgNDEuMzI4ODk5XSwgWzI2LjExNzA0MiwgNDEuODI2OTA1XSwgWzI2LjYwNDE5NiwgNDEuNTYyMTE1XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJHUkMiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkdyZWVjZSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTQ2Ljc2Mzc5LCA4Mi42Mjc5Nl0sIFstNDMuNDA2NDQsIDgzLjIyNTE2XSwgWy0zOS44OTc1MywgODMuMTgwMThdLCBbLTM4LjYyMjE0LCA4My41NDkwNV0sIFstMzUuMDg3ODcsIDgzLjY0NTEzXSwgWy0yNy4xMDA0NiwgODMuNTE5NjZdLCBbLTIwLjg0NTM5LCA4Mi43MjY2OV0sIFstMjIuNjkxODIsIDgyLjM0MTY1XSwgWy0yNi41MTc1MywgODIuMjk3NjVdLCBbLTMxLjksIDgyLjJdLCBbLTMxLjM5NjQ2LCA4Mi4wMjE1NF0sIFstMjcuODU2NjYsIDgyLjEzMTc4XSwgWy0yNC44NDQ0OCwgODEuNzg2OTddLCBbLTIyLjkwMzI4LCA4Mi4wOTMxN10sIFstMjIuMDcxNzUsIDgxLjczNDQ5XSwgWy0yMy4xNjk2MSwgODEuMTUyNzFdLCBbLTIwLjYyMzYzLCA4MS41MjQ2Ml0sIFstMTUuNzY4MTgsIDgxLjkxMjQ1XSwgWy0xMi43NzAxOCwgODEuNzE4ODVdLCBbLTEyLjIwODU1LCA4MS4yOTE1NF0sIFstMTYuMjg1MzMsIDgwLjU4MDA0XSwgWy0xNi44NSwgODAuMzVdLCBbLTIwLjA0NjI0LCA4MC4xNzcwOF0sIFstMTcuNzMwMzUsIDgwLjEyOTEyXSwgWy0xOC45LCA3OS40XSwgWy0xOS43MDQ5OSwgNzguNzUxMjhdLCBbLTE5LjY3MzUzLCA3Ny42Mzg1OV0sIFstMTguNDcyODUsIDc2Ljk4NTY1XSwgWy0yMC4wMzUwMywgNzYuOTQ0MzRdLCBbLTIxLjY3OTQ0LCA3Ni42Mjc5NV0sIFstMTkuODM0MDcsIDc2LjA5ODA4XSwgWy0xOS41OTg5NiwgNzUuMjQ4MzhdLCBbLTIwLjY2ODE4LCA3NS4xNTU4NV0sIFstMTkuMzcyODEsIDc0LjI5NTYxXSwgWy0yMS41OTQyMiwgNzQuMjIzODJdLCBbLTIwLjQzNDU0LCA3My44MTcxM10sIFstMjAuNzYyMzQsIDczLjQ2NDM2XSwgWy0yMi4xNzIyMSwgNzMuMzA5NTVdLCBbLTIzLjU2NTkzLCA3My4zMDY2M10sIFstMjIuMzEzMTEsIDcyLjYyOTI4XSwgWy0yMi4yOTk1NCwgNzIuMTg0MDldLCBbLTI0LjI3ODM0LCA3Mi41OTc4OF0sIFstMjQuNzkyOTYsIDcyLjMzMDJdLCBbLTIzLjQ0Mjk2LCA3Mi4wODAxNl0sIFstMjIuMTMyODEsIDcxLjQ2ODk4XSwgWy0yMS43NTM1NiwgNzAuNjYzNjldLCBbLTIzLjUzNjAzLCA3MC40NzFdLCBbLTI0LjMwNzAyLCA3MC44NTY0OV0sIFstMjUuNTQzNDEsIDcxLjQzMDk0XSwgWy0yNS4yMDEzNSwgNzAuNzUyMjZdLCBbLTI2LjM2Mjc2LCA3MC4yMjY0Nl0sIFstMjMuNzI3NDIsIDcwLjE4NDAxXSwgWy0yMi4zNDkwMiwgNzAuMTI5NDZdLCBbLTI1LjAyOTI3LCA2OS4yNTg4XSwgWy0yNy43NDczNywgNjguNDcwNDZdLCBbLTMwLjY3MzcxLCA2OC4xMjUwM10sIFstMzEuNzc2NjUsIDY4LjEyMDc4XSwgWy0zMi44MTEwNSwgNjcuNzM1NDddLCBbLTM0LjIwMTk2LCA2Ni42Nzk3NF0sIFstMzYuMzUyODQsIDY1Ljk3ODldLCBbLTM3LjA0Mzc4LCA2NS45Mzc2OF0sIFstMzguMzc1MDUsIDY1LjY5MjEzXSwgWy0zOS44MTIyMiwgNjUuNDU4NDhdLCBbLTQwLjY2ODk5LCA2NC44Mzk5N10sIFstNDAuNjgyODEsIDY0LjEzOTAyXSwgWy00MS4xODg3LCA2My40ODI0Nl0sIFstNDIuODE5MzgsIDYyLjY4MjMzXSwgWy00Mi40MTY2NiwgNjEuOTAwOTNdLCBbLTQyLjg2NjE5LCA2MS4wNzQwNF0sIFstNDMuMzc4NCwgNjAuMDk3NzJdLCBbLTQ0Ljc4NzUsIDYwLjAzNjc2XSwgWy00Ni4yNjM2NCwgNjAuODUzMjhdLCBbLTQ4LjI2Mjk0LCA2MC44NTg0M10sIFstNDkuMjMzMDgsIDYxLjQwNjgxXSwgWy00OS45MDAzOSwgNjIuMzgzMzZdLCBbLTUxLjYzMzI1LCA2My42MjY5MV0sIFstNTIuMTQwMTQsIDY0LjI3ODQyXSwgWy01Mi4yNzY1OSwgNjUuMTc2N10sIFstNTMuNjYxNjYsIDY2LjA5OTU3XSwgWy01My4zMDE2MSwgNjYuODM2NV0sIFstNTMuOTY5MTEsIDY3LjE4ODk5XSwgWy01Mi45ODA0LCA2OC4zNTc1OV0sIFstNTEuNDc1MzYsIDY4LjcyOTU4XSwgWy01MS4wODA0MSwgNjkuMTQ3ODFdLCBbLTUwLjg3MTIyLCA2OS45MjkxXSwgWy01Mi4wMTM1ODUsIDY5LjU3NDkyNV0sIFstNTIuNTU3OTIsIDY5LjQyNjE2XSwgWy01My40NTYyOSwgNjkuMjgzNjI1XSwgWy01NC42ODMzNiwgNjkuNjEwMDNdLCBbLTU0Ljc1MDAxLCA3MC4yODkzMl0sIFstNTQuMzU4ODQsIDcwLjgyMTMxNV0sIFstNTMuNDMxMzE1LCA3MC44MzU3NTVdLCBbLTUxLjM5MDE0LCA3MC41Njk3OF0sIFstNTMuMTA5MzcsIDcxLjIwNDg1XSwgWy01NC4wMDQyMiwgNzEuNTQ3MTldLCBbLTU1LCA3MS40MDY1MzddLCBbLTU1LjgzNDY4LCA3MS42NTQ0NF0sIFstNTQuNzE4MTksIDcyLjU4NjI1XSwgWy01NS4zMjYzNCwgNzIuOTU4NjFdLCBbLTU2LjEyMDAzLCA3My42NDk3N10sIFstNTcuMzIzNjMsIDc0LjcxMDI2XSwgWy01OC41OTY3OSwgNzUuMDk4NjFdLCBbLTU4LjU4NTE2LCA3NS41MTcyN10sIFstNjEuMjY4NjEsIDc2LjEwMjM4XSwgWy02My4zOTE2NSwgNzYuMTc1Ml0sIFstNjYuMDY0MjcsIDc2LjEzNDg2XSwgWy02OC41MDQzOCwgNzYuMDYxNDFdLCBbLTY5LjY2NDg1LCA3Ni4zNzk3NV0sIFstNzEuNDAyNTcsIDc3LjAwODU3XSwgWy02OC43NzY3MSwgNzcuMzIzMTJdLCBbLTY2Ljc2Mzk3LCA3Ny4zNzU5NV0sIFstNzEuMDQyOTMsIDc3LjYzNTk1XSwgWy03My4yOTcsIDc4LjA0NDE5XSwgWy03My4xNTkzOCwgNzguNDMyNzFdLCBbLTY5LjM3MzQ1LCA3OC45MTM4OF0sIFstNjUuNzEwNywgNzkuMzk0MzZdLCBbLTY1LjMyMzksIDc5Ljc1ODE0XSwgWy02OC4wMjI5OCwgODAuMTE3MjFdLCBbLTY3LjE1MTI5LCA4MC41MTU4Ml0sIFstNjMuNjg5MjUsIDgxLjIxMzk2XSwgWy02Mi4yMzQ0NCwgODEuMzIxMV0sIFstNjIuNjUxMTYsIDgxLjc3MDQyXSwgWy02MC4yODI0OSwgODIuMDMzNjNdLCBbLTU3LjIwNzQ0LCA4Mi4xOTA3NF0sIFstNTQuMTM0NDIsIDgyLjE5OTYyXSwgWy01My4wNDMyOCwgODEuODg4MzNdLCBbLTUwLjM5MDYxLCA4Mi40Mzg4M10sIFstNDguMDAzODYsIDgyLjA2NDgxXSwgWy00Ni41OTk4NCwgODEuOTg1OTQ1XSwgWy00NC41MjMsIDgxLjY2MDddLCBbLTQ2LjkwMDcsIDgyLjE5OTc5XSwgWy00Ni43NjM3OSwgODIuNjI3OTZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkdSTCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR3JlZW5sYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stOTAuMDk1NTU1LCAxMy43MzUzMzhdLCBbLTkwLjYwODYyNCwgMTMuOTA5NzcxXSwgWy05MS4yMzI0MSwgMTMuOTI3ODMyXSwgWy05MS42ODk3NDcsIDE0LjEyNjIxOF0sIFstOTIuMjI3NzUsIDE0LjUzODgyOV0sIFstOTIuMjAzMjMsIDE0LjgzMDEwM10sIFstOTIuMDg3MjE2LCAxNS4wNjQ1ODVdLCBbLTkyLjIyOTI0OSwgMTUuMjUxNDQ3XSwgWy05MS43NDc5NiwgMTYuMDY2NTY1XSwgWy05MC40NjQ0NzMsIDE2LjA2OTU2Ml0sIFstOTAuNDM4ODY3LCAxNi40MTAxMV0sIFstOTAuNjAwODQ3LCAxNi40NzA3NzhdLCBbLTkwLjcxMTgyMiwgMTYuNjg3NDgzXSwgWy05MS4wODE2NywgMTYuOTE4NDc3XSwgWy05MS40NTM5MjEsIDE3LjI1MjE3N10sIFstOTEuMDAyMjY5LCAxNy4yNTQ2NThdLCBbLTkxLjAwMTUyLCAxNy44MTc1OTVdLCBbLTkwLjA2NzkzNCwgMTcuODE5MzI2XSwgWy04OS4xNDMwOCwgMTcuODA4MzE5XSwgWy04OS4xNTA4MDYsIDE3LjAxNTU3N10sIFstODkuMjI5MTIyLCAxNS44ODY5MzhdLCBbLTg4LjkzMDYxMywgMTUuODg3MjczXSwgWy04OC42MDQ1ODYsIDE1LjcwNjM4XSwgWy04OC41MTgzNjQsIDE1Ljg1NTM4OV0sIFstODguMjI1MDIzLCAxNS43Mjc3MjJdLCBbLTg4LjY4MDY4LCAxNS4zNDYyNDddLCBbLTg5LjE1NDgxMSwgMTUuMDY2NDE5XSwgWy04OS4yMjUyMiwgMTQuODc0Mjg2XSwgWy04OS4xNDU1MzUsIDE0LjY3ODAxOV0sIFstODkuMzUzMzI2LCAxNC40MjQxMzNdLCBbLTg5LjU4NzM0MywgMTQuMzYyNTg2XSwgWy04OS41MzQyMTksIDE0LjI0NDgxNl0sIFstODkuNzIxOTM0LCAxNC4xMzQyMjhdLCBbLTkwLjA2NDY3OCwgMTMuODgxOTddLCBbLTkwLjA5NTU1NSwgMTMuNzM1MzM4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHVE0iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1YXRlbWFsYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTU5Ljc1ODI4NSwgOC4zNjcwMzVdLCBbLTU5LjEwMTY4NCwgNy45OTkyMDJdLCBbLTU4LjQ4Mjk2MiwgNy4zNDc2OTFdLCBbLTU4LjQ1NDg3NiwgNi44MzI3ODddLCBbLTU4LjA3ODEwMywgNi44MDkwOTRdLCBbLTU3LjU0MjIxOSwgNi4zMjEyNjhdLCBbLTU3LjE0NzQzNiwgNS45NzMxNV0sIFstNTcuMzA3MjQ2LCA1LjA3MzU2N10sIFstNTcuOTE0Mjg5LCA0LjgxMjYyNl0sIFstNTcuODYwMjEsIDQuNTc2ODAxXSwgWy01OC4wNDQ2OTQsIDQuMDYwODY0XSwgWy01Ny42MDE1NjksIDMuMzM0NjU1XSwgWy01Ny4yODE0MzMsIDMuMzMzNDkyXSwgWy01Ny4xNTAwOTgsIDIuNzY4OTI3XSwgWy01Ni41MzkzODYsIDEuODk5NTIzXSwgWy01Ni43ODI3MDQsIDEuODYzNzExXSwgWy01Ny4zMzU4MjMsIDEuOTQ4NTM4XSwgWy01Ny42NjA5NzEsIDEuNjgyNTg1XSwgWy01OC4xMTM0NSwgMS41MDcxOTVdLCBbLTU4LjQyOTQ3NywgMS40NjM5NDJdLCBbLTU4LjU0MDAxMywgMS4yNjgwODhdLCBbLTU5LjAzMDg2MiwgMS4zMTc2OThdLCBbLTU5LjY0NjA0NCwgMS43ODY4OTRdLCBbLTU5LjcxODU0NiwgMi4yNDk2M10sIFstNTkuOTc0NTI1LCAyLjc1NTIzM10sIFstNTkuODE1NDEzLCAzLjYwNjQ5OV0sIFstNTkuNTM4MDQsIDMuOTU4ODAzXSwgWy01OS43Njc0MDYsIDQuNDIzNTAzXSwgWy02MC4xMTEwMDIsIDQuNTc0OTY3XSwgWy01OS45ODA5NTksIDUuMDE0MDYxXSwgWy02MC4yMTM2ODMsIDUuMjQ0NDg2XSwgWy02MC43MzM1NzQsIDUuMjAwMjc3XSwgWy02MS40MTAzMDMsIDUuOTU5MDY4XSwgWy02MS4xMzk0MTUsIDYuMjM0Mjk3XSwgWy02MS4xNTkzMzYsIDYuNjk2MDc3XSwgWy02MC41NDM5OTksIDYuODU2NTg0XSwgWy02MC4yOTU2NjgsIDcuMDQzOTExXSwgWy02MC42Mzc5NzMsIDcuNDE1XSwgWy02MC41NTA1ODgsIDcuNzc5NjAzXSwgWy01OS43NTgyODUsIDguMzY3MDM1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHVVkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkd1eWFuYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTg3LjMxNjY1NCwgMTIuOTg0Njg2XSwgWy04Ny40ODk0MDksIDEzLjI5NzUzNV0sIFstODcuNzkzMTExLCAxMy4zODQ0OF0sIFstODcuNzIzNTAzLCAxMy43ODUwNV0sIFstODcuODU5NTE1LCAxMy44OTMzMTJdLCBbLTg4LjA2NTM0MywgMTMuOTY0NjI2XSwgWy04OC41MDM5OTgsIDEzLjg0NTQ4Nl0sIFstODguNTQxMjMxLCAxMy45ODAxNTVdLCBbLTg4Ljg0MzA3MywgMTQuMTQwNTA3XSwgWy04OS4wNTg1MTIsIDE0LjM0MDAyOV0sIFstODkuMzUzMzI2LCAxNC40MjQxMzNdLCBbLTg5LjE0NTUzNSwgMTQuNjc4MDE5XSwgWy04OS4yMjUyMiwgMTQuODc0Mjg2XSwgWy04OS4xNTQ4MTEsIDE1LjA2NjQxOV0sIFstODguNjgwNjgsIDE1LjM0NjI0N10sIFstODguMjI1MDIzLCAxNS43Mjc3MjJdLCBbLTg4LjEyMTE1MywgMTUuNjg4NjU1XSwgWy04Ny45MDE4MTMsIDE1Ljg2NDQ1OF0sIFstODcuNjE1NjgsIDE1Ljg3ODc5OV0sIFstODcuNTIyOTIxLCAxNS43OTcyNzldLCBbLTg3LjM2Nzc2MiwgMTUuODQ2OTRdLCBbLTg2LjkwMzE5MSwgMTUuNzU2NzEzXSwgWy04Ni40NDA5NDYsIDE1Ljc4MjgzNV0sIFstODYuMTE5MjM0LCAxNS44OTM0NDldLCBbLTg2LjAwMTk1NCwgMTYuMDA1NDA2XSwgWy04NS42ODMzMTcsIDE1Ljk1MzY1Ml0sIFstODUuNDQ0MDA0LCAxNS44ODU3NDldLCBbLTg1LjE4MjQ0NCwgMTUuOTA5MTU4XSwgWy04NC45ODM3MjIsIDE1Ljk5NTkyM10sIFstODQuNTI2OTgsIDE1Ljg1NzIyNF0sIFstODQuMzY4MjU2LCAxNS44MzUxNThdLCBbLTg0LjA2MzA1NSwgMTUuNjQ4MjQ0XSwgWy04My43NzM5NzcsIDE1LjQyNDA3Ml0sIFstODMuNDEwMzgxLCAxNS4yNzA5MDNdLCBbLTgzLjE0NzIxOSwgMTQuOTk1ODI5XSwgWy04My40ODk5ODksIDE1LjAxNjI2N10sIFstODMuNjI4NTg1LCAxNC44ODAwNzRdLCBbLTgzLjk3NTcyMSwgMTQuNzQ5NDM2XSwgWy04NC4yMjgzNDIsIDE0Ljc0ODc2NF0sIFstODQuNDQ5MzM2LCAxNC42MjE2MTRdLCBbLTg0LjY0OTU4MiwgMTQuNjY2ODA1XSwgWy04NC44MjAwMzcsIDE0LjgxOTU4N10sIFstODQuOTI0NTAxLCAxNC43OTA0OTNdLCBbLTg1LjA1Mjc4NywgMTQuNTUxNTQxXSwgWy04NS4xNDg3NTEsIDE0LjU2MDE5N10sIFstODUuMTY1MzY1LCAxNC4zNTQzN10sIFstODUuNTE0NDEzLCAxNC4wNzkwMTJdLCBbLTg1LjY5ODY2NSwgMTMuOTYwMDc4XSwgWy04NS44MDEyOTUsIDEzLjgzNjA1NV0sIFstODYuMDk2MjY0LCAxNC4wMzgxODddLCBbLTg2LjMxMjE0MiwgMTMuNzcxMzU2XSwgWy04Ni41MjA3MDgsIDEzLjc3ODQ4N10sIFstODYuNzU1MDg3LCAxMy43NTQ4NDVdLCBbLTg2LjczMzgyMiwgMTMuMjYzMDkzXSwgWy04Ni44ODA1NTcsIDEzLjI1NDIwNF0sIFstODcuMDA1NzY5LCAxMy4wMjU3OTRdLCBbLTg3LjMxNjY1NCwgMTIuOTg0Njg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJITkQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkhvbmR1cmFzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxOC44Mjk4MzgsIDQ1LjkwODg3OF0sIFsxOS4wNzI3NjksIDQ1LjUyMTUxMV0sIFsxOS4zOTA0NzYsIDQ1LjIzNjUxNl0sIFsxOS4wMDU0ODYsIDQ0Ljg2MDIzNF0sIFsxOC41NTMyMTQsIDQ1LjA4MTU5XSwgWzE3Ljg2MTc4MywgNDUuMDY3NzRdLCBbMTcuMDAyMTQ2LCA0NS4yMzM3NzddLCBbMTYuNTM0OTM5LCA0NS4yMTE2MDhdLCBbMTYuMzE4MTU3LCA0NS4wMDQxMjddLCBbMTUuOTU5MzY3LCA0NS4yMzM3NzddLCBbMTUuNzUwMDI2LCA0NC44MTg3MTJdLCBbMTYuMjM5NjYsIDQ0LjM1MTE0M10sIFsxNi40NTY0NDMsIDQ0LjA0MTI0XSwgWzE2LjkxNjE1NiwgNDMuNjY3NzIyXSwgWzE3LjI5NzM3MywgNDMuNDQ2MzQxXSwgWzE3LjY3NDkyMiwgNDMuMDI4NTYzXSwgWzE4LjU2LCA0Mi42NV0sIFsxOC40NTAwMTYsIDQyLjQ3OTk5MV0sIFsxNy41MDk5NywgNDIuODQ5OTk1XSwgWzE2LjkzMDAwNiwgNDMuMjA5OTk4XSwgWzE2LjAxNTM4NSwgNDMuNTA3MjE1XSwgWzE1LjE3NDQ1NCwgNDQuMjQzMTkxXSwgWzE1LjM3NjI1LCA0NC4zMTc5MTVdLCBbMTQuOTIwMzA5LCA0NC43Mzg0ODRdLCBbMTQuOTAxNjAyLCA0NS4wNzYwNl0sIFsxNC4yNTg3NDgsIDQ1LjIzMzc3N10sIFsxMy45NTIyNTUsIDQ0LjgwMjEyNF0sIFsxMy42NTY5NzYsIDQ1LjEzNjkzNV0sIFsxMy42Nzk0MDMsIDQ1LjQ4NDE0OV0sIFsxMy43MTUwNiwgNDUuNTAwMzI0XSwgWzE0LjQxMTk2OCwgNDUuNDY2MTY2XSwgWzE0LjU5NTEwOSwgNDUuNjM0OTQxXSwgWzE0LjkzNTI0NCwgNDUuNDcxNjk1XSwgWzE1LjMyNzY3NSwgNDUuNDUyMzE2XSwgWzE1LjMyMzk1NCwgNDUuNzMxNzgzXSwgWzE1LjY3MTUzLCA0NS44MzQxNTRdLCBbMTUuNzY4NzMzLCA0Ni4yMzgxMDhdLCBbMTYuNTY0ODA4LCA0Ni41MDM3NTFdLCBbMTYuODgyNTE1LCA0Ni4zODA2MzJdLCBbMTcuNjMwMDY2LCA0NS45NTE3NjldLCBbMTguNDU2MDYyLCA0NS43NTk0ODFdLCBbMTguODI5ODM4LCA0NS45MDg4NzhdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkhSViIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ3JvYXRpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTczLjE4OTc5MSwgMTkuOTE1Njg0XSwgWy03Mi41Nzk2NzMsIDE5Ljg3MTUwMV0sIFstNzEuNzEyMzYxLCAxOS43MTQ0NTZdLCBbLTcxLjYyNDg3MywgMTkuMTY5ODM4XSwgWy03MS43MDEzMDMsIDE4Ljc4NTQxN10sIFstNzEuOTQ1MTEyLCAxOC42MTY5XSwgWy03MS42ODc3MzgsIDE4LjMxNjY2XSwgWy03MS43MDgzMDUsIDE4LjA0NDk5N10sIFstNzIuMzcyNDc2LCAxOC4yMTQ5NjFdLCBbLTcyLjg0NDQxMSwgMTguMTQ1NjExXSwgWy03My40NTQ1NTUsIDE4LjIxNzkwNl0sIFstNzMuOTIyNDMzLCAxOC4wMzA5OTNdLCBbLTc0LjQ1ODAzNCwgMTguMzQyNTVdLCBbLTc0LjM2OTkyNSwgMTguNjY0OTA4XSwgWy03My40NDk1NDIsIDE4LjUyNjA1M10sIFstNzIuNjk0OTM3LCAxOC40NDU3OTldLCBbLTcyLjMzNDg4MiwgMTguNjY4NDIyXSwgWy03Mi43OTE2NSwgMTkuMTAxNjI1XSwgWy03Mi43ODQxMDUsIDE5LjQ4MzU5MV0sIFstNzMuNDE1MDIyLCAxOS42Mzk1NTFdLCBbLTczLjE4OTc5MSwgMTkuOTE1Njg0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJIVEkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkhhaXRpIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxNi4yMDIyOTgsIDQ2Ljg1MjM4Nl0sIFsxNi41MzQyNjgsIDQ3LjQ5NjE3MV0sIFsxNi4zNDA1ODQsIDQ3LjcxMjkwMl0sIFsxNi45MDM3NTQsIDQ3LjcxNDg2Nl0sIFsxNi45Nzk2NjcsIDQ4LjEyMzQ5N10sIFsxNy40ODg0NzMsIDQ3Ljg2NzQ2Nl0sIFsxNy44NTcxMzMsIDQ3Ljc1ODQyOV0sIFsxOC42OTY1MTMsIDQ3Ljg4MDk1NF0sIFsxOC43NzcwMjUsIDQ4LjA4MTc2OF0sIFsxOS4xNzQzNjUsIDQ4LjExMTM3OV0sIFsxOS42NjEzNjQsIDQ4LjI2NjYxNV0sIFsxOS43Njk0NzEsIDQ4LjIwMjY5MV0sIFsyMC4yMzkwNTQsIDQ4LjMyNzU2N10sIFsyMC40NzM1NjIsIDQ4LjU2Mjg1XSwgWzIwLjgwMTI5NCwgNDguNjIzODU0XSwgWzIxLjg3MjIzNiwgNDguMzE5OTcxXSwgWzIyLjA4NTYwOCwgNDguNDIyMjY0XSwgWzIyLjY0MDgyLCA0OC4xNTAyNF0sIFsyMi43MTA1MzEsIDQ3Ljg4MjE5NF0sIFsyMi4wOTk3NjgsIDQ3LjY3MjQzOV0sIFsyMS42MjY1MTUsIDQ2Ljk5NDIzOF0sIFsyMS4wMjE5NTIsIDQ2LjMxNjA4OF0sIFsyMC4yMjAxOTIsIDQ2LjEyNzQ2OV0sIFsxOS41OTYwNDUsIDQ2LjE3MTczXSwgWzE4LjgyOTgzOCwgNDUuOTA4ODc4XSwgWzE4LjQ1NjA2MiwgNDUuNzU5NDgxXSwgWzE3LjYzMDA2NiwgNDUuOTUxNzY5XSwgWzE2Ljg4MjUxNSwgNDYuMzgwNjMyXSwgWzE2LjU2NDgwOCwgNDYuNTAzNzUxXSwgWzE2LjM3MDUwNSwgNDYuODQxMzI3XSwgWzE2LjIwMjI5OCwgNDYuODUyMzg2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJIVU4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkh1bmdhcnkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxMjAuNzE1NjA5LCAtMTAuMjM5NTgxXSwgWzEyMC4yOTUwMTQsIC0xMC4yNTg2NV0sIFsxMTguOTY3ODA4LCAtOS41NTc5NjldLCBbMTE5LjkwMDMxLCAtOS4zNjEzNF0sIFsxMjAuNDI1NzU2LCAtOS42NjU5MjFdLCBbMTIwLjc3NTUwMiwgLTkuOTY5Njc1XSwgWzEyMC43MTU2MDksIC0xMC4yMzk1ODFdXV0sIFtbWzEyNC40MzU5NSwgLTEwLjE0MDAwMV0sIFsxMjMuNTc5OTgyLCAtMTAuMzU5OTg3XSwgWzEyMy40NTk5ODksIC0xMC4yMzk5OTVdLCBbMTIzLjU1MDAwOSwgLTkuOTAwMDE2XSwgWzEyMy45ODAwMDksIC05LjI5MDAyN10sIFsxMjQuOTY4NjgyLCAtOC44OTI3OV0sIFsxMjUuMDcwMDIsIC05LjA4OTk4N10sIFsxMjUuMDg4NTIsIC05LjM5MzE3M10sIFsxMjQuNDM1OTUsIC0xMC4xNDAwMDFdXV0sIFtbWzExNy45MDAwMTgsIC04LjA5NTY4MV0sIFsxMTguMjYwNjE2LCAtOC4zNjIzODNdLCBbMTE4Ljg3ODQ2LCAtOC4yODA2ODNdLCBbMTE5LjEyNjUwNywgLTguNzA1ODI1XSwgWzExNy45NzA0MDIsIC04LjkwNjYzOV0sIFsxMTcuMjc3NzMxLCAtOS4wNDA4OTVdLCBbMTE2Ljc0MDE0MSwgLTkuMDMyOTM3XSwgWzExNy4wODM3MzcsIC04LjQ1NzE1OF0sIFsxMTcuNjMyMDI0LCAtOC40NDkzMDNdLCBbMTE3LjkwMDAxOCwgLTguMDk1NjgxXV1dLCBbW1sxMjIuOTAzNTM3LCAtOC4wOTQyMzRdLCBbMTIyLjc1Njk4MywgLTguNjQ5ODA4XSwgWzEyMS4yNTQ0OTEsIC04LjkzMzY2Nl0sIFsxMTkuOTI0MzkxLCAtOC44MTA0MThdLCBbMTE5LjkyMDkyOSwgLTguNDQ0ODU5XSwgWzEyMC43MTUwOTIsIC04LjIzNjk2NV0sIFsxMjEuMzQxNjY5LCAtOC41MzY3NF0sIFsxMjIuMDA3MzY1LCAtOC40NjA2Ml0sIFsxMjIuOTAzNTM3LCAtOC4wOTQyMzRdXV0sIFtbWzEwOC42MjM0NzksIC02Ljc3NzY3NF0sIFsxMTAuNTM5MjI3LCAtNi44NzczNThdLCBbMTEwLjc1OTU3NiwgLTYuNDY1MTg2XSwgWzExMi42MTQ4MTEsIC02Ljk0NjAzNl0sIFsxMTIuOTc4NzY4LCAtNy41OTQyMTNdLCBbMTE0LjQ3ODkzNSwgLTcuNzc2NTI4XSwgWzExNS43MDU1MjcsIC04LjM3MDgwN10sIFsxMTQuNTY0NTExLCAtOC43NTE4MTddLCBbMTEzLjQ2NDczNCwgLTguMzQ4OTQ3XSwgWzExMi41NTk2NzIsIC04LjM3NjE4MV0sIFsxMTEuNTIyMDYxLCAtOC4zMDIxMjldLCBbMTEwLjU4NjE1LCAtOC4xMjI2MDVdLCBbMTA5LjQyNzY2NywgLTcuNzQwNjY0XSwgWzEwOC42OTM2NTUsIC03LjY0MTZdLCBbMTA4LjI3Nzc2MywgLTcuNzY2NjU3XSwgWzEwNi40NTQxMDIsIC03LjM1NDldLCBbMTA2LjI4MDYyNCwgLTYuOTI0OV0sIFsxMDUuMzY1NDg2LCAtNi44NTE0MTZdLCBbMTA2LjA1MTY0NiwgLTUuODk1OTE5XSwgWzEwNy4yNjUwMDksIC01Ljk1NDk4NV0sIFsxMDguMDcyMDkxLCAtNi4zNDU3NjJdLCBbMTA4LjQ4Njg0NiwgLTYuNDIxOTg1XSwgWzEwOC42MjM0NzksIC02Ljc3NzY3NF1dXSwgW1tbMTM0LjcyNDYyNCwgLTYuMjE0NDAxXSwgWzEzNC4yMTAxMzQsIC02Ljg5NTIzOF0sIFsxMzQuMTEyNzc2LCAtNi4xNDI0NjddLCBbMTM0LjI5MDMzNiwgLTUuNzgzMDU4XSwgWzEzNC40OTk2MjUsIC01LjQ0NTA0Ml0sIFsxMzQuNzI3MDAyLCAtNS43Mzc1ODJdLCBbMTM0LjcyNDYyNCwgLTYuMjE0NDAxXV1dLCBbW1sxMjcuMjQ5MjE1LCAtMy40NTkwNjVdLCBbMTI2Ljg3NDkyMywgLTMuNzkwOTgzXSwgWzEyNi4xODM4MDIsIC0zLjYwNzM3Nl0sIFsxMjUuOTg5MDM0LCAtMy4xNzcyNzNdLCBbMTI3LjAwMDY1MSwgLTMuMTI5MzE4XSwgWzEyNy4yNDkyMTUsIC0zLjQ1OTA2NV1dXSwgW1tbMTMwLjQ3MTM0NCwgLTMuMDkzNzY0XSwgWzEzMC44MzQ4MzYsIC0zLjg1ODQ3Ml0sIFsxMjkuOTkwNTQ3LCAtMy40NDYzMDFdLCBbMTI5LjE1NTI0OSwgLTMuMzYyNjM3XSwgWzEyOC41OTA2ODQsIC0zLjQyODY3OV0sIFsxMjcuODk4ODkxLCAtMy4zOTM0MzZdLCBbMTI4LjEzNTg3OSwgLTIuODQzNjVdLCBbMTI5LjM3MDk5OCwgLTIuODAyMTU0XSwgWzEzMC40NzEzNDQsIC0zLjA5Mzc2NF1dXSwgW1tbMTM0LjE0MzM2OCwgLTEuMTUxODY3XSwgWzEzNC40MjI2MjcsIC0yLjc2OTE4NV0sIFsxMzUuNDU3NjAzLCAtMy4zNjc3NTNdLCBbMTM2LjI5MzMxNCwgLTIuMzA3MDQyXSwgWzEzNy40NDA3MzgsIC0xLjcwMzUxM10sIFsxMzguMzI5NzI3LCAtMS43MDI2ODZdLCBbMTM5LjE4NDkyMSwgLTIuMDUxMjk2XSwgWzEzOS45MjY2ODQsIC0yLjQwOTA1Ml0sIFsxNDEuMDAwMjEsIC0yLjYwMDE1MV0sIFsxNDEuMDE3MDU3LCAtNS44NTkwMjJdLCBbMTQxLjAzMzg1MiwgLTkuMTE3ODkzXSwgWzE0MC4xNDM0MTUsIC04LjI5NzE2OF0sIFsxMzkuMTI3NzY3LCAtOC4wOTYwNDNdLCBbMTM4Ljg4MTQ3NywgLTguMzgwOTM1XSwgWzEzNy42MTQ0NzQsIC04LjQxMTY4M10sIFsxMzguMDM5MDk5LCAtNy41OTc4ODJdLCBbMTM4LjY2ODYyMSwgLTcuMzIwMjI1XSwgWzEzOC40MDc5MTQsIC02LjIzMjg0OV0sIFsxMzcuOTI3ODQsIC01LjM5MzM2Nl0sIFsxMzUuOTg5MjUsIC00LjU0NjU0NF0sIFsxMzUuMTY0NTk4LCAtNC40NjI5MzFdLCBbMTMzLjY2Mjg4LCAtMy41Mzg4NTNdLCBbMTMzLjM2NzcwNSwgLTQuMDI0ODE5XSwgWzEzMi45ODM5NTYsIC00LjExMjk3OV0sIFsxMzIuNzU2OTQxLCAtMy43NDYyODNdLCBbMTMyLjc1Mzc4OSwgLTMuMzExNzg3XSwgWzEzMS45ODk4MDQsIC0yLjgyMDU1MV0sIFsxMzMuMDY2ODQ1LCAtMi40NjA0MThdLCBbMTMzLjc4MDAzMSwgLTIuNDc5ODQ4XSwgWzEzMy42OTYyMTIsIC0yLjIxNDU0Ml0sIFsxMzIuMjMyMzczLCAtMi4yMTI1MjZdLCBbMTMxLjgzNjIyMiwgLTEuNjE3MTYyXSwgWzEzMC45NDI4NCwgLTEuNDMyNTIyXSwgWzEzMC41MTk1NTgsIC0wLjkzNzcyXSwgWzEzMS44Njc1MzgsIC0wLjY5NTQ2MV0sIFsxMzIuMzgwMTE2LCAtMC4zNjk1MzhdLCBbMTMzLjk4NTU0OCwgLTAuNzgwMjFdLCBbMTM0LjE0MzM2OCwgLTEuMTUxODY3XV1dLCBbW1sxMjUuMjQwNTAxLCAxLjQxOTgzNl0sIFsxMjQuNDM3MDM1LCAwLjQyNzg4MV0sIFsxMjMuNjg1NTA1LCAwLjIzNTU5M10sIFsxMjIuNzIzMDgzLCAwLjQzMTEzN10sIFsxMjEuMDU2NzI1LCAwLjM4MTIxN10sIFsxMjAuMTgzMDgzLCAwLjIzNzI0N10sIFsxMjAuMDQwODcsIC0wLjUxOTY1OF0sIFsxMjAuOTM1OTA1LCAtMS40MDg5MDZdLCBbMTIxLjQ3NTgyMSwgLTAuOTU1OTYyXSwgWzEyMy4zNDA1NjUsIC0wLjYxNTY3M10sIFsxMjMuMjU4Mzk5LCAtMS4wNzYyMTNdLCBbMTIyLjgyMjcxNSwgLTAuOTMwOTUxXSwgWzEyMi4zODg1MywgLTEuNTE2ODU4XSwgWzEyMS41MDgyNzQsIC0xLjkwNDQ4M10sIFsxMjIuNDU0NTcyLCAtMy4xODYwNThdLCBbMTIyLjI3MTg5NiwgLTMuNTI5NV0sIFsxMjMuMTcwOTYzLCAtNC42ODM2OTNdLCBbMTIzLjE2MjMzMywgLTUuMzQwNjA0XSwgWzEyMi42Mjg1MTUsIC01LjYzNDU5MV0sIFsxMjIuMjM2Mzk0LCAtNS4yODI5MzNdLCBbMTIyLjcxOTU2OSwgLTQuNDY0MTcyXSwgWzEyMS43MzgyMzQsIC00Ljg1MTMzMV0sIFsxMjEuNDg5NDYzLCAtNC41NzQ1NTNdLCBbMTIxLjYxOTE3MSwgLTQuMTg4NDc4XSwgWzEyMC44OTgxODIsIC0zLjYwMjEwNV0sIFsxMjAuOTcyMzg5LCAtMi42Mjc2NDNdLCBbMTIwLjMwNTQ1MywgLTIuOTMxNjA0XSwgWzEyMC4zOTAwNDcsIC00LjA5NzU3OV0sIFsxMjAuNDMwNzE3LCAtNS41MjgyNDFdLCBbMTE5Ljc5NjU0MywgLTUuNjczNF0sIFsxMTkuMzY2OTA2LCAtNS4zNzk4NzhdLCBbMTE5LjY1MzYwNiwgLTQuNDU5NDE3XSwgWzExOS40OTg4MzUsIC0zLjQ5NDQxMl0sIFsxMTkuMDc4MzQ0LCAtMy40ODcwMjJdLCBbMTE4Ljc2Nzc2OSwgLTIuODAxOTk5XSwgWzExOS4xODA5NzQsIC0yLjE0NzEwNF0sIFsxMTkuMzIzMzk0LCAtMS4zNTMxNDddLCBbMTE5LjgyNTk5OSwgMC4xNTQyNTRdLCBbMTIwLjAzNTcwMiwgMC41NjY0NzddLCBbMTIwLjg4NTc3OSwgMS4zMDkyMjNdLCBbMTIxLjY2NjgxNywgMS4wMTM5NDRdLCBbMTIyLjkyNzU2NywgMC44NzUxOTJdLCBbMTI0LjA3NzUyMiwgMC45MTcxMDJdLCBbMTI1LjA2NTk4OSwgMS42NDMyNTldLCBbMTI1LjI0MDUwMSwgMS40MTk4MzZdXV0sIFtbWzEyOC42ODgyNDksIDEuMTMyMzg2XSwgWzEyOC42MzU5NTIsIDAuMjU4NDg2XSwgWzEyOC4xMjAxNywgMC4zNTY0MTNdLCBbMTI3Ljk2ODAzNCwgLTAuMjUyMDc3XSwgWzEyOC4zNzk5OTksIC0wLjc4MDAwNF0sIFsxMjguMTAwMDE2LCAtMC44OTk5OTZdLCBbMTI3LjY5NjQ3NSwgLTAuMjY2NTk4XSwgWzEyNy4zOTk0OSwgMS4wMTE3MjJdLCBbMTI3LjYwMDUxMiwgMS44MTA2OTFdLCBbMTI3LjkzMjM3OCwgMi4xNzQ1OTZdLCBbMTI4LjAwNDE1NiwgMS42Mjg1MzFdLCBbMTI4LjU5NDU1OSwgMS41NDA4MTFdLCBbMTI4LjY4ODI0OSwgMS4xMzIzODZdXV0sIFtbWzExNy44NzU2MjcsIDEuODI3NjQxXSwgWzExOC45OTY3NDcsIDAuOTAyMjE5XSwgWzExNy44MTE4NTgsIDAuNzg0MjQyXSwgWzExNy40NzgzMzksIDAuMTAyNDc1XSwgWzExNy41MjE2NDQsIC0wLjgwMzcyM10sIFsxMTYuNTYwMDQ4LCAtMS40ODc2NjFdLCBbMTE2LjUzMzc5NywgLTIuNDgzNTE3XSwgWzExNi4xNDgwODQsIC00LjAxMjcyNl0sIFsxMTYuMDAwODU4LCAtMy42NTcwMzddLCBbMTE0Ljg2NDgwMywgLTQuMTA2OTg0XSwgWzExNC40Njg2NTIsIC0zLjQ5NTcwNF0sIFsxMTMuNzU1NjcyLCAtMy40MzkxN10sIFsxMTMuMjU2OTk0LCAtMy4xMTg3NzZdLCBbMTEyLjA2ODEyNiwgLTMuNDc4MzkyXSwgWzExMS43MDMyOTEsIC0yLjk5NDQ0Ml0sIFsxMTEuMDQ4MjQsIC0zLjA0OTQyNl0sIFsxMTAuMjIzODQ2LCAtMi45MzQwMzJdLCBbMTEwLjA3MDkzNiwgLTEuNTkyODc0XSwgWzEwOS41NzE5NDgsIC0xLjMxNDkwN10sIFsxMDkuMDkxODc0LCAtMC40NTk1MDddLCBbMTA4Ljk1MjY1OCwgMC40MTUzNzVdLCBbMTA5LjA2OTEzNiwgMS4zNDE5MzRdLCBbMTA5LjY2MzI2LCAyLjAwNjQ2N10sIFsxMDkuODMwMjI3LCAxLjMzODEzNl0sIFsxMTAuNTE0MDYxLCAwLjc3MzEzMV0sIFsxMTEuMTU5MTM4LCAwLjk3NjQ3OF0sIFsxMTEuNzk3NTQ4LCAwLjkwNDQ0MV0sIFsxMTIuMzgwMjUyLCAxLjQxMDEyMV0sIFsxMTIuODU5ODA5LCAxLjQ5Nzc5XSwgWzExMy44MDU4NSwgMS4yMTc1NDldLCBbMTE0LjYyMTM1NSwgMS40MzA2ODhdLCBbMTE1LjEzNDAzNywgMi44MjE0ODJdLCBbMTE1LjUxOTA3OCwgMy4xNjkyMzhdLCBbMTE1Ljg2NTUxNywgNC4zMDY1NTldLCBbMTE3LjAxNTIxNCwgNC4zMDYwOTRdLCBbMTE3Ljg4MjAzNSwgNC4xMzc1NTFdLCBbMTE3LjMxMzIzMiwgMy4yMzQ0MjhdLCBbMTE4LjA0ODMzLCAyLjI4NzY5XSwgWzExNy44NzU2MjcsIDEuODI3NjQxXV1dLCBbW1sxMDUuODE3NjU1LCAtNS44NTIzNTZdLCBbMTA0LjcxMDM4NCwgLTUuODczMjg1XSwgWzEwMy44NjgyMTMsIC01LjAzNzMxNV0sIFsxMDIuNTg0MjYxLCAtNC4yMjAyNTldLCBbMTAyLjE1NjE3MywgLTMuNjE0MTQ2XSwgWzEwMS4zOTkxMTMsIC0yLjc5OTc3N10sIFsxMDAuOTAyNTAzLCAtMi4wNTAyNjJdLCBbMTAwLjE0MTk4MSwgLTAuNjUwMzQ4XSwgWzk5LjI2Mzc0LCAwLjE4MzE0Ml0sIFs5OC45NzAwMTEsIDEuMDQyODgyXSwgWzk4LjYwMTM1MSwgMS44MjM1MDddLCBbOTcuNjk5NTk4LCAyLjQ1MzE4NF0sIFs5Ny4xNzY5NDIsIDMuMzA4NzkxXSwgWzk2LjQyNDAxNywgMy44Njg4Nl0sIFs5NS4zODA4NzYsIDQuOTcwNzgyXSwgWzk1LjI5MzAyNiwgNS40Nzk4MjFdLCBbOTUuOTM2ODYzLCA1LjQzOTUxM10sIFs5Ny40ODQ4ODIsIDUuMjQ2MzIxXSwgWzk4LjM2OTE2OSwgNC4yNjgzN10sIFs5OS4xNDI1NTksIDMuNTkwMzVdLCBbOTkuNjkzOTk4LCAzLjE3NDMyOV0sIFsxMDAuNjQxNDM0LCAyLjA5OTM4MV0sIFsxMDEuNjU4MDEyLCAyLjA4MzY5N10sIFsxMDIuNDk4MjcxLCAxLjM5ODddLCBbMTAzLjA3Njg0LCAwLjU2MTM2MV0sIFsxMDMuODM4Mzk2LCAwLjEwNDU0Ml0sIFsxMDMuNDM3NjQ1LCAtMC43MTE5NDZdLCBbMTA0LjAxMDc4OSwgLTEuMDU5MjEyXSwgWzEwNC4zNjk5OTEsIC0xLjA4NDg0M10sIFsxMDQuNTM5NDksIC0xLjc4MjM3Ml0sIFsxMDQuODg3ODkzLCAtMi4zNDA0MjVdLCBbMTA1LjYyMjExMSwgLTIuNDI4ODQ0XSwgWzEwNi4xMDg1OTMsIC0zLjA2MTc3N10sIFsxMDUuODU3NDQ2LCAtNC4zMDU1MjVdLCBbMTA1LjgxNzY1NSwgLTUuODUyMzU2XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJJRE4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkluZG9uZXNpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNzcuODM3NDUxLCAzNS40OTQwMV0sIFs3OC45MTIyNjksIDM0LjMyMTkzNl0sIFs3OC44MTEwODYsIDMzLjUwNjE5OF0sIFs3OS4yMDg4OTIsIDMyLjk5NDM5NV0sIFs3OS4xNzYxMjksIDMyLjQ4Mzc4XSwgWzc4LjQ1ODQ0NiwgMzIuNjE4MTY0XSwgWzc4LjczODg5NCwgMzEuNTE1OTA2XSwgWzc5LjcyMTM2NywgMzAuODgyNzE1XSwgWzgxLjExMTI1NiwgMzAuMTgzNDgxXSwgWzgwLjQ3NjcyMSwgMjkuNzI5ODY1XSwgWzgwLjA4ODQyNSwgMjguNzk0NDddLCBbODEuMDU3MjAzLCAyOC40MTYwOTVdLCBbODEuOTk5OTg3LCAyNy45MjU0NzldLCBbODMuMzA0MjQ5LCAyNy4zNjQ1MDZdLCBbODQuNjc1MDE4LCAyNy4yMzQ5MDFdLCBbODUuMjUxNzc5LCAyNi43MjYxOThdLCBbODYuMDI0MzkzLCAyNi42MzA5ODVdLCBbODcuMjI3NDcyLCAyNi4zOTc4OThdLCBbODguMDYwMjM4LCAyNi40MTQ2MTVdLCBbODguMTc0ODA0LCAyNi44MTA0MDVdLCBbODguMDQzMTMzLCAyNy40NDU4MTldLCBbODguMTIwNDQxLCAyNy44NzY1NDJdLCBbODguNzMwMzI2LCAyOC4wODY4NjVdLCBbODguODE0MjQ4LCAyNy4yOTkzMTZdLCBbODguODM1NjQzLCAyNy4wOTg5NjZdLCBbODkuNzQ0NTI4LCAyNi43MTk0MDNdLCBbOTAuMzczMjc1LCAyNi44NzU3MjRdLCBbOTEuMjE3NTEzLCAyNi44MDg2NDhdLCBbOTIuMDMzNDg0LCAyNi44MzgzMV0sIFs5Mi4xMDM3MTIsIDI3LjQ1MjYxNF0sIFs5MS42OTY2NTcsIDI3Ljc3MTc0Ml0sIFs5Mi41MDMxMTksIDI3Ljg5Njg3Nl0sIFs5My40MTMzNDgsIDI4LjY0MDYyOV0sIFs5NC41NjU5OSwgMjkuMjc3NDM4XSwgWzk1LjQwNDgwMiwgMjkuMDMxNzE3XSwgWzk2LjExNzY3OSwgMjkuNDUyODAyXSwgWzk2LjU4NjU5MSwgMjguODMwOThdLCBbOTYuMjQ4ODMzLCAyOC40MTEwMzFdLCBbOTcuMzI3MTE0LCAyOC4yNjE1ODNdLCBbOTcuNDAyNTYxLCAyNy44ODI1MzZdLCBbOTcuMDUxOTg5LCAyNy42OTkwNTldLCBbOTcuMTMzOTk5LCAyNy4wODM3NzRdLCBbOTYuNDE5MzY2LCAyNy4yNjQ1ODldLCBbOTUuMTI0NzY4LCAyNi41NzM1NzJdLCBbOTUuMTU1MTUzLCAyNi4wMDEzMDddLCBbOTQuNjAzMjQ5LCAyNS4xNjI0OTVdLCBbOTQuNTUyNjU4LCAyNC42NzUyMzhdLCBbOTQuMTA2NzQyLCAyMy44NTA3NDFdLCBbOTMuMzI1MTg4LCAyNC4wNzg1NTZdLCBbOTMuMjg2MzI3LCAyMy4wNDM2NThdLCBbOTMuMDYwMjk0LCAyMi43MDMxMTFdLCBbOTMuMTY2MTI4LCAyMi4yNzg0Nl0sIFs5Mi42NzI3MjEsIDIyLjA0MTIzOV0sIFs5Mi4xNDYwMzUsIDIzLjYyNzQ5OV0sIFs5MS44Njk5MjgsIDIzLjYyNDM0Nl0sIFs5MS43MDY0NzUsIDIyLjk4NTI2NF0sIFs5MS4xNTg5NjMsIDIzLjUwMzUyN10sIFs5MS40Njc3MywgMjQuMDcyNjM5XSwgWzkxLjkxNTA5MywgMjQuMTMwNDE0XSwgWzkyLjM3NjIwMiwgMjQuOTc2NjkzXSwgWzkxLjc5OTU5NiwgMjUuMTQ3NDMyXSwgWzkwLjg3MjIxMSwgMjUuMTMyNjAxXSwgWzg5LjkyMDY5MywgMjUuMjY5NzVdLCBbODkuODMyNDgxLCAyNS45NjUwODJdLCBbODkuMzU1MDk0LCAyNi4wMTQ0MDddLCBbODguNTYzMDQ5LCAyNi40NDY1MjZdLCBbODguMjA5Nzg5LCAyNS43NjgwNjZdLCBbODguOTMxNTU0LCAyNS4yMzg2OTJdLCBbODguMzA2MzczLCAyNC44NjYwNzldLCBbODguMDg0NDIyLCAyNC41MDE2NTddLCBbODguNjk5OTQsIDI0LjIzMzcxNV0sIFs4OC41Mjk3NywgMjMuNjMxMTQyXSwgWzg4Ljg3NjMxMiwgMjIuODc5MTQ2XSwgWzg5LjAzMTk2MSwgMjIuMDU1NzA4XSwgWzg4Ljg4ODc2NiwgMjEuNjkwNTg4XSwgWzg4LjIwODQ5NywgMjEuNzAzMTcyXSwgWzg2Ljk3NTcwNCwgMjEuNDk1NTYyXSwgWzg3LjAzMzE2OSwgMjAuNzQzMzA4XSwgWzg2LjQ5OTM1MSwgMjAuMTUxNjM4XSwgWzg1LjA2MDI2NiwgMTkuNDc4NTc5XSwgWzgzLjk0MTAwNiwgMTguMzAyMDFdLCBbODMuMTg5MjE3LCAxNy42NzEyMjFdLCBbODIuMTkyNzkyLCAxNy4wMTY2MzZdLCBbODIuMTkxMjQyLCAxNi41NTY2NjRdLCBbODEuNjkyNzE5LCAxNi4zMTAyMTldLCBbODAuNzkxOTk5LCAxNS45NTE5NzJdLCBbODAuMzI0ODk2LCAxNS44OTkxODVdLCBbODAuMDI1MDY5LCAxNS4xMzY0MTVdLCBbODAuMjMzMjc0LCAxMy44MzU3NzFdLCBbODAuMjg2Mjk0LCAxMy4wMDYyNjFdLCBbNzkuODYyNTQ3LCAxMi4wNTYyMTVdLCBbNzkuODU3OTk5LCAxMC4zNTcyNzVdLCBbNzkuMzQwNTEyLCAxMC4zMDg4NTRdLCBbNzguODg1MzQ1LCA5LjU0NjEzNl0sIFs3OS4xODk3MiwgOS4yMTY1NDRdLCBbNzguMjc3OTQxLCA4LjkzMzA0N10sIFs3Ny45NDExNjUsIDguMjUyOTU5XSwgWzc3LjUzOTg5OCwgNy45NjU1MzVdLCBbNzYuNTkyOTc5LCA4Ljg5OTI3Nl0sIFs3Ni4xMzAwNjEsIDEwLjI5OTYzXSwgWzc1Ljc0NjQ2NywgMTEuMzA4MjUxXSwgWzc1LjM5NjEwMSwgMTEuNzgxMjQ1XSwgWzc0Ljg2NDgxNiwgMTIuNzQxOTM2XSwgWzc0LjYxNjcxNywgMTMuOTkyNTgzXSwgWzc0LjQ0Mzg1OSwgMTQuNjE3MjIyXSwgWzczLjUzNDE5OSwgMTUuOTkwNjUyXSwgWzczLjExOTkwOSwgMTcuOTI4NTddLCBbNzIuODIwOTA5LCAxOS4yMDgyMzRdLCBbNzIuODI0NDc1LCAyMC40MTk1MDNdLCBbNzIuNjMwNTMzLCAyMS4zNTYwMDldLCBbNzEuMTc1MjczLCAyMC43NTc0NDFdLCBbNzAuNDcwNDU5LCAyMC44NzczMzFdLCBbNjkuMTY0MTMsIDIyLjA4OTI5OF0sIFs2OS42NDQ5MjgsIDIyLjQ1MDc3NV0sIFs2OS4zNDk1OTcsIDIyLjg0MzE4XSwgWzY4LjE3NjY0NSwgMjMuNjkxOTY1XSwgWzY4Ljg0MjU5OSwgMjQuMzU5MTM0XSwgWzcxLjA0MzI0LCAyNC4zNTY1MjRdLCBbNzAuODQ0Njk5LCAyNS4yMTUxMDJdLCBbNzAuMjgyODczLCAyNS43MjIyMjldLCBbNzAuMTY4OTI3LCAyNi40OTE4NzJdLCBbNjkuNTE0MzkzLCAyNi45NDA5NjZdLCBbNzAuNjE2NDk2LCAyNy45ODkxOTZdLCBbNzEuNzc3NjY2LCAyNy45MTMxOF0sIFs3Mi44MjM3NTIsIDI4Ljk2MTU5Ml0sIFs3My40NTA2MzgsIDI5Ljk3NjQxM10sIFs3NC40MjEzOCwgMzAuOTc5ODE1XSwgWzc0LjQwNTkyOSwgMzEuNjkyNjM5XSwgWzc1LjI1ODY0MiwgMzIuMjcxMTA1XSwgWzc0LjQ1MTU1OSwgMzIuNzY0OV0sIFs3NC4xMDQyOTQsIDMzLjQ0MTQ3M10sIFs3My43NDk5NDgsIDM0LjMxNzY5OV0sIFs3NC4yNDAyMDMsIDM0Ljc0ODg4N10sIFs3NS43NTcwNjEsIDM0LjUwNDkyM10sIFs3Ni44NzE3MjIsIDM0LjY1MzU0NF0sIFs3Ny44Mzc0NTEsIDM1LjQ5NDAxXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJTkQiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkluZGlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2IxMDAyNiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNi4xOTc4ODUsIDUzLjg2NzU2NV0sIFstNi4wMzI5ODUsIDUzLjE1MzE2NF0sIFstNi43ODg4NTcsIDUyLjI2MDExOF0sIFstOC41NjE2MTcsIDUxLjY2OTMwMV0sIFstOS45NzcwODYsIDUxLjgyMDQ1NV0sIFstOS4xNjYyODMsIDUyLjg2NDYyOV0sIFstOS42ODg1MjUsIDUzLjg4MTM2M10sIFstOC4zMjc5ODcsIDU0LjY2NDUxOV0sIFstNy41NzIxNjgsIDU1LjEzMTYyMl0sIFstNy4zNjYwMzEsIDU0LjU5NTg0MV0sIFstNy41NzIxNjgsIDU0LjA1OTk1Nl0sIFstNi45NTM3MywgNTQuMDczNzAyXSwgWy02LjE5Nzg4NSwgNTMuODY3NTY1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUkwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyZWxhbmQiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzUzLjkyMTU5OCwgMzcuMTk4OTE4XSwgWzU0LjgwMDMwNCwgMzcuMzkyNDIxXSwgWzU1LjUxMTU3OCwgMzcuOTY0MTE3XSwgWzU2LjE4MDM3NSwgMzcuOTM1MTI3XSwgWzU2LjYxOTM2NiwgMzguMTIxMzk0XSwgWzU3LjMzMDQzNCwgMzguMDI5MjI5XSwgWzU4LjQzNjE1NCwgMzcuNTIyMzA5XSwgWzU5LjIzNDc2MiwgMzcuNDEyOTg4XSwgWzYwLjM3NzYzOCwgMzYuNTI3MzgzXSwgWzYxLjEyMzA3MSwgMzYuNDkxNTk3XSwgWzYxLjIxMDgxNywgMzUuNjUwMDcyXSwgWzYwLjgwMzE5MywgMzQuNDA0MTAyXSwgWzYwLjUyODQzLCAzMy42NzY0NDZdLCBbNjAuOTYzNywgMzMuNTI4ODMyXSwgWzYwLjUzNjA3OCwgMzIuOTgxMjY5XSwgWzYwLjg2MzY1NSwgMzIuMTgyOTJdLCBbNjAuOTQxOTQ1LCAzMS41NDgwNzVdLCBbNjEuNjk5MzE0LCAzMS4zNzk1MDZdLCBbNjEuNzgxMjIyLCAzMC43MzU4NV0sIFs2MC44NzQyNDgsIDI5LjgyOTIzOV0sIFs2MS4zNjkzMDksIDI5LjMwMzI3Nl0sIFs2MS43NzE4NjgsIDI4LjY5OTMzNF0sIFs2Mi43Mjc4MywgMjguMjU5NjQ1XSwgWzYyLjc1NTQyNiwgMjcuMzc4OTIzXSwgWzYzLjIzMzg5OCwgMjcuMjE3MDQ3XSwgWzYzLjMxNjYzMiwgMjYuNzU2NTMyXSwgWzYxLjg3NDE4NywgMjYuMjM5OTc1XSwgWzYxLjQ5NzM2MywgMjUuMDc4MjM3XSwgWzU5LjYxNjEzNCwgMjUuMzgwMTU3XSwgWzU4LjUyNTc2MSwgMjUuNjA5OTYyXSwgWzU3LjM5NzI1MSwgMjUuNzM5OTAyXSwgWzU2Ljk3MDc2NiwgMjYuOTY2MTA2XSwgWzU2LjQ5MjEzOSwgMjcuMTQzMzA1XSwgWzU1LjcyMzcxLCAyNi45NjQ2MzNdLCBbNTQuNzE1MDksIDI2LjQ4MDY1OF0sIFs1My40OTMwOTcsIDI2LjgxMjM2OV0sIFs1Mi40ODM1OTgsIDI3LjU4MDg0OV0sIFs1MS41MjA3NjMsIDI3Ljg2NTY5XSwgWzUwLjg1Mjk0OCwgMjguODE0NTIxXSwgWzUwLjExNTAwOSwgMzAuMTQ3NzczXSwgWzQ5LjU3Njg1LCAyOS45ODU3MTVdLCBbNDguOTQxMzMzLCAzMC4zMTcwOV0sIFs0OC41Njc5NzEsIDI5LjkyNjc3OF0sIFs0OC4wMTQ1NjgsIDMwLjQ1MjQ1N10sIFs0OC4wMDQ2OTgsIDMwLjk4NTEzN10sIFs0Ny42ODUyODYsIDMwLjk4NDg1M10sIFs0Ny44NDkyMDQsIDMxLjcwOTE3Nl0sIFs0Ny4zMzQ2NjEsIDMyLjQ2OTE1NV0sIFs0Ni4xMDkzNjIsIDMzLjAxNzI4N10sIFs0NS40MTY2OTEsIDMzLjk2Nzc5OF0sIFs0NS42NDg0NiwgMzQuNzQ4MTM4XSwgWzQ2LjE1MTc4OCwgMzUuMDkzMjU5XSwgWzQ2LjA3NjM0LCAzNS42NzczODNdLCBbNDUuNDIwNjE4LCAzNS45Nzc1NDZdLCBbNDQuNzcyNjcsIDM3LjE3MDQ1XSwgWzQ0LjIyNTc1NiwgMzcuOTcxNTg0XSwgWzQ0LjQyMTQwMywgMzguMjgxMjgxXSwgWzQ0LjEwOTIyNSwgMzkuNDI4MTM2XSwgWzQ0Ljc5Mzk5LCAzOS43MTMwMDNdLCBbNDQuOTUyNjg4LCAzOS4zMzU3NjVdLCBbNDUuNDU3NzIyLCAzOC44NzQxMzldLCBbNDYuMTQzNjIzLCAzOC43NDEyMDFdLCBbNDYuNTA1NzIsIDM4Ljc3MDYwNV0sIFs0Ny42ODUwNzksIDM5LjUwODM2NF0sIFs0OC4wNjAwOTUsIDM5LjU4MjIzNV0sIFs0OC4zNTU1MjksIDM5LjI4ODc2NV0sIFs0OC4wMTA3NDQsIDM4Ljc5NDAxNV0sIFs0OC42MzQzNzUsIDM4LjI3MDM3OF0sIFs0OC44ODMyNDksIDM4LjMyMDI0NV0sIFs0OS4xOTk2MTIsIDM3LjU4Mjg3NF0sIFs1MC4xNDc3NzEsIDM3LjM3NDU2N10sIFs1MC44NDIzNTQsIDM2Ljg3MjgxNF0sIFs1Mi4yNjQwMjUsIDM2LjcwMDQyMl0sIFs1My44MjU3OSwgMzYuOTY1MDMxXSwgWzUzLjkyMTU5OCwgMzcuMTk4OTE4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUk4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyYW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQ1LjQyMDYxOCwgMzUuOTc3NTQ2XSwgWzQ2LjA3NjM0LCAzNS42NzczODNdLCBbNDYuMTUxNzg4LCAzNS4wOTMyNTldLCBbNDUuNjQ4NDYsIDM0Ljc0ODEzOF0sIFs0NS40MTY2OTEsIDMzLjk2Nzc5OF0sIFs0Ni4xMDkzNjIsIDMzLjAxNzI4N10sIFs0Ny4zMzQ2NjEsIDMyLjQ2OTE1NV0sIFs0Ny44NDkyMDQsIDMxLjcwOTE3Nl0sIFs0Ny42ODUyODYsIDMwLjk4NDg1M10sIFs0OC4wMDQ2OTgsIDMwLjk4NTEzN10sIFs0OC4wMTQ1NjgsIDMwLjQ1MjQ1N10sIFs0OC41Njc5NzEsIDI5LjkyNjc3OF0sIFs0Ny45NzQ1MTksIDI5Ljk3NTgxOV0sIFs0Ny4zMDI2MjIsIDMwLjA1OTA3XSwgWzQ2LjU2ODcxMywgMjkuMDk5MDI1XSwgWzQ0LjcwOTQ5OSwgMjkuMTc4ODkxXSwgWzQxLjg4OTk4MSwgMzEuMTkwMDA5XSwgWzQwLjM5OTk5NCwgMzEuODg5OTkyXSwgWzM5LjE5NTQ2OCwgMzIuMTYxMDA5XSwgWzM4Ljc5MjM0MSwgMzMuMzc4Njg2XSwgWzQxLjAwNjE1OSwgMzQuNDE5MzcyXSwgWzQxLjM4Mzk2NSwgMzUuNjI4MzE3XSwgWzQxLjI4OTcwNywgMzYuMzU4ODE1XSwgWzQxLjgzNzA2NCwgMzYuNjA1ODU0XSwgWzQyLjM0OTU5MSwgMzcuMjI5ODczXSwgWzQyLjc3OTEyNiwgMzcuMzg1MjY0XSwgWzQzLjk0MjI1OSwgMzcuMjU2MjI4XSwgWzQ0LjI5MzQ1MiwgMzcuMDAxNTE0XSwgWzQ0Ljc3MjY5OSwgMzcuMTcwNDQ1XSwgWzQ1LjQyMDYxOCwgMzUuOTc3NTQ2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJUlEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklyYXEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0xNC41MDg2OTUsIDY2LjQ1NTg5Ml0sIFstMTQuNzM5NjM3LCA2NS44MDg3NDhdLCBbLTEzLjYwOTczMiwgNjUuMTI2NjcxXSwgWy0xNC45MDk4MzQsIDY0LjM2NDA4Ml0sIFstMTcuNzk0NDM4LCA2My42Nzg3NDldLCBbLTE4LjY1NjI0NiwgNjMuNDk2MzgzXSwgWy0xOS45NzI3NTUsIDYzLjY0MzYzNV0sIFstMjIuNzYyOTcyLCA2My45NjAxNzldLCBbLTIxLjc3ODQ4NCwgNjQuNDAyMTE2XSwgWy0yMy45NTUwNDQsIDY0Ljg5MTEzXSwgWy0yMi4xODQ0MDMsIDY1LjA4NDk2OF0sIFstMjIuMjI3NDIzLCA2NS4zNzg1OTRdLCBbLTI0LjMyNjE4NCwgNjUuNjExMTg5XSwgWy0yMy42NTA1MTUsIDY2LjI2MjUxOV0sIFstMjIuMTM0OTIyLCA2Ni40MTA0NjldLCBbLTIwLjU3NjI4NCwgNjUuNzMyMTEyXSwgWy0xOS4wNTY4NDIsIDY2LjI3NjYwMV0sIFstMTcuNzk4NjI0LCA2NS45OTM4NTNdLCBbLTE2LjE2NzgxOSwgNjYuNTI2NzkyXSwgWy0xNC41MDg2OTUsIDY2LjQ1NTg5Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiSVNMIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJJY2VsYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szNS43MTk5MTgsIDMyLjcwOTE5Ml0sIFszNS41NDU2NjUsIDMyLjM5Mzk5Ml0sIFszNS4xODM5MywgMzIuNTMyNTExXSwgWzM0Ljk3NDY0MSwgMzEuODY2NTgyXSwgWzM1LjIyNTg5MiwgMzEuNzU0MzQxXSwgWzM0Ljk3MDUwNywgMzEuNjE2Nzc4XSwgWzM0LjkyNzQwOCwgMzEuMzUzNDM1XSwgWzM1LjM5NzU2MSwgMzEuNDg5MDg2XSwgWzM1LjQyMDkxOCwgMzEuMTAwMDY2XSwgWzM0LjkyMjYwMywgMjkuNTAxMzI2XSwgWzM0LjI2NTQzMywgMzEuMjE5MzYxXSwgWzM0LjU1NjM3MiwgMzEuNTQ4ODI0XSwgWzM0LjQ4ODEwNywgMzEuNjA1NTM5XSwgWzM0Ljc1MjU4NywgMzIuMDcyOTI2XSwgWzM0Ljk1NTQxNywgMzIuODI3Mzc2XSwgWzM1LjA5ODQ1NywgMzMuMDgwNTM5XSwgWzM1LjEyNjA1MywgMzMuMDkwOV0sIFszNS40NjA3MDksIDMzLjA4OTA0XSwgWzM1LjU1Mjc5NywgMzMuMjY0Mjc1XSwgWzM1LjgyMTEwMSwgMzMuMjc3NDI2XSwgWzM1LjgzNjM5NywgMzIuODY4MTIzXSwgWzM1LjcwMDc5OCwgMzIuNzE2MDE0XSwgWzM1LjcxOTkxOCwgMzIuNzA5MTkyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJJU1IiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIklzcmFlbCIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWzE1LjUyMDM3NiwgMzguMjMxMTU1XSwgWzE1LjE2MDI0MywgMzcuNDQ0MDQ2XSwgWzE1LjMwOTg5OCwgMzcuMTM0MjE5XSwgWzE1LjA5OTk4OCwgMzYuNjE5OTg3XSwgWzE0LjMzNTIyOSwgMzYuOTk2NjMxXSwgWzEzLjgyNjczMywgMzcuMTA0NTMxXSwgWzEyLjQzMTAwNCwgMzcuNjEyOTVdLCBbMTIuNTcwOTQ0LCAzOC4xMjYzODFdLCBbMTMuNzQxMTU2LCAzOC4wMzQ5NjZdLCBbMTQuNzYxMjQ5LCAzOC4xNDM4NzRdLCBbMTUuNTIwMzc2LCAzOC4yMzExNTVdXV0sIFtbWzkuMjEwMDEyLCA0MS4yMDk5OTFdLCBbOS44MDk5NzUsIDQwLjUwMDAwOV0sIFs5LjY2OTUxOSwgMzkuMTc3Mzc2XSwgWzkuMjE0ODE4LCAzOS4yNDA0NzNdLCBbOC44MDY5MzYsIDM4LjkwNjYxOF0sIFs4LjQyODMwMiwgMzkuMTcxODQ3XSwgWzguMzg4MjUzLCA0MC4zNzgzMTFdLCBbOC4xNTk5OTgsIDQwLjk1MDAwN10sIFs4LjcwOTk5MSwgNDAuODk5OTg0XSwgWzkuMjEwMDEyLCA0MS4yMDk5OTFdXV0sIFtbWzEyLjM3NjQ4NSwgNDYuNzY3NTU5XSwgWzEzLjgwNjQ3NSwgNDYuNTA5MzA2XSwgWzEzLjY5ODExLCA0Ni4wMTY3NzhdLCBbMTMuOTM3NjMsIDQ1LjU5MTAxNl0sIFsxMy4xNDE2MDYsIDQ1LjczNjY5Ml0sIFsxMi4zMjg1ODEsIDQ1LjM4MTc3OF0sIFsxMi4zODM4NzUsIDQ0Ljg4NTM3NF0sIFsxMi4yNjE0NTMsIDQ0LjYwMDQ4Ml0sIFsxMi41ODkyMzcsIDQ0LjA5MTM2Nl0sIFsxMy41MjY5MDYsIDQzLjU4NzcyN10sIFsxNC4wMjk4MjEsIDQyLjc2MTAwOF0sIFsxNS4xNDI1NywgNDEuOTU1MTRdLCBbMTUuOTI2MTkxLCA0MS45NjEzMTVdLCBbMTYuMTY5ODk3LCA0MS43NDAyOTVdLCBbMTUuODg5MzQ2LCA0MS41NDEwODJdLCBbMTYuNzg1MDAyLCA0MS4xNzk2MDZdLCBbMTcuNTE5MTY5LCA0MC44NzcxNDNdLCBbMTguMzc2Njg3LCA0MC4zNTU2MjVdLCBbMTguNDgwMjQ3LCA0MC4xNjg4NjZdLCBbMTguMjkzMzg1LCAzOS44MTA3NzRdLCBbMTcuNzM4MzgsIDQwLjI3NzY3MV0sIFsxNi44Njk1OTYsIDQwLjQ0MjIzNV0sIFsxNi40NDg3NDMsIDM5Ljc5NTQwMV0sIFsxNy4xNzE0OSwgMzkuNDI0N10sIFsxNy4wNTI4NDEsIDM4LjkwMjg3MV0sIFsxNi42MzUwODgsIDM4Ljg0MzU3Ml0sIFsxNi4xMDA5NjEsIDM3Ljk4NTg5OV0sIFsxNS42ODQwODcsIDM3LjkwODg0OV0sIFsxNS42ODc5NjMsIDM4LjIxNDU5M10sIFsxNS44OTE5ODEsIDM4Ljc1MDk0Ml0sIFsxNi4xMDkzMzIsIDM4Ljk2NDU0N10sIFsxNS43MTg4MTQsIDM5LjU0NDA3Ml0sIFsxNS40MTM2MTMsIDQwLjA0ODM1N10sIFsxNC45OTg0OTYsIDQwLjE3Mjk0OV0sIFsxNC43MDMyNjgsIDQwLjYwNDU1XSwgWzE0LjA2MDY3MiwgNDAuNzg2MzQ4XSwgWzEzLjYyNzk4NSwgNDEuMTg4Mjg3XSwgWzEyLjg4ODA4MiwgNDEuMjUzMDldLCBbMTIuMTA2NjgzLCA0MS43MDQ1MzVdLCBbMTEuMTkxOTA2LCA0Mi4zNTU0MjVdLCBbMTAuNTExOTQ4LCA0Mi45MzE0NjNdLCBbMTAuMjAwMDI5LCA0My45MjAwMDddLCBbOS43MDI0ODgsIDQ0LjAzNjI3OV0sIFs4Ljg4ODk0NiwgNDQuMzY2MzM2XSwgWzguNDI4NTYxLCA0NC4yMzEyMjhdLCBbNy44NTA3NjcsIDQzLjc2NzE0OF0sIFs3LjQzNTE4NSwgNDMuNjkzODQ1XSwgWzcuNTQ5NTk2LCA0NC4xMjc5MDFdLCBbNy4wMDc1NjIsIDQ0LjI1NDc2N10sIFs2Ljc0OTk1NSwgNDUuMDI4NTE4XSwgWzcuMDk2NjUyLCA0NS4zMzMwOTldLCBbNi44MDIzNTUsIDQ1LjcwODU4XSwgWzYuODQzNTkzLCA0NS45OTExNDddLCBbNy4yNzM4NTEsIDQ1Ljc3Njk0OF0sIFs3Ljc1NTk5MiwgNDUuODI0NDldLCBbOC4zMTY2MywgNDYuMTYzNjQyXSwgWzguNDg5OTUyLCA0Ni4wMDUxNTFdLCBbOC45NjYzMDYsIDQ2LjAzNjkzMl0sIFs5LjE4Mjg4MiwgNDYuNDQwMjE1XSwgWzkuOTIyODM3LCA0Ni4zMTQ4OTldLCBbMTAuMzYzMzc4LCA0Ni40ODM1NzFdLCBbMTAuNDQyNzAxLCA0Ni44OTM1NDZdLCBbMTEuMDQ4NTU2LCA0Ni43NTEzNTldLCBbMTEuMTY0ODI4LCA0Ni45NDE1NzldLCBbMTIuMTUzMDg4LCA0Ny4xMTUzOTNdLCBbMTIuMzc2NDg1LCA0Ni43Njc1NTldXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIklUQSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSXRhbHkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03Ny41Njk2MDEsIDE4LjQ5MDUyNV0sIFstNzYuODk2NjE5LCAxOC40MDA4NjddLCBbLTc2LjM2NTM1OSwgMTguMTYwNzAxXSwgWy03Ni4xOTk2NTksIDE3Ljg4Njg2N10sIFstNzYuOTAyNTYxLCAxNy44NjgyMzhdLCBbLTc3LjIwNjM0MSwgMTcuNzAxMTE2XSwgWy03Ny43NjYwMjMsIDE3Ljg2MTU5N10sIFstNzguMzM3NzE5LCAxOC4yMjU5NjhdLCBbLTc4LjIxNzcyNywgMTguNDU0NTMzXSwgWy03Ny43OTczNjUsIDE4LjUyNDIxOF0sIFstNzcuNTY5NjAxLCAxOC40OTA1MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkpBTSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSmFtYWljYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMzUuNTQ1NjY1LCAzMi4zOTM5OTJdLCBbMzUuNzE5OTE4LCAzMi43MDkxOTJdLCBbMzYuODM0MDYyLCAzMi4zMTI5MzhdLCBbMzguNzkyMzQxLCAzMy4zNzg2ODZdLCBbMzkuMTk1NDY4LCAzMi4xNjEwMDldLCBbMzkuMDA0ODg2LCAzMi4wMTAyMTddLCBbMzcuMDAyMTY2LCAzMS41MDg0MTNdLCBbMzcuOTk4ODQ5LCAzMC41MDg1XSwgWzM3LjY2ODEyLCAzMC4zMzg2NjVdLCBbMzcuNTAzNTgyLCAzMC4wMDM3NzZdLCBbMzYuNzQwNTI4LCAyOS44NjUyODNdLCBbMzYuNTAxMjE0LCAyOS41MDUyNTRdLCBbMzYuMDY4OTQxLCAyOS4xOTc0OTVdLCBbMzQuOTU2MDM3LCAyOS4zNTY1NTVdLCBbMzQuOTIyNjAzLCAyOS41MDEzMjZdLCBbMzUuNDIwOTE4LCAzMS4xMDAwNjZdLCBbMzUuMzk3NTYxLCAzMS40ODkwODZdLCBbMzUuNTQ1MjUyLCAzMS43ODI1MDVdLCBbMzUuNTQ1NjY1LCAzMi4zOTM5OTJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkpPUiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSm9yZGFuIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTM0LjYzODQyOCwgMzQuMTQ5MjM0XSwgWzEzNC43NjYzNzksIDMzLjgwNjMzNV0sIFsxMzQuMjAzNDE2LCAzMy4yMDExNzhdLCBbMTMzLjc5Mjk1LCAzMy41MjE5ODVdLCBbMTMzLjI4MDI2OCwgMzMuMjg5NTddLCBbMTMzLjAxNDg1OCwgMzIuNzA0NTY3XSwgWzEzMi4zNjMxMTUsIDMyLjk4OTM4Ml0sIFsxMzIuMzcxMTc2LCAzMy40NjM2NDJdLCBbMTMyLjkyNDM3MywgMzQuMDYwMjk5XSwgWzEzMy40OTI5NjgsIDMzLjk0NDYyMV0sIFsxMzMuOTA0MTA2LCAzNC4zNjQ5MzFdLCBbMTM0LjYzODQyOCwgMzQuMTQ5MjM0XV1dLCBbW1sxNDAuOTc2Mzg4LCAzNy4xNDIwNzRdLCBbMTQwLjU5OTc3LCAzNi4zNDM5ODNdLCBbMTQwLjc3NDA3NCwgMzUuODQyODc3XSwgWzE0MC4yNTMyNzksIDM1LjEzODExNF0sIFsxMzguOTc1NTI4LCAzNC42Njc2XSwgWzEzNy4yMTc1OTksIDM0LjYwNjI4Nl0sIFsxMzUuNzkyOTgzLCAzMy40NjQ4MDVdLCBbMTM1LjEyMDk4MywgMzMuODQ5MDcxXSwgWzEzNS4wNzk0MzUsIDM0LjU5NjU0NV0sIFsxMzMuMzQwMzE2LCAzNC4zNzU5MzhdLCBbMTMyLjE1Njc3MSwgMzMuOTA0OTMzXSwgWzEzMC45ODYxNDUsIDMzLjg4NTc2MV0sIFsxMzIuMDAwMDM2LCAzMy4xNDk5OTJdLCBbMTMxLjMzMjc5LCAzMS40NTAzNTVdLCBbMTMwLjY4NjMxOCwgMzEuMDI5NTc5XSwgWzEzMC4yMDI0MiwgMzEuNDE4MjM4XSwgWzEzMC40NDc2NzYsIDMyLjMxOTQ3NV0sIFsxMjkuODE0NjkyLCAzMi42MTAzMV0sIFsxMjkuNDA4NDYzLCAzMy4yOTYwNTZdLCBbMTMwLjM1MzkzNSwgMzMuNjA0MTUxXSwgWzEzMC44Nzg0NTEsIDM0LjIzMjc0M10sIFsxMzEuODg0MjI5LCAzNC43NDk3MTRdLCBbMTMyLjYxNzY3MywgMzUuNDMzMzkzXSwgWzEzNC42MDgzMDEsIDM1LjczMTYxOF0sIFsxMzUuNjc3NTM4LCAzNS41MjcxMzRdLCBbMTM2LjcyMzgzMSwgMzcuMzA0OTg0XSwgWzEzNy4zOTA2MTIsIDM2LjgyNzM5MV0sIFsxMzguODU3NjAyLCAzNy44Mjc0ODVdLCBbMTM5LjQyNjQwNSwgMzguMjE1OTYyXSwgWzE0MC4wNTQ3OSwgMzkuNDM4ODA3XSwgWzEzOS44ODMzNzksIDQwLjU2MzMxMl0sIFsxNDAuMzA1NzgzLCA0MS4xOTUwMDVdLCBbMTQxLjM2ODk3MywgNDEuMzc4NTZdLCBbMTQxLjkxNDI2MywgMzkuOTkxNjE2XSwgWzE0MS44ODQ2MDEsIDM5LjE4MDg2NV0sIFsxNDAuOTU5NDg5LCAzOC4xNzQwMDFdLCBbMTQwLjk3NjM4OCwgMzcuMTQyMDc0XV1dLCBbW1sxNDMuOTEwMTYyLCA0NC4xNzQxXSwgWzE0NC42MTM0MjcsIDQzLjk2MDg4M10sIFsxNDUuMzIwODI1LCA0NC4zODQ3MzNdLCBbMTQ1LjU0MzEzNywgNDMuMjYyMDg4XSwgWzE0NC4wNTk2NjIsIDQyLjk4ODM1OF0sIFsxNDMuMTgzODUsIDQxLjk5NTIxNV0sIFsxNDEuNjExNDkxLCA0Mi42Nzg3OTFdLCBbMTQxLjA2NzI4NiwgNDEuNTg0NTk0XSwgWzEzOS45NTUxMDYsIDQxLjU2OTU1Nl0sIFsxMzkuODE3NTQ0LCA0Mi41NjM3NTldLCBbMTQwLjMxMjA4NywgNDMuMzMzMjczXSwgWzE0MS4zODA1NDksIDQzLjM4ODgyNV0sIFsxNDEuNjcxOTUyLCA0NC43NzIxMjVdLCBbMTQxLjk2NzY0NSwgNDUuNTUxNDgzXSwgWzE0My4xNDI4NywgNDQuNTEwMzU4XSwgWzE0My45MTAxNjIsIDQ0LjE3NDFdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkpQTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSmFwYW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzcwLjk2MjMxNSwgNDIuMjY2MTU0XSwgWzcwLjM4ODk2NSwgNDIuMDgxMzA4XSwgWzY5LjA3MDAyNywgNDEuMzg0MjQ0XSwgWzY4LjYzMjQ4MywgNDAuNjY4NjgxXSwgWzY4LjI1OTg5NiwgNDAuNjYyMzI1XSwgWzY3Ljk4NTg1NiwgNDEuMTM1OTkxXSwgWzY2LjcxNDA0NywgNDEuMTY4NDQ0XSwgWzY2LjUxMDY0OSwgNDEuOTg3NjQ0XSwgWzY2LjAyMzM5MiwgNDEuOTk0NjQ2XSwgWzY2LjA5ODAxMiwgNDIuOTk3NjZdLCBbNjQuOTAwODI0LCA0My43MjgwODFdLCBbNjMuMTg1Nzg3LCA0My42NTAwNzVdLCBbNjIuMDEzMywgNDMuNTA0NDc3XSwgWzYxLjA1ODMyLCA0NC40MDU4MTddLCBbNjAuMjM5OTcyLCA0NC43ODQwMzddLCBbNTguNjg5OTg5LCA0NS41MDAwMTRdLCBbNTguNTAzMTI3LCA0NS41ODY4MDRdLCBbNTUuOTI4OTE3LCA0NC45OTU4NThdLCBbNTUuOTY4MTkxLCA0MS4zMDg2NDJdLCBbNTUuNDU1MjUxLCA0MS4yNTk4NTldLCBbNTQuNzU1MzQ1LCA0Mi4wNDM5NzFdLCBbNTQuMDc5NDE4LCA0Mi4zMjQxMDldLCBbNTIuOTQ0MjkzLCA0Mi4xMTYwMzRdLCBbNTIuNTAyNDYsIDQxLjc4MzMxNl0sIFs1Mi40NDYzMzksIDQyLjAyNzE1MV0sIFs1Mi42OTIxMTIsIDQyLjQ0Mzg5NV0sIFs1Mi41MDE0MjYsIDQyLjc5MjI5OF0sIFs1MS4zNDI0MjcsIDQzLjEzMjk3NV0sIFs1MC44OTEyOTIsIDQ0LjAzMTAzNF0sIFs1MC4zMzkxMjksIDQ0LjI4NDAxNl0sIFs1MC4zMDU2NDMsIDQ0LjYwOTgzNl0sIFs1MS4yNzg1MDMsIDQ0LjUxNDg1NF0sIFs1MS4zMTY4OTksIDQ1LjI0NTk5OF0sIFs1Mi4xNjczOSwgNDUuNDA4MzkxXSwgWzUzLjA0MDg3NiwgNDUuMjU5MDQ3XSwgWzUzLjIyMDg2NiwgNDYuMjM0NjQ2XSwgWzUzLjA0MjczNywgNDYuODUzMDA2XSwgWzUyLjA0MjAyMywgNDYuODA0NjM3XSwgWzUxLjE5MTk0NSwgNDcuMDQ4NzA1XSwgWzUwLjAzNDA4MywgNDYuNjA4OTldLCBbNDkuMTAxMTYsIDQ2LjM5OTMzXSwgWzQ4LjU5MzI0MSwgNDYuNTYxMDM0XSwgWzQ4LjY5NDczNCwgNDcuMDc1NjI4XSwgWzQ4LjA1NzI1MywgNDcuNzQzNzUzXSwgWzQ3LjMxNTIzMSwgNDcuNzE1ODQ3XSwgWzQ2LjQ2NjQ0NiwgNDguMzk0MTUyXSwgWzQ3LjA0MzY3MiwgNDkuMTUyMDM5XSwgWzQ2Ljc1MTU5NiwgNDkuMzU2MDA2XSwgWzQ3LjU0OTQ4LCA1MC40NTQ2OThdLCBbNDguNTc3ODQxLCA0OS44NzQ3Nl0sIFs0OC43MDIzODIsIDUwLjYwNTEyOF0sIFs1MC43NjY2NDgsIDUxLjY5Mjc2Ml0sIFs1Mi4zMjg3MjQsIDUxLjcxODY1Ml0sIFs1NC41MzI4NzgsIDUxLjAyNjI0XSwgWzU1LjcxNjk0MSwgNTAuNjIxNzE3XSwgWzU2Ljc3Nzk2MSwgNTEuMDQzNTUxXSwgWzU4LjM2MzI5MSwgNTEuMDYzNjUzXSwgWzU5LjY0MjI4MiwgNTAuNTQ1NDQyXSwgWzU5LjkzMjgwNywgNTAuODQyMTk0XSwgWzYxLjMzNzQyNCwgNTAuNzk5MDddLCBbNjEuNTg4MDAzLCA1MS4yNzI2NTldLCBbNTkuOTY3NTM0LCA1MS45NjA0Ml0sIFs2MC45MjcyNjksIDUyLjQ0NzU0OF0sIFs2MC43Mzk5OTMsIDUyLjcxOTk4Nl0sIFs2MS42OTk5ODYsIDUyLjk3OTk5Nl0sIFs2MC45NzgwNjYsIDUzLjY2NDk5M10sIFs2MS40MzY1OTEsIDU0LjAwNjI2NV0sIFs2NS4xNzg1MzQsIDU0LjM1NDIyOF0sIFs2NS42NjY4NzYsIDU0LjYwMTI2N10sIFs2OC4xNjkxLCA1NC45NzAzOTJdLCBbNjkuMDY4MTY3LCA1NS4zODUyNV0sIFs3MC44NjUyNjcsIDU1LjE2OTczNF0sIFs3MS4xODAxMzEsIDU0LjEzMzI4NV0sIFs3Mi4yMjQxNSwgNTQuMzc2NjU1XSwgWzczLjUwODUxNiwgNTQuMDM1NjE3XSwgWzczLjQyNTY3OSwgNTMuNDg5ODFdLCBbNzQuMzg0ODQ1LCA1My41NDY4NjFdLCBbNzYuODkxMSwgNTQuNDkwNTI0XSwgWzc2LjUyNTE3OSwgNTQuMTc3MDAzXSwgWzc3LjgwMDkxNiwgNTMuNDA0NDE1XSwgWzgwLjAzNTU2LCA1MC44NjQ3NTFdLCBbODAuNTY4NDQ3LCA1MS4zODgzMzZdLCBbODEuOTQ1OTg2LCA1MC44MTIxOTZdLCBbODMuMzgzMDA0LCA1MS4wNjkxODNdLCBbODMuOTM1MTE1LCA1MC44ODkyNDZdLCBbODQuNDE2Mzc3LCA1MC4zMTE0XSwgWzg1LjExNTU2LCA1MC4xMTczMDNdLCBbODUuNTQxMjcsIDQ5LjY5Mjg1OV0sIFs4Ni44MjkzNTcsIDQ5LjgyNjY3NV0sIFs4Ny4zNTk5NywgNDkuMjE0OTgxXSwgWzg2LjU5ODc3NiwgNDguNTQ5MTgyXSwgWzg1Ljc2ODIzMywgNDguNDU1NzUxXSwgWzg1LjcyMDQ4NCwgNDcuNDUyOTY5XSwgWzg1LjE2NDI5LCA0Ny4wMDA5NTZdLCBbODMuMTgwNDg0LCA0Ny4zMzAwMzFdLCBbODIuNDU4OTI2LCA0NS41Mzk2NV0sIFs4MS45NDcwNzEsIDQ1LjMxNzAyN10sIFs3OS45NjYxMDYsIDQ0LjkxNzUxN10sIFs4MC44NjYyMDYsIDQzLjE4MDM2Ml0sIFs4MC4xODAxNSwgNDIuOTIwMDY4XSwgWzgwLjI1OTk5LCA0Mi4zNDk5OTldLCBbNzkuNjQzNjQ1LCA0Mi40OTY2ODNdLCBbNzkuMTQyMTc3LCA0Mi44NTYwOTJdLCBbNzcuNjU4MzkyLCA0Mi45NjA2ODZdLCBbNzYuMDAwMzU0LCA0Mi45ODgwMjJdLCBbNzUuNjM2OTY1LCA0Mi44Nzc5XSwgWzc0LjIxMjg2NiwgNDMuMjk4MzM5XSwgWzczLjY0NTMwNCwgNDMuMDkxMjcyXSwgWzczLjQ4OTc1OCwgNDIuNTAwODk0XSwgWzcxLjg0NDYzOCwgNDIuODQ1Mzk1XSwgWzcxLjE4NjI4MSwgNDIuNzA0MjkzXSwgWzcwLjk2MjMxNSwgNDIuMjY2MTU0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJLQVoiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkthemFraHN0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQwLjk5MywgLTAuODU4MjldLCBbNDEuNTg1MTMsIC0xLjY4MzI1XSwgWzQwLjg4NDc3LCAtMi4wODI1NV0sIFs0MC42Mzc4NSwgLTIuNDk5NzldLCBbNDAuMjYzMDQsIC0yLjU3MzA5XSwgWzQwLjEyMTE5LCAtMy4yNzc2OF0sIFszOS44MDAwNiwgLTMuNjgxMTZdLCBbMzkuNjA0ODksIC00LjM0NjUzXSwgWzM5LjIwMjIyLCAtNC42NzY3N10sIFszNy43NjY5LCAtMy42NzcxMl0sIFszNy42OTg2OSwgLTMuMDk2OTldLCBbMzQuMDcyNjIsIC0xLjA1OTgyXSwgWzMzLjkwMzcxMSwgLTAuOTVdLCBbMzMuODkzNTY5LCAwLjEwOTgxNF0sIFszNC4xOCwgMC41MTVdLCBbMzQuNjcyMSwgMS4xNzY5NF0sIFszNS4wMzU5OSwgMS45MDU4NF0sIFszNC41OTYwNywgMy4wNTM3NF0sIFszNC40NzkxMywgMy41NTU2XSwgWzM0LjAwNSwgNC4yNDk4ODVdLCBbMzQuNjIwMTk2LCA0Ljg0NzEyM10sIFszNS4yOTgwMDcsIDUuNTA2XSwgWzM1LjgxNzQ0OCwgNS4zMzgyMzJdLCBbMzUuODE3NDQ4LCA0Ljc3Njk2Nl0sIFszNi4xNTkwNzksIDQuNDQ3ODY0XSwgWzM2Ljg1NTA5MywgNC40NDc4NjRdLCBbMzguMTIwOTE1LCAzLjU5ODYwNV0sIFszOC40MzY5NywgMy41ODg1MV0sIFszOC42NzExNCwgMy42MTYwN10sIFszOC44OTI1MSwgMy41MDA3NF0sIFszOS41NTkzODQsIDMuNDIyMDZdLCBbMzkuODU0OTQsIDMuODM4NzldLCBbNDAuNzY4NDgsIDQuMjU3MDJdLCBbNDEuMTcxOCwgMy45MTkwOV0sIFs0MS44NTUwODMsIDMuOTE4OTEyXSwgWzQwLjk4MTA1LCAyLjc4NDUyXSwgWzQwLjk5MywgLTAuODU4MjldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIktFTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiS2VueWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzcwLjk2MjMxNSwgNDIuMjY2MTU0XSwgWzcxLjE4NjI4MSwgNDIuNzA0MjkzXSwgWzcxLjg0NDYzOCwgNDIuODQ1Mzk1XSwgWzczLjQ4OTc1OCwgNDIuNTAwODk0XSwgWzczLjY0NTMwNCwgNDMuMDkxMjcyXSwgWzc0LjIxMjg2NiwgNDMuMjk4MzM5XSwgWzc1LjYzNjk2NSwgNDIuODc3OV0sIFs3Ni4wMDAzNTQsIDQyLjk4ODAyMl0sIFs3Ny42NTgzOTIsIDQyLjk2MDY4Nl0sIFs3OS4xNDIxNzcsIDQyLjg1NjA5Ml0sIFs3OS42NDM2NDUsIDQyLjQ5NjY4M10sIFs4MC4yNTk5OSwgNDIuMzQ5OTk5XSwgWzgwLjExOTQzLCA0Mi4xMjM5NDFdLCBbNzguNTQzNjYxLCA0MS41ODIyNDNdLCBbNzguMTg3MTk3LCA0MS4xODUzMTZdLCBbNzYuOTA0NDg0LCA0MS4wNjY0ODZdLCBbNzYuNTI2MzY4LCA0MC40Mjc5NDZdLCBbNzUuNDY3ODI4LCA0MC41NjIwNzJdLCBbNzQuNzc2ODYyLCA0MC4zNjY0MjVdLCBbNzMuODIyMjQ0LCAzOS44OTM5NzNdLCBbNzMuOTYwMDEzLCAzOS42NjAwMDhdLCBbNzMuNjc1Mzc5LCAzOS40MzEyMzddLCBbNzEuNzg0Njk0LCAzOS4yNzk0NjNdLCBbNzAuNTQ5MTYyLCAzOS42MDQxOThdLCBbNjkuNDY0ODg3LCAzOS41MjY2ODNdLCBbNjkuNTU5NjEsIDQwLjEwMzIxMV0sIFs3MC42NDgwMTksIDM5LjkzNTc1NF0sIFs3MS4wMTQxOTgsIDQwLjI0NDM2Nl0sIFs3MS43NzQ4NzUsIDQwLjE0NTg0NF0sIFs3My4wNTU0MTcsIDQwLjg2NjAzM10sIFs3MS44NzAxMTUsIDQxLjM5MjldLCBbNzEuMTU3ODU5LCA0MS4xNDM1ODddLCBbNzAuNDIwMDIyLCA0MS41MTk5OThdLCBbNzEuMjU5MjQ4LCA0Mi4xNjc3MTFdLCBbNzAuOTYyMzE1LCA0Mi4yNjYxNTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIktHWiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiS3lyZ3l6c3RhbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTAzLjQ5NzI4LCAxMC42MzI1NTVdLCBbMTAzLjA5MDY5LCAxMS4xNTM2NjFdLCBbMTAyLjU4NDkzMiwgMTIuMTg2NTk1XSwgWzEwMi4zNDgwOTksIDEzLjM5NDI0N10sIFsxMDIuOTg4NDIyLCAxNC4yMjU3MjFdLCBbMTA0LjI4MTQxOCwgMTQuNDE2NzQzXSwgWzEwNS4yMTg3NzcsIDE0LjI3MzIxMl0sIFsxMDYuMDQzOTQ2LCAxMy44ODEwOTFdLCBbMTA2LjQ5NjM3MywgMTQuNTcwNTg0XSwgWzEwNy4zODI3MjcsIDE0LjIwMjQ0MV0sIFsxMDcuNjE0NTQ4LCAxMy41MzU1MzFdLCBbMTA3LjQ5MTQwMywgMTIuMzM3MjA2XSwgWzEwNS44MTA1MjQsIDExLjU2NzYxNV0sIFsxMDYuMjQ5NjcsIDEwLjk2MTgxMl0sIFsxMDUuMTk5OTE1LCAxMC44ODkzMV0sIFsxMDQuMzM0MzM1LCAxMC40ODY1NDRdLCBbMTAzLjQ5NzI4LCAxMC42MzI1NTVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIktITSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ2FtYm9kaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzEyOC4zNDk3MTYsIDM4LjYxMjI0M10sIFsxMjkuMjEyOTIsIDM3LjQzMjM5Ml0sIFsxMjkuNDYwNDUsIDM2Ljc4NDE4OV0sIFsxMjkuNDY4MzA0LCAzNS42MzIxNDFdLCBbMTI5LjA5MTM3NywgMzUuMDgyNDg0XSwgWzEyOC4xODU4NSwgMzQuODkwMzc3XSwgWzEyNy4zODY1MTksIDM0LjQ3NTY3NF0sIFsxMjYuNDg1NzQ4LCAzNC4zOTAwNDZdLCBbMTI2LjM3MzkyLCAzNC45MzQ1Nl0sIFsxMjYuNTU5MjMxLCAzNS42ODQ1NDFdLCBbMTI2LjExNzM5OCwgMzYuNzI1NDg1XSwgWzEyNi44NjAxNDMsIDM2Ljg5MzkyNF0sIFsxMjYuMTc0NzU5LCAzNy43NDk2ODZdLCBbMTI2LjIzNzMzOSwgMzcuODQwMzc4XSwgWzEyNi42ODM3MiwgMz
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment