Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save AakashVasudevan/232090fc098c4b9efbe3e695c71f5179 to your computer and use it in GitHub Desktop.
Save AakashVasudevan/232090fc098c4b9efbe3e695c71f5179 to your computer and use it in GitHub Desktop.
Created on Skills Network Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<center>\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/Logos/organization_logo/organization_logo.png\" width=\"300\" alt=\"cognitiveclass.ai logo\" />\n",
"</center>\n",
"\n",
"# Generating Maps with Python\n",
"\n",
"Estimated time needed: **30** minutes\n",
"\n",
"## Objectives\n",
"\n",
"After completing this lab you will be able to:\n",
"\n",
"- Visualize geospatial data with Folium\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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>\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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?cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork-20297740&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork-20297740&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ) and [**Numpy**](http://www.numpy.org?cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork-20297740&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork-20297740&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ) 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?cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork-20297740&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ) 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?cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork-20297740&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ) 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\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Downloading and Prepping Data <a id=\"2\"></a>\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Import Primary Modules:\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"button": false,
"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,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Introduction to Folium <a id=\"4\"></a>\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### Let's install **Folium**\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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.\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting package metadata (current_repodata.json): done\n",
"Solving environment: failed with initial frozen solve. Retrying with flexible solve.\n",
"Collecting package metadata (repodata.json): done\n",
"Solving environment: done\n",
"\n",
"\n",
"==> WARNING: A newer version of conda exists. <==\n",
" current version: 4.9.1\n",
" latest version: 4.9.2\n",
"\n",
"Please update conda by running\n",
"\n",
" $ conda update -n base -c defaults conda\n",
"\n",
"\n",
"\n",
"## Package Plan ##\n",
"\n",
" environment location: /home/jupyterlab/conda/envs/python\n",
"\n",
" added / updated specs:\n",
" - folium=0.5.0\n",
"\n",
"\n",
"The following packages will be downloaded:\n",
"\n",
" package | build\n",
" ---------------------------|-----------------\n",
" altair-4.1.0 | py_1 614 KB conda-forge\n",
" attrs-20.3.0 | pyhd3deb0d_0 41 KB conda-forge\n",
" branca-0.4.1 | py_0 26 KB conda-forge\n",
" brotlipy-0.7.0 |py36he6145b8_1001 347 KB conda-forge\n",
" ca-certificates-2020.11.8 | ha878542_0 145 KB conda-forge\n",
" certifi-2020.11.8 | py36h5fab9bb_0 150 KB conda-forge\n",
" chardet-3.0.4 |py36h9880bd3_1008 194 KB conda-forge\n",
" cryptography-3.2.1 | py36h6ec43e4_0 633 KB conda-forge\n",
" entrypoints-0.3 | pyhd8ed1ab_1003 8 KB conda-forge\n",
" folium-0.5.0 | py_0 45 KB conda-forge\n",
" jsonschema-3.0.2 | py36_0 87 KB conda-forge\n",
" pandas-1.1.4 | py36hd87012b_0 10.5 MB conda-forge\n",
" pyrsistent-0.17.3 | py36h1d69622_1 89 KB conda-forge\n",
" pysocks-1.7.1 | py36h9880bd3_2 27 KB conda-forge\n",
" pytz-2020.4 | pyhd8ed1ab_0 229 KB conda-forge\n",
" requests-2.25.0 | pyhd3deb0d_0 51 KB conda-forge\n",
" toolz-0.11.1 | py_0 46 KB conda-forge\n",
" vincent-0.4.4 | py_1 28 KB conda-forge\n",
" ------------------------------------------------------------\n",
" Total: 13.2 MB\n",
"\n",
"The following NEW packages will be INSTALLED:\n",
"\n",
" altair conda-forge/noarch::altair-4.1.0-py_1\n",
" attrs conda-forge/noarch::attrs-20.3.0-pyhd3deb0d_0\n",
" branca conda-forge/noarch::branca-0.4.1-py_0\n",
" brotlipy conda-forge/linux-64::brotlipy-0.7.0-py36he6145b8_1001\n",
" chardet conda-forge/linux-64::chardet-3.0.4-py36h9880bd3_1008\n",
" cryptography conda-forge/linux-64::cryptography-3.2.1-py36h6ec43e4_0\n",
" entrypoints conda-forge/noarch::entrypoints-0.3-pyhd8ed1ab_1003\n",
" folium conda-forge/noarch::folium-0.5.0-py_0\n",
" idna conda-forge/noarch::idna-2.10-pyh9f0ad1d_0\n",
" jinja2 conda-forge/noarch::jinja2-2.11.2-pyh9f0ad1d_0\n",
" jsonschema conda-forge/linux-64::jsonschema-3.0.2-py36_0\n",
" markupsafe conda-forge/linux-64::markupsafe-1.1.1-py36he6145b8_2\n",
" pandas conda-forge/linux-64::pandas-1.1.4-py36hd87012b_0\n",
" pyopenssl conda-forge/noarch::pyopenssl-19.1.0-py_1\n",
" pyrsistent conda-forge/linux-64::pyrsistent-0.17.3-py36h1d69622_1\n",
" pysocks conda-forge/linux-64::pysocks-1.7.1-py36h9880bd3_2\n",
" pytz conda-forge/noarch::pytz-2020.4-pyhd8ed1ab_0\n",
" requests conda-forge/noarch::requests-2.25.0-pyhd3deb0d_0\n",
" toolz conda-forge/noarch::toolz-0.11.1-py_0\n",
" urllib3 conda-forge/noarch::urllib3-1.25.11-py_0\n",
" vincent conda-forge/noarch::vincent-0.4.4-py_1\n",
"\n",
"The following packages will be UPDATED:\n",
"\n",
" ca-certificates 2020.6.20-hecda079_0 --> 2020.11.8-ha878542_0\n",
" certifi 2020.6.20-py36h9880bd3_2 --> 2020.11.8-py36h5fab9bb_0\n",
"\n",
"\n",
"\n",
"Downloading and Extracting Packages\n",
"entrypoints-0.3 | 8 KB | ##################################### | 100% \n",
"attrs-20.3.0 | 41 KB | ##################################### | 100% \n",
"pyrsistent-0.17.3 | 89 KB | ##################################### | 100% \n",
"pytz-2020.4 | 229 KB | ##################################### | 100% \n",
"cryptography-3.2.1 | 633 KB | ##################################### | 100% \n",
"jsonschema-3.0.2 | 87 KB | ##################################### | 100% \n",
"ca-certificates-2020 | 145 KB | ##################################### | 100% \n",
"folium-0.5.0 | 45 KB | ##################################### | 100% \n",
"pandas-1.1.4 | 10.5 MB | ##################################### | 100% \n",
"pysocks-1.7.1 | 27 KB | ##################################### | 100% \n",
"brotlipy-0.7.0 | 347 KB | ##################################### | 100% \n",
"chardet-3.0.4 | 194 KB | ##################################### | 100% \n",
"branca-0.4.1 | 26 KB | ##################################### | 100% \n",
"requests-2.25.0 | 51 KB | ##################################### | 100% \n",
"altair-4.1.0 | 614 KB | ##################################### | 100% \n",
"toolz-0.11.1 | 46 KB | ##################################### | 100% \n",
"certifi-2020.11.8 | 150 KB | ##################################### | 100% \n",
"vincent-0.4.4 | 28 KB | ##################################### | 100% \n",
"Preparing transaction: done\n",
"Verifying transaction: done\n",
"Executing transaction: done\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,
"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. \n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"button": false,
"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%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe src=\"about:blank\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" data-html=PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYjdjYzQ4ZTkxYjA3NDFkYzk2OWRiZTMxMjQ2MjNjNzkgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2I3Y2M0OGU5MWIwNzQxZGM5NjlkYmUzMTI0NjIzYzc5IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9iN2NjNDhlOTFiMDc0MWRjOTY5ZGJlMzEyNDYyM2M3OSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9iN2NjNDhlOTFiMDc0MWRjOTY5ZGJlMzEyNDYyM2M3OScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMCwwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb206IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzQ1N2JmNTU1NWNlYzRjOTVhZGM4ODVlZGU5YmRiOGFmID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2I3Y2M0OGU5MWIwNzQxZGM5NjlkYmUzMTI0NjIzYzc5KTsKICAgICAgICAKPC9zY3JpcHQ+ onload=\"this.contentDocument.open();this.contentDocument.write(atob(this.getAttribute('data-html')));this.contentDocument.close();\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb37ad96898>"
]
},
"execution_count": 3,
"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,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Go ahead. Try zooming in and out of the rendered map above.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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.\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"button": false,
"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%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe src=\"about:blank\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" data-html=PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNTg1ZDc0Nzg3MmE1NDA2YjhjMmE1NTJlNWZmYzI2Y2UgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzU4NWQ3NDc4NzJhNTQwNmI4YzJhNTUyZTVmZmMyNmNlIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF81ODVkNzQ3ODcyYTU0MDZiOGMyYTU1MmU1ZmZjMjZjZSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF81ODVkNzQ3ODcyYTU0MDZiOGMyYTU1MmU1ZmZjMjZjZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl82NTA1MmEwMzVmOWM0OTNkYjhhMzljYmZmYWFjZmIxYiA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF81ODVkNzQ3ODcyYTU0MDZiOGMyYTU1MmU1ZmZjMjZjZSk7CiAgICAgICAgCjwvc2NyaXB0Pg== onload=\"this.contentDocument.open();this.contentDocument.write(atob(this.getAttribute('data-html')));this.contentDocument.close();\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb4048e5b00>"
]
},
"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,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create the map again with a higher zoom level\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"button": false,
"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%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe src=\"about:blank\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" data-html=PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNDQyNDE3NTIwNTlhNGFjMDkzZTJkNjQwZWI5MzY2MWYgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzQ0MjQxNzUyMDU5YTRhYzA5M2UyZDY0MGViOTM2NjFmIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF80NDI0MTc1MjA1OWE0YWMwOTNlMmQ2NDBlYjkzNjYxZiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF80NDI0MTc1MjA1OWE0YWMwOTNlMmQ2NDBlYjkzNjYxZicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl85NmMzNGJmODA1NTU0ZTdjYWMxZDhhMmU2ZWEyZmJmYSA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF80NDI0MTc1MjA1OWE0YWMwOTNlMmQ2NDBlYjkzNjYxZik7CiAgICAgICAgCjwvc2NyaXB0Pg== onload=\"this.contentDocument.open();this.contentDocument.write(atob(this.getAttribute('data-html')));this.contentDocument.close();\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb4048f17f0>"
]
},
"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,
"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.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"**Question**: Create a map of Mexico with a zoom level of 4.\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"button": false,
"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%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe src=\"about:blank\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" data-html=PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfM2VlZmVjNzcxM2UwNDg1NmE3MjNkNjYzNWE0ZTY3NzAgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzNlZWZlYzc3MTNlMDQ4NTZhNzIzZDY2MzVhNGU2NzcwIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8zZWVmZWM3NzEzZTA0ODU2YTcyM2Q2NjM1YTRlNjc3MCA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8zZWVmZWM3NzEzZTA0ODU2YTcyM2Q2NjM1YTRlNjc3MCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMjMuNjMsLTEwMi41NV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl9hZmY1ODEzYmMzOWU0NGU5OGViYzAxNGRlZTUzNzMyYiA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8zZWVmZWM3NzEzZTA0ODU2YTcyM2Q2NjM1YTRlNjc3MCk7CiAgICAgICAgCjwvc2NyaXB0Pg== onload=\"this.contentDocument.open();this.contentDocument.write(atob(this.getAttribute('data-html')));this.contentDocument.close();\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb4048f1a58>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"### type your answer here\n",
"\n",
"# define the world map centered around Canada with a higher zoom level\n",
"world_map = folium.Map(location=[23.63, -102.55], zoom_start=4)\n",
"\n",
"# display world map\n",
"world_map\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<details><summary>Click here for a sample python solution</summary>\n",
"\n",
"```python\n",
" #The correct answer is:\n",
" \n",
" #define Mexico's geolocation coordinates\n",
" mexico_latitude = 23.6345 \n",
" mexico_longitude = -102.5528\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",
" # display world map\n",
" mexico_map\n",
"\n",
"```\n",
"\n",
"</details>\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Another cool feature of **Folium** is that you can generate different map styles.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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. \n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create a Stamen Toner map of canada with a zoom level of 4.\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"button": false,
"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%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe src=\"about:blank\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" data-html=PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYzc1ZDNjYWVmNmJlNGIzZmEyMGRhMjliNjZlZjMyMmMgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2M3NWQzY2FlZjZiZTRiM2ZhMjBkYTI5YjY2ZWYzMjJjIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9jNzVkM2NhZWY2YmU0YjNmYTIwZGEyOWI2NmVmMzIyYyA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9jNzVkM2NhZWY2YmU0YjNmYTIwZGEyOWI2NmVmMzIyYycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl84MWYyZDUzODMzOGY0MzUwYjAxYjRhZmMyZTczMjgzNSA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8vc3RhbWVuLXRpbGVzLXtzfS5hLnNzbC5mYXN0bHkubmV0L3RvbmVyL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYzc1ZDNjYWVmNmJlNGIzZmEyMGRhMjliNjZlZjMyMmMpOwogICAgICAgIAo8L3NjcmlwdD4= onload=\"this.contentDocument.open();this.contentDocument.write(atob(this.getAttribute('data-html')));this.contentDocument.close();\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb40487eeb8>"
]
},
"execution_count": 9,
"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 Toner')\n",
"\n",
"# display map\n",
"world_map"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's create a Stamen Terrain map of Canada with zoom level 4.\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"button": false,
"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%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe src=\"about:blank\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" data-html=PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfMGYzMDAwMDEwYmQ5NDdhZjhiYmRhMGUxNDc3ZTQ3MjIgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzBmMzAwMDAxMGJkOTQ3YWY4YmJkYTBlMTQ3N2U0NzIyIiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF8wZjMwMDAwMTBiZDk0N2FmOGJiZGEwZTE0NzdlNDcyMiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF8wZjMwMDAwMTBiZDk0N2FmOGJiZGEwZTE0NzdlNDcyMicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTYuMTMsLTEwNi4zNV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiA0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnM6IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ybGRDb3B5SnVtcDogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgdGlsZV9sYXllcl8yNzc0MGE3MmM3NGU0YTI0OTgyZDQxODVjYWFiMjI2OCA9IEwudGlsZUxheWVyKAogICAgICAgICAgICAgICAgJ2h0dHBzOi8vc3RhbWVuLXRpbGVzLXtzfS5hLnNzbC5mYXN0bHkubmV0L3RlcnJhaW4ve3p9L3t4fS97eX0uanBnJywKICAgICAgICAgICAgICAgIHsKICAiYXR0cmlidXRpb24iOiBudWxsLAogICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwKICAibWF4Wm9vbSI6IDE4LAogICJtaW5ab29tIjogMSwKICAibm9XcmFwIjogZmFsc2UsCiAgInN1YmRvbWFpbnMiOiAiYWJjIgp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF8wZjMwMDAwMTBiZDk0N2FmOGJiZGEwZTE0NzdlNDcyMik7CiAgICAgICAgCjwvc2NyaXB0Pg== onload=\"this.contentDocument.open();this.contentDocument.write(atob(this.getAttribute('data-html')));this.contentDocument.close();\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb404885ef0>"
]
},
"execution_count": 10,
"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,
"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.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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.\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"button": false,
"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%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe src=\"about:blank\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" data-html=PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNjY2NTZmYmIwMmQzNDZiOWIzZWU3ZjVlYTQ0NmUwOTYgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzY2NjU2ZmJiMDJkMzQ2YjliM2VlN2Y1ZWE0NDZlMDk2IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF82NjY1NmZiYjAyZDM0NmI5YjNlZTdmNWVhNDQ2ZTA5NiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF82NjY1NmZiYjAyZDM0NmI5YjNlZTdmNWVhNDQ2ZTA5NicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMjMuNjM0NSwtMTAyLjU1MjhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfZjE3MTc5YTMwMDliNDg4NmJkNDYyOTExN2EyZjZlNjEgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3N0YW1lbi10aWxlcy17c30uYS5zc2wuZmFzdGx5Lm5ldC90ZXJyYWluL3t6fS97eH0ve3l9LmpwZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfNjY2NTZmYmIwMmQzNDZiOWIzZWU3ZjVlYTQ0NmUwOTYpOwogICAgICAgIAo8L3NjcmlwdD4= onload=\"this.contentDocument.open();this.contentDocument.write(atob(this.getAttribute('data-html')));this.contentDocument.close();\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb404898278>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"### type your answer here\n",
"\n",
"Mexico = [23.6345 , -102.5528]\n",
"\n",
"world_map = folium.Map(location=Mexico, zoom_start=6, tiles='Stamen Terrain')\n",
"\n",
"# display map\n",
"world_map\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"<details><summary>Click here for a sample python solution</summary>\n",
"\n",
"```python\n",
" #The correct answer is:\n",
" \n",
" #define Mexico's geolocation coordinates\n",
" mexico_latitude = 23.6345 \n",
" mexico_longitude = -102.5528\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",
" # display world map\n",
" mexico_map\n",
"\n",
"```\n",
"\n",
"</details>\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"# Maps with Markers <a id=\"6\"></a>\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Download the dataset and read it into a _pandas_ dataframe:\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"button": false,
"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://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork/Data%20Files/Police_Department_Incidents_-_Previous_Year__2016_.csv')\n",
"\n",
"print('Dataset downloaded and read into a pandas dataframe!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items in our dataset.\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"button": false,
"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": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"So each row consists of 13 features:\n",
"\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\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's find out how many entries there are in our dataset.\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(150500, 13)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.shape"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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.\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"button": false,
"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,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's confirm that our dataframe now consists only of 100 crimes.\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"(100, 13)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_incidents.shape"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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. \n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"button": false,
"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": 18,
"metadata": {
"button": false,
"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%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe src=\"about:blank\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" data-html=PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3NiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3NicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfOTFmYjA5OGI2MjBjNDdhMmFhNjJlM2UwN2ZjZDcwZjYgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgIAo8L3NjcmlwdD4= onload=\"this.contentDocument.open();this.contentDocument.write(atob(this.getAttribute('data-html')));this.contentDocument.close();\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb3ffa33908>"
]
},
"execution_count": 18,
"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,
"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.\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"button": false,
"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%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe src=\"about:blank\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" data-html=PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3NiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3NicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfOTFmYjA5OGI2MjBjNDdhMmFhNjJlM2UwN2ZjZDcwZjYgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmNmMWE2YTE5NDkwNDI1MWJhZjdlM2I5NTYyMmE4MzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JmYWFiOGQxMjc5OTRkZTg5ODBkNDM5NTdlODA5ZjgwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNWE3MWNlZGM2MmU0NDk5YTE0M2Q2MmM0OGRjNzk1YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RiYzdkNGJlZDAzNTQ1MDFhNTdjNzgyM2JkNzBhZDVlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zY2I1MGQwNGM1ZWY0MzdlYmE5MmVhOTE1NzJlZTAwNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMTM2NWE1YWRkOTM0ZmYwODRlY2ViOWNlMjlmYTM2NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmE1ODViNGMzMTEzNDVjNWExNTYzZDk0MDNjMTAzZDkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMThkY2I3ZGUxNmJiNDhkNGJmMWIzZTNkZjUyMmE1ODUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmQ0M2JiZmM1NWMxNGI3ZjllOTdjNTEyYzcyYzAxYjEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNTY4YmI4YjU0ZmM0OGEyOWRhOWNiMDM2NWNlOWVlMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMGM5MjE1NjNhYTY0YTYwYjc1MDZiYzA5Yzg2OWRhMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTExNTViZDViNjRiNGE1Y2JlMjM5ZGQzZGY5Nzg1ZWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85ODA5MTM3M2FkOGM0NTE1YmVlZGYwZWRiYjE3NGE0OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmZjZDE1MTdkNjMwNGM0OTllNmMyNDNmMmJkMmUyOTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGNjYjkxYjQ4N2IwNGU4ODk3NmJiOGU0MGZmZWFjZDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE3MmVlY2QzYTdiYjQxOGNiMmE0NzhmNGUwMzY5YWE3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U0MTE5YzA3MTY1NDQ4NDdhOTQ3YWU2ZmJkYzE0YTIxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzYwNDgyZTAzNjViNDRiMGIyNjIwMjE0MDc1OTkwNTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNTcxODdjZjU2N2E0MjAzYTllZmFjZjhlNTc4MjczYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IwM2Y0MzAzMDVlMzRiMzJhY2YzYWE0MzYyYzUyMTlkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI1NDQ3YzAxMWVmYzQ2OTE5Mjk1NTVkNmQzMTYwMzAxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTAyZjY1ODdmYjE0NDUwM2ExNDI0YWJkZDVhYWRlNjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ViN2ZmMTQ1MWM2NDQ2OTliZTg5MjdiZTYwMTc0NjAyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84M2E4ZmE2MTc3NjA0NWFiYWM1ZDNkMzZiODA2ODlkNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDMxYWUxMmNiN2Y5NDJiNThmYjhkYTVjNDg3YTgzY2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZGJhMWU0NjU4ZDY0NWNhYWE5OTI4Mjc2NWYyNTdmNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWQzMzY5MzkyYzAzNGFjOTgxYjA2Mjc5OWEzYjQ0NTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODk4MTFmMTEyYWZhNDdkMGE5ZTZiMjQ3MzlhMTZlOTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDliMjZiNTU4ZWUzNGFjYWExYmEyMWVjMTBhYTk5ZDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNTFjZGIwODY4MWE0YjA3OTdlNjBkYjJiNGE5ZDk3NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYWY2NWNkNjkwN2Q0YTgwYWQ5NzVkMTIxYzA2YTM5NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYxYTJiNzdhOGJiNzQ1ZjM4NmM4ZDY1NWI3NjY3NTYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZkZDhkMzFkMjQwNTQ4OWY5NjFiODkwYTgwMzdkN2Y1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QzMjk2NWMzMzQ3MjRhOWZhYzM4ZmJmMmE5NjIxNjgwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FlN2E4MDUyMDRhMjRhMGE5NTAyZGFlYjRiY2FkMDgzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGI2OGQ1ZDU5ZTczNDk1OTljMGU4MWRkMzgwNjlmOGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNTY3Y2RjY2I1NGE0NmE2YmY0NTAwNDgyMjdiOWUzYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVhZjRhODY5MWU1ODQ3ODk5ODA5YTUxYThmOTU0YjI3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E2M2JhMjRjZjUxZTRmZWZiZTM3ZDM1OWYyNzJkYzNhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWVkODhiZDUzMzA4NGMxYWE1MGI2M2JiMDM4MjY4NTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NGVhZjAzM2I3NDE0MzdmOTE5YWZkYzhhYmU4MzljNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82MGEzNWYwZmFiNWM0NmQ5YTYxYzJmNzNkMThkZTVhYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kOGVmNmEyOTQxNWE0YWYwYmU2YjQ4ZTM5ZDQ5OWE5NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MGYzY2MxMzQwNDA0M2Q1ODlhZDVkZThiNTQyZjFlMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzAxN2Y1NmE4MTg4NGZkZWE3NDc2MzJmZWY5MjA2MTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lZmYyMTczNWI2YWM0YmIxOWU2YTJlMTJjMzZkMWViMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U4YTFmZDJmMGVkNjRmNjA5YWU1N2UxMDhkZjQ2MjI5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA1MDBhOWQxMWNhOTQ0OWJiNDQ1MjMxYzhmMTI5Mzc4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M3NGNkNWY5NzZhOTQzMWI5OGZiNjdmOWY5YmQzMTE2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU1NzNmOTkyM2U5MzQyMzNiNjU0N2Q4Y2IxOTAyM2ZkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhjY2IxY2ZhY2Q0OTQ2MGFiYzkzNzE0ODJlMzlmN2M0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjRkN2MyMjZkMmNlNDU5Y2JmODRlZDA1ODBhOGI5MzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNTc0NzE4ZGIwMzc0ZDQ5YmFmMjc4M2RhNGVkNTE1ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZjg3Y2RjMGExZjM0MjcyYmI1YTUxNzRiYjMyNDM0NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NGU1NDE2ZTM1Y2Y0ZTVhODM4N2VlMWEzOGQ5YzEzZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIxZmZiZTZmODFlNDQ2NGVhNWExMTI4YjUxZjEyZDU2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJhY2Q2ODRhMTI0MzQwMDc4ZWE2ZDJmMjJkMTJkMTE2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDYyMmU1Y2ZjMzJiNDllM2I3MDNhZjFkYWU2NDk2YjMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjk2MmE4MjFiYTdlNGQxMjkzNzdhZjg0NzNkMzRkNDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QwMzFkNGQ4ZTg5NTQ3NTlhNDdiMjg1NDJiOTAzMDg0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNDhkMGRhYTNhODk0MWRiOWUwYTJmNzUzZjdkMDY0YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTAzMDQ4Mjk4NzYzNDcyM2I3YzM5ZmNjMDkwMWE1ZjMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWZkOTkwNDlhY2Y4NDg4MjllM2FiZTZjNWZjNDQ1MjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGM1M2IxZjAwYTE2NDI5OWExMDc5MjAxY2FlNzAyN2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmMwNmViMmExZmM2NGM0ZDg0MmQwYjViZWE3ODM1MTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGU2YTkzMGRjMTkzNDYyODg2MjRhZTgwZWY3NmJiYTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNWRjMjVkMWE5YmY0ODE2OWVmMjNkNzY1ZmIzZTVlMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82MGI0MmM4NDIxODU0NzVmODliYWU0ZmE0MzY1Yjc2ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhhYmNkMzU2YmM0MzQ1Yzc5MmVhZmQwZGIzMmM2MjgxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVkNmFkNTRiZGYzMjQ4NWI4OWY5MGQ1OGU3YjNmMzdiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RhMjU1MjcyMjk1YjRmNThhYWZlOTdjMTMzYTFhZTBhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mM2IxODMxNGUyMDA0YzVjYjUzODYzYmViMjRmOTIzNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzNkNWE0ZDVmNDhmNDgyMGE1ZDFiM2E3Yjg4MDYyZDEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIyYWM1NWYxMDcwYTQ0ODdiMTIzNWZhOTE0NjcwNjE2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTVjNGU5YjE1MmE3NGVkYWE1MTU3OWMyM2IxNDE5M2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzBhYzAyOWRlODk5NDc0MGFiNDQ2YjM1MzZjYzg0MDkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jNThjNjE2YjliZjE0Y2VhYmEzY2VlNTg4MjMxZmVkOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzQ1Mjg2MjNkYzk5NDQxOGFjZmNjYTM2MTIwNTViNDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2YwNjkyYTlhM2VmNjQ3ZTZhNGE5NDU1NDdlNzM4MzBjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85Mzc3NmZjNzkzNjk0MjA2OGI0MmRhYjFjMzVhYzBkYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIwNzk4NTZlMzQ2NzQzNWQ5OTRkZGFiN2M0YmUyNjhjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI3NjQ5Y2VjMzVkOTRkOGE5YmRlMzg3NGZhMzI2MTcyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFlN2ZiNTExNzNjNDQxYjBhZDg4NmFiNzM1YWY0ZTg5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hYzQ4MjJhNjhiZDI0MmEwOTI5MGFlMWU3Zjc4ZDdhYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzEyNGE5YTk0ZDlkOTQ1OTFiODJmZWI2YjAxY2JmOGFiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M5Y2EwYWUzMzE2NjRkNWY4MWZhZmYxMjRkY2VkMjk1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUwOWM0ODZmYzBjMzQzYjRiMmY2ODY4MzczOGZmMzBlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kYjcwNDQ0NzI0OTg0OThkYmNlNzU0NDRkMzBlMDkyNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNjI0YTc0Njc5OWY0ZGRhOWE1ZmExNGNlMGQ0NDdhNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQwNDNmYzYyMjEzMjQ3YjlhZjhmN2M5YTcwNzA4MTVjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjg1ZDkzNmVmNWY0NGEwMWEyYTAxOGVmMjdhYzgzMjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lMmUzMGJjOWJmYjU0NTY5ODVkYTlhYjUzNTY2YTZjYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MyYzk1MzRhZjYyMDRhZGZhNDcyZjVlMDU5MWEyZmU5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjZlOWQ2YmZmZjA0NGFhN2FiOTMwNGIxY2QxMDNhZTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81ODJmYWRmNzJhMjA0YjMwOWNhZTQyMjIzMzM1ZTk0MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNWQ1MWQzOGViYjU0MjcwYjIyN2Y4NTA5Njk5MzgwYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M5ZGM4ZWIwZjBjMjRjNzRiZjU4OGM3MTI4MzU3YzM1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWRmYzkwYjYxNjE0NDIwNzk4MmFiZDg5ZWY4YTlkNmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGIzNTY4MTI4YTg5NGI3OWJlZTQ5YWRhYWVlNTczNjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODVkNzE4ZWViMDBkNGVhMzgwZjZlYWFiYTdiZWUwZGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKPC9zY3JpcHQ+ onload=\"this.contentDocument.open();this.contentDocument.write(atob(this.getAttribute('data-html')));this.contentDocument.close();\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb3ffa33908>"
]
},
"execution_count": 19,
"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,
"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.\n"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"button": false,
"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%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe src=\"about:blank\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" data-html=PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3NiA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3NicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfOTFmYjA5OGI2MjBjNDdhMmFhNjJlM2UwN2ZjZDcwZjYgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMmNmMWE2YTE5NDkwNDI1MWJhZjdlM2I5NTYyMmE4MzIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JmYWFiOGQxMjc5OTRkZTg5ODBkNDM5NTdlODA5ZjgwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNWE3MWNlZGM2MmU0NDk5YTE0M2Q2MmM0OGRjNzk1YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RiYzdkNGJlZDAzNTQ1MDFhNTdjNzgyM2JkNzBhZDVlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zY2I1MGQwNGM1ZWY0MzdlYmE5MmVhOTE1NzJlZTAwNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMTM2NWE1YWRkOTM0ZmYwODRlY2ViOWNlMjlmYTM2NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmE1ODViNGMzMTEzNDVjNWExNTYzZDk0MDNjMTAzZDkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMThkY2I3ZGUxNmJiNDhkNGJmMWIzZTNkZjUyMmE1ODUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmQ0M2JiZmM1NWMxNGI3ZjllOTdjNTEyYzcyYzAxYjEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kNTY4YmI4YjU0ZmM0OGEyOWRhOWNiMDM2NWNlOWVlMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMGM5MjE1NjNhYTY0YTYwYjc1MDZiYzA5Yzg2OWRhMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTExNTViZDViNjRiNGE1Y2JlMjM5ZGQzZGY5Nzg1ZWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85ODA5MTM3M2FkOGM0NTE1YmVlZGYwZWRiYjE3NGE0OCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmZjZDE1MTdkNjMwNGM0OTllNmMyNDNmMmJkMmUyOTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGNjYjkxYjQ4N2IwNGU4ODk3NmJiOGU0MGZmZWFjZDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE3MmVlY2QzYTdiYjQxOGNiMmE0NzhmNGUwMzY5YWE3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U0MTE5YzA3MTY1NDQ4NDdhOTQ3YWU2ZmJkYzE0YTIxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzYwNDgyZTAzNjViNDRiMGIyNjIwMjE0MDc1OTkwNTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNTcxODdjZjU2N2E0MjAzYTllZmFjZjhlNTc4MjczYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IwM2Y0MzAzMDVlMzRiMzJhY2YzYWE0MzYyYzUyMTlkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI1NDQ3YzAxMWVmYzQ2OTE5Mjk1NTVkNmQzMTYwMzAxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTAyZjY1ODdmYjE0NDUwM2ExNDI0YWJkZDVhYWRlNjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ViN2ZmMTQ1MWM2NDQ2OTliZTg5MjdiZTYwMTc0NjAyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84M2E4ZmE2MTc3NjA0NWFiYWM1ZDNkMzZiODA2ODlkNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDMxYWUxMmNiN2Y5NDJiNThmYjhkYTVjNDg3YTgzY2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jZGJhMWU0NjU4ZDY0NWNhYWE5OTI4Mjc2NWYyNTdmNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWQzMzY5MzkyYzAzNGFjOTgxYjA2Mjc5OWEzYjQ0NTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODk4MTFmMTEyYWZhNDdkMGE5ZTZiMjQ3MzlhMTZlOTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDliMjZiNTU4ZWUzNGFjYWExYmEyMWVjMTBhYTk5ZDIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNTFjZGIwODY4MWE0YjA3OTdlNjBkYjJiNGE5ZDk3NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYWY2NWNkNjkwN2Q0YTgwYWQ5NzVkMTIxYzA2YTM5NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzYxYTJiNzdhOGJiNzQ1ZjM4NmM4ZDY1NWI3NjY3NTYwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZkZDhkMzFkMjQwNTQ4OWY5NjFiODkwYTgwMzdkN2Y1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QzMjk2NWMzMzQ3MjRhOWZhYzM4ZmJmMmE5NjIxNjgwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FlN2E4MDUyMDRhMjRhMGE5NTAyZGFlYjRiY2FkMDgzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMGI2OGQ1ZDU5ZTczNDk1OTljMGU4MWRkMzgwNjlmOGMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNTY3Y2RjY2I1NGE0NmE2YmY0NTAwNDgyMjdiOWUzYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVhZjRhODY5MWU1ODQ3ODk5ODA5YTUxYThmOTU0YjI3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2E2M2JhMjRjZjUxZTRmZWZiZTM3ZDM1OWYyNzJkYzNhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWVkODhiZDUzMzA4NGMxYWE1MGI2M2JiMDM4MjY4NTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81NGVhZjAzM2I3NDE0MzdmOTE5YWZkYzhhYmU4MzljNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82MGEzNWYwZmFiNWM0NmQ5YTYxYzJmNzNkMThkZTVhYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kOGVmNmEyOTQxNWE0YWYwYmU2YjQ4ZTM5ZDQ5OWE5NyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MGYzY2MxMzQwNDA0M2Q1ODlhZDVkZThiNTQyZjFlMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzAxN2Y1NmE4MTg4NGZkZWE3NDc2MzJmZWY5MjA2MTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lZmYyMTczNWI2YWM0YmIxOWU2YTJlMTJjMzZkMWViMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2U4YTFmZDJmMGVkNjRmNjA5YWU1N2UxMDhkZjQ2MjI5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA1MDBhOWQxMWNhOTQ0OWJiNDQ1MjMxYzhmMTI5Mzc4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M3NGNkNWY5NzZhOTQzMWI5OGZiNjdmOWY5YmQzMTE2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU1NzNmOTkyM2U5MzQyMzNiNjU0N2Q4Y2IxOTAyM2ZkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhjY2IxY2ZhY2Q0OTQ2MGFiYzkzNzE0ODJlMzlmN2M0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjRkN2MyMjZkMmNlNDU5Y2JmODRlZDA1ODBhOGI5MzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNTc0NzE4ZGIwMzc0ZDQ5YmFmMjc4M2RhNGVkNTE1ZCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZjg3Y2RjMGExZjM0MjcyYmI1YTUxNzRiYjMyNDM0NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83NGU1NDE2ZTM1Y2Y0ZTVhODM4N2VlMWEzOGQ5YzEzZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIxZmZiZTZmODFlNDQ2NGVhNWExMTI4YjUxZjEyZDU2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJhY2Q2ODRhMTI0MzQwMDc4ZWE2ZDJmMjJkMTJkMTE2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDYyMmU1Y2ZjMzJiNDllM2I3MDNhZjFkYWU2NDk2YjMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjk2MmE4MjFiYTdlNGQxMjkzNzdhZjg0NzNkMzRkNDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QwMzFkNGQ4ZTg5NTQ3NTlhNDdiMjg1NDJiOTAzMDg0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yNDhkMGRhYTNhODk0MWRiOWUwYTJmNzUzZjdkMDY0YSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTAzMDQ4Mjk4NzYzNDcyM2I3YzM5ZmNjMDkwMWE1ZjMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYWZkOTkwNDlhY2Y4NDg4MjllM2FiZTZjNWZjNDQ1MjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGM1M2IxZjAwYTE2NDI5OWExMDc5MjAxY2FlNzAyN2MgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmMwNmViMmExZmM2NGM0ZDg0MmQwYjViZWE3ODM1MTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGU2YTkzMGRjMTkzNDYyODg2MjRhZTgwZWY3NmJiYTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNWRjMjVkMWE5YmY0ODE2OWVmMjNkNzY1ZmIzZTVlMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82MGI0MmM4NDIxODU0NzVmODliYWU0ZmE0MzY1Yjc2ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhhYmNkMzU2YmM0MzQ1Yzc5MmVhZmQwZGIzMmM2MjgxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzVkNmFkNTRiZGYzMjQ4NWI4OWY5MGQ1OGU3YjNmMzdiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RhMjU1MjcyMjk1YjRmNThhYWZlOTdjMTMzYTFhZTBhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mM2IxODMxNGUyMDA0YzVjYjUzODYzYmViMjRmOTIzNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzNkNWE0ZDVmNDhmNDgyMGE1ZDFiM2E3Yjg4MDYyZDEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIyYWM1NWYxMDcwYTQ0ODdiMTIzNWZhOTE0NjcwNjE2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTVjNGU5YjE1MmE3NGVkYWE1MTU3OWMyM2IxNDE5M2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNzBhYzAyOWRlODk5NDc0MGFiNDQ2YjM1MzZjYzg0MDkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jNThjNjE2YjliZjE0Y2VhYmEzY2VlNTg4MjMxZmVkOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzQ1Mjg2MjNkYzk5NDQxOGFjZmNjYTM2MTIwNTViNDQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2YwNjkyYTlhM2VmNjQ3ZTZhNGE5NDU1NDdlNzM4MzBjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85Mzc3NmZjNzkzNjk0MjA2OGI0MmRhYjFjMzVhYzBkYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIwNzk4NTZlMzQ2NzQzNWQ5OTRkZGFiN2M0YmUyNjhjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI3NjQ5Y2VjMzVkOTRkOGE5YmRlMzg3NGZhMzI2MTcyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFlN2ZiNTExNzNjNDQxYjBhZDg4NmFiNzM1YWY0ZTg5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hYzQ4MjJhNjhiZDI0MmEwOTI5MGFlMWU3Zjc4ZDdhYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzEyNGE5YTk0ZDlkOTQ1OTFiODJmZWI2YjAxY2JmOGFiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M5Y2EwYWUzMzE2NjRkNWY4MWZhZmYxMjRkY2VkMjk1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUwOWM0ODZmYzBjMzQzYjRiMmY2ODY4MzczOGZmMzBlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kYjcwNDQ0NzI0OTg0OThkYmNlNzU0NDRkMzBlMDkyNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNjI0YTc0Njc5OWY0ZGRhOWE1ZmExNGNlMGQ0NDdhNyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQwNDNmYzYyMjEzMjQ3YjlhZjhmN2M5YTcwNzA4MTVjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjg1ZDkzNmVmNWY0NGEwMWEyYTAxOGVmMjdhYzgzMjIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lMmUzMGJjOWJmYjU0NTY5ODVkYTlhYjUzNTY2YTZjYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MyYzk1MzRhZjYyMDRhZGZhNDcyZjVlMDU5MWEyZmU5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZjZlOWQ2YmZmZjA0NGFhN2FiOTMwNGIxY2QxMDNhZTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81ODJmYWRmNzJhMjA0YjMwOWNhZTQyMjIzMzM1ZTk0MiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNWQ1MWQzOGViYjU0MjcwYjIyN2Y4NTA5Njk5MzgwYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9jZDFmMDU1ODFjODA0Y2I3YTg0YWRkMzgzY2I4OTQ3OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M5ZGM4ZWIwZjBjMjRjNzRiZjU4OGM3MTI4MzU3YzM1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWRmYzkwYjYxNjE0NDIwNzk4MmFiZDg5ZWY4YTlkNmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOGIzNTY4MTI4YTg5NGI3OWJlZTQ5YWRhYWVlNTczNjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2NkMWYwNTU4MWM4MDRjYjdhODRhZGQzODNjYjg5NDc4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODVkNzE4ZWViMDBkNGVhMzgwZjZlYWFiYTdiZWUwZGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfY2QxZjA1NTgxYzgwNGNiN2E4NGFkZDM4M2NiODk0NzgpOwogICAgICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83YWZhOWY0MzgzM2Y0MjlkODE4MjBkOTAwMTFiNmFhNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDhhMjVlMDE1YTM4NDFhZjgyMWUwMGZmMzMzOTQ0YWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDk1ZTg4ZTgyN2Y1NDdlNjhmYmIyYjllN2E1ZGNkY2QgPSAkKCc8ZGl2IGlkPSJodG1sX2Q5NWU4OGU4MjdmNTQ3ZTY4ZmJiMmI5ZTdhNWRjZGNkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XRUFQT04gTEFXUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDhhMjVlMDE1YTM4NDFhZjgyMWUwMGZmMzMzOTQ0YWUuc2V0Q29udGVudChodG1sX2Q5NWU4OGU4MjdmNTQ3ZTY4ZmJiMmI5ZTdhNWRjZGNkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfN2FmYTlmNDM4MzNmNDI5ZDgxODIwZDkwMDExYjZhYTcuYmluZFBvcHVwKHBvcHVwXzA4YTI1ZTAxNWEzODQxYWY4MjFlMDBmZjMzMzk0NGFlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzc1NzQ0Yzc4MDlmNzQ4MTI4MWU3NzQ1ZWJmMzhkZTY3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kYjI2ZjZhOWVhMDI0NzRlYWUzNWZlNzk1MDkzMzA3MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xMDI1M2E1OTAyZjE0Mjk1OTRkNmRmMGE1NDc2YjhkYiA9ICQoJzxkaXYgaWQ9Imh0bWxfMTAyNTNhNTkwMmYxNDI5NTk0ZDZkZjBhNTQ3NmI4ZGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kYjI2ZjZhOWVhMDI0NzRlYWUzNWZlNzk1MDkzMzA3MS5zZXRDb250ZW50KGh0bWxfMTAyNTNhNTkwMmYxNDI5NTk0ZDZkZjBhNTQ3NmI4ZGIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83NTc0NGM3ODA5Zjc0ODEyODFlNzc0NWViZjM4ZGU2Ny5iaW5kUG9wdXAocG9wdXBfZGIyNmY2YTllYTAyNDc0ZWFlMzVmZTc5NTA5MzMwNzEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjcwNDNlN2VmOGM5NDUzOWI0NGMzNzJkYzMwYzU0YTIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjk5ODA5NjcyOTk1OTYsLTEyMi4zODg4NTYyMDQyOTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jYjk4NTljYjMxMzU0MTAxYTYyODQ3YmE3ZTdjMTQwNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMDFjMzE5YmRkODY0NWZmOTAxMjU4MmFkZDg5YmFiMiA9ICQoJzxkaXYgaWQ9Imh0bWxfMDAxYzMxOWJkZDg2NDVmZjkwMTI1ODJhZGQ4OWJhYjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jYjk4NTljYjMxMzU0MTAxYTYyODQ3YmE3ZTdjMTQwNS5zZXRDb250ZW50KGh0bWxfMDAxYzMxOWJkZDg2NDVmZjkwMTI1ODJhZGQ4OWJhYjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iNzA0M2U3ZWY4Yzk0NTM5YjQ0YzM3MmRjMzBjNTRhMi5iaW5kUG9wdXAocG9wdXBfY2I5ODU5Y2IzMTM1NDEwMWE2Mjg0N2JhN2U3YzE0MDUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfY2UzNDFmYjI3NzVhNDJkNDg5YjQ1YjRiYmQwZDQ5MWYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU3ODgzNzY2ODg3OSwtMTIyLjQxMjk3MDUzNzU5MV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhmM2NmNGZhNDJkYTRhOWZhYTllNDVlZmZkYmI5NGM0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE5M2NhNTFlZjE3MDQ1Mjg4NDY2NTJkMDllYzY2ZjJlID0gJCgnPGRpdiBpZD0iaHRtbF8xOTNjYTUxZWYxNzA0NTI4ODQ2NjUyZDA5ZWM2NmYyZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84ZjNjZjRmYTQyZGE0YTlmYWE5ZTQ1ZWZmZGJiOTRjNC5zZXRDb250ZW50KGh0bWxfMTkzY2E1MWVmMTcwNDUyODg0NjY1MmQwOWVjNjZmMmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jZTM0MWZiMjc3NWE0MmQ0ODliNDViNGJiZDBkNDkxZi5iaW5kUG9wdXAocG9wdXBfOGYzY2Y0ZmE0MmRhNGE5ZmFhOWU0NWVmZmRiYjk0YzQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjAzYWUyNjIwNmE5NGRiYzlkNmZlYzBmNTM2OGQ3YWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjUwNTAxMjE0NjY4LC0xMjIuNDE5NjcxNzgwMjk2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDQyYWNhODMxODIxNGU5MGIzMjI0OGJjMWEwOGY1YTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYWNhY2E2ZDY5NzA2NDEwNDk3MWMyYzk4YzczMDJhNTYgPSAkKCc8ZGl2IGlkPSJodG1sX2FjYWNhNmQ2OTcwNjQxMDQ5NzFjMmM5OGM3MzAyYTU2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ0MmFjYTgzMTgyMTRlOTBiMzIyNDhiYzFhMDhmNWEwLnNldENvbnRlbnQoaHRtbF9hY2FjYTZkNjk3MDY0MTA0OTcxYzJjOThjNzMwMmE1Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzYwM2FlMjYyMDZhOTRkYmM5ZDZmZWMwZjUzNjhkN2FkLmJpbmRQb3B1cChwb3B1cF80NDJhY2E4MzE4MjE0ZTkwYjMyMjQ4YmMxYTA4ZjVhMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84YzI4NjFlNjhhZGQ0NjllOTdmYzk4ZjA4MTEwMDIxMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODMxOWNkNGEzNjllNDZjZWI1NDJhMmE3ZjQ2ZWI4NTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjM2N2MxMzdmN2MzNGM0ZWEyN2ExYWZmMjUzZmYyZmUgPSAkKCc8ZGl2IGlkPSJodG1sXzYzNjdjMTM3ZjdjMzRjNGVhMjdhMWFmZjI1M2ZmMmZlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84MzE5Y2Q0YTM2OWU0NmNlYjU0MmEyYTdmNDZlYjg1Ny5zZXRDb250ZW50KGh0bWxfNjM2N2MxMzdmN2MzNGM0ZWEyN2ExYWZmMjUzZmYyZmUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84YzI4NjFlNjhhZGQ0NjllOTdmYzk4ZjA4MTEwMDIxMi5iaW5kUG9wdXAocG9wdXBfODMxOWNkNGEzNjllNDZjZWI1NDJhMmE3ZjQ2ZWI4NTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmI1NTBmOWYwYmM1NDBkMzkwYWU3MDNlYWM1ZDMxOGMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWEwZjYwMmZkYjdiNDZiMzg3MTMzYWYwM2NhNTUzOTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmIxMmU5YTVlOWFhNDM5MDhmNGUzMWEyNDhjZTdiYjAgPSAkKCc8ZGl2IGlkPSJodG1sXzZiMTJlOWE1ZTlhYTQzOTA4ZjRlMzFhMjQ4Y2U3YmIwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWEwZjYwMmZkYjdiNDZiMzg3MTMzYWYwM2NhNTUzOTQuc2V0Q29udGVudChodG1sXzZiMTJlOWE1ZTlhYTQzOTA4ZjRlMzFhMjQ4Y2U3YmIwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMmI1NTBmOWYwYmM1NDBkMzkwYWU3MDNlYWM1ZDMxOGMuYmluZFBvcHVwKHBvcHVwXzFhMGY2MDJmZGI3YjQ2YjM4NzEzM2FmMDNjYTU1Mzk0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2UxOTM2NjljMmY0ZjQ2OGNhYTY1NjMzMmVkOWNiY2VkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzOTgwNTU5MjYzNCwtMTIyLjQxMTc3ODI5NTk5Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhhM2E1MDFjMzE3ZDRjNWI4OTEwZjNjZmE2YmMxNzMzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU0Y2Q2ZjM1NWZmZjQ2Mjk5Mzc0Y2I3YTU1N2M2NzJhID0gJCgnPGRpdiBpZD0iaHRtbF81NGNkNmYzNTVmZmY0NjI5OTM3NGNiN2E1NTdjNjcyYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84YTNhNTAxYzMxN2Q0YzViODkxMGYzY2ZhNmJjMTczMy5zZXRDb250ZW50KGh0bWxfNTRjZDZmMzU1ZmZmNDYyOTkzNzRjYjdhNTU3YzY3MmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lMTkzNjY5YzJmNGY0NjhjYWE2NTYzMzJlZDljYmNlZC5iaW5kUG9wdXAocG9wdXBfOGEzYTUwMWMzMTdkNGM1Yjg5MTBmM2NmYTZiYzE3MzMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzllOTY5NjdkYmY0NDYwY2E0NjRhODI2ZjJhMTM1MTEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jOWQwZmVkZTIzYzA0N2Q3ODZhNjRiNzk2YmI3OWRhNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82MTE3NzA2NmQ0MTk0Y2IyYjg2ZTVlNzg1YjgwY2JjMiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjExNzcwNjZkNDE5NGNiMmI4NmU1ZTc4NWI4MGNiYzIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jOWQwZmVkZTIzYzA0N2Q3ODZhNjRiNzk2YmI3OWRhNC5zZXRDb250ZW50KGh0bWxfNjExNzcwNjZkNDE5NGNiMmI4NmU1ZTc4NWI4MGNiYzIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jOWU5Njk2N2RiZjQ0NjBjYTQ2NGE4MjZmMmExMzUxMS5iaW5kUG9wdXAocG9wdXBfYzlkMGZlZGUyM2MwNDdkNzg2YTY0Yjc5NmJiNzlkYTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzk3ZGI5Yzk0ZWQ4NDFkYjkzY2NhMzY1NjIxZTkzZmIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjA5NjY5NjE1NDk5LC0xMjIuMzg3MTgxNjM1OTk1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmVmNzA3YmNmYzZmNDllOWJmNzFiMzUyYWVkMGVlOGIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDIyMDI5ZjY3MGM5NDhiOGE1NWU2NmNkZjU5N2MyZDUgPSAkKCc8ZGl2IGlkPSJodG1sX2QyMjAyOWY2NzBjOTQ4YjhhNTVlNjZjZGY1OTdjMmQ1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmVmNzA3YmNmYzZmNDllOWJmNzFiMzUyYWVkMGVlOGIuc2V0Q29udGVudChodG1sX2QyMjAyOWY2NzBjOTQ4YjhhNTVlNjZjZGY1OTdjMmQ1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNzk3ZGI5Yzk0ZWQ4NDFkYjkzY2NhMzY1NjIxZTkzZmIuYmluZFBvcHVwKHBvcHVwXzZlZjcwN2JjZmM2ZjQ5ZTliZjcxYjM1MmFlZDBlZThiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Y3YmJkMGJhN2EzMDQ2MTRiZGM4Yzk0MzBhZWQ0OTEyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDc4MTU3ODY5NTA1LC0xMjIuNDc3Mzc2NTI0MDAyOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xOTc4OTU2YjI1MzU0NTgyOWI3NTcwOTA2MGY3MWYyNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85ZWM2MjJjNmFhZTM0ZTAyOWE1MTRiNmE5YWFiMGNkNSA9ICQoJzxkaXYgaWQ9Imh0bWxfOWVjNjIyYzZhYWUzNGUwMjlhNTE0YjZhOWFhYjBjZDUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE5Nzg5NTZiMjUzNTQ1ODI5Yjc1NzA5MDYwZjcxZjI2LnNldENvbnRlbnQoaHRtbF85ZWM2MjJjNmFhZTM0ZTAyOWE1MTRiNmE5YWFiMGNkNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Y3YmJkMGJhN2EzMDQ2MTRiZGM4Yzk0MzBhZWQ0OTEyLmJpbmRQb3B1cChwb3B1cF8xOTc4OTU2YjI1MzU0NTgyOWI3NTcwOTA2MGY3MWYyNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iOWFmNjlmNWQ2ZDA0NDU5YTRiYWU5YzJiYjBkOTQ0MyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NTczODk0Mjk2NTQ5NSwtMTIyLjQ3Nzk2MDMyNzI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RkYTM0MjA3ZDM5NDQ3MTVhMTAwMzJlZmFkZDM4YTNiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2EzMzRlZmM0OTBiNzQ5MmNiZmE3NmZmNjJhYzNkMTU0ID0gJCgnPGRpdiBpZD0iaHRtbF9hMzM0ZWZjNDkwYjc0OTJjYmZhNzZmZjYyYWMzZDE1NCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kZGEzNDIwN2QzOTQ0NzE1YTEwMDMyZWZhZGQzOGEzYi5zZXRDb250ZW50KGh0bWxfYTMzNGVmYzQ5MGI3NDkyY2JmYTc2ZmY2MmFjM2QxNTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iOWFmNjlmNWQ2ZDA0NDU5YTRiYWU5YzJiYjBkOTQ0My5iaW5kUG9wdXAocG9wdXBfZGRhMzQyMDdkMzk0NDcxNWExMDAzMmVmYWRkMzhhM2IpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjhhMjFiOTJmODJlNDEyOTg4OWJmMzE2NWIyZDc5ZTggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzU2OTcwMjc1NDgyMDYsLTEyMi4zNzY3NTc2NTU1MzAwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FhNWE2M2E2NDlhZDQwNmU4MzcyNjQ5NDE5NTc3MjQ2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzcwNzJhYzcxYWQ0MjQ0NDI4ZThhMTBlZjM5NDUxZTEyID0gJCgnPGRpdiBpZD0iaHRtbF83MDcyYWM3MWFkNDI0NDQyOGU4YTEwZWYzOTQ1MWUxMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FhNWE2M2E2NDlhZDQwNmU4MzcyNjQ5NDE5NTc3MjQ2LnNldENvbnRlbnQoaHRtbF83MDcyYWM3MWFkNDI0NDQyOGU4YTEwZWYzOTQ1MWUxMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Y4YTIxYjkyZjgyZTQxMjk4ODliZjMxNjViMmQ3OWU4LmJpbmRQb3B1cChwb3B1cF9hYTVhNjNhNjQ5YWQ0MDZlODM3MjY0OTQxOTU3NzI0Nik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xZDZmMTg2NjIxOGE0NGY1YmUzMDFlOTBkZDg3NmU3MiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTI3MDUxOTk1OTIsLTEyMi40MzIzMjU4NzEwMjhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84ZjE4Mzc1Mzg2ZTA0NWM5OGFmODc4NTBkZmI2OGQ0MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83NDIzNWNmMjE2Yzk0ZGZiOWQ2ODJlMTY4ODM1MjFhOSA9ICQoJzxkaXYgaWQ9Imh0bWxfNzQyMzVjZjIxNmM5NGRmYjlkNjgyZTE2ODgzNTIxYTkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhmMTgzNzUzODZlMDQ1Yzk4YWY4Nzg1MGRmYjY4ZDQwLnNldENvbnRlbnQoaHRtbF83NDIzNWNmMjE2Yzk0ZGZiOWQ2ODJlMTY4ODM1MjFhOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzFkNmYxODY2MjE4YTQ0ZjViZTMwMWU5MGRkODc2ZTcyLmJpbmRQb3B1cChwb3B1cF84ZjE4Mzc1Mzg2ZTA0NWM5OGFmODc4NTBkZmI2OGQ0MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83ZmFhZDBiYjcxZmU0ODU1OGFhODU2ZmJlNzUwN2ZlOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MTY0Mjk4MjM4NCwtMTIyLjQwMDkwODY5ODg4OTk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2IxOGQ1ODRjYTljNDFlY2I0YzVlZWE0YjZjY2Y0ODAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODMxOWMzOTcyYjk0NDNiMWE3ZmFhYmIwZDIzNGQyN2EgPSAkKCc8ZGl2IGlkPSJodG1sXzgzMTljMzk3MmI5NDQzYjFhN2ZhYWJiMGQyMzRkMjdhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2IxOGQ1ODRjYTljNDFlY2I0YzVlZWE0YjZjY2Y0ODAuc2V0Q29udGVudChodG1sXzgzMTljMzk3MmI5NDQzYjFhN2ZhYWJiMGQyMzRkMjdhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfN2ZhYWQwYmI3MWZlNDg1NThhYTg1NmZiZTc1MDdmZTguYmluZFBvcHVwKHBvcHVwXzdiMThkNTg0Y2E5YzQxZWNiNGM1ZWVhNGI2Y2NmNDgwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZmZWUxMDM1ZmY5MTRlYzhiM2JiYjIzYjcwNDZiMzNmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzNiMGUyMGM3MTZmZTRjMDU5NmUzM2Q0MGYzNWMwYjI5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk0NjczZjBjYTVhZTQyYzA4MThkOTAyZGY4ZGY4YmRkID0gJCgnPGRpdiBpZD0iaHRtbF85NDY3M2YwY2E1YWU0MmMwODE4ZDkwMmRmOGRmOGJkZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1RPTEVOIFBST1BFUlRZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zYjBlMjBjNzE2ZmU0YzA1OTZlMzNkNDBmMzVjMGIyOS5zZXRDb250ZW50KGh0bWxfOTQ2NzNmMGNhNWFlNDJjMDgxOGQ5MDJkZjhkZjhiZGQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mZmVlMTAzNWZmOTE0ZWM4YjNiYmIyM2I3MDQ2YjMzZi5iaW5kUG9wdXAocG9wdXBfM2IwZTIwYzcxNmZlNGMwNTk2ZTMzZDQwZjM1YzBiMjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfN2E1M2M3YWQ2OTY2NGNlOWIwNDgwYjk2ODJmNDY1NjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTcyODk1OTA0NTc3OTUsLTEyMi40MDY4NzA0MDIwODJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85NzY5NjNiZjNkZGM0MmE5OTQ4YTg5YzM3YWE4ZjIzZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xZjc2NzViOTRkYmM0OTk5OThiZjBlNjg0YTc5NTljMiA9ICQoJzxkaXYgaWQ9Imh0bWxfMWY3Njc1Yjk0ZGJjNDk5OTk4YmYwZTY4NGE3OTU5YzIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzk3Njk2M2JmM2RkYzQyYTk5NDhhODljMzdhYThmMjNmLnNldENvbnRlbnQoaHRtbF8xZjc2NzViOTRkYmM0OTk5OThiZjBlNjg0YTc5NTljMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzdhNTNjN2FkNjk2NjRjZTliMDQ4MGI5NjgyZjQ2NTY2LmJpbmRQb3B1cChwb3B1cF85NzY5NjNiZjNkZGM0MmE5OTQ4YTg5YzM3YWE4ZjIzZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zNzQ0Y2VmMzU1NDU0NGM4YjAzOWU0ODg2OTg2YmIwMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0ODkwNjMwNTE4MjksLTEyMi40MjAzNTQ3ODA4NjA5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBlMGU4N2FhZTEzNzQ0NTlhOGIwZWFiMDY0ZjkxZDNlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YxNzA0MGRiZGEyODRlMzE4NDU1Yjc5ZGNmNDQ5YWQ4ID0gJCgnPGRpdiBpZD0iaHRtbF9mMTcwNDBkYmRhMjg0ZTMxODQ1NWI3OWRjZjQ0OWFkOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGUwZTg3YWFlMTM3NDQ1OWE4YjBlYWIwNjRmOTFkM2Uuc2V0Q29udGVudChodG1sX2YxNzA0MGRiZGEyODRlMzE4NDU1Yjc5ZGNmNDQ5YWQ4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMzc0NGNlZjM1NTQ1NDRjOGIwMzllNDg4Njk4NmJiMDMuYmluZFBvcHVwKHBvcHVwXzBlMGU4N2FhZTEzNzQ0NTlhOGIwZWFiMDY0ZjkxZDNlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzczZmNiY2JjYzE4ZTQzNzE4YWM5ZTUzMWRhMDhiODYyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE1NzY1NDI2OTk1LC0xMjIuNDM5OTA5NzY2NzcyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjE0ZjU2MTNlOWM1NDM5NWFlNDZkN2I4ZjllNzhkZjkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzM0YjVmMzgyOWJmNGM1MWIxNDQyZjg0MmVkM2I3YjggPSAkKCc8ZGl2IGlkPSJodG1sXzczNGI1ZjM4MjliZjRjNTFiMTQ0MmY4NDJlZDNiN2I4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82MTRmNTYxM2U5YzU0Mzk1YWU0NmQ3YjhmOWU3OGRmOS5zZXRDb250ZW50KGh0bWxfNzM0YjVmMzgyOWJmNGM1MWIxNDQyZjg0MmVkM2I3YjgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83M2ZjYmNiY2MxOGU0MzcxOGFjOWU1MzFkYTA4Yjg2Mi5iaW5kUG9wdXAocG9wdXBfNjE0ZjU2MTNlOWM1NDM5NWFlNDZkN2I4ZjllNzhkZjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNmRlZWIzMDkxMGRlNDU1NDhhNzFhN2E1YWQ1MzJiNjUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM1Njk5Mzg2OTE4LC0xMjIuNDA4NDIxMTE2OTIyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTJhMTk0MWMxZGU5NDllMGJkZjBiMDc5NDkxZjJkZDYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTE3NWM5NDQwMTc2NDNlZjk4N2VjZGJiMDQ3OWJlYTcgPSAkKCc8ZGl2IGlkPSJodG1sX2ExNzVjOTQ0MDE3NjQzZWY5ODdlY2RiYjA0NzliZWE3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81MmExOTQxYzFkZTk0OWUwYmRmMGIwNzk0OTFmMmRkNi5zZXRDb250ZW50KGh0bWxfYTE3NWM5NDQwMTc2NDNlZjk4N2VjZGJiMDQ3OWJlYTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82ZGVlYjMwOTEwZGU0NTU0OGE3MWE3YTVhZDUzMmI2NS5iaW5kUG9wdXAocG9wdXBfNTJhMTk0MWMxZGU5NDllMGJkZjBiMDc5NDkxZjJkZDYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZjZiYmQxMzhjMjM1NDI2NWJiZDkwNWM4YzA5OGU2NjQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzM2MTg2Mjc2NDU2MDQsLTEyMi40MjIzMTU2NzA3NDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kOGI4NTIxOGU0MGE0MmNmODlkMWJhZTQ4NDQ2ZDI1OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83YWQ3ZTM4YWM2OTk0MDU0YTY4OTJlM2RhY2U4NzJiMCA9ICQoJzxkaXYgaWQ9Imh0bWxfN2FkN2UzOGFjNjk5NDA1NGE2ODkyZTNkYWNlODcyYjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZSQVVEPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kOGI4NTIxOGU0MGE0MmNmODlkMWJhZTQ4NDQ2ZDI1OC5zZXRDb250ZW50KGh0bWxfN2FkN2UzOGFjNjk5NDA1NGE2ODkyZTNkYWNlODcyYjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mNmJiZDEzOGMyMzU0MjY1YmJkOTA1YzhjMDk4ZTY2NC5iaW5kUG9wdXAocG9wdXBfZDhiODUyMThlNDBhNDJjZjg5ZDFiYWU0ODQ0NmQyNTgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmU0YzM3YjA0NDRjNGE2ZmFkZmIwZWI4ZTY5MTNiMTIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzcyODBmNzg1YzdkNDQwNWZiMzBhOWU4M2VlZDJkMGI3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2MxNjBmY2JiOTY5NjQ5MjRhNjY4Y2JmNjQwYWQxNzllID0gJCgnPGRpdiBpZD0iaHRtbF9jMTYwZmNiYjk2OTY0OTI0YTY2OGNiZjY0MGFkMTc5ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzcyODBmNzg1YzdkNDQwNWZiMzBhOWU4M2VlZDJkMGI3LnNldENvbnRlbnQoaHRtbF9jMTYwZmNiYjk2OTY0OTI0YTY2OGNiZjY0MGFkMTc5ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzJlNGMzN2IwNDQ0YzRhNmZhZGZiMGViOGU2OTEzYjEyLmJpbmRQb3B1cChwb3B1cF83MjgwZjc4NWM3ZDQ0MDVmYjMwYTllODNlZWQyZDBiNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80MzY2YjllOWE5OTI0ODkyOWQ5N2U5ODExMTI0MTc4MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTg1MzAyY2FmOTNiNGFkMTk0YmJiZDE0ZjE3ZTI0NzggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDNiZDQyNWY2ZTRmNDEyNjhhOWMxNmRlMWVjZjNjZTMgPSAkKCc8ZGl2IGlkPSJodG1sXzQzYmQ0MjVmNmU0ZjQxMjY4YTljMTZkZTFlY2YzY2UzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81ODUzMDJjYWY5M2I0YWQxOTRiYmJkMTRmMTdlMjQ3OC5zZXRDb250ZW50KGh0bWxfNDNiZDQyNWY2ZTRmNDEyNjhhOWMxNmRlMWVjZjNjZTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80MzY2YjllOWE5OTI0ODkyOWQ5N2U5ODExMTI0MTc4MS5iaW5kUG9wdXAocG9wdXBfNTg1MzAyY2FmOTNiNGFkMTk0YmJiZDE0ZjE3ZTI0NzgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWIzM2EzYzFkY2NmNDBkZWI0ZjNmMzA4MjA5YzAyOWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc1NzBlNDhiZTM4ZjQyZGFiOWJiNTI2MTE0ZjgwYzRlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IyNGJkYjk3YzFjYzRlNDQ4MDJlNzNhOWY5ZDUyOTgyID0gJCgnPGRpdiBpZD0iaHRtbF9iMjRiZGI5N2MxY2M0ZTQ0ODAyZTczYTlmOWQ1Mjk4MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc1NzBlNDhiZTM4ZjQyZGFiOWJiNTI2MTE0ZjgwYzRlLnNldENvbnRlbnQoaHRtbF9iMjRiZGI5N2MxY2M0ZTQ0ODAyZTczYTlmOWQ1Mjk4Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FiMzNhM2MxZGNjZjQwZGViNGYzZjMwODIwOWMwMjlkLmJpbmRQb3B1cChwb3B1cF83NTcwZTQ4YmUzOGY0MmRhYjliYjUyNjExNGY4MGM0ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85Zjk2ZWQzMDEzODM0ZDFkYmY2OTQ1NDM4NGMxNjI5MSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3MTQ5Mzk5Njk0MTYsLTEyMi41MDc3NTAxMzEwMDQwMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI4NGMxMzNhMWRkYzQ1MzRiNWE0NmUxNjM2ZjM0YTc2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU1MGU5MzZmNWNkNTRiMDRiMjY5OTkyYTcxNjE3MWE2ID0gJCgnPGRpdiBpZD0iaHRtbF81NTBlOTM2ZjVjZDU0YjA0YjI2OTk5MmE3MTYxNzFhNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjg0YzEzM2ExZGRjNDUzNGI1YTQ2ZTE2MzZmMzRhNzYuc2V0Q29udGVudChodG1sXzU1MGU5MzZmNWNkNTRiMDRiMjY5OTkyYTcxNjE3MWE2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOWY5NmVkMzAxMzgzNGQxZGJmNjk0NTQzODRjMTYyOTEuYmluZFBvcHVwKHBvcHVwXzI4NGMxMzNhMWRkYzQ1MzRiNWE0NmUxNjM2ZjM0YTc2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2UyNzdiYmE5MzIzNjQyOGFiMGM2YWYwOGVmZTExYTk4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE4MzAyMjA0NzY2MDA1LC0xMjIuNDc0NDQ0NjM5NTk0OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wMTAzOTk5ZDY5YjY0ODEyYjE0MTgzZjQxZWI1YmE4YSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ODM4ZmJkYmMxOWQ0ODI4OWFhMDBjZDNhMTI4MzMwOCA9ICQoJzxkaXYgaWQ9Imh0bWxfNTgzOGZiZGJjMTlkNDgyODlhYTAwY2QzYTEyODMzMDgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wMTAzOTk5ZDY5YjY0ODEyYjE0MTgzZjQxZWI1YmE4YS5zZXRDb250ZW50KGh0bWxfNTgzOGZiZGJjMTlkNDgyODlhYTAwY2QzYTEyODMzMDgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lMjc3YmJhOTMyMzY0MjhhYjBjNmFmMDhlZmUxMWE5OC5iaW5kUG9wdXAocG9wdXBfMDEwMzk5OWQ2OWI2NDgxMmIxNDE4M2Y0MWViNWJhOGEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmM0MjViNGIzNTVmNDE4ZmFmMWZmMzM1ODVlYjgwNTAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTZmNjI4Yjk0ZTI4NDgwNDhjMjQ0MjM5ODI3YzgzMjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDYxODQzZTUxMTU2NGJiYjhmYWZlZjEyMDk2YjNlOGQgPSAkKCc8ZGl2IGlkPSJodG1sXzA2MTg0M2U1MTE1NjRiYmI4ZmFmZWYxMjA5NmIzZThkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTZmNjI4Yjk0ZTI4NDgwNDhjMjQ0MjM5ODI3YzgzMjYuc2V0Q29udGVudChodG1sXzA2MTg0M2U1MTE1NjRiYmI4ZmFmZWYxMjA5NmIzZThkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmM0MjViNGIzNTVmNDE4ZmFmMWZmMzM1ODVlYjgwNTAuYmluZFBvcHVwKHBvcHVwXzU2ZjYyOGI5NGUyODQ4MDQ4YzI0NDIzOTgyN2M4MzI2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2I1ZDJjY2ZiOTllNjRmMzRiNjA5MjczZGY0ZGYwNjM0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NDM3ODMwOTExMiwtMTIyLjQxOTIwMzAwNDI2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M1ZDIwYTljNTA0NTQwZjE4MGIzYWI4ZDg1NWUxOTRhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU4YjQ5Mjc3MGJiOTQzOWViZmE3YmZlMmI3ZjVhYzA4ID0gJCgnPGRpdiBpZD0iaHRtbF81OGI0OTI3NzBiYjk0MzllYmZhN2JmZTJiN2Y1YWMwOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M1ZDIwYTljNTA0NTQwZjE4MGIzYWI4ZDg1NWUxOTRhLnNldENvbnRlbnQoaHRtbF81OGI0OTI3NzBiYjk0MzllYmZhN2JmZTJiN2Y1YWMwOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2I1ZDJjY2ZiOTllNjRmMzRiNjA5MjczZGY0ZGYwNjM0LmJpbmRQb3B1cChwb3B1cF9jNWQyMGE5YzUwNDU0MGYxODBiM2FiOGQ4NTVlMTk0YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hZDc0YTk1NjM5NDU0MDg5YTMxYjcxMWFkNGNhYWUyMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTM2ODgyODQ1MzIsLTEyMi40MTI2OTAxNDIzMDgwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y3NjkyMzA1MjcwYzRhMTNiMmU5NTQ5MmNkMjI1ZWE4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk2ZTdmODBhZmFlOTRmNGNhMzc4NDRmODhkMjlkYWNiID0gJCgnPGRpdiBpZD0iaHRtbF85NmU3ZjgwYWZhZTk0ZjRjYTM3ODQ0Zjg4ZDI5ZGFjYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Y3NjkyMzA1MjcwYzRhMTNiMmU5NTQ5MmNkMjI1ZWE4LnNldENvbnRlbnQoaHRtbF85NmU3ZjgwYWZhZTk0ZjRjYTM3ODQ0Zjg4ZDI5ZGFjYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FkNzRhOTU2Mzk0NTQwODlhMzFiNzExYWQ0Y2FhZTIzLmJpbmRQb3B1cChwb3B1cF9mNzY5MjMwNTI3MGM0YTEzYjJlOTU0OTJjZDIyNWVhOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wYTgwZTI5YjUwZGY0MDQzOTZmYTM0Y2FjMDg2MWViZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hOWE0NmY4OTc3NmI0MjhlYWI4Njk1YjJmZGM0MWZlNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lNjk0YzE2YWNlNmQ0OGY5YmRkZmY5ZGVkNDkzOWU4MSA9ICQoJzxkaXYgaWQ9Imh0bWxfZTY5NGMxNmFjZTZkNDhmOWJkZGZmOWRlZDQ5MzllODEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTlhNDZmODk3NzZiNDI4ZWFiODY5NWIyZmRjNDFmZTQuc2V0Q29udGVudChodG1sX2U2OTRjMTZhY2U2ZDQ4ZjliZGRmZjlkZWQ0OTM5ZTgxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMGE4MGUyOWI1MGRmNDA0Mzk2ZmEzNGNhYzA4NjFlYmYuYmluZFBvcHVwKHBvcHVwX2E5YTQ2Zjg5Nzc2YjQyOGVhYjg2OTViMmZkYzQxZmU0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2VlYjE2ODI1MDRjZDQzNTQ4ZWM4MmUwYzRjMWM4ZWYyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3OTIwOTM3NTUzMjk1LC0xMjIuNDEwODgyODI1NTUxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTVmMjQ5ZDU3MjVhNGVkNThlZjkyYzQ4NzI3M2I2ZTkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTQ5ZTkwMDc1MTJiNGU2ZTk5OTI0ZDM2MDRiYzczZjUgPSAkKCc8ZGl2IGlkPSJodG1sXzE0OWU5MDA3NTEyYjRlNmU5OTkyNGQzNjA0YmM3M2Y1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85NWYyNDlkNTcyNWE0ZWQ1OGVmOTJjNDg3MjczYjZlOS5zZXRDb250ZW50KGh0bWxfMTQ5ZTkwMDc1MTJiNGU2ZTk5OTI0ZDM2MDRiYzczZjUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lZWIxNjgyNTA0Y2Q0MzU0OGVjODJlMGM0YzFjOGVmMi5iaW5kUG9wdXAocG9wdXBfOTVmMjQ5ZDU3MjVhNGVkNThlZjkyYzQ4NzI3M2I2ZTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjRmMzAwNWJlMTQ2NGFjNjhkZTIxMTM1ZTNjMTlhNzEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy44MDA0NTY2NDcxMDM4OSwtMTIyLjQwMTQzMjc1NDcyMjAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjU3OWNhNTI5NmJhNGMxN2I5OGQ4NjMwYzg3NTcyMzIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjJiZDA1ODBmMmJiNDE4MDk5MmExYTdjNWY2MzM5YWIgPSAkKCc8ZGl2IGlkPSJodG1sXzYyYmQwNTgwZjJiYjQxODA5OTJhMWE3YzVmNjMzOWFiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNTc5Y2E1Mjk2YmE0YzE3Yjk4ZDg2MzBjODc1NzIzMi5zZXRDb250ZW50KGh0bWxfNjJiZDA1ODBmMmJiNDE4MDk5MmExYTdjNWY2MzM5YWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iNGYzMDA1YmUxNDY0YWM2OGRlMjExMzVlM2MxOWE3MS5iaW5kUG9wdXAocG9wdXBfMjU3OWNhNTI5NmJhNGMxN2I5OGQ4NjMwYzg3NTcyMzIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTcyNGZiMTAzZmQ4NGI2Njg4MTY0N2U3NjBjMDFlZWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDM1NTUwNTQyMjY1LC0xMjIuNDIxMTI4MDI5NTA1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjMzODQxZDAzMjViNDllNGEyNzdkZWVjMzAwOGQzMTkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjg3ZTQ1NTg1M2M2NGZkOGE5MDFlMjkyYTg5YmU1ODYgPSAkKCc8ZGl2IGlkPSJodG1sXzY4N2U0NTU4NTNjNjRmZDhhOTAxZTI5MmE4OWJlNTg2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yMzM4NDFkMDMyNWI0OWU0YTI3N2RlZWMzMDA4ZDMxOS5zZXRDb250ZW50KGh0bWxfNjg3ZTQ1NTg1M2M2NGZkOGE5MDFlMjkyYTg5YmU1ODYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85NzI0ZmIxMDNmZDg0YjY2ODgxNjQ3ZTc2MGMwMWVlZS5iaW5kUG9wdXAocG9wdXBfMjMzODQxZDAzMjViNDllNGEyNzdkZWVjMzAwOGQzMTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDhmZmUyODYzYWM3NDg2ZDgwNGYzMzA2ZThmNWJkZmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODY1NjQ3NjA3Njg1LC0xMjIuNDA3MjQ0MDg3MDMyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGZiMmZlMzRkNjU4NDQxZjhmOWJlZDM4M2E4MzlkMGYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWE3NDdlODY3ZDQ3NDUwYWFhYzBmMTUyYmFkYTA2OTcgPSAkKCc8ZGl2IGlkPSJodG1sXzVhNzQ3ZTg2N2Q0NzQ1MGFhYWMwZjE1MmJhZGEwNjk3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wZmIyZmUzNGQ2NTg0NDFmOGY5YmVkMzgzYTgzOWQwZi5zZXRDb250ZW50KGh0bWxfNWE3NDdlODY3ZDQ3NDUwYWFhYzBmMTUyYmFkYTA2OTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kOGZmZTI4NjNhYzc0ODZkODA0ZjMzMDZlOGY1YmRmZi5iaW5kUG9wdXAocG9wdXBfMGZiMmZlMzRkNjU4NDQxZjhmOWJlZDM4M2E4MzlkMGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGRiMTU5MGVhMTM0NDRjZGFjNzA5MjUxM2I1NTIxMTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84YTk1NTY1ZWYyMmE0ZGIxYTM4Y2M2NTg4ZWIyZjViNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wZDNhMDY4NzU2MzM0OTYwODMzOWZjMDNjZmIyYzMwNCA9ICQoJzxkaXYgaWQ9Imh0bWxfMGQzYTA2ODc1NjMzNDk2MDgzMzlmYzAzY2ZiMmMzMDQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84YTk1NTY1ZWYyMmE0ZGIxYTM4Y2M2NTg4ZWIyZjViNC5zZXRDb250ZW50KGh0bWxfMGQzYTA2ODc1NjMzNDk2MDgzMzlmYzAzY2ZiMmMzMDQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kZGIxNTkwZWExMzQ0NGNkYWM3MDkyNTEzYjU1MjExOS5iaW5kUG9wdXAocG9wdXBfOGE5NTU2NWVmMjJhNGRiMWEzOGNjNjU4OGViMmY1YjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfN2QyMzk4YTE0MTQyNDBjMGFjZjdlN2NjNjBhNjQ5ZGEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hYzZiNGYxZGUzNWM0MDE0YTRiMWJhN2VjYzMyMjgzNyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lYWVhMmRhYTk2NDA0OWFkYjhhYmVmZjkwM2U0NzM5ZiA9ICQoJzxkaXYgaWQ9Imh0bWxfZWFlYTJkYWE5NjQwNDlhZGI4YWJlZmY5MDNlNDczOWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hYzZiNGYxZGUzNWM0MDE0YTRiMWJhN2VjYzMyMjgzNy5zZXRDb250ZW50KGh0bWxfZWFlYTJkYWE5NjQwNDlhZGI4YWJlZmY5MDNlNDczOWYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83ZDIzOThhMTQxNDI0MGMwYWNmN2U3Y2M2MGE2NDlkYS5iaW5kUG9wdXAocG9wdXBfYWM2YjRmMWRlMzVjNDAxNGE0YjFiYTdlY2MzMjI4MzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTFhYWEyYTRkNWQ1NDAwMjk3ZGU4ZGQ0MDUzYTgxYzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDQxOTI3NTA4OTMyMDUsLTEyMi40NDQ2ODU0ODIyNzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lOTMzYWQ0YzViN2E0Y2VkYjc5MmM1OTAxNDMzMjMzMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMjhhNTk4MDJiZTY0ZDVjOWY2MmUyMDYzODYyYjJiZiA9ICQoJzxkaXYgaWQ9Imh0bWxfYTI4YTU5ODAyYmU2NGQ1YzlmNjJlMjA2Mzg2MmIyYmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTkzM2FkNGM1YjdhNGNlZGI3OTJjNTkwMTQzMzIzMzIuc2V0Q29udGVudChodG1sX2EyOGE1OTgwMmJlNjRkNWM5ZjYyZTIwNjM4NjJiMmJmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTFhYWEyYTRkNWQ1NDAwMjk3ZGU4ZGQ0MDUzYTgxYzcuYmluZFBvcHVwKHBvcHVwX2U5MzNhZDRjNWI3YTRjZWRiNzkyYzU5MDE0MzMyMzMyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzRjYmNjYWIwNDdlODRkYWQ4YmFmZjYzY2E4OTczMDkyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJlNDdjODk4NjI4ZTQwMWU4YzJkZTU5OGQ4MTFiY2VhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMyNTFmY2RiZjhjNjQyZDNiM2Y3NGI4YjkzN2VjYmRlID0gJCgnPGRpdiBpZD0iaHRtbF8zMjUxZmNkYmY4YzY0MmQzYjNmNzRiOGI5MzdlY2JkZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yZTQ3Yzg5ODYyOGU0MDFlOGMyZGU1OThkODExYmNlYS5zZXRDb250ZW50KGh0bWxfMzI1MWZjZGJmOGM2NDJkM2IzZjc0YjhiOTM3ZWNiZGUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80Y2JjY2FiMDQ3ZTg0ZGFkOGJhZmY2M2NhODk3MzA5Mi5iaW5kUG9wdXAocG9wdXBfMmU0N2M4OTg2MjhlNDAxZThjMmRlNTk4ZDgxMWJjZWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzk0YjkxYTAxYzRlNGE5MThhMjg0ODliMDlkMzNhYmYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjg1MjgwNjI3NDY1LC0xMjIuNDc1NjQ3NDYwNzg1OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wOTU3MjNkNDRhMzQ0NDVmOGFiOWFkODk2Mjg5ODlmOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80ZWQwNTZjZTBlYjE0OTJkODQ1MjhjOWM0MzczYjc0ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfNGVkMDU2Y2UwZWIxNDkyZDg0NTI4YzljNDM3M2I3NGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzA5NTcyM2Q0NGEzNDQ0NWY4YWI5YWQ4OTYyODk4OWY5LnNldENvbnRlbnQoaHRtbF80ZWQwNTZjZTBlYjE0OTJkODQ1MjhjOWM0MzczYjc0ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzc5NGI5MWEwMWM0ZTRhOTE4YTI4NDg5YjA5ZDMzYWJmLmJpbmRQb3B1cChwb3B1cF8wOTU3MjNkNDRhMzQ0NDVmOGFiOWFkODk2Mjg5ODlmOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hYTgxYTdmMThmYTM0ZWRkODMzMmI0YmU4ZmZmODUxNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0Mjg1MTczNzQ0NDg5NCwtMTIyLjQyMDk2NzQ0MDU2NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRmZGZmMTY1ZGZjZDRjYmRiZWYxOWI5MDNjYmI0MDA5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJjNzFjNmYxZDYzODQ4NWI5Y2FmNWUzZmUxNmIzZWEyID0gJCgnPGRpdiBpZD0iaHRtbF8yYzcxYzZmMWQ2Mzg0ODViOWNhZjVlM2ZlMTZiM2VhMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRmZGZmMTY1ZGZjZDRjYmRiZWYxOWI5MDNjYmI0MDA5LnNldENvbnRlbnQoaHRtbF8yYzcxYzZmMWQ2Mzg0ODViOWNhZjVlM2ZlMTZiM2VhMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FhODFhN2YxOGZhMzRlZGQ4MzMyYjRiZThmZmY4NTE0LmJpbmRQb3B1cChwb3B1cF80ZmRmZjE2NWRmY2Q0Y2JkYmVmMTliOTAzY2JiNDAwOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84OGIxODIxOGQyNzM0NWIzOTg3YjJiZTY3MDk2ZmEyNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mMDEwOGRhYTAwYWE0MjA2YmFlZTUxMTAyZDFjY2UzMyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMWFlNjU3MjFlODY0NTE4OTM0OTE3NWMyZDllZGIxYyA9ICQoJzxkaXYgaWQ9Imh0bWxfYTFhZTY1NzIxZTg2NDUxODkzNDkxNzVjMmQ5ZWRiMWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjAxMDhkYWEwMGFhNDIwNmJhZWU1MTEwMmQxY2NlMzMuc2V0Q29udGVudChodG1sX2ExYWU2NTcyMWU4NjQ1MTg5MzQ5MTc1YzJkOWVkYjFjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfODhiMTgyMThkMjczNDViMzk4N2IyYmU2NzA5NmZhMjUuYmluZFBvcHVwKHBvcHVwX2YwMTA4ZGFhMDBhYTQyMDZiYWVlNTExMDJkMWNjZTMzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzlkY2E0ZDI2MzE1NTRmODlhMjE0YmIzNjFlOGIyMTI3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc5MTY3NDIxODk2MywtMTIyLjQwNjM0NjQyNTYzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U3OTZjYTY4OTA4ZDRhNzlhYmVmM2E5NWY4Y2VlMGM0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzMyZjc5YzUyMThlNjQ0ZjdiMTEyODk0NWY5ZmE0ODUwID0gJCgnPGRpdiBpZD0iaHRtbF8zMmY3OWM1MjE4ZTY0NGY3YjExMjg5NDVmOWZhNDg1MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTc5NmNhNjg5MDhkNGE3OWFiZWYzYTk1ZjhjZWUwYzQuc2V0Q29udGVudChodG1sXzMyZjc5YzUyMThlNjQ0ZjdiMTEyODk0NWY5ZmE0ODUwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOWRjYTRkMjYzMTU1NGY4OWEyMTRiYjM2MWU4YjIxMjcuYmluZFBvcHVwKHBvcHVwX2U3OTZjYTY4OTA4ZDRhNzlhYmVmM2E5NWY4Y2VlMGM0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2RiNzU2Y2MzNzFlODRhNjg4YzRmNjEwNGM2MDRjOTg4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY1NzE4NDM5NTI4MiwtMTIyLjQwOTUyOTkxMzI3OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzk1ZDEwMjMxZGEzZDQwOGU5Y2E0MWMxNzI4ZGMxYjg5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzVmM2I1ZmQ1OGZkZTQyMjJiMDQyZjQ4OTY2YzAzZmIwID0gJCgnPGRpdiBpZD0iaHRtbF81ZjNiNWZkNThmZGU0MjIyYjA0MmY0ODk2NmMwM2ZiMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTVkMTAyMzFkYTNkNDA4ZTljYTQxYzE3MjhkYzFiODkuc2V0Q29udGVudChodG1sXzVmM2I1ZmQ1OGZkZTQyMjJiMDQyZjQ4OTY2YzAzZmIwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZGI3NTZjYzM3MWU4NGE2ODhjNGY2MTA0YzYwNGM5ODguYmluZFBvcHVwKHBvcHVwXzk1ZDEwMjMxZGEzZDQwOGU5Y2E0MWMxNzI4ZGMxYjg5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzgxOTEwMTA1NGI3YTQzZGRiNDNlZjc1NmY0NzA3MzIwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMmFmMjVkNTQ0MDI0OWY3YTY3ZWUzNzQ1ODFlNDUzOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YjFlYjM4ZTQwNjM0NjAzOWJkN2ZhYmViODQzMjIwOSA9ICQoJzxkaXYgaWQ9Imh0bWxfNGIxZWIzOGU0MDYzNDYwMzliZDdmYWJlYjg0MzIyMDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTJhZjI1ZDU0NDAyNDlmN2E2N2VlMzc0NTgxZTQ1Mzkuc2V0Q29udGVudChodG1sXzRiMWViMzhlNDA2MzQ2MDM5YmQ3ZmFiZWI4NDMyMjA5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfODE5MTAxMDU0YjdhNDNkZGI0M2VmNzU2ZjQ3MDczMjAuYmluZFBvcHVwKHBvcHVwX2EyYWYyNWQ1NDQwMjQ5ZjdhNjdlZTM3NDU4MWU0NTM5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzk1ODA4MmRkNGEwMTQxOWM5Nzc5OTU1YjNlZjZiYzNkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzUzNzdjZTUwOWEyNDk3OTk0ZWFlMTY0NjE4NTNkZjYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTE4NDE2ZmVmMTMwNDFjNGIwZjZjM2FkZjk3ZWVlY2IgPSAkKCc8ZGl2IGlkPSJodG1sXzkxODQxNmZlZjEzMDQxYzRiMGY2YzNhZGY5N2VlZWNiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzUzNzdjZTUwOWEyNDk3OTk0ZWFlMTY0NjE4NTNkZjYuc2V0Q29udGVudChodG1sXzkxODQxNmZlZjEzMDQxYzRiMGY2YzNhZGY5N2VlZWNiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTU4MDgyZGQ0YTAxNDE5Yzk3Nzk5NTViM2VmNmJjM2QuYmluZFBvcHVwKHBvcHVwXzM1Mzc3Y2U1MDlhMjQ5Nzk5NGVhZTE2NDYxODUzZGY2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzE2ZjQzMjY1YjliMjQ4ZGI5YTVkYmFlYzNjZWQ0MDcwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTAzZjVlZjRhOGE4NGNhYzlhMzkyOGNlZjhhMDEzNDcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWM1MWJmMTFmMWY3NGVmODk1ZDBmOGJjODgzNzMxOGIgPSAkKCc8ZGl2IGlkPSJodG1sXzljNTFiZjExZjFmNzRlZjg5NWQwZjhiYzg4MzczMThiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTAzZjVlZjRhOGE4NGNhYzlhMzkyOGNlZjhhMDEzNDcuc2V0Q29udGVudChodG1sXzljNTFiZjExZjFmNzRlZjg5NWQwZjhiYzg4MzczMThiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTZmNDMyNjViOWIyNDhkYjlhNWRiYWVjM2NlZDQwNzAuYmluZFBvcHVwKHBvcHVwXzUwM2Y1ZWY0YThhODRjYWM5YTM5MjhjZWY4YTAxMzQ3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2RkMGI0MjNjNGMwYTQ5MDA4ODVmNGRkMDM4NDY3NGE5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU3YzQyMjY3OGEzMDRkOTBhYTIwNmNkNTQ2NWY3MDE3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2ViN2EzOTQ5ZGM1NDRjOTBhYzhkZGQzMWUxN2I1NzRjID0gJCgnPGRpdiBpZD0iaHRtbF9lYjdhMzk0OWRjNTQ0YzkwYWM4ZGRkMzFlMTdiNTc0YyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU3YzQyMjY3OGEzMDRkOTBhYTIwNmNkNTQ2NWY3MDE3LnNldENvbnRlbnQoaHRtbF9lYjdhMzk0OWRjNTQ0YzkwYWM4ZGRkMzFlMTdiNTc0Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2RkMGI0MjNjNGMwYTQ5MDA4ODVmNGRkMDM4NDY3NGE5LmJpbmRQb3B1cChwb3B1cF81N2M0MjI2NzhhMzA0ZDkwYWEyMDZjZDU0NjVmNzAxNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iYjQwOWVmYjgxOTY0YzQyYjk4OTQ0OGVjOWI2YTc1YiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iODI5ZmE2ZmRjNmQ0NjQ4OGQ4MjI4MzI1YWNiODNjNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81YmExNjZiNmY0YTM0ZDRkODAxOTNmODE5NzllNWRkYSA9ICQoJzxkaXYgaWQ9Imh0bWxfNWJhMTY2YjZmNGEzNGQ0ZDgwMTkzZjgxOTc5ZTVkZGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVUcvTkFSQ09USUM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2I4MjlmYTZmZGM2ZDQ2NDg4ZDgyMjgzMjVhY2I4M2M2LnNldENvbnRlbnQoaHRtbF81YmExNjZiNmY0YTM0ZDRkODAxOTNmODE5NzllNWRkYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2JiNDA5ZWZiODE5NjRjNDJiOTg5NDQ4ZWM5YjZhNzViLmJpbmRQb3B1cChwb3B1cF9iODI5ZmE2ZmRjNmQ0NjQ4OGQ4MjI4MzI1YWNiODNjNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80M2NhODM2MTY2MGQ0MzNkYTMxMTBhMjFmZTU1YTc5NiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NjAxNjAxMTQxMDMsLTEyMi40MDM2NDQ2MjA0MzldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81ZTZmMGVjZTIyZmI0MTgyODc3ZWM1MWMwZDQ3NGQyNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83ZDc2YTllNGRiZWU0ZDEzYjI0OWQzMmI3ZDFhYTJjOSA9ICQoJzxkaXYgaWQ9Imh0bWxfN2Q3NmE5ZTRkYmVlNGQxM2IyNDlkMzJiN2QxYWEyYzkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81ZTZmMGVjZTIyZmI0MTgyODc3ZWM1MWMwZDQ3NGQyNi5zZXRDb250ZW50KGh0bWxfN2Q3NmE5ZTRkYmVlNGQxM2IyNDlkMzJiN2QxYWEyYzkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80M2NhODM2MTY2MGQ0MzNkYTMxMTBhMjFmZTU1YTc5Ni5iaW5kUG9wdXAocG9wdXBfNWU2ZjBlY2UyMmZiNDE4Mjg3N2VjNTFjMGQ0NzRkMjYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNWNkNzhjZTlkZDk0NGVjMzg4YjVhNDc2NTE5NjU3YzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjYwMTYwMTE0MTAzLC0xMjIuNDAzNjQ0NjIwNDM5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmZlZmJiNWIyYmFlNDFjMGJkZWRkNjRkMGVjNDJiMzEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjk4ZDk5ZWU5NjBmNGIwMGEzYWEzNmE0YTU4ZmFhOTUgPSAkKCc8ZGl2IGlkPSJodG1sX2Y5OGQ5OWVlOTYwZjRiMDBhM2FhMzZhNGE1OGZhYTk1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmZlZmJiNWIyYmFlNDFjMGJkZWRkNjRkMGVjNDJiMzEuc2V0Q29udGVudChodG1sX2Y5OGQ5OWVlOTYwZjRiMDBhM2FhMzZhNGE1OGZhYTk1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNWNkNzhjZTlkZDk0NGVjMzg4YjVhNDc2NTE5NjU3YzcuYmluZFBvcHVwKHBvcHVwX2JmZWZiYjViMmJhZTQxYzBiZGVkZDY0ZDBlYzQyYjMxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzY0ZjJhODVjOGQyZjQwZDU5NzE3NGVjOTllNWQzOGY5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWE2ODE0MzdjYTQyNGQzMTg0YmY1ZmIxY2QzYjkxYWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWMzNWY0YTVmYjcxNDBjMWJjMjQ5Y2ZjZmExOTdhZmQgPSAkKCc8ZGl2IGlkPSJodG1sXzFjMzVmNGE1ZmI3MTQwYzFiYzI0OWNmY2ZhMTk3YWZkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xYTY4MTQzN2NhNDI0ZDMxODRiZjVmYjFjZDNiOTFhZS5zZXRDb250ZW50KGh0bWxfMWMzNWY0YTVmYjcxNDBjMWJjMjQ5Y2ZjZmExOTdhZmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82NGYyYTg1YzhkMmY0MGQ1OTcxNzRlYzk5ZTVkMzhmOS5iaW5kUG9wdXAocG9wdXBfMWE2ODE0MzdjYTQyNGQzMTg0YmY1ZmIxY2QzYjkxYWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNmNhMjAzYjczYjZjNDRjMGEwMDU2YWVhMzRkMDJiZDggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lMTdlNjMwNzQ3ZDA0MDgyYTg5YWI4YjAwMGU2NWQyZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jZjY3YzE2YmEzN2Y0NjkxODc0ZmZmYWQ0NDcxNWNhMSA9ICQoJzxkaXYgaWQ9Imh0bWxfY2Y2N2MxNmJhMzdmNDY5MTg3NGZmZmFkNDQ3MTVjYTEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lMTdlNjMwNzQ3ZDA0MDgyYTg5YWI4YjAwMGU2NWQyZS5zZXRDb250ZW50KGh0bWxfY2Y2N2MxNmJhMzdmNDY5MTg3NGZmZmFkNDQ3MTVjYTEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82Y2EyMDNiNzNiNmM0NGMwYTAwNTZhZWEzNGQwMmJkOC5iaW5kUG9wdXAocG9wdXBfZTE3ZTYzMDc0N2QwNDA4MmE4OWFiOGIwMDBlNjVkMmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzE3Y2YzZjFmMzA2NGIwZDgyOWJiMWQ2NmU0OTk0NGQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzc1MTE4ODk1Njk1LC0xMjIuNDE4MDQ1NDUyNzY4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzQzZTE5NjUxZDQyNGVlM2JhM2JkYjYzYTVmYTk4OWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjIwMTRiNjI5OWI3NDY5ZmFkYzQ3NTNjMTJjZDIwMGYgPSAkKCc8ZGl2IGlkPSJodG1sX2YyMDE0YjYyOTliNzQ2OWZhZGM0NzUzYzEyY2QyMDBmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNDNlMTk2NTFkNDI0ZWUzYmEzYmRiNjNhNWZhOTg5ZC5zZXRDb250ZW50KGh0bWxfZjIwMTRiNjI5OWI3NDY5ZmFkYzQ3NTNjMTJjZDIwMGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83MTdjZjNmMWYzMDY0YjBkODI5YmIxZDY2ZTQ5OTQ0ZC5iaW5kUG9wdXAocG9wdXBfMzQzZTE5NjUxZDQyNGVlM2JhM2JkYjYzYTVmYTk4OWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTNkMDkyMWQyYjZmNDZhMWJjZWY0NzE5NzkzNWQ3ZGIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIwMjM4NDc4OTc1LC0xMjIuNDAxMTYxNTU1NjAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWM2ZTM3MmE4YTJjNDQyY2FhZWMzMzUzOWFjYTkzNmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTM0NjkxZmY1MTdiNGRiYzk1ODBiZWM5MzU5NTFjMWMgPSAkKCc8ZGl2IGlkPSJodG1sXzEzNDY5MWZmNTE3YjRkYmM5NTgwYmVjOTM1OTUxYzFjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWM2ZTM3MmE4YTJjNDQyY2FhZWMzMzUzOWFjYTkzNmUuc2V0Q29udGVudChodG1sXzEzNDY5MWZmNTE3YjRkYmM5NTgwYmVjOTM1OTUxYzFjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYTNkMDkyMWQyYjZmNDZhMWJjZWY0NzE5NzkzNWQ3ZGIuYmluZFBvcHVwKHBvcHVwXzFjNmUzNzJhOGEyYzQ0MmNhYWVjMzM1MzlhY2E5MzZlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzVmMmI0OWEzZWMwMjQ0MjQ5NGMxMzk5YmVjMjAwZmQwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI3MDA1MzE5NjI5OTk1LC0xMjIuNDAzNDA4NjY5MTkxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzljYjk5Yjc5MDIyNGEwODljMTRmM2M5OWZmM2QxYmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjZjZTZmYjU0YTAzNGYwN2FhYTQ3NWJhZGNkYTBkMDAgPSAkKCc8ZGl2IGlkPSJodG1sXzI2Y2U2ZmI1NGEwMzRmMDdhYWE0NzViYWRjZGEwZDAwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzljYjk5Yjc5MDIyNGEwODljMTRmM2M5OWZmM2QxYmUuc2V0Q29udGVudChodG1sXzI2Y2U2ZmI1NGEwMzRmMDdhYWE0NzViYWRjZGEwZDAwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNWYyYjQ5YTNlYzAyNDQyNDk0YzEzOTliZWMyMDBmZDAuYmluZFBvcHVwKHBvcHVwXzc5Y2I5OWI3OTAyMjRhMDg5YzE0ZjNjOTlmZjNkMWJlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzAxZTA2NmU1ODg3ZjQ2ZjhiNDEyZTUzNzdhNTM0Y2E4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VlMTA2YjQ4NWNmNDQ0NGI4MDRjOTY1MGM2Njc2MTQ3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JmZDRhNmI3ODRmNDQ0NjFiMWRkZTMxNTJlZDU3NTMzID0gJCgnPGRpdiBpZD0iaHRtbF9iZmQ0YTZiNzg0ZjQ0NDYxYjFkZGUzMTUyZWQ1NzUzMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lZTEwNmI0ODVjZjQ0NDRiODA0Yzk2NTBjNjY3NjE0Ny5zZXRDb250ZW50KGh0bWxfYmZkNGE2Yjc4NGY0NDQ2MWIxZGRlMzE1MmVkNTc1MzMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wMWUwNjZlNTg4N2Y0NmY4YjQxMmU1Mzc3YTUzNGNhOC5iaW5kUG9wdXAocG9wdXBfZWUxMDZiNDg1Y2Y0NDQ0YjgwNGM5NjUwYzY2NzYxNDcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTE3MTBkOWU0MGJhNGI2ODkxNmQ3YmU5MTIzN2ZlM2YgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTMwMTg2NTM3NDQ2MDQsLTEyMi40MTg1ODcxNzIyMTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83ZDE5Y2U4M2Q3ZTI0ZTQ3YjM3NTA3MzNmNmE5NDJkNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80MTNkODRkMGM4OTk0NjJiYWRiZGQ5ZDk2MGZkZDYzZSA9ICQoJzxkaXYgaWQ9Imh0bWxfNDEzZDg0ZDBjODk5NDYyYmFkYmRkOWQ5NjBmZGQ2M2UiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2QxOWNlODNkN2UyNGU0N2IzNzUwNzMzZjZhOTQyZDYuc2V0Q29udGVudChodG1sXzQxM2Q4NGQwYzg5OTQ2MmJhZGJkZDlkOTYwZmRkNjNlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTE3MTBkOWU0MGJhNGI2ODkxNmQ3YmU5MTIzN2ZlM2YuYmluZFBvcHVwKHBvcHVwXzdkMTljZTgzZDdlMjRlNDdiMzc1MDczM2Y2YTk0MmQ2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Q4Y2FlNmM1M2FmNDQ0MTA5NzA0NTMxYzI1MTY2MTk4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0MDQxODM4NTA0MSwtMTIyLjQxNDM3MDYyNzQ5NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzllMDJkMDc3MDQyZDQxMGM5MGZiODUyOTU3YWE1ZDMwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzljYjMwOGYyOGNjYjQ4ZjBiNDIzZDgzYzJjNDMzNWFiID0gJCgnPGRpdiBpZD0iaHRtbF85Y2IzMDhmMjhjY2I0OGYwYjQyM2Q4M2MyYzQzMzVhYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RlJBVUQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzllMDJkMDc3MDQyZDQxMGM5MGZiODUyOTU3YWE1ZDMwLnNldENvbnRlbnQoaHRtbF85Y2IzMDhmMjhjY2I0OGYwYjQyM2Q4M2MyYzQzMzVhYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Q4Y2FlNmM1M2FmNDQ0MTA5NzA0NTMxYzI1MTY2MTk4LmJpbmRQb3B1cChwb3B1cF85ZTAyZDA3NzA0MmQ0MTBjOTBmYjg1Mjk1N2FhNWQzMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85NjgyMzZlN2VlYTE0N2E2YWY2OGI2YzUwMDE4YzQ4ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MDUzODk5MzcyNSwtMTIyLjQwMzkxNTY4MTU3MTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzJjNGM3ZjVhNzllNGZhNTkwYzY1YzA1NTdiYWJhNzcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTIwMzlhYzBlOWY0NDJiMzg1ZDY0YzZmYjFjNGVmZDcgPSAkKCc8ZGl2IGlkPSJodG1sXzEyMDM5YWMwZTlmNDQyYjM4NWQ2NGM2ZmIxYzRlZmQ3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zMmM0YzdmNWE3OWU0ZmE1OTBjNjVjMDU1N2JhYmE3Ny5zZXRDb250ZW50KGh0bWxfMTIwMzlhYzBlOWY0NDJiMzg1ZDY0YzZmYjFjNGVmZDcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85NjgyMzZlN2VlYTE0N2E2YWY2OGI2YzUwMDE4YzQ4ZS5iaW5kUG9wdXAocG9wdXBfMzJjNGM3ZjVhNzllNGZhNTkwYzY1YzA1NTdiYWJhNzcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODA5YTFkNTA5MTcwNDliMjk3NTIzM2Q5ODE1ZDQ3OTYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODMwOTk4MjQ0NTkyMSwtMTIyLjQxOTE4MzA5NjM2Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzhkNWQ5ZDUxMGI4ODQ0ZmI5NWVkM2RmZTNlMDY3Y2UyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg1NjFjNmMyMzY5MDQ0NGY5MjQzNzQzODViNTNiMzExID0gJCgnPGRpdiBpZD0iaHRtbF84NTYxYzZjMjM2OTA0NDRmOTI0Mzc0Mzg1YjUzYjMxMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzhkNWQ5ZDUxMGI4ODQ0ZmI5NWVkM2RmZTNlMDY3Y2UyLnNldENvbnRlbnQoaHRtbF84NTYxYzZjMjM2OTA0NDRmOTI0Mzc0Mzg1YjUzYjMxMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzgwOWExZDUwOTE3MDQ5YjI5NzUyMzNkOTgxNWQ0Nzk2LmJpbmRQb3B1cChwb3B1cF84ZDVkOWQ1MTBiODg0NGZiOTVlZDNkZmUzZTA2N2NlMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80N2M3MjY5YzY0ODY0MWIwYWJhMmRiZDRiNWFiY2YxNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDVhNGRmNDRmOGY3NDZkMDhjMjc5OTYyNTBlMDg4NWUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzViOTg1NTdlZWNmNGM1MzhmNjQ1MGQzZmFiMDhhODAgPSAkKCc8ZGl2IGlkPSJodG1sX2M1Yjk4NTU3ZWVjZjRjNTM4ZjY0NTBkM2ZhYjA4YTgwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDVhNGRmNDRmOGY3NDZkMDhjMjc5OTYyNTBlMDg4NWUuc2V0Q29udGVudChodG1sX2M1Yjk4NTU3ZWVjZjRjNTM4ZjY0NTBkM2ZhYjA4YTgwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDdjNzI2OWM2NDg2NDFiMGFiYTJkYmQ0YjVhYmNmMTQuYmluZFBvcHVwKHBvcHVwXzQ1YTRkZjQ0ZjhmNzQ2ZDA4YzI3OTk2MjUwZTA4ODVlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQzOWVjMzUzZTcyYTQxODQ4NGRkMzhmNDI0NGI2YTdlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0OTkxMjk0NDM2NiwtMTIyLjQzNzc5OTcwMzQ2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZmYjk5ODEwYzliOTQ4ZTU4OTFjZjdjMDA3NDFjYTI3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzlhMDkwZjA4MGQyMTQ4MmNhYmIyMDg0NmZlY2RlMmI5ID0gJCgnPGRpdiBpZD0iaHRtbF85YTA5MGYwODBkMjE0ODJjYWJiMjA4NDZmZWNkZTJiOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmZiOTk4MTBjOWI5NDhlNTg5MWNmN2MwMDc0MWNhMjcuc2V0Q29udGVudChodG1sXzlhMDkwZjA4MGQyMTQ4MmNhYmIyMDg0NmZlY2RlMmI5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDM5ZWMzNTNlNzJhNDE4NDg0ZGQzOGY0MjQ0YjZhN2UuYmluZFBvcHVwKHBvcHVwX2ZmYjk5ODEwYzliOTQ4ZTU4OTFjZjdjMDA3NDFjYTI3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2MwODA4M2Y4NTcwZTQ1NzNhYTMxZjg1MDIyYjM0NDVmID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzFlNzE1NzVhOTQyOTRjZWE4MDVlZGY5MmIzOGRmZmE2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RiZTZhYWY4MjMwODQyYmNiNjg5MTU2MDVkYWRjNjU5ID0gJCgnPGRpdiBpZD0iaHRtbF9kYmU2YWFmODIzMDg0MmJjYjY4OTE1NjA1ZGFkYzY1OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzFlNzE1NzVhOTQyOTRjZWE4MDVlZGY5MmIzOGRmZmE2LnNldENvbnRlbnQoaHRtbF9kYmU2YWFmODIzMDg0MmJjYjY4OTE1NjA1ZGFkYzY1OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2MwODA4M2Y4NTcwZTQ1NzNhYTMxZjg1MDIyYjM0NDVmLmJpbmRQb3B1cChwb3B1cF8xZTcxNTc1YTk0Mjk0Y2VhODA1ZWRmOTJiMzhkZmZhNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83NmZjZDk3NjBlNTA0YzQ4YWU0YTZmNTM3OTllMTk1ZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzA5MDI3NDM2NjksLTEyMi40MjEzMzI2ODQ2MzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iYjhmMjk3NmY5ZmE0ZTY5YTgxNGZlNmY3Mjk0NDAwZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zM2IxODI3ZDkzZWQ0MDQ1YmIzZjA0ZTlmZmM2ZGE3NiA9ICQoJzxkaXYgaWQ9Imh0bWxfMzNiMTgyN2Q5M2VkNDA0NWJiM2YwNGU5ZmZjNmRhNzYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iYjhmMjk3NmY5ZmE0ZTY5YTgxNGZlNmY3Mjk0NDAwZi5zZXRDb250ZW50KGh0bWxfMzNiMTgyN2Q5M2VkNDA0NWJiM2YwNGU5ZmZjNmRhNzYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83NmZjZDk3NjBlNTA0YzQ4YWU0YTZmNTM3OTllMTk1Zi5iaW5kUG9wdXAocG9wdXBfYmI4ZjI5NzZmOWZhNGU2OWE4MTRmZTZmNzI5NDQwMGYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODNmNmYwZTBiZDE2NGRhYzgxMjg3YmY3ZmZmZmNmYmEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODc2Mjg0ZjVlMTY0NDFjZjk0NmU0ZTQ2MzJiMDY0ZWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfY2ZlMjgwMDkwNTU0NDU0ZDk0NWJmOTE3OTY2ZjZlMjEgPSAkKCc8ZGl2IGlkPSJodG1sX2NmZTI4MDA5MDU1NDQ1NGQ5NDViZjkxNzk2NmY2ZTIxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODc2Mjg0ZjVlMTY0NDFjZjk0NmU0ZTQ2MzJiMDY0ZWEuc2V0Q29udGVudChodG1sX2NmZTI4MDA5MDU1NDQ1NGQ5NDViZjkxNzk2NmY2ZTIxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfODNmNmYwZTBiZDE2NGRhYzgxMjg3YmY3ZmZmZmNmYmEuYmluZFBvcHVwKHBvcHVwXzg3NjI4NGY1ZTE2NDQxY2Y5NDZlNGU0NjMyYjA2NGVhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2FjYWJhMDI0MzFhOTQ2ODFhNzIxYzA4MTgyZTg4Y2E3ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwMDM3OTk5NTEyNzk1LC0xMjIuNDA0NTk0MTQwNjM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzlkNDZiNTY1ZGFlNGU2MWJhMmE3NGEwMTcxZTU2ZmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzUyYmQ4ZDJhNTkzNDBmMDgwNTM4MjdkMTk4YzgzMDEgPSAkKCc8ZGl2IGlkPSJodG1sXzM1MmJkOGQyYTU5MzQwZjA4MDUzODI3ZDE5OGM4MzAxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc5ZDQ2YjU2NWRhZTRlNjFiYTJhNzRhMDE3MWU1NmZhLnNldENvbnRlbnQoaHRtbF8zNTJiZDhkMmE1OTM0MGYwODA1MzgyN2QxOThjODMwMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FjYWJhMDI0MzFhOTQ2ODFhNzIxYzA4MTgyZTg4Y2E3LmJpbmRQb3B1cChwb3B1cF83OWQ0NmI1NjVkYWU0ZTYxYmEyYTc0YTAxNzFlNTZmYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83Zjc2ZDI5NjIxNTY0ZmM1YjZkYzFjMzc1ZjVhM2U5MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lOGI0N2VkY2U0NmE0YWQ4ODdkNmFhMzZhNGVkOTNhMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mNDFmZDY5OWQxMzU0MGM3OTZhZjA5MDNhNmJjMDhmYSA9ICQoJzxkaXYgaWQ9Imh0bWxfZjQxZmQ2OTlkMTM1NDBjNzk2YWYwOTAzYTZiYzA4ZmEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZThiNDdlZGNlNDZhNGFkODg3ZDZhYTM2YTRlZDkzYTAuc2V0Q29udGVudChodG1sX2Y0MWZkNjk5ZDEzNTQwYzc5NmFmMDkwM2E2YmMwOGZhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfN2Y3NmQyOTYyMTU2NGZjNWI2ZGMxYzM3NWY1YTNlOTAuYmluZFBvcHVwKHBvcHVwX2U4YjQ3ZWRjZTQ2YTRhZDg4N2Q2YWEzNmE0ZWQ5M2EwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzVjN2U2YjI1YTM1NjQ5Y2NiYWY5ZmY5YTkyYjI5NjZiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NTE1ODc0MTYyMjk1LC0xMjIuNDA3NDM0OTg5NTIzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzk2NGQwYzc1NzU5NGQxZThjZDA0ZjAxMmY2YzU2Y2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTRmZGI2YzRmODc5NGJhNGIzMjhjMzMzNzM3ODg4OWUgPSAkKCc8ZGl2IGlkPSJodG1sX2U0ZmRiNmM0Zjg3OTRiYTRiMzI4YzMzMzczNzg4ODllIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzk2NGQwYzc1NzU5NGQxZThjZDA0ZjAxMmY2YzU2Y2Muc2V0Q29udGVudChodG1sX2U0ZmRiNmM0Zjg3OTRiYTRiMzI4YzMzMzczNzg4ODllKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNWM3ZTZiMjVhMzU2NDljY2JhZjlmZjlhOTJiMjk2NmIuYmluZFBvcHVwKHBvcHVwXzM5NjRkMGM3NTc1OTRkMWU4Y2QwNGYwMTJmNmM1NmNjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzVlNGUyMmJmZWExNDQyMTE4NWE4NjFhYWVjN2JmMjM4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM2Njg4NTJlM2Q3NTQyZWI5ZDhlMDdkZTdlMGQwOTY5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RjNjU0ZjE2NmFhZjQwMzc4MjZhZTBjOGRmYTcwMzFlID0gJCgnPGRpdiBpZD0iaHRtbF9kYzY1NGYxNjZhYWY0MDM3ODI2YWUwYzhkZmE3MDMxZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UFJPU1RJVFVUSU9OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNjY4ODUyZTNkNzU0MmViOWQ4ZTA3ZGU3ZTBkMDk2OS5zZXRDb250ZW50KGh0bWxfZGM2NTRmMTY2YWFmNDAzNzgyNmFlMGM4ZGZhNzAzMWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81ZTRlMjJiZmVhMTQ0MjExODVhODYxYWFlYzdiZjIzOC5iaW5kUG9wdXAocG9wdXBfMzY2ODg1MmUzZDc1NDJlYjlkOGUwN2RlN2UwZDA5NjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjAyMjI5NGE4YmQyNGUwODlkMjBhNGZiM2Y0MWY1NTMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzg1MjMzNzc2MDMyLC0xMjIuNDAzNDY0MDgwMDMzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzQ0ZTI2YzlhNTEyNGFmN2IwY2NiYzIzM2Y0MzM5MjMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTlkNWFjMjMzYzExNGQ1ZWEwY2Y1NDAyNzE3OTJhZjkgPSAkKCc8ZGl2IGlkPSJodG1sX2E5ZDVhYzIzM2MxMTRkNWVhMGNmNTQwMjcxNzkyYWY5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzQ0ZTI2YzlhNTEyNGFmN2IwY2NiYzIzM2Y0MzM5MjMuc2V0Q29udGVudChodG1sX2E5ZDVhYzIzM2MxMTRkNWVhMGNmNTQwMjcxNzkyYWY5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjAyMjI5NGE4YmQyNGUwODlkMjBhNGZiM2Y0MWY1NTMuYmluZFBvcHVwKHBvcHVwXzc0NGUyNmM5YTUxMjRhZjdiMGNjYmMyMzNmNDMzOTIzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzJkNzY1YTJlNWRmZjQ1MjQ4MmNhMTc5NjM3YjU4ZDRiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lNGE3OGUwMDg1YTg0ZWUwYjc5MGQ3ZjY2ZjE4NWViZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zZTY0N2MzNjgxZDU0MGI0YTI5MDE1NGFkNmRmMzhkZSA9ICQoJzxkaXYgaWQ9Imh0bWxfM2U2NDdjMzY4MWQ1NDBiNGEyOTAxNTRhZDZkZjM4ZGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTRhNzhlMDA4NWE4NGVlMGI3OTBkN2Y2NmYxODVlYmUuc2V0Q29udGVudChodG1sXzNlNjQ3YzM2ODFkNTQwYjRhMjkwMTU0YWQ2ZGYzOGRlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMmQ3NjVhMmU1ZGZmNDUyNDgyY2ExNzk2MzdiNThkNGIuYmluZFBvcHVwKHBvcHVwX2U0YTc4ZTAwODVhODRlZTBiNzkwZDdmNjZmMTg1ZWJlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2RkYWZlYTEwMmNmZjQyMjM4NDJiZjhiOWFhYjM2MmMwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85OWQwMDhhYmFjMmU0OTJmODc1MDk0NjAyZDg2MzgxZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jZjkzMzk3ODg2MDA0OTE4OGU3MmI0MjUzYTg5NjJhNSA9ICQoJzxkaXYgaWQ9Imh0bWxfY2Y5MzM5Nzg4NjAwNDkxODhlNzJiNDI1M2E4OTYyYTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVUcvTkFSQ09USUM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzk5ZDAwOGFiYWMyZTQ5MmY4NzUwOTQ2MDJkODYzODFkLnNldENvbnRlbnQoaHRtbF9jZjkzMzk3ODg2MDA0OTE4OGU3MmI0MjUzYTg5NjJhNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2RkYWZlYTEwMmNmZjQyMjM4NDJiZjhiOWFhYjM2MmMwLmJpbmRQb3B1cChwb3B1cF85OWQwMDhhYmFjMmU0OTJmODc1MDk0NjAyZDg2MzgxZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80MDkxZWJiM2I1Y2I0ZjZlYWQxYzYwNDFjZDdhNmRkOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjE3YTlkYTllZmFlNDM1YjkwNmQ0NDFmOTlhMzE2ZGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfN2FiNDY5MTY2OTE3NGQxOGEzZWU4ZmY2MzZmYjZjZDUgPSAkKCc8ZGl2IGlkPSJodG1sXzdhYjQ2OTE2NjkxNzRkMThhM2VlOGZmNjM2ZmI2Y2Q1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjE3YTlkYTllZmFlNDM1YjkwNmQ0NDFmOTlhMzE2ZGMuc2V0Q29udGVudChodG1sXzdhYjQ2OTE2NjkxNzRkMThhM2VlOGZmNjM2ZmI2Y2Q1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDA5MWViYjNiNWNiNGY2ZWFkMWM2MDQxY2Q3YTZkZDguYmluZFBvcHVwKHBvcHVwXzIxN2E5ZGE5ZWZhZTQzNWI5MDZkNDQxZjk5YTMxNmRjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzMwMzY5OGY3MmEwOTRiYjA5MjNmODZjYjZmZDNlOWNiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNGFhNTAyNDBjYWY4NDZjNmIwZmUyMWNhYzAyM2U3ZTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTczNjY0ZTJmNDc4NDhjMjliOTdjOThhOTRiNDkxYTUgPSAkKCc8ZGl2IGlkPSJodG1sXzU3MzY2NGUyZjQ3ODQ4YzI5Yjk3Yzk4YTk0YjQ5MWE1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80YWE1MDI0MGNhZjg0NmM2YjBmZTIxY2FjMDIzZTdlNi5zZXRDb250ZW50KGh0bWxfNTczNjY0ZTJmNDc4NDhjMjliOTdjOThhOTRiNDkxYTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zMDM2OThmNzJhMDk0YmIwOTIzZjg2Y2I2ZmQzZTljYi5iaW5kUG9wdXAocG9wdXBfNGFhNTAyNDBjYWY4NDZjNmIwZmUyMWNhYzAyM2U3ZTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGU0ZmQzOGIyNjFlNGYwMTk4M2ViNmQ1NTg5MTI3ODMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjRhNjJhNTQwNGMwNDY4YzkyMTVmODM4YjcxYmFlMzEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjUxN2EzOTY4MTg3NDUyOWI1NWNiNmIxZmUwY2IwODYgPSAkKCc8ZGl2IGlkPSJodG1sX2I1MTdhMzk2ODE4NzQ1MjliNTVjYjZiMWZlMGNiMDg2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjRhNjJhNTQwNGMwNDY4YzkyMTVmODM4YjcxYmFlMzEuc2V0Q29udGVudChodG1sX2I1MTdhMzk2ODE4NzQ1MjliNTVjYjZiMWZlMGNiMDg2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNGU0ZmQzOGIyNjFlNGYwMTk4M2ViNmQ1NTg5MTI3ODMuYmluZFBvcHVwKHBvcHVwX2Y0YTYyYTU0MDRjMDQ2OGM5MjE1ZjgzOGI3MWJhZTMxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzI5YWNjOWQxNGE1YTQwYThhMzUxZDNlNTk3NTI2NjEzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MDA2NTMyNDM5MjA1LC0xMjIuMzk5ODAyMTQ1Nzk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGUyYWVjMWMxMGUxNDU2NDkzZWI2Mzg1MTRmYjU2MGIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTc1NGVjMWUzODIyNDZhZjgwNmFhMDk5YTEwYzZjMTggPSAkKCc8ZGl2IGlkPSJodG1sX2U3NTRlYzFlMzgyMjQ2YWY4MDZhYTA5OWExMGM2YzE4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kZTJhZWMxYzEwZTE0NTY0OTNlYjYzODUxNGZiNTYwYi5zZXRDb250ZW50KGh0bWxfZTc1NGVjMWUzODIyNDZhZjgwNmFhMDk5YTEwYzZjMTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yOWFjYzlkMTRhNWE0MGE4YTM1MWQzZTU5NzUyNjYxMy5iaW5kUG9wdXAocG9wdXBfZGUyYWVjMWMxMGUxNDU2NDkzZWI2Mzg1MTRmYjU2MGIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWUzNGZkODQ2Y2M0NGYwZTkxM2FhMjUyNTRhOGEzODYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg3NGJkNjY4ODQ1ZTQ3ODhhZDA3NmZjMjdiODY5NGM1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2EyYzYxNGMxNTUyOTQxMGZiNDM2NDY0MmVkMWFhMWQwID0gJCgnPGRpdiBpZD0iaHRtbF9hMmM2MTRjMTU1Mjk0MTBmYjQzNjQ2NDJlZDFhYTFkMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84NzRiZDY2ODg0NWU0Nzg4YWQwNzZmYzI3Yjg2OTRjNS5zZXRDb250ZW50KGh0bWxfYTJjNjE0YzE1NTI5NDEwZmI0MzY0NjQyZWQxYWExZDApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xZTM0ZmQ4NDZjYzQ0ZjBlOTEzYWEyNTI1NGE4YTM4Ni5iaW5kUG9wdXAocG9wdXBfODc0YmQ2Njg4NDVlNDc4OGFkMDc2ZmMyN2I4Njk0YzUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzEwMzU5ODM3MmFmNGNjNDgzMzRmZmJhNzE1ZWQ1NjAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzRhZTlmNGQ2OWJlOTQzNWY5NmRkMGMxOGVjYTBmZTM2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzExOGNkNWI1NDQ3MzQ3ZDRhZGZiZjg1NmUwNTRiMzNkID0gJCgnPGRpdiBpZD0iaHRtbF8xMThjZDViNTQ0NzM0N2Q0YWRmYmY4NTZlMDU0YjMzZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1VTUElDSU9VUyBPQ0M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRhZTlmNGQ2OWJlOTQzNWY5NmRkMGMxOGVjYTBmZTM2LnNldENvbnRlbnQoaHRtbF8xMThjZDViNTQ0NzM0N2Q0YWRmYmY4NTZlMDU0YjMzZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2MxMDM1OTgzNzJhZjRjYzQ4MzM0ZmZiYTcxNWVkNTYwLmJpbmRQb3B1cChwb3B1cF80YWU5ZjRkNjliZTk0MzVmOTZkZDBjMThlY2EwZmUzNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8wZjYxNTNmYTU3NDU0OTM4ODlkNzZkNDgyZDNhYjBjNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzk5ZmFlNjNlZjEyNDdhMzk2MWJhZTkwNTNlZDA2ZjMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGY1ZjEzMmZlYmI4NDM5YWEwMDlmNDZmZDgxOGNlOTQgPSAkKCc8ZGl2IGlkPSJodG1sXzRmNWYxMzJmZWJiODQzOWFhMDA5ZjQ2ZmQ4MThjZTk0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzk5ZmFlNjNlZjEyNDdhMzk2MWJhZTkwNTNlZDA2ZjMuc2V0Q29udGVudChodG1sXzRmNWYxMzJmZWJiODQzOWFhMDA5ZjQ2ZmQ4MThjZTk0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMGY2MTUzZmE1NzQ1NDkzODg5ZDc2ZDQ4MmQzYWIwYzYuYmluZFBvcHVwKHBvcHVwXzc5OWZhZTYzZWYxMjQ3YTM5NjFiYWU5MDUzZWQwNmYzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzU5NjhjZjRkM2MyZTQ4OWViOTdjZDNjZmExZWMxYjEwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MzIzNTQ0OTkwNCwtMTIyLjQxMTg1NzAzMjU0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzI1YmE4YTQ1ZTUwNDcyODgwMTJjZTUwYTYxMGYyMmIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOGJhYzFjZDdkMzM0NDE1NWE3YzhhNjk0NTM0MjA2YmQgPSAkKCc8ZGl2IGlkPSJodG1sXzhiYWMxY2Q3ZDMzNDQxNTVhN2M4YTY5NDUzNDIwNmJkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83MjViYThhNDVlNTA0NzI4ODAxMmNlNTBhNjEwZjIyYi5zZXRDb250ZW50KGh0bWxfOGJhYzFjZDdkMzM0NDE1NWE3YzhhNjk0NTM0MjA2YmQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81OTY4Y2Y0ZDNjMmU0ODllYjk3Y2QzY2ZhMWVjMWIxMC5iaW5kUG9wdXAocG9wdXBfNzI1YmE4YTQ1ZTUwNDcyODgwMTJjZTUwYTYxMGYyMmIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYWZiZGMxMzFiOGE2NGZiMGE2NGQxMTI5ZWM1NjQzYzQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTU5OTc3MzM5ODU2LC0xMjIuNDA5NDM1NjE3MTA2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNDY4MDI2Yzg3YTBlNDM5ZGI2OGFmNTk2NzE0OWY1OGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTlkZjEwOTAwY2M1NGQ0OTkxNjc4ODk4ZmNlNzAwM2YgPSAkKCc8ZGl2IGlkPSJodG1sX2U5ZGYxMDkwMGNjNTRkNDk5MTY3ODg5OGZjZTcwMDNmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDY4MDI2Yzg3YTBlNDM5ZGI2OGFmNTk2NzE0OWY1OGEuc2V0Q29udGVudChodG1sX2U5ZGYxMDkwMGNjNTRkNDk5MTY3ODg5OGZjZTcwMDNmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYWZiZGMxMzFiOGE2NGZiMGE2NGQxMTI5ZWM1NjQzYzQuYmluZFBvcHVwKHBvcHVwXzQ2ODAyNmM4N2EwZTQzOWRiNjhhZjU5NjcxNDlmNThhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2UxMzZhMTRiNmI0NjQ2OTY4ZGY5YmIyM2U1NmIwNDUxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzcxN2I0YmQ3OTJhYTRlZjJiOGQ2ZTU4NjJhNjBjODAyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E5ZTFlZmZhZTA3MDRmOGM4YWZiYzk5OWU5ZGI3OTRkID0gJCgnPGRpdiBpZD0iaHRtbF9hOWUxZWZmYWUwNzA0ZjhjOGFmYmM5OTllOWRiNzk0ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83MTdiNGJkNzkyYWE0ZWYyYjhkNmU1ODYyYTYwYzgwMi5zZXRDb250ZW50KGh0bWxfYTllMWVmZmFlMDcwNGY4YzhhZmJjOTk5ZTlkYjc5NGQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lMTM2YTE0YjZiNDY0Njk2OGRmOWJiMjNlNTZiMDQ1MS5iaW5kUG9wdXAocG9wdXBfNzE3YjRiZDc5MmFhNGVmMmI4ZDZlNTg2MmE2MGM4MDIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTJhN2VkYmQyY2NjNDliZGEyMWI5MGM2NDhkMjdiYTggPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzYwMzc0NDY2ODYyMDQsLTEyMi40MTUxMjY1NDMwMDEwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzliYWI4MGU0NDMwMDRkNjlhNmE1MTIzNDFlMmRhYWMyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E5MzRmMDZjY2E2ZTQwNDk4NDYxNzI4OGJlNzJlNzUyID0gJCgnPGRpdiBpZD0iaHRtbF9hOTM0ZjA2Y2NhNmU0MDQ5ODQ2MTcyODhiZTcyZTc1MiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85YmFiODBlNDQzMDA0ZDY5YTZhNTEyMzQxZTJkYWFjMi5zZXRDb250ZW50KGh0bWxfYTkzNGYwNmNjYTZlNDA0OTg0NjE3Mjg4YmU3MmU3NTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9hMmE3ZWRiZDJjY2M0OWJkYTIxYjkwYzY0OGQyN2JhOC5iaW5kUG9wdXAocG9wdXBfOWJhYjgwZTQ0MzAwNGQ2OWE2YTUxMjM0MWUyZGFhYzIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmI0ZDI3YTNjMzhmNDhjZDkyZGYxMGM1MjYyOWY1NTUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTI3Njc4ODQ4MjEsLTEyMi40MzE5MjgwMTEwODldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80YjdkNmM0MzE3NzU0MjJhYWQwNmI3ZDVkMjVlMzdkNiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xOWY0ZTdhY2ZjNmY0OWQzOWFlMmZlMzM4OWIwNmM0NSA9ICQoJzxkaXYgaWQ9Imh0bWxfMTlmNGU3YWNmYzZmNDlkMzlhZTJmZTMzODliMDZjNDUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80YjdkNmM0MzE3NzU0MjJhYWQwNmI3ZDVkMjVlMzdkNi5zZXRDb250ZW50KGh0bWxfMTlmNGU3YWNmYzZmNDlkMzlhZTJmZTMzODliMDZjNDUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yYjRkMjdhM2MzOGY0OGNkOTJkZjEwYzUyNjI5ZjU1NS5iaW5kUG9wdXAocG9wdXBfNGI3ZDZjNDMxNzc1NDIyYWFkMDZiN2Q1ZDI1ZTM3ZDYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMmIzYjI4NjYzODgxNGI0MTg2NWY3ZGE5NTkyNWY3YzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODk1NzEwMjU1ODYzLC0xMjIuNDAyMTYzNzEzNjE4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjZhMjkyOTNiMGUzNDQ2ZWE4YzJiMThhZmIzOTFlNzggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMWM3OTY3ODQ5MjkxNDQwZWI5NWJjMDdiM2NiMWFmZDkgPSAkKCc8ZGl2IGlkPSJodG1sXzFjNzk2Nzg0OTI5MTQ0MGViOTViYzA3YjNjYjFhZmQ5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVOS0VOTkVTUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjZhMjkyOTNiMGUzNDQ2ZWE4YzJiMThhZmIzOTFlNzguc2V0Q29udGVudChodG1sXzFjNzk2Nzg0OTI5MTQ0MGViOTViYzA3YjNjYjFhZmQ5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMmIzYjI4NjYzODgxNGI0MTg2NWY3ZGE5NTkyNWY3YzcuYmluZFBvcHVwKHBvcHVwXzY2YTI5MjkzYjBlMzQ0NmVhOGMyYjE4YWZiMzkxZTc4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2U5NmMxZDgzZjc0NDQyNDk4ZDlhYTRiZDFhMTBiMDM2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2IzZDk5OGYyNDQzMzRiZWY4MjFlZGUxYjVmYjNiZDVkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzI2YmQ3NjE0NDcyNjRkOTk4MWY0M2QzYTg5YTRkNWYyID0gJCgnPGRpdiBpZD0iaHRtbF8yNmJkNzYxNDQ3MjY0ZDk5ODFmNDNkM2E4OWE0ZDVmMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2IzZDk5OGYyNDQzMzRiZWY4MjFlZGUxYjVmYjNiZDVkLnNldENvbnRlbnQoaHRtbF8yNmJkNzYxNDQ3MjY0ZDk5ODFmNDNkM2E4OWE0ZDVmMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2U5NmMxZDgzZjc0NDQyNDk4ZDlhYTRiZDFhMTBiMDM2LmJpbmRQb3B1cChwb3B1cF9iM2Q5OThmMjQ0MzM0YmVmODIxZWRlMWI1ZmIzYmQ1ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hZGRmYWFlYzdkNDk0MGU2ODJmMWUyNTA3YmU0MWM4MiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNjU1NjUzNDc5NCwtMTIyLjQxMzc5MDk3Mjc4MDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzU0NjhkODA5ZTZmNGQ5YjkyMzU4YWFiZTRlMmNiN2UgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODNkMmJlNTk1MDdlNDBkYjgzYjVkNWI1NjRhNTlhZjUgPSAkKCc8ZGl2IGlkPSJodG1sXzgzZDJiZTU5NTA3ZTQwZGI4M2I1ZDViNTY0YTU5YWY1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WQU5EQUxJU008L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM1NDY4ZDgwOWU2ZjRkOWI5MjM1OGFhYmU0ZTJjYjdlLnNldENvbnRlbnQoaHRtbF84M2QyYmU1OTUwN2U0MGRiODNiNWQ1YjU2NGE1OWFmNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FkZGZhYWVjN2Q0OTQwZTY4MmYxZTI1MDdiZTQxYzgyLmJpbmRQb3B1cChwb3B1cF8zNTQ2OGQ4MDllNmY0ZDliOTIzNThhYWJlNGUyY2I3ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8xZjlkNDBkY2Q3ZTA0OWUzOThkNjVmNmM5NWQxNmJkMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZGViMjM4Yjg0NTQ0NjRmOTk4NDQzNTJkYmYwMmRiOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84NjkzYzhmZjVmYjA0YjAyYTljZWU2ODcyOTU5NGJiMSA9ICQoJzxkaXYgaWQ9Imh0bWxfODY5M2M4ZmY1ZmIwNGIwMmE5Y2VlNjg3Mjk1OTRiYjEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80ZGViMjM4Yjg0NTQ0NjRmOTk4NDQzNTJkYmYwMmRiOS5zZXRDb250ZW50KGh0bWxfODY5M2M4ZmY1ZmIwNGIwMmE5Y2VlNjg3Mjk1OTRiYjEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8xZjlkNDBkY2Q3ZTA0OWUzOThkNjVmNmM5NWQxNmJkMS5iaW5kUG9wdXAocG9wdXBfNGRlYjIzOGI4NDU0NDY0Zjk5ODQ0MzUyZGJmMDJkYjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZGJhMTc1MGUzYThiNDg1M2IxZDYzNDUyZDYyN2Q2YTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzczNjIzNjA1MjEyOTYsLTEyMi40MjIwNjcxODQ5MzddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wNjE1NDYyYzI3MjY0MWI5YTMwMWRlMDkwNWE3MTc3ZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iZmM3OGFiMGFlZDU0YWU3YWY1MWZiOGI0Njg0MDBmYyA9ICQoJzxkaXYgaWQ9Imh0bWxfYmZjNzhhYjBhZWQ1NGFlN2FmNTFmYjhiNDY4NDAwZmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDYxNTQ2MmMyNzI2NDFiOWEzMDFkZTA5MDVhNzE3N2Yuc2V0Q29udGVudChodG1sX2JmYzc4YWIwYWVkNTRhZTdhZjUxZmI4YjQ2ODQwMGZjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZGJhMTc1MGUzYThiNDg1M2IxZDYzNDUyZDYyN2Q2YTkuYmluZFBvcHVwKHBvcHVwXzA2MTU0NjJjMjcyNjQxYjlhMzAxZGUwOTA1YTcxNzdmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2Q1ZjZlNzNjZWM1ZTQxYzBiOTQ2NzNlMWQ1ZDVjMDNlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzUyNjc5YWQxNWM5NDcxOGExMWRlNWI4YTlhZmMyN2QgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzFlM2EzNzJhOWNlNGY3NDgyODgxYjFlMTNmZjU1MWYgPSAkKCc8ZGl2IGlkPSJodG1sXzMxZTNhMzcyYTljZTRmNzQ4Mjg4MWIxZTEzZmY1NTFmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WQU5EQUxJU008L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc1MjY3OWFkMTVjOTQ3MThhMTFkZTViOGE5YWZjMjdkLnNldENvbnRlbnQoaHRtbF8zMWUzYTM3MmE5Y2U0Zjc0ODI4ODFiMWUxM2ZmNTUxZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Q1ZjZlNzNjZWM1ZTQxYzBiOTQ2NzNlMWQ1ZDVjMDNlLmJpbmRQb3B1cChwb3B1cF83NTI2NzlhZDE1Yzk0NzE4YTExZGU1YjhhOWFmYzI3ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kZWFlYjUyMTc3Zjg0ZTI0YTNkNzkzM2Q1NGEwMmZjNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTk5ODgzMjM3OTc5NiwtMTIyLjQxMTc0NzM3MTkyNF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M2NGI2NjdiM2M2YjRiZWFiN2E2MWE5YzRkZDg5MDNjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzRiMTNhZjk4YjIxNTQ0MjI5NGNkY2JlOWRlMzlhMGEzID0gJCgnPGRpdiBpZD0iaHRtbF80YjEzYWY5OGIyMTU0NDIyOTRjZGNiZTlkZTM5YTBhMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U1VTUElDSU9VUyBPQ0M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M2NGI2NjdiM2M2YjRiZWFiN2E2MWE5YzRkZDg5MDNjLnNldENvbnRlbnQoaHRtbF80YjEzYWY5OGIyMTU0NDIyOTRjZGNiZTlkZTM5YTBhMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2RlYWViNTIxNzdmODRlMjRhM2Q3OTMzZDU0YTAyZmM1LmJpbmRQb3B1cChwb3B1cF9jNjRiNjY3YjNjNmI0YmVhYjdhNjFhOWM0ZGQ4OTAzYyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84MjgwYjY2YWI3OGU0YWYwYTdiZjlmZDhjNWZhZjExZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ZmMDE3YzVjOTNmNDQxNWRhYjcwZmM1NWFmM2RjY2M0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FjYjVmODM2Y2FmNDQzYWY5NzY5NzUzZWExYTVlZWExID0gJCgnPGRpdiBpZD0iaHRtbF9hY2I1ZjgzNmNhZjQ0M2FmOTc2OTc1M2VhMWE1ZWVhMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ZmMDE3YzVjOTNmNDQxNWRhYjcwZmM1NWFmM2RjY2M0LnNldENvbnRlbnQoaHRtbF9hY2I1ZjgzNmNhZjQ0M2FmOTc2OTc1M2VhMWE1ZWVhMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzgyODBiNjZhYjc4ZTRhZjBhN2JmOWZkOGM1ZmFmMTFmLmJpbmRQb3B1cChwb3B1cF9mZjAxN2M1YzkzZjQ0MTVkYWI3MGZjNTVhZjNkY2NjNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84ZDVkMGEyZTVkNGE0Y2UwOWFjOTM3OWIwZTBmNTlhOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTAyMjY2MjI3ODYsLTEyMi40MTE5ODc2NDM1OTUwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU2NzE1M2U0YmM1MjQ0M2M4Yjc5MmEwN2I0YzM1NWY4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ5OTgwOTliMDEwMzRhY2U4MzBmZDE5MDYyNjA3NTA1ID0gJCgnPGRpdiBpZD0iaHRtbF80OTk4MDk5YjAxMDM0YWNlODMwZmQxOTA2MjYwNzUwNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NjcxNTNlNGJjNTI0NDNjOGI3OTJhMDdiNGMzNTVmOC5zZXRDb250ZW50KGh0bWxfNDk5ODA5OWIwMTAzNGFjZTgzMGZkMTkwNjI2MDc1MDUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84ZDVkMGEyZTVkNGE0Y2UwOWFjOTM3OWIwZTBmNTlhOS5iaW5kUG9wdXAocG9wdXBfNTY3MTUzZTRiYzUyNDQzYzhiNzkyYTA3YjRjMzU1ZjgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmJmYTI4MGFjYTYxNGViNDkxN2NiZjE4N2I1YTlkZjQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wMWRlMzNkZjg1NTE0MzA4OGNhM2ZjOTcxZGJmYzkxYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mODhiNThlZDJiZDQ0ZDFiOTNjYzcxYjdiYWQwNjJjYSA9ICQoJzxkaXYgaWQ9Imh0bWxfZjg4YjU4ZWQyYmQ0NGQxYjkzY2M3MWI3YmFkMDYyY2EiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wMWRlMzNkZjg1NTE0MzA4OGNhM2ZjOTcxZGJmYzkxYy5zZXRDb250ZW50KGh0bWxfZjg4YjU4ZWQyYmQ0NGQxYjkzY2M3MWI3YmFkMDYyY2EpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iYmZhMjgwYWNhNjE0ZWI0OTE3Y2JmMTg3YjVhOWRmNC5iaW5kUG9wdXAocG9wdXBfMDFkZTMzZGY4NTUxNDMwODhjYTNmYzk3MWRiZmM5MWMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzk3YTFjYmM2YmZkNDI2NDk4OGNlN2IyZWExNjQ3MjkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzUxOTE4MjY3MjE3LC0xMjIuNDY2NTU4NzgwNjgzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXBfYThhMDIyNzMwMzY5NGU4Y2JkMGVlNTczMzc4YmE5NzYpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmRmYTJlZTlkOGJmNDExODg1Zjk3NmM1ZmNhYTE1MWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmRhNTE1OTY4NDA3NGFmZWI0NTAyOWJlMTMxZTlmYmYgPSAkKCc8ZGl2IGlkPSJodG1sXzZkYTUxNTk2ODQwNzRhZmViNDUwMjliZTEzMWU5ZmJmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iZGZhMmVlOWQ4YmY0MTE4ODVmOTc2YzVmY2FhMTUxZi5zZXRDb250ZW50KGh0bWxfNmRhNTE1OTY4NDA3NGFmZWI0NTAyOWJlMTMxZTlmYmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jOTdhMWNiYzZiZmQ0MjY0OTg4Y2U3YjJlYTE2NDcyOS5iaW5kUG9wdXAocG9wdXBfYmRmYTJlZTlkOGJmNDExODg1Zjk3NmM1ZmNhYTE1MWYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNGFiOTQyMzYzOWU2NDQ0N2EyNmUwYmRmNGFiYzY5NDQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkwODQxNzI5MDI4LC0xMjIuNDg2OTI1OTYwMTE0MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jYjRmMjdmOTM5ZGE0NDU3Yjg0NDY2MTA0NGJlOGVlMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84YWRkZmZlNTFlNzU0NGRhOWJlZjc1ODkwOTNjODczOCA9ICQoJzxkaXYgaWQ9Imh0bWxfOGFkZGZmZTUxZTc1NDRkYTliZWY3NTg5MDkzYzg3MzgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jYjRmMjdmOTM5ZGE0NDU3Yjg0NDY2MTA0NGJlOGVlMS5zZXRDb250ZW50KGh0bWxfOGFkZGZmZTUxZTc1NDRkYTliZWY3NTg5MDkzYzg3MzgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80YWI5NDIzNjM5ZTY0NDQ3YTI2ZTBiZGY0YWJjNjk0NC5iaW5kUG9wdXAocG9wdXBfY2I0ZjI3ZjkzOWRhNDQ1N2I4NDQ2NjEwNDRiZThlZTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjU1NmM2ZTkyNWY2NDU1YTkzNWMwNzJmODhhYWY5MjAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njg1MzYwMTIzNTgzLC0xMjIuNDE1NjE2MzM4MzE5OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yNDUxNmIyYzQ5ZGE0M2FjYmZjMTFkODAwNjI3MWQ1ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kOWQ2Zjc5YjVhZGY0YmNlYjQwNzYzMjE5ZTAzZWIzNCA9ICQoJzxkaXYgaWQ9Imh0bWxfZDlkNmY3OWI1YWRmNGJjZWI0MDc2MzIxOWUwM2ViMzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjQ1MTZiMmM0OWRhNDNhY2JmYzExZDgwMDYyNzFkNWQuc2V0Q29udGVudChodG1sX2Q5ZDZmNzliNWFkZjRiY2ViNDA3NjMyMTllMDNlYjM0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjU1NmM2ZTkyNWY2NDU1YTkzNWMwNzJmODhhYWY5MjAuYmluZFBvcHVwKHBvcHVwXzI0NTE2YjJjNDlkYTQzYWNiZmMxMWQ4MDA2MjcxZDVkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2UxMWY4YmE3MjcxOTRiYzI4NGFiZjNmN2RjMTc1MjFiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDI5NzcxNDA3NCwtMTIyLjQ0OTc1MTY1MjU2M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U4MmYyZDM2MTZlZTRiMWU5NmE2M2QwNWE0NmRkN2Y3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzZjOTYzYWUxZmNjZDQ1MTg5YmNmMmNiZTdlZmYxYTNiID0gJCgnPGRpdiBpZD0iaHRtbF82Yzk2M2FlMWZjY2Q0NTE4OWJjZjJjYmU3ZWZmMWEzYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U4MmYyZDM2MTZlZTRiMWU5NmE2M2QwNWE0NmRkN2Y3LnNldENvbnRlbnQoaHRtbF82Yzk2M2FlMWZjY2Q0NTE4OWJjZjJjYmU3ZWZmMWEzYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2UxMWY4YmE3MjcxOTRiYzI4NGFiZjNmN2RjMTc1MjFiLmJpbmRQb3B1cChwb3B1cF9lODJmMmQzNjE2ZWU0YjFlOTZhNjNkMDVhNDZkZDdmNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yNjEzMjI0MWJmNDQ0OTQwYTFlM2Y5YzBlYWZjNmM4YSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85Yzg3NTU0MDBlMDc0OTIxOTA4OTliODVjMzE2OTdkOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9jODZkNjcxMTNhNDQ0MDMxOGZlMDlkOTgyNDliNWJhYiA9ICQoJzxkaXYgaWQ9Imh0bWxfYzg2ZDY3MTEzYTQ0NDAzMThmZTA5ZDk4MjQ5YjViYWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzljODc1NTQwMGUwNzQ5MjE5MDg5OWI4NWMzMTY5N2Q4LnNldENvbnRlbnQoaHRtbF9jODZkNjcxMTNhNDQ0MDMxOGZlMDlkOTgyNDliNWJhYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzI2MTMyMjQxYmY0NDQ5NDBhMWUzZjljMGVhZmM2YzhhLmJpbmRQb3B1cChwb3B1cF85Yzg3NTU0MDBlMDc0OTIxOTA4OTliODVjMzE2OTdkOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iYTgyNWUxM2VhMzc0NDlkODc3NTUwYjVjM2Y3MDA1MiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTI2ODE0NjkwODM5NiwtMTIyLjQ3MjcxNTc1OTYzMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFwX2E4YTAyMjczMDM2OTRlOGNiZDBlZTU3MzM3OGJhOTc2KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FmZGViMWRkZTQ3ZTRlMDA5ZDU4YjFhYzlhOTcyOGM5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2QyNDkxN2EzYTE3NDQ2ZDNiMmFjOGE1OGU3Njg0YWVkID0gJCgnPGRpdiBpZD0iaHRtbF9kMjQ5MTdhM2ExNzQ0NmQzYjJhYzhhNThlNzY4NGFlZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWZkZWIxZGRlNDdlNGUwMDlkNThiMWFjOWE5NzI4Yzkuc2V0Q29udGVudChodG1sX2QyNDkxN2EzYTE3NDQ2ZDNiMmFjOGE1OGU3Njg0YWVkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmE4MjVlMTNlYTM3NDQ5ZDg3NzU1MGI1YzNmNzAwNTIuYmluZFBvcHVwKHBvcHVwX2FmZGViMWRkZTQ3ZTRlMDA5ZDU4YjFhYzlhOTcyOGM5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4ID0gTC5mZWF0dXJlR3JvdXAoCiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9hOGEwMjI3MzAzNjk0ZThjYmQwZWU1NzMzNzhiYTk3Nik7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTJhODkwZDhkZTBlNDFkN2I0ZDdhYmZiZTFlNmQ4YmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU0MjA3MDY3MTEsLTEyMi40MDM0MDQ3OTE0Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FhODMxYTNmMmUxOTQzNTg5Y2U5NWE3YjA1YmY4ZmQ5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mZTU3NTJiMTcyNGY0M2U4OTk3MGVhMGQ3NDQxMmIwOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTk4MDk2NzI5OTU5NiwtMTIyLjM4ODg1NjIwNDI5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzIyYjI0MDkwMmY3OTRiODE5YjVkMjkyNzA4MjkwZjg0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1Nzg4Mzc2Njg4NzksLTEyMi40MTI5NzA1Mzc1OTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kZjY1Zjg2MDA1YmM0YmE2ODVmOGQ5YzI0NTkwYjBiYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTA1MDEyMTQ2NjgsLTEyMi40MTk2NzE3ODAyOTZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80YWNjMDYyMTE3OWQ0NmExOGVlYWQ5Yzk2OWJhNjJiYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjMxZjA5MGMwYzA0NDQwOGI2MDgzMjcxMzMzZjczNGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA4Nzg5MzYwMjE0LC0xMjIuNDA1NzIxNDU0NTY3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTVmMmUxNTFhYzY2NGFjMDg4MjQyNjMyMDZiN2E1Y2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM5ODA1NTkyNjM0LC0xMjIuNDExNzc4Mjk1OTkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODUzMjA0ZDA4MWJmNDQwM2JiNmM4MjIzZmFmY2NmMWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNGI0NGJkNjY2ZWE0YmI1YjZjNTEzOWVhNTg4Y2ZiZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ODc1ZTBkYWYyNmM0NzI3YWI0MjBlOTI0NWEyZGYwNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzE2MzRmMmVlMDZjNDFhMjhmYzg0NmNjOTM3YjdhMjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wZWQ4YzIyYWI3Y2I0OTVhYmEwZTA4MDI0MDg3NWY1ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTA5ZjJkODA5NzNhNDVkNTk1N2FjNTllM2IwZmYzMzggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzI2NGZlZDk1MDg5NDhmYTg1NzA4YmRmMGQ4ODZkODYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RhMjUxZTExNDk4MzQ3ZTBhY2Q5YzM0MzdhNTFiMjVkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNzA2OTMwMTU0NSwtMTIyLjQwODU5NTExMDg2OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QyZWU0NTg1MDFkMzQwZjU5MWQwMWYwZmI4MjlhYTE3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDU0MTE1MGVmZmMyNDM1MTk5M2VhOTdiOWE2MTYwYzMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMDViNDY4YmZjYjg0MDhkOGNmYzE4MjEyMGJkZDEyMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxNTc2NTQyNjk5NSwtMTIyLjQzOTkwOTc2Njc3Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2YxOGFmYTc4ZDYwNjQwN2U5OGYzZDFkNzA0MjgzNmVlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZlNTk1ZWQ2YjUyOTRhNDA4ZjFlMmRmNTdjYmZmMWVjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjI5MTkzNDcwYmZhNGJiM2JiM2Y2NTBkMmVjMjliYzYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTI4NDEyODQwNDQ3MDUsLTEyMi40MjQ1MTk4MzUwMDkwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UxNmIzNTM1OWNhZTRhOGViYzFhNTlkOWUyOTIyODk1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lOGFkMWQ4MGY3NjM0OTNmYjg1YjhkYTQzZmYxMDdkNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOTI5NGUwNDMxNDY0NDEwOWI3N2JmZmYzZGFkYWUyNTYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzE0OTM5OTY5NDE2LC0xMjIuNTA3NzUwMTMxMDA0MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMWQwNTUzMzFkOTI0Mjg1OWM3YjkwMTg5MDNiNTlmOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTQyZGE4NGVlNDBlNDc5ZDljODdiNWQ2NWU1NmQ4OTUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfODUxMDY5ZGQyOTkzNGRjYTljMGM0ZGJiZTYwZTczODkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzY5YzAxNDZmOTE3NGEwY2IwNTcyZDc1Zjg3ODlmZjEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hZGJmMmI2YTY1OTY0MmE3ODA2ZDQzYmJmZTBhNTBhYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNGY1Zjc2ZWFiMzQ0ZGE0YTFjODQxM2E5MTY0YmM5OSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzkyMDkzNzU1MzI5NSwtMTIyLjQxMDg4MjgyNTU1MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FiZGU2ODBkZjI3MzRlZTQ4MjY2NThiNGZjYTNjMTQwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZhYWZlMzY3ODg0YzRkYzM4ZDU0YjhjNmJkYWNmMmE5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdkNGM5NTEyODViMzRmYjdiZjYxYzJiNmQ0OTc0ZjhjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg2NTY0NzYwNzY4NSwtMTIyLjQwNzI0NDA4NzAzMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzlmMDE5MWM2ZDcyNzQwM2E5NmZiYTVjN2RhYmQ5OTA4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTEwOWFkMTQ5ZDE3NDI0Mzg2MjViODRjZTliMWMyODkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MzAwN2E3ODIyZTY0N2I2YWFiOWMxY2JmNDY0MzgxNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk3ZTc0ZGMwMGUxYzQyMThiNDU0OTViZGU3N2JiNmQwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUwOTBmZGFiMWJhMzQ4N2Y4NjdjMDE0Y2RlNTc2MDZmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzNhYjg3N2EyNjI2NGU5MGEyYjM1MTFjNDBiZWNkOGEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDI4NTE3Mzc0NDQ4OTQsLTEyMi40MjA5Njc0NDA1NjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYTRiMmU5OWY4ZTI0Y2NlYjAxZWZlYTdiZmVlNzkxOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNGU2MjczYWJlYzM0Mzc2YjRmYjliMjRjODA0Y2VhNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl83ODgwZGE5MGEzYmQ0OTM5YTFiOGNhOGZkYzczMGIxNCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NTcxODQzOTUyODIsLTEyMi40MDk1Mjk5MTMyNzhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mZDEzZWYyYTA2YmM0YjQ4YTY3ZmMwNTAxYWI5MzllOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmMxOWNlZTI3ODBhNDI3M2FlMmRhMmU1NWE2M2M0MjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80ZWQyYTZkYWUwNmQ0OWU3YjFkMzYxZDI3YjdkNjViMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFiNjQ1MWEwNGRjMDRiNjU5N2Q0MDM0NmNiYjg5YWY5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY3YzFhMjA3Mjg4YzRmNzNiY2Y2NDBiNTZkYjlmYjljID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VlN2MzMzZjY2ZkNTRhNWU4Yzc5YjdkMzY0NGUwODY0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RkZGYyMmZkNTY0NzQ1Yjg5MWVlYmU2MzhhYWJlMzNiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzI4NjA3N2JhYWY1YjRmZmI5ZjEzYjQ0ZDA1YmZlM2Y5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTg5MDA2NGI1MzJkNDE5MzhmZWNhNWViMDkwZGEyM2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzYyMzEwNDA0NzU4LC0xMjIuNDE0NzE0Mjk1NTc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl81ZTRjMTQyOTZiM2Y0NGZmYTNhYjVhMzYxMDIxNmI5ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzUxMTg4OTU2OTUsLTEyMi40MTgwNDU0NTI3NjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iYmNjZmY0YWQ1Y2U0NWIwYmFkMzUwZDkyOTAwZGQzYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjAyMzg0Nzg5NzUsLTEyMi40MDExNjE1NTU2MDJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jMTdlNThiZWYyMjk0YTFjYmUyM2Q4NzYxYmNhZjE3ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyNzAwNTMxOTYyOTk5NSwtMTIyLjQwMzQwODY2OTE5MV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzkxMmUyMTIxOWEyODRjNGZiMDI5OWVjMDI2YzI2ZTY5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzQ1Y2FhYjQ5ZTIxZTRmYjBhNGY3YmMzNjMzZWI3ODA4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTRkNDk4OWVmZTRmNDBhOWFhNzZmNGIyNDY2MjJlNzcgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTc0NjY0ZDVlZDYyNDM3ZWI5OGI5YWQ0ODZhOTZjNWEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJmNjQ0MWE3ZmU3MDRmZGVhNTE0MjI5ODkzYzYwYzIyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kOTVhN2MxODFlZDk0ZTM1ODY3YjA3ZTk2NTE4M2RiYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0MDczNjA1NDgzNTc5LC0xMjIuMzg4NzUzMDQ2OTk3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjFkNTViOTJkNTg5NDM3ZmI1ZTVlYmJmMmY0ZThkOWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ5OTEyOTQ0MzY2LC0xMjIuNDM3Nzk5NzAzNDY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDE1NmRjYTI5OGE0NGViZDhkN2EyOTYxOWUxOWExOTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzJmNjM2MzkyMTZkNGY2N2FkZjU1OGY3YmVjZDAxOTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzcwOTAyNzQzNjY5LC0xMjIuNDIxMzMyNjg0NjMzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjkyZTVjMmEyMGU2NDFiN2FkYTRjMjRhMmJhYzJlN2IgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDU2NTdkZDc3YTZhNDhlMzkwMmZmM2ZkNTAxMjFkZmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzAwMzc5OTk1MTI3OTUsLTEyMi40MDQ1OTQxNDA2MzRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84NzIzZmI5YzRiYTM0NmQ0OTRkMGMxM2ZiNDVjMWRiMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5NTMzMzgyNjc0MzYsLTEyMi4zOTczNzM3NDAwNjZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNjdhOGVjNmE5ZTI0ZjExOTc1ZTkwYmU0MWMxZjVkZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFmYWUyY2EwODgwNTRmOTI4OWIxMTA2NDE2MGJiMzJkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QxOGRhNWJiMTVhMTRkZmY4NDAxYzIzY2QxMzg5YjZlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzFmZWM4MDQ3YjNhYzRiMzE4MWZmNjI5OWIzMzE5MTNmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYWRlY2U5OTE3MjE0YzI3OTlhNjBiM2NjMjk5YjUwYiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMjg4NTU2Yjk2NjEzNGZmOGJmMmQ5ZDM2ZWMxOTExMGUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODA1Mjc1Nzg1MDksLTEyMi4zOTY4NDkwMTUxNzIwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M3NTEwN2ZmZjk5ZjRkMzdhZDQzZGJhMzYxYzNmMzZkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjA0MTMxMDc5MDAxNDlhNjk3N2NjYWU4ZTY2ODBlNWMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZWQ4ZDZjNWY2NzFmNGM5YTkzZDZiNTc1YmE2NWEwYTkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82ZDFlNGRlYjNhZjU0Y2E1OGRiMGRlY2ZiZjg3YmZmZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMzk3NDgyNDE2MDksLTEyMi4zOTQ5Mjg0NzU4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYTcyMzg3NDM3MjVkNGM2MWI0NDQ5NDgwMzMxNDg3MmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IyOThkOWQyYzMyNTRkNTRiZmQxYTVhMGI3MjAwMGU1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYmNiMjQ0NDFiYWY0YWRiOWE3MWFmMTcxZTc3MjVlNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzNlMTAwZjQ2NDU5ZjRlMjc4Yjc0ZTk2MDM1NDdiODY5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJiYzc5ZTJlNGEzNzQ3Y2FiMGVlZjcyMTY3YzgyZGY4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3MDc5ODE0NDQ0MywtMTIyLjQyNTg4MzM1ODE0OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzBkZDAxNTdlYjdhODRhNjBiYWEwMGM1YzYyNDNhODM5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mYjNhZjFkYmUxM2I0NjcwYjlmNjFkYjNiNzI2Y2IwNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMjc2Nzg4NDgyMSwtMTIyLjQzMTkyODAxMTA4OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZlNWJjNGMzYWVhZTQzNGY5Y2I3YjM4MTY0Y2JkNmZjID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg5NTcxMDI1NTg2MywtMTIyLjQwMjE2MzcxMzYxOF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MxNzFlNTMzN2RjMzQxNWZiNzBlZmUzMTA1OGQ1NWQ3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE1ZjIzNWNhZTdjNTQwZjU5ODI3YzJjZjY4ODIxNDJlID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM2NTU2NTM0Nzk0LC0xMjIuNDEzNzkwOTcyNzgwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mMjdlYzgxZmUzMTY0ZTY3YWQxYjNmMDExOTYwY2MyOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl82NmU2M2ZiZmU3NWE0ZTQ0YjBjYWE5ZWI3MGNhYjljOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE1MjUzNmQ5Njk2NzQzZWZiODM5M2QyNzYzMDkwMDg2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmRkNGEwODJlNTNmNDc4ZTg5MWVhOTllNjg5YjczYTIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODU5OTg4MzIzNzk3OTYsLTEyMi40MTE3NDczNzE5MjRdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kYjUxYWY2NjY1NDc0NzcyYjc0ZTQzOWMzNjczY2M3NCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA3NjUzNWViZDRjYzRjNGI4NjBlMzEyNGQ3ZThlMmU2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1MDIyNjYyMjc4NiwtMTIyLjQxMTk4NzY0MzU5NTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfN2FhNmE2MjJmMWNhNDVjZDg0NmJjMzc0NmEwN2YyYmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQ2MjA2NDkxMDY0OTUsLTEyMi41MDAzODA0Mjc5MTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wMDkxZGQ0ZTVlMTY0ZjlkYjhjYzNiMWE4YWQ1MDZjMiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTE5MTgyNjcyMTcsLTEyMi40NjY1NTg3ODA2ODNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MzNhNWQ0MWU4ODM0ZjdlOTY4YTg4ZDg5MzlkYjE1NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTA4NDE3MjkwMjgsLTEyMi40ODY5MjU5NjAxMTQwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8oZmVhdHVyZV9ncm91cF9mOGRmZmYzMGUwNmQ0ZGZlOTNlNTBjMzU5Nzg3YmQ1OCk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUzNmRkYWI3YzU4YjRjMGNiZDExYTYyZGM2NmVkMDUwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY4NTM2MDEyMzU4MywtMTIyLjQxNTYxNjMzODMxOTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2M1NzQ1YmFiZWY0NGQ3YThkNDE3MzgyMGVmZDllOTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNWJiZTE2ZWJmOGJlNGFiODgxMzM1YmZlYWNjMjBkYmQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhmZWF0dXJlX2dyb3VwX2Y4ZGZmZjMwZTA2ZDRkZmU5M2U1MGMzNTk3ODdiZDU4KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfOWU2NjZiNzQ1ODgzNGQ2ZWEwOTU3ZDgwOTMxOTYyODIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzUyNjgxNDY5MDgzOTYsLTEyMi40NzI3MTU3NTk2MzFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKGZlYXR1cmVfZ3JvdXBfZjhkZmZmMzBlMDZkNGRmZTkzZTUwYzM1OTc4N2JkNTgpOwogICAgICAgICAgICAKPC9zY3JpcHQ+ onload=\"this.contentDocument.open();this.contentDocument.write(atob(this.getAttribute('data-html')));this.contentDocument.close();\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb3ffa33908>"
]
},
"execution_count": 20,
"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,
"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:\n"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"button": false,
"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%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe src=\"about:blank\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" data-html=PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbMzcuNzcsLTEyMi40Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfZjhkZjkyM2NhZDY3NDMwYzgyMDQ2NjRiM2M3ZDFmYTAgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2VjNTRjMzU0YjZkYzRhZTZiMDY2NGViNmY4MmJhNDUxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83MDYzNTFjY2QxNjk0YTQ2OGMxNzc2N2JkYzI1ZjgxNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80YmFiODU0MDk0ODM0NWRiOWQzYjhmYTVhNzAxY2ZmYiA9ICQoJzxkaXYgaWQ9Imh0bWxfNGJhYjg1NDA5NDgzNDVkYjlkM2I4ZmE1YTcwMWNmZmIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83MDYzNTFjY2QxNjk0YTQ2OGMxNzc2N2JkYzI1ZjgxNC5zZXRDb250ZW50KGh0bWxfNGJhYjg1NDA5NDgzNDVkYjlkM2I4ZmE1YTcwMWNmZmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZWM1NGMzNTRiNmRjNGFlNmIwNjY0ZWI2ZjgyYmE0NTEuYmluZFBvcHVwKHBvcHVwXzcwNjM1MWNjZDE2OTRhNDY4YzE3NzY3YmRjMjVmODE0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk0ZmQ3ZTgzYTRmMjRmNDFhNGIyZjY1MjdkYzQ4OTAzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kYTZiZmE2Y2ZhNDA0NmIyYTY5ZmUzN2I3MjVhNGQ0OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83MDhhNDUwZGU2MGY0YWMyODZhNmM2MDk3MTkyMDgyOSA9ICQoJzxkaXYgaWQ9Imh0bWxfNzA4YTQ1MGRlNjBmNGFjMjg2YTZjNjA5NzE5MjA4MjkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kYTZiZmE2Y2ZhNDA0NmIyYTY5ZmUzN2I3MjVhNGQ0OS5zZXRDb250ZW50KGh0bWxfNzA4YTQ1MGRlNjBmNGFjMjg2YTZjNjA5NzE5MjA4MjkpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTRmZDdlODNhNGYyNGY0MWE0YjJmNjUyN2RjNDg5MDMuYmluZFBvcHVwKHBvcHVwX2RhNmJmYTZjZmE0MDQ2YjJhNjlmZTM3YjcyNWE0ZDQ5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU1ZjljMDk1MzhmYzQ0ZDliNGRjMzRlYjJlY2IzNDdhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI5OTgwOTY3Mjk5NTk2LC0xMjIuMzg4ODU2MjA0MjkyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWVlYTYwNTU4NGU2NGMyODlmOTI4YjAzN2EyNjM1ZDQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzQ3MzY1OGE5ZTAxNDEyZTkxOWE0MjM2NzgwNDNlNGYgPSAkKCc8ZGl2IGlkPSJodG1sXzM0NzM2NThhOWUwMTQxMmU5MTlhNDIzNjc4MDQzZTRmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWVlYTYwNTU4NGU2NGMyODlmOTI4YjAzN2EyNjM1ZDQuc2V0Q29udGVudChodG1sXzM0NzM2NThhOWUwMTQxMmU5MTlhNDIzNjc4MDQzZTRmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzU1ZjljMDk1MzhmYzQ0ZDliNGRjMzRlYjJlY2IzNDdhLmJpbmRQb3B1cChwb3B1cF9lZWVhNjA1NTg0ZTY0YzI4OWY5MjhiMDM3YTI2MzVkNCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lNWZjZmY4MWI0ZDA0NjA3ODRiMWQwYjFjZTlkYTZiYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTc4ODM3NjY4ODc5LC0xMjIuNDEyOTcwNTM3NTkxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTQyYzc2ZmU4YTdlNGM3YTg0YzNjOGNhM2Q5YTczZGMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzVlZDAxODhiNGU4NDc1OGFmYWQ1ZDZiOWVlMGMzYzAgPSAkKCc8ZGl2IGlkPSJodG1sX2M1ZWQwMTg4YjRlODQ3NThhZmFkNWQ2YjllZTBjM2MwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE0MmM3NmZlOGE3ZTRjN2E4NGMzYzhjYTNkOWE3M2RjLnNldENvbnRlbnQoaHRtbF9jNWVkMDE4OGI0ZTg0NzU4YWZhZDVkNmI5ZWUwYzNjMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9lNWZjZmY4MWI0ZDA0NjA3ODRiMWQwYjFjZTlkYTZiYS5iaW5kUG9wdXAocG9wdXBfMTQyYzc2ZmU4YTdlNGM3YTg0YzNjOGNhM2Q5YTczZGMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDY4ZWY1NGQ0MzQ0NDA5NWExYmVlZGY4YzY2YjhhZTEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjUwNTAxMjE0NjY4LC0xMjIuNDE5NjcxNzgwMjk2XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjcxOGMzYTE1ZWMxNGRhOWE0ZDQ4NDk3YjE5NDhiNjMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTA3MTg5M2FlOWMzNGVmMDgxZjEzM2FiZmEwZDA1ZWIgPSAkKCc8ZGl2IGlkPSJodG1sX2UwNzE4OTNhZTljMzRlZjA4MWYxMzNhYmZhMGQwNWViIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI3MThjM2ExNWVjMTRkYTlhNGQ0ODQ5N2IxOTQ4YjYzLnNldENvbnRlbnQoaHRtbF9lMDcxODkzYWU5YzM0ZWYwODFmMTMzYWJmYTBkMDVlYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wNjhlZjU0ZDQzNDQ0MDk1YTFiZWVkZjhjNjZiOGFlMS5iaW5kUG9wdXAocG9wdXBfMjcxOGMzYTE1ZWMxNGRhOWE0ZDQ4NDk3YjE5NDhiNjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTM2ZDgxODQwYzg0NDUyNTg3MTlmNGRhZjdhOWMwOWUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMTg1NTU4MjksLTEyMi40MjYwNzcxNzczNzQ5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBmYjNlNGIxM2NjYzQzMWNhMzEzYzVlOGM2MDQzMzRlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg5MDJkOWExMGNjODRiMzA4MDAyZDQ5NGRiMWQ0MzE5ID0gJCgnPGRpdiBpZD0iaHRtbF84OTAyZDlhMTBjYzg0YjMwODAwMmQ0OTRkYjFkNDMxOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGZiM2U0YjEzY2NjNDMxY2EzMTNjNWU4YzYwNDMzNGUuc2V0Q29udGVudChodG1sXzg5MDJkOWExMGNjODRiMzA4MDAyZDQ5NGRiMWQ0MzE5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzUzNmQ4MTg0MGM4NDQ1MjU4NzE5ZjRkYWY3YTljMDllLmJpbmRQb3B1cChwb3B1cF8wZmIzZTRiMTNjY2M0MzFjYTMxM2M1ZThjNjA0MzM0ZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8wNGQ4Y2MzZmRiYzU0NGYzYmM0ZThkYjIzN2Q1NWFiMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDg3ODkzNjAyMTQsLTEyMi40MDU3MjE0NTQ1NjddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNTNmNGE4YjY5MTU0N2Q2ODJlMzM1MmMxYjY5ZGVhOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xOGFjYTg4ZDA2YzM0ZTllODUyMzM4MDBkYWU4OGM0OCA9ICQoJzxkaXYgaWQ9Imh0bWxfMThhY2E4OGQwNmMzNGU5ZTg1MjMzODAwZGFlODhjNDgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNTNmNGE4YjY5MTU0N2Q2ODJlMzM1MmMxYjY5ZGVhOS5zZXRDb250ZW50KGh0bWxfMThhY2E4OGQwNmMzNGU5ZTg1MjMzODAwZGFlODhjNDgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDRkOGNjM2ZkYmM1NDRmM2JjNGU4ZGIyMzdkNTVhYjMuYmluZFBvcHVwKHBvcHVwX2Y1M2Y0YThiNjkxNTQ3ZDY4MmUzMzUyYzFiNjlkZWE5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk0Y2RmYmFjZjg1YTQ1YTA5MWEyN2Q0NmJmMTY5Y2M5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzOTgwNTU5MjYzNCwtMTIyLjQxMTc3ODI5NTk5Ml0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VhNTg1ODJjOTQ3MzQ3MDlhMDUxMmE3MDk0ODBiZWE5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzIwYmY4ZWU0ZmZkZjQxYTA5Y2RkZjg3YWFmNzYwNGUyID0gJCgnPGRpdiBpZD0iaHRtbF8yMGJmOGVlNGZmZGY0MWEwOWNkZGY4N2FhZjc2MDRlMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lYTU4NTgyYzk0NzM0NzA5YTA1MTJhNzA5NDgwYmVhOS5zZXRDb250ZW50KGh0bWxfMjBiZjhlZTRmZmRmNDFhMDljZGRmODdhYWY3NjA0ZTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTRjZGZiYWNmODVhNDVhMDkxYTI3ZDQ2YmYxNjljYzkuYmluZFBvcHVwKHBvcHVwX2VhNTg1ODJjOTQ3MzQ3MDlhMDUxMmE3MDk0ODBiZWE5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2M0ODkwOGY1YWRkNzQ0ZTA4Mzc0NzllMmYwMDdhOTg1ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1Nzg3NjIxODI5Mjk1LC0xMjIuMzkzMzU3MjQxNDUxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmNjZDU0NDk2N2MzNDgwMmEzZmRjNDI2MjE2YWY4OTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDZkOWYwYTI0Y2FkNDM3NWJkOGI3NjA5NGI1ZTA1MTYgPSAkKCc8ZGl2IGlkPSJodG1sXzA2ZDlmMGEyNGNhZDQzNzViZDhiNzYwOTRiNWUwNTE2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmNjZDU0NDk2N2MzNDgwMmEzZmRjNDI2MjE2YWY4OTQuc2V0Q29udGVudChodG1sXzA2ZDlmMGEyNGNhZDQzNzViZDhiNzYwOTRiNWUwNTE2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2M0ODkwOGY1YWRkNzQ0ZTA4Mzc0NzllMmYwMDdhOTg1LmJpbmRQb3B1cChwb3B1cF82Y2NkNTQ0OTY3YzM0ODAyYTNmZGM0MjYyMTZhZjg5NCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9jYmQ0NWJhNjZlYzM0ZDA0YWM5YTFkMjE3NzMzOTlhOCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83OWJhYjg1YTlhM2M0OWEwYTM2MWE3MTM4NzE4NGUxOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xMzhiNDM4MDZiMzM0MDAxOTJhODlmNzU3NjhlZWU0YSA9ICQoJzxkaXYgaWQ9Imh0bWxfMTM4YjQzODA2YjMzNDAwMTkyYTg5Zjc1NzY4ZWVlNGEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83OWJhYjg1YTlhM2M0OWEwYTM2MWE3MTM4NzE4NGUxOS5zZXRDb250ZW50KGh0bWxfMTM4YjQzODA2YjMzNDAwMTkyYTg5Zjc1NzY4ZWVlNGEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfY2JkNDViYTY2ZWMzNGQwNGFjOWExZDIxNzczMzk5YTguYmluZFBvcHVwKHBvcHVwXzc5YmFiODVhOWEzYzQ5YTBhMzYxYTcxMzg3MTg0ZTE5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MyNWNiMWZjZWVhNDRhYTg4ZjljOGMwNzU0ZWI2OTU3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDc4MTU3ODY5NTA1LC0xMjIuNDc3Mzc2NTI0MDAyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85Zjg4OWRjNjVlNDY0YTAyYWU2MThhMWI4MmUxNzZlNCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83MzZiN2VhYmUwYjE0MTcxYmZiNzZmZDQyYmE0MDZkZSA9ICQoJzxkaXYgaWQ9Imh0bWxfNzM2YjdlYWJlMGIxNDE3MWJmYjc2ZmQ0MmJhNDA2ZGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzlmODg5ZGM2NWU0NjRhMDJhZTYxOGExYjgyZTE3NmU0LnNldENvbnRlbnQoaHRtbF83MzZiN2VhYmUwYjE0MTcxYmZiNzZmZDQyYmE0MDZkZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jMjVjYjFmY2VlYTQ0YWE4OGY5YzhjMDc1NGViNjk1Ny5iaW5kUG9wdXAocG9wdXBfOWY4ODlkYzY1ZTQ2NGEwMmFlNjE4YTFiODJlMTc2ZTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZmI5YTQ2ZWY1Y2U4NDc5NjhiMGMzNDNjYjI2OGYzZjAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDU3Mzg5NDI5NjU0OTUsLTEyMi40Nzc5NjAzMjcyOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xN2JjNzJlYWYyYTQ0ODJkYjFlZTUyOTMwNjg5NjFkOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mYTdjOWQ2MmRlODk0Y2ZkOTA3OTA3YjQwYjU3ZjNmMiA9ICQoJzxkaXYgaWQ9Imh0bWxfZmE3YzlkNjJkZTg5NGNmZDkwNzkwN2I0MGI1N2YzZjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTdiYzcyZWFmMmE0NDgyZGIxZWU1MjkzMDY4OTYxZDguc2V0Q29udGVudChodG1sX2ZhN2M5ZDYyZGU4OTRjZmQ5MDc5MDdiNDBiNTdmM2YyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ZiOWE0NmVmNWNlODQ3OTY4YjBjMzQzY2IyNjhmM2YwLmJpbmRQb3B1cChwb3B1cF8xN2JjNzJlYWYyYTQ0ODJkYjFlZTUyOTMwNjg5NjFkOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9lMzlmZDgzNmNmNTE0NWNiYTZlYzVjNGI0Y2ZiMDAwMCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzBhYzNjNWUxZWZjNDg2NWIyMTA2ZjgyNmUwNmZlYjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2E1NzQ4YWYyNzRmNDYxZjgzY2FjM2M5YzE5NWRiMmUgPSAkKCc8ZGl2IGlkPSJodG1sXzNhNTc0OGFmMjc0ZjQ2MWY4M2NhYzNjOWMxOTVkYjJlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzBhYzNjNWUxZWZjNDg2NWIyMTA2ZjgyNmUwNmZlYjcuc2V0Q29udGVudChodG1sXzNhNTc0OGFmMjc0ZjQ2MWY4M2NhYzNjOWMxOTVkYjJlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2UzOWZkODM2Y2Y1MTQ1Y2JhNmVjNWM0YjRjZmIwMDAwLmJpbmRQb3B1cChwb3B1cF83MGFjM2M1ZTFlZmM0ODY1YjIxMDZmODI2ZTA2ZmViNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85OWFmYmQ1YWE5YTE0NTA0YjdkMWJjYmVjYzZmZTNiMSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyOTI3MDUxOTk1OTIsLTEyMi40MzIzMjU4NzEwMjhdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zZThmNjdiMzhjMzA0ZTY0YWMzZGI2M2M5NzM4NTE2YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMmE3ODZmYzg3MGQ0MjNhODVlMTgxZmZlYzQyMzZmNCA9ICQoJzxkaXYgaWQ9Imh0bWxfMDJhNzg2ZmM4NzBkNDIzYTg1ZTE4MWZmZWM0MjM2ZjQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNlOGY2N2IzOGMzMDRlNjRhYzNkYjYzYzk3Mzg1MTZjLnNldENvbnRlbnQoaHRtbF8wMmE3ODZmYzg3MGQ0MjNhODVlMTgxZmZlYzQyMzZmNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl85OWFmYmQ1YWE5YTE0NTA0YjdkMWJjYmVjYzZmZTNiMS5iaW5kUG9wdXAocG9wdXBfM2U4ZjY3YjM4YzMwNGU2NGFjM2RiNjNjOTczODUxNmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzcxZmI2NGEyNmY0NGNjZDllZGI5YjQwMTRlNTlmNjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTE2NDI5ODIzODQsLTEyMi40MDA5MDg2OTg4ODk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2VmZTgwODY0ZGIwNTQ1NTFhMDAyNWJmYzY2MWQ3Zjc4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ3ZjI3MzlmMzViZjRlN2U5MGFiNTQzOWFmMTlmYjdiID0gJCgnPGRpdiBpZD0iaHRtbF80N2YyNzM5ZjM1YmY0ZTdlOTBhYjU0MzlhZjE5ZmI3YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VmZTgwODY0ZGIwNTQ1NTFhMDAyNWJmYzY2MWQ3Zjc4LnNldENvbnRlbnQoaHRtbF80N2YyNzM5ZjM1YmY0ZTdlOTBhYjU0MzlhZjE5ZmI3Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jNzFmYjY0YTI2ZjQ0Y2NkOWVkYjliNDAxNGU1OWY2OS5iaW5kUG9wdXAocG9wdXBfZWZlODA4NjRkYjA1NDU1MWEwMDI1YmZjNjYxZDdmNzgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNTRiODQxNzJhYzk2NDU3N2IyODBkYzY0ODk0ODBkY2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM3MDY5MzAxNTQ1LC0xMjIuNDA4NTk1MTEwODY5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTA3Y2NiNmUwYjZlNGY3ZDhiNjhlOGFkZDdhYWViODggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTRkZmYwYmM1ODVkNGMwYTg4NWRmNWE1NDdhYTYxOGIgPSAkKCc8ZGl2IGlkPSJodG1sX2E0ZGZmMGJjNTg1ZDRjMGE4ODVkZjVhNTQ3YWE2MThiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVE9MRU4gUFJPUEVSVFk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UwN2NjYjZlMGI2ZTRmN2Q4YjY4ZThhZGQ3YWFlYjg4LnNldENvbnRlbnQoaHRtbF9hNGRmZjBiYzU4NWQ0YzBhODg1ZGY1YTU0N2FhNjE4Yik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81NGI4NDE3MmFjOTY0NTc3YjI4MGRjNjQ4OTQ4MGRjYS5iaW5kUG9wdXAocG9wdXBfZTA3Y2NiNmUwYjZlNGY3ZDhiNjhlOGFkZDdhYWViODgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDI2Y2U2ODY2M2Q0NDIzNmJlYTZlMTA4MWU4NjBjNjQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTcyODk1OTA0NTc3OTUsLTEyMi40MDY4NzA0MDIwODJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81NDI3MmNlZWVmNGE0NTEzODExZWUwYzQxOGI0ZmU2MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mYjE3YzMzMGJiZjc0NjQ5OTA1YzYxN2NlMTNkODllYSA9ICQoJzxkaXYgaWQ9Imh0bWxfZmIxN2MzMzBiYmY3NDY0OTkwNWM2MTdjZTEzZDg5ZWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU0MjcyY2VlZWY0YTQ1MTM4MTFlZTBjNDE4YjRmZTYwLnNldENvbnRlbnQoaHRtbF9mYjE3YzMzMGJiZjc0NjQ5OTA1YzYxN2NlMTNkODllYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80MjZjZTY4NjYzZDQ0MjM2YmVhNmUxMDgxZTg2MGM2NC5iaW5kUG9wdXAocG9wdXBfNTQyNzJjZWVlZjRhNDUxMzgxMWVlMGM0MThiNGZlNjApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDkxNzZmMGRiZTJkNDg4MjliOTAyNDAyNzJhODUyNjUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDg5MDYzMDUxODI5LC0xMjIuNDIwMzU0NzgwODYwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zMWIyNTZkODBjMzE0ZjE4OTkxODNkNTRlOWRlODNmMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF85YzcwYThmNzU4YmI0Y2MwYjlmY2VmNmFmYzE4ZTMxNSA9ICQoJzxkaXYgaWQ9Imh0bWxfOWM3MGE4Zjc1OGJiNGNjMGI5ZmNlZjZhZmMxOGUzMTUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMxYjI1NmQ4MGMzMTRmMTg5OTE4M2Q1NGU5ZGU4M2YwLnNldENvbnRlbnQoaHRtbF85YzcwYThmNzU4YmI0Y2MwYjlmY2VmNmFmYzE4ZTMxNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80OTE3NmYwZGJlMmQ0ODgyOWI5MDI0MDI3MmE4NTI2NS5iaW5kUG9wdXAocG9wdXBfMzFiMjU2ZDgwYzMxNGYxODk5MTgzZDU0ZTlkZTgzZjApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDZkMmU4ZDJhODlkNDdjZmI5YWEyZWE0NDRmZTgzNWYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTU3NjU0MjY5OTUsLTEyMi40Mzk5MDk3NjY3NzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84OTYxYWY5N2Q2OWM0Yzc2YWYwZDI2ZmMxNzhjYTFlNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yNDU4NGNmYzhkNGI0MTg5OTFmZTNiYThiYmQxNGM5MiA9ICQoJzxkaXYgaWQ9Imh0bWxfMjQ1ODRjZmM4ZDRiNDE4OTkxZmUzYmE4YmJkMTRjOTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg5NjFhZjk3ZDY5YzRjNzZhZjBkMjZmYzE3OGNhMWU1LnNldENvbnRlbnQoaHRtbF8yNDU4NGNmYzhkNGI0MTg5OTFmZTNiYThiYmQxNGM5Mik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wNmQyZThkMmE4OWQ0N2NmYjlhYTJlYTQ0NGZlODM1Zi5iaW5kUG9wdXAocG9wdXBfODk2MWFmOTdkNjljNGM3NmFmMGQyNmZjMTc4Y2ExZTUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTk2OTY0NzJiYmI5NGJlZjhjNzcwYzFlYmRhOTExYTQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM1Njk5Mzg2OTE4LC0xMjIuNDA4NDIxMTE2OTIyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWU2MjA0ZjQwMjIwNDRmYmI5YWYzYTFmNTQyNzg5NTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGQ3MmFjY2E1YWJmNDg3YWFmMmU4YjNiOWYwZTZlMGUgPSAkKCc8ZGl2IGlkPSJodG1sXzRkNzJhY2NhNWFiZjQ4N2FhZjJlOGIzYjlmMGU2ZTBlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85ZTYyMDRmNDAyMjA0NGZiYjlhZjNhMWY1NDI3ODk1OC5zZXRDb250ZW50KGh0bWxfNGQ3MmFjY2E1YWJmNDg3YWFmMmU4YjNiOWYwZTZlMGUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZTk2OTY0NzJiYmI5NGJlZjhjNzcwYzFlYmRhOTExYTQuYmluZFBvcHVwKHBvcHVwXzllNjIwNGY0MDIyMDQ0ZmJiOWFmM2ExZjU0Mjc4OTU4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJmYzAwNDk0NGNjYjRkZTc5NWYxZjBkOGI4OGYyZDA2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczNjE4NjI3NjQ1NjA0LC0xMjIuNDIyMzE1NjcwNzQ5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWVlZDEyMTk2MzlhNGJkODk5MTgxZDA1OWRkNDllMTUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDEzY2JjN2M5YzMyNGIzZmFmMjZjODBmODE4Zjc0M2MgPSAkKCc8ZGl2IGlkPSJodG1sXzAxM2NiYzdjOWMzMjRiM2ZhZjI2YzgwZjgxOGY3NDNjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GUkFVRDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWVlZDEyMTk2MzlhNGJkODk5MTgxZDA1OWRkNDllMTUuc2V0Q29udGVudChodG1sXzAxM2NiYzdjOWMzMjRiM2ZhZjI2YzgwZjgxOGY3NDNjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzJmYzAwNDk0NGNjYjRkZTc5NWYxZjBkOGI4OGYyZDA2LmJpbmRQb3B1cChwb3B1cF85ZWVkMTIxOTYzOWE0YmQ4OTkxODFkMDU5ZGQ0OWUxNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84YWY3NjA0ODA1YjU0ZDdlOGU2NDEwNTZhYWE1ZmJlNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5Mjg0MTI4NDA0NDcwNSwtMTIyLjQyNDUxOTgzNTAwOTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODBjMTA5OGYyZDY2NGMzNWFlMDk3YjhiM2FlMzg2ZWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNGEzYTg3MWM2Nzk4NDBiMGE3MDUwN2MwMzg4YzZlYjAgPSAkKCc8ZGl2IGlkPSJodG1sXzRhM2E4NzFjNjc5ODQwYjBhNzA1MDdjMDM4OGM2ZWIwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODBjMTA5OGYyZDY2NGMzNWFlMDk3YjhiM2FlMzg2ZWQuc2V0Q29udGVudChodG1sXzRhM2E4NzFjNjc5ODQwYjBhNzA1MDdjMDM4OGM2ZWIwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzhhZjc2MDQ4MDViNTRkN2U4ZTY0MTA1NmFhYTVmYmU2LmJpbmRQb3B1cChwb3B1cF84MGMxMDk4ZjJkNjY0YzM1YWUwOTdiOGIzYWUzODZlZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NmViZTYxY2RmNmM0MzU2OTI0ZTBjYTU5MzBmODE4MSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc1NDA5ODY4ODIwNjc5NSwtMTIyLjQxNDIzMzg0OTAzNzk4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2FhMTQ1OGYxOGIyNDM5OWE0ZWQ2NTU5NjI5ZjU3YTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYjkxNmFiNzg5MDJiNDI0MDk0YjIxMGZiZGRjZGVhYjAgPSAkKCc8ZGl2IGlkPSJodG1sX2I5MTZhYjc4OTAyYjQyNDA5NGIyMTBmYmRkY2RlYWIwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83YWExNDU4ZjE4YjI0Mzk5YTRlZDY1NTk2MjlmNTdhOC5zZXRDb250ZW50KGh0bWxfYjkxNmFiNzg5MDJiNDI0MDk0YjIxMGZiZGRjZGVhYjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTZlYmU2MWNkZjZjNDM1NjkyNGUwY2E1OTMwZjgxODEuYmluZFBvcHVwKHBvcHVwXzdhYTE0NThmMThiMjQzOTlhNGVkNjU1OTYyOWY1N2E4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdiYzUwZjE2NTlkNzQ4Y2Q5NTQ4YWYwNmJhMDEzMGIzID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU0MDk4Njg4MjA2Nzk1LC0xMjIuNDE0MjMzODQ5MDM3OThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kOTUyZmY3OGI0MzQ0YWI3YWYzZmNmZDMxN2I2NzQ3MCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80OTc4ODQ4NTk3OWQ0MjhkYmY5M2I0YmUxMDlhZTM3MyA9ICQoJzxkaXYgaWQ9Imh0bWxfNDk3ODg0ODU5NzlkNDI4ZGJmOTNiNGJlMTA5YWUzNzMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kOTUyZmY3OGI0MzQ0YWI3YWYzZmNmZDMxN2I2NzQ3MC5zZXRDb250ZW50KGh0bWxfNDk3ODg0ODU5NzlkNDI4ZGJmOTNiNGJlMTA5YWUzNzMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfN2JjNTBmMTY1OWQ3NDhjZDk1NDhhZjA2YmEwMTMwYjMuYmluZFBvcHVwKHBvcHVwX2Q5NTJmZjc4YjQzNDRhYjdhZjNmY2ZkMzE3YjY3NDcwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2EzY2RhZjBmNjRlNjQyY2FhZjE3NmU0MWQyMjMzNDJiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzcxNDkzOTk2OTQxNiwtMTIyLjUwNzc1MDEzMTAwNDAyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNmY3MDhkZWJiOTJmNGI4NDhjNjA5MTIxMjZiMTk3M2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2NhNWM4Y2NkNmZmNGNhZTljN2M3MWMwYWE0NjM3MGYgPSAkKCc8ZGl2IGlkPSJodG1sXzNjYTVjOGNjZDZmZjRjYWU5YzdjNzFjMGFhNDYzNzBmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82ZjcwOGRlYmI5MmY0Yjg0OGM2MDkxMjEyNmIxOTczYy5zZXRDb250ZW50KGh0bWxfM2NhNWM4Y2NkNmZmNGNhZTljN2M3MWMwYWE0NjM3MGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYTNjZGFmMGY2NGU2NDJjYWFmMTc2ZTQxZDIyMzM0MmIuYmluZFBvcHVwKHBvcHVwXzZmNzA4ZGViYjkyZjRiODQ4YzYwOTEyMTI2YjE5NzNjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzE3ZjIyOTQyMjlhYjQ3YmJiMjIyODk5NDE2MDNjZjEyID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzE4MzAyMjA0NzY2MDA1LC0xMjIuNDc0NDQ0NjM5NTk0OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kMTZhZTk2NTI4NTc0ZDUwODgyZWJlNjFiNzg1YTAxZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lMWIzOWFkYmJjNTQ0MDllYjBkYjVkODBkOTg0YzEwNSA9ICQoJzxkaXYgaWQ9Imh0bWxfZTFiMzlhZGJiYzU0NDA5ZWIwZGI1ZDgwZDk4NGMxMDUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kMTZhZTk2NTI4NTc0ZDUwODgyZWJlNjFiNzg1YTAxZC5zZXRDb250ZW50KGh0bWxfZTFiMzlhZGJiYzU0NDA5ZWIwZGI1ZDgwZDk4NGMxMDUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTdmMjI5NDIyOWFiNDdiYmIyMjI4OTk0MTYwM2NmMTIuYmluZFBvcHVwKHBvcHVwX2QxNmFlOTY1Mjg1NzRkNTA4ODJlYmU2MWI3ODVhMDFkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzEyYmFkOGQ0ZmE0MzQ0ZDJiZjEwNTNhNWE4NmY1ZWE5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NTc1MjMxNzYxNSwtMTIyLjQyNzU2MjU5Njk4NV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzUwM2NiZDQzOTU3MTQ3YjdiNjlmZmU4MGJkODI1Y2ZhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NhMzkwMDdjMDc0YTQwYTg4Mzc1Nzc1NjQwMDA2NjA0ID0gJCgnPGRpdiBpZD0iaHRtbF9jYTM5MDA3YzA3NGE0MGE4ODM3NTc3NTY0MDAwNjYwNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzUwM2NiZDQzOTU3MTQ3YjdiNjlmZmU4MGJkODI1Y2ZhLnNldENvbnRlbnQoaHRtbF9jYTM5MDA3YzA3NGE0MGE4ODM3NTc3NTY0MDAwNjYwNCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xMmJhZDhkNGZhNDM0NGQyYmYxMDUzYTVhODZmNWVhOS5iaW5kUG9wdXAocG9wdXBfNTAzY2JkNDM5NTcxNDdiN2I2OWZmZTgwYmQ4MjVjZmEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZTk2YTI0MjU0NjA1NGRmMzgyODIyOTZmYjM3ZDU2ZmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2U2MDJmZjg4OWZmNDkxNDhiZTUyZDk3ZWEzOGU0ZGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzE0NmQ3NTYyZmQ5NDEwY2I3ZGJlYzhiNmI4MGJkMTQgPSAkKCc8ZGl2IGlkPSJodG1sX2MxNDZkNzU2MmZkOTQxMGNiN2RiZWM4YjZiODBiZDE0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5CVVJHTEFSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2U2MDJmZjg4OWZmNDkxNDhiZTUyZDk3ZWEzOGU0ZGEuc2V0Q29udGVudChodG1sX2MxNDZkNzU2MmZkOTQxMGNiN2RiZWM4YjZiODBiZDE0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2U5NmEyNDI1NDYwNTRkZjM4MjgyMjk2ZmIzN2Q1NmZiLmJpbmRQb3B1cChwb3B1cF9jZTYwMmZmODg5ZmY0OTE0OGJlNTJkOTdlYTM4ZTRkYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hMzJlOGY3ZWNhNzA0NDE5YjUzMDM3NzZjNzZjYjA3ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0OTM2ODgyODQ1MzIsLTEyMi40MTI2OTAxNDIzMDgwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQzN2M1NDRiOWY0NDQ3Yzc5NTgxZTRhNjI2ZjY4MGE5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJmNjJlY2Y0NTZmOTQxYTE4N2QzY2FjNzBkYmE0M2VjID0gJCgnPGRpdiBpZD0iaHRtbF8yZjYyZWNmNDU2Zjk0MWExODdkM2NhYzcwZGJhNDNlYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQzN2M1NDRiOWY0NDQ3Yzc5NTgxZTRhNjI2ZjY4MGE5LnNldENvbnRlbnQoaHRtbF8yZjYyZWNmNDU2Zjk0MWExODdkM2NhYzcwZGJhNDNlYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9hMzJlOGY3ZWNhNzA0NDE5YjUzMDM3NzZjNzZjYjA3ZS5iaW5kUG9wdXAocG9wdXBfNDM3YzU0NGI5ZjQ0NDdjNzk1ODFlNGE2MjZmNjgwYTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDFjZmRkNDVhN2M0NDg3Mzg1Y2Q3M2M0ZDRlZjM3ZTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MDkyMDEwNDYyMzc5LC0xMjIuNDM0NjA5MjgwMzUyXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTM0Nzc3MGQwYzIzNDM5ZTljZWUxZjFmN2E1ZjM0MTQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzA1MTMyOTNlMzc1NDE3YWIwODNmMDY3ZDJhOGE3NTYgPSAkKCc8ZGl2IGlkPSJodG1sX2MwNTEzMjkzZTM3NTQxN2FiMDgzZjA2N2QyYThhNzU2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UzNDc3NzBkMGMyMzQzOWU5Y2VlMWYxZjdhNWYzNDE0LnNldENvbnRlbnQoaHRtbF9jMDUxMzI5M2UzNzU0MTdhYjA4M2YwNjdkMmE4YTc1Nik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8wMWNmZGQ0NWE3YzQ0ODczODVjZDczYzRkNGVmMzdlMC5iaW5kUG9wdXAocG9wdXBfZTM0Nzc3MGQwYzIzNDM5ZTljZWUxZjFmN2E1ZjM0MTQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMzk0ZTViMDU3MTIxNDkxZWI3NTBlZmQxMjgzYzBmMjkgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc5MjA5Mzc1NTMyOTUsLTEyMi40MTA4ODI4MjU1NTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNzdlMGNiMGM0MTk0YzA5ODFiYWZkZWQ5M2JhMjEwMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lZjZhZDY5NGUyYTA0MTZlYWI0ODJmYTVhOTlhMGVjOSA9ICQoJzxkaXYgaWQ9Imh0bWxfZWY2YWQ2OTRlMmEwNDE2ZWFiNDgyZmE1YTk5YTBlYzkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZFSElDTEUgVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE3N2UwY2IwYzQxOTRjMDk4MWJhZmRlZDkzYmEyMTAxLnNldENvbnRlbnQoaHRtbF9lZjZhZDY5NGUyYTA0MTZlYWI0ODJmYTVhOTlhMGVjOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zOTRlNWIwNTcxMjE0OTFlYjc1MGVmZDEyODNjMGYyOS5iaW5kUG9wdXAocG9wdXBfMTc3ZTBjYjBjNDE5NGMwOTgxYmFmZGVkOTNiYTIxMDEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDkzYTlhNjA4NmM5NGI2YjkzMjk2N2I4NTc3NjUwNmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy44MDA0NTY2NDcxMDM4OSwtMTIyLjQwMTQzMjc1NDcyMjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWY3MDkzMzEyMWQ0NDZhMDkxOGQ2NTM2OWY0NTAyM2YgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzY5OTdlYTY5MmEzNGJhOWEzZjM5ZWVhNjA3NzgyYjIgPSAkKCc8ZGl2IGlkPSJodG1sXzc2OTk3ZWE2OTJhMzRiYTlhM2YzOWVlYTYwNzc4MmIyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lZjcwOTMzMTIxZDQ0NmEwOTE4ZDY1MzY5ZjQ1MDIzZi5zZXRDb250ZW50KGh0bWxfNzY5OTdlYTY5MmEzNGJhOWEzZjM5ZWVhNjA3NzgyYjIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDkzYTlhNjA4NmM5NGI2YjkzMjk2N2I4NTc3NjUwNmMuYmluZFBvcHVwKHBvcHVwX2VmNzA5MzMxMjFkNDQ2YTA5MThkNjUzNjlmNDUwMjNmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2IzZGIyZWQwOTZhNzQ3Yjg4N2EwNjEzZWM5Zjk4MjBkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQzNTU1MDU0MjI2NSwtMTIyLjQyMTEyODAyOTUwNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ExNjk3NGY0OTU2ZDRhOTc5Nzc2NDU0N2RlMDljM2ZlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RiYmQ2MDk3MTMyNzRkODBhZTBiMGNhNzBlYzE2MWNiID0gJCgnPGRpdiBpZD0iaHRtbF9kYmJkNjA5NzEzMjc0ZDgwYWUwYjBjYTcwZWMxNjFjYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTE2OTc0ZjQ5NTZkNGE5Nzk3NzY0NTQ3ZGUwOWMzZmUuc2V0Q29udGVudChodG1sX2RiYmQ2MDk3MTMyNzRkODBhZTBiMGNhNzBlYzE2MWNiKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2IzZGIyZWQwOTZhNzQ3Yjg4N2EwNjEzZWM5Zjk4MjBkLmJpbmRQb3B1cChwb3B1cF9hMTY5NzRmNDk1NmQ0YTk3OTc3NjQ1NDdkZTA5YzNmZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl80MDgwYmQ0NGFjNWM0NTQxYmM2Y2Y1ZTE3MWNjNGY2ZSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NjU2NDc2MDc2ODUsLTEyMi40MDcyNDQwODcwMzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iZGMzMTcxYTFlN2M0MDUwYmQ5ZThmMTY5MTI2Y2E1NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iOGNlOGZiNmYxZGE0MTEyOGE4NTY5OTk5OGNlNzE2ZCA9ICQoJzxkaXYgaWQ9Imh0bWxfYjhjZThmYjZmMWRhNDExMjhhODU2OTk5OThjZTcxNmQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JkYzMxNzFhMWU3YzQwNTBiZDllOGYxNjkxMjZjYTU2LnNldENvbnRlbnQoaHRtbF9iOGNlOGZiNmYxZGE0MTEyOGE4NTY5OTk5OGNlNzE2ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80MDgwYmQ0NGFjNWM0NTQxYmM2Y2Y1ZTE3MWNjNGY2ZS5iaW5kUG9wdXAocG9wdXBfYmRjMzE3MWExZTdjNDA1MGJkOWU4ZjE2OTEyNmNhNTYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYjExMWVlMjk1YWMxNGE0YTkyMzJlMTBiMmM5MWMxNTMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81MGJmYzQyZWZlNTg0ZWNiODJlN2UxNTgwYTE3MGUxMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lZmI3ZDJlOGRkYWE0OGI1YmIwYjQxMGJmNDg5ZWFiNiA9ICQoJzxkaXYgaWQ9Imh0bWxfZWZiN2QyZThkZGFhNDhiNWJiMGI0MTBiZjQ4OWVhYjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81MGJmYzQyZWZlNTg0ZWNiODJlN2UxNTgwYTE3MGUxMS5zZXRDb250ZW50KGh0bWxfZWZiN2QyZThkZGFhNDhiNWJiMGI0MTBiZjQ4OWVhYjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjExMWVlMjk1YWMxNGE0YTkyMzJlMTBiMmM5MWMxNTMuYmluZFBvcHVwKHBvcHVwXzUwYmZjNDJlZmU1ODRlY2I4MmU3ZTE1ODBhMTcwZTExKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2UyYWY0YTkwZGViNTRlZjc4MjQ4MjkxZTkzYTc0Nzc5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjNiNTFkMGU2YjVkNGYwM2I4Yjk2NTBmNWU1MWI2YmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGRiMDZlYTcxMmY0NGQwY2IwMmM3MjRjZjM5ZjgyZTUgPSAkKCc8ZGl2IGlkPSJodG1sX2RkYjA2ZWE3MTJmNDRkMGNiMDJjNzI0Y2YzOWY4MmU1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjNiNTFkMGU2YjVkNGYwM2I4Yjk2NTBmNWU1MWI2YmUuc2V0Q29udGVudChodG1sX2RkYjA2ZWE3MTJmNDRkMGNiMDJjNzI0Y2YzOWY4MmU1KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2UyYWY0YTkwZGViNTRlZjc4MjQ4MjkxZTkzYTc0Nzc5LmJpbmRQb3B1cChwb3B1cF8yM2I1MWQwZTZiNWQ0ZjAzYjhiOTY1MGY1ZTUxYjZiZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85MjlhMjNkMDY5OWQ0MjA4OGNiY2JjMzQ2ZWQwZTU1YyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA4NDJiM2M4MzE0NDRjY2I5OTFiZDk0OTRlMjI2NGU1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU0ZWZlNzMyMWU0ZjRkMjBiNzkwYmZkODBlNzZmM2MxID0gJCgnPGRpdiBpZD0iaHRtbF81NGVmZTczMjFlNGY0ZDIwYjc5MGJmZDgwZTc2ZjNjMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wODQyYjNjODMxNDQ0Y2NiOTkxYmQ5NDk0ZTIyNjRlNS5zZXRDb250ZW50KGh0bWxfNTRlZmU3MzIxZTRmNGQyMGI3OTBiZmQ4MGU3NmYzYzEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTI5YTIzZDA2OTlkNDIwODhjYmNiYzM0NmVkMGU1NWMuYmluZFBvcHVwKHBvcHVwXzA4NDJiM2M4MzE0NDRjY2I5OTFiZDk0OTRlMjI2NGU1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2Y0ZmFhYjU0NDQwZTRmZjJiZTVhMzU3MmI4YjlkM2M3ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDY5MjgyMDA0MSwtMTIyLjQxNTc1NzAzOTE5Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg5ZTE2ZGU3ODAzNjQwMzQ4OGY4NjIyYTQ0OGJhYTE0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzUzYWVmMDEwNGZkYTQ3MTFiZmQxYjUxYmVkYjRhZWM4ID0gJCgnPGRpdiBpZD0iaHRtbF81M2FlZjAxMDRmZGE0NzExYmZkMWI1MWJlZGI0YWVjOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84OWUxNmRlNzgwMzY0MDM0ODhmODYyMmE0NDhiYWExNC5zZXRDb250ZW50KGh0bWxfNTNhZWYwMTA0ZmRhNDcxMWJmZDFiNTFiZWRiNGFlYzgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjRmYWFiNTQ0NDBlNGZmMmJlNWEzNTcyYjhiOWQzYzcuYmluZFBvcHVwKHBvcHVwXzg5ZTE2ZGU3ODAzNjQwMzQ4OGY4NjIyYTQ0OGJhYTE0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2QyYTMwYWZiZDQ1ZjQ3NjVhZTg1YzU4MjM2MjRjYTVhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NTI4MDYyNzQ2NSwtMTIyLjQ3NTY0NzQ2MDc4NTk5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjgxNjJhMDg5MzFiNDBlMTkzODE4ZDlhZjYyZGM5OTMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMmVjYzE0YmMxMDljNDUxNmE4NzAxYjNhZmQ2Y2QyYTUgPSAkKCc8ZGl2IGlkPSJodG1sXzJlY2MxNGJjMTA5YzQ1MTZhODcwMWIzYWZkNmNkMmE1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yODE2MmEwODkzMWI0MGUxOTM4MThkOWFmNjJkYzk5My5zZXRDb250ZW50KGh0bWxfMmVjYzE0YmMxMDljNDUxNmE4NzAxYjNhZmQ2Y2QyYTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZDJhMzBhZmJkNDVmNDc2NWFlODVjNTgyMzYyNGNhNWEuYmluZFBvcHVwKHBvcHVwXzI4MTYyYTA4OTMxYjQwZTE5MzgxOGQ5YWY2MmRjOTkzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I4ZjMzMWM0ZmY2MzQ0YmU5ZDc5YjRhZDgxNTM5MDA5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQyODUxNzM3NDQ0ODk0LC0xMjIuNDIwOTY3NDQwNTY0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTM3YzQ2ZGU0ZDVmNDkzYzg2MTcyM2I1ZjhiZTg2YjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDFjYzJjYjJjNjJjNDQ5ODgwZDI1NzA3ZTdmYTI1NjYgPSAkKCc8ZGl2IGlkPSJodG1sXzAxY2MyY2IyYzYyYzQ0OTg4MGQyNTcwN2U3ZmEyNTY2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTM3YzQ2ZGU0ZDVmNDkzYzg2MTcyM2I1ZjhiZTg2YjIuc2V0Q29udGVudChodG1sXzAxY2MyY2IyYzYyYzQ0OTg4MGQyNTcwN2U3ZmEyNTY2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2I4ZjMzMWM0ZmY2MzQ0YmU5ZDc5YjRhZDgxNTM5MDA5LmJpbmRQb3B1cChwb3B1cF9hMzdjNDZkZTRkNWY0OTNjODYxNzIzYjVmOGJlODZiMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zZDJlN2U4OTZlMjI0NTg5OGVlOTBmZjhkMmVjNDI5ZiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MjExOTg0ODg5MzEsLTEyMi40MTU2Njk2NjE0NDNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84MDIzNDE1NzY3NDQ0ZDMyOGYwYWJhNzZhZjVjMzI2ZiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84MGE3OTllYjAzY2Y0ZTFhOTU5YzFiZTQxNGJlMDdhZSA9ICQoJzxkaXYgaWQ9Imh0bWxfODBhNzk5ZWIwM2NmNGUxYTk1OWMxYmU0MTRiZTA3YWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODAyMzQxNTc2NzQ0NGQzMjhmMGFiYTc2YWY1YzMyNmYuc2V0Q29udGVudChodG1sXzgwYTc5OWViMDNjZjRlMWE5NTljMWJlNDE0YmUwN2FlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzNkMmU3ZTg5NmUyMjQ1ODk4ZWU5MGZmOGQyZWM0MjlmLmJpbmRQb3B1cChwb3B1cF84MDIzNDE1NzY3NDQ0ZDMyOGYwYWJhNzZhZjVjMzI2Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kN2I3ZWNmMjhhNTU0YjBmYThlNThlYjI5OGJkMWVmYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3OTE2NzQyMTg5NjMsLTEyMi40MDYzNDY0MjU2MzJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hYzcyZjA4N2UxMTc0OTNmOGM3NDI0ZjE5NDg0YjYyYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMzhiZjM5NDUxMjU0MjM2OGNkYTlkM2ExZTZhY2Q2YyA9ICQoJzxkaXYgaWQ9Imh0bWxfMDM4YmYzOTQ1MTI1NDIzNjhjZGE5ZDNhMWU2YWNkNmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2FjNzJmMDg3ZTExNzQ5M2Y4Yzc0MjRmMTk0ODRiNjJjLnNldENvbnRlbnQoaHRtbF8wMzhiZjM5NDUxMjU0MjM2OGNkYTlkM2ExZTZhY2Q2Yyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kN2I3ZWNmMjhhNTU0YjBmYThlNThlYjI5OGJkMWVmYS5iaW5kUG9wdXAocG9wdXBfYWM3MmYwODdlMTE3NDkzZjhjNzQyNGYxOTQ4NGI2MmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYmNkN2M0NDM2ZmNkNDBjYmE1NGM5NTVmZGIxMGUzMGYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjU3MTg0Mzk1MjgyLC0xMjIuNDA5NTI5OTEzMjc4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjBhMWZkMDZlODE2NGZhMWI5MzA5MWI5YTgxZjc3MjggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjk4NDljMWMxYmY3NGZjZGE1MWJlZjg5ZTUxYmViM2IgPSAkKCc8ZGl2IGlkPSJodG1sXzY5ODQ5YzFjMWJmNzRmY2RhNTFiZWY4OWU1MWJlYjNiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMGExZmQwNmU4MTY0ZmExYjkzMDkxYjlhODFmNzcyOC5zZXRDb250ZW50KGh0bWxfNjk4NDljMWMxYmY3NGZjZGE1MWJlZjg5ZTUxYmViM2IpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYmNkN2M0NDM2ZmNkNDBjYmE1NGM5NTVmZGIxMGUzMGYuYmluZFBvcHVwKHBvcHVwX2IwYTFmZDA2ZTgxNjRmYTFiOTMwOTFiOWE4MWY3NzI4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ViNjdlMDQ2ZjUyNjQ2NDg5NzY3ZGNkZmU3ZjM3MWJkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jNWQ5MDFlN2NhOGI0Mjg3OGU3ZWM4Yzk5ODA0MDczYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NjkzYzIyYjgxYjc0MWIyYTk2MjA5YmZkZWRjMDM0OSA9ICQoJzxkaXYgaWQ9Imh0bWxfNTY5M2MyMmI4MWI3NDFiMmE5NjIwOWJmZGVkYzAzNDkiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzVkOTAxZTdjYThiNDI4NzhlN2VjOGM5OTgwNDA3M2Euc2V0Q29udGVudChodG1sXzU2OTNjMjJiODFiNzQxYjJhOTYyMDliZmRlZGMwMzQ5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2ViNjdlMDQ2ZjUyNjQ2NDg5NzY3ZGNkZmU3ZjM3MWJkLmJpbmRQb3B1cChwb3B1cF9jNWQ5MDFlN2NhOGI0Mjg3OGU3ZWM4Yzk5ODA0MDczYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zOTc0OTAwOGM0MzE0ZmZjYWQwNmFlMjNjYjgzMGU3MyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NzUyNDMwODc4MywtMTIyLjQxMDczODA5NzMxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ0ODRiOTM2OTljYzQxNmM4Y2Y3NzZkZjA0NGJlY2Q5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzhmNDFkOWU2OGJkMjQ2OTU4Mzk1YmQzOTQ2OWM1MTIwID0gJCgnPGRpdiBpZD0iaHRtbF84ZjQxZDllNjhiZDI0Njk1ODM5NWJkMzk0NjljNTEyMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ0ODRiOTM2OTljYzQxNmM4Y2Y3NzZkZjA0NGJlY2Q5LnNldENvbnRlbnQoaHRtbF84ZjQxZDllNjhiZDI0Njk1ODM5NWJkMzk0NjljNTEyMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zOTc0OTAwOGM0MzE0ZmZjYWQwNmFlMjNjYjgzMGU3My5iaW5kUG9wdXAocG9wdXBfNDQ4NGI5MzY5OWNjNDE2YzhjZjc3NmRmMDQ0YmVjZDkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNmIwMDM5YTA2OTVlNGU5ZDgxN2M5MDYzOTFhNGRjMmIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xY2I3NTRiZDRjMzg0ZGU2OWVlN2Q1YzY5YTIzYzkwYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zOTRlNDkyNTg3ZDI0NjBiYWYxYWNhZWFjYzM5NjE2NyA9ICQoJzxkaXYgaWQ9Imh0bWxfMzk0ZTQ5MjU4N2QyNDYwYmFmMWFjYWVhY2MzOTYxNjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xY2I3NTRiZDRjMzg0ZGU2OWVlN2Q1YzY5YTIzYzkwYy5zZXRDb250ZW50KGh0bWxfMzk0ZTQ5MjU4N2QyNDYwYmFmMWFjYWVhY2MzOTYxNjcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNmIwMDM5YTA2OTVlNGU5ZDgxN2M5MDYzOTFhNGRjMmIuYmluZFBvcHVwKHBvcHVwXzFjYjc1NGJkNGMzODRkZTY5ZWU3ZDVjNjlhMjNjOTBjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRiNmE2NDU2YjZiNzQ0MDFhOGVlNjZjZjRmMjQxMWNiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEzMTA4MzQzMzI2NCwtMTIyLjQ0NDMxNDAyNTE4OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc3MmRjZDk0N2E1NzRjODQ4Y2UwZjZlMGM1YzQ4YWU3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzIwYWZjMDgwYjZlZjRhNmM4ZDcyMGMwYmNlZGFkYjZmID0gJCgnPGRpdiBpZD0iaHRtbF8yMGFmYzA4MGI2ZWY0YTZjOGQ3MjBjMGJjZWRhZGI2ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc3MmRjZDk0N2E1NzRjODQ4Y2UwZjZlMGM1YzQ4YWU3LnNldENvbnRlbnQoaHRtbF8yMGFmYzA4MGI2ZWY0YTZjOGQ3MjBjMGJjZWRhZGI2Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl80YjZhNjQ1NmI2Yjc0NDAxYThlZTY2Y2Y0ZjI0MTFjYi5iaW5kUG9wdXAocG9wdXBfNzcyZGNkOTQ3YTU3NGM4NDhjZTBmNmUwYzVjNDhhZTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjRiOGIwZjg4YmRkNGU1YWExZDZiYjMzMTFjOTg5MmUgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTMxMDgzNDMzMjY0LC0xMjIuNDQ0MzE0MDI1MTg4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjY5NzE0ODQ1YTk2NDI1YWFhOGFhMTdmMjc0ZWZmMmYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2U3NzNlYzdjMTFlNGY3MGE5OTVkMDJlMzlmMWU2ZGIgPSAkKCc8ZGl2IGlkPSJodG1sXzNlNzczZWM3YzExZTRmNzBhOTk1ZDAyZTM5ZjFlNmRiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yNjk3MTQ4NDVhOTY0MjVhYWE4YWExN2YyNzRlZmYyZi5zZXRDb250ZW50KGh0bWxfM2U3NzNlYzdjMTFlNGY3MGE5OTVkMDJlMzlmMWU2ZGIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjRiOGIwZjg4YmRkNGU1YWExZDZiYjMzMTFjOTg5MmUuYmluZFBvcHVwKHBvcHVwXzI2OTcxNDg0NWE5NjQyNWFhYThhYTE3ZjI3NGVmZjJmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZlMWIxZmYwNzMwZDQ2MjNiMTg0ZDIxNDNhYWY5NDBiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY5M2YxNWY4NTc0MjQyMTU5MjA4NzdmMjE0ZDJiYTI3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM2NzFkYzg5YzZiMDQxN2FiNjE3NGI2Y2RmZjRiMmY5ID0gJCgnPGRpdiBpZD0iaHRtbF8zNjcxZGM4OWM2YjA0MTdhYjYxNzRiNmNkZmY0YjJmOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzY5M2YxNWY4NTc0MjQyMTU5MjA4NzdmMjE0ZDJiYTI3LnNldENvbnRlbnQoaHRtbF8zNjcxZGM4OWM2YjA0MTdhYjYxNzRiNmNkZmY0YjJmOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mZTFiMWZmMDczMGQ0NjIzYjE4NGQyMTQzYWFmOTQwYi5iaW5kUG9wdXAocG9wdXBfNjkzZjE1Zjg1NzQyNDIxNTkyMDg3N2YyMTRkMmJhMjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNDE1NGI2ZTZkMzIzNGJjODg5NGUyYWZiMzRiNTJmNjEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjYwMTYwMTE0MTAzLC0xMjIuNDAzNjQ0NjIwNDM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNjgwYzRiN2E5MTk2NDdlNGI3ZTA4MWY1ZTczYWZiZjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTc5N2M5MzI2NjRhNDdiZjg5YTk5N2MxYzU4MGIwYWYgPSAkKCc8ZGl2IGlkPSJodG1sXzU3OTdjOTMyNjY0YTQ3YmY4OWE5OTdjMWM1ODBiMGFmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjgwYzRiN2E5MTk2NDdlNGI3ZTA4MWY1ZTczYWZiZjcuc2V0Q29udGVudChodG1sXzU3OTdjOTMyNjY0YTQ3YmY4OWE5OTdjMWM1ODBiMGFmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzQxNTRiNmU2ZDMyMzRiYzg4OTRlMmFmYjM0YjUyZjYxLmJpbmRQb3B1cChwb3B1cF82ODBjNGI3YTkxOTY0N2U0YjdlMDgxZjVlNzNhZmJmNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84MzcyYzRlYmY5Njg0ZDFlYmM4YWE2NWUyNzMxZjg0MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2E0NzJlN2ViMzFhZDRkMmViZmJiMDQyMzdjYzk5MGNlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q1YzlkMjU3NmYwMTQ4OTg5MGZlMmQxMzQ4NjhlYWJhID0gJCgnPGRpdiBpZD0iaHRtbF9kNWM5ZDI1NzZmMDE0ODk4OTBmZTJkMTM0ODY4ZWFiYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTQ3MmU3ZWIzMWFkNGQyZWJmYmIwNDIzN2NjOTkwY2Uuc2V0Q29udGVudChodG1sX2Q1YzlkMjU3NmYwMTQ4OTg5MGZlMmQxMzQ4NjhlYWJhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzgzNzJjNGViZjk2ODRkMWViYzhhYTY1ZTI3MzFmODQwLmJpbmRQb3B1cChwb3B1cF9hNDcyZTdlYjMxYWQ0ZDJlYmZiYjA0MjM3Y2M5OTBjZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9kZWY4M2Q1MWYyOGI0M2VjOTg4ZWI1NDRiMmEzMDVkOSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2IwNDcxNDM5MmFiYzQyZTA4YWVjMTIwMTI5MDY3YjI2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA3ZGExNTcwNmU4MjQxNTc5ZjdjNmYyMjgzYWQ1YzRlID0gJCgnPGRpdiBpZD0iaHRtbF8wN2RhMTU3MDZlODI0MTU3OWY3YzZmMjI4M2FkNWM0ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2IwNDcxNDM5MmFiYzQyZTA4YWVjMTIwMTI5MDY3YjI2LnNldENvbnRlbnQoaHRtbF8wN2RhMTU3MDZlODI0MTU3OWY3YzZmMjI4M2FkNWM0ZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9kZWY4M2Q1MWYyOGI0M2VjOTg4ZWI1NDRiMmEzMDVkOS5iaW5kUG9wdXAocG9wdXBfYjA0NzE0MzkyYWJjNDJlMDhhZWMxMjAxMjkwNjdiMjYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjYzNmEwMmVlNjUzNGYyOGFmOTBlZTMxMjMzNWVkYzYgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Nzc1MTE4ODk1Njk1LC0xMjIuNDE4MDQ1NDUyNzY4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODNlMjg2MTNhZmY3NDc1NmI5ZjI2YzY3Y2MzZjNkZmQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTNiYjY0NzhiMjFjNDM0YWEyNjdmZDBmYWMzZDYyZTIgPSAkKCc8ZGl2IGlkPSJodG1sX2EzYmI2NDc4YjIxYzQzNGFhMjY3ZmQwZmFjM2Q2MmUyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84M2UyODYxM2FmZjc0NzU2YjlmMjZjNjdjYzNmM2RmZC5zZXRDb250ZW50KGh0bWxfYTNiYjY0NzhiMjFjNDM0YWEyNjdmZDBmYWMzZDYyZTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjYzNmEwMmVlNjUzNGYyOGFmOTBlZTMxMjMzNWVkYzYuYmluZFBvcHVwKHBvcHVwXzgzZTI4NjEzYWZmNzQ3NTZiOWYyNmM2N2NjM2YzZGZkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzUyMGMyYTc3NGRhMDRmOTI5MTIyZDQ2YjAwZDc2M2E0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgyMDIzODQ3ODk3NSwtMTIyLjQwMTE2MTU1NTYwMl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MzNjRjNTQ4MGI5YzRhOTliNWU5Y2IwOTExMzcwMjE4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2Q5ZGMwNDI2YTMxMTQzYjY4ZjVkYTFkNzliNmNjODlmID0gJCgnPGRpdiBpZD0iaHRtbF9kOWRjMDQyNmEzMTE0M2I2OGY1ZGExZDc5YjZjYzg5ZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2MzNjRjNTQ4MGI5YzRhOTliNWU5Y2IwOTExMzcwMjE4LnNldENvbnRlbnQoaHRtbF9kOWRjMDQyNmEzMTE0M2I2OGY1ZGExZDc5YjZjYzg5Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl81MjBjMmE3NzRkYTA0ZjkyOTEyMmQ0NmIwMGQ3NjNhNC5iaW5kUG9wdXAocG9wdXBfYzM2NGM1NDgwYjljNGE5OWI1ZTljYjA5MTEzNzAyMTgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNGI4MTg4OTc5N2Q5NDMwN2E5ZWU4ZDFmZTliNTZlZWEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjcwMDUzMTk2Mjk5OTUsLTEyMi40MDM0MDg2NjkxOTFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iMGQ0NjViMmRkYTE0Yzk2OTAwNGZlZGQxNzg1YWJmMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mY2M0NTJjYjRhN2E0N2M0YmY5ZDk0YjVmNDExY2IzMyA9ICQoJzxkaXYgaWQ9Imh0bWxfZmNjNDUyY2I0YTdhNDdjNGJmOWQ5NGI1ZjQxMWNiMzMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMGQ0NjViMmRkYTE0Yzk2OTAwNGZlZGQxNzg1YWJmMi5zZXRDb250ZW50KGh0bWxfZmNjNDUyY2I0YTdhNDdjNGJmOWQ5NGI1ZjQxMWNiMzMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNGI4MTg4OTc5N2Q5NDMwN2E5ZWU4ZDFmZTliNTZlZWEuYmluZFBvcHVwKHBvcHVwX2IwZDQ2NWIyZGRhMTRjOTY5MDA0ZmVkZDE3ODVhYmYyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzk3Y2YwYTQ2ZTllNjQ4YzI5NTA5ODc1NmYwNmExZWZhID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzODM0NDM3NDE0MSwtMTIyLjQxMjkzMDUyMjA1OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA5ZGU4Mzk5MTZhMDQzM2U5NDY0MDFiZTg4NTE4YzI0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzU4NGUwNGYyMTBmZDRjMjZiZWIwY2YwMTY3NWYzYzRkID0gJCgnPGRpdiBpZD0iaHRtbF81ODRlMDRmMjEwZmQ0YzI2YmViMGNmMDE2NzVmM2M0ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wOWRlODM5OTE2YTA0MzNlOTQ2NDAxYmU4ODUxOGMyNC5zZXRDb250ZW50KGh0bWxfNTg0ZTA0ZjIxMGZkNGMyNmJlYjBjZjAxNjc1ZjNjNGQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTdjZjBhNDZlOWU2NDhjMjk1MDk4NzU2ZjA2YTFlZmEuYmluZFBvcHVwKHBvcHVwXzA5ZGU4Mzk5MTZhMDQzM2U5NDY0MDFiZTg4NTE4YzI0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzZhMWZhOTY3YWE2MTQxMjhiYzcyNzEyZDc2NWNhMDRkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzUzMDE4NjUzNzQ0NjA0LC0xMjIuNDE4NTg3MTcyMjE5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2MzYTFiY2Y2Y2Q5NDNlODk1M2VlM2QzMDRkYTcwODAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzliNDU1OGE5YmRmNDRkMjk0ZTM5NDg4ZDQ5MzgxODQgPSAkKCc8ZGl2IGlkPSJodG1sX2M5YjQ1NThhOWJkZjQ0ZDI5NGUzOTQ4OGQ0OTM4MTg0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdjM2ExYmNmNmNkOTQzZTg5NTNlZTNkMzA0ZGE3MDgwLnNldENvbnRlbnQoaHRtbF9jOWI0NTU4YTliZGY0NGQyOTRlMzk0ODhkNDkzODE4NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl82YTFmYTk2N2FhNjE0MTI4YmM3MjcxMmQ3NjVjYTA0ZC5iaW5kUG9wdXAocG9wdXBfN2MzYTFiY2Y2Y2Q5NDNlODk1M2VlM2QzMDRkYTcwODApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWUyODNhOTk5N2JmNGFmMmEyN2FkMTAzMzU1MDliNmEgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTk3NzM1Y2M3ZDIyNDI0M2JmMmJjMGQyNThjNDBlZDEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzBmNDI0NjQ3NWM1NGNmZmIwMjIyZjNhZWEwMDdmODggPSAkKCc8ZGl2IGlkPSJodG1sX2MwZjQyNDY0NzVjNTRjZmZiMDIyMmYzYWVhMDA3Zjg4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5GUkFVRDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYTk3NzM1Y2M3ZDIyNDI0M2JmMmJjMGQyNThjNDBlZDEuc2V0Q29udGVudChodG1sX2MwZjQyNDY0NzVjNTRjZmZiMDIyMmYzYWVhMDA3Zjg4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzFlMjgzYTk5OTdiZjRhZjJhMjdhZDEwMzM1NTA5YjZhLmJpbmRQb3B1cChwb3B1cF9hOTc3MzVjYzdkMjI0MjQzYmYyYmMwZDI1OGM0MGVkMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iNjE5MmY2ZTM0MGY0MzgxYmI1NDg0MzFlNTM0MGJlYSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MDUzODk5MzcyNSwtMTIyLjQwMzkxNTY4MTU3MTAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZmUzNTQ2NzMyZGZjNDZkY2FhNDkzOGQ2MzQxNmQ3NzYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZTY0ZjY2YTE0NmUzNGRjODkwNDdmNDIyYjBmM2QxZTcgPSAkKCc8ZGl2IGlkPSJodG1sX2U2NGY2NmExNDZlMzRkYzg5MDQ3ZjQyMmIwZjNkMWU3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mZTM1NDY3MzJkZmM0NmRjYWE0OTM4ZDYzNDE2ZDc3Ni5zZXRDb250ZW50KGh0bWxfZTY0ZjY2YTE0NmUzNGRjODkwNDdmNDIyYjBmM2QxZTcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjYxOTJmNmUzNDBmNDM4MWJiNTQ4NDMxZTUzNDBiZWEuYmluZFBvcHVwKHBvcHVwX2ZlMzU0NjczMmRmYzQ2ZGNhYTQ5MzhkNjM0MTZkNzc2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzA2MThkMDNmN2JjYjQ4MjZhYWU3MWNlYmQyYzUyNTc0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzMDk5ODI0NDU5MjEsLTEyMi40MTkxODMwOTYzNjJdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kYmJkZTM1YTllNzA0NWM2YWQ3MDI5YTllYTRjNGIxYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wZDEzYzYxZTE4ZGM0ZGY3ODQ0NWZlZjk2YzVkNWUzMiA9ICQoJzxkaXYgaWQ9Imh0bWxfMGQxM2M2MWUxOGRjNGRmNzg0NDVmZWY5NmM1ZDVlMzIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kYmJkZTM1YTllNzA0NWM2YWQ3MDI5YTllYTRjNGIxYy5zZXRDb250ZW50KGh0bWxfMGQxM2M2MWUxOGRjNGRmNzg0NDVmZWY5NmM1ZDVlMzIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMDYxOGQwM2Y3YmNiNDgyNmFhZTcxY2ViZDJjNTI1NzQuYmluZFBvcHVwKHBvcHVwX2RiYmRlMzVhOWU3MDQ1YzZhZDcwMjlhOWVhNGM0YjFjKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY3Mjc2MzE2NzQ1YjQ1MDc4YjdmMzNmOGNkNWZiNjkwID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQwNzM2MDU0ODM1NzksLTEyMi4zODg3NTMwNDY5OTddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kMzA5ZTUwNDA5MmI0NWQwOWM0ZmVmYzlhMDVkOGFmMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kOTk0YzVjNjg1OGQ0N2QxODAwYTM3MjQyNjI5NDBkYiA9ICQoJzxkaXYgaWQ9Imh0bWxfZDk5NGM1YzY4NThkNDdkMTgwMGEzNzI0MjYyOTQwZGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kMzA5ZTUwNDA5MmI0NWQwOWM0ZmVmYzlhMDVkOGFmMi5zZXRDb250ZW50KGh0bWxfZDk5NGM1YzY4NThkNDdkMTgwMGEzNzI0MjYyOTQwZGIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjcyNzYzMTY3NDViNDUwNzhiN2YzM2Y4Y2Q1ZmI2OTAuYmluZFBvcHVwKHBvcHVwX2QzMDllNTA0MDkyYjQ1ZDA5YzRmZWZjOWEwNWQ4YWYyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzJmNmYzYzEwYzE0NTQ3ODI5Nzk0Njc2YTY4MjU1MTNmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc0OTkxMjk0NDM2NiwtMTIyLjQzNzc5OTcwMzQ2OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJjMmQ5N2Y5MDdjMjQ4ZWRiYTNlNjQ0MDE2ODY1YmMxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzQ3MjhhM2UzZDI1NzRhZGM4ZWMzNGI1YzQyOWJlNTIzID0gJCgnPGRpdiBpZD0iaHRtbF80NzI4YTNlM2QyNTc0YWRjOGVjMzRiNWM0MjliZTUyMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmMyZDk3ZjkwN2MyNDhlZGJhM2U2NDQwMTY4NjViYzEuc2V0Q29udGVudChodG1sXzQ3MjhhM2UzZDI1NzRhZGM4ZWMzNGI1YzQyOWJlNTIzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzJmNmYzYzEwYzE0NTQ3ODI5Nzk0Njc2YTY4MjU1MTNmLmJpbmRQb3B1cChwb3B1cF8yYzJkOTdmOTA3YzI0OGVkYmEzZTY0NDAxNjg2NWJjMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9mNzMwMGUxYTEwZGE0MzRmYTk2ZDE0OTkwZDg0ZjU3MyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NzA5MDI3NDM2NjksLTEyMi40MjEzMzI2ODQ2MzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9jN2QyN2I4NWEyZjY0Yjk0YWQzMDE1NmY5M2UyNjhjMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xM2Q4MTQwOTg4YjQ0OGFiYmEwMWRlNGE4NzFkYzI0NiA9ICQoJzxkaXYgaWQ9Imh0bWxfMTNkODE0MDk4OGI0NDhhYmJhMDFkZTRhODcxZGMyNDYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk1JU1NJTkcgUEVSU09OPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jN2QyN2I4NWEyZjY0Yjk0YWQzMDE1NmY5M2UyNjhjMi5zZXRDb250ZW50KGh0bWxfMTNkODE0MDk4OGI0NDhhYmJhMDFkZTRhODcxZGMyNDYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZjczMDBlMWExMGRhNDM0ZmE5NmQxNDk5MGQ4NGY1NzMuYmluZFBvcHVwKHBvcHVwX2M3ZDI3Yjg1YTJmNjRiOTRhZDMwMTU2ZjkzZTI2OGMyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JjYWNjZTIzODIzOTQ0NjRiMGIxNTgzOTkwOGQ3Y2QxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJiMWM3Y2Y4YzcwOTRjYjRiMDllZGQ4NWY3ZTMzZGFlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAxMzIxNTc5ZGVlZDQ3MWViMWU2YWIzOGQxMDBmODExID0gJCgnPGRpdiBpZD0iaHRtbF8wMTMyMTU3OWRlZWQ0NzFlYjFlNmFiMzhkMTAwZjgxMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJiMWM3Y2Y4YzcwOTRjYjRiMDllZGQ4NWY3ZTMzZGFlLnNldENvbnRlbnQoaHRtbF8wMTMyMTU3OWRlZWQ0NzFlYjFlNmFiMzhkMTAwZjgxMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iY2FjY2UyMzgyMzk0NDY0YjBiMTU4Mzk5MDhkN2NkMS5iaW5kUG9wdXAocG9wdXBfMmIxYzdjZjhjNzA5NGNiNGIwOWVkZDg1ZjdlMzNkYWUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfZDk0NWRiMDQ0NWVkNDBhODhlZDQ0MzNlOTE0MmY1Y2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIyNDU4MjIzOTE3LC0xMjIuNDQ2NjEyOTc4ODM5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOGNlODVkNTI4ZWNmNDlmM2IzNTM2ODExYzFlMjNkZDEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTI1MGJhMzk1YjFhNDZkYWJkMTU1ZjE5YzFiNGYyNGQgPSAkKCc8ZGl2IGlkPSJodG1sXzUyNTBiYTM5NWIxYTQ2ZGFiZDE1NWYxOWMxYjRmMjRkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOGNlODVkNTI4ZWNmNDlmM2IzNTM2ODExYzFlMjNkZDEuc2V0Q29udGVudChodG1sXzUyNTBiYTM5NWIxYTQ2ZGFiZDE1NWYxOWMxYjRmMjRkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2Q5NDVkYjA0NDVlZDQwYTg4ZWQ0NDMzZTkxNDJmNWNlLmJpbmRQb3B1cChwb3B1cF84Y2U4NWQ1MjhlY2Y0OWYzYjM1MzY4MTFjMWUyM2RkMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xMzYzYTQ5MGFkZDk0MjBmYjQ5MWU2MGU0Njk4MzhkNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDAzNzk5OTUxMjc5NSwtMTIyLjQwNDU5NDE0MDYzNF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZjYmU5NjA3MjdkYzQ5YmQ4NzJjZDcyZmI4OWIzOTM0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzlkZDQ5NGNjM2FmYjQ2NzFhNTMxMzQ3OWE4ZmNmMjllID0gJCgnPGRpdiBpZD0iaHRtbF85ZGQ0OTRjYzNhZmI0NjcxYTUzMTM0NzlhOGZjZjI5ZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82Y2JlOTYwNzI3ZGM0OWJkODcyY2Q3MmZiODliMzkzNC5zZXRDb250ZW50KGh0bWxfOWRkNDk0Y2MzYWZiNDY3MWE1MzEzNDc5YThmY2YyOWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTM2M2E0OTBhZGQ5NDIwZmI0OTFlNjBlNDY5ODM4ZDUuYmluZFBvcHVwKHBvcHVwXzZjYmU5NjA3MjdkYzQ5YmQ4NzJjZDcyZmI4OWIzOTM0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZjYjJiNmEzMTJhMjRlMGQ4YWVmZGNhZjhmODEyNWY0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzk1MzMzODI2NzQzNiwtMTIyLjM5NzM3Mzc0MDA2Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU4ODYwZGU4NTY1NTQ2ZDE5MWFiOWM0NTc3NjhiZDhmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JlZmVkNWRmYjAwYjQ3YzViNTljNzc4NzE2MzFhOGVlID0gJCgnPGRpdiBpZD0iaHRtbF9iZWZlZDVkZmIwMGI0N2M1YjU5Yzc3ODcxNjMxYThlZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81ODg2MGRlODU2NTU0NmQxOTFhYjljNDU3NzY4YmQ4Zi5zZXRDb250ZW50KGh0bWxfYmVmZWQ1ZGZiMDBiNDdjNWI1OWM3Nzg3MTYzMWE4ZWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZmNiMmI2YTMxMmEyNGUwZDhhZWZkY2FmOGY4MTI1ZjQuYmluZFBvcHVwKHBvcHVwXzU4ODYwZGU4NTY1NTQ2ZDE5MWFiOWM0NTc3NjhiZDhmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzhlMDhhNzlkY2E1YTQzNDI5ODFiYjBhNDY4ZDgwN2U4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg3NTE1ODc0MTYyMjk1LC0xMjIuNDA3NDM0OTg5NTIzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTZmNzFjMzQyNDk4NDAzMjliZWRmZGUyNTdkNjA3ZGEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZWM2NGFkYTBiODRkNGEwYjhkNTJhMWQ2ODAxY2JkYjAgPSAkKCc8ZGl2IGlkPSJodG1sX2VjNjRhZGEwYjg0ZDRhMGI4ZDUyYTFkNjgwMWNiZGIwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNTZmNzFjMzQyNDk4NDAzMjliZWRmZGUyNTdkNjA3ZGEuc2V0Q29udGVudChodG1sX2VjNjRhZGEwYjg0ZDRhMGI4ZDUyYTFkNjgwMWNiZGIwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzhlMDhhNzlkY2E1YTQzNDI5ODFiYjBhNDY4ZDgwN2U4LmJpbmRQb3B1cChwb3B1cF81NmY3MWMzNDI0OTg0MDMyOWJlZGZkZTI1N2Q2MDdkYSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9hNGM0MWE1YWRjZmY0ZGEwYTZhNjE4OWQyMmJjOWFmNiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82Njg0ZjczOWM2ODU0ZTczOWE4MGVmMTI4MzJmMmEwOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kMzEyMzI5ZGRmMmU0YzI3YTMwYmNiNDc1NWExNGE0YyA9ICQoJzxkaXYgaWQ9Imh0bWxfZDMxMjMyOWRkZjJlNGMyN2EzMGJjYjQ3NTVhMTRhNGMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBST1NUSVRVVElPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjY4NGY3MzljNjg1NGU3MzlhODBlZjEyODMyZjJhMDguc2V0Q29udGVudChodG1sX2QzMTIzMjlkZGYyZTRjMjdhMzBiY2I0NzU1YTE0YTRjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2E0YzQxYTVhZGNmZjRkYTBhNmE2MTg5ZDIyYmM5YWY2LmJpbmRQb3B1cChwb3B1cF82Njg0ZjczOWM2ODU0ZTczOWE4MGVmMTI4MzJmMmEwOCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl9iODEwYjlhOTJhMzM0N2MxYjE0ODIyYTdiZGRmNGEyYyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xYTAwM2FkNDI0NGY0NzY1YjcyZGU5YWE4ZTQzNzY2NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zMDA0MjNjOTNjNzM0Y2M5YjAyZDAxZjQ5ZmQ3MWY4NSA9ICQoJzxkaXYgaWQ9Imh0bWxfMzAwNDIzYzkzYzczNGNjOWIwMmQwMWY0OWZkNzFmODUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xYTAwM2FkNDI0NGY0NzY1YjcyZGU5YWE4ZTQzNzY2Ny5zZXRDb250ZW50KGh0bWxfMzAwNDIzYzkzYzczNGNjOWIwMmQwMWY0OWZkNzFmODUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYjgxMGI5YTkyYTMzNDdjMWIxNDgyMmE3YmRkZjRhMmMuYmluZFBvcHVwKHBvcHVwXzFhMDAzYWQ0MjQ0ZjQ3NjViNzJkZTlhYThlNDM3NjY3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2FiZWQwNThjZGFjYjRmMTk5NDhjZDhlY2ZlNmRhMDlkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzczMjkxODA2OTAyOTk2LC0xMjIuNDM2NjE0MTgxMzMxMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85ZTU1MGFlZThmYjc0ODU1OTEyNTQ3NDE0NGFmODNiZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMGMxZmYzNjNjN2E0MWJlYWFiNzRhODY3NTA0OTFmYSA9ICQoJzxkaXYgaWQ9Imh0bWxfYjBjMWZmMzYzYzdhNDFiZWFhYjc0YTg2NzUwNDkxZmEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWU1NTBhZWU4ZmI3NDg1NTkxMjU0NzQxNDRhZjgzYmUuc2V0Q29udGVudChodG1sX2IwYzFmZjM2M2M3YTQxYmVhYWI3NGE4Njc1MDQ5MWZhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2FiZWQwNThjZGFjYjRmMTk5NDhjZDhlY2ZlNmRhMDlkLmJpbmRQb3B1cChwb3B1cF85ZTU1MGFlZThmYjc0ODU1OTEyNTQ3NDE0NGFmODNiZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zNWFhMDg0ZWU0OGM0N2E4YmM0ZDY3NThjY2I5ZWI1YiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDUyNzU3ODUwOSwtMTIyLjM5Njg0OTAxNTE3MjAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTI0ZTgzY2MxMDVhNGI3MmJmZjMxOTE5ODA0YmEwZDMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjdhZDFkYTgyYmY3NDhjNjhlYzAyNGY1OTJkNmI1NGYgPSAkKCc8ZGl2IGlkPSJodG1sXzY3YWQxZGE4MmJmNzQ4YzY4ZWMwMjRmNTkyZDZiNTRmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xMjRlODNjYzEwNWE0YjcyYmZmMzE5MTk4MDRiYTBkMy5zZXRDb250ZW50KGh0bWxfNjdhZDFkYTgyYmY3NDhjNjhlYzAyNGY1OTJkNmI1NGYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzVhYTA4NGVlNDhjNDdhOGJjNGQ2NzU4Y2NiOWViNWIuYmluZFBvcHVwKHBvcHVwXzEyNGU4M2NjMTA1YTRiNzJiZmYzMTkxOTgwNGJhMGQzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2MxOWNiMThkNzdkMDRjZWFhZWZlZWNiN2Q3MTRiNDQxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xMWVlNmIzMzY0ZGU0ZTdlODY2YmE0ZWUwMGJhNGNmNSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MDEwNzY2NDU3NmQ0MzBkOTA4MDQ5MDNiNGQxZjY5OCA9ICQoJzxkaXYgaWQ9Imh0bWxfNTAxMDc2NjQ1NzZkNDMwZDkwODA0OTAzYjRkMWY2OTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xMWVlNmIzMzY0ZGU0ZTdlODY2YmE0ZWUwMGJhNGNmNS5zZXRDb250ZW50KGh0bWxfNTAxMDc2NjQ1NzZkNDMwZDkwODA0OTAzYjRkMWY2OTgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzE5Y2IxOGQ3N2QwNGNlYWFlZmVlY2I3ZDcxNGI0NDEuYmluZFBvcHVwKHBvcHVwXzExZWU2YjMzNjRkZTRlN2U4NjZiYTRlZTAwYmE0Y2Y1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzdlZjA0ZjUwNTBkMzQyNThhNzE0OWQxNGU1YWQ2ZTQ0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI4NDE4MDcwNjYwMjA0LC0xMjIuNDUwMDAwNzkwNDQ1XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGRmYjM1OWU4NTlmNDBiMWFlY2E4ZGM0ZmFmMTY4MzUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzQ2ZjZhZTNjM2YxNDBkZmJlNzY2OWZhNGRlNWYxMjYgPSAkKCc8ZGl2IGlkPSJodG1sXzM0NmY2YWUzYzNmMTQwZGZiZTc2NjlmYTRkZTVmMTI2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kZGZiMzU5ZTg1OWY0MGIxYWVjYThkYzRmYWYxNjgzNS5zZXRDb250ZW50KGh0bWxfMzQ2ZjZhZTNjM2YxNDBkZmJlNzY2OWZhNGRlNWYxMjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfN2VmMDRmNTA1MGQzNDI1OGE3MTQ5ZDE0ZTVhZDZlNDQuYmluZFBvcHVwKHBvcHVwX2RkZmIzNTllODU5ZjQwYjFhZWNhOGRjNGZhZjE2ODM1KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzg2Mjg0YjdhYjVkNjRiYTJhZGJkNDJmMWMzN2QzYWQ2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzI5MjExNDY0NzM1OSwtMTIyLjQwMDgzNDI4MzAzMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MwZTgwNDU4OTgxNDRmNjVhN2FhNTg3NWM4OGQyOTFhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNkMTBjNGIxYTMyYTQ3MTU4MDQyZDYwMDY2ZDNiNTYwID0gJCgnPGRpdiBpZD0iaHRtbF8zZDEwYzRiMWEzMmE0NzE1ODA0MmQ2MDA2NmQzYjU2MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2MwZTgwNDU4OTgxNDRmNjVhN2FhNTg3NWM4OGQyOTFhLnNldENvbnRlbnQoaHRtbF8zZDEwYzRiMWEzMmE0NzE1ODA0MmQ2MDA2NmQzYjU2MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl84NjI4NGI3YWI1ZDY0YmEyYWRiZDQyZjFjMzdkM2FkNi5iaW5kUG9wdXAocG9wdXBfYzBlODA0NTg5ODE0NGY2NWE3YWE1ODc1Yzg4ZDI5MWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzU3NWU3ZDQwMzk1NGNhZDljNDJlZDhmMzVmOWE5ZDMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zZGUwNWQ1NzNmNjA0NzQ1YTliZjU1MDU0MTIzYzQxMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83NzRkOTRhYzljZWU0MTc2YmRhYWRhZjk4NzgzNDUxZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNzc0ZDk0YWM5Y2VlNDE3NmJkYWFkYWY5ODc4MzQ1MWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzNkZTA1ZDU3M2Y2MDQ3NDVhOWJmNTUwNTQxMjNjNDEwLnNldENvbnRlbnQoaHRtbF83NzRkOTRhYzljZWU0MTc2YmRhYWRhZjk4NzgzNDUxZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9jNTc1ZTdkNDAzOTU0Y2FkOWM0MmVkOGYzNWY5YTlkMy5iaW5kUG9wdXAocG9wdXBfM2RlMDVkNTczZjYwNDc0NWE5YmY1NTA1NDEyM2M0MTApOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfNjk4NGI2MzA4NTY2NDMzOWJiMTFmYzhkZGExZjM3YWQgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2QyM2RiZDc0ZGM4ZTQ4NTNhOTYyMjZkYWZmZmUwMzdlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM4MTdmZmZiOWFmODQyMTk4MWZmMTc1Nzc5YzVkNDRiID0gJCgnPGRpdiBpZD0iaHRtbF8zODE3ZmZmYjlhZjg0MjE5ODFmZjE3NTc3OWM1ZDQ0YiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kMjNkYmQ3NGRjOGU0ODUzYTk2MjI2ZGFmZmZlMDM3ZS5zZXRDb250ZW50KGh0bWxfMzgxN2ZmZmI5YWY4NDIxOTgxZmYxNzU3NzljNWQ0NGIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjk4NGI2MzA4NTY2NDMzOWJiMTFmYzhkZGExZjM3YWQuYmluZFBvcHVwKHBvcHVwX2QyM2RiZDc0ZGM4ZTQ4NTNhOTYyMjZkYWZmZmUwMzdlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RjOTlhM2Q1MDk1NDQ5MjdiZjVkMTcwODczYjhkYWFiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mNTVmYjRlMGU2OGQ0NmQxOTU3Yjc4ZWUwYmQ2ZTUyYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81MTBlZTQ3NTA4NDU0NDVlODdhZWFkYWFhZWEzMmEyMCA9ICQoJzxkaXYgaWQ9Imh0bWxfNTEwZWU0NzUwODQ1NDQ1ZTg3YWVhZGFhYWVhMzJhMjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNVU1BJQ0lPVVMgT0NDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mNTVmYjRlMGU2OGQ0NmQxOTU3Yjc4ZWUwYmQ2ZTUyYS5zZXRDb250ZW50KGh0bWxfNTEwZWU0NzUwODQ1NDQ1ZTg3YWVhZGFhYWVhMzJhMjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfZGM5OWEzZDUwOTU0NDkyN2JmNWQxNzA4NzNiOGRhYWIuYmluZFBvcHVwKHBvcHVwX2Y1NWZiNGUwZTY4ZDQ2ZDE5NTdiNzhlZTBiZDZlNTJhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzljMjRhZDI4YzFmMTQwMjNhZDMwZDA5ZTM0ZGEyYTM4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80M2JjOWQ0MDJmMTI0MjZiYmRjMzhjYTY0NWQ0ODBlYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wMDIxNDBhYzc5Njk0M2E1ODJkZmMzMTVhOTlkMjAxZSA9ICQoJzxkaXYgaWQ9Imh0bWxfMDAyMTQwYWM3OTY5NDNhNTgyZGZjMzE1YTk5ZDIwMWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80M2JjOWQ0MDJmMTI0MjZiYmRjMzhjYTY0NWQ0ODBlYi5zZXRDb250ZW50KGh0bWxfMDAyMTQwYWM3OTY5NDNhNTgyZGZjMzE1YTk5ZDIwMWUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOWMyNGFkMjhjMWYxNDAyM2FkMzBkMDllMzRkYTJhMzguYmluZFBvcHVwKHBvcHVwXzQzYmM5ZDQwMmYxMjQyNmJiZGMzOGNhNjQ1ZDQ4MGViKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzY3ZWVhNzY0NzEzZjQ1YWY5ZDdkN2Y3Y2M2OWQ4Mzg4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg4MzIzNTQ0OTkwNCwtMTIyLjQxMTg1NzAzMjU0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDViYWExODRhYjBlNGFiMWE3NmY5YTk5OWI0NWQ2NDYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMTlhNDljNTYyN2ZhNDk1MDhmZGMyMGEzNzA4ZGJiNzggPSAkKCc8ZGl2IGlkPSJodG1sXzE5YTQ5YzU2MjdmYTQ5NTA4ZmRjMjBhMzcwOGRiYjc4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNWJhYTE4NGFiMGU0YWIxYTc2ZjlhOTk5YjQ1ZDY0Ni5zZXRDb250ZW50KGh0bWxfMTlhNDljNTYyN2ZhNDk1MDhmZGMyMGEzNzA4ZGJiNzgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNjdlZWE3NjQ3MTNmNDVhZjlkN2Q3ZjdjYzY5ZDgzODguYmluZFBvcHVwKHBvcHVwX2Q1YmFhMTg0YWIwZTRhYjFhNzZmOWE5OTliNDVkNjQ2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2ZiYTI3M2E0NGZmNjQ0MTNhY2NhYTU0ZmI3NDBlNTIxID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU1OTk3NzMzOTg1NiwtMTIyLjQwOTQzNTYxNzEwNl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzI0Y2IwNDU3YTYxNzQ5ZWFiNzgyMDZiYjU5NzE0NDdlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NmZmRiN2RkYzRiZTRmNTZhOGZkOTk4NTFhMDM1NmE5ID0gJCgnPGRpdiBpZD0iaHRtbF9jZmZkYjdkZGM0YmU0ZjU2YThmZDk5ODUxYTAzNTZhOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI0Y2IwNDU3YTYxNzQ5ZWFiNzgyMDZiYjU5NzE0NDdlLnNldENvbnRlbnQoaHRtbF9jZmZkYjdkZGM0YmU0ZjU2YThmZDk5ODUxYTAzNTZhOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9mYmEyNzNhNDRmZjY0NDEzYWNjYWE1NGZiNzQwZTUyMS5iaW5kUG9wdXAocG9wdXBfMjRjYjA0NTdhNjE3NDllYWI3ODIwNmJiNTk3MTQ0N2UpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMWY0NDc1MGYxM2Q0NDZiMWE5ODU0Nzk1OTk4Njg0N2QgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODcwNzk4MTQ0NDQzLC0xMjIuNDI1ODgzMzU4MTQ4XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODdmMWQ5OTliMzE4NGVkMWI4ZTQ4NTUxOWQ3ZTE3OGQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjNjYzFlNzE1MWFiNGI0ZjhhZGIwMzhmMzQ1YjZlOWQgPSAkKCc8ZGl2IGlkPSJodG1sXzIzY2MxZTcxNTFhYjRiNGY4YWRiMDM4ZjM0NWI2ZTlkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg3ZjFkOTk5YjMxODRlZDFiOGU0ODU1MTlkN2UxNzhkLnNldENvbnRlbnQoaHRtbF8yM2NjMWU3MTUxYWI0YjRmOGFkYjAzOGYzNDViNmU5ZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xZjQ0NzUwZjEzZDQ0NmIxYTk4NTQ3OTU5OTg2ODQ3ZC5iaW5kUG9wdXAocG9wdXBfODdmMWQ5OTliMzE4NGVkMWI4ZTQ4NTUxOWQ3ZTE3OGQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzIwMmEwZGU5ZWE3NDM4YWJlMzIxMmI3OTJhYmJmN2EgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzYwMzc0NDY2ODYyMDQsLTEyMi40MTUxMjY1NDMwMDEwMV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RlODg2ZTFiZTY4NDQ0ZWY4YjFiNjFmNzk1MGFjMWI0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2M2M2QyZjQzMmNhYjRmOTQ4NjI3YmIyOGM3ZWIzN2QyID0gJCgnPGRpdiBpZD0iaHRtbF9jNjNkMmY0MzJjYWI0Zjk0ODYyN2JiMjhjN2ViMzdkMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kZTg4NmUxYmU2ODQ0NGVmOGIxYjYxZjc5NTBhYzFiNC5zZXRDb250ZW50KGh0bWxfYzYzZDJmNDMyY2FiNGY5NDg2MjdiYjI4YzdlYjM3ZDIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzIwMmEwZGU5ZWE3NDM4YWJlMzIxMmI3OTJhYmJmN2EuYmluZFBvcHVwKHBvcHVwX2RlODg2ZTFiZTY4NDQ0ZWY4YjFiNjFmNzk1MGFjMWI0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzljYWMxNmUxYjJhNDQ0MzA5ZTE1ODMwOTdiNWZjYTJkID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzEyNzY3ODg0ODIxLC0xMjIuNDMxOTI4MDExMDg5XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYWE4ZDA0ZDE3YzM4NGI4NmE4ZTJhMDlmYTg1OGY0ZjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDQyMTkxNDAzOTEwNDUxM2EyNTBlMmMwMjU4ZGE3YTIgPSAkKCc8ZGl2IGlkPSJodG1sXzQ0MjE5MTQwMzkxMDQ1MTNhMjUwZTJjMDI1OGRhN2EyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWE4ZDA0ZDE3YzM4NGI4NmE4ZTJhMDlmYTg1OGY0Zjcuc2V0Q29udGVudChodG1sXzQ0MjE5MTQwMzkxMDQ1MTNhMjUwZTJjMDI1OGRhN2EyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzljYWMxNmUxYjJhNDQ0MzA5ZTE1ODMwOTdiNWZjYTJkLmJpbmRQb3B1cChwb3B1cF9hYThkMDRkMTdjMzg0Yjg2YThlMmEwOWZhODU4ZjRmNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8zOTZiMzhmZGU2Yzc0YjZkOGI1MGM5MWEwODk2NWYyNSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4OTU3MTAyNTU4NjMsLTEyMi40MDIxNjM3MTM2MThdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lYmJiNmQwMWQ5OTE0ZDVjOTYwMGQ2NWNlNWY5YzhkZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kOTVkZDE0YWFiYjE0NmI5ODBmZDkyZjU3OTcxMTQ4ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfZDk1ZGQxNGFhYmIxNDZiOTgwZmQ5MmY1Nzk3MTE0OGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkRSVU5LRU5ORVNTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lYmJiNmQwMWQ5OTE0ZDVjOTYwMGQ2NWNlNWY5YzhkZS5zZXRDb250ZW50KGh0bWxfZDk1ZGQxNGFhYmIxNDZiOTgwZmQ5MmY1Nzk3MTE0OGUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMzk2YjM4ZmRlNmM3NGI2ZDhiNTBjOTFhMDg5NjVmMjUuYmluZFBvcHVwKHBvcHVwX2ViYmI2ZDAxZDk5MTRkNWM5NjAwZDY1Y2U1ZjljOGRlKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2JiMTkyZWJhYWYzODRjNGZhZTZlMjdlNzBhMWE2NWY4ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzMwMDI5MDhiMjJmNzRlOTNiYTM5NTFhZDlmZWExYmIzID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNiMzYyZWEyODI5NjRkYzViZmJiNzI3ZWU4MWY1M2ZjID0gJCgnPGRpdiBpZD0iaHRtbF8zYjM2MmVhMjgyOTY0ZGM1YmZiYjcyN2VlODFmNTNmYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzMwMDI5MDhiMjJmNzRlOTNiYTM5NTFhZDlmZWExYmIzLnNldENvbnRlbnQoaHRtbF8zYjM2MmVhMjgyOTY0ZGM1YmZiYjcyN2VlODFmNTNmYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iYjE5MmViYWFmMzg0YzRmYWU2ZTI3ZTcwYTFhNjVmOC5iaW5kUG9wdXAocG9wdXBfMzAwMjkwOGIyMmY3NGU5M2JhMzk1MWFkOWZlYTFiYjMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfY2JlNmE4MzdiMDNiNDFjYzk2NjhiMDE4OTE5YzUyZjggPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM4MzY1NTY1MzQ3OTQsLTEyMi40MTM3OTA5NzI3ODA5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzBkOTRlZGUzM2RmYTRhOGZhMjNiOGNhMjY2Njg5NWY4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2RlOWI3YjYyMmZkMDRhOWE5YjUwMmNhOTc5YjUwNjM3ID0gJCgnPGRpdiBpZD0iaHRtbF9kZTliN2I2MjJmZDA0YTlhOWI1MDJjYTk3OWI1MDYzNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wZDk0ZWRlMzNkZmE0YThmYTIzYjhjYTI2NjY4OTVmOC5zZXRDb250ZW50KGh0bWxfZGU5YjdiNjIyZmQwNGE5YTliNTAyY2E5NzliNTA2MzcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfY2JlNmE4MzdiMDNiNDFjYzk2NjhiMDE4OTE5YzUyZjguYmluZFBvcHVwKHBvcHVwXzBkOTRlZGUzM2RmYTRhOGZhMjNiOGNhMjY2Njg5NWY4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzMyODk2NzkyMGIyZTRhY2Q4MWFjMDAzMDYyNjllMGVmID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JlZjE1ZjljYjJiMjQ2YjE4YTljM2JiYTIyMGQxZjM5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2YzMWQ5MWRkOGFjYzQ2ZWM5ZjkxZmU1NTZhYjA4Zjk3ID0gJCgnPGRpdiBpZD0iaHRtbF9mMzFkOTFkZDhhY2M0NmVjOWY5MWZlNTU2YWIwOGY5NyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JlZjE1ZjljYjJiMjQ2YjE4YTljM2JiYTIyMGQxZjM5LnNldENvbnRlbnQoaHRtbF9mMzFkOTFkZDhhY2M0NmVjOWY5MWZlNTU2YWIwOGY5Nyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8zMjg5Njc5MjBiMmU0YWNkODFhYzAwMzA2MjY5ZTBlZi5iaW5kUG9wdXAocG9wdXBfYmVmMTVmOWNiMmIyNDZiMThhOWMzYmJhMjIwZDFmMzkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDIyMGNjNTBiYTIyNDUzOTlhNjY2MDQ3ODY4ZTkyM2UgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MzczNjIzNjA1MjEyOTYsLTEyMi40MjIwNjcxODQ5MzddLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82YTVlYzI3YjY1NjM0NDkzYjk2OTQzYmE2NzE3NzUyOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83OTM0YTIzZDdlZGM0NThlYmU5MmZhMDU0MTI3MzkzMCA9ICQoJzxkaXYgaWQ9Imh0bWxfNzkzNGEyM2Q3ZWRjNDU4ZWJlOTJmYTA1NDEyNzM5MzAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNmE1ZWMyN2I2NTYzNDQ5M2I5Njk0M2JhNjcxNzc1Mjkuc2V0Q29udGVudChodG1sXzc5MzRhMjNkN2VkYzQ1OGViZTkyZmEwNTQxMjczOTMwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzAyMjBjYzUwYmEyMjQ1Mzk5YTY2NjA0Nzg2OGU5MjNlLmJpbmRQb3B1cChwb3B1cF82YTVlYzI3YjY1NjM0NDkzYjk2OTQzYmE2NzE3NzUyOSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl85NzFlMmRhYTRhNzM0MmQ0ODQ4MDViMzA3NTQ4MzI0NSA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNzM2MjM2MDUyMTI5NiwtMTIyLjQyMjA2NzE4NDkzN10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q1Y2UwNzQxY2FlZjRkYjhiOWYyZWU3OGFlZWI1YzQ2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2FiZmJkODViNDBjZTQ5YmRhMzk2ZWMzZWQwNjZmYzk2ID0gJCgnPGRpdiBpZD0iaHRtbF9hYmZiZDg1YjQwY2U0OWJkYTM5NmVjM2VkMDY2ZmM5NiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kNWNlMDc0MWNhZWY0ZGI4YjlmMmVlNzhhZWViNWM0Ni5zZXRDb250ZW50KGh0bWxfYWJmYmQ4NWI0MGNlNDliZGEzOTZlYzNlZDA2NmZjOTYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOTcxZTJkYWE0YTczNDJkNDg0ODA1YjMwNzU0ODMyNDUuYmluZFBvcHVwKHBvcHVwX2Q1Y2UwNzQxY2FlZjRkYjhiOWYyZWU3OGFlZWI1YzQ2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2RlM2IyZDYzNTE3NjQ2OGZhZGQ5NzdlNDcyYTgxNzc5ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1OTk4ODMyMzc5Nzk2LC0xMjIuNDExNzQ3MzcxOTI0XSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzAxYTBkMjc5ZDkwNDc0Yzk1OTQwYWUyYmZlNGFlZWQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNjA4OTgxMzgwZjRkNGQ0YTk4YzViYmFkOWVlMDUwMTIgPSAkKCc8ZGl2IGlkPSJodG1sXzYwODk4MTM4MGY0ZDRkNGE5OGM1YmJhZDllZTA1MDEyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVVNQSUNJT1VTIE9DQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzAxYTBkMjc5ZDkwNDc0Yzk1OTQwYWUyYmZlNGFlZWQuc2V0Q29udGVudChodG1sXzYwODk4MTM4MGY0ZDRkNGE5OGM1YmJhZDllZTA1MDEyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyX2RlM2IyZDYzNTE3NjQ2OGZhZGQ5NzdlNDcyYTgxNzc5LmJpbmRQb3B1cChwb3B1cF9jMDFhMGQyNzlkOTA0NzRjOTU5NDBhZTJiZmU0YWVlZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8xMDQ1Mjc0MGVmZjU0NjI5YmI5MmI1NDY3NjI2YWU5MCA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2MzM3NTgwNTgwNTksLTEyMi40MjA0MzQ3MjQ1NTI5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg0NWZiNDkwYThlYjQ1NWNhZGE5OTBjYWQ2NGJhZGY5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM1MGVlNjE1Y2U4YzRkZmJhN2QxOTE0MDI2NTU5YTQ4ID0gJCgnPGRpdiBpZD0iaHRtbF8zNTBlZTYxNWNlOGM0ZGZiYTdkMTkxNDAyNjU1OWE0OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzg0NWZiNDkwYThlYjQ1NWNhZGE5OTBjYWQ2NGJhZGY5LnNldENvbnRlbnQoaHRtbF8zNTBlZTYxNWNlOGM0ZGZiYTdkMTkxNDAyNjU1OWE0OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8xMDQ1Mjc0MGVmZjU0NjI5YmI5MmI1NDY3NjI2YWU5MC5iaW5kUG9wdXAocG9wdXBfODQ1ZmI0OTBhOGViNDU1Y2FkYTk5MGNhZDY0YmFkZjkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMDEwZTIyYWRlNTcxNDYyOGJlNTFkMzZjYWQ1NWQzNTAgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODUwMjI2NjIyNzg2LC0xMjIuNDExOTg3NjQzNTk1MDFdLAogICAgICAgICAgICAgICAgewogICJidWJibGluZ01vdXNlRXZlbnRzIjogdHJ1ZSwKICAiY29sb3IiOiAieWVsbG93IiwKICAiZGFzaEFycmF5IjogbnVsbCwKICAiZGFzaE9mZnNldCI6IG51bGwsCiAgImZpbGwiOiB0cnVlLAogICJmaWxsQ29sb3IiOiAiYmx1ZSIsCiAgImZpbGxPcGFjaXR5IjogMC42LAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAib3BhY2l0eSI6IDEuMCwKICAicmFkaXVzIjogNSwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogMwp9CiAgICAgICAgICAgICAgICApLmFkZFRvKG1hcF9mNDYwOGYzMjIzMWE0NzJmOTQwZWEyMGY5NWI1MjRmNSk7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80NTAxZWU1ZjYxZDM0Yjc1OTE1NDIxNDA3N2Q4ZTFiZSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hM2QxODMxYjE4Mjg0YjcxYjRjMjU3MjA1ZWYzMzA0ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfYTNkMTgzMWIxODI4NGI3MWI0YzI1NzIwNWVmMzMwNGUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNDUwMWVlNWY2MWQzNGI3NTkxNTQyMTQwNzdkOGUxYmUuc2V0Q29udGVudChodG1sX2EzZDE4MzFiMTgyODRiNzFiNGMyNTcyMDVlZjMzMDRlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzAxMGUyMmFkZTU3MTQ2MjhiZTUxZDM2Y2FkNTVkMzUwLmJpbmRQb3B1cChwb3B1cF80NTAxZWU1ZjYxZDM0Yjc1OTE1NDIxNDA3N2Q4ZTFiZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl8yZjFmZGViMTNiOWI0NDMyOWY4OTQxMTFmZWRkNWZmMyA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDYyMDY0OTEwNjQ5NSwtMTIyLjUwMDM4MDQyNzkxNV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M0ODgzYzkzZTM4NTRmNTE4NmIwM2ExOWU4NjNkMmFhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2E1ZDI3YTAxMDAwYTRiMzliZTExODhiY2U3M2U3YTQ5ID0gJCgnPGRpdiBpZD0iaHRtbF9hNWQyN2EwMTAwMGE0YjM5YmUxMTg4YmNlNzNlN2E0OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M0ODgzYzkzZTM4NTRmNTE4NmIwM2ExOWU4NjNkMmFhLnNldENvbnRlbnQoaHRtbF9hNWQyN2EwMTAwMGE0YjM5YmUxMTg4YmNlNzNlN2E0OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl8yZjFmZGViMTNiOWI0NDMyOWY4OTQxMTFmZWRkNWZmMy5iaW5kUG9wdXAocG9wdXBfYzQ4ODNjOTNlMzg1NGY1MTg2YjAzYTE5ZTg2M2QyYWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfMTg1NGY3ZmRiNjIwNDIxMTgxMDQxZDljZGQxNDhkYmMgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzUxOTE4MjY3MjE3LC0xMjIuNDY2NTU4NzgwNjgzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjBkNzMyNGQyMGM5NGNiYmFiNTIzNWJlZjMxNDcwMDMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmY4ZTk2NmQ2Y2Y0NDJlMmI5OTNiODc0MjVkNWJiMjMgPSAkKCc8ZGl2IGlkPSJodG1sX2JmOGU5NjZkNmNmNDQyZTJiOTkzYjg3NDI1ZDViYjIzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8yMGQ3MzI0ZDIwYzk0Y2JiYWI1MjM1YmVmMzE0NzAwMy5zZXRDb250ZW50KGh0bWxfYmY4ZTk2NmQ2Y2Y0NDJlMmI5OTNiODc0MjVkNWJiMjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfMTg1NGY3ZmRiNjIwNDIxMTgxMDQxZDljZGQxNDhkYmMuYmluZFBvcHVwKHBvcHVwXzIwZDczMjRkMjBjOTRjYmJhYjUyMzViZWYzMTQ3MDAzKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzRiM2Q1NWY3ZTU5ZTRmMTc4YjAwYmIwOWU2YWMyMDA2ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQ5MDg0MTcyOTAyOCwtMTIyLjQ4NjkyNTk2MDExNDAxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTNlNjk5ZjM5YzliNDkyMThkNjNlMzUwZDBiMTZjZDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGE0MjRlZGMyNjg1NDRhYThmYzg4Njg0NTdiMTQwZTggPSAkKCc8ZGl2IGlkPSJodG1sXzBhNDI0ZWRjMjY4NTQ0YWE4ZmM4ODY4NDU3YjE0MGU4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTNlNjk5ZjM5YzliNDkyMThkNjNlMzUwZDBiMTZjZDAuc2V0Q29udGVudChodG1sXzBhNDI0ZWRjMjY4NTQ0YWE4ZmM4ODY4NDU3YjE0MGU4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBjaXJjbGVfbWFya2VyXzRiM2Q1NWY3ZTU5ZTRmMTc4YjAwYmIwOWU2YWMyMDA2LmJpbmRQb3B1cChwb3B1cF8xM2U2OTlmMzljOWI0OTIxOGQ2M2UzNTBkMGIxNmNkMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgY2lyY2xlX21hcmtlcl84YzA2YzU1Y2YzMjk0NjE1OWNlNjY2NDQ0Yjg4NTI1NiA9IEwuY2lyY2xlTWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2ODUzNjAxMjM1ODMsLTEyMi40MTU2MTYzMzgzMTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2FlZjQ1ODkwMTYyMjQ3OTk4MmUyNTY2MWE1YjlhYjI4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzVlNWQ1NTdlNDA2ODQ4NmVhMDE2OWUwZDJkMDYzZDdkID0gJCgnPGRpdiBpZD0iaHRtbF81ZTVkNTU3ZTQwNjg0ODZlYTAxNjllMGQyZDA2M2Q3ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hZWY0NTg5MDE2MjI0Nzk5ODJlMjU2NjFhNWI5YWIyOC5zZXRDb250ZW50KGh0bWxfNWU1ZDU1N2U0MDY4NDg2ZWEwMTY5ZTBkMmQwNjNkN2QpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfOGMwNmM1NWNmMzI5NDYxNTljZTY2NjQ0NGI4ODUyNTYuYmluZFBvcHVwKHBvcHVwX2FlZjQ1ODkwMTYyMjQ3OTk4MmUyNTY2MWE1YjlhYjI4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyX2I5NmU2ZTI4NmRkMTQzN2M5ODM2NWQ5YzdmZDBlMTI0ID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY0NDI5NzcxNDA3NCwtMTIyLjQ0OTc1MTY1MjU2M10sCiAgICAgICAgICAgICAgICB7CiAgImJ1YmJsaW5nTW91c2VFdmVudHMiOiB0cnVlLAogICJjb2xvciI6ICJ5ZWxsb3ciLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IHRydWUsCiAgImZpbGxDb2xvciI6ICJibHVlIiwKICAiZmlsbE9wYWNpdHkiOiAwLjYsCiAgImZpbGxSdWxlIjogImV2ZW5vZGQiLAogICJsaW5lQ2FwIjogInJvdW5kIiwKICAibGluZUpvaW4iOiAicm91bmQiLAogICJvcGFjaXR5IjogMS4wLAogICJyYWRpdXMiOiA1LAogICJzdHJva2UiOiB0cnVlLAogICJ3ZWlnaHQiOiAzCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwX2Y0NjA4ZjMyMjMxYTQ3MmY5NDBlYTIwZjk1YjUyNGY1KTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JjMmY1ZmUwN2MwODQ1N2FhYTJkMmE5YmQxNWViYWVkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzk3MjUwMWIzZDY0NDQyNjJiYWMzOTVhN2U2ZDIyNDNmID0gJCgnPGRpdiBpZD0iaHRtbF85NzI1MDFiM2Q2NDQ0MjYyYmFjMzk1YTdlNmQyMjQzZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JjMmY1ZmUwN2MwODQ1N2FhYTJkMmE5YmQxNWViYWVkLnNldENvbnRlbnQoaHRtbF85NzI1MDFiM2Q2NDQ0MjYyYmFjMzk1YTdlNmQyMjQzZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgY2lyY2xlX21hcmtlcl9iOTZlNmUyODZkZDE0MzdjOTgzNjVkOWM3ZmQwZTEyNC5iaW5kUG9wdXAocG9wdXBfYmMyZjVmZTA3YzA4NDU3YWFhMmQyYTliZDE1ZWJhZWQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGNpcmNsZV9tYXJrZXJfYzRiMDJkM2FkNDFiNDIyNDlkYTM3Nzc1NjI4ZDZmOGIgPSBMLmNpcmNsZU1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ0Mjk3NzE0MDc0LC0xMjIuNDQ5NzUxNjUyNTYzXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNTFjNDM5ZGIxNzVjNGQ3MzhkNDY1YjUwNTMzZGE0M2QgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfODJhZDg1OWQxMWQzNDk1ZmI3MDUzZmVkMTU2N2NhNjYgPSAkKCc8ZGl2IGlkPSJodG1sXzgyYWQ4NTlkMTFkMzQ5NWZiNzA1M2ZlZDE1NjdjYTY2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81MWM0MzlkYjE3NWM0ZDczOGQ0NjViNTA1MzNkYTQzZC5zZXRDb250ZW50KGh0bWxfODJhZDg1OWQxMWQzNDk1ZmI3MDUzZmVkMTU2N2NhNjYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfYzRiMDJkM2FkNDFiNDIyNDlkYTM3Nzc1NjI4ZDZmOGIuYmluZFBvcHVwKHBvcHVwXzUxYzQzOWRiMTc1YzRkNzM4ZDQ2NWI1MDUzM2RhNDNkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBjaXJjbGVfbWFya2VyXzU2NDE1ODk2MDJhMjQxNmI4ZTc2NWJmMzk1OGFlM2NiID0gTC5jaXJjbGVNYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM1MjY4MTQ2OTA4Mzk2LC0xMjIuNDcyNzE1NzU5NjMxXSwKICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogInllbGxvdyIsCiAgImRhc2hBcnJheSI6IG51bGwsCiAgImRhc2hPZmZzZXQiOiBudWxsLAogICJmaWxsIjogdHJ1ZSwKICAiZmlsbENvbG9yIjogImJsdWUiLAogICJmaWxsT3BhY2l0eSI6IDAuNiwKICAiZmlsbFJ1bGUiOiAiZXZlbm9kZCIsCiAgImxpbmVDYXAiOiAicm91bmQiLAogICJsaW5lSm9pbiI6ICJyb3VuZCIsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInJhZGl1cyI6IDUsCiAgInN0cm9rZSI6IHRydWUsCiAgIndlaWdodCI6IDMKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjQ2MDhmMzIyMzFhNDcyZjk0MGVhMjBmOTViNTI0ZjUpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmFiMzQ4YWVkMGEyNDhkYTliMjk3ZGE0YTdjMjZjYTkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDRjYjc5MTFmNWY2NGM0OTk0ZDI5Y2VlMWVhYmFlNTAgPSAkKCc8ZGl2IGlkPSJodG1sX2Q0Y2I3OTExZjVmNjRjNDk5NGQyOWNlZTFlYWJhZTUwIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iYWIzNDhhZWQwYTI0OGRhOWIyOTdkYTRhN2MyNmNhOS5zZXRDb250ZW50KGh0bWxfZDRjYjc5MTFmNWY2NGM0OTk0ZDI5Y2VlMWVhYmFlNTApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGNpcmNsZV9tYXJrZXJfNTY0MTU4OTYwMmEyNDE2YjhlNzY1YmYzOTU4YWUzY2IuYmluZFBvcHVwKHBvcHVwX2JhYjM0OGFlZDBhMjQ4ZGE5YjI5N2RhNGE3YzI2Y2E5KTsKCiAgICAgICAgICAgIAogICAgICAgIAo8L3NjcmlwdD4= onload=\"this.contentDocument.open();this.contentDocument.write(atob(this.getAttribute('data-html')));this.contentDocument.close();\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb3ff944f60>"
]
},
"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",
"# 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,
"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.\n"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"button": false,
"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%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe src=\"about:blank\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" data-html=PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfNjdlZTQxMTFlMjE2NGUwZTgxYmE0M2RjNWE1MDY2NTIgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQubWFya2VyY2x1c3Rlci8xLjEuMC9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0Lm1hcmtlcmNsdXN0ZXIvMS4xLjAvTWFya2VyQ2x1c3Rlci5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbGVhZmxldC5tYXJrZXJjbHVzdGVyLzEuMS4wL01hcmtlckNsdXN0ZXIuRGVmYXVsdC5jc3MiLz4KPC9oZWFkPgo8Ym9keT4gICAgCiAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9saXVtLW1hcCIgaWQ9Im1hcF82N2VlNDExMWUyMTY0ZTBlODFiYTQzZGM1YTUwNjY1MiIgPjwvZGl2PgogICAgICAgIAo8L2JvZHk+CjxzY3JpcHQ+ICAgIAogICAgCgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtYXBfNjdlZTQxMTFlMjE2NGUwZTgxYmE0M2RjNWE1MDY2NTIgPSBMLm1hcCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXBfNjdlZTQxMTFlMjE2NGUwZTgxYmE0M2RjNWE1MDY2NTInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NlbnRlcjogWzM3Ljc3LC0xMjIuNDJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyczogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzQyYWNlMjVkZjdlMzQwOTFhY2I3MzVmNjMyOGNlYTE1ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAgICAgICAgICAgICAgewogICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICJtYXhab29tIjogMTgsCiAgIm1pblpvb20iOiAxLAogICJub1dyYXAiOiBmYWxzZSwKICAic3ViZG9tYWlucyI6ICJhYmMiCn0KICAgICAgICAgICAgICAgICkuYWRkVG8obWFwXzY3ZWU0MTExZTIxNjRlMGU4MWJhNDNkYzVhNTA2NjUyKTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIgPSBMLm1hcmtlckNsdXN0ZXJHcm91cCh7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIG1hcF82N2VlNDExMWUyMTY0ZTBlODFiYTQzZGM1YTUwNjY1Mi5hZGRMYXllcihtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2M1NDRjNGZlMjA1NDQwZGM4NTA4MTI2ZDU0MzViYzdkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1NDIwNzA2NzExLC0xMjIuNDAzNDA0NzkxNDc4OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2NhZDgyMzg3N2IyZjQyMjJhNmZlMTcxNjhiZDgzYjZmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNmNWE3YjVmZTljNjQzNGU4ZWQ4ZGM5ZDI4OTVhYTU5ID0gJCgnPGRpdiBpZD0iaHRtbF8zZjVhN2I1ZmU5YzY0MzRlOGVkOGRjOWQyODk1YWE1OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0VBUE9OIExBV1M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2NhZDgyMzg3N2IyZjQyMjJhNmZlMTcxNjhiZDgzYjZmLnNldENvbnRlbnQoaHRtbF8zZjVhN2I1ZmU5YzY0MzRlOGVkOGRjOWQyODk1YWE1OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2M1NDRjNGZlMjA1NDQwZGM4NTA4MTI2ZDU0MzViYzdkLmJpbmRQb3B1cChwb3B1cF9jYWQ4MjM4NzdiMmY0MjIyYTZmZTE3MTY4YmQ4M2I2Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iNjM1YTRlZjBiZmM0MzUwYjg2NGJiZGRhZWZhMWJkYiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zNWJiOTFmZTdkM2M0OTQ0ODRhNjg5ZjE2MTJmM2QxYSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80NDdhYzFjNzUyYWE0NzhmOTA5N2E3ZDc4YmQyZTIwMSA9ICQoJzxkaXYgaWQ9Imh0bWxfNDQ3YWMxYzc1MmFhNDc4ZjkwOTdhN2Q3OGJkMmUyMDEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldFQVBPTiBMQVdTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zNWJiOTFmZTdkM2M0OTQ0ODRhNjg5ZjE2MTJmM2QxYS5zZXRDb250ZW50KGh0bWxfNDQ3YWMxYzc1MmFhNDc4ZjkwOTdhN2Q3OGJkMmUyMDEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iNjM1YTRlZjBiZmM0MzUwYjg2NGJiZGRhZWZhMWJkYi5iaW5kUG9wdXAocG9wdXBfMzViYjkxZmU3ZDNjNDk0NDg0YTY4OWYxNjEyZjNkMWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWQzMjRhMTI0NDJjNDYwM2FiYWU0ODk1ZTU0ODY2Y2MgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjk5ODA5NjcyOTk1OTYsLTEyMi4zODg4NTYyMDQyOTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2ExY2M1YTkyM2U2OTQ2NDFhZjVjNTZlZjMwZjZlOWM3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzcxYzQxMDcwZGNhNTQ3NWFhY2ZhZGJhNTY3M2IzMjQ4ID0gJCgnPGRpdiBpZD0iaHRtbF83MWM0MTA3MGRjYTU0NzVhYWNmYWRiYTU2NzNiMzI0OCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2ExY2M1YTkyM2U2OTQ2NDFhZjVjNTZlZjMwZjZlOWM3LnNldENvbnRlbnQoaHRtbF83MWM0MTA3MGRjYTU0NzVhYWNmYWRiYTU2NzNiMzI0OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzFkMzI0YTEyNDQyYzQ2MDNhYmFlNDg5NWU1NDg2NmNjLmJpbmRQb3B1cChwb3B1cF9hMWNjNWE5MjNlNjk0NjQxYWY1YzU2ZWYzMGY2ZTljNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iYjQyMzNjZTYwZWE0NTI5OGU5Njg5Y2U5MjlmZTgwOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTc4ODM3NjY4ODc5LC0xMjIuNDEyOTcwNTM3NTkxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8yZTUzODUyNzRkZGY0YjU0OGIzNTM3NzA0Yjk3ODAyMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82Mzc1ZDc1YTFjMTE0ZWNjYWQwNDk4Mjk4ZDI1YzEzMCA9ICQoJzxkaXYgaWQ9Imh0bWxfNjM3NWQ3NWExYzExNGVjY2FkMDQ5ODI5OGQyNWMxMzAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMmU1Mzg1Mjc0ZGRmNGI1NDhiMzUzNzcwNGI5NzgwMjIuc2V0Q29udGVudChodG1sXzYzNzVkNzVhMWMxMTRlY2NhZDA0OTgyOThkMjVjMTMwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYmI0MjMzY2U2MGVhNDUyOThlOTY4OWNlOTI5ZmU4MDguYmluZFBvcHVwKHBvcHVwXzJlNTM4NTI3NGRkZjRiNTQ4YjM1Mzc3MDRiOTc4MDIyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzZmZTA3ZTM3ZDQ5NTQxMzc5MTgzNDZjOGY1OTc0MjUwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY1MDUwMTIxNDY2OCwtMTIyLjQxOTY3MTc4MDI5Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZWRlYTYwNzlmNGZhNDZkNDk4ZjI4ZWYzMWVkOTgxMDEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGNlMzI4MWM0YzBmNGZlODkxYjE5YjZkODAyOTY4YTkgPSAkKCc8ZGl2IGlkPSJodG1sXzBjZTMyODFjNGMwZjRmZTg5MWIxOWI2ZDgwMjk2OGE5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2VkZWE2MDc5ZjRmYTQ2ZDQ5OGYyOGVmMzFlZDk4MTAxLnNldENvbnRlbnQoaHRtbF8wY2UzMjgxYzRjMGY0ZmU4OTFiMTliNmQ4MDI5NjhhOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzZmZTA3ZTM3ZDQ5NTQxMzc5MTgzNDZjOGY1OTc0MjUwLmJpbmRQb3B1cChwb3B1cF9lZGVhNjA3OWY0ZmE0NmQ0OThmMjhlZjMxZWQ5ODEwMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mOWY4ZTJiODM1Y2Y0YzEzODU1OTY3MGMxYzJmMGZiMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODAxODU1NTgyOSwtMTIyLjQyNjA3NzE3NzM3NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82ZTE4YjZmMDFmMDg0ZmNmOTE0YjRlNzQ2N2VlYjdlMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hZjE5N2EyNDlmZDY0YjVmYWI0ZmMyYWIzYTFjZWNlZiA9ICQoJzxkaXYgaWQ9Imh0bWxfYWYxOTdhMjQ5ZmQ2NGI1ZmFiNGZjMmFiM2ExY2VjZWYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZlMThiNmYwMWYwODRmY2Y5MTRiNGU3NDY3ZWViN2UwLnNldENvbnRlbnQoaHRtbF9hZjE5N2EyNDlmZDY0YjVmYWI0ZmMyYWIzYTFjZWNlZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Y5ZjhlMmI4MzVjZjRjMTM4NTU5NjcwYzFjMmYwZmIwLmJpbmRQb3B1cChwb3B1cF82ZTE4YjZmMDFmMDg0ZmNmOTE0YjRlNzQ2N2VlYjdlMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kNWI5MTdmYmJhYjk0ZTZiYjE4NWIzNzVjYTIzOTg5ZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MDg3ODkzNjAyMTQsLTEyMi40MDU3MjE0NTQ1NjddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkzNTg1YjU5NDZhMTRkMzk5MzJmYmZmZmZjMTYyZTMyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I1MzZiOTYzNDU1NzRlMTA4YzFiMDVjYzNiYjQ0ZWQxID0gJCgnPGRpdiBpZD0iaHRtbF9iNTM2Yjk2MzQ1NTc0ZTEwOGMxYjA1Y2MzYmI0NGVkMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzkzNTg1YjU5NDZhMTRkMzk5MzJmYmZmZmZjMTYyZTMyLnNldENvbnRlbnQoaHRtbF9iNTM2Yjk2MzQ1NTc0ZTEwOGMxYjA1Y2MzYmI0NGVkMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2Q1YjkxN2ZiYmFiOTRlNmJiMTg1YjM3NWNhMjM5ODllLmJpbmRQb3B1cChwb3B1cF85MzU4NWI1OTQ2YTE0ZDM5OTMyZmJmZmZmYzE2MmUzMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mNTJiY2ZjNGU4ZTI0MGFjYjQ4ODU2OTA5YTRiNDE2YyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4Mzk4MDU1OTI2MzQsLTEyMi40MTE3NzgyOTU5OTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Y4YzlkODA4NGM1ZjQxNWY5MTAwZTk3YWYwMjFhYTNkID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2VmYjlhYTdmOTRhODQ2Y2ZhNjZlODVkZWJmZDg5MmYzID0gJCgnPGRpdiBpZD0iaHRtbF9lZmI5YWE3Zjk0YTg0NmNmYTY2ZTg1ZGViZmQ4OTJmMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mOGM5ZDgwODRjNWY0MTVmOTEwMGU5N2FmMDIxYWEzZC5zZXRDb250ZW50KGh0bWxfZWZiOWFhN2Y5NGE4NDZjZmE2NmU4NWRlYmZkODkyZjMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mNTJiY2ZjNGU4ZTI0MGFjYjQ4ODU2OTA5YTRiNDE2Yy5iaW5kUG9wdXAocG9wdXBfZjhjOWQ4MDg0YzVmNDE1ZjkxMDBlOTdhZjAyMWFhM2QpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfODkyZmYxYjkwZDA1NGY2MDlkMzMzMGUyYWNlNDMyZDMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzU3ODc2MjE4MjkyOTUsLTEyMi4zOTMzNTcyNDE0NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2M0MWZlNDZlNWQyZjRkYTA5YTk5YmUyYzg3MjBkNDY5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJjM2JhZjU4NTQ4YjRiMTliNGY4ZWJiMTI5ZWY0ZWIzID0gJCgnPGRpdiBpZD0iaHRtbF8yYzNiYWY1ODU0OGI0YjE5YjRmOGViYjEyOWVmNGViMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2M0MWZlNDZlNWQyZjRkYTA5YTk5YmUyYzg3MjBkNDY5LnNldENvbnRlbnQoaHRtbF8yYzNiYWY1ODU0OGI0YjE5YjRmOGViYjEyOWVmNGViMyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzg5MmZmMWI5MGQwNTRmNjA5ZDMzMzBlMmFjZTQzMmQzLmJpbmRQb3B1cChwb3B1cF9jNDFmZTQ2ZTVkMmY0ZGEwOWE5OWJlMmM4NzIwZDQ2OSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82MDA3NTk3MzNiM2M0NmQyOGFmNTc3YjU3ODU2ZWMwNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyMDk2Njk2MTU0OTksLTEyMi4zODcxODE2MzU5OTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzJkMjcyNThiNDA5MzQzOTQ5ZDIyZTFjYzUyMjEzNjJiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzlmN2JhNzQ4ZmFlOTQ5MTg5MzhiODdlNzJkNWQwMjIxID0gJCgnPGRpdiBpZD0iaHRtbF85ZjdiYTc0OGZhZTk0OTE4OTM4Yjg3ZTcyZDVkMDIyMSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TUlTU0lORyBQRVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzJkMjcyNThiNDA5MzQzOTQ5ZDIyZTFjYzUyMjEzNjJiLnNldENvbnRlbnQoaHRtbF85ZjdiYTc0OGZhZTk0OTE4OTM4Yjg3ZTcyZDVkMDIyMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzYwMDc1OTczM2IzYzQ2ZDI4YWY1NzdiNTc4NTZlYzA0LmJpbmRQb3B1cChwb3B1cF8yZDI3MjU4YjQwOTM0Mzk0OWQyMmUxY2M1MjIxMzYyYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iNWJkNWE4NGU5Zjk0Y2ViODIxNWFkNTYxOGUxZmZhNSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQ3ODE1Nzg2OTUwNSwtMTIyLjQ3NzM3NjUyNDAwMjk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF81N2IyN2ZmZDc1ODg0YWQxOTYyNTFiNWVjN2RmOTk0NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iNDBlODRlMTc4Y2I0Yjc0OGM2Mzc4NmUwYTUyMmU2NSA9ICQoJzxkaXYgaWQ9Imh0bWxfYjQwZTg0ZTE3OGNiNGI3NDhjNjM3ODZlMGE1MjJlNjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU3YjI3ZmZkNzU4ODRhZDE5NjI1MWI1ZWM3ZGY5OTQ3LnNldENvbnRlbnQoaHRtbF9iNDBlODRlMTc4Y2I0Yjc0OGM2Mzc4NmUwYTUyMmU2NSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2I1YmQ1YTg0ZTlmOTRjZWI4MjE1YWQ1NjE4ZTFmZmE1LmJpbmRQb3B1cChwb3B1cF81N2IyN2ZmZDc1ODg0YWQxOTYyNTFiNWVjN2RmOTk0Nyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lNmU5MGE2ZTRhYjQ0MmVkOGJiYzFmOWFhNTc0ZGY3NCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NTczODk0Mjk2NTQ5NSwtMTIyLjQ3Nzk2MDMyNzI5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2EwYjM2NmU4NTRhNDkxZjgwN2QyZWYwN2QyZDIzNzEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDgzN2Q0ZGMxZThmNGJhZjk0MGEwOWZiMmU3NTc2MzEgPSAkKCc8ZGl2IGlkPSJodG1sXzQ4MzdkNGRjMWU4ZjRiYWY5NDBhMDlmYjJlNzU3NjMxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdhMGIzNjZlODU0YTQ5MWY4MDdkMmVmMDdkMmQyMzcxLnNldENvbnRlbnQoaHRtbF80ODM3ZDRkYzFlOGY0YmFmOTQwYTA5ZmIyZTc1NzYzMSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2U2ZTkwYTZlNGFiNDQyZWQ4YmJjMWY5YWE1NzRkZjc0LmJpbmRQb3B1cChwb3B1cF83YTBiMzY2ZTg1NGE0OTFmODA3ZDJlZjA3ZDJkMjM3MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mMzE1ZGMwZGU2NzA0NDIwYmJmMTkwYjIxYTliZjFmOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczNTY5NzAyNzU0ODIwNiwtMTIyLjM3Njc1NzY1NTUzMDAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lOGM1MTJlMzg3OTU0OGE3YTg2ZDdmMWVlYWM0Y2I0MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84NzY2ZjVlYmZhODA0NDY4YjI0ZTlhNDUyMzc4MDk1YSA9ICQoJzxkaXYgaWQ9Imh0bWxfODc2NmY1ZWJmYTgwNDQ2OGIyNGU5YTQ1MjM3ODA5NWEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lOGM1MTJlMzg3OTU0OGE3YTg2ZDdmMWVlYWM0Y2I0Mi5zZXRDb250ZW50KGh0bWxfODc2NmY1ZWJmYTgwNDQ2OGIyNGU5YTQ1MjM3ODA5NWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mMzE1ZGMwZGU2NzA0NDIwYmJmMTkwYjIxYTliZjFmOC5iaW5kUG9wdXAocG9wdXBfZThjNTEyZTM4Nzk1NDhhN2E4NmQ3ZjFlZWFjNGNiNDIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNmZmY2NlODllMzVmNDIxOWEwMTc4ZmJhOTJlYTRiMDEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyNzA1MTk5NTkyLC0xMjIuNDMyMzI1ODcxMDI4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80ZmEzNTM1MzFhYWY0MjkzYWIyODUxZDY2ZjJmNGFiMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lY2FmZDQwZThhNmQ0YzY1YTY5ZWI2MDZhNzVmYmViYyA9ICQoJzxkaXYgaWQ9Imh0bWxfZWNhZmQ0MGU4YTZkNGM2NWE2OWViNjA2YTc1ZmJlYmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzRmYTM1MzUzMWFhZjQyOTNhYjI4NTFkNjZmMmY0YWIyLnNldENvbnRlbnQoaHRtbF9lY2FmZDQwZThhNmQ0YzY1YTY5ZWI2MDZhNzVmYmViYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzZmZmNjZTg5ZTM1ZjQyMTlhMDE3OGZiYTkyZWE0YjAxLmJpbmRQb3B1cChwb3B1cF80ZmEzNTM1MzFhYWY0MjkzYWIyODUxZDY2ZjJmNGFiMik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84NzAxNWNmZWRmMGE0YjY1ODBjYWRlNzc5MjFjMjhlOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5MTY0Mjk4MjM4NCwtMTIyLjQwMDkwODY5ODg4OTk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mYTZjMDQ1NTJkYjk0ODNiOGEwODNmOGM4ODlhZjlmYyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84MDlkYTkwZjBmODc0Nzk4OWQ1NmU0NzZkN2YwNGY1MCA9ICQoJzxkaXYgaWQ9Imh0bWxfODA5ZGE5MGYwZjg3NDc5ODlkNTZlNDc2ZDdmMDRmNTAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mYTZjMDQ1NTJkYjk0ODNiOGEwODNmOGM4ODlhZjlmYy5zZXRDb250ZW50KGh0bWxfODA5ZGE5MGYwZjg3NDc5ODlkNTZlNDc2ZDdmMDRmNTApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84NzAxNWNmZWRmMGE0YjY1ODBjYWRlNzc5MjFjMjhlOS5iaW5kUG9wdXAocG9wdXBfZmE2YzA0NTUyZGI5NDgzYjhhMDgzZjhjODg5YWY5ZmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMDJjYjFkMzY0ZTEyNGFmNzlhZmJiYmQxNWJjNjRlZDkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODM3MDY5MzAxNTQ1LC0xMjIuNDA4NTk1MTEwODY5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mYmU1Mjk2N2JiYWI0ZWM3ODNkMWU4NzU2ZTZjMmYxMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83OWMwNzliNWZhYjU0MDc1YjU3MzIzNDYzYzMxNjRlMyA9ICQoJzxkaXYgaWQ9Imh0bWxfNzljMDc5YjVmYWI1NDA3NWI1NzMyMzQ2M2MzMTY0ZTMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNUT0xFTiBQUk9QRVJUWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZmJlNTI5NjdiYmFiNGVjNzgzZDFlODc1NmU2YzJmMTEuc2V0Q29udGVudChodG1sXzc5YzA3OWI1ZmFiNTQwNzViNTczMjM0NjNjMzE2NGUzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMDJjYjFkMzY0ZTEyNGFmNzlhZmJiYmQxNWJjNjRlZDkuYmluZFBvcHVwKHBvcHVwX2ZiZTUyOTY3YmJhYjRlYzc4M2QxZTg3NTZlNmMyZjExKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzExMzhmODhlNzRiNTRmNTk4OGEwODlhNTY1NTg0Y2VkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzU3Mjg5NTkwNDU3Nzk1LC0xMjIuNDA2ODcwNDAyMDgyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84MjQ1ODliOWM1YzE0OTAwODcwMjk5MWVkYTdkNmM0MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kZWE1ZDdhMDc5NmY0MmQ3OTFmYzQ0MWMyNmJhNjgyNSA9ICQoJzxkaXYgaWQ9Imh0bWxfZGVhNWQ3YTA3OTZmNDJkNzkxZmM0NDFjMjZiYTY4MjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJPQkJFUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzgyNDU4OWI5YzVjMTQ5MDA4NzAyOTkxZWRhN2Q2YzQxLnNldENvbnRlbnQoaHRtbF9kZWE1ZDdhMDc5NmY0MmQ3OTFmYzQ0MWMyNmJhNjgyNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzExMzhmODhlNzRiNTRmNTk4OGEwODlhNTY1NTg0Y2VkLmJpbmRQb3B1cChwb3B1cF84MjQ1ODliOWM1YzE0OTAwODcwMjk5MWVkYTdkNmM0MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mOTI3ZTdlZWFiODE0ZmE3YmNkNzU4NzYwODFkNGFmMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0ODkwNjMwNTE4MjksLTEyMi40MjAzNTQ3ODA4NjA5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZTAxY2VlZjhkYTE5NGExOWFkZTkwNDM0ODU4NjhmNjQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDE3ZTdiNTIwM2JiNDQwYzk4MDJhMzM5ZmE3NmZmOTUgPSAkKCc8ZGl2IGlkPSJodG1sX2QxN2U3YjUyMDNiYjQ0MGM5ODAyYTMzOWZhNzZmZjk1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lMDFjZWVmOGRhMTk0YTE5YWRlOTA0MzQ4NTg2OGY2NC5zZXRDb250ZW50KGh0bWxfZDE3ZTdiNTIwM2JiNDQwYzk4MDJhMzM5ZmE3NmZmOTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mOTI3ZTdlZWFiODE0ZmE3YmNkNzU4NzYwODFkNGFmMS5iaW5kUG9wdXAocG9wdXBfZTAxY2VlZjhkYTE5NGExOWFkZTkwNDM0ODU4NjhmNjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTQ3YWU0YjgzMmIxNDdjZjlhMDJiMTI0Mzc0YjM0MGYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTU3NjU0MjY5OTUsLTEyMi40Mzk5MDk3NjY3NzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2MyODI1YjVlYmJmOTQzMWQ5NDExMjNjYzJkNjFmNTg5ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzM0M2U0ZTUyZGE1MzQxMTM4YTEyYTE5MDJjZDRkMzg5ID0gJCgnPGRpdiBpZD0iaHRtbF8zNDNlNGU1MmRhNTM0MTEzOGExMmExOTAyY2Q0ZDM4OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYzI4MjViNWViYmY5NDMxZDk0MTEyM2NjMmQ2MWY1ODkuc2V0Q29udGVudChodG1sXzM0M2U0ZTUyZGE1MzQxMTM4YTEyYTE5MDJjZDRkMzg5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfYTQ3YWU0YjgzMmIxNDdjZjlhMDJiMTI0Mzc0YjM0MGYuYmluZFBvcHVwKHBvcHVwX2MyODI1YjVlYmJmOTQzMWQ5NDExMjNjYzJkNjFmNTg5KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2ZhYTYyZGRmNTU4YjQwZjJiMGU0YmYyZGUxMmIyNmVjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgzNTY5OTM4NjkxOCwtMTIyLjQwODQyMTExNjkyMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2QzZTRiMjgzNjA4NDg2YWE1ZTI3MGM3OTU2MzMxMTkgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYzA3ODFkMjhiMDkxNGY3MTlkZGU3YTA3OGVkM2ZmY2QgPSAkKCc8ZGl2IGlkPSJodG1sX2MwNzgxZDI4YjA5MTRmNzE5ZGRlN2EwNzhlZDNmZmNkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83ZDNlNGIyODM2MDg0ODZhYTVlMjcwYzc5NTYzMzExOS5zZXRDb250ZW50KGh0bWxfYzA3ODFkMjhiMDkxNGY3MTlkZGU3YTA3OGVkM2ZmY2QpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9mYWE2MmRkZjU1OGI0MGYyYjBlNGJmMmRlMTJiMjZlYy5iaW5kUG9wdXAocG9wdXBfN2QzZTRiMjgzNjA4NDg2YWE1ZTI3MGM3OTU2MzMxMTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYmRiZDA1ODE5MWNiNDcxMGIwZDYxYjM1NjNjMDZiZmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzM2MTg2Mjc2NDU2MDQsLTEyMi40MjIzMTU2NzA3NDldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzdmNjk4ZDQ4ZWQzYzQxZTE5NmFkNjc0MmRhYjUzOWZlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzYwNTI4ZGNhZDg1MDRkNzQ4YzY4NWMzMzQ2ZjQ4MmU2ID0gJCgnPGRpdiBpZD0iaHRtbF82MDUyOGRjYWQ4NTA0ZDc0OGM2ODVjMzM0NmY0ODJlNiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RlJBVUQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdmNjk4ZDQ4ZWQzYzQxZTE5NmFkNjc0MmRhYjUzOWZlLnNldENvbnRlbnQoaHRtbF82MDUyOGRjYWQ4NTA0ZDc0OGM2ODVjMzM0NmY0ODJlNik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2JkYmQwNTgxOTFjYjQ3MTBiMGQ2MWIzNTYzYzA2YmZlLmJpbmRQb3B1cChwb3B1cF83ZjY5OGQ0OGVkM2M0MWUxOTZhZDY3NDJkYWI1MzlmZSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl85MjY2NWU2MDU0NjQ0ZmY4YjM4YWNmMmI2NTBiYWRkNyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc5Mjg0MTI4NDA0NDcwNSwtMTIyLjQyNDUxOTgzNTAwOTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zZGMwZjA2NDg5NWM0NWM5YWYwYWFlZTY1MTRiZTI1YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8wOGFiMWNlMjg3M2I0ZWRjYjcwMmIzMzg4MzZlYmEzNyA9ICQoJzxkaXYgaWQ9Imh0bWxfMDhhYjFjZTI4NzNiNGVkY2I3MDJiMzM4ODM2ZWJhMzciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPldBUlJBTlRTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zZGMwZjA2NDg5NWM0NWM5YWYwYWFlZTY1MTRiZTI1Yy5zZXRDb250ZW50KGh0bWxfMDhhYjFjZTI4NzNiNGVkY2I3MDJiMzM4ODM2ZWJhMzcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85MjY2NWU2MDU0NjQ0ZmY4YjM4YWNmMmI2NTBiYWRkNy5iaW5kUG9wdXAocG9wdXBfM2RjMGYwNjQ4OTVjNDVjOWFmMGFhZWU2NTE0YmUyNWMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZDk2MGJlN2Q3YTQ2NDY4MTliYzBmZDlmNzNkOTBhMTIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMDI5ZTEwNzllNzVhNDAzMzkzNmM0YTE0MjFjNTgxMmMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzNjMDVhOTUxZGQzNDUwMjkwMzMyYWU2NGMyMWVmMTUgPSAkKCc8ZGl2IGlkPSJodG1sXzMzYzA1YTk1MWRkMzQ1MDI5MDMzMmFlNjRjMjFlZjE1IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5EUlVHL05BUkNPVElDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8wMjllMTA3OWU3NWE0MDMzOTM2YzRhMTQyMWM1ODEyYy5zZXRDb250ZW50KGh0bWxfMzNjMDVhOTUxZGQzNDUwMjkwMzMyYWU2NGMyMWVmMTUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kOTYwYmU3ZDdhNDY0NjgxOWJjMGZkOWY3M2Q5MGExMi5iaW5kUG9wdXAocG9wdXBfMDI5ZTEwNzllNzVhNDAzMzkzNmM0YTE0MjFjNTgxMmMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNzcxMGJkMmFkYjRhNGM1ZmFmOTljNzIyNjIzOGQyN2MgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTQwOTg2ODgyMDY3OTUsLTEyMi40MTQyMzM4NDkwMzc5OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZjFmMDVjZDAzN2NiNDFkYTkyM2Y2YWM4YzExZjRkMmQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMDc5Nzc4M2FlNGIyNGNkZGFkMjJkZDBmYTUyYzc2OTMgPSAkKCc8ZGl2IGlkPSJodG1sXzA3OTc3ODNhZTRiMjRjZGRhZDIyZGQwZmE1MmM3NjkzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjFmMDVjZDAzN2NiNDFkYTkyM2Y2YWM4YzExZjRkMmQuc2V0Q29udGVudChodG1sXzA3OTc3ODNhZTRiMjRjZGRhZDIyZGQwZmE1MmM3NjkzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNzcxMGJkMmFkYjRhNGM1ZmFmOTljNzIyNjIzOGQyN2MuYmluZFBvcHVwKHBvcHVwX2YxZjA1Y2QwMzdjYjQxZGE5MjNmNmFjOGMxMWY0ZDJkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2EwNzA1MThhNWZlMjQ3NjI5ZGQ3MjZiYzkzNDdlYzc5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzcxNDkzOTk2OTQxNiwtMTIyLjUwNzc1MDEzMTAwNDAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iMDYxOGJjYjNkOTA0M2ZlOTIyNzUxNjc5ZGE2NDY4MSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hYTNhNDgyNGUyY2I0NTc2YTNkZDczMGQ2MTZmZDBhYyA9ICQoJzxkaXYgaWQ9Imh0bWxfYWEzYTQ4MjRlMmNiNDU3NmEzZGQ3MzBkNjE2ZmQwYWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2IwNjE4YmNiM2Q5MDQzZmU5MjI3NTE2NzlkYTY0NjgxLnNldENvbnRlbnQoaHRtbF9hYTNhNDgyNGUyY2I0NTc2YTNkZDczMGQ2MTZmZDBhYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2EwNzA1MThhNWZlMjQ3NjI5ZGQ3MjZiYzkzNDdlYzc5LmJpbmRQb3B1cChwb3B1cF9iMDYxOGJjYjNkOTA0M2ZlOTIyNzUxNjc5ZGE2NDY4MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83ZjBhYjFjYWMxNjk0MGI3ODBlYzg4NjQyMjMxZTY3MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxODMwMjIwNDc2NjAwNSwtMTIyLjQ3NDQ0NDYzOTU5NDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82OTdkMmE1OWJlYmQ0MTQzODk5NWM2NjA2NzE1MjYxOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kM2Y0NWRkZDhkY2M0YzRiYjgxZmQwMTZkZWM4MTA4MCA9ICQoJzxkaXYgaWQ9Imh0bWxfZDNmNDVkZGQ4ZGNjNGM0YmI4MWZkMDE2ZGVjODEwODAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF82OTdkMmE1OWJlYmQ0MTQzODk5NWM2NjA2NzE1MjYxOS5zZXRDb250ZW50KGh0bWxfZDNmNDVkZGQ4ZGNjNGM0YmI4MWZkMDE2ZGVjODEwODApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83ZjBhYjFjYWMxNjk0MGI3ODBlYzg4NjQyMjMxZTY3MC5iaW5kUG9wdXAocG9wdXBfNjk3ZDJhNTliZWJkNDE0Mzg5OTVjNjYwNjcxNTI2MTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMjJmMzgwNTI3MTk4NDZlNWFmZDhiMTI0YmEyODMyMWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjQ1NzUyMzE3NjE1LC0xMjIuNDI3NTYyNTk2OTg1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9iMDJmMWZkODZhZDA0ZTg4OGIxODZhYzU0ODk4NjZlOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83OWIwMjAzMjI5MTA0NDczYTBiNmQ5YWYzMmNiZmMyNSA9ICQoJzxkaXYgaWQ9Imh0bWxfNzliMDIwMzIyOTEwNDQ3M2EwYjZkOWFmMzJjYmZjMjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMDJmMWZkODZhZDA0ZTg4OGIxODZhYzU0ODk4NjZlOC5zZXRDb250ZW50KGh0bWxfNzliMDIwMzIyOTEwNDQ3M2EwYjZkOWFmMzJjYmZjMjUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yMmYzODA1MjcxOTg0NmU1YWZkOGIxMjRiYTI4MzIxZS5iaW5kUG9wdXAocG9wdXBfYjAyZjFmZDg2YWQwNGU4ODhiMTg2YWM1NDg5ODY2ZTgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzEzYzRkMTYwNWJjNDRlNmIyMTY1YWQ5MzJjZTY2ZDAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc0Mzc4MzA5MTEyLC0xMjIuNDE5MjAzMDA0MjY4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xYzBmNjc0MDU3ZTU0MTI1OTg5NjdjNTBkYTNkN2MzMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9mMmE5MWM2N2JlMWE0OGVmODhmZmQ3NjNlMGNiNjJkNyA9ICQoJzxkaXYgaWQ9Imh0bWxfZjJhOTFjNjdiZTFhNDhlZjg4ZmZkNzYzZTBjYjYyZDciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8xYzBmNjc0MDU3ZTU0MTI1OTg5NjdjNTBkYTNkN2MzMS5zZXRDb250ZW50KGh0bWxfZjJhOTFjNjdiZTFhNDhlZjg4ZmZkNzYzZTBjYjYyZDcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jMTNjNGQxNjA1YmM0NGU2YjIxNjVhZDkzMmNlNjZkMC5iaW5kUG9wdXAocG9wdXBfMWMwZjY3NDA1N2U1NDEyNTk4OTY3YzUwZGEzZDdjMzEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTQ5OGI1YTgwNmRjNGM4OTllODMzOTdkYjcxNDM1N2EgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkzNjg4Mjg0NTMyLC0xMjIuNDEyNjkwMTQyMzA4MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzM4MzM1ZDUzMDlhNzQxMTk4OWZiYTdlYWNmYTNjOGMwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzY0ZGZjMjM4OTViYjQ5NWRiZjcxNGM1NjY2Y2RiZGE4ID0gJCgnPGRpdiBpZD0iaHRtbF82NGRmYzIzODk1YmI0OTVkYmY3MTRjNTY2NmNkYmRhOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzM4MzM1ZDUzMDlhNzQxMTk4OWZiYTdlYWNmYTNjOGMwLnNldENvbnRlbnQoaHRtbF82NGRmYzIzODk1YmI0OTVkYmY3MTRjNTY2NmNkYmRhOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzE0OThiNWE4MDZkYzRjODk5ZTgzMzk3ZGI3MTQzNTdhLmJpbmRQb3B1cChwb3B1cF8zODMzNWQ1MzA5YTc0MTE5ODlmYmE3ZWFjZmEzYzhjMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl83MTRkNTA3NDk3Y2Y0MjBiODNlNzU5NTAwYzQ5ODU2YiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcwOTIwMTA0NjIzNzksLTEyMi40MzQ2MDkyODAzNTJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzliNzZjZmU4OTk2MzQzNmU5NjQxNDIzOWI5N2ZkNWUyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2QwNDg5NWE3Yjk1OTRiYjk5YjBhMDU0MjM0YWE4OWEzID0gJCgnPGRpdiBpZD0iaHRtbF9kMDQ4OTVhN2I5NTk0YmI5OWIwYTA1NDIzNGFhODlhMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85Yjc2Y2ZlODk5NjM0MzZlOTY0MTQyMzliOTdmZDVlMi5zZXRDb250ZW50KGh0bWxfZDA0ODk1YTdiOTU5NGJiOTliMGEwNTQyMzRhYTg5YTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83MTRkNTA3NDk3Y2Y0MjBiODNlNzU5NTAwYzQ5ODU2Yi5iaW5kUG9wdXAocG9wdXBfOWI3NmNmZTg5OTYzNDM2ZTk2NDE0MjM5Yjk3ZmQ1ZTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfN2I2NThkNGU2YWI1NDNkMzgxODRjOWE5MmNkMTVmNDcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODc5MjA5Mzc1NTMyOTUsLTEyMi40MTA4ODI4MjU1NTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE0NzgxM2M3NzFiOTRmMDk4Y2YyZjE0M2Q1NTZmZGQ0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2QxMTBkODBlMjEwZjQ5NWJiMTkxMDQwMzEzOGJjYmZlID0gJCgnPGRpdiBpZD0iaHRtbF9kMTEwZDgwZTIxMGY0OTViYjE5MTA0MDMxMzhiY2JmZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkVISUNMRSBUSEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTQ3ODEzYzc3MWI5NGYwOThjZjJmMTQzZDU1NmZkZDQuc2V0Q29udGVudChodG1sX2QxMTBkODBlMjEwZjQ5NWJiMTkxMDQwMzEzOGJjYmZlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfN2I2NThkNGU2YWI1NDNkMzgxODRjOWE5MmNkMTVmNDcuYmluZFBvcHVwKHBvcHVwXzE0NzgxM2M3NzFiOTRmMDk4Y2YyZjE0M2Q1NTZmZGQ0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2VmNWNkNTcyMjNiYzQxZWRiYTk2NDQ0YjkxMDM5YmM0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuODAwNDU2NjQ3MTAzODksLTEyMi40MDE0MzI3NTQ3MjIwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGE5MTg0NTM0MmZhNGIwMGIwYzYwMmVlN2VjM2RjNTEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNWVhMTgyOTBhYTQ1NGJkMDg3NzUxYmJkZTA0MzVlYjggPSAkKCc8ZGl2IGlkPSJodG1sXzVlYTE4MjkwYWE0NTRiZDA4Nzc1MWJiZGUwNDM1ZWI4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kYTkxODQ1MzQyZmE0YjAwYjBjNjAyZWU3ZWMzZGM1MS5zZXRDb250ZW50KGh0bWxfNWVhMTgyOTBhYTQ1NGJkMDg3NzUxYmJkZTA0MzVlYjgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lZjVjZDU3MjIzYmM0MWVkYmE5NjQ0NGI5MTAzOWJjNC5iaW5kUG9wdXAocG9wdXBfZGE5MTg0NTM0MmZhNGIwMGIwYzYwMmVlN2VjM2RjNTEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTk0NThkNWFmZWZkNDU4YTk0YmQzZTk3Mzc0MTFlMjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDM1NTUwNTQyMjY1LC0xMjIuNDIxMTI4MDI5NTA1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80OWQ2YmRiNWQyODY0NDg5YjA3NjZlMGI1YjljNzE2YyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lNThkZTNjODkwOWY0OWFkYTQ4NGIyM2Q3NzQ4MzY0OCA9ICQoJzxkaXYgaWQ9Imh0bWxfZTU4ZGUzYzg5MDlmNDlhZGE0ODRiMjNkNzc0ODM2NDgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzQ5ZDZiZGI1ZDI4NjQ0ODliMDc2NmUwYjViOWM3MTZjLnNldENvbnRlbnQoaHRtbF9lNThkZTNjODkwOWY0OWFkYTQ4NGIyM2Q3NzQ4MzY0OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2E5NDU4ZDVhZmVmZDQ1OGE5NGJkM2U5NzM3NDExZTI2LmJpbmRQb3B1cChwb3B1cF80OWQ2YmRiNWQyODY0NDg5YjA3NjZlMGI1YjljNzE2Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yNjk2MGY3NjQ5MWU0OGFlYmZmNTA0YjUyMjliOThjYyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NjU2NDc2MDc2ODUsLTEyMi40MDcyNDQwODcwMzJdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc2NThkYWRlMzUxNzRhZjg5NTE4MjJjYTQ2ZDY5MWI0ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2JlMjMzODgzNmExODQxNWU5ZmY3MzdmYTY5YjgzOWMwID0gJCgnPGRpdiBpZD0iaHRtbF9iZTIzMzg4MzZhMTg0MTVlOWZmNzM3ZmE2OWI4MzljMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVNTQVVMVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzY1OGRhZGUzNTE3NGFmODk1MTgyMmNhNDZkNjkxYjQuc2V0Q29udGVudChodG1sX2JlMjMzODgzNmExODQxNWU5ZmY3MzdmYTY5YjgzOWMwKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjY5NjBmNzY0OTFlNDhhZWJmZjUwNGI1MjI5Yjk4Y2MuYmluZFBvcHVwKHBvcHVwXzc2NThkYWRlMzUxNzRhZjg5NTE4MjJjYTQ2ZDY5MWI0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzJkMmUwYThlODdhZjQ4MjI4MjI5YmUzODI1ZDQxM2Q1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzYxNTY1NTkyODA0NSwtMTIyLjQyMzgwMzAwMTkwMDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mZjM3NmMwMzU2MjI0ZWVjYTY4NWNmMzlhZjU5YzQ5MyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80NWRmYTlhYzZkNzA0MjdlYmRjMjcxZGUwMmM5MWIxYiA9ICQoJzxkaXYgaWQ9Imh0bWxfNDVkZmE5YWM2ZDcwNDI3ZWJkYzI3MWRlMDJjOTFiMWIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlJFQ09WRVJFRCBWRUhJQ0xFPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mZjM3NmMwMzU2MjI0ZWVjYTY4NWNmMzlhZjU5YzQ5My5zZXRDb250ZW50KGh0bWxfNDVkZmE5YWM2ZDcwNDI3ZWJkYzI3MWRlMDJjOTFiMWIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8yZDJlMGE4ZTg3YWY0ODIyODIyOWJlMzgyNWQ0MTNkNS5iaW5kUG9wdXAocG9wdXBfZmYzNzZjMDM1NjIyNGVlY2E2ODVjZjM5YWY1OWM0OTMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTE3MTNlZWJiZmYxNDFkZDhkM2IwZDZiNjgyZTk4ZDAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjE1NjU1OTI4MDQ1LC0xMjIuNDIzODAzMDAxOTAwOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2RhMmJmMTlhM2UwZDRiYjU5ZDg1NThlMzQ5Y2M2NzFmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzAwYWFlNTRiNWM4ZDQ2MGM4ODkxOGYwM2RhOTExOTFiID0gJCgnPGRpdiBpZD0iaHRtbF8wMGFhZTU0YjVjOGQ0NjBjODg5MThmMDNkYTkxMTkxYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RhMmJmMTlhM2UwZDRiYjU5ZDg1NThlMzQ5Y2M2NzFmLnNldENvbnRlbnQoaHRtbF8wMGFhZTU0YjVjOGQ0NjBjODg5MThmMDNkYTkxMTkxYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzExNzEzZWViYmZmMTQxZGQ4ZDNiMGQ2YjY4MmU5OGQwLmJpbmRQb3B1cChwb3B1cF9kYTJiZjE5YTNlMGQ0YmI1OWQ4NTU4ZTM0OWNjNjcxZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84ODQ5MmI1YTBkOTU0NGZjYTUwMDcxZGEwNGYyZDcwMCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc0NDE5Mjc1MDg5MzIwNSwtMTIyLjQ0NDY4NTQ4MjI3M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZGM3ZmY5Njc3ODFmNDYxNTkzZjZmOTU5OTFhMDE4ZWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYmE5ODYwM2Q1NGY0NDYxNGE5ZWNmZmVhOWU3NDU0OTggPSAkKCc8ZGl2IGlkPSJodG1sX2JhOTg2MDNkNTRmNDQ2MTRhOWVjZmZlYTllNzQ1NDk4IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2RjN2ZmOTY3NzgxZjQ2MTU5M2Y2Zjk1OTkxYTAxOGViLnNldENvbnRlbnQoaHRtbF9iYTk4NjAzZDU0ZjQ0NjE0YTllY2ZmZWE5ZTc0NTQ5OCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzg4NDkyYjVhMGQ5NTQ0ZmNhNTAwNzFkYTA0ZjJkNzAwLmJpbmRQb3B1cChwb3B1cF9kYzdmZjk2Nzc4MWY0NjE1OTNmNmY5NTk5MWEwMThlYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kYTU5MDg4NzJkY2Q0ZDhmYjRmZDgyOTE5ZTY1MDhkOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQ2OTI4MjAwNDEsLTEyMi40MTU3NTcwMzkxOTZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU3MGVlYWRiY2FiMDQxY2RhNzFjNmI3ODhlYjg1ZmIyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzExM2U5Y2E3MzMyMDQ2M2Q4MDk1NTEwOGNhMTNjYmZmID0gJCgnPGRpdiBpZD0iaHRtbF8xMTNlOWNhNzMzMjA0NjNkODA5NTUxMDhjYTEzY2JmZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF81NzBlZWFkYmNhYjA0MWNkYTcxYzZiNzg4ZWI4NWZiMi5zZXRDb250ZW50KGh0bWxfMTEzZTljYTczMzIwNDYzZDgwOTU1MTA4Y2ExM2NiZmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kYTU5MDg4NzJkY2Q0ZDhmYjRmZDgyOTE5ZTY1MDhkOC5iaW5kUG9wdXAocG9wdXBfNTcwZWVhZGJjYWIwNDFjZGE3MWM2Yjc4OGViODVmYjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTcyNjFmYWMzNjk2NGQ4N2I5NWIyNWZiMDg3NzQzYzcgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Mjg1MjgwNjI3NDY1LC0xMjIuNDc1NjQ3NDYwNzg1OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzY4MTcyMmQ0ZjRmODQ0ZGZiODQ2MjgxNDk0M2E2MzMwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzdhMDRhMjdlOWNmNzQxNzc4MGU1NjBhMWMzOGFjNmUyID0gJCgnPGRpdiBpZD0iaHRtbF83YTA0YTI3ZTljZjc0MTc3ODBlNTYwYTFjMzhhYzZlMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Uk9CQkVSWTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNjgxNzIyZDRmNGY4NDRkZmI4NDYyODE0OTQzYTYzMzAuc2V0Q29udGVudChodG1sXzdhMDRhMjdlOWNmNzQxNzc4MGU1NjBhMWMzOGFjNmUyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTcyNjFmYWMzNjk2NGQ4N2I5NWIyNWZiMDg3NzQzYzcuYmluZFBvcHVwKHBvcHVwXzY4MTcyMmQ0ZjRmODQ0ZGZiODQ2MjgxNDk0M2E2MzMwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzcyZTA2NDBlZTg4MTQ3NGQ5MzVkYTAzZGM0MmJlZGZiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQyODUxNzM3NDQ0ODk0LC0xMjIuNDIwOTY3NDQwNTY0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF85MWFhZjY0OWE3NWY0MDkxOGRlNDY2MjAzMzM3MzEwMSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81NzQ2NjY0OTJhZTE0M2IzODY1Y2Y2ZWRmMjA0MjdmNSA9ICQoJzxkaXYgaWQ9Imh0bWxfNTc0NjY2NDkyYWUxNDNiMzg2NWNmNmVkZjIwNDI3ZjUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85MWFhZjY0OWE3NWY0MDkxOGRlNDY2MjAzMzM3MzEwMS5zZXRDb250ZW50KGh0bWxfNTc0NjY2NDkyYWUxNDNiMzg2NWNmNmVkZjIwNDI3ZjUpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83MmUwNjQwZWU4ODE0NzRkOTM1ZGEwM2RjNDJiZWRmYi5iaW5kUG9wdXAocG9wdXBfOTFhYWY2NDlhNzVmNDA5MThkZTQ2NjIwMzMzNzMxMDEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTI3MzUzNzI3YzI2NDEwOGFmM2I0YWRjMDFlYjdjMWMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIxMTk4NDg4OTMxLC0xMjIuNDE1NjY5NjYxNDQzXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8xNjVhNmE0ODY0Mjk0OWYzYmJiMWE5MmNkYTIxNWFjYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hMzYyMDEzZTczZTI0MjZhODMwMzIwZWZjMGFhZDRmOCA9ICQoJzxkaXYgaWQ9Imh0bWxfYTM2MjAxM2U3M2UyNDI2YTgzMDMyMGVmYzBhYWQ0ZjgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTY1YTZhNDg2NDI5NDlmM2JiYjFhOTJjZGEyMTVhY2Iuc2V0Q29udGVudChodG1sX2EzNjIwMTNlNzNlMjQyNmE4MzAzMjBlZmMwYWFkNGY4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTI3MzUzNzI3YzI2NDEwOGFmM2I0YWRjMDFlYjdjMWMuYmluZFBvcHVwKHBvcHVwXzE2NWE2YTQ4NjQyOTQ5ZjNiYmIxYTkyY2RhMjE1YWNiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2RlM2MyNDhkNTQ1YzRlMGU4ZDFhMDk2ZTAzNzRkMDMwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc5MTY3NDIxODk2MywtMTIyLjQwNjM0NjQyNTYzMl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTk4ODc2ZDYwY2Q4NDI0YjhkZTdkMGFlNDI4MjdiNjQgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDBmODRmZjNhODhiNDY5MDg0Y2JiYzUyMmUxZGY3OGIgPSAkKCc8ZGl2IGlkPSJodG1sXzQwZjg0ZmYzYTg4YjQ2OTA4NGNiYmM1MjJlMWRmNzhiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hOTg4NzZkNjBjZDg0MjRiOGRlN2QwYWU0MjgyN2I2NC5zZXRDb250ZW50KGh0bWxfNDBmODRmZjNhODhiNDY5MDg0Y2JiYzUyMmUxZGY3OGIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9kZTNjMjQ4ZDU0NWM0ZTBlOGQxYTA5NmUwMzc0ZDAzMC5iaW5kUG9wdXAocG9wdXBfYTk4ODc2ZDYwY2Q4NDI0YjhkZTdkMGFlNDI4MjdiNjQpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfM2Y3ZDg3MmI4ZGI4NGI1NWIyYjEzOTBkOTY0MzkxYWUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjU3MTg0Mzk1MjgyLC0xMjIuNDA5NTI5OTEzMjc4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF82YTY4ZmIyMDkwMmM0NzhlYTBlYTEyY2JkNmY5N2M4OCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8zZTYzYTg1NDdjMTQ0NmMwYTkwNWFkYzcyYmIzZWU3NCA9ICQoJzxkaXYgaWQ9Imh0bWxfM2U2M2E4NTQ3YzE0NDZjMGE5MDVhZGM3MmJiM2VlNzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZhNjhmYjIwOTAyYzQ3OGVhMGVhMTJjYmQ2Zjk3Yzg4LnNldENvbnRlbnQoaHRtbF8zZTYzYTg1NDdjMTQ0NmMwYTkwNWFkYzcyYmIzZWU3NCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzNmN2Q4NzJiOGRiODRiNTViMmIxMzkwZDk2NDM5MWFlLmJpbmRQb3B1cChwb3B1cF82YTY4ZmIyMDkwMmM0NzhlYTBlYTEyY2JkNmY5N2M4OCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82OTllMTkxZDMwMDM0MTYxODRlNTA1MTNjOWI0Y2E3MiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NTQyMDcwNjcxMSwtMTIyLjQwMzQwNDc5MTQ3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lZWRlYjBhNTY3Zjk0ZjFjYTk1YjkwNDc1MDM3YjRhYiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iMjk4YmY1MzA5MjY0ODY1YTY4MWY0ZDYwZjRkODJjZSA9ICQoJzxkaXYgaWQ9Imh0bWxfYjI5OGJmNTMwOTI2NDg2NWE2ODFmNGQ2MGY0ZDgyY2UiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZWVkZWIwYTU2N2Y5NGYxY2E5NWI5MDQ3NTAzN2I0YWIuc2V0Q29udGVudChodG1sX2IyOThiZjUzMDkyNjQ4NjVhNjgxZjRkNjBmNGQ4MmNlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNjk5ZTE5MWQzMDAzNDE2MTg0ZTUwNTEzYzliNGNhNzIuYmluZFBvcHVwKHBvcHVwX2VlZGViMGE1NjdmOTRmMWNhOTViOTA0NzUwMzdiNGFiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA1ZmNjZWI1MzZiYjQ4OTJiYTJjNTNhMThkNDUxMDVkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY3NTI0MzA4NzgzLC0xMjIuNDEwNzM4MDk3MzE1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83YzQwOTY5ZmJjOTA0NzlkODNhODI3NWQ3Y2M3Njk1OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF82NzcxMTJlMzZlYTg0MWYwYWNhYjI0OWY5NzgxNDQ5MiA9ICQoJzxkaXYgaWQ9Imh0bWxfNjc3MTEyZTM2ZWE4NDFmMGFjYWIyNDlmOTc4MTQ0OTIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkJVUkdMQVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83YzQwOTY5ZmJjOTA0NzlkODNhODI3NWQ3Y2M3Njk1OS5zZXRDb250ZW50KGh0bWxfNjc3MTEyZTM2ZWE4NDFmMGFjYWIyNDlmOTc4MTQ0OTIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8wNWZjY2ViNTM2YmI0ODkyYmEyYzUzYTE4ZDQ1MTA1ZC5iaW5kUG9wdXAocG9wdXBfN2M0MDk2OWZiYzkwNDc5ZDgzYTgyNzVkN2NjNzY5NTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOGU2ZWE0YWI4ZTMyNGQ3YTk1NDUzNWNhZTU3ZmJhMjMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43Njc1MjQzMDg3ODMsLTEyMi40MTA3MzgwOTczMTVdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q5Y2Y2MTgxYjg4ZjRmYTRhNDIwYTllYTU3YTE1N2U1ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2NmYjA5NjlkMWI3ZjRiNTdhNGMyMmI1MDAyNTAyM2FlID0gJCgnPGRpdiBpZD0iaHRtbF9jZmIwOTY5ZDFiN2Y0YjU3YTRjMjJiNTAwMjUwMjNhZSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QVJTT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q5Y2Y2MTgxYjg4ZjRmYTRhNDIwYTllYTU3YTE1N2U1LnNldENvbnRlbnQoaHRtbF9jZmIwOTY5ZDFiN2Y0YjU3YTRjMjJiNTAwMjUwMjNhZSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzhlNmVhNGFiOGUzMjRkN2E5NTQ1MzVjYWU1N2ZiYTIzLmJpbmRQb3B1cChwb3B1cF9kOWNmNjE4MWI4OGY0ZmE0YTQyMGE5ZWE1N2ExNTdlNSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mYzUwZjIzYzRmZDY0NjkyYjgzOWEwNmEwNWIzYWIwZiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzU0ZTQ1MGNjMWRkYjQyMjU5YmQ4MzIzNjAzNTIxZDhjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IyMGU5YjQzMTA2MzQ3OTViYWY3MzI0MTgzMGMzZjI4ID0gJCgnPGRpdiBpZD0iaHRtbF9iMjBlOWI0MzEwNjM0Nzk1YmFmNzMyNDE4MzBjM2YyOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzU0ZTQ1MGNjMWRkYjQyMjU5YmQ4MzIzNjAzNTIxZDhjLnNldENvbnRlbnQoaHRtbF9iMjBlOWI0MzEwNjM0Nzk1YmFmNzMyNDE4MzBjM2YyOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2ZjNTBmMjNjNGZkNjQ2OTJiODM5YTA2YTA1YjNhYjBmLmJpbmRQb3B1cChwb3B1cF81NGU0NTBjYzFkZGI0MjI1OWJkODMyMzYwMzUyMWQ4Yyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mMzkzM2EwNTk1MDE0MTU0OWE5ZjU0NjkyMmQwYjk2NiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcxMzEwODM0MzMyNjQsLTEyMi40NDQzMTQwMjUxODhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YwOTIyMGE1NmViNTQzZWI4ZWVjYjRkOWIzMjdkNGYxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzYzMDMwOTA1NTU4ODRjZWI5N2VlNWRkODAzOTJmMzVkID0gJCgnPGRpdiBpZD0iaHRtbF82MzAzMDkwNTU1ODg0Y2ViOTdlZTVkZDgwMzkyZjM1ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVRy9OQVJDT1RJQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjA5MjIwYTU2ZWI1NDNlYjhlZWNiNGQ5YjMyN2Q0ZjEuc2V0Q29udGVudChodG1sXzYzMDMwOTA1NTU4ODRjZWI5N2VlNWRkODAzOTJmMzVkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjM5MzNhMDU5NTAxNDE1NDlhOWY1NDY5MjJkMGI5NjYuYmluZFBvcHVwKHBvcHVwX2YwOTIyMGE1NmViNTQzZWI4ZWVjYjRkOWIzMjdkNGYxKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzJlMjYzN2U3ZDIzNjQ1MmY5YzQ5NTlkNTA2YTc0MmQ4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjE1NjI3NmIzMDhjNDA2ZWExZGI1ZTU2N2U1ZTZhY2YgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZjhiZjc2ODdhZTU5NDlkNTgzZDNhYWJlMmU1MjU1ZGYgPSAkKCc8ZGl2IGlkPSJodG1sX2Y4YmY3Njg3YWU1OTQ5ZDU4M2QzYWFiZTJlNTI1NWRmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMjE1NjI3NmIzMDhjNDA2ZWExZGI1ZTU2N2U1ZTZhY2Yuc2V0Q29udGVudChodG1sX2Y4YmY3Njg3YWU1OTQ5ZDU4M2QzYWFiZTJlNTI1NWRmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMmUyNjM3ZTdkMjM2NDUyZjljNDk1OWQ1MDZhNzQyZDguYmluZFBvcHVwKHBvcHVwXzIxNTYyNzZiMzA4YzQwNmVhMWRiNWU1NjdlNWU2YWNmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2QxOWJmNjZkOTViZTRmYWE4NmU2YWIxY2QzNTRjYTlkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzY2MDE2MDExNDEwMywtMTIyLjQwMzY0NDYyMDQzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNGZlMTE3ZDc3ZWI4NDIyNWE3Y2MwOGE4YjFjOWVmYWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZDI1YzQxNmI5Y2NlNDRkMWEzNTEyYzdhZWYzN2M3MmMgPSAkKCc8ZGl2IGlkPSJodG1sX2QyNWM0MTZiOWNjZTQ0ZDFhMzUxMmM3YWVmMzdjNzJjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGZlMTE3ZDc3ZWI4NDIyNWE3Y2MwOGE4YjFjOWVmYWYuc2V0Q29udGVudChodG1sX2QyNWM0MTZiOWNjZTQ0ZDFhMzUxMmM3YWVmMzdjNzJjKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDE5YmY2NmQ5NWJlNGZhYTg2ZTZhYjFjZDM1NGNhOWQuYmluZFBvcHVwKHBvcHVwXzRmZTExN2Q3N2ViODQyMjVhN2NjMDhhOGIxYzllZmFmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2IzMzI1N2NiZWE4ZjRkMWNiMzZjYmJmN2U4NzhhNDk0ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc2MjMxMDQwNDc1OCwtMTIyLjQxNDcxNDI5NTU3ODk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9kN2ZlMjc3N2MwOWQ0ZjI1YjkyMWRkMmFlMmExOWM4ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83Y2M2MzNmNDJmMmI0ZmNkOGU1ZjY0NzhlZWYwY2ViYSA9ICQoJzxkaXYgaWQ9Imh0bWxfN2NjNjMzZjQyZjJiNGZjZDhlNWY2NDc4ZWVmMGNlYmEiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkFTU0FVTFQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q3ZmUyNzc3YzA5ZDRmMjViOTIxZGQyYWUyYTE5YzhkLnNldENvbnRlbnQoaHRtbF83Y2M2MzNmNDJmMmI0ZmNkOGU1ZjY0NzhlZWYwY2ViYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2IzMzI1N2NiZWE4ZjRkMWNiMzZjYmJmN2U4NzhhNDk0LmJpbmRQb3B1cChwb3B1cF9kN2ZlMjc3N2MwOWQ0ZjI1YjkyMWRkMmFlMmExOWM4ZCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kMjMwYjNlYmY5NzA0ZjhjOWYxZmZjNTA3Y2I5MTg1MiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NjIzMTA0MDQ3NTgsLTEyMi40MTQ3MTQyOTU1Nzg5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfNzgyNzc4YTBmYmMzNGM5MGE1MzNjZTliZTQ4ZThhZmEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYTc3ZTljYmYzNzZlNDVjZWIzZGE0ZmI3OTljYzUyNmQgPSAkKCc8ZGl2IGlkPSJodG1sX2E3N2U5Y2JmMzc2ZTQ1Y2ViM2RhNGZiNzk5Y2M1MjZkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNzgyNzc4YTBmYmMzNGM5MGE1MzNjZTliZTQ4ZThhZmEuc2V0Q29udGVudChodG1sX2E3N2U5Y2JmMzc2ZTQ1Y2ViM2RhNGZiNzk5Y2M1MjZkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZDIzMGIzZWJmOTcwNGY4YzlmMWZmYzUwN2NiOTE4NTIuYmluZFBvcHVwKHBvcHVwXzc4Mjc3OGEwZmJjMzRjOTBhNTMzY2U5YmU0OGU4YWZhKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzgwMTQzODVmZTZhMTQ4Y2M5ZGM0YTZkM2NmN2RiODk4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3NTExODg5NTY5NSwtMTIyLjQxODA0NTQ1Mjc2OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjE4OGRlYzRjOTk3NDJkYTg2ZjRjZDA1ZTI0OTc3MmUgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOTgyNWQwMTNkY2RkNGI1YzhhNzZiNzgyNGEyYzg3NDIgPSAkKCc8ZGl2IGlkPSJodG1sXzk4MjVkMDEzZGNkZDRiNWM4YTc2Yjc4MjRhMmM4NzQyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5WRUhJQ0xFIFRIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMTg4ZGVjNGM5OTc0MmRhODZmNGNkMDVlMjQ5NzcyZS5zZXRDb250ZW50KGh0bWxfOTgyNWQwMTNkY2RkNGI1YzhhNzZiNzgyNGEyYzg3NDIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84MDE0Mzg1ZmU2YTE0OGNjOWRjNGE2ZDNjZjdkYjg5OC5iaW5kUG9wdXAocG9wdXBfYjE4OGRlYzRjOTk3NDJkYTg2ZjRjZDA1ZTI0OTc3MmUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNmVmNzk4N2U3OGMxNGJkYjk0ZDU3YmM1NWJkMzVmYWMgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODIwMjM4NDc4OTc1LC0xMjIuNDAxMTYxNTU1NjAyXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lNDllNzg3ZDM0M2Q0NmE5YWIxNDViMzg3ZjczNzExOSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF84MDNjZmFlZWQxYzk0OGE0OWM0NTE5ODZhZjNmNGMyMCA9ICQoJzxkaXYgaWQ9Imh0bWxfODAzY2ZhZWVkMWM5NDhhNDljNDUxOTg2YWYzZjRjMjAiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lNDllNzg3ZDM0M2Q0NmE5YWIxNDViMzg3ZjczNzExOS5zZXRDb250ZW50KGh0bWxfODAzY2ZhZWVkMWM5NDhhNDljNDUxOTg2YWYzZjRjMjApOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82ZWY3OTg3ZTc4YzE0YmRiOTRkNTdiYzU1YmQzNWZhYy5iaW5kUG9wdXAocG9wdXBfZTQ5ZTc4N2QzNDNkNDZhOWFiMTQ1YjM4N2Y3MzcxMTkpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYTdlZGI3NjRkMjc5NDhhZDgyMDJmYjdlYmM4MzEwNDIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjcwMDUzMTk2Mjk5OTUsLTEyMi40MDM0MDg2NjkxOTFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzc1MTY5NmQwYTg2MjQzNDNiMjFiNWFkNmRjNDE3NWJmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U0ZDZlZDc3YjhjMzQzYTE4ZTVkNzBmOWZmMzEzNGE5ID0gJCgnPGRpdiBpZD0iaHRtbF9lNGQ2ZWQ3N2I4YzM0M2ExOGU1ZDcwZjlmZjMxMzRhOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzc1MTY5NmQwYTg2MjQzNDNiMjFiNWFkNmRjNDE3NWJmLnNldENvbnRlbnQoaHRtbF9lNGQ2ZWQ3N2I4YzM0M2ExOGU1ZDcwZjlmZjMxMzRhOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2E3ZWRiNzY0ZDI3OTQ4YWQ4MjAyZmI3ZWJjODMxMDQyLmJpbmRQb3B1cChwb3B1cF83NTE2OTZkMGE4NjI0MzQzYjIxYjVhZDZkYzQxNzViZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zYzkxNzUzMDAzYmY0MDQ4ODU3MmYyN2I5NDk2YWIzOSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNDQzNzQxNDEsLTEyMi40MTI5MzA1MjIwNTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzg5MzAwYmZiMzVlMzRmOTZiODg4OGU4Mzc4ZDVjMzI3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2EzNGE0NWI5ZTNlMjRkMjhhMjg2M2UwNzYxNWFkOTE0ID0gJCgnPGRpdiBpZD0iaHRtbF9hMzRhNDViOWUzZTI0ZDI4YTI4NjNlMDc2MTVhZDkxNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+VkFOREFMSVNNPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84OTMwMGJmYjM1ZTM0Zjk2Yjg4ODhlODM3OGQ1YzMyNy5zZXRDb250ZW50KGh0bWxfYTM0YTQ1YjllM2UyNGQyOGEyODYzZTA3NjE1YWQ5MTQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl8zYzkxNzUzMDAzYmY0MDQ4ODU3MmYyN2I5NDk2YWIzOS5iaW5kUG9wdXAocG9wdXBfODkzMDBiZmIzNWUzNGY5NmI4ODg4ZTgzNzhkNWMzMjcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfN2M5ZGRjZGZhZWQ1NDE4MmE1ZmUyZmFiZGVjY2M3NGUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTMwMTg2NTM3NDQ2MDQsLTEyMi40MTg1ODcxNzIyMTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2IxYzA0MzBjMTBiODQxNjJiNTgxYWUzNjIwMDU3NWY4ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzZhMjNlZGZmZjJmZDQ5OGNhMmVlM2FlZjdjMDE5NmM3ID0gJCgnPGRpdiBpZD0iaHRtbF82YTIzZWRmZmYyZmQ0OThjYTJlZTNhZWY3YzAxOTZjNyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iMWMwNDMwYzEwYjg0MTYyYjU4MWFlMzYyMDA1NzVmOC5zZXRDb250ZW50KGh0bWxfNmEyM2VkZmZmMmZkNDk4Y2EyZWUzYWVmN2MwMTk2YzcpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl83YzlkZGNkZmFlZDU0MTgyYTVmZTJmYWJkZWNjYzc0ZS5iaW5kUG9wdXAocG9wdXBfYjFjMDQzMGMxMGI4NDE2MmI1ODFhZTM2MjAwNTc1ZjgpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjY1OGM1NmQwYjk5NGNjMmJlZjZlNzZhMDNlYzdmNzAgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NzQwNDE4Mzg1MDQxLC0xMjIuNDE0MzcwNjI3NDk1XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF84Mzc0MTIxN2YwZjY0ZTRlYTVlY2RlNjg3ZTlhZjY5NyA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9kZmVmYTAwZTViMDE0YWRiYmYxMmJhMmVjYzQ1YzYwYiA9ICQoJzxkaXYgaWQ9Imh0bWxfZGZlZmEwMGU1YjAxNGFkYmJmMTJiYTJlY2M0NWM2MGIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkZSQVVEPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF84Mzc0MTIxN2YwZjY0ZTRlYTVlY2RlNjg3ZTlhZjY5Ny5zZXRDb250ZW50KGh0bWxfZGZlZmEwMGU1YjAxNGFkYmJmMTJiYTJlY2M0NWM2MGIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9iNjU4YzU2ZDBiOTk0Y2MyYmVmNmU3NmEwM2VjN2Y3MC5iaW5kUG9wdXAocG9wdXBfODM3NDEyMTdmMGY2NGU0ZWE1ZWNkZTY4N2U5YWY2OTcpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfOTNjN2ZjYzQ4MzhjNGViNjg4MTkxYWU1MDdiOTA0MGEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43OTA1Mzg5OTM3MjUsLTEyMi40MDM5MTU2ODE1NzEwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYzEwNjVlMTFiOWI2NDNjOGExODBlMDQ3ZjI3NDhjM2MgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDE5NzU3YWU2N2MxNDFjZjg4Mzk0OGFmNmY3OTgzYTMgPSAkKCc8ZGl2IGlkPSJodG1sXzQxOTc1N2FlNjdjMTQxY2Y4ODM5NDhhZjZmNzk4M2EzIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5BU1NBVUxUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9jMTA2NWUxMWI5YjY0M2M4YTE4MGUwNDdmMjc0OGMzYy5zZXRDb250ZW50KGh0bWxfNDE5NzU3YWU2N2MxNDFjZjg4Mzk0OGFmNmY3OTgzYTMpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl85M2M3ZmNjNDgzOGM0ZWI2ODgxOTFhZTUwN2I5MDQwYS5iaW5kUG9wdXAocG9wdXBfYzEwNjVlMTFiOWI2NDNjOGExODBlMDQ3ZjI3NDhjM2MpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZWUzYWQ3MjkyNWJkNDcwNWI4MGFiN2M1Y2YzYWQ1YTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODMwOTk4MjQ0NTkyMSwtMTIyLjQxOTE4MzA5NjM2Ml0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfODEzNjMxMTEwZTY3NDI4ZGFkNzYzNjMzZGY2ZjNkMmYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfYWNlNGFhM2JlNWIxNGRmNWExNWY1NDU4M2EzMzhjODQgPSAkKCc8ZGl2IGlkPSJodG1sX2FjZTRhYTNiZTViMTRkZjVhMTVmNTQ1ODNhMzM4Yzg0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfODEzNjMxMTEwZTY3NDI4ZGFkNzYzNjMzZGY2ZjNkMmYuc2V0Q29udGVudChodG1sX2FjZTRhYTNiZTViMTRkZjVhMTVmNTQ1ODNhMzM4Yzg0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZWUzYWQ3MjkyNWJkNDcwNWI4MGFiN2M1Y2YzYWQ1YTkuYmluZFBvcHVwKHBvcHVwXzgxMzYzMTExMGU2NzQyOGRhZDc2MzYzM2RmNmYzZDJmKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2JiZTRlZmUwN2FkZTQ2NDhhOTc5OTE2ZWZhNDcwNDcwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzQwNzM2MDU0ODM1NzksLTEyMi4zODg3NTMwNDY5OTddLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U5YTg1ZjcyMjQzYTRkM2ZhMDlkMTEzNGMxZWZjMGMwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzRjYzk2N2UxMjVhYjQwMGJhMmI1OTdjY2YxYWRjMDAwID0gJCgnPGRpdiBpZD0iaHRtbF80Y2M5NjdlMTI1YWI0MDBiYTJiNTk3Y2NmMWFkYzAwMCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U5YTg1ZjcyMjQzYTRkM2ZhMDlkMTEzNGMxZWZjMGMwLnNldENvbnRlbnQoaHRtbF80Y2M5NjdlMTI1YWI0MDBiYTJiNTk3Y2NmMWFkYzAwMCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2JiZTRlZmUwN2FkZTQ2NDhhOTc5OTE2ZWZhNDcwNDcwLmJpbmRQb3B1cChwb3B1cF9lOWE4NWY3MjI0M2E0ZDNmYTA5ZDExMzRjMWVmYzBjMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl84YWYzOThkMjFjOTQ0OWNkOTAyN2I0ODVkODRkMTYwZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDk5MTI5NDQzNjYsLTEyMi40Mzc3OTk3MDM0NjhdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2YxMTQ4NDk2YTJlNjQ0ZWZhMDgxYzk2OWY2YWFmNGU3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2I4MjVlZTgyYzg2MDQ0YWM5MDMxNzE0YmE0YmQ3OGE0ID0gJCgnPGRpdiBpZD0iaHRtbF9iODI1ZWU4MmM4NjA0NGFjOTAzMTcxNGJhNGJkNzhhNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZjExNDg0OTZhMmU2NDRlZmEwODFjOTY5ZjZhYWY0ZTcuc2V0Q29udGVudChodG1sX2I4MjVlZTgyYzg2MDQ0YWM5MDMxNzE0YmE0YmQ3OGE0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOGFmMzk4ZDIxYzk0NDljZDkwMjdiNDg1ZDg0ZDE2MGQuYmluZFBvcHVwKHBvcHVwX2YxMTQ4NDk2YTJlNjQ0ZWZhMDgxYzk2OWY2YWFmNGU3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzEzNzE3MGNiN2I2MTQ0NmQ4NDQ1YmM5YmJjMTg1ZjQ1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMWU5NWZiNmMwYTllNDljMjllZDkzYmFkMTVlOWU3MDAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGI2ODI4MzYyMGY5NDdiYmJmZjY3MzgyNmZkMDAxMzQgPSAkKCc8ZGl2IGlkPSJodG1sX2RiNjgyODM2MjBmOTQ3YmJiZmY2NzM4MjZmZDAwMTM0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMWU5NWZiNmMwYTllNDljMjllZDkzYmFkMTVlOWU3MDAuc2V0Q29udGVudChodG1sX2RiNjgyODM2MjBmOTQ3YmJiZmY2NzM4MjZmZDAwMTM0KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTM3MTcwY2I3YjYxNDQ2ZDg0NDViYzliYmMxODVmNDUuYmluZFBvcHVwKHBvcHVwXzFlOTVmYjZjMGE5ZTQ5YzI5ZWQ5M2JhZDE1ZTllNzAwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2U2ZTA0Nzc3ZTg5MDQ5ODlhOWJlZjZjOTM1YThhOWJhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc3MDkwMjc0MzY2OSwtMTIyLjQyMTMzMjY4NDYzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmYxZWUxYTQwNTFmNDIyN2FhNzYyYmY3YzMwN2FkMWIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZGZjODJiNTNiNTQ0NDg1NTkyNWQ5ZjZiOWVhMDU5NmEgPSAkKCc8ZGl2IGlkPSJodG1sX2RmYzgyYjUzYjU0NDQ4NTU5MjVkOWY2YjllYTA1OTZhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5NSVNTSU5HIFBFUlNPTjwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmYxZWUxYTQwNTFmNDIyN2FhNzYyYmY3YzMwN2FkMWIuc2V0Q29udGVudChodG1sX2RmYzgyYjUzYjU0NDQ4NTU5MjVkOWY2YjllYTA1OTZhKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTZlMDQ3NzdlODkwNDk4OWE5YmVmNmM5MzVhOGE5YmEuYmluZFBvcHVwKHBvcHVwX2JmMWVlMWE0MDUxZjQyMjdhYTc2MmJmN2MzMDdhZDFiKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2YzZWU1NmM4YWY3NDQwMTY5NWM5N2I0ZDA5ODgzZGY4ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgyMjQ1ODIyMzkxNywtMTIyLjQ0NjYxMjk3ODgzOV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfY2U5ZWE3OGJlYjA2NGU4YTk2NjM4ZDQ1YmVkZGZlZjcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfOWJlYWQ4ZWRkOGQ3NGExYzljNGVhMjI4YzVjZDY4ZWUgPSAkKCc8ZGl2IGlkPSJodG1sXzliZWFkOGVkZDhkNzRhMWM5YzRlYTIyOGM1Y2Q2OGVlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfY2U5ZWE3OGJlYjA2NGU4YTk2NjM4ZDQ1YmVkZGZlZjcuc2V0Q29udGVudChodG1sXzliZWFkOGVkZDhkNzRhMWM5YzRlYTIyOGM1Y2Q2OGVlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjNlZTU2YzhhZjc0NDAxNjk1Yzk3YjRkMDk4ODNkZjguYmluZFBvcHVwKHBvcHVwX2NlOWVhNzhiZWIwNjRlOGE5NjYzOGQ0NWJlZGRmZWY3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzU3MzJhZWVjNDBiMzRkNmU4MjQ4YzE5YTUyN2ViMmZlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwMDM3OTk5NTEyNzk1LC0xMjIuNDA0NTk0MTQwNjM0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wOTMwNjViZGI1MWE0MjczODRiNTI5MzNmNTA5MTAxMCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iN2ViZWY2YzNjNTQ0OGIzOGQxYzk0MTNjYzNjNWY5ZSA9ICQoJzxkaXYgaWQ9Imh0bWxfYjdlYmVmNmMzYzU0NDhiMzhkMWM5NDEzY2MzYzVmOWUiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDkzMDY1YmRiNTFhNDI3Mzg0YjUyOTMzZjUwOTEwMTAuc2V0Q29udGVudChodG1sX2I3ZWJlZjZjM2M1NDQ4YjM4ZDFjOTQxM2NjM2M1ZjllKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNTczMmFlZWM0MGIzNGQ2ZTgyNDhjMTlhNTI3ZWIyZmUuYmluZFBvcHVwKHBvcHVwXzA5MzA2NWJkYjUxYTQyNzM4NGI1MjkzM2Y1MDkxMDEwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyX2JkN2JlMWY5N2JkZDQxYjk5NmJjZDE1NmY0NmMzYWEwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzk1MzMzODI2NzQzNiwtMTIyLjM5NzM3Mzc0MDA2Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMTQyNjZiNDU1YjkwNDQ2N2IzNjBjNzM3MmFlZGY1MWYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzdmYjU0OGMyZjZmNDI2OGI4NTZlZmQ3NGEwYTFiOWEgPSAkKCc8ZGl2IGlkPSJodG1sXzc3ZmI1NDhjMmY2ZjQyNjhiODU2ZWZkNzRhMGExYjlhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzE0MjY2YjQ1NWI5MDQ0NjdiMzYwYzczNzJhZWRmNTFmLnNldENvbnRlbnQoaHRtbF83N2ZiNTQ4YzJmNmY0MjY4Yjg1NmVmZDc0YTBhMWI5YSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2JkN2JlMWY5N2JkZDQxYjk5NmJjZDE1NmY0NmMzYWEwLmJpbmRQb3B1cChwb3B1cF8xNDI2NmI0NTViOTA0NDY3YjM2MGM3MzcyYWVkZjUxZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8zNjRmZmZhNDRkZWM0OTMwYjkxNjNjNzY5MmI1ZGM5NSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NzUxNTg3NDE2MjI5NSwtMTIyLjQwNzQzNDk4OTUyM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMGM0MDQ3MzIyNDYzNGM4OWE1MjQyYzJhYWNmNjIxYTggPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNzZiNTc1OWJhYzY3NDMyNTg0NTE4ZWQxNDk4NWNiYWUgPSAkKCc8ZGl2IGlkPSJodG1sXzc2YjU3NTliYWM2NzQzMjU4NDUxOGVkMTQ5ODVjYmFlIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5XQVJSQU5UUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMGM0MDQ3MzIyNDYzNGM4OWE1MjQyYzJhYWNmNjIxYTguc2V0Q29udGVudChodG1sXzc2YjU3NTliYWM2NzQzMjU4NDUxOGVkMTQ5ODVjYmFlKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMzY0ZmZmYTQ0ZGVjNDkzMGI5MTYzYzc2OTJiNWRjOTUuYmluZFBvcHVwKHBvcHVwXzBjNDA0NzMyMjQ2MzRjODlhNTI0MmMyYWFjZjYyMWE4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzA0YTVkOTY0Y2VkYjQ4ZDVhOTBkMTU4NDMwYmQ3NTk5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc4NTIzMzc3NjAzMiwtMTIyLjQwMzQ2NDA4MDAzM10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfN2M0NDNmOWViNzBkNDNjOGFhMWY2YTk1Y2Q1ZmI3Y2YgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNTExYzJkNjFjZDc2NDlhM2E4OThlN2NhMDEyMDEwOGYgPSAkKCc8ZGl2IGlkPSJodG1sXzUxMWMyZDYxY2Q3NjQ5YTNhODk4ZTdjYTAxMjAxMDhmIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QUk9TVElUVVRJT048L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzdjNDQzZjllYjcwZDQzYzhhYTFmNmE5NWNkNWZiN2NmLnNldENvbnRlbnQoaHRtbF81MTFjMmQ2MWNkNzY0OWEzYTg5OGU3Y2EwMTIwMTA4Zik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzA0YTVkOTY0Y2VkYjQ4ZDVhOTBkMTU4NDMwYmQ3NTk5LmJpbmRQb3B1cChwb3B1cF83YzQ0M2Y5ZWI3MGQ0M2M4YWExZjZhOTVjZDVmYjdjZik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl82M2U0MjRmOGYzZWQ0ZjdiYTkxMTNkZGY5ZjM0YWQyZSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3ODUyMzM3NzYwMzIsLTEyMi40MDM0NjQwODAwMzNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2Q0NDhhNWVjZGM0MTQ4MDY5ODUwM2M2ZjRiMDY4ZjYwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzZhZmNjNjQ1NzI5YzQ5MzNhYjAwYTNmZjEyNmVkMTcwID0gJCgnPGRpdiBpZD0iaHRtbF82YWZjYzY0NTcyOWM0OTMzYWIwMGEzZmYxMjZlZDE3MCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2Q0NDhhNWVjZGM0MTQ4MDY5ODUwM2M2ZjRiMDY4ZjYwLnNldENvbnRlbnQoaHRtbF82YWZjYzY0NTcyOWM0OTMzYWIwMGEzZmYxMjZlZDE3MCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzYzZTQyNGY4ZjNlZDRmN2JhOTExM2RkZjlmMzRhZDJlLmJpbmRQb3B1cChwb3B1cF9kNDQ4YTVlY2RjNDE0ODA2OTg1MDNjNmY0YjA2OGY2MCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9kZGNmNDJjNzBhYTA0NzNiOTc2YTg1NGFlOTA0ZTJmYSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3MzI5MTgwNjkwMjk5NiwtMTIyLjQzNjYxNDE4MTMzMTAxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83YjljZjVjNjEzMzE0YTliYWE2MDcyOGJiZmYyZGU3NCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8yOWEzY2VhN2NkNTc0ODhjYmM0YTIxYmFhZGMwNzViOCA9ICQoJzxkaXYgaWQ9Imh0bWxfMjlhM2NlYTdjZDU3NDg4Y2JjNGEyMWJhYWRjMDc1YjgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfN2I5Y2Y1YzYxMzMxNGE5YmFhNjA3MjhiYmZmMmRlNzQuc2V0Q29udGVudChodG1sXzI5YTNjZWE3Y2Q1NzQ4OGNiYzRhMjFiYWFkYzA3NWI4KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZGRjZjQyYzcwYWEwNDczYjk3NmE4NTRhZTkwNGUyZmEuYmluZFBvcHVwKHBvcHVwXzdiOWNmNWM2MTMzMTRhOWJhYTYwNzI4YmJmZjJkZTc0KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzUzY2Q3MjA3NDhhZTQ4ZmI5ZGVkMjk4NTBiMjcyMGJjID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzE1ZTI5OTBmMTgwMzQ1YTViYjE4YTdkNTZhYWNjNjcyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzFiMjcwZWFhZjllMjQ0Y2Q4NDk1NGJhNjZhZjY3ODIzID0gJCgnPGRpdiBpZD0iaHRtbF8xYjI3MGVhYWY5ZTI0NGNkODQ5NTRiYTY2YWY2NzgyMyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVRy9OQVJDT1RJQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMTVlMjk5MGYxODAzNDVhNWJiMThhN2Q1NmFhY2M2NzIuc2V0Q29udGVudChodG1sXzFiMjcwZWFhZjllMjQ0Y2Q4NDk1NGJhNjZhZjY3ODIzKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNTNjZDcyMDc0OGFlNDhmYjlkZWQyOTg1MGIyNzIwYmMuYmluZFBvcHVwKHBvcHVwXzE1ZTI5OTBmMTgwMzQ1YTViYjE4YTdkNTZhYWNjNjcyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzIyODA0ODg2YjVjZjRjMzA5MTA2ZjUyZjYwZTE4NWJhID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzgwNTI3NTc4NTA5LC0xMjIuMzk2ODQ5MDE1MTcyMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U1N2E5MTI5MzA4YzRhYmJiYjc4ZGFhODViMzNmYjgxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzg0ZjBiMTE3NTY3ZDQ2YWE4YWM3OGE0ZGVjZmQ3MTE5ID0gJCgnPGRpdiBpZD0iaHRtbF84NGYwYjExNzU2N2Q0NmFhOGFjNzhhNGRlY2ZkNzExOSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+V0FSUkFOVFM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U1N2E5MTI5MzA4YzRhYmJiYjc4ZGFhODViMzNmYjgxLnNldENvbnRlbnQoaHRtbF84NGYwYjExNzU2N2Q0NmFhOGFjNzhhNGRlY2ZkNzExOSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzIyODA0ODg2YjVjZjRjMzA5MTA2ZjUyZjYwZTE4NWJhLmJpbmRQb3B1cChwb3B1cF9lNTdhOTEyOTMwOGM0YWJiYmI3OGRhYTg1YjMzZmI4MSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jNDAzMzE5N2NmMDQ0N2Y3YTU2NjdlNmNjNGI3ZGU2NiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjcyODQxODA3MDY2MDIwNCwtMTIyLjQ1MDAwMDc5MDQ0NV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTU4NDljOTA0NDcxNGIwNmFlODFjN2U4MmY0ZTkyMWEgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjYwMTQ2ZjM0YjQ0NDQxNjhlY2FlZWZlODY3Yzk4MjQgPSAkKCc8ZGl2IGlkPSJodG1sXzI2MDE0NmYzNGI0NDQ0MTY4ZWNhZWVmZTg2N2M5ODI0IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF85NTg0OWM5MDQ0NzE0YjA2YWU4MWM3ZTgyZjRlOTIxYS5zZXRDb250ZW50KGh0bWxfMjYwMTQ2ZjM0YjQ0NDQxNjhlY2FlZWZlODY3Yzk4MjQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9jNDAzMzE5N2NmMDQ0N2Y3YTU2NjdlNmNjNGI3ZGU2Ni5iaW5kUG9wdXAocG9wdXBfOTU4NDljOTA0NDcxNGIwNmFlODFjN2U4MmY0ZTkyMWEpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTQzNDUwYmUzNWQ2NDY1MGI3ZjczYmQ2MWVhNDI0YmUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjkyMTE0NjQ3MzU5LC0xMjIuNDAwODM0MjgzMDMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9mMTQ5MzNlODY1ZTQ0NmFkYjQyNDAxYjMwZmEzMzk5NSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81OThiYzIxNGQyMzU0MmQ4YWU3MjMxMTI1MzFiZTkwOCA9ICQoJzxkaXYgaWQ9Imh0bWxfNTk4YmMyMTRkMjM1NDJkOGFlNzIzMTEyNTMxYmU5MDgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9mMTQ5MzNlODY1ZTQ0NmFkYjQyNDAxYjMwZmEzMzk5NS5zZXRDb250ZW50KGh0bWxfNTk4YmMyMTRkMjM1NDJkOGFlNzIzMTEyNTMxYmU5MDgpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl9lNDM0NTBiZTM1ZDY0NjUwYjdmNzNiZDYxZWE0MjRiZS5iaW5kUG9wdXAocG9wdXBfZjE0OTMzZTg2NWU0NDZhZGI0MjQwMWIzMGZhMzM5OTUpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfZTJjZmY4ZDA1ZjM2NDI0YTkzYzRiNGVjYWQ0NWI3NTYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODgwMDY1MzI0MzkyMDUsLTEyMi4zOTk4MDIxNDU3OTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzA5ZWIwZDdhNzZkZjQyNTQ4NzYxODdiYzUzYTlhZjMyID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzE5YzdhOGQ3YWE4YTQ0ZTg4NDkyMWRlMzkzOWJlNjRkID0gJCgnPGRpdiBpZD0iaHRtbF8xOWM3YThkN2FhOGE0NGU4ODQ5MjFkZTM5MzliZTY0ZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDllYjBkN2E3NmRmNDI1NDg3NjE4N2JjNTNhOWFmMzIuc2V0Q29udGVudChodG1sXzE5YzdhOGQ3YWE4YTQ0ZTg4NDkyMWRlMzkzOWJlNjRkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZTJjZmY4ZDA1ZjM2NDI0YTkzYzRiNGVjYWQ0NWI3NTYuYmluZFBvcHVwKHBvcHVwXzA5ZWIwZDdhNzZkZjQyNTQ4NzYxODdiYzUzYTlhZjMyKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzRlNmEwNjEwN2VlNDRlOGY5MzRmMGU2MThjOTUzN2JkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JhNjE2MDM2MDVlMjQwZTE4ZDI4NDFiZWE2MTBjMTJmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzgwOWYzMjkwYjc3NzQyZTQ4NTNiNTUyNzIxYWQ1MmVhID0gJCgnPGRpdiBpZD0iaHRtbF84MDlmMzI5MGI3Nzc0MmU0ODUzYjU1MjcyMWFkNTJlYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+U0VDT05EQVJZIENPREVTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9iYTYxNjAzNjA1ZTI0MGUxOGQyODQxYmVhNjEwYzEyZi5zZXRDb250ZW50KGh0bWxfODA5ZjMyOTBiNzc3NDJlNDg1M2I1NTI3MjFhZDUyZWEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80ZTZhMDYxMDdlZTQ0ZThmOTM0ZjBlNjE4Yzk1MzdiZC5iaW5kUG9wdXAocG9wdXBfYmE2MTYwMzYwNWUyNDBlMThkMjg0MWJlYTYxMGMxMmYpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMTUxNWMwY2UzYzM1NDFhMTk3YmU4ZjdiZmQxOWZmMWQgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MjM5NzQ4MjQxNjA5LC0xMjIuMzk0OTI4NDc1OF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMzA3MDgyYTk4Mjc3NDI2M2E0ZjU4NTVhNTE5ZWQ5YTcgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMzg4MDQ2YzY3ZWZhNDlkZWE3ZWNlZDE3ODNiMmUzZDEgPSAkKCc8ZGl2IGlkPSJodG1sXzM4ODA0NmM2N2VmYTQ5ZGVhN2VjZWQxNzgzYjJlM2QxIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5TVVNQSUNJT1VTIE9DQzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMzA3MDgyYTk4Mjc3NDI2M2E0ZjU4NTVhNTE5ZWQ5YTcuc2V0Q29udGVudChodG1sXzM4ODA0NmM2N2VmYTQ5ZGVhN2VjZWQxNzgzYjJlM2QxKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMTUxNWMwY2UzYzM1NDFhMTk3YmU4ZjdiZmQxOWZmMWQuYmluZFBvcHVwKHBvcHVwXzMwNzA4MmE5ODI3NzQyNjNhNGY1ODU1YTUxOWVkOWE3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzNjNDI2OWFiZTdlZjRjMTZiMzA2NzU5ZGZhMjM2YjNlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzIzOTc0ODI0MTYwOSwtMTIyLjM5NDkyODQ3NThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzliMjM4MjY1OTNlOTQ3YjQ5NmNkNGVmOTE5OTI0ZmRiID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2U4MGU0ZmM5Y2M5MTRhOTFhNWM5M2UzY2VhMzJjZWMyID0gJCgnPGRpdiBpZD0iaHRtbF9lODBlNGZjOWNjOTE0YTkxYTVjOTNlM2NlYTMyY2VjMiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzliMjM4MjY1OTNlOTQ3YjQ5NmNkNGVmOTE5OTI0ZmRiLnNldENvbnRlbnQoaHRtbF9lODBlNGZjOWNjOTE0YTkxYTVjOTNlM2NlYTMyY2VjMik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzNjNDI2OWFiZTdlZjRjMTZiMzA2NzU5ZGZhMjM2YjNlLmJpbmRQb3B1cChwb3B1cF85YjIzODI2NTkzZTk0N2I0OTZjZDRlZjkxOTkyNGZkYik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80MGM1OGQ5YzBkNDE0M2U3OWNiZmZlMzllMmVkZDQwOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4ODMyMzU0NDk5MDQsLTEyMi40MTE4NTcwMzI1NF0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfZDlmMTIxOTBlMTkxNDAyNWFiMjI3MjQ1OTE1OWNiN2YgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMGZkMjRlMGU0NzkwNDk0NGFiOTk4ZGIwYWRiN2NmM2MgPSAkKCc8ZGl2IGlkPSJodG1sXzBmZDI0ZTBlNDc5MDQ5NDRhYjk5OGRiMGFkYjdjZjNjIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5MQVJDRU5ZL1RIRUZUPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9kOWYxMjE5MGUxOTE0MDI1YWIyMjcyNDU5MTU5Y2I3Zi5zZXRDb250ZW50KGh0bWxfMGZkMjRlMGU0NzkwNDk0NGFiOTk4ZGIwYWRiN2NmM2MpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80MGM1OGQ5YzBkNDE0M2U3OWNiZmZlMzllMmVkZDQwOC5iaW5kUG9wdXAocG9wdXBfZDlmMTIxOTBlMTkxNDAyNWFiMjI3MjQ1OTE1OWNiN2YpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNjJjNGY3MTNkNDQyNDM1NzgwODM5ZGI4MDdkNjg3ZTIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NTU5OTc3MzM5ODU2LC0xMjIuNDA5NDM1NjE3MTA2XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lNjg3YmY4MzRmNGY0ODcwYTExMzc5YTc1MGQ3YzMxMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF83MGI0ZWYxODE0ZTY0MmI1YTkzMTgxYzhjNzk5MjRiZiA9ICQoJzxkaXYgaWQ9Imh0bWxfNzBiNGVmMTgxNGU2NDJiNWE5MzE4MWM4Yzc5OTI0YmYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk9USEVSIE9GRkVOU0VTPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9lNjg3YmY4MzRmNGY0ODcwYTExMzc5YTc1MGQ3YzMxMi5zZXRDb250ZW50KGh0bWxfNzBiNGVmMTgxNGU2NDJiNWE5MzE4MWM4Yzc5OTI0YmYpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl82MmM0ZjcxM2Q0NDI0MzU3ODA4MzlkYjgwN2Q2ODdlMi5iaW5kUG9wdXAocG9wdXBfZTY4N2JmODM0ZjRmNDg3MGExMTM3OWE3NTBkN2MzMTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNDU1ZTg5ZmE1YmE5NGUzMDk4YmUyMzUwMmQ0NjMzZWIgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43ODcwNzk4MTQ0NDQzLC0xMjIuNDI1ODgzMzU4MTQ4XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8wNmE0NWUxMDg3OWM0Njc3YTA4NTNiNDI0MDAxMzg0NiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9iZDU2YzkwMmFiYTE0ZTJlYjljMzlhNWZmMzQzODUzZiA9ICQoJzxkaXYgaWQ9Imh0bWxfYmQ1NmM5MDJhYmExNGUyZWI5YzM5YTVmZjM0Mzg1M2YiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPk5PTi1DUklNSU5BTDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfMDZhNDVlMTA4NzljNDY3N2EwODUzYjQyNDAwMTM4NDYuc2V0Q29udGVudChodG1sX2JkNTZjOTAyYWJhMTRlMmViOWMzOWE1ZmYzNDM4NTNmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNDU1ZTg5ZmE1YmE5NGUzMDk4YmUyMzUwMmQ0NjMzZWIuYmluZFBvcHVwKHBvcHVwXzA2YTQ1ZTEwODc5YzQ2NzdhMDg1M2I0MjQwMDEzODQ2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzQxMDQ1ODIzODA0YzRkYmE5ODlkZGY3MDUyOGNjM2Y2ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM2MDM3NDQ2Njg2MjA0LC0xMjIuNDE1MTI2NTQzMDAxMDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzQ0MjIxM2NhOGQyNTQxODM4ZjFmOGIyZmVlMGZiZjBjID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzA5ZTA0NTY4OTRiNTQxNWNiYmQwNGNiZTk2NGNhNTA0ID0gJCgnPGRpdiBpZD0iaHRtbF8wOWUwNDU2ODk0YjU0MTVjYmJkMDRjYmU5NjRjYTUwNCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+Tk9OLUNSSU1JTkFMPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF80NDIyMTNjYThkMjU0MTgzOGYxZjhiMmZlZTBmYmYwYy5zZXRDb250ZW50KGh0bWxfMDllMDQ1Njg5NGI1NDE1Y2JiZDA0Y2JlOTY0Y2E1MDQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl80MTA0NTgyMzgwNGM0ZGJhOTg5ZGRmNzA1MjhjYzNmNi5iaW5kUG9wdXAocG9wdXBfNDQyMjEzY2E4ZDI1NDE4MzhmMWY4YjJmZWUwZmJmMGMpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfMWIyYzNkNDM0MjY4NGExNTkzMjZjZGMwYzMxZDUzZjYgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43MTI3Njc4ODQ4MjEsLTEyMi40MzE5MjgwMTEwODldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2UxODRiZDZlOGVmMjQ2OTY5NjljMGFkNGYzMTNiNzAxID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJiODljOTJiNTcyNzQ3Mjk5MDVkNThkNDJkNmVkNTQxID0gJCgnPGRpdiBpZD0iaHRtbF8yYjg5YzkyYjU3Mjc0NzI5OTA1ZDU4ZDQyZDZlZDU0MSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2UxODRiZDZlOGVmMjQ2OTY5NjljMGFkNGYzMTNiNzAxLnNldENvbnRlbnQoaHRtbF8yYjg5YzkyYjU3Mjc0NzI5OTA1ZDU4ZDQyZDZlZDU0MSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzFiMmMzZDQzNDI2ODRhMTU5MzI2Y2RjMGMzMWQ1M2Y2LmJpbmRQb3B1cChwb3B1cF9lMTg0YmQ2ZThlZjI0Njk2OTY5YzBhZDRmMzEzYjcwMSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iZGU3Zjk0ZTk3Njc0N2JlYmE2NmViNjFjOTQ0NDMyMiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4OTU3MTAyNTU4NjMsLTEyMi40MDIxNjM3MTM2MThdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzZjNzE1ODM4NmIyZDQwNzI4MjA4YmRmMjVkMDhkZGMwID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzYwZmMwNmQxMThhYjQ5MGQ5MzBjN2Y3NjBkMTEyNjQ5ID0gJCgnPGRpdiBpZD0iaHRtbF82MGZjMDZkMTE4YWI0OTBkOTMwYzdmNzYwZDExMjY0OSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+RFJVTktFTk5FU1M8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzZjNzE1ODM4NmIyZDQwNzI4MjA4YmRmMjVkMDhkZGMwLnNldENvbnRlbnQoaHRtbF82MGZjMDZkMTE4YWI0OTBkOTMwYzdmNzYwZDExMjY0OSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2JkZTdmOTRlOTc2NzQ3YmViYTY2ZWI2MWM5NDQ0MzIyLmJpbmRQb3B1cChwb3B1cF82YzcxNTgzODZiMmQ0MDcyODIwOGJkZjI1ZDA4ZGRjMCk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9lYzcyZTMyMDI2Zjk0MjMxODhjMTI1M2I3NTk2NWJlMyA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3LjczMDc0MjkxNjk1NTksLTEyMi40MjkzMDY3MjgzNzZdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzkzMTU3NmI2OWE3NDRlMGRiOTYwYTRlYTUwNDE0MDRhID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJlMGY4Yzg2NTcxYjQwNGQ5NjVjOGEwMmRlZGQ4M2NjID0gJCgnPGRpdiBpZD0iaHRtbF8yZTBmOGM4NjU3MWI0MDRkOTY1YzhhMDJkZWRkODNjYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzkzMTU3NmI2OWE3NDRlMGRiOTYwYTRlYTUwNDE0MDRhLnNldENvbnRlbnQoaHRtbF8yZTBmOGM4NjU3MWI0MDRkOTY1YzhhMDJkZWRkODNjYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2VjNzJlMzIwMjZmOTQyMzE4OGMxMjUzYjc1OTY1YmUzLmJpbmRQb3B1cChwb3B1cF85MzE1NzZiNjlhNzQ0ZTBkYjk2MGE0ZWE1MDQxNDA0YSk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9mOGFmZWM3Mzk2ZDU0MzM0YmU5ZWNhOGU5MzQzYWY4NCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4MzgzNjU1NjUzNDc5NCwtMTIyLjQxMzc5MDk3Mjc4MDk5XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hZDM4ZDRiNWRkYjM0NTMyYjYyODA3YTQzMGQ4YmMwOCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xYjJlYWRmODNiNGE0ZjVkYmNmMGM0MTdmODRjYmEyMiA9ICQoJzxkaXYgaWQ9Imh0bWxfMWIyZWFkZjgzYjRhNGY1ZGJjZjBjNDE3Zjg0Y2JhMjIiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYWQzOGQ0YjVkZGIzNDUzMmI2MjgwN2E0MzBkOGJjMDguc2V0Q29udGVudChodG1sXzFiMmVhZGY4M2I0YTRmNWRiY2YwYzQxN2Y4NGNiYTIyKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfZjhhZmVjNzM5NmQ1NDMzNGJlOWVjYThlOTM0M2FmODQuYmluZFBvcHVwKHBvcHVwX2FkMzhkNGI1ZGRiMzQ1MzJiNjI4MDdhNDMwZDhiYzA4KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzIwZTkyNDM3MDY1ZTQ4YjNhNGQzMjZjOTYwZWVmNzE1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzMwNzQyOTE2OTU1OSwtMTIyLjQyOTMwNjcyODM3Nl0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOWYzOGQxNDJlMWMwNDkxNmFjMWE1YWUzODM4YmNiMTAgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfM2IwNWNjOWJlYzI5NDkxYWIzNTk4YzdlOTZlNmY2YTEgPSAkKCc8ZGl2IGlkPSJodG1sXzNiMDVjYzliZWMyOTQ5MWFiMzU5OGM3ZTk2ZTZmNmExIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOWYzOGQxNDJlMWMwNDkxNmFjMWE1YWUzODM4YmNiMTAuc2V0Q29udGVudChodG1sXzNiMDVjYzliZWMyOTQ5MWFiMzU5OGM3ZTk2ZTZmNmExKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMjBlOTI0MzcwNjVlNDhiM2E0ZDMyNmM5NjBlZWY3MTUuYmluZFBvcHVwKHBvcHVwXzlmMzhkMTQyZTFjMDQ5MTZhYzFhNWFlMzgzOGJjYjEwKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzkwNjY0NjNhZWZiMTQwYTNiMTkwZTQ2MGQzYmE3YTExID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF80Y2RmZjliYjJkMmE0NDNkODhiZmE1NmE4NjVjNzUwZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF81ZmY4ZDNlZTA5OWM0ZDAwOTRhOWYwNGI5MDI2NDFkZCA9ICQoJzxkaXYgaWQ9Imh0bWxfNWZmOGQzZWUwOTljNGQwMDk0YTlmMDRiOTAyNjQxZGQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNFQ09OREFSWSBDT0RFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfNGNkZmY5YmIyZDJhNDQzZDg4YmZhNTZhODY1Yzc1MGQuc2V0Q29udGVudChodG1sXzVmZjhkM2VlMDk5YzRkMDA5NGE5ZjA0YjkwMjY0MWRkKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfOTA2NjQ2M2FlZmIxNDBhM2IxOTBlNDYwZDNiYTdhMTEuYmluZFBvcHVwKHBvcHVwXzRjZGZmOWJiMmQyYTQ0M2Q4OGJmYTU2YTg2NWM3NTBkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzFjZTdkYzI5ODhjMTQxNzA5YWIyNzI0NzVhNGFiNjJlID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM3MzYyMzYwNTIxMjk2LC0xMjIuNDIyMDY3MTg0OTM3XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9lNDRkZDYzYTFjMjc0OWJhYjY4Yzc3OTVjMjk0ZTQ5ZCA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF80MzQzNjYxOWNkZDI0MGZlOWY5YjRlOTQ0MjA5NDViNiA9ICQoJzxkaXYgaWQ9Imh0bWxfNDM0MzY2MTljZGQyNDBmZTlmOWI0ZTk0NDIwOTQ1YjYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlZBTkRBTElTTTwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfZTQ0ZGQ2M2ExYzI3NDliYWI2OGM3Nzk1YzI5NGU0OWQuc2V0Q29udGVudChodG1sXzQzNDM2NjE5Y2RkMjQwZmU5ZjliNGU5NDQyMDk0NWI2KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMWNlN2RjMjk4OGMxNDE3MDlhYjI3MjQ3NWE0YWI2MmUuYmluZFBvcHVwKHBvcHVwX2U0NGRkNjNhMWMyNzQ5YmFiNjhjNzc5NWMyOTRlNDlkKTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzhhOGZmYTA0NjMwZTQ5ZDdhZGFjOTcyNjJhODAzOGEzID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzg1OTk4ODMyMzc5Nzk2LC0xMjIuNDExNzQ3MzcxOTI0XSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF83YWMzNTY0MDI3ZjE0YTg5YTAwZmQ5Mzc0N2VmMGE1MiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF8xNjY4NDUxY2QwNjE0NmUwYTViMTg0YjI2NTcwZTdjNCA9ICQoJzxkaXYgaWQ9Imh0bWxfMTY2ODQ1MWNkMDYxNDZlMGE1YjE4NGIyNjU3MGU3YzQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlNVU1BJQ0lPVVMgT0NDPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF83YWMzNTY0MDI3ZjE0YTg5YTAwZmQ5Mzc0N2VmMGE1Mi5zZXRDb250ZW50KGh0bWxfMTY2ODQ1MWNkMDYxNDZlMGE1YjE4NGIyNjU3MGU3YzQpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl84YThmZmEwNDYzMGU0OWQ3YWRhYzk3MjYyYTgwMzhhMy5iaW5kUG9wdXAocG9wdXBfN2FjMzU2NDAyN2YxNGE4OWEwMGZkOTM3NDdlZjBhNTIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfNTUxMDkxNmUzMzQ3NDM3N2FmZGJjZDkzNDk4ODNkMTUgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NjMzNzU4MDU4MDU5LC0xMjIuNDIwNDM0NzI0NTUyOTldLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzcwOGViYWRkZDAzZTRiYjk5YzM2Y2IzZDlmNTZlNjA2ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzBiNDJiYWY0ZWNmYjQ5Y2NhYWQ4Y2E0M2ZmYmZlZmE4ID0gJCgnPGRpdiBpZD0iaHRtbF8wYjQyYmFmNGVjZmI0OWNjYWFkOGNhNDNmZmJmZWZhOCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzcwOGViYWRkZDAzZTRiYjk5YzM2Y2IzZDlmNTZlNjA2LnNldENvbnRlbnQoaHRtbF8wYjQyYmFmNGVjZmI0OWNjYWFkOGNhNDNmZmJmZWZhOCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzU1MTA5MTZlMzM0NzQzNzdhZmRiY2Q5MzQ5ODgzZDE1LmJpbmRQb3B1cChwb3B1cF83MDhlYmFkZGQwM2U0YmI5OWMzNmNiM2Q5ZjU2ZTYwNik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9iNTZlNjgzODdhZDM0OGJjYmQ0NWUwNDMzOWM4ZTg5OSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc4NTAyMjY2MjI3ODYsLTEyMi40MTE5ODc2NDM1OTUwMV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfMjVmZDFkMDU5ODVmNDY3NjgzM2ZmZjVlZjliNTUyOTYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNDQzOTdmNGI1NDE1NGRmM2I5OTE3ZjRhY2ZhZGIwM2QgPSAkKCc8ZGl2IGlkPSJodG1sXzQ0Mzk3ZjRiNTQxNTRkZjNiOTkxN2Y0YWNmYWRiMDNkIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzI1ZmQxZDA1OTg1ZjQ2NzY4MzNmZmY1ZWY5YjU1Mjk2LnNldENvbnRlbnQoaHRtbF80NDM5N2Y0YjU0MTU0ZGYzYjk5MTdmNGFjZmFkYjAzZCk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2I1NmU2ODM4N2FkMzQ4YmNiZDQ1ZTA0MzM5YzhlODk5LmJpbmRQb3B1cChwb3B1cF8yNWZkMWQwNTk4NWY0Njc2ODMzZmZmNWVmOWI1NTI5Nik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl80ZmNmOTEzZTNlMzQ0YWRiODQ1MTVjOGM4YTk5MDZiMSA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc3NDYyMDY0OTEwNjQ5NSwtMTIyLjUwMDM4MDQyNzkxNV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfOTFiNzk3YTg4NTdjNDFlOWJmNTAwOWE4MTFlZDI4MzYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjg5MTU0NTUyNmUwNDYxNmIxMWQ0YjgyMzk3MDdhNjkgPSAkKCc8ZGl2IGlkPSJodG1sXzI4OTE1NDU1MjZlMDQ2MTZiMTFkNGI4MjM5NzA3YTY5IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5PVEhFUiBPRkZFTlNFUzwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfOTFiNzk3YTg4NTdjNDFlOWJmNTAwOWE4MTFlZDI4MzYuc2V0Q29udGVudChodG1sXzI4OTE1NDU1MjZlMDQ2MTZiMTFkNGI4MjM5NzA3YTY5KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfNGZjZjkxM2UzZTM0NGFkYjg0NTE1YzhjOGE5OTA2YjEuYmluZFBvcHVwKHBvcHVwXzkxYjc5N2E4ODU3YzQxZTliZjUwMDlhODExZWQyODM2KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzU5YjU3NzM3ODI0ZDRkNWQ5NDI0MGMyYzQ4MDlhMTZkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzc1MTkxODI2NzIxNywtMTIyLjQ2NjU1ODc4MDY4M10sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYTA4NGQ3NTBmMzM3NDJhZTg0ZTIwZGI1YjU0OWRmMjIgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfMjJhNzdiYTAwMzFkNGU1OGE5MzU2Y2Y4NGJmOWE1MmIgPSAkKCc8ZGl2IGlkPSJodG1sXzIyYTc3YmEwMDMxZDRlNThhOTM1NmNmODRiZjlhNTJiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5ST0JCRVJZPC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF9hMDg0ZDc1MGYzMzc0MmFlODRlMjBkYjViNTQ5ZGYyMi5zZXRDb250ZW50KGh0bWxfMjJhNzdiYTAwMzFkNGU1OGE5MzU2Y2Y4NGJmOWE1MmIpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIG1hcmtlcl81OWI1NzczNzgyNGQ0ZDVkOTQyNDBjMmM0ODA5YTE2ZC5iaW5kUG9wdXAocG9wdXBfYTA4NGQ3NTBmMzM3NDJhZTg0ZTIwZGI1YjU0OWRmMjIpOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKCiAgICAgICAgICAgIHZhciBtYXJrZXJfYzE1NjMyMmRjYzExNDZjNjkzYTVjMTI2ZjkwOTFjZTkgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFszNy43NDkwODQxNzI5MDI4LC0xMjIuNDg2OTI1OTYwMTE0MDFdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwXzUxZDI3M2QwYTBhODQwMWNiNDlkZDA2MTU1OGMyMzhmID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzNkMGE1YjQ1NTcxZDQzYjU5NzdmZWM0MjMwNWJjNGM1ID0gJCgnPGRpdiBpZD0iaHRtbF8zZDBhNWI0NTU3MWQ0M2I1OTc3ZmVjNDIzMDViYzRjNSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+T1RIRVIgT0ZGRU5TRVM8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwXzUxZDI3M2QwYTBhODQwMWNiNDlkZDA2MTU1OGMyMzhmLnNldENvbnRlbnQoaHRtbF8zZDBhNWI0NTU3MWQ0M2I1OTc3ZmVjNDIzMDViYzRjNSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2MxNTYzMjJkY2MxMTQ2YzY5M2E1YzEyNmY5MDkxY2U5LmJpbmRQb3B1cChwb3B1cF81MWQyNzNkMGEwYTg0MDFjYjQ5ZGQwNjE1NThjMjM4Zik7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9hYzY2MDg0Nzg2MTA0ZjFhOTg5OWNjNDVjOTlkMjI3MCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2ODUzNjAxMjM1ODMsLTEyMi40MTU2MTYzMzgzMTk5OV0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogbmV3IEwuSWNvbi5EZWZhdWx0KCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuYWRkVG8obWFya2VyX2NsdXN0ZXJfMzNhNWMxZjA4ODE1NGI3NTk1N2IxNjEzMTFlZjQ2YmIpOwogICAgICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYmY5ZTJiYTQzMjA3NDA3Mjk2NTYzMzYzZTI1YjY2YzMgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCd9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfZmI5MzdjODhjZjhlNDNkYjk3M2JmMjAwM2UxZjcxMWEgPSAkKCc8ZGl2IGlkPSJodG1sX2ZiOTM3Yzg4Y2Y4ZTQzZGI5NzNiZjIwMDNlMWY3MTFhIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5OT04tQ1JJTUlOQUw8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2JmOWUyYmE0MzIwNzQwNzI5NjU2MzM2M2UyNWI2NmMzLnNldENvbnRlbnQoaHRtbF9mYjkzN2M4OGNmOGU0M2RiOTczYmYyMDAzZTFmNzExYSk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2FjNjYwODQ3ODYxMDRmMWE5ODk5Y2M0NWM5OWQyMjcwLmJpbmRQb3B1cChwb3B1cF9iZjllMmJhNDMyMDc0MDcyOTY1NjMzNjNlMjViNjZjMyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl9jMWEzOTI4MTc0M2Q0OTkyODJhOGU5NDk1YTRjZjczNiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2U4NjkzODM1MjY5YTQwZjVhNzY2YzJjYTQ5ZDY5YjA3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sX2IxNzY3OTllYWEwMTQ4Nzg5NzBmZDE5ODI1ZjUyZWViID0gJCgnPGRpdiBpZD0iaHRtbF9iMTc2Nzk5ZWFhMDE0ODc4OTcwZmQxOTgyNWY1MmVlYiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+QlVSR0xBUlk8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2U4NjkzODM1MjY5YTQwZjVhNzY2YzJjYTQ5ZDY5YjA3LnNldENvbnRlbnQoaHRtbF9iMTc2Nzk5ZWFhMDE0ODc4OTcwZmQxOTgyNWY1MmVlYik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyX2MxYTM5MjgxNzQzZDQ5OTI4MmE4ZTk0OTVhNGNmNzM2LmJpbmRQb3B1cChwb3B1cF9lODY5MzgzNTI2OWE0MGY1YTc2NmMyY2E0OWQ2OWIwNyk7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAoKICAgICAgICAgICAgdmFyIG1hcmtlcl8yZTJkOWJiYjhkOGQ0ZGExYjYyZWNjYWUyNDg4NzliOCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM3Ljc2NDQyOTc3MTQwNzQsLTEyMi40NDk3NTE2NTI1NjNdLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGljb246IG5ldyBMLkljb24uRGVmYXVsdCgpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgLmFkZFRvKG1hcmtlcl9jbHVzdGVyXzMzYTVjMWYwODgxNTRiNzU5NTdiMTYxMzExZWY0NmJiKTsKICAgICAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2JiMDFiNTY2ODJkNzRkYTdiOGRlMDEwNTIyZTJkZjM3ID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzJlOGJjMjk1MmNmODQ5MzBiZmViNmYxZTlmZTAwZDNmID0gJCgnPGRpdiBpZD0iaHRtbF8yZThiYzI5NTJjZjg0OTMwYmZlYjZmMWU5ZmUwMGQzZiIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+TEFSQ0VOWS9USEVGVDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYmIwMWI1NjY4MmQ3NGRhN2I4ZGUwMTA1MjJlMmRmMzcuc2V0Q29udGVudChodG1sXzJlOGJjMjk1MmNmODQ5MzBiZmViNmYxZTlmZTAwZDNmKTsKICAgICAgICAgICAgCgogICAgICAgICAgICBtYXJrZXJfMmUyZDliYmI4ZDhkNGRhMWI2MmVjY2FlMjQ4ODc5YjguYmluZFBvcHVwKHBvcHVwX2JiMDFiNTY2ODJkNzRkYTdiOGRlMDEwNTIyZTJkZjM3KTsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCgogICAgICAgICAgICB2YXIgbWFya2VyXzExM2IxM2Q5ZDU5YjQzYmQ5NmExYTQ2ODE4NDg0OTI5ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzcuNzM1MjY4MTQ2OTA4Mzk2LC0xMjIuNDcyNzE1NzU5NjMxXSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpY29uOiBuZXcgTC5JY29uLkRlZmF1bHQoKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIC5hZGRUbyhtYXJrZXJfY2x1c3Rlcl8zM2E1YzFmMDg4MTU0Yjc1OTU3YjE2MTMxMWVmNDZiYik7CiAgICAgICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF9hMzc3OTRlODAzOTQ0ZGMxYTliNjJiM2U1ZjViYzZkMiA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJ30pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9lMzA5ZTQ3MzYyY2Y0NWRkODk2ZjMxYWQwNmEwN2JmYyA9ICQoJzxkaXYgaWQ9Imh0bWxfZTMwOWU0NzM2MmNmNDVkZDg5NmYzMWFkMDZhMDdiZmMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPkxBUkNFTlkvVEhFRlQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2EzNzc5NGU4MDM5NDRkYzFhOWI2MmIzZTVmNWJjNmQyLnNldENvbnRlbnQoaHRtbF9lMzA5ZTQ3MzYyY2Y0NWRkODk2ZjMxYWQwNmEwN2JmYyk7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgbWFya2VyXzExM2IxM2Q5ZDU5YjQzYmQ5NmExYTQ2ODE4NDg0OTI5LmJpbmRQb3B1cChwb3B1cF9hMzc3OTRlODAzOTQ0ZGMxYTliNjJiM2U1ZjViYzZkMik7CgogICAgICAgICAgICAKICAgICAgICAKPC9zY3JpcHQ+ onload=\"this.contentDocument.open();this.contentDocument.write(atob(this.getAttribute('data-html')));this.contentDocument.close();\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x7fb3ef4425f8>"
]
},
"execution_count": 22,
"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,
"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.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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/coursera/Images/2000_census_population_density_map_by_state.png\" width = 600> \n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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",
"```\n",
"!conda install -c anaconda xlrd --yes\n",
"```\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Download the dataset and read it into a _pandas_ dataframe:\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"button": false,
"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://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork/Data%20Files/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,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items in our dataset.\n"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"button": false,
"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": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_can.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's find out how many entries there are in our dataset.\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"button": false,
"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,
"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.\n"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"button": false,
"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,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"Let's take a look at the first five items of our cleaned dataframe.\n"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"button": false,
"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": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_can.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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**.\n"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"button": false,
"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://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DV0101EN-SkillsNetwork/Data%20Files/world_countries.json\n",
" \n",
"print('GeoJSON file downloaded!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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.\n"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"button": false,
"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)"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"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.\n"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"button": false,
"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%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe src=\"about:blank\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" data-html=PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfN2VkMDc0MGU3NTEyNDA4OGFiZTlmOTljMGU3YzQxNDcgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2QzLzMuNS41L2QzLm1pbi5qcyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvbGl1bS1tYXAiIGlkPSJtYXBfN2VkMDc0MGU3NTEyNDA4OGFiZTlmOTljMGU3YzQxNDciID48L2Rpdj4KICAgICAgICAKPC9ib2R5Pgo8c2NyaXB0PiAgICAKICAgIAoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgYm91bmRzID0gbnVsbDsKICAgICAgICAgICAgCgogICAgICAgICAgICB2YXIgbWFwXzdlZDA3NDBlNzUxMjQwODhhYmU5Zjk5YzBlN2M0MTQ3ID0gTC5tYXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFwXzdlZDA3NDBlNzUxMjQwODhhYmU5Zjk5YzBlN2M0MTQ3JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjZW50ZXI6IFswLDBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfYjk4YTAwOTE4YzU3NGM2YmIxMTEzZGJlZWU1ZTNlMDggPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfN2VkMDc0MGU3NTEyNDA4OGFiZTlmOTljMGU3YzQxNDcpOwogICAgICAgIAogICAgCgogICAgICAgICAgICAKCiAgICAgICAgICAgICAgICB2YXIgZ2VvX2pzb25fMmVlMTkxODJjOGFiNDBjYWJhZmI5NzJkYWJhYmZlMTggPSBMLmdlb0pzb24oCiAgICAgICAgICAgICAgICAgICAgeyJmZWF0dXJlcyI6IFt7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzYxLjIxMDgxNywgMzUuNjUwMDcyXSwgWzYyLjIzMDY1MSwgMzUuMjcwNjY0XSwgWzYyLjk4NDY2MiwgMzUuNDA0MDQxXSwgWzYzLjE5MzUzOCwgMzUuODU3MTY2XSwgWzYzLjk4Mjg5NiwgMzYuMDA3OTU3XSwgWzY0LjU0NjQ3OSwgMzYuMzEyMDczXSwgWzY0Ljc0NjEwNSwgMzcuMTExODE4XSwgWzY1LjU4ODk0OCwgMzcuMzA1MjE3XSwgWzY1Ljc0NTYzMSwgMzcuNjYxMTY0XSwgWzY2LjIxNzM4NSwgMzcuMzkzNzldLCBbNjYuNTE4NjA3LCAzNy4zNjI3ODRdLCBbNjcuMDc1NzgyLCAzNy4zNTYxNDRdLCBbNjcuODMsIDM3LjE0NDk5NF0sIFs2OC4xMzU1NjIsIDM3LjAyMzExNV0sIFs2OC44NTk0NDYsIDM3LjM0NDMzNl0sIFs2OS4xOTYyNzMsIDM3LjE1MTE0NF0sIFs2OS41MTg3ODUsIDM3LjYwODk5N10sIFs3MC4xMTY1NzgsIDM3LjU4ODIyM10sIFs3MC4yNzA1NzQsIDM3LjczNTE2NV0sIFs3MC4zNzYzMDQsIDM4LjEzODM5Nl0sIFs3MC44MDY4MjEsIDM4LjQ4NjI4Ml0sIFs3MS4zNDgxMzEsIDM4LjI1ODkwNV0sIFs3MS4yMzk0MDQsIDM3Ljk1MzI2NV0sIFs3MS41NDE5MTgsIDM3LjkwNTc3NF0sIFs3MS40NDg2OTMsIDM3LjA2NTY0NV0sIFs3MS44NDQ2MzgsIDM2LjczODE3MV0sIFs3Mi4xOTMwNDEsIDM2Ljk0ODI4OF0sIFs3Mi42MzY4OSwgMzcuMDQ3NTU4XSwgWzczLjI2MDA1NiwgMzcuNDk1MjU3XSwgWzczLjk0ODY5NiwgMzcuNDIxNTY2XSwgWzc0Ljk4MDAwMiwgMzcuNDE5OTldLCBbNzUuMTU4MDI4LCAzNy4xMzMwMzFdLCBbNzQuNTc1ODkzLCAzNy4wMjA4NDFdLCBbNzQuMDY3NTUyLCAzNi44MzYxNzZdLCBbNzIuOTIwMDI1LCAzNi43MjAwMDddLCBbNzEuODQ2MjkyLCAzNi41MDk5NDJdLCBbNzEuMjYyMzQ4LCAzNi4wNzQzODhdLCBbNzEuNDk4NzY4LCAzNS42NTA1NjNdLCBbNzEuNjEzMDc2LCAzNS4xNTMyMDNdLCBbNzEuMTE1MDE5LCAzNC43MzMxMjZdLCBbNzEuMTU2NzczLCAzNC4zNDg5MTFdLCBbNzAuODgxODAzLCAzMy45ODg4NTZdLCBbNjkuOTMwNTQzLCAzNC4wMjAxMl0sIFs3MC4zMjM1OTQsIDMzLjM1ODUzM10sIFs2OS42ODcxNDcsIDMzLjEwNTQ5OV0sIFs2OS4yNjI1MjIsIDMyLjUwMTk0NF0sIFs2OS4zMTc3NjQsIDMxLjkwMTQxMl0sIFs2OC45MjY2NzcsIDMxLjYyMDE4OV0sIFs2OC41NTY5MzIsIDMxLjcxMzMxXSwgWzY3Ljc5MjY4OSwgMzEuNTgyOTNdLCBbNjcuNjgzMzk0LCAzMS4zMDMxNTRdLCBbNjYuOTM4ODkxLCAzMS4zMDQ5MTFdLCBbNjYuMzgxNDU4LCAzMC43Mzg4OTldLCBbNjYuMzQ2NDczLCAyOS44ODc5NDNdLCBbNjUuMDQ2ODYyLCAyOS40NzIxODFdLCBbNjQuMzUwNDE5LCAyOS41NjAwMzFdLCBbNjQuMTQ4MDAyLCAyOS4zNDA4MTldLCBbNjMuNTUwMjYxLCAyOS40NjgzMzFdLCBbNjIuNTQ5ODU3LCAyOS4zMTg1NzJdLCBbNjAuODc0MjQ4LCAyOS44MjkyMzldLCBbNjEuNzgxMjIyLCAzMC43MzU4NV0sIFs2MS42OTkzMTQsIDMxLjM3OTUwNl0sIFs2MC45NDE5NDUsIDMxLjU0ODA3NV0sIFs2MC44NjM2NTUsIDMyLjE4MjkyXSwgWzYwLjUzNjA3OCwgMzIuOTgxMjY5XSwgWzYwLjk2MzcsIDMzLjUyODgzMl0sIFs2MC41Mjg0MywgMzMuNjc2NDQ2XSwgWzYwLjgwMzE5MywgMzQuNDA0MTAyXSwgWzYxLjIxMDgxNywgMzUuNjUwMDcyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJBRkciLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkFmZ2hhbmlzdGFuIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTYuMzI2NTI4LCAtNS44Nzc0N10sIFsxNi41NzMxOCwgLTYuNjIyNjQ1XSwgWzE2Ljg2MDE5MSwgLTcuMjIyMjk4XSwgWzE3LjA4OTk5NiwgLTcuNTQ1Njg5XSwgWzE3LjQ3Mjk3LCAtOC4wNjg1NTFdLCBbMTguMTM0MjIyLCAtNy45ODc2NzhdLCBbMTguNDY0MTc2LCAtNy44NDcwMTRdLCBbMTkuMDE2NzUyLCAtNy45ODgyNDZdLCBbMTkuMTY2NjEzLCAtNy43MzgxODRdLCBbMTkuNDE3NTAyLCAtNy4xNTU0MjldLCBbMjAuMDM3NzIzLCAtNy4xMTYzNjFdLCBbMjAuMDkxNjIyLCAtNi45NDMwOV0sIFsyMC42MDE4MjMsIC02LjkzOTMxOF0sIFsyMC41MTQ3NDgsIC03LjI5OTYwNl0sIFsyMS43MjgxMTEsIC03LjI5MDg3Ml0sIFsyMS43NDY0NTYsIC03LjkyMDA4NV0sIFsyMS45NDkxMzEsIC04LjMwNTkwMV0sIFsyMS44MDE4MDEsIC04LjkwODcwN10sIFsyMS44NzUxODIsIC05LjUyMzcwOF0sIFsyMi4yMDg3NTMsIC05Ljg5NDc5Nl0sIFsyMi4xNTUyNjgsIC0xMS4wODQ4MDFdLCBbMjIuNDAyNzk4LCAtMTAuOTkzMDc1XSwgWzIyLjgzNzM0NSwgLTExLjAxNzYyMl0sIFsyMy40NTY3OTEsIC0xMC44Njc4NjNdLCBbMjMuOTEyMjE1LCAtMTAuOTI2ODI2XSwgWzI0LjAxNzg5NCwgLTExLjIzNzI5OF0sIFsyMy45MDQxNTQsIC0xMS43MjIyODJdLCBbMjQuMDc5OTA1LCAtMTIuMTkxMjk3XSwgWzIzLjkzMDkyMiwgLTEyLjU2NTg0OF0sIFsyNC4wMTYxMzcsIC0xMi45MTEwNDZdLCBbMjEuOTMzODg2LCAtMTIuODk4NDM3XSwgWzIxLjg4Nzg0MywgLTE2LjA4MDMxXSwgWzIyLjU2MjQ3OCwgLTE2Ljg5ODQ1MV0sIFsyMy4yMTUwNDgsIC0xNy41MjMxMTZdLCBbMjEuMzc3MTc2LCAtMTcuOTMwNjM2XSwgWzE4Ljk1NjE4NywgLTE3Ljc4OTA5NV0sIFsxOC4yNjMzMDksIC0xNy4zMDk5NTFdLCBbMTQuMjA5NzA3LCAtMTcuMzUzMTAxXSwgWzE0LjA1ODUwMSwgLTE3LjQyMzM4MV0sIFsxMy40NjIzNjIsIC0xNi45NzEyMTJdLCBbMTIuODE0MDgxLCAtMTYuOTQxMzQzXSwgWzEyLjIxNTQ2MSwgLTE3LjExMTY2OF0sIFsxMS43MzQxOTksIC0xNy4zMDE4ODldLCBbMTEuNjQwMDk2LCAtMTYuNjczMTQyXSwgWzExLjc3ODUzNywgLTE1Ljc5MzgxNl0sIFsxMi4xMjM1ODEsIC0xNC44NzgzMTZdLCBbMTIuMTc1NjE5LCAtMTQuNDQ5MTQ0XSwgWzEyLjUwMDA5NSwgLTEzLjU0NzddLCBbMTIuNzM4NDc5LCAtMTMuMTM3OTA2XSwgWzEzLjMxMjkxNCwgLTEyLjQ4MzYzXSwgWzEzLjYzMzcyMSwgLTEyLjAzODY0NV0sIFsxMy43Mzg3MjgsIC0xMS4yOTc4NjNdLCBbMTMuNjg2Mzc5LCAtMTAuNzMxMDc2XSwgWzEzLjM4NzMyOCwgLTEwLjM3MzU3OF0sIFsxMy4xMjA5ODgsIC05Ljc2Njg5N10sIFsxMi44NzUzNywgLTkuMTY2OTM0XSwgWzEyLjkyOTA2MSwgLTguOTU5MDkxXSwgWzEzLjIzNjQzMywgLTguNTYyNjI5XSwgWzEyLjkzMzA0LCAtNy41OTY1MzldLCBbMTIuNzI4Mjk4LCAtNi45MjcxMjJdLCBbMTIuMjI3MzQ3LCAtNi4yOTQ0NDhdLCBbMTIuMzIyNDMyLCAtNi4xMDAwOTJdLCBbMTIuNzM1MTcxLCAtNS45NjU2ODJdLCBbMTMuMDI0ODY5LCAtNS45ODQzODldLCBbMTMuMzc1NTk3LCAtNS44NjQyNDFdLCBbMTYuMzI2NTI4LCAtNS44Nzc0N11dXSwgW1tbMTIuNDM2Njg4LCAtNS42ODQzMDRdLCBbMTIuMTgyMzM3LCAtNS43ODk5MzFdLCBbMTEuOTE0OTYzLCAtNS4wMzc5ODddLCBbMTIuMzE4NjA4LCAtNC42MDYyM10sIFsxMi42MjA3NiwgLTQuNDM4MDIzXSwgWzEyLjk5NTUxNywgLTQuNzgxMTAzXSwgWzEyLjYzMTYxMiwgLTQuOTkxMjcxXSwgWzEyLjQ2ODAwNCwgLTUuMjQ4MzYyXSwgWzEyLjQzNjY4OCwgLTUuNjg0MzA0XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJBR08iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkFuZ29sYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMjAuNTkwMjQ3LCA0MS44NTU0MDRdLCBbMjAuNDYzMTc1LCA0MS41MTUwODldLCBbMjAuNjA1MTgyLCA0MS4wODYyMjZdLCBbMjEuMDIwMDQsIDQwLjg0MjcyN10sIFsyMC45OTk5OSwgNDAuNTgwMDA0XSwgWzIwLjY3NDk5NywgNDAuNDM1XSwgWzIwLjYxNSwgNDAuMTEwMDA3XSwgWzIwLjE1MDAxNiwgMzkuNjI0OTk4XSwgWzE5Ljk4LCAzOS42OTQ5OTNdLCBbMTkuOTYwMDAyLCAzOS45MTUwMDZdLCBbMTkuNDA2MDgyLCA0MC4yNTA3NzNdLCBbMTkuMzE5MDU5LCA0MC43MjcyM10sIFsxOS40MDM1NSwgNDEuNDA5NTY2XSwgWzE5LjU0MDAyNywgNDEuNzE5OTg2XSwgWzE5LjM3MTc2OSwgNDEuODc3NTQ4XSwgWzE5LjMwNDQ4NiwgNDIuMTk1NzQ1XSwgWzE5LjczODA1MSwgNDIuNjg4MjQ3XSwgWzE5LjgwMTYxMywgNDIuNTAwMDkzXSwgWzIwLjA3MDcsIDQyLjU4ODYzXSwgWzIwLjI4Mzc1NSwgNDIuMzIwMjZdLCBbMjAuNTIyOTUsIDQyLjIxNzg3XSwgWzIwLjU5MDI0NywgNDEuODU1NDA0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJBTEIiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkFsYmFuaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzUxLjU3OTUxOSwgMjQuMjQ1NDk3XSwgWzUxLjc1NzQ0MSwgMjQuMjk0MDczXSwgWzUxLjc5NDM4OSwgMjQuMDE5ODI2XSwgWzUyLjU3NzA4MSwgMjQuMTc3NDM5XSwgWzUzLjQwNDAwNywgMjQuMTUxMzE3XSwgWzU0LjAwODAwMSwgMjQuMTIxNzU4XSwgWzU0LjY5MzAyNCwgMjQuNzk3ODkyXSwgWzU1LjQzOTAyNSwgMjUuNDM5MTQ1XSwgWzU2LjA3MDgyMSwgMjYuMDU1NDY0XSwgWzU2LjI2MTA0MiwgMjUuNzE0NjA2XSwgWzU2LjM5Njg0NywgMjQuOTI0NzMyXSwgWzU1Ljg4NjIzMywgMjQuOTIwODMxXSwgWzU1LjgwNDExOSwgMjQuMjY5NjA0XSwgWzU1Ljk4MTIxNCwgMjQuMTMwNTQzXSwgWzU1LjUyODYzMiwgMjMuOTMzNjA0XSwgWzU1LjUyNTg0MSwgMjMuNTI0ODY5XSwgWzU1LjIzNDQ4OSwgMjMuMTEwOTkzXSwgWzU1LjIwODM0MSwgMjIuNzA4MzNdLCBbNTUuMDA2ODAzLCAyMi40OTY5NDhdLCBbNTIuMDAwNzMzLCAyMy4wMDExNTRdLCBbNTEuNjE3NzA4LCAyNC4wMTQyMTldLCBbNTEuNTc5NTE5LCAyNC4yNDU0OTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkFSRSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiVW5pdGVkIEFyYWIgRW1pcmF0ZXMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1stNjUuNSwgLTU1LjJdLCBbLTY2LjQ1LCAtNTUuMjVdLCBbLTY2Ljk1OTkyLCAtNTQuODk2ODFdLCBbLTY3LjU2MjQ0LCAtNTQuODcwMDFdLCBbLTY4LjYzMzM1LCAtNTQuODY5NV0sIFstNjguNjM0MDEsIC01Mi42MzYzN10sIFstNjguMjUsIC01My4xXSwgWy02Ny43NSwgLTUzLjg1XSwgWy02Ni40NSwgLTU0LjQ1XSwgWy02NS4wNSwgLTU0LjddLCBbLTY1LjUsIC01NS4yXV1dLCBbW1stNjQuOTY0ODkyLCAtMjIuMDc1ODYyXSwgWy02NC4zNzcwMjEsIC0yMi43OTgwOTFdLCBbLTYzLjk4NjgzOCwgLTIxLjk5MzY0NF0sIFstNjIuODQ2NDY4LCAtMjIuMDM0OTg1XSwgWy02Mi42ODUwNTcsIC0yMi4yNDkwMjldLCBbLTYwLjg0NjU2NSwgLTIzLjg4MDcxM10sIFstNjAuMDI4OTY2LCAtMjQuMDMyNzk2XSwgWy01OC44MDcxMjgsIC0yNC43NzE0NTldLCBbLTU3Ljc3NzIxNywgLTI1LjE2MjM0XSwgWy01Ny42MzM2NiwgLTI1LjYwMzY1N10sIFstNTguNjE4MTc0LCAtMjcuMTIzNzE5XSwgWy01Ny42MDk3NiwgLTI3LjM5NTg5OV0sIFstNTYuNDg2NzAyLCAtMjcuNTQ4NDk5XSwgWy01NS42OTU4NDYsIC0yNy4zODc4MzddLCBbLTU0Ljc4ODc5NSwgLTI2LjYyMTc4Nl0sIFstNTQuNjI1MjkxLCAtMjUuNzM5MjU1XSwgWy01NC4xMzAwNSwgLTI1LjU0NzYzOV0sIFstNTMuNjI4MzQ5LCAtMjYuMTI0ODY1XSwgWy01My42NDg3MzUsIC0yNi45MjM0NzNdLCBbLTU0LjQ5MDcyNSwgLTI3LjQ3NDc1N10sIFstNTUuMTYyMjg2LCAtMjcuODgxOTE1XSwgWy01Ni4yOTA5LCAtMjguODUyNzYxXSwgWy01Ny42MjUxMzMsIC0zMC4yMTYyOTVdLCBbLTU3Ljg3NDkzNywgLTMxLjAxNjU1Nl0sIFstNTguMTQyNDQsIC0zMi4wNDQ1MDRdLCBbLTU4LjEzMjY0OCwgLTMzLjA0MDU2N10sIFstNTguMzQ5NjExLCAtMzMuMjYzMTg5XSwgWy01OC40MjcwNzQsIC0zMy45MDk0NTRdLCBbLTU4LjQ5NTQ0MiwgLTM0LjQzMTQ5XSwgWy01Ny4yMjU4MywgLTM1LjI4ODAyN10sIFstNTcuMzYyMzU5LCAtMzUuOTc3MzldLCBbLTU2LjczNzQ4NywgLTM2LjQxMzEyNl0sIFstNTYuNzg4Mjg1LCAtMzYuOTAxNTcyXSwgWy01Ny43NDkxNTcsIC0zOC4xODM4NzFdLCBbLTU5LjIzMTg1NywgLTM4LjcyMDIyXSwgWy02MS4yMzc0NDUsIC0zOC45Mjg0MjVdLCBbLTYyLjMzNTk1NywgLTM4LjgyNzcwN10sIFstNjIuMTI1NzYzLCAtMzkuNDI0MTA1XSwgWy02Mi4zMzA1MzEsIC00MC4xNzI1ODZdLCBbLTYyLjE0NTk5NCwgLTQwLjY3Njg5N10sIFstNjIuNzQ1ODAzLCAtNDEuMDI4NzYxXSwgWy02My43NzA0OTUsIC00MS4xNjY3ODldLCBbLTY0LjczMjA5LCAtNDAuODAyNjc3XSwgWy02NS4xMTgwMzUsIC00MS4wNjQzMTVdLCBbLTY0Ljk3ODU2MSwgLTQyLjA1ODAwMV0sIFstNjQuMzAzNDA4LCAtNDIuMzU5MDE2XSwgWy02My43NTU5NDgsIC00Mi4wNDM2ODddLCBbLTYzLjQ1ODA1OSwgLTQyLjU2MzEzOF0sIFstNjQuMzc4ODA0LCAtNDIuODczNTU4XSwgWy02NS4xODE4MDQsIC00My40OTUzODFdLCBbLTY1LjMyODgyMywgLTQ0LjUwMTM2Nl0sIFstNjUuNTY1MjY5LCAtNDUuMDM2Nzg2XSwgWy02Ni41MDk5NjYsIC00NS4wMzk2MjhdLCBbLTY3LjI5Mzc5NCwgLTQ1LjU1MTg5Nl0sIFstNjcuNTgwNTQ2LCAtNDYuMzAxNzczXSwgWy02Ni41OTcwNjYsIC00Ny4wMzM5MjVdLCBbLTY1LjY0MTAyNywgLTQ3LjIzNjEzNV0sIFstNjUuOTg1MDg4LCAtNDguMTMzMjg5XSwgWy02Ny4xNjYxNzksIC00OC42OTczMzddLCBbLTY3LjgxNjA4OCwgLTQ5Ljg2OTY2OV0sIFstNjguNzI4NzQ1LCAtNTAuMjY0MjE4XSwgWy02OS4xMzg1MzksIC01MC43MzI1MV0sIFstNjguODE1NTYxLCAtNTEuNzcxMTA0XSwgWy02OC4xNDk5OTUsIC01Mi4zNDk5ODNdLCBbLTY4LjU3MTU0NSwgLTUyLjI5OTQ0NF0sIFstNjkuNDk4MzYyLCAtNTIuMTQyNzYxXSwgWy03MS45MTQ4MDQsIC01Mi4wMDkwMjJdLCBbLTcyLjMyOTQwNCwgLTUxLjQyNTk1Nl0sIFstNzIuMzA5OTc0LCAtNTAuNjc3MDFdLCBbLTcyLjk3NTc0NywgLTUwLjc0MTQ1XSwgWy03My4zMjgwNTEsIC01MC4zNzg3ODVdLCBbLTczLjQxNTQzNiwgLTQ5LjMxODQzNl0sIFstNzIuNjQ4MjQ3LCAtNDguODc4NjE4XSwgWy03Mi4zMzExNjEsIC00OC4yNDQyMzhdLCBbLTcyLjQ0NzM1NSwgLTQ3LjczODUzM10sIFstNzEuOTE3MjU4LCAtNDYuODg0ODM4XSwgWy03MS41NTIwMDksIC00NS41NjA3MzNdLCBbLTcxLjY1OTMxNiwgLTQ0Ljk3MzY4OV0sIFstNzEuMjIyNzc5LCAtNDQuNzg0MjQzXSwgWy03MS4zMjk4MDEsIC00NC40MDc1MjJdLCBbLTcxLjc5MzYyMywgLTQ0LjIwNzE3Ml0sIFstNzEuNDY0MDU2LCAtNDMuNzg3NjExXSwgWy03MS45MTU0MjQsIC00My40MDg1NjVdLCBbLTcyLjE0ODg5OCwgLTQyLjI1NDg4OF0sIFstNzEuNzQ2ODA0LCAtNDIuMDUxMzg2XSwgWy03MS45MTU3MzQsIC00MC44MzIzMzldLCBbLTcxLjY4MDc2MSwgLTM5LjgwODE2NF0sIFstNzEuNDEzNTE3LCAtMzguOTE2MDIyXSwgWy03MC44MTQ2NjQsIC0zOC41NTI5OTVdLCBbLTcxLjExODYyNSwgLTM3LjU3NjgyN10sIFstNzEuMTIxODgxLCAtMzYuNjU4MTI0XSwgWy03MC4zNjQ3NjksIC0zNi4wMDUwODldLCBbLTcwLjM4ODA0OSwgLTM1LjE2OTY4OF0sIFstNjkuODE3MzA5LCAtMzQuMTkzNTcxXSwgWy02OS44MTQ3NzcsIC0zMy4yNzM4ODZdLCBbLTcwLjA3NDM5OSwgLTMzLjA5MTIxXSwgWy03MC41MzUwNjksIC0zMS4zNjUwMV0sIFstNjkuOTE5MDA4LCAtMzAuMzM2MzM5XSwgWy03MC4wMTM1NSwgLTI5LjM2NzkyM10sIFstNjkuNjU2MTMsIC0yOC40NTkxNDFdLCBbLTY5LjAwMTIzNSwgLTI3LjUyMTIxNF0sIFstNjguMjk1NTQyLCAtMjYuODk5MzRdLCBbLTY4LjU5NDgsIC0yNi41MDY5MDldLCBbLTY4LjM4NjAwMSwgLTI2LjE4NTAxNl0sIFstNjguNDE3NjUzLCAtMjQuNTE4NTU1XSwgWy02Ny4zMjg0NDMsIC0yNC4wMjUzMDNdLCBbLTY2Ljk4NTIzNCwgLTIyLjk4NjM0OV0sIFstNjcuMTA2Njc0LCAtMjIuNzM1OTI1XSwgWy02Ni4yNzMzMzksIC0yMS44MzIzMV0sIFstNjQuOTY0ODkyLCAtMjIuMDc1ODYyXV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJBUkciLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkFyZ2VudGluYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNDMuNTgyNzQ2LCA0MS4wOTIxNDNdLCBbNDQuOTcyNDgsIDQxLjI0ODEyOV0sIFs0NS4xNzk0OTYsIDQwLjk4NTM1NF0sIFs0NS41NjAzNTEsIDQwLjgxMjI5XSwgWzQ1LjM1OTE3NSwgNDAuNTYxNTA0XSwgWzQ1Ljg5MTkwNywgNDAuMjE4NDc2XSwgWzQ1LjYxMDAxMiwgMzkuODk5OTk0XSwgWzQ2LjAzNDUzNCwgMzkuNjI4MDIxXSwgWzQ2LjQ4MzQ5OSwgMzkuNDY0MTU1XSwgWzQ2LjUwNTcyLCAzOC43NzA2MDVdLCBbNDYuMTQzNjIzLCAzOC43NDEyMDFdLCBbNDUuNzM1Mzc5LCAzOS4zMTk3MTldLCBbNDUuNzM5OTc4LCAzOS40NzM5OTldLCBbNDUuMjk4MTQ1LCAzOS40NzE3NTFdLCBbNDUuMDAxOTg3LCAzOS43NDAwMDRdLCBbNDQuNzkzOTksIDM5LjcxMzAwM10sIFs0NC40MDAwMDksIDQwLjAwNV0sIFs0My42NTY0MzYsIDQwLjI1MzU2NF0sIFs0My43NTI2NTgsIDQwLjc0MDIwMV0sIFs0My41ODI3NDYsIDQxLjA5MjE0M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQVJNIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJBcm1lbmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbLTU5LjU3MjA5NSwgLTgwLjA0MDE3OV0sIFstNTkuODY1ODQ5LCAtODAuNTQ5NjU3XSwgWy02MC4xNTk2NTYsIC04MS4wMDAzMjddLCBbLTYyLjI1NTM5MywgLTgwLjg2MzE3OF0sIFstNjQuNDg4MTI1LCAtODAuOTIxOTM0XSwgWy02NS43NDE2NjYsIC04MC41ODg4MjddLCBbLTY1Ljc0MTY2NiwgLTgwLjU0OTY1N10sIFstNjYuMjkwMDMxLCAtODAuMjU1NzczXSwgWy02NC4wMzc2ODgsIC04MC4yOTQ5NDRdLCBbLTYxLjg4MzI0NiwgLTgwLjM5Mjg3XSwgWy02MS4xMzg5NzYsIC03OS45ODEzNzFdLCBbLTYwLjYxMDExOSwgLTc5LjYyODY3OV0sIFstNTkuNTcyMDk1LCAtODAuMDQwMTc5XV1dLCBbW1stMTU5LjIwODE4NCwgLTc5LjQ5NzA1OV0sIFstMTYxLjEyNzYwMSwgLTc5LjYzNDIwOV0sIFstMTYyLjQzOTg0NywgLTc5LjI4MTQ2NV0sIFstMTYzLjAyNzQwOCwgLTc4LjkyODc3NF0sIFstMTYzLjA2NjYwNCwgLTc4Ljg2OTk2Nl0sIFstMTYzLjcxMjg5NiwgLTc4LjU5NTY2N10sIFstMTYzLjcxMjg5NiwgLTc4LjU5NTY2N10sIFstMTYzLjEwNTgwMSwgLTc4LjIyMzMzOF0sIFstMTYxLjI0NTExMywgLTc4LjM4MDE3Nl0sIFstMTYwLjI0NjIwOCwgLTc4LjY5MzY0NV0sIFstMTU5LjQ4MjQwNSwgLTc5LjA0NjMzOF0sIFstMTU5LjIwODE4NCwgLTc5LjQ5NzA1OV1dXSwgW1tbLTQ1LjE1NDc1OCwgLTc4LjA0NzA3XSwgWy00My45MjA4MjgsIC03OC40NzgxMDNdLCBbLTQzLjQ4OTk1LCAtNzkuMDg1NTZdLCBbLTQzLjM3MjQzOCwgLTc5LjUxNjY0NV0sIFstNDMuMzMzMjY3LCAtODAuMDI2MTIzXSwgWy00NC44ODA1MzcsIC04MC4zMzk2NDRdLCBbLTQ2LjUwNjE3NCwgLTgwLjU5NDM1N10sIFstNDguMzg2NDIxLCAtODAuODI5NDg1XSwgWy01MC40ODIxMDcsIC04MS4wMjU0NDJdLCBbLTUyLjg1MTk4OCwgLTgwLjk2NjY4NV0sIFstNTQuMTY0MjU5LCAtODAuNjMzNTI4XSwgWy01My45ODc5OTEsIC04MC4yMjIwMjhdLCBbLTUxLjg1MzEzNCwgLTc5Ljk0NzczXSwgWy01MC45OTEzMjYsIC03OS42MTQ2MjNdLCBbLTUwLjM2NDU5NSwgLTc5LjE4MzQ4N10sIFstNDkuOTE0MTMxLCAtNzguODExMjA5XSwgWy00OS4zMDY5NTksIC03OC40NTg1NjldLCBbLTQ4LjY2MDYxNiwgLTc4LjA0NzAxOF0sIFstNDguNjYwNjE2LCAtNzguMDQ3MDE5XSwgWy00OC4xNTEzOTYsIC03OC4wNDcwN10sIFstNDYuNjYyODU3LCAtNzcuODMxNDc2XSwgWy00NS4xNTQ3NTgsIC03OC4wNDcwN11dXSwgW1tbLTEyMS4yMTE1MTEsIC03My41MDA5OV0sIFstMTE5LjkxODg1MSwgLTczLjY1NzcyNV0sIFstMTE4LjcyNDE0MywgLTczLjQ4MTM1M10sIFstMTE5LjI5MjExOSwgLTczLjgzNDA5N10sIFstMTIwLjIzMjIxNywgLTc0LjA4ODgxXSwgWy0xMjEuNjIyODMsIC03NC4wMTA0NjhdLCBbLTEyMi42MjE3MzUsIC03My42NTc3NzhdLCBbLTEyMi42MjE3MzUsIC03My42NTc3NzddLCBbLTEyMi40MDYyNDUsIC03My4zMjQ2MTldLCBbLTEyMS4yMTE1MTEsIC03My41MDA5OV1dXSwgW1tbLTEyNS41NTk1NjYsIC03My40ODEzNTNdLCBbLTEyNC4wMzE4ODIsIC03My44NzMyNjhdLCBbLTEyNC42MTk0NjksIC03My44MzQwOTddLCBbLTEyNS45MTIxODEsIC03My43MzYxMThdLCBbLTEyNy4yODMxMywgLTczLjQ2MTc2OV0sIFstMTI3LjI4MzEzLCAtNzMuNDYxNzY4XSwgWy0xMjYuNTU4NDcyLCAtNzMuMjQ2MjI2XSwgWy0xMjUuNTU5NTY2LCAtNzMuNDgxMzUzXV1dLCBbW1stOTguOTgxNTUsIC03MS45MzMzMzRdLCBbLTk3Ljg4NDc0MywgLTcyLjA3MDUzNV0sIFstOTYuNzg3OTM3LCAtNzEuOTUyOTcxXSwgWy05Ni4yMDAzNSwgLTcyLjUyMTIwNV0sIFstOTYuOTgzNzY1LCAtNzIuNDQyODY0XSwgWy05OC4xOTgwODMsIC03Mi40ODIwMzVdLCBbLTk5LjQzMjAxMywgLTcyLjQ0Mjg2NF0sIFstMTAwLjc4MzQ1NSwgLTcyLjUwMTYyXSwgWy0xMDEuODAxODY4LCAtNzIuMzA1NjYzXSwgWy0xMDIuMzMwNzI1LCAtNzEuODk0MTY0XSwgWy0xMDIuMzMwNzI1LCAtNzEuODk0MTY0XSwgWy0xMDEuNzAzOTY3LCAtNzEuNzE3NzkyXSwgWy0xMDAuNDMwOTE5LCAtNzEuODU0OTkzXSwgWy05OC45ODE1NSwgLTcxLjkzMzMzNF1dXSwgW1tbLTY4LjQ1MTM0NiwgLTcwLjk1NTgyM10sIFstNjguMzMzODM0LCAtNzEuNDA2NDkzXSwgWy02OC41MTAxMjgsIC03MS43OTg0MDddLCBbLTY4Ljc4NDI5NywgLTcyLjE3MDczNl0sIFstNjkuOTU5NDcxLCAtNzIuMzA3ODg1XSwgWy03MS4wNzU4ODksIC03Mi41MDM4NDJdLCBbLTcyLjM4ODEzNCwgLTcyLjQ4NDI1N10sIFstNzEuODk4NSwgLTcyLjA5MjM0M10sIFstNzMuMDczNjIyLCAtNzIuMjI5NDkyXSwgWy03NC4xOTAwNCwgLTcyLjM2NjY5M10sIFstNzQuOTUzODk1LCAtNzIuMDcyNzU3XSwgWy03NS4wMTI2MjUsIC03MS42NjEyNThdLCBbLTczLjkxNTgxOSwgLTcxLjI2OTM0NV0sIFstNzMuOTE1ODE5LCAtNzEuMjY5MzQ0XSwgWy03My4yMzAzMzEsIC03MS4xNTE3OF0sIFstNzIuMDc0NzE3LCAtNzEuMTkwOTUxXSwgWy03MS43ODA5NjIsIC03MC42ODE0NzNdLCBbLTcxLjcyMjE4LCAtNzAuMzA5MTk2XSwgWy03MS43NDE3OTEsIC02OS41MDU3ODJdLCBbLTcxLjE3MzgxNSwgLTY5LjAzNTQ3NV0sIFstNzAuMjUzMjUyLCAtNjguODc4NzRdLCBbLTY5LjcyNDQ0NywgLTY5LjI1MTAxN10sIFstNjkuNDg5NDIyLCAtNjkuNjIzMzQ2XSwgWy02OS4wNTg1MTgsIC03MC4wNzQwMTZdLCBbLTY4LjcyNTU0MSwgLTcwLjUwNTE1M10sIFstNjguNDUxMzQ2LCAtNzAuOTU1ODIzXV1dLCBbW1stNTguNjE0MTQzLCAtNjQuMTUyNDY3XSwgWy01OS4wNDUwNzMsIC02NC4zNjgwMV0sIFstNTkuNzg5MzQyLCAtNjQuMjExMjIzXSwgWy02MC42MTE5MjgsIC02NC4zMDkyMDJdLCBbLTYxLjI5NzQxNiwgLTY0LjU0NDMzXSwgWy02Mi4wMjIxLCAtNjQuNzk5MDk0XSwgWy02Mi41MTE3NiwgLTY1LjA5MzAzXSwgWy02Mi42NDg4NTgsIC02NS40ODQ5NDJdLCBbLTYyLjU5MDEyOCwgLTY1Ljg1NzIxOV0sIFstNjIuMTIwMDc5LCAtNjYuMTkwMzI2XSwgWy02Mi44MDU1NjcsIC02Ni40MjU1MDVdLCBbLTYzLjc0NTY5LCAtNjYuNTAzODQ3XSwgWy02NC4yOTQxMDYsIC02Ni44MzcwMDRdLCBbLTY0Ljg4MTY5MywgLTY3LjE1MDQ3NF0sIFstNjUuNTA4NDI1LCAtNjcuNTgxNjFdLCBbLTY1LjY2NTA4MiwgLTY3Ljk1Mzg4N10sIFstNjUuMzEyNTQ1LCAtNjguMzY1MzM1XSwgWy02NC43ODM3MTUsIC02OC42Nzg5MDhdLCBbLTYzLjk2MTEwMywgLTY4LjkxMzk4NF0sIFstNjMuMTk3MywgLTY5LjIyNzU1Nl0sIFstNjIuNzg1OTU1LCAtNjkuNjE5NDE5XSwgWy02Mi41NzA1MTYsIC02OS45OTE3NDddLCBbLTYyLjI3NjczNiwgLTcwLjM4MzY2MV0sIFstNjEuODA2NjYxLCAtNzAuNzE2NzY4XSwgWy02MS41MTI5MDYsIC03MS4wODkwNDVdLCBbLTYxLjM3NTgwOSwgLTcyLjAxMDA3NF0sIFstNjEuMDgxOTc3LCAtNzIuMzgyMzUxXSwgWy02MS4wMDM2NjEsIC03Mi43NzQyNjVdLCBbLTYwLjY5MDI2OSwgLTczLjE2NjE3OV0sIFstNjAuODI3MzY3LCAtNzMuNjk1MjQyXSwgWy02MS4zNzU4MDksIC03NC4xMDY3NDJdLCBbLTYxLjk2MzM3LCAtNzQuNDM5ODQ4XSwgWy02My4yOTUyMDEsIC03NC41NzY5OTddLCBbLTYzLjc0NTY5LCAtNzQuOTI5NzRdLCBbLTY0LjM1MjgzNiwgLTc1LjI2Mjg0N10sIFstNjUuODYwOTg3LCAtNzUuNjM1MTI0XSwgWy02Ny4xOTI4MTgsIC03NS43OTE5MV0sIFstNjguNDQ2MjgyLCAtNzYuMDA3NDUyXSwgWy02OS43OTc3MjQsIC03Ni4yMjI5OTVdLCBbLTcwLjYwMDcyNCwgLTc2LjYzNDQ5NF0sIFstNzIuMjA2Nzc2LCAtNzYuNjczNjY1XSwgWy03My45Njk1MzYsIC03Ni42MzQ0OTRdLCBbLTc1LjU1NTk3NywgLTc2LjcxMjg4N10sIFstNzcuMjQwMzcsIC03Ni43MTI4ODddLCBbLTc2LjkyNjk3OSwgLTc3LjEwNDgwMl0sIFstNzUuMzk5Mjk0LCAtNzcuMjgxMDddLCBbLTc0LjI4Mjg3NiwgLTc3LjU1NTQyXSwgWy03My42NTYxMTksIC03Ny45MDgxMTJdLCBbLTc0Ljc3MjUzNiwgLTc4LjIyMTYzM10sIFstNzYuNDk2MSwgLTc4LjEyMzY1NF0sIFstNzcuOTI1ODU4LCAtNzguMzc4NDE5XSwgWy03Ny45ODQ2NjYsIC03OC43ODk5MThdLCBbLTc4LjAyMzc4NSwgLTc5LjE4MTgzM10sIFstNzYuODQ4NjM3LCAtNzkuNTE0OTM5XSwgWy03Ni42MzMyMjQsIC03OS44ODcyMTZdLCBbLTc1LjM2MDA5NywgLTgwLjI1OTU0NV0sIFstNzMuMjQ0ODUyLCAtODAuNDE2MzMxXSwgWy03MS40NDI5NDYsIC04MC42OTA2M10sIFstNzAuMDEzMTYzLCAtODEuMDA0MTUxXSwgWy02OC4xOTE2NDYsIC04MS4zMTc2NzJdLCBbLTY1LjcwNDI3OSwgLTgxLjQ3NDQ1OF0sIFstNjMuMjU2MDMsIC04MS43NDg3NTddLCBbLTYxLjU1MjAyNiwgLTgyLjA0MjY5Ml0sIFstNTkuNjkxNDE2LCAtODIuMzc1ODVdLCBbLTU4LjcxMjEyMSwgLTgyLjg0NjEwNl0sIFstNTguMjIyNDg3LCAtODMuMjE4NDM0XSwgWy01Ny4wMDgxMTcsIC04Mi44NjU2OTFdLCBbLTU1LjM2Mjg5NCwgLTgyLjU3MTc1NV0sIFstNTMuNjE5NzcxLCAtODIuMjU4MjM1XSwgWy01MS41NDM2NDQsIC04Mi4wMDM1MjFdLCBbLTQ5Ljc2MTM1LCAtODEuNzI5MTcxXSwgWy00Ny4yNzM5MzEsIC04MS43MDk1ODZdLCBbLTQ0LjgyNTcwOCwgLTgxLjg0NjczNV0sIFstNDIuODA4MzYzLCAtODIuMDgxOTE1XSwgWy00Mi4xNjIwMiwgLTgxLjY1MDgzXSwgWy00MC43NzE0MzMsIC04MS4zNTY4OTRdLCBbLTM4LjI0NDgxOCwgLTgxLjMzNzMwOV0sIFstMzYuMjY2NjcsIC04MS4xMjE3MTVdLCBbLTM0LjM4NjM5NywgLTgwLjkwNjE3Ml0sIFstMzIuMzEwMjk2LCAtODAuNzY5MDIzXSwgWy0zMC4wOTcwOTgsIC04MC41OTI2NTFdLCBbLTI4LjU0OTgwMiwgLTgwLjMzNzkzOF0sIFstMjkuMjU0OTAxLCAtNzkuOTg1MTk1XSwgWy0yOS42ODU4MDUsIC03OS42MzI1MDNdLCBbLTI5LjY4NTgwNSwgLTc5LjI2MDIyNl0sIFstMzEuNjI0ODA4LCAtNzkuMjk5Mzk3XSwgWy0zMy42ODEzMjQsIC03OS40NTYxMzJdLCBbLTM1LjYzOTkxMiwgLTc5LjQ1NjEzMl0sIFstMzUuOTE0MTA3LCAtNzkuMDgzODU1XSwgWy0zNS43NzcwMSwgLTc4LjMzOTI0OF0sIFstMzUuMzI2NTQ2LCAtNzguMTIzNjU0XSwgWy0zMy44OTY3NjMsIC03Ny44ODg1MjZdLCBbLTMyLjIxMjM2OSwgLTc3LjY1MzQ1XSwgWy0zMC45OTgwNTEsIC03Ny4zNTk1MTVdLCBbLTI5Ljc4MzczMiwgLTc3LjA2NTU3OV0sIFstMjguODgyNzc5LCAtNzYuNjczNjY1XSwgWy0yNy41MTE3NTIsIC03Ni40OTczNDVdLCBbLTI2LjE2MDMzNiwgLTc2LjM2MDE0NF0sIFstMjUuNDc0ODIyLCAtNzYuMjgxODAzXSwgWy0yMy45Mjc1NTIsIC03Ni4yNDI1OF0sIFstMjIuNDU4NTk4LCAtNzYuMTA1NDMxXSwgWy0yMS4yMjQ2OTQsIC03NS45MDk0NzRdLCBbLTIwLjAxMDM3NSwgLTc1LjY3NDM0Nl0sIFstMTguOTEzNTQzLCAtNzUuNDM5MjE4XSwgWy0xNy41MjI5ODIsIC03NS4xMjU2OThdLCBbLTE2LjY0MTU4OSwgLTc0Ljc5MjU0XSwgWy0xNS43MDE0OTEsIC03NC40OTg2MDRdLCBbLTE1LjQwNzcxLCAtNzQuMTA2NzQyXSwgWy0xNi40NjUzMiwgLTczLjg3MTYxNF0sIFstMTYuMTEyNzg0LCAtNzMuNDYwMTE0XSwgWy0xNS40NDY4NTUsIC03My4xNDY1NDJdLCBbLTE0LjQwODgwNSwgLTcyLjk1MDU4NV0sIFstMTMuMzExOTczLCAtNzIuNzE1NDU3XSwgWy0xMi4yOTM1MDgsIC03Mi40MDE5MzZdLCBbLTExLjUxMDA2NywgLTcyLjAxMDA3NF0sIFstMTEuMDIwNDMzLCAtNzEuNTM5NzY3XSwgWy0xMC4yOTU3NzQsIC03MS4yNjU0MTZdLCBbLTkuMTAxMDE1LCAtNzEuMzI0MjI0XSwgWy04LjYxMTM4MSwgLTcxLjY1NzMzXSwgWy03LjQxNjYyMiwgLTcxLjY5NjUwMV0sIFstNy4zNzc0NTEsIC03MS4zMjQyMjRdLCBbLTYuODY4MjMyLCAtNzAuOTMyMzFdLCBbLTUuNzkwOTg1LCAtNzEuMDMwMjg5XSwgWy01LjUzNjM3NSwgLTcxLjQwMjYxN10sIFstNC4zNDE2NjcsIC03MS40NjEzNzNdLCBbLTMuMDQ4OTgxLCAtNzEuMjg1MDUzXSwgWy0xLjc5NTQ5MiwgLTcxLjE2NzQzOF0sIFstMC42NTk0ODksIC03MS4yMjYyNDZdLCBbLTAuMjI4NjM3LCAtNzEuNjM3NzQ1XSwgWzAuODY4MTk1LCAtNzEuMzA0NjM5XSwgWzEuODg2Njg2LCAtNzEuMTI4MjY3XSwgWzMuMDIyNjM4LCAtNzAuOTkxMTE4XSwgWzQuMTM5MDU1LCAtNzAuODUzOTE3XSwgWzUuMTU3NTQ2LCAtNzAuNjE4Nzg5XSwgWzYuMjczOTEyLCAtNzAuNDYyMDU1XSwgWzcuMTM1NzIsIC03MC4yNDY1MTJdLCBbNy43NDI4NjYsIC02OS44OTM3NjldLCBbOC40ODcxMSwgLTcwLjE0ODUzNF0sIFs5LjUyNTEzNSwgLTcwLjAxMTMzM10sIFsxMC4yNDk4NDUsIC03MC40ODE2NF0sIFsxMC44MTc4MjEsIC03MC44MzQzMzJdLCBbMTEuOTUzODI0LCAtNzAuNjM4Mzc1XSwgWzEyLjQwNDI4NywgLTcwLjI0NjUxMl0sIFsxMy40MjI3NzgsIC02OS45NzIxNjJdLCBbMTQuNzM0OTk4LCAtNzAuMDMwOTE4XSwgWzE1LjEyNjc1NywgLTcwLjQwMzI0N10sIFsxNS45NDkzNDIsIC03MC4wMzA5MThdLCBbMTcuMDI2NTg5LCAtNjkuOTEzMzU0XSwgWzE4LjIwMTcxMSwgLTY5Ljg3NDE4M10sIFsxOS4yNTkzNzMsIC02OS44OTM3NjldLCBbMjAuMzc1NzM5LCAtNzAuMDExMzMzXSwgWzIxLjQ1Mjk4NSwgLTcwLjA3MDE0XSwgWzIxLjkyMzAzNCwgLTcwLjQwMzI0N10sIFsyMi41Njk0MDMsIC03MC42OTcxODJdLCBbMjMuNjY2MTg0LCAtNzAuNTIwODExXSwgWzI0Ljg0MTM1NywgLTcwLjQ4MTY0XSwgWzI1Ljk3NzMwOSwgLTcwLjQ4MTY0XSwgWzI3LjA5MzcyNiwgLTcwLjQ2MjA1NV0sIFsyOC4wOTI1OCwgLTcwLjMyNDg1NF0sIFsyOS4xNTAyNDIsIC03MC4yMDcyOV0sIFszMC4wMzE1ODMsIC02OS45MzI5NF0sIFszMC45NzE3MzMsIC02OS43NTY2Ml0sIFszMS45OTAxNzIsIC02OS42NTg2NDFdLCBbMzIuNzU0MDUzLCAtNjkuMzg0MjkxXSwgWzMzLjMwMjQ0MywgLTY4LjgzNTY0Ml0sIFszMy44NzA0MTksIC02OC41MDI1ODhdLCBbMzQuOTA4NDk1LCAtNjguNjU5MjcxXSwgWzM1LjMwMDIwMiwgLTY5LjAxMjAxNF0sIFszNi4xNjIwMSwgLTY5LjI0NzE0Ml0sIFszNy4yMDAwMzUsIC02OS4xNjg3NDhdLCBbMzcuOTA1MTA4LCAtNjkuNTIxNDRdLCBbMzguNjQ5NDA0LCAtNjkuNzc2MjA1XSwgWzM5LjY2Nzg5NCwgLTY5LjU0MTA3N10sIFs0MC4wMjA0MzEsIC02OS4xMDk5NDFdLCBbNDAuOTIxMzU4LCAtNjguOTMzNjIxXSwgWzQxLjk1OTQzNCwgLTY4LjYwMDUxNF0sIFs0Mi45Mzg3MDIsIC02OC40NjMzMTNdLCBbNDQuMTEzODc2LCAtNjguMjY3NDA4XSwgWzQ0Ljg5NzI5MSwgLTY4LjA1MTg2Nl0sIFs0NS43MTk5MjgsIC02Ny44MTY3MzhdLCBbNDYuNTAzMzQzLCAtNjcuNjAxMTk2XSwgWzQ3LjQ0MzQ0LCAtNjcuNzE4NzU5XSwgWzQ4LjM0NDQxOSwgLTY3LjM2NjA2OF0sIFs0OC45OTA3MzYsIC02Ny4wOTE3MThdLCBbNDkuOTMwODg1LCAtNjcuMTExMzAzXSwgWzUwLjc1MzQ3MSwgLTY2Ljg3NjE3NV0sIFs1MC45NDkzMjUsIC02Ni41MjM0ODRdLCBbNTEuNzkxNTQ3LCAtNjYuMjQ5MTMzXSwgWzUyLjYxNDEzMywgLTY2LjA1MzE3Nl0sIFs1My42MTMwMzgsIC02NS44OTYzOV0sIFs1NC41MzM1NSwgLTY1LjgxODA0OV0sIFs1NS40MTQ5NDMsIC02NS44NzY4MDVdLCBbNTYuMzU1MDQxLCAtNjUuOTc0NzgzXSwgWzU3LjE1ODA5MywgLTY2LjI0OTEzM10sIFs1Ny4yNTU5NjgsIC02Ni42ODAyMThdLCBbNTguMTM3MzYxLCAtNjcuMDEzMzI0XSwgWzU4Ljc0NDUwOCwgLTY3LjI4NzY3NV0sIFs1OS45MzkzMTgsIC02Ny40MDUyMzldLCBbNjAuNjA1MjIxLCAtNjcuNjc5NTg5XSwgWzYxLjQyNzgwNiwgLTY3Ljk1Mzg4N10sIFs2Mi4zODc0ODksIC02OC4wMTI2OTVdLCBbNjMuMTkwNDksIC02Ny44MTY3MzhdLCBbNjQuMDUyMzQ5LCAtNjcuNDA1MjM5XSwgWzY0Ljk5MjQ0NywgLTY3LjYyMDcyOV0sIFs2NS45NzE3MTUsIC02Ny43MzgzNDVdLCBbNjYuOTExODY0LCAtNjcuODU1OTA5XSwgWzY3Ljg5MTEzMywgLTY3LjkzNDMwMl0sIFs2OC44OTAwMzgsIC02Ny45MzQzMDJdLCBbNjkuNzEyNjI0LCAtNjguOTcyNzkxXSwgWzY5LjY3MzQ1MywgLTY5LjIyNzU1Nl0sIFs2OS41NTU5NDEsIC02OS42NzgyMjZdLCBbNjguNTk2MjU4LCAtNjkuOTMyOTRdLCBbNjcuODEyNzQsIC03MC4zMDUyNjhdLCBbNjcuOTQ5ODg5LCAtNzAuNjk3MTgyXSwgWzY5LjA2NjMwNywgLTcwLjY3NzU0NV0sIFs2OC45MjkxNTcsIC03MS4wNjk0NTldLCBbNjguNDE5OTg5LCAtNzEuNDQxNzg4XSwgWzY3Ljk0OTg4OSwgLTcxLjg1MzI4N10sIFs2OC43MTM3NywgLTcyLjE2NjgwOF0sIFs2OS44NjkzMDcsIC03Mi4yNjQ3ODddLCBbNzEuMDI0ODk1LCAtNzIuMDg4NDE1XSwgWzcxLjU3MzI4NSwgLTcxLjY5NjUwMV0sIFs3MS45MDYyODgsIC03MS4zMjQyMjRdLCBbNzIuNDU0NjI3LCAtNzEuMDEwNzAzXSwgWzczLjA4MTQxLCAtNzAuNzE2NzY4XSwgWzczLjMzNjAyLCAtNzAuMzY0MDI0XSwgWzczLjg2NDg3NywgLTY5Ljg3NDE4M10sIFs3NC40OTE1NTcsIC02OS43NzYyMDVdLCBbNzUuNjI3NTYsIC02OS43MzcwMzRdLCBbNzYuNjI2NDY1LCAtNjkuNjE5NDE5XSwgWzc3LjY0NDkwNCwgLTY5LjQ2MjY4NF0sIFs3OC4xMzQ1MzksIC02OS4wNzA3N10sIFs3OC40MjgzNzEsIC02OC42OTg0NDFdLCBbNzkuMTEzODU5LCAtNjguMzI2MjE2XSwgWzgwLjA5MzEyNywgLTY4LjA3MTUwM10sIFs4MC45MzUzNSwgLTY3Ljg3NTU0Nl0sIFs4MS40ODM3OTIsIC02Ny41NDIzODhdLCBbODIuMDUxNzY3LCAtNjcuMzY2MDY4XSwgWzgyLjc3NjQyNiwgLTY3LjIwOTI4Ml0sIFs4My43NzUzMzEsIC02Ny4zMDcyNl0sIFs4NC42NzYyMDYsIC02Ny4yMDkyODJdLCBbODUuNjU1NTI3LCAtNjcuMDkxNzE4XSwgWzg2Ljc1MjM1OSwgLTY3LjE1MDQ3NF0sIFs4Ny40NzcwMTcsIC02Ni44NzYxNzVdLCBbODcuOTg2Mjg5LCAtNjYuMjA5OTExXSwgWzg4LjM1ODQxMSwgLTY2LjQ4NDI2MV0sIFs4OC44Mjg0MDgsIC02Ni45NTQ1NjhdLCBbODkuNjcwNjMsIC02Ny4xNTA0NzRdLCBbOTAuNjMwMzY1LCAtNjcuMjI4ODY3XSwgWzkxLjU5MDEsIC02Ny4xMTEzMDNdLCBbOTIuNjA4NTM5LCAtNjcuMTg5Njk2XSwgWzkzLjU0ODYzNywgLTY3LjIwOTI4Ml0sIFs5NC4xNzU0MiwgLTY3LjExMTMwM10sIFs5NS4wMTc1OTEsIC02Ny4xNzAxMTFdLCBbOTUuNzgxNDcyLCAtNjcuMzg1NjUzXSwgWzk2LjY4MjM5OSwgLTY3LjI0ODUwNF0sIFs5Ny43NTk2NDYsIC02Ny4yNDg1MDRdLCBbOTguNjgwMjEsIC02Ny4xMTEzMDNdLCBbOTkuNzE4MTgyLCAtNjcuMjQ4NTA0XSwgWzEwMC4zODQxODgsIC02Ni45MTUzNDZdLCBbMTAwLjg5MzM1NiwgLTY2LjU4MjI0XSwgWzEwMS41Nzg4OTYsIC02Ni4zMDc4OV0sIFsxMDIuODMyNDExLCAtNjUuNTYzMjg0XSwgWzEwMy40Nzg2NzYsIC02NS43MDA0ODVdLCBbMTA0LjI0MjU1NywgLTY1Ljk3NDc4M10sIFsxMDQuOTA4NDYsIC02Ni4zMjc1MjddLCBbMTA2LjE4MTU2MSwgLTY2LjkzNDkzMV0sIFsxMDcuMTYwODgxLCAtNjYuOTU0NTY4XSwgWzEwOC4wODEzOTMsIC02Ni45NTQ1NjhdLCBbMTA5LjE1ODY0LCAtNjYuODM3MDA0XSwgWzExMC4yMzU4MzUsIC02Ni42OTk4MDRdLCBbMTExLjA1ODQ3MiwgLTY2LjQyNTUwNV0sIFsxMTEuNzQzOTYsIC02Ni4xMzE1N10sIFsxMTIuODYwMzc4LCAtNjYuMDkyMzQ3XSwgWzExMy42MDQ2NzMsIC02NS44NzY4MDVdLCBbMTE0LjM4ODA4OCwgLTY2LjA3Mjc2Ml0sIFsxMTQuODk3MzA4LCAtNjYuMzg2MjgzXSwgWzExNS42MDIzODEsIC02Ni42OTk4MDRdLCBbMTE2LjY5OTE2MSwgLTY2LjY2MDYzM10sIFsxMTcuMzg0NzAxLCAtNjYuOTE1MzQ2XSwgWzExOC41Nzk0NiwgLTY3LjE3MDExMV0sIFsxMTkuODMyOTI0LCAtNjcuMjY4MDg5XSwgWzEyMC44NzEsIC02Ny4xODk2OTZdLCBbMTIxLjY1NDQxNSwgLTY2Ljg3NjE3NV0sIFsxMjIuMzIwMzY5LCAtNjYuNTYyNjU0XSwgWzEyMy4yMjEyOTYsIC02Ni40ODQyNjFdLCBbMTI0LjEyMjI3NCwgLTY2LjYyMTQ2Ml0sIFsxMjUuMTYwMjQ3LCAtNjYuNzE5Mzg5XSwgWzEyNi4xMDAzOTYsIC02Ni41NjI2NTRdLCBbMTI3LjAwMTQyNywgLTY2LjU2MjY1NF0sIFsxMjcuODgyNzY4LCAtNjYuNjYwNjMzXSwgWzEyOC44MDMyOCwgLTY2Ljc1ODYxMV0sIFsxMjkuNzA0MjU5LCAtNjYuNTgyMjRdLCBbMTMwLjc4MTQ1NCwgLTY2LjQyNTUwNV0sIFsxMzEuNzk5OTQ1LCAtNjYuMzg2MjgzXSwgWzEzMi45MzU4OTYsIC02Ni4zODYyODNdLCBbMTMzLjg1NjQ2LCAtNjYuMjg4MzA0XSwgWzEzNC43NTczODcsIC02Ni4yMDk5NjNdLCBbMTM1LjAzMTU4MiwgLTY1LjcyMDA3XSwgWzEzNS4wNzA3NTMsIC02NS4zMDg1NzFdLCBbMTM1LjY5NzQ4NSwgLTY1LjU4Mjg2OV0sIFsxMzUuODczODA1LCAtNjYuMDMzNTkxXSwgWzEzNi4yMDY3MDUsIC02Ni40NDUwOV0sIFsxMzYuNjE4MDQ5LCAtNjYuNzc4MTk3XSwgWzEzNy40NjAyNzEsIC02Ni45NTQ1NjhdLCBbMTM4LjU5NjIyMywgLTY2Ljg5NTc2MV0sIFsxMzkuOTA4NDQyLCAtNjYuODc2MTc1XSwgWzE0MC44MDk0MjEsIC02Ni44MTczNjddLCBbMTQyLjEyMTY5MiwgLTY2LjgxNzM2N10sIFsxNDMuMDYxODQyLCAtNjYuNzk3NzgyXSwgWzE0NC4zNzQwNjEsIC02Ni44MzcwMDRdLCBbMTQ1LjQ5MDQyNywgLTY2LjkxNTM0Nl0sIFsxNDYuMTk1NTUyLCAtNjcuMjI4ODY3XSwgWzE0NS45OTk2OTksIC02Ny42MDExOTZdLCBbMTQ2LjY0NjA2NywgLTY3Ljg5NTEzMV0sIFsxNDcuNzIzMjYzLCAtNjguMTMwMjU5XSwgWzE0OC44Mzk2MjksIC02OC4zODUwMjRdLCBbMTUwLjEzMjMxNCwgLTY4LjU2MTI5Ml0sIFsxNTEuNDgzNzA1LCAtNjguNzE4MTNdLCBbMTUyLjUwMjI0NywgLTY4Ljg3NDgxM10sIFsxNTMuNjM4MTk5LCAtNjguODk0NTAyXSwgWzE1NC4yODQ1NjcsIC02OC41NjEyOTJdLCBbMTU1LjE2NTg1NywgLTY4LjgzNTY0Ml0sIFsxNTUuOTI5NzksIC02OS4xNDkyMTVdLCBbMTU2LjgxMTEzMiwgLTY5LjM4NDI5MV0sIFsxNTguMDI1NTI4LCAtNjkuNDgyMjY5XSwgWzE1OS4xODEwMTMsIC02OS41OTk4MzNdLCBbMTU5LjY3MDY5OSwgLTY5Ljk5MTc0N10sIFsxNjAuODA2NjUsIC03MC4yMjY4NzVdLCBbMTYxLjU3MDQ3OSwgLTcwLjU3OTYxOF0sIFsxNjIuNjg2ODk3LCAtNzAuNzM2MzUzXSwgWzE2My44NDI0MzQsIC03MC43MTY3NjhdLCBbMTY0LjkxOTY4MSwgLTcwLjc3NTUyNF0sIFsxNjYuMTE0NDQsIC03MC43NTU5MzhdLCBbMTY3LjMwOTA5NSwgLTcwLjgzNDMzMl0sIFsxNjguNDI1NjE2LCAtNzAuOTcxNDgxXSwgWzE2OS40NjM1ODksIC03MS4yMDY2Nl0sIFsxNzAuNTAxNjY1LCAtNzEuNDAyNjE3XSwgWzE3MS4yMDY3OSwgLTcxLjY5NjUwMV0sIFsxNzEuMDg5MjI3LCAtNzIuMDg4NDE1XSwgWzE3MC41NjA0MjIsIC03Mi40NDExNTldLCBbMTcwLjEwOTk1OCwgLTcyLjg5MTgyOV0sIFsxNjkuNzU3MzcsIC03My4yNDQ1Ml0sIFsxNjkuMjg3MzIxLCAtNzMuNjU2MDJdLCBbMTY3Ljk3NTEwMSwgLTczLjgxMjgwNl0sIFsxNjcuMzg3NDg5LCAtNzQuMTY1NDk4XSwgWzE2Ni4wOTQ4MDMsIC03NC4zODEwNF0sIFsxNjUuNjQ0MzkxLCAtNzQuNzcyOTU0XSwgWzE2NC45NTg4NTEsIC03NS4xNDUyODNdLCBbMTY0LjIzNDE5MywgLTc1LjQ1ODgwNF0sIFsxNjMuODIyNzk3LCAtNzUuODcwMzAzXSwgWzE2My41NjgyMzksIC03Ni4yNDI1OF0sIFsxNjMuNDcwMjYsIC03Ni42OTMzMDJdLCBbMTYzLjQ4OTg5NywgLTc3LjA2NTU3OV0sIFsxNjQuMDU3ODczLCAtNzcuNDU3NDQyXSwgWzE2NC4yNzMzNjMsIC03Ny44Mjk3N10sIFsxNjQuNzQzNDY0LCAtNzguMTgyNTE0XSwgWzE2Ni42MDQxMjYsIC03OC4zMTk2MTFdLCBbMTY2Ljk5NTc4MSwgLTc4Ljc1MDc0OF0sIFsxNjUuMTkzODc2LCAtNzguOTA3NDgzXSwgWzE2My42NjYyMTcsIC03OS4xMjMwMjVdLCBbMTYxLjc2NjM4NSwgLTc5LjE2MjI0OF0sIFsxNjAuOTI0MTYyLCAtNzkuNzMwNDgyXSwgWzE2MC43NDc4OTQsIC04MC4yMDA3MzddLCBbMTYwLjMxNjk2NCwgLTgwLjU3MzA2Nl0sIFsxNTkuNzg4MjExLCAtODAuOTQ1Mzk1XSwgWzE2MS4xMjAwMTYsIC04MS4yNzg1MDFdLCBbMTYxLjYyOTI4NywgLTgxLjY5MDAwMV0sIFsxNjIuNDkwOTkyLCAtODIuMDYyMjc4XSwgWzE2My43MDUzMzYsIC04Mi4zOTU0MzVdLCBbMTY1LjA5NTk0OSwgLTgyLjcwODk1Nl0sIFsxNjYuNjA0MTI2LCAtODMuMDIyNDc3XSwgWzE2OC44OTU2NjUsIC04My4zMzU5OThdLCBbMTY5LjQwNDc4MiwgLTgzLjgyNTg5MV0sIFsxNzIuMjgzOTM0LCAtODQuMDQxNDMzXSwgWzE3Mi40NzcwNDksIC04NC4xMTc5MTRdLCBbMTczLjIyNDA4MywgLTg0LjQxMzcxXSwgWzE3NS45ODU2NzIsIC04NC4xNTg5OTddLCBbMTc4LjI3NzIxMiwgLTg0LjQ3MjUxOF0sIFsxODAsIC04NC43MTMzOF0sIFstMTc5Ljk0MjQ5OSwgLTg0LjcyMTQ0M10sIFstMTc5LjA1ODY3NywgLTg0LjEzOTQxMl0sIFstMTc3LjI1Njc3MiwgLTg0LjQ1MjkzM10sIFstMTc3LjE0MDgwNywgLTg0LjQxNzk0MV0sIFstMTc2LjA4NDY3MywgLTg0LjA5OTI1OV0sIFstMTc1Ljk0NzIzNSwgLTg0LjExMDQ0OV0sIFstMTc1LjgyOTg4MiwgLTg0LjExNzkxNF0sIFstMTc0LjM4MjUwMywgLTg0LjUzNDMyM10sIFstMTczLjExNjU1OSwgLTg0LjExNzkxNF0sIFstMTcyLjg4OTEwNiwgLTg0LjA2MTAxOV0sIFstMTY5Ljk1MTIyMywgLTgzLjg4NDY0N10sIFstMTY4Ljk5OTk4OSwgLTg0LjExNzkxNF0sIFstMTY4LjUzMDE5OSwgLTg0LjIzNzM5XSwgWy0xNjcuMDIyMDk5LCAtODQuNTcwNDk3XSwgWy0xNjQuMTgyMTQ0LCAtODQuODI1MjFdLCBbLTE2MS45Mjk3NzUsIC04NS4xMzg3MzFdLCBbLTE1OC4wNzEzOCwgLTg1LjM3MzkxXSwgWy0xNTUuMTkyMjUzLCAtODUuMDk5NTZdLCBbLTE1MC45NDIwOTksIC04NS4yOTU1MTddLCBbLTE0OC41MzMwNzMsIC04NS42MDkwMzhdLCBbLTE0NS44ODg5MTgsIC04NS4zMTUxMDJdLCBbLTE0My4xMDc3MTgsIC04NS4wNDA3NTJdLCBbLTE0Mi44OTIyNzksIC04NC41NzA0OTddLCBbLTE0Ni44MjkwNjgsIC04NC41MzEyNzRdLCBbLTE1MC4wNjA3MzIsIC04NC4yOTYxNDZdLCBbLTE1MC45MDI5MjgsIC04My45MDQyMzJdLCBbLTE1My41ODYyMDEsIC04My42ODg2OV0sIFstMTUzLjQwOTkwNywgLTgzLjIzODAyXSwgWy0xNTMuMDM3NzU5LCAtODIuODI2NTJdLCBbLTE1Mi42NjU2MzcsIC04Mi40NTQxOTJdLCBbLTE1Mi44NjE1MTcsIC04Mi4wNDI2OTJdLCBbLTE1NC41MjYyOTksIC04MS43NjgzOTRdLCBbLTE1NS4yOTAxOCwgLTgxLjQxNTY1XSwgWy0xNTYuODM3NDUsIC04MS4xMDIxMjldLCBbLTE1NC40MDg3ODcsIC04MS4xNjA5MzddLCBbLTE1Mi4wOTc2NjIsIC04MS4wMDQxNTFdLCBbLTE1MC42NDgyOTMsIC04MS4zMzczMDldLCBbLTE0OC44NjU5OTgsIC04MS4wNDMzNzNdLCBbLTE0Ny4yMjA3NSwgLTgwLjY3MTA0NV0sIFstMTQ2LjQxNzc0OSwgLTgwLjMzNzkzOF0sIFstMTQ2Ljc3MDI4NiwgLTc5LjkyNjQzOV0sIFstMTQ4LjA2Mjk0NywgLTc5LjY1MjA4OV0sIFstMTQ5LjUzMTkwMSwgLTc5LjM1ODIwNV0sIFstMTUxLjU4ODQxNiwgLTc5LjI5OTM5N10sIFstMTUzLjM5MDMyMiwgLTc5LjE2MjI0OF0sIFstMTU1LjMyOTM3NiwgLTc5LjA2NDI2OV0sIFstMTU1Ljk3NTY2OCwgLTc4LjY5MTk0XSwgWy0xNTcuMjY4MzAyLCAtNzguMzc4NDE5XSwgWy0xNTguMDUxNzY4LCAtNzguMDI1Njc2XSwgWy0xNTguMzY1MTM0LCAtNzYuODg5MjA3XSwgWy0xNTcuODc1NDc0LCAtNzYuOTg3MjM4XSwgWy0xNTYuOTc0NTczLCAtNzcuMzAwNzU5XSwgWy0xNTUuMzI5Mzc2LCAtNzcuMjAyNzI4XSwgWy0xNTMuNzQyODMyLCAtNzcuMDY1NTc5XSwgWy0xNTIuOTIwMjQ3LCAtNzcuNDk2NjY0XSwgWy0xNTEuMzMzNzgsIC03Ny4zOTg3MzddLCBbLTE1MC4wMDE5NSwgLTc3LjE4MzE0M10sIFstMTQ4Ljc0ODQ4NiwgLTc2LjkwODg0NV0sIFstMTQ3LjYxMjQ4MywgLTc2LjU3NTczOF0sIFstMTQ2LjEwNDQwOSwgLTc2LjQ3Nzc2XSwgWy0xNDYuMTQzNTI4LCAtNzYuMTA1NDMxXSwgWy0xNDYuNDk2MDkxLCAtNzUuNzMzMTU0XSwgWy0xNDYuMjAyMzEsIC03NS4zODA0MTFdLCBbLTE0NC45MDk2MjQsIC03NS4yMDQwMzldLCBbLTE0NC4zMjIwMzcsIC03NS41MzcxOTddLCBbLTE0Mi43OTQzNTMsIC03NS4zNDEyNF0sIFstMTQxLjYzODc2NCwgLTc1LjA4NjQ3NV0sIFstMTQwLjIwOTAwNywgLTc1LjA2Njg5XSwgWy0xMzguODU3NTksIC03NC45Njg5MTFdLCBbLTEzNy41MDYyLCAtNzQuNzMzNzgzXSwgWy0xMzYuNDI4OTAxLCAtNzQuNTE4MjQxXSwgWy0xMzUuMjE0NTgzLCAtNzQuMzAyNjk5XSwgWy0xMzQuNDMxMTk0LCAtNzQuMzYxNDU1XSwgWy0xMzMuNzQ1NjU0LCAtNzQuNDM5ODQ4XSwgWy0xMzIuMjU3MTY4LCAtNzQuMzAyNjk5XSwgWy0xMzAuOTI1MzExLCAtNzQuNDc5MDE5XSwgWy0xMjkuNTU0Mjg0LCAtNzQuNDU5NDMzXSwgWy0xMjguMjQyMDM4LCAtNzQuMzIyMjg0XSwgWy0xMjYuODkwNjIyLCAtNzQuNDIwMjYzXSwgWy0xMjUuNDAyMDgyLCAtNzQuNTE4MjQxXSwgWy0xMjQuMDExNDk2LCAtNzQuNDc5MDE5XSwgWy0xMjIuNTYyMTUyLCAtNzQuNDk4NjA0XSwgWy0xMjEuMDczNjEzLCAtNzQuNTE4MjQxXSwgWy0xMTkuNzAyNTYsIC03NC40NzkwMTldLCBbLTExOC42ODQxNDUsIC03NC4xODUwODNdLCBbLTExNy40Njk4MDEsIC03NC4wMjgzNDhdLCBbLTExNi4yMTYzMTIsIC03NC4yNDM4OTFdLCBbLTExNS4wMjE1NTIsIC03NC4wNjc1MTldLCBbLTExMy45NDQzMzEsIC03My43MTQ4MjhdLCBbLTExMy4yOTc5ODgsIC03NC4wMjgzNDhdLCBbLTExMi45NDU0NTIsIC03NC4zODEwNF0sIFstMTEyLjI5OTA4MywgLTc0LjcxNDE5OF0sIFstMTExLjI2MTA1OSwgLTc0LjQyMDI2M10sIFstMTEwLjA2NjMyNSwgLTc0Ljc5MjU0XSwgWy0xMDguNzE0OTA5LCAtNzQuOTEwMTAzXSwgWy0xMDcuNTU5MzQ2LCAtNzUuMTg0NDU0XSwgWy0xMDYuMTQ5MTQ4LCAtNzUuMTI1Njk4XSwgWy0xMDQuODc2MDc0LCAtNzQuOTQ5MzI2XSwgWy0xMDMuMzY3OTQ5LCAtNzQuOTg4NDk3XSwgWy0xMDIuMDE2NTA3LCAtNzUuMTI1Njk4XSwgWy0xMDAuNjQ1NTMxLCAtNzUuMzAyMDE4XSwgWy0xMDAuMTE2NywgLTc0Ljg3MDkzM10sIFstMTAwLjc2MzA0MywgLTc0LjUzNzgyNl0sIFstMTAxLjI1MjcwMywgLTc0LjE4NTA4M10sIFstMTAyLjU0NTMzNywgLTc0LjEwNjc0Ml0sIFstMTAzLjExMzMxMywgLTczLjczNDQxM10sIFstMTAzLjMyODc1MiwgLTczLjM2MjA4NF0sIFstMTAzLjY4MTI4OSwgLTcyLjYxNzUzXSwgWy0xMDIuOTE3NDg1LCAtNzIuNzU0Njc5XSwgWy0xMDEuNjA1MjQsIC03Mi44MTM0MzZdLCBbLTEwMC4zMTI1MjgsIC03Mi43NTQ2NzldLCBbLTk5LjEzNzM4LCAtNzIuOTExNDE0XSwgWy05OC4xMTg4ODksIC03My4yMDUzNV0sIFstOTcuNjg4MDM3LCAtNzMuNTU4MDQxXSwgWy05Ni4zMzY1OTUsIC03My42MTY4NDldLCBbLTk1LjA0Mzk2MSwgLTczLjQ3OTddLCBbLTkzLjY3MjkwNywgLTczLjI4Mzc0M10sIFstOTIuNDM5MDAzLCAtNzMuMTY2MTc5XSwgWy05MS40MjA1NjQsIC03My40MDEzMDddLCBbLTkwLjA4ODczMywgLTczLjMyMjkxNF0sIFstODkuMjI2OTUxLCAtNzIuNTU4NzIyXSwgWy04OC40MjM5NTEsIC03My4wMDkzOTNdLCBbLTg3LjI2ODMzNywgLTczLjE4NTc2NF0sIFstODYuMDE0ODIyLCAtNzMuMDg3Nzg2XSwgWy04NS4xOTIyMzYsIC03My40Nzk3XSwgWy04My44Nzk5OTEsIC03My41MTg4NzFdLCBbLTgyLjY2NTY0NiwgLTczLjYzNjQzNF0sIFstODEuNDcwOTEzLCAtNzMuODUxOTc3XSwgWy04MC42ODc0NDcsIC03My40Nzk3XSwgWy04MC4yOTU3OTEsIC03My4xMjY5NTZdLCBbLTc5LjI5Njg4NiwgLTczLjUxODg3MV0sIFstNzcuOTI1ODU4LCAtNzMuNDIwODkyXSwgWy03Ni45MDczNjcsIC03My42MzY0MzRdLCBbLTc2LjIyMTg3OSwgLTczLjk2OTU0MV0sIFstNzQuODkwMDQ5LCAtNzMuODcxNjE0XSwgWy03My44NTIwMjQsIC03My42NTYwMl0sIFstNzIuODMzNTMzLCAtNzMuNDAxMzA3XSwgWy03MS42MTkyMTUsIC03My4yNjQxNTddLCBbLTcwLjIwOTA0MiwgLTczLjE0NjU0Ml0sIFstNjguOTM1OTE2LCAtNzMuMDA5MzkzXSwgWy02Ny45NTY2MjIsIC03Mi43OTM4NV0sIFstNjcuMzY5MDYxLCAtNzIuNDgwMzI5XSwgWy02Ny4xMzQwMzYsIC03Mi4wNDkyNDRdLCBbLTY3LjI1MTU0OCwgLTcxLjYzNzc0NV0sIFstNjcuNTY0OTQsIC03MS4yNDU4MzFdLCBbLTY3LjkxNzQ3NywgLTcwLjg1MzkxN10sIFstNjguMjMwODQzLCAtNzAuNDYyMDU1XSwgWy02OC40ODU0NTIsIC03MC4xMDkzMTFdLCBbLTY4LjU0NDIwOSwgLTY5LjcxNzM5N10sIFstNjguNDQ2MjgyLCAtNjkuMzI1NTM1XSwgWy02Ny45NzYyMzMsIC02OC45NTMyMDZdLCBbLTY3LjU4NDUsIC02OC41NDE3MDddLCBbLTY3LjQyNzg0MywgLTY4LjE0OTg0NF0sIFstNjcuNjIzNjcsIC02Ny43MTg3NTldLCBbLTY3Ljc0MTE4MywgLTY3LjMyNjg0NV0sIFstNjcuMjUxNTQ4LCAtNjYuODc2MTc1XSwgWy02Ni43MDMxODQsIC02Ni41ODIyNF0sIFstNjYuMDU2ODE1LCAtNjYuMjA5OTYzXSwgWy02NS4zNzEzMjcsIC02NS44OTYzOV0sIFstNjQuNTY4Mjc2LCAtNjUuNjAyNTA2XSwgWy02NC4xNzY1NDIsIC02NS4xNzE0MjNdLCBbLTYzLjYyODE1MiwgLTY0Ljg5NzA3M10sIFstNjMuMDAxMzk0LCAtNjQuNjQyMzA4XSwgWy02Mi4wNDE2ODYsIC02NC41ODM1NTJdLCBbLTYxLjQxNDkyOCwgLTY0LjI3MDAzMV0sIFstNjAuNzA5ODU1LCAtNjQuMDc0MDc0XSwgWy01OS44ODcyNjksIC02My45NTY1MV0sIFstNTkuMTYyNTg1LCAtNjMuNzAxNzQ1XSwgWy01OC41OTQ1NTcsIC02My4zODgyMjRdLCBbLTU3LjgxMTE0MywgLTYzLjI3MDY2XSwgWy01Ny4yMjM1ODIsIC02My41MjU0MjVdLCBbLTU3LjU5NTczLCAtNjMuODU4NTMyXSwgWy01OC42MTQxNDMsIC02NC4xNTI0NjddXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkFUQSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQW50YXJjdGljYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNjguOTM1LCAtNDguNjI1XSwgWzY5LjU4LCAtNDguOTRdLCBbNzAuNTI1LCAtNDkuMDY1XSwgWzcwLjU2LCAtNDkuMjU1XSwgWzcwLjI4LCAtNDkuNzFdLCBbNjguNzQ1LCAtNDkuNzc1XSwgWzY4LjcyLCAtNDkuMjQyNV0sIFs2OC44Njc1LCAtNDguODNdLCBbNjguOTM1LCAtNDguNjI1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJBVEYiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkZyZW5jaCBTb3V0aGVybiBhbmQgQW50YXJjdGljIExhbmRzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTQ1LjM5Nzk3OCwgLTQwLjc5MjU0OV0sIFsxNDYuMzY0MTIxLCAtNDEuMTM3Njk1XSwgWzE0Ni45MDg1ODQsIC00MS4wMDA1NDZdLCBbMTQ3LjY4OTI1OSwgLTQwLjgwODI1OF0sIFsxNDguMjg5MDY4LCAtNDAuODc1NDM4XSwgWzE0OC4zNTk4NjUsIC00Mi4wNjI0NDVdLCBbMTQ4LjAxNzMwMSwgLTQyLjQwNzAyNF0sIFsxNDcuOTE0MDUyLCAtNDMuMjExNTIyXSwgWzE0Ny41NjQ1NjQsIC00Mi45Mzc2ODldLCBbMTQ2Ljg3MDM0MywgLTQzLjYzNDU5N10sIFsxNDYuNjYzMzI3LCAtNDMuNTgwODU0XSwgWzE0Ni4wNDgzNzgsIC00My41NDk3NDVdLCBbMTQ1LjQzMTkzLCAtNDIuNjkzNzc2XSwgWzE0NS4yOTUwOSwgLTQyLjAzMzYxXSwgWzE0NC43MTgwNzEsIC00MS4xNjI1NTJdLCBbMTQ0Ljc0Mzc1NSwgLTQwLjcwMzk3NV0sIFsxNDUuMzk3OTc4LCAtNDAuNzkyNTQ5XV1dLCBbW1sxNDMuNTYxODExLCAtMTMuNzYzNjU2XSwgWzE0My45MjIwOTksIC0xNC41NDgzMTFdLCBbMTQ0LjU2MzcxNCwgLTE0LjE3MTE3Nl0sIFsxNDQuODk0OTA4LCAtMTQuNTk0NDU4XSwgWzE0NS4zNzQ3MjQsIC0xNC45ODQ5NzZdLCBbMTQ1LjI3MTk5MSwgLTE1LjQyODIwNV0sIFsxNDUuNDg1MjYsIC0xNi4yODU2NzJdLCBbMTQ1LjYzNzAzMywgLTE2Ljc4NDkxOF0sIFsxNDUuODg4OTA0LCAtMTYuOTA2OTI2XSwgWzE0Ni4xNjAzMDksIC0xNy43NjE2NTVdLCBbMTQ2LjA2MzY3NCwgLTE4LjI4MDA3M10sIFsxNDYuMzg3NDc4LCAtMTguOTU4Mjc0XSwgWzE0Ny40NzEwODIsIC0xOS40ODA3MjNdLCBbMTQ4LjE3NzYwMiwgLTE5Ljk1NTkzOV0sIFsxNDguODQ4NDE0LCAtMjAuMzkxMjFdLCBbMTQ4LjcxNzQ2NSwgLTIwLjYzMzQ2OV0sIFsxNDkuMjg5NDIsIC0yMS4yNjA1MTFdLCBbMTQ5LjY3ODMzNywgLTIyLjM0MjUxMl0sIFsxNTAuMDc3MzgyLCAtMjIuMTIyNzg0XSwgWzE1MC40ODI5MzksIC0yMi41NTYxNDJdLCBbMTUwLjcyNzI2NSwgLTIyLjQwMjQwNV0sIFsxNTAuODk5NTU0LCAtMjMuNDYyMjM3XSwgWzE1MS42MDkxNzUsIC0yNC4wNzYyNTZdLCBbMTUyLjA3MzU0LCAtMjQuNDU3ODg3XSwgWzE1Mi44NTUxOTcsIC0yNS4yNjc1MDFdLCBbMTUzLjEzNjE2MiwgLTI2LjA3MTE3M10sIFsxNTMuMTYxOTQ5LCAtMjYuNjQxMzE5XSwgWzE1My4wOTI5MDksIC0yNy4yNjAzXSwgWzE1My41Njk0NjksIC0yOC4xMTAwNjddLCBbMTUzLjUxMjEwOCwgLTI4Ljk5NTA3N10sIFsxNTMuMzM5MDk1LCAtMjkuNDU4MjAyXSwgWzE1My4wNjkyNDEsIC0zMC4zNTAyNF0sIFsxNTMuMDg5NjAyLCAtMzAuOTIzNjQyXSwgWzE1Mi44OTE1NzgsIC0zMS42NDA0NDZdLCBbMTUyLjQ1MDAwMiwgLTMyLjU1MDAwM10sIFsxNTEuNzA5MTE3LCAtMzMuMDQxMzQyXSwgWzE1MS4zNDM5NzIsIC0zMy44MTYwMjNdLCBbMTUxLjAxMDU1NSwgLTM0LjMxMDM2XSwgWzE1MC43MTQxMzksIC0zNS4xNzM0Nl0sIFsxNTAuMzI4MjIsIC0zNS42NzE4NzldLCBbMTUwLjA3NTIxMiwgLTM2LjQyMDIwNl0sIFsxNDkuOTQ2MTI0LCAtMzcuMTA5MDUyXSwgWzE0OS45OTcyODQsIC0zNy40MjUyNjFdLCBbMTQ5LjQyMzg4MiwgLTM3Ljc3MjY4MV0sIFsxNDguMzA0NjIyLCAtMzcuODA5MDYxXSwgWzE0Ny4zODE3MzMsIC0zOC4yMTkyMTddLCBbMTQ2LjkyMjEyMywgLTM4LjYwNjUzMl0sIFsxNDYuMzE3OTIyLCAtMzkuMDM1NzU3XSwgWzE0NS40ODk2NTIsIC0zOC41OTM3NjhdLCBbMTQ0Ljg3Njk3NiwgLTM4LjQxNzQ0OF0sIFsxNDUuMDMyMjEyLCAtMzcuODk2MTg4XSwgWzE0NC40ODU2ODIsIC0zOC4wODUzMjRdLCBbMTQzLjYwOTk3NCwgLTM4LjgwOTQ2NV0sIFsxNDIuNzQ1NDI3LCAtMzguNTM4MjY4XSwgWzE0Mi4xNzgzMywgLTM4LjM4MDAzNF0sIFsxNDEuNjA2NTgyLCAtMzguMzA4NTE0XSwgWzE0MC42Mzg1NzksIC0zOC4wMTkzMzNdLCBbMTM5Ljk5MjE1OCwgLTM3LjQwMjkzNl0sIFsxMzkuODA2NTg4LCAtMzYuNjQzNjAzXSwgWzEzOS41NzQxNDgsIC0zNi4xMzgzNjJdLCBbMTM5LjA4MjgwOCwgLTM1LjczMjc1NF0sIFsxMzguMTIwNzQ4LCAtMzUuNjEyMjk2XSwgWzEzOC40NDk0NjIsIC0zNS4xMjcyNjFdLCBbMTM4LjIwNzU2NCwgLTM0LjM4NDcyM10sIFsxMzcuNzE5MTcsIC0zNS4wNzY4MjVdLCBbMTM2LjgyOTQwNiwgLTM1LjI2MDUzNV0sIFsxMzcuMzUyMzcxLCAtMzQuNzA3MzM5XSwgWzEzNy41MDM4ODYsIC0zNC4xMzAyNjhdLCBbMTM3Ljg5MDExNiwgLTMzLjY0MDQ3OV0sIFsxMzcuODEwMzI4LCAtMzIuOTAwMDA3XSwgWzEzNi45OTY4MzcsIC0zMy43NTI3NzFdLCBbMTM2LjM3MjA2OSwgLTM0LjA5NDc2Nl0sIFsxMzUuOTg5MDQzLCAtMzQuODkwMTE4XSwgWzEzNS4yMDgyMTMsIC0zNC40Nzg2N10sIFsxMzUuMjM5MjE4LCAtMzMuOTQ3OTUzXSwgWzEzNC42MTM0MTcsIC0zMy4yMjI3NzhdLCBbMTM0LjA4NTkwNCwgLTMyLjg0ODA3Ml0sIFsxMzQuMjczOTAzLCAtMzIuNjE3MjM0XSwgWzEzMi45OTA3NzcsIC0zMi4wMTEyMjRdLCBbMTMyLjI4ODA4MSwgLTMxLjk4MjY0N10sIFsxMzEuMzI2MzMxLCAtMzEuNDk1ODAzXSwgWzEyOS41MzU3OTQsIC0zMS41OTA0MjNdLCBbMTI4LjI0MDkzOCwgLTMxLjk0ODQ4OV0sIFsxMjcuMTAyODY3LCAtMzIuMjgyMjY3XSwgWzEyNi4xNDg3MTQsIC0zMi4yMTU5NjZdLCBbMTI1LjA4ODYyMywgLTMyLjcyODc1MV0sIFsxMjQuMjIxNjQ4LCAtMzIuOTU5NDg3XSwgWzEyNC4wMjg5NDcsIC0zMy40ODM4NDddLCBbMTIzLjY1OTY2NywgLTMzLjg5MDE3OV0sIFsxMjIuODExMDM2LCAtMzMuOTE0NDY3XSwgWzEyMi4xODMwNjQsIC0zNC4wMDM0MDJdLCBbMTIxLjI5OTE5MSwgLTMzLjgyMTAzNl0sIFsxMjAuNTgwMjY4LCAtMzMuOTMwMTc3XSwgWzExOS44OTM2OTUsIC0zMy45NzYwNjVdLCBbMTE5LjI5ODg5OSwgLTM0LjUwOTM2Nl0sIFsxMTkuMDA3MzQxLCAtMzQuNDY0MTQ5XSwgWzExOC41MDU3MTgsIC0zNC43NDY4MTldLCBbMTE4LjAyNDk3MiwgLTM1LjA2NDczM10sIFsxMTcuMjk1NTA3LCAtMzUuMDI1NDU5XSwgWzExNi42MjUxMDksIC0zNS4wMjUwOTddLCBbMTE1LjU2NDM0NywgLTM0LjM4NjQyOF0sIFsxMTUuMDI2ODA5LCAtMzQuMTk2NTE3XSwgWzExNS4wNDg2MTYsIC0zMy42MjM0MjVdLCBbMTE1LjU0NTEyMywgLTMzLjQ4NzI1OF0sIFsxMTUuNzE0Njc0LCAtMzMuMjU5NTcyXSwgWzExNS42NzkzNzksIC0zMi45MDAzNjldLCBbMTE1LjgwMTY0NSwgLTMyLjIwNTA2Ml0sIFsxMTUuNjg5NjExLCAtMzEuNjEyNDM3XSwgWzExNS4xNjA5MDksIC0zMC42MDE1OTRdLCBbMTE0Ljk5NzA0MywgLTMwLjAzMDcyNV0sIFsxMTUuMDQwMDM4LCAtMjkuNDYxMDk1XSwgWzExNC42NDE5NzQsIC0yOC44MTAyMzFdLCBbMTE0LjYxNjQ5OCwgLTI4LjUxNjM5OV0sIFsxMTQuMTczNTc5LCAtMjguMTE4MDc3XSwgWzExNC4wNDg4ODQsIC0yNy4zMzQ3NjVdLCBbMTEzLjQ3NzQ5OCwgLTI2LjU0MzEzNF0sIFsxMTMuMzM4OTUzLCAtMjYuMTE2NTQ1XSwgWzExMy43NzgzNTgsIC0yNi41NDkwMjVdLCBbMTEzLjQ0MDk2MiwgLTI1LjYyMTI3OF0sIFsxMTMuOTM2OTAxLCAtMjUuOTExMjM1XSwgWzExNC4yMzI4NTIsIC0yNi4yOTg0NDZdLCBbMTE0LjIxNjE2MSwgLTI1Ljc4NjI4MV0sIFsxMTMuNzIxMjU1LCAtMjQuOTk4OTM5XSwgWzExMy42MjUzNDQsIC0yNC42ODM5NzFdLCBbMTEzLjM5MzUyMywgLTI0LjM4NDc2NF0sIFsxMTMuNTAyMDQ0LCAtMjMuODA2MzVdLCBbMTEzLjcwNjk5MywgLTIzLjU2MDIxNV0sIFsxMTMuODQzNDE4LCAtMjMuMDU5OTg3XSwgWzExMy43MzY1NTIsIC0yMi40NzU0NzVdLCBbMTE0LjE0OTc1NiwgLTIxLjc1NTg4MV0sIFsxMTQuMjI1MzA3LCAtMjIuNTE3NDg4XSwgWzExNC42NDc3NjIsIC0yMS44Mjk1Ml0sIFsxMTUuNDYwMTY3LCAtMjEuNDk1MTczXSwgWzExNS45NDczNzMsIC0yMS4wNjg2ODhdLCBbMTE2LjcxMTYxNSwgLTIwLjcwMTY4Ml0sIFsxMTcuMTY2MzE2LCAtMjAuNjIzNTk5XSwgWzExNy40NDE1NDUsIC0yMC43NDY4OTldLCBbMTE4LjIyOTU1OSwgLTIwLjM3NDIwOF0sIFsxMTguODM2MDg1LCAtMjAuMjYzMzExXSwgWzExOC45ODc4MDcsIC0yMC4wNDQyMDNdLCBbMTE5LjI1MjQ5NCwgLTE5Ljk1Mjk0Ml0sIFsxMTkuODA1MjI1LCAtMTkuOTc2NTA2XSwgWzEyMC44NTYyMiwgLTE5LjY4MzcwOF0sIFsxMjEuMzk5ODU2LCAtMTkuMjM5NzU2XSwgWzEyMS42NTUxMzgsIC0xOC43MDUzMThdLCBbMTIyLjI0MTY2NSwgLTE4LjE5NzY0OV0sIFsxMjIuMjg2NjI0LCAtMTcuNzk4NjAzXSwgWzEyMi4zMTI3NzIsIC0xNy4yNTQ5NjddLCBbMTIzLjAxMjU3NCwgLTE2LjQwNTJdLCBbMTIzLjQzMzc4OSwgLTE3LjI2ODU1OF0sIFsxMjMuODU5MzQ1LCAtMTcuMDY5MDM1XSwgWzEyMy41MDMyNDIsIC0xNi41OTY1MDZdLCBbMTIzLjgxNzA3MywgLTE2LjExMTMxNl0sIFsxMjQuMjU4Mjg3LCAtMTYuMzI3OTQ0XSwgWzEyNC4zNzk3MjYsIC0xNS41NjcwNl0sIFsxMjQuOTI2MTUzLCAtMTUuMDc1MV0sIFsxMjUuMTY3Mjc1LCAtMTQuNjgwMzk2XSwgWzEyNS42NzAwODcsIC0xNC41MTAwN10sIFsxMjUuNjg1Nzk2LCAtMTQuMjMwNjU2XSwgWzEyNi4xMjUxNDksIC0xNC4zNDczNDFdLCBbMTI2LjE0MjgyMywgLTE0LjA5NTk4N10sIFsxMjYuNTgyNTg5LCAtMTMuOTUyNzkxXSwgWzEyNy4wNjU4NjcsIC0xMy44MTc5NjhdLCBbMTI3LjgwNDYzMywgLTE0LjI3NjkwNl0sIFsxMjguMzU5NjksIC0xNC44NjkxN10sIFsxMjguOTg1NTQzLCAtMTQuODc1OTkxXSwgWzEyOS42MjE0NzMsIC0xNC45Njk3ODRdLCBbMTI5LjQwOTYsIC0xNC40MjA2N10sIFsxMjkuODg4NjQxLCAtMTMuNjE4NzAzXSwgWzEzMC4zMzk0NjYsIC0xMy4zNTczNzZdLCBbMTMwLjE4MzUwNiwgLTEzLjEwNzUyXSwgWzEzMC42MTc3OTUsIC0xMi41MzYzOTJdLCBbMTMxLjIyMzQ5NSwgLTEyLjE4MzY0OV0sIFsxMzEuNzM1MDkxLCAtMTIuMzAyNDUzXSwgWzEzMi41NzUyOTgsIC0xMi4xMTQwNDFdLCBbMTMyLjU1NzIxMiwgLTExLjYwMzAxMl0sIFsxMzEuODI0Njk4LCAtMTEuMjczNzgyXSwgWzEzMi4zNTcyMjQsIC0xMS4xMjg1MTldLCBbMTMzLjAxOTU2MSwgLTExLjM3NjQxMV0sIFsxMzMuNTUwODQ2LCAtMTEuNzg2NTE1XSwgWzEzNC4zOTMwNjgsIC0xMi4wNDIzNjVdLCBbMTM0LjY3ODYzMiwgLTExLjk0MTE4M10sIFsxMzUuMjk4NDkxLCAtMTIuMjQ4NjA2XSwgWzEzNS44ODI2OTMsIC0xMS45NjIyNjddLCBbMTM2LjI1ODM4MSwgLTEyLjA0OTM0Ml0sIFsxMzYuNDkyNDc1LCAtMTEuODU3MjA5XSwgWzEzNi45NTE2MiwgLTEyLjM1MTk1OV0sIFsxMzYuNjg1MTI1LCAtMTIuODg3MjIzXSwgWzEzNi4zMDU0MDcsIC0xMy4yOTEyM10sIFsxMzUuOTYxNzU4LCAtMTMuMzI0NTA5XSwgWzEzNi4wNzc2MTcsIC0xMy43MjQyNzhdLCBbMTM1Ljc4MzgzNiwgLTE0LjIyMzk4OV0sIFsxMzUuNDI4NjY0LCAtMTQuNzE1NDMyXSwgWzEzNS41MDAxODQsIC0xNC45OTc3NDFdLCBbMTM2LjI5NTE3NSwgLTE1LjU1MDI2NV0sIFsxMzcuMDY1MzYsIC0xNS44NzA3NjJdLCBbMTM3LjU4MDQ3MSwgLTE2LjIxNTA4Ml0sIFsxMzguMzAzMjE3LCAtMTYuODA3NjA0XSwgWzEzOC41ODUxNjQsIC0xNi44MDY2MjJdLCBbMTM5LjEwODU0MywgLTE3LjA2MjY3OV0sIFsxMzkuMjYwNTc1LCAtMTcuMzcxNjAxXSwgWzE0MC4yMTUyNDUsIC0xNy43MTA4MDVdLCBbMTQwLjg3NTQ2MywgLTE3LjM2OTA2OV0sIFsxNDEuMDcxMTEsIC0xNi44MzIwNDddLCBbMTQxLjI3NDA5NSwgLTE2LjM4ODg3XSwgWzE0MS4zOTgyMjIsIC0xNS44NDA1MzJdLCBbMTQxLjcwMjE4MywgLTE1LjA0NDkyMV0sIFsxNDEuNTYzMzgsIC0xNC41NjEzMzNdLCBbMTQxLjYzNTUyLCAtMTQuMjcwMzk1XSwgWzE0MS41MTk4NjksIC0xMy42OTgwNzhdLCBbMTQxLjY1MDkyLCAtMTIuOTQ0Njg4XSwgWzE0MS44NDI2OTEsIC0xMi43NDE1NDhdLCBbMTQxLjY4Njk5LCAtMTIuNDA3NjE0XSwgWzE0MS45Mjg2MjksIC0xMS44Nzc0NjZdLCBbMTQyLjExODQ4OCwgLTExLjMyODA0Ml0sIFsxNDIuMTQzNzA2LCAtMTEuMDQyNzM3XSwgWzE0Mi41MTUyNiwgLTEwLjY2ODE4Nl0sIFsxNDIuNzk3MzEsIC0xMS4xNTczNTVdLCBbMTQyLjg2Njc2MywgLTExLjc4NDcwN10sIFsxNDMuMTE1OTQ3LCAtMTEuOTA1NjNdLCBbMTQzLjE1ODYzMiwgLTEyLjMyNTY1Nl0sIFsxNDMuNTIyMTI0LCAtMTIuODM0MzU4XSwgWzE0My41OTcxNTgsIC0xMy40MDA0MjJdLCBbMTQzLjU2MTgxMSwgLTEzLjc2MzY1Nl1dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQVVTIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJBdXN0cmFsaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzE2Ljk3OTY2NywgNDguMTIzNDk3XSwgWzE2LjkwMzc1NCwgNDcuNzE0ODY2XSwgWzE2LjM0MDU4NCwgNDcuNzEyOTAyXSwgWzE2LjUzNDI2OCwgNDcuNDk2MTcxXSwgWzE2LjIwMjI5OCwgNDYuODUyMzg2XSwgWzE2LjAxMTY2NCwgNDYuNjgzNjExXSwgWzE1LjEzNzA5MiwgNDYuNjU4NzAzXSwgWzE0LjYzMjQ3MiwgNDYuNDMxODE3XSwgWzEzLjgwNjQ3NSwgNDYuNTA5MzA2XSwgWzEyLjM3NjQ4NSwgNDYuNzY3NTU5XSwgWzEyLjE1MzA4OCwgNDcuMTE1MzkzXSwgWzExLjE2NDgyOCwgNDYuOTQxNTc5XSwgWzExLjA0ODU1NiwgNDYuNzUxMzU5XSwgWzEwLjQ0MjcwMSwgNDYuODkzNTQ2XSwgWzkuOTMyNDQ4LCA0Ni45MjA3MjhdLCBbOS40Nzk5NywgNDcuMTAyODFdLCBbOS42MzI5MzIsIDQ3LjM0NzYwMV0sIFs5LjU5NDIyNiwgNDcuNTI1MDU4XSwgWzkuODk2MDY4LCA0Ny41ODAxOTddLCBbMTAuNDAyMDg0LCA0Ny4zMDI0ODhdLCBbMTAuNTQ0NTA0LCA0Ny41NjYzOTldLCBbMTEuNDI2NDE0LCA0Ny41MjM3NjZdLCBbMTIuMTQxMzU3LCA0Ny43MDMwODNdLCBbMTIuNjIwNzYsIDQ3LjY3MjM4OF0sIFsxMi45MzI2MjcsIDQ3LjQ2NzY0Nl0sIFsxMy4wMjU4NTEsIDQ3LjYzNzU4NF0sIFsxMi44ODQxMDMsIDQ4LjI4OTE0Nl0sIFsxMy4yNDMzNTcsIDQ4LjQxNjExNV0sIFsxMy41OTU5NDYsIDQ4Ljg3NzE3Ml0sIFsxNC4zMzg4OTgsIDQ4LjU1NTMwNV0sIFsxNC45MDE0NDcsIDQ4Ljk2NDQwMl0sIFsxNS4yNTM0MTYsIDQ5LjAzOTA3NF0sIFsxNi4wMjk2NDcsIDQ4LjczMzg5OV0sIFsxNi40OTkyODMsIDQ4Ljc4NTgwOF0sIFsxNi45NjAyODgsIDQ4LjU5Njk4Ml0sIFsxNi44Nzk5ODMsIDQ4LjQ3MDAxM10sIFsxNi45Nzk2NjcsIDQ4LjEyMzQ5N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQVVUIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJBdXN0cmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbNDUuMDAxOTg3LCAzOS43NDAwMDRdLCBbNDUuMjk4MTQ1LCAzOS40NzE3NTFdLCBbNDUuNzM5OTc4LCAzOS40NzM5OTldLCBbNDUuNzM1Mzc5LCAzOS4zMTk3MTldLCBbNDYuMTQzNjIzLCAzOC43NDEyMDFdLCBbNDUuNDU3NzIyLCAzOC44NzQxMzldLCBbNDQuOTUyNjg4LCAzOS4zMzU3NjVdLCBbNDQuNzkzOTksIDM5LjcxMzAwM10sIFs0NS4wMDE5ODcsIDM5Ljc0MDAwNF1dXSwgW1tbNDcuMzczMzE1LCA0MS4yMTk3MzJdLCBbNDcuODE1NjY2LCA0MS4xNTE0MTZdLCBbNDcuOTg3MjgzLCA0MS40MDU4MTldLCBbNDguNTg0MzUzLCA0MS44MDg4N10sIFs0OS4xMTAyNjQsIDQxLjI4MjI4N10sIFs0OS42MTg5MTUsIDQwLjU3MjkyNF0sIFs1MC4wODQ4MywgNDAuNTI2MTU3XSwgWzUwLjM5MjgyMSwgNDAuMjU2NTYxXSwgWzQ5LjU2OTIwMiwgNDAuMTc2MTAxXSwgWzQ5LjM5NTI1OSwgMzkuMzk5NDgyXSwgWzQ5LjIyMzIyOCwgMzkuMDQ5MjE5XSwgWzQ4Ljg1NjUzMiwgMzguODE1NDg2XSwgWzQ4Ljg4MzI0OSwgMzguMzIwMjQ1XSwgWzQ4LjYzNDM3NSwgMzguMjcwMzc4XSwgWzQ4LjAxMDc0NCwgMzguNzk0MDE1XSwgWzQ4LjM1NTUyOSwgMzkuMjg4NzY1XSwgWzQ4LjA2MDA5NSwgMzkuNTgyMjM1XSwgWzQ3LjY4NTA3OSwgMzkuNTA4MzY0XSwgWzQ2LjUwNTcyLCAzOC43NzA2MDVdLCBbNDYuNDgzNDk5LCAzOS40NjQxNTVdLCBbNDYuMDM0NTM0LCAzOS42MjgwMjFdLCBbNDUuNjEwMDEyLCAzOS44OTk5OTRdLCBbNDUuODkxOTA3LCA0MC4yMTg0NzZdLCBbNDUuMzU5MTc1LCA0MC41NjE1MDRdLCBbNDUuNTYwMzUxLCA0MC44MTIyOV0sIFs0NS4xNzk0OTYsIDQwLjk4NTM1NF0sIFs0NC45NzI0OCwgNDEuMjQ4MTI5XSwgWzQ1LjIxNzQyNiwgNDEuNDExNDUyXSwgWzQ1Ljk2MjYwMSwgNDEuMTIzODczXSwgWzQ2LjUwMTYzNywgNDEuMDY0NDQ1XSwgWzQ2LjYzNzkwOCwgNDEuMTgxNjczXSwgWzQ2LjE0NTQzMiwgNDEuNzIyODAyXSwgWzQ2LjQwNDk1MSwgNDEuODYwNjc1XSwgWzQ2LjY4NjA3MSwgNDEuODI3MTM3XSwgWzQ3LjM3MzMxNSwgNDEuMjE5NzMyXV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJBWkUiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkF6ZXJiYWlqYW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzI5LjMzOTk5OCwgLTQuNDk5OTgzXSwgWzI5LjI3NjM4NCwgLTMuMjkzOTA3XSwgWzI5LjAyNDkyNiwgLTIuODM5MjU4XSwgWzI5LjYzMjE3NiwgLTIuOTE3ODU4XSwgWzI5LjkzODM1OSwgLTIuMzQ4NDg3XSwgWzMwLjQ2OTY5NiwgLTIuNDEzODU4XSwgWzMwLjUyNzY3NywgLTIuODA3NjMyXSwgWzMwLjc0MzAxMywgLTMuMDM0Mjg1XSwgWzMwLjc1MjI2MywgLTMuMzU5MzNdLCBbMzAuNTA1NTYsIC0zLjU2ODU2N10sIFszMC4xMTYzMzMsIC00LjA5MDEzOF0sIFsyOS43NTM1MTIsIC00LjQ1MjM4OV0sIFsyOS4zMzk5OTgsIC00LjQ5OTk4M11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkRJIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCdXJ1bmRpIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szLjMxNDk3MSwgNTEuMzQ1NzgxXSwgWzQuMDQ3MDcxLCA1MS4yNjcyNTldLCBbNC45NzM5OTEsIDUxLjQ3NTAyNF0sIFs1LjYwNjk3NiwgNTEuMDM3Mjk4XSwgWzYuMTU2NjU4LCA1MC44MDM3MjFdLCBbNi4wNDMwNzMsIDUwLjEyODA1Ml0sIFs1Ljc4MjQxNywgNTAuMDkwMzI4XSwgWzUuNjc0MDUyLCA0OS41Mjk0ODRdLCBbNC43OTkyMjIsIDQ5Ljk4NTM3M10sIFs0LjI4NjAyMywgNDkuOTA3NDk3XSwgWzMuNTg4MTg0LCA1MC4zNzg5OTJdLCBbMy4xMjMyNTIsIDUwLjc4MDM2M10sIFsyLjY1ODQyMiwgNTAuNzk2ODQ4XSwgWzIuNTEzNTczLCA1MS4xNDg1MDZdLCBbMy4zMTQ5NzEsIDUxLjM0NTc4MV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkVMIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCZWxnaXVtIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1syLjY5MTcwMiwgNi4yNTg4MTddLCBbMS44NjUyNDEsIDYuMTQyMTU4XSwgWzEuNjE4OTUxLCA2LjgzMjAzOF0sIFsxLjY2NDQ3OCwgOS4xMjg1OV0sIFsxLjQ2MzA0MywgOS4zMzQ2MjRdLCBbMS40MjUwNjEsIDkuODI1Mzk1XSwgWzEuMDc3Nzk1LCAxMC4xNzU2MDddLCBbMC43NzIzMzYsIDEwLjQ3MDgwOF0sIFswLjg5OTU2MywgMTAuOTk3MzM5XSwgWzEuMjQzNDcsIDExLjExMDUxMV0sIFsxLjQ0NzE3OCwgMTEuNTQ3NzE5XSwgWzEuOTM1OTg2LCAxMS42NDExNV0sIFsyLjE1NDQ3NCwgMTEuOTQwMTVdLCBbMi40OTAxNjQsIDEyLjIzMzA1Ml0sIFsyLjg0ODY0MywgMTIuMjM1NjM2XSwgWzMuNjExMTgsIDExLjY2MDE2N10sIFszLjU3MjIxNiwgMTEuMzI3OTM5XSwgWzMuNzk3MTEyLCAxMC43MzQ3NDZdLCBbMy42MDAwNywgMTAuMzMyMTg2XSwgWzMuNzA1NDM4LCAxMC4wNjMyMV0sIFszLjIyMDM1MiwgOS40NDQxNTNdLCBbMi45MTIzMDgsIDkuMTM3NjA4XSwgWzIuNzIzNzkzLCA4LjUwNjg0NV0sIFsyLjc0OTA2MywgNy44NzA3MzRdLCBbMi42OTE3MDIsIDYuMjU4ODE3XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCRU4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJlbmluIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMi44Mjc0OTYsIDkuNjQyNDYxXSwgWy0zLjUxMTg5OSwgOS45MDAzMjZdLCBbLTMuOTgwNDQ5LCA5Ljg2MjM0NF0sIFstNC4zMzAyNDcsIDkuNjEwODM1XSwgWy00Ljc3OTg4NCwgOS44MjE5ODVdLCBbLTQuOTU0NjUzLCAxMC4xNTI3MTRdLCBbLTUuNDA0MzQyLCAxMC4zNzA3MzddLCBbLTUuNDcwNTY1LCAxMC45NTEyN10sIFstNS4xOTc4NDMsIDExLjM3NTE0Nl0sIFstNS4yMjA5NDIsIDExLjcxMzg1OV0sIFstNC40MjcxNjYsIDEyLjU0MjY0Nl0sIFstNC4yODA0MDUsIDEzLjIyODQ0NF0sIFstNC4wMDYzOTEsIDEzLjQ3MjQ4NV0sIFstMy41MjI4MDMsIDEzLjMzNzY2Ml0sIFstMy4xMDM3MDcsIDEzLjU0MTI2N10sIFstMi45Njc2OTQsIDEzLjc5ODE1XSwgWy0yLjE5MTgyNSwgMTQuMjQ2NDE4XSwgWy0yLjAwMTAzNSwgMTQuNTU5MDA4XSwgWy0xLjA2NjM2MywgMTQuOTczODE1XSwgWy0wLjUxNTg1NCwgMTUuMTE2MTU4XSwgWy0wLjI2NjI1NywgMTQuOTI0MzA5XSwgWzAuMzc0ODkyLCAxNC45Mjg5MDhdLCBbMC4yOTU2NDYsIDE0LjQ0NDIzNV0sIFswLjQyOTkyOCwgMTMuOTg4NzMzXSwgWzAuOTkzMDQ2LCAxMy4zMzU3NV0sIFsxLjAyNDEwMywgMTIuODUxODI2XSwgWzIuMTc3MTA4LCAxMi42MjUwMThdLCBbMi4xNTQ0NzQsIDExLjk0MDE1XSwgWzEuOTM1OTg2LCAxMS42NDExNV0sIFsxLjQ0NzE3OCwgMTEuNTQ3NzE5XSwgWzEuMjQzNDcsIDExLjExMDUxMV0sIFswLjg5OTU2MywgMTAuOTk3MzM5XSwgWzAuMDIzODAzLCAxMS4wMTg2ODJdLCBbLTAuNDM4NzAyLCAxMS4wOTgzNDFdLCBbLTAuNzYxNTc2LCAxMC45MzY5M10sIFstMS4yMDMzNTgsIDExLjAwOTgxOV0sIFstMi45NDA0MDksIDEwLjk2MjY5XSwgWy0yLjk2Mzg5NiwgMTAuMzk1MzM1XSwgWy0yLjgyNzQ5NiwgOS42NDI0NjFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJGQSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQnVya2luYSBGYXNvIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s5Mi42NzI3MjEsIDIyLjA0MTIzOV0sIFs5Mi42NTIyNTcsIDIxLjMyNDA0OF0sIFs5Mi4zMDMyMzQsIDIxLjQ3NTQ4NV0sIFs5Mi4zNjg1NTQsIDIwLjY3MDg4M10sIFs5Mi4wODI4ODYsIDIxLjE5MjE5NV0sIFs5Mi4wMjUyMTUsIDIxLjcwMTU3XSwgWzkxLjgzNDg5MSwgMjIuMTgyOTM2XSwgWzkxLjQxNzA4NywgMjIuNzY1MDE5XSwgWzkwLjQ5NjAwNiwgMjIuODA1MDE3XSwgWzkwLjU4Njk1NywgMjIuMzkyNzk0XSwgWzkwLjI3Mjk3MSwgMjEuODM2MzY4XSwgWzg5Ljg0NzQ2NywgMjIuMDM5MTQ2XSwgWzg5LjcwMjA1LCAyMS44NTcxMTZdLCBbODkuNDE4ODYzLCAyMS45NjYxNzldLCBbODkuMDMxOTYxLCAyMi4wNTU3MDhdLCBbODguODc2MzEyLCAyMi44NzkxNDZdLCBbODguNTI5NzcsIDIzLjYzMTE0Ml0sIFs4OC42OTk5NCwgMjQuMjMzNzE1XSwgWzg4LjA4NDQyMiwgMjQuNTAxNjU3XSwgWzg4LjMwNjM3MywgMjQuODY2MDc5XSwgWzg4LjkzMTU1NCwgMjUuMjM4NjkyXSwgWzg4LjIwOTc4OSwgMjUuNzY4MDY2XSwgWzg4LjU2MzA0OSwgMjYuNDQ2NTI2XSwgWzg5LjM1NTA5NCwgMjYuMDE0NDA3XSwgWzg5LjgzMjQ4MSwgMjUuOTY1MDgyXSwgWzg5LjkyMDY5MywgMjUuMjY5NzVdLCBbOTAuODcyMjExLCAyNS4xMzI2MDFdLCBbOTEuNzk5NTk2LCAyNS4xNDc0MzJdLCBbOTIuMzc2MjAyLCAyNC45NzY2OTNdLCBbOTEuOTE1MDkzLCAyNC4xMzA0MTRdLCBbOTEuNDY3NzMsIDI0LjA3MjYzOV0sIFs5MS4xNTg5NjMsIDIzLjUwMzUyN10sIFs5MS43MDY0NzUsIDIyLjk4NTI2NF0sIFs5MS44Njk5MjgsIDIzLjYyNDM0Nl0sIFs5Mi4xNDYwMzUsIDIzLjYyNzQ5OV0sIFs5Mi42NzI3MjEsIDIyLjA0MTIzOV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkdEIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCYW5nbGFkZXNoIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1syMi42NTcxNSwgNDQuMjM0OTIzXSwgWzIyLjk0NDgzMiwgNDMuODIzNzg1XSwgWzIzLjMzMjMwMiwgNDMuODk3MDExXSwgWzI0LjEwMDY3OSwgNDMuNzQxMDUxXSwgWzI1LjU2OTI3MiwgNDMuNjg4NDQ1XSwgWzI2LjA2NTE1OSwgNDMuOTQzNDk0XSwgWzI3LjI0MjQsIDQ0LjE3NTk4Nl0sIFsyNy45NzAxMDcsIDQzLjgxMjQ2OF0sIFsyOC41NTgwODEsIDQzLjcwNzQ2Ml0sIFsyOC4wMzkwOTUsIDQzLjI5MzE3Ml0sIFsyNy42NzM4OTgsIDQyLjU3Nzg5Ml0sIFsyNy45OTY3MiwgNDIuMDA3MzU5XSwgWzI3LjEzNTczOSwgNDIuMTQxNDg1XSwgWzI2LjExNzA0MiwgNDEuODI2OTA1XSwgWzI2LjEwNjEzOCwgNDEuMzI4ODk5XSwgWzI1LjE5NzIwMSwgNDEuMjM0NDg2XSwgWzI0LjQ5MjY0NSwgNDEuNTgzODk2XSwgWzIzLjY5MjA3NCwgNDEuMzA5MDgxXSwgWzIyLjk1MjM3NywgNDEuMzM3OTk0XSwgWzIyLjg4MTM3NCwgNDEuOTk5Mjk3XSwgWzIyLjM4MDUyNiwgNDIuMzIwMjZdLCBbMjIuNTQ1MDEyLCA0Mi40NjEzNjJdLCBbMjIuNDM2NTk1LCA0Mi41ODAzMjFdLCBbMjIuNjA0ODAxLCA0Mi44OTg1MTldLCBbMjIuOTg2MDE5LCA0My4yMTExNjFdLCBbMjIuNTAwMTU3LCA0My42NDI4MTRdLCBbMjIuNDEwNDQ2LCA0NC4wMDgwNjNdLCBbMjIuNjU3MTUsIDQ0LjIzNDkyM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQkdSIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCdWxnYXJpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy03Ny41MzQ2NiwgMjMuNzU5NzVdLCBbLTc3Ljc4LCAyMy43MV0sIFstNzguMDM0MDUsIDI0LjI4NjE1XSwgWy03OC40MDg0OCwgMjQuNTc1NjRdLCBbLTc4LjE5MDg3LCAyNS4yMTAzXSwgWy03Ny44OSwgMjUuMTddLCBbLTc3LjU0LCAyNC4zNF0sIFstNzcuNTM0NjYsIDIzLjc1OTc1XV1dLCBbW1stNzcuODIsIDI2LjU4XSwgWy03OC45MSwgMjYuNDJdLCBbLTc4Ljk4LCAyNi43OV0sIFstNzguNTEsIDI2Ljg3XSwgWy03Ny44NSwgMjYuODRdLCBbLTc3LjgyLCAyNi41OF1dXSwgW1tbLTc3LCAyNi41OV0sIFstNzcuMTcyNTUsIDI1Ljg3OTE4XSwgWy03Ny4zNTY0MSwgMjYuMDA3MzVdLCBbLTc3LjM0LCAyNi41M10sIFstNzcuNzg4MDIsIDI2LjkyNTE2XSwgWy03Ny43OSwgMjcuMDRdLCBbLTc3LCAyNi41OV1dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQkhTIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJUaGUgQmFoYW1hcyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTkuMDA1NDg2LCA0NC44NjAyMzRdLCBbMTkuMzY4MDMsIDQ0Ljg2M10sIFsxOS4xMTc2MSwgNDQuNDIzMDddLCBbMTkuNTk5NzYsIDQ0LjAzODQ3XSwgWzE5LjQ1NCwgNDMuNTY4MV0sIFsxOS4yMTg1MiwgNDMuNTIzODRdLCBbMTkuMDMxNjUsIDQzLjQzMjUzXSwgWzE4LjcwNjQ4LCA0My4yMDAxMV0sIFsxOC41NiwgNDIuNjVdLCBbMTcuNjc0OTIyLCA0My4wMjg1NjNdLCBbMTcuMjk3MzczLCA0My40NDYzNDFdLCBbMTYuOTE2MTU2LCA0My42Njc3MjJdLCBbMTYuNDU2NDQzLCA0NC4wNDEyNF0sIFsxNi4yMzk2NiwgNDQuMzUxMTQzXSwgWzE1Ljc1MDAyNiwgNDQuODE4NzEyXSwgWzE1Ljk1OTM2NywgNDUuMjMzNzc3XSwgWzE2LjMxODE1NywgNDUuMDA0MTI3XSwgWzE2LjUzNDkzOSwgNDUuMjExNjA4XSwgWzE3LjAwMjE0NiwgNDUuMjMzNzc3XSwgWzE3Ljg2MTc4MywgNDUuMDY3NzRdLCBbMTguNTUzMjE0LCA0NS4wODE1OV0sIFsxOS4wMDU0ODYsIDQ0Ljg2MDIzNF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQklIIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCb3NuaWEgYW5kIEhlcnplZ292aW5hIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1syMy40ODQxMjgsIDUzLjkxMjQ5OF0sIFsyNC40NTA2ODQsIDUzLjkwNTcwMl0sIFsyNS41MzYzNTQsIDU0LjI4MjQyM10sIFsyNS43Njg0MzMsIDU0Ljg0Njk2M10sIFsyNi41ODgyNzksIDU1LjE2NzE3Nl0sIFsyNi40OTQzMzEsIDU1LjYxNTEwN10sIFsyNy4xMDI0NiwgNTUuNzgzMzE0XSwgWzI4LjE3NjcwOSwgNTYuMTY5MTNdLCBbMjkuMjI5NTEzLCA1NS45MTgzNDRdLCBbMjkuMzcxNTcyLCA1NS42NzAwOTFdLCBbMjkuODk2Mjk0LCA1NS43ODk0NjNdLCBbMzAuODczOTA5LCA1NS41NTA5NzZdLCBbMzAuOTcxODM2LCA1NS4wODE1NDhdLCBbMzAuNzU3NTM0LCA1NC44MTE3NzFdLCBbMzEuMzg0NDcyLCA1NC4xNTcwNTZdLCBbMzEuNzkxNDI0LCA1My45NzQ2MzldLCBbMzEuNzMxMjczLCA1My43OTQwMjldLCBbMzIuNDA1NTk5LCA1My42MTgwNDVdLCBbMzIuNjkzNjQzLCA1My4zNTE0MjFdLCBbMzIuMzA0NTE5LCA1My4xMzI3MjZdLCBbMzEuNDk3NjQ0LCA1My4xNjc0MjddLCBbMzEuMzA1MjAxLCA1My4wNzM5OTZdLCBbMzEuNTQwMDE4LCA1Mi43NDIwNTJdLCBbMzEuNzg1OTk4LCA1Mi4xMDE2NzhdLCBbMzAuOTI3NTQ5LCA1Mi4wNDIzNTNdLCBbMzAuNjE5NDU0LCA1MS44MjI4MDZdLCBbMzAuNTU1MTE3LCA1MS4zMTk1MDNdLCBbMzAuMTU3MzY0LCA1MS40MTYxMzhdLCBbMjkuMjU0OTM4LCA1MS4zNjgyMzRdLCBbMjguOTkyODM1LCA1MS42MDIwNDRdLCBbMjguNjE3NjEzLCA1MS40Mjc3MTRdLCBbMjguMjQxNjE1LCA1MS41NzIyMjddLCBbMjcuNDU0MDY2LCA1MS41OTIzMDNdLCBbMjYuMzM3OTU5LCA1MS44MzIyODldLCBbMjUuMzI3Nzg4LCA1MS45MTA2NTZdLCBbMjQuNTUzMTA2LCA1MS44ODg0NjFdLCBbMjQuMDA1MDc4LCA1MS42MTc0NDRdLCBbMjMuNTI3MDcxLCA1MS41Nzg0NTRdLCBbMjMuNTA4MDAyLCA1Mi4wMjM2NDddLCBbMjMuMTk5NDk0LCA1Mi40ODY5NzddLCBbMjMuNzk5MTk5LCA1Mi42OTEwOTldLCBbMjMuODA0OTM1LCA1My4wODk3MzFdLCBbMjMuNTI3NTM2LCA1My40NzAxMjJdLCBbMjMuNDg0MTI4LCA1My45MTI0OThdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJMUiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQmVsYXJ1cyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTg5LjE0MzA4LCAxNy44MDgzMTldLCBbLTg5LjE1MDkwOSwgMTcuOTU1NDY4XSwgWy04OS4wMjk4NTcsIDE4LjAwMTUxMV0sIFstODguODQ4MzQ0LCAxNy44ODMxOThdLCBbLTg4LjQ5MDEyMywgMTguNDg2ODMxXSwgWy04OC4zMDAwMzEsIDE4LjQ5OTk4Ml0sIFstODguMjk2MzM2LCAxOC4zNTMyNzNdLCBbLTg4LjEwNjgxMywgMTguMzQ4Njc0XSwgWy04OC4xMjM0NzksIDE4LjA3NjY3NV0sIFstODguMjg1MzU1LCAxNy42NDQxNDNdLCBbLTg4LjE5Nzg2NywgMTcuNDg5NDc1XSwgWy04OC4zMDI2NDEsIDE3LjEzMTY5NF0sIFstODguMjM5NTE4LCAxNy4wMzYwNjZdLCBbLTg4LjM1NTQyOCwgMTYuNTMwNzc0XSwgWy04OC41NTE4MjUsIDE2LjI2NTQ2N10sIFstODguNzMyNDM0LCAxNi4yMzM2MzVdLCBbLTg4LjkzMDYxMywgMTUuODg3MjczXSwgWy04OS4yMjkxMjIsIDE1Ljg4NjkzOF0sIFstODkuMTUwODA2LCAxNy4wMTU1NzddLCBbLTg5LjE0MzA4LCAxNy44MDgzMTldXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJMWiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQmVsaXplIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNjIuODQ2NDY4LCAtMjIuMDM0OTg1XSwgWy02My45ODY4MzgsIC0yMS45OTM2NDRdLCBbLTY0LjM3NzAyMSwgLTIyLjc5ODA5MV0sIFstNjQuOTY0ODkyLCAtMjIuMDc1ODYyXSwgWy02Ni4yNzMzMzksIC0yMS44MzIzMV0sIFstNjcuMTA2Njc0LCAtMjIuNzM1OTI1XSwgWy02Ny44MjgxOCwgLTIyLjg3MjkxOV0sIFstNjguMjE5OTEzLCAtMjEuNDk0MzQ3XSwgWy02OC43NTcxNjcsIC0yMC4zNzI2NThdLCBbLTY4LjQ0MjIyNSwgLTE5LjQwNTA2OF0sIFstNjguOTY2ODE4LCAtMTguOTgxNjgzXSwgWy02OS4xMDAyNDcsIC0xOC4yNjAxMjVdLCBbLTY5LjU5MDQyNCwgLTE3LjU4MDAxMl0sIFstNjguOTU5NjM1LCAtMTYuNTAwNjk4XSwgWy02OS4zODk3NjQsIC0xNS42NjAxMjldLCBbLTY5LjE2MDM0NywgLTE1LjMyMzk3NF0sIFstNjkuMzM5NTM1LCAtMTQuOTUzMTk1XSwgWy02OC45NDg4ODcsIC0xNC40NTM2MzldLCBbLTY4LjkyOTIyNCwgLTEzLjYwMjY4NF0sIFstNjguODgwMDgsIC0xMi44OTk3MjldLCBbLTY4LjY2NTA4LCAtMTIuNTYxM10sIFstNjkuNTI5Njc4LCAtMTAuOTUxNzM0XSwgWy02OC43ODYxNTgsIC0xMS4wMzYzOF0sIFstNjguMjcxMjU0LCAtMTEuMDE0NTIxXSwgWy02OC4wNDgxOTIsIC0xMC43MTIwNTldLCBbLTY3LjE3MzgwMSwgLTEwLjMwNjgxMl0sIFstNjYuNjQ2OTA4LCAtOS45MzEzMzFdLCBbLTY1LjMzODQzNSwgLTkuNzYxOTg4XSwgWy02NS40NDQ4MzcsIC0xMC41MTE0NTFdLCBbLTY1LjMyMTg5OSwgLTEwLjg5NTg3Ml0sIFstNjUuNDAyMjgxLCAtMTEuNTY2MjddLCBbLTY0LjMxNjM1MywgLTEyLjQ2MTk3OF0sIFstNjMuMTk2NDk5LCAtMTIuNjI3MDMzXSwgWy02Mi44MDMwNiwgLTEzLjAwMDY1M10sIFstNjIuMTI3MDgxLCAtMTMuMTk4NzgxXSwgWy02MS43MTMyMDQsIC0xMy40ODkyMDJdLCBbLTYxLjA4NDEyMSwgLTEzLjQ3OTM4NF0sIFstNjAuNTAzMzA0LCAtMTMuNzc1OTU1XSwgWy02MC40NTkxOTgsIC0xNC4zNTQwMDddLCBbLTYwLjI2NDMyNiwgLTE0LjY0NTk3OV0sIFstNjAuMjUxMTQ5LCAtMTUuMDc3MjE5XSwgWy02MC41NDI5NjYsIC0xNS4wOTM5MV0sIFstNjAuMTU4MzksIC0xNi4yNTgyODRdLCBbLTU4LjI0MTIyLCAtMTYuMjk5NTczXSwgWy01OC4zODgwNTgsIC0xNi44NzcxMDldLCBbLTU4LjI4MDgwNCwgLTE3LjI3MTcxXSwgWy01Ny43MzQ1NTgsIC0xNy41NTI0NjhdLCBbLTU3LjQ5ODM3MSwgLTE4LjE3NDE4OF0sIFstNTcuNjc2MDA5LCAtMTguOTYxODRdLCBbLTU3Ljk0OTk5NywgLTE5LjQwMDAwNF0sIFstNTcuODUzODAyLCAtMTkuOTY5OTk1XSwgWy01OC4xNjYzOTIsIC0yMC4xNzY3MDFdLCBbLTU4LjE4MzQ3MSwgLTE5Ljg2ODM5OV0sIFstNTkuMTE1MDQyLCAtMTkuMzU2OTA2XSwgWy02MC4wNDM1NjUsIC0xOS4zNDI3NDddLCBbLTYxLjc4NjMyNiwgLTE5LjYzMzczN10sIFstNjIuMjY1OTYxLCAtMjAuNTEzNzM1XSwgWy02Mi4yOTExNzksIC0yMS4wNTE2MzVdLCBbLTYyLjY4NTA1NywgLTIyLjI0OTAyOV0sIFstNjIuODQ2NDY4LCAtMjIuMDM0OTg1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJCT0wiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkJvbGl2aWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01Ny42MjUxMzMsIC0zMC4yMTYyOTVdLCBbLTU2LjI5MDksIC0yOC44NTI3NjFdLCBbLTU1LjE2MjI4NiwgLTI3Ljg4MTkxNV0sIFstNTQuNDkwNzI1LCAtMjcuNDc0NzU3XSwgWy01My42NDg3MzUsIC0yNi45MjM0NzNdLCBbLTUzLjYyODM0OSwgLTI2LjEyNDg2NV0sIFstNTQuMTMwMDUsIC0yNS41NDc2MzldLCBbLTU0LjYyNTI5MSwgLTI1LjczOTI1NV0sIFstNTQuNDI4OTQ2LCAtMjUuMTYyMTg1XSwgWy01NC4yOTM0NzYsIC0yNC41NzA4XSwgWy01NC4yOTI5NiwgLTI0LjAyMTAxNF0sIFstNTQuNjUyODM0LCAtMjMuODM5NTc4XSwgWy01NS4wMjc5MDIsIC0yNC4wMDEyNzRdLCBbLTU1LjQwMDc0NywgLTIzLjk1NjkzNV0sIFstNTUuNTE3NjM5LCAtMjMuNTcxOTk4XSwgWy01NS42MTA2ODMsIC0yMi42NTU2MTldLCBbLTU1Ljc5Nzk1OCwgLTIyLjM1NjkzXSwgWy01Ni40NzMzMTcsIC0yMi4wODYzXSwgWy01Ni44ODE1MSwgLTIyLjI4MjE1NF0sIFstNTcuOTM3MTU2LCAtMjIuMDkwMTc2XSwgWy01Ny44NzA2NzQsIC0yMC43MzI2ODhdLCBbLTU4LjE2NjM5MiwgLTIwLjE3NjcwMV0sIFstNTcuODUzODAyLCAtMTkuOTY5OTk1XSwgWy01Ny45NDk5OTcsIC0xOS40MDAwMDRdLCBbLTU3LjY3NjAwOSwgLTE4Ljk2MTg0XSwgWy01Ny40OTgzNzEsIC0xOC4xNzQxODhdLCBbLTU3LjczNDU1OCwgLTE3LjU1MjQ2OF0sIFstNTguMjgwODA0LCAtMTcuMjcxNzFdLCBbLTU4LjM4ODA1OCwgLTE2Ljg3NzEwOV0sIFstNTguMjQxMjIsIC0xNi4yOTk1NzNdLCBbLTYwLjE1ODM5LCAtMTYuMjU4Mjg0XSwgWy02MC41NDI5NjYsIC0xNS4wOTM5MV0sIFstNjAuMjUxMTQ5LCAtMTUuMDc3MjE5XSwgWy02MC4yNjQzMjYsIC0xNC42NDU5NzldLCBbLTYwLjQ1OTE5OCwgLTE0LjM1NDAwN10sIFstNjAuNTAzMzA0LCAtMTMuNzc1OTU1XSwgWy02MS4wODQxMjEsIC0xMy40NzkzODRdLCBbLTYxLjcxMzIwNCwgLTEzLjQ4OTIwMl0sIFstNjIuMTI3MDgxLCAtMTMuMTk4NzgxXSwgWy02Mi44MDMwNiwgLTEzLjAwMDY1M10sIFstNjMuMTk2NDk5LCAtMTIuNjI3MDMzXSwgWy02NC4zMTYzNTMsIC0xMi40NjE5NzhdLCBbLTY1LjQwMjI4MSwgLTExLjU2NjI3XSwgWy02NS4zMjE4OTksIC0xMC44OTU4NzJdLCBbLTY1LjQ0NDgzNywgLTEwLjUxMTQ1MV0sIFstNjUuMzM4NDM1LCAtOS43NjE5ODhdLCBbLTY2LjY0NjkwOCwgLTkuOTMxMzMxXSwgWy02Ny4xNzM4MDEsIC0xMC4zMDY4MTJdLCBbLTY4LjA0ODE5MiwgLTEwLjcxMjA1OV0sIFstNjguMjcxMjU0LCAtMTEuMDE0NTIxXSwgWy02OC43ODYxNTgsIC0xMS4wMzYzOF0sIFstNjkuNTI5Njc4LCAtMTAuOTUxNzM0XSwgWy03MC4wOTM3NTIsIC0xMS4xMjM5NzJdLCBbLTcwLjU0ODY4NiwgLTExLjAwOTE0N10sIFstNzAuNDgxODk0LCAtOS40OTAxMThdLCBbLTcxLjMwMjQxMiwgLTEwLjA3OTQzNl0sIFstNzIuMTg0ODkxLCAtMTAuMDUzNTk4XSwgWy03Mi41NjMwMzMsIC05LjUyMDE5NF0sIFstNzMuMjI2NzEzLCAtOS40NjIyMTNdLCBbLTczLjAxNTM4MywgLTkuMDMyODMzXSwgWy03My41NzEwNTksIC04LjQyNDQ0N10sIFstNzMuOTg3MjM1LCAtNy41MjM4M10sIFstNzMuNzIzNDAxLCAtNy4zNDA5OTldLCBbLTczLjcyNDQ4NywgLTYuOTE4NTk1XSwgWy03My4xMjAwMjcsIC02LjYyOTkzMV0sIFstNzMuMjE5NzExLCAtNi4wODkxODldLCBbLTcyLjk2NDUwNywgLTUuNzQxMjUxXSwgWy03Mi44OTE5MjgsIC01LjI3NDU2MV0sIFstNzEuNzQ4NDA2LCAtNC41OTM5ODNdLCBbLTcwLjkyODg0MywgLTQuNDAxNTkxXSwgWy03MC43OTQ3NjksIC00LjI1MTI2NV0sIFstNjkuODkzNjM1LCAtNC4yOTgxODddLCBbLTY5LjQ0NDEwMiwgLTEuNTU2Mjg3XSwgWy02OS40MjA0ODYsIC0xLjEyMjYxOV0sIFstNjkuNTc3MDY1LCAtMC41NDk5OTJdLCBbLTcwLjAyMDY1NiwgLTAuMTg1MTU2XSwgWy03MC4wMTU1NjYsIDAuNTQxNDE0XSwgWy02OS40NTIzOTYsIDAuNzA2MTU5XSwgWy02OS4yNTI0MzQsIDAuNjAyNjUxXSwgWy02OS4yMTg2MzgsIDAuOTg1Njc3XSwgWy02OS44MDQ1OTcsIDEuMDg5MDgxXSwgWy02OS44MTY5NzMsIDEuNzE0ODA1XSwgWy02Ny44Njg1NjUsIDEuNjkyNDU1XSwgWy02Ny41Mzc4MSwgMi4wMzcxNjNdLCBbLTY3LjI1OTk5OCwgMS43MTk5OTldLCBbLTY3LjA2NTA0OCwgMS4xMzAxMTJdLCBbLTY2Ljg3NjMyNiwgMS4yNTMzNjFdLCBbLTY2LjMyNTc2NSwgMC43MjQ0NTJdLCBbLTY1LjU0ODI2NywgMC43ODkyNTRdLCBbLTY1LjM1NDcxMywgMS4wOTUyODJdLCBbLTY0LjYxMTAxMiwgMS4zMjg3MzFdLCBbLTY0LjE5OTMwNiwgMS40OTI4NTVdLCBbLTY0LjA4MzA4NSwgMS45MTYzNjldLCBbLTYzLjM2ODc4OCwgMi4yMDA5XSwgWy02My40MjI4NjcsIDIuNDExMDY4XSwgWy02NC4yNjk5OTksIDIuNDk3MDA2XSwgWy02NC40MDg4MjgsIDMuMTI2Nzg2XSwgWy02NC4zNjg0OTQsIDMuNzk3MjFdLCBbLTY0LjgxNjA2NCwgNC4wNTY0NDVdLCBbLTY0LjYyODY1OSwgNC4xNDg0ODFdLCBbLTYzLjg4ODM0MywgNC4wMjA1M10sIFstNjMuMDkzMTk4LCAzLjc3MDU3MV0sIFstNjIuODA0NTMzLCA0LjAwNjk2NV0sIFstNjIuMDg1NDMsIDQuMTYyMTI0XSwgWy02MC45NjY4OTMsIDQuNTM2NDY4XSwgWy02MC42MDExNzksIDQuOTE4MDk4XSwgWy02MC43MzM1NzQsIDUuMjAwMjc3XSwgWy02MC4yMTM2ODMsIDUuMjQ0NDg2XSwgWy01OS45ODA5NTksIDUuMDE0MDYxXSwgWy02MC4xMTEwMDIsIDQuNTc0OTY3XSwgWy01OS43Njc0MDYsIDQuNDIzNTAzXSwgWy01OS41MzgwNCwgMy45NTg4MDNdLCBbLTU5LjgxNTQxMywgMy42MDY0OTldLCBbLTU5Ljk3NDUyNSwgMi43NTUyMzNdLCBbLTU5LjcxODU0NiwgMi4yNDk2M10sIFstNTkuNjQ2MDQ0LCAxLjc4Njg5NF0sIFstNTkuMDMwODYyLCAxLjMxNzY5OF0sIFstNTguNTQwMDEzLCAxLjI2ODA4OF0sIFstNTguNDI5NDc3LCAxLjQ2Mzk0Ml0sIFstNTguMTEzNDUsIDEuNTA3MTk1XSwgWy01Ny42NjA5NzEsIDEuNjgyNTg1XSwgWy01Ny4zMzU4MjMsIDEuOTQ4NTM4XSwgWy01Ni43ODI3MDQsIDEuODYzNzExXSwgWy01Ni41MzkzODYsIDEuODk5NTIzXSwgWy01NS45OTU2OTgsIDEuODE3NjY3XSwgWy01NS45MDU2LCAyLjAyMTk5Nl0sIFstNTYuMDczMzQyLCAyLjIyMDc5NV0sIFstNTUuOTczMzIyLCAyLjUxMDM2NF0sIFstNTUuNTY5NzU1LCAyLjQyMTUwNl0sIFstNTUuMDk3NTg3LCAyLjUyMzc0OF0sIFstNTQuNTI0NzU0LCAyLjMxMTg0OV0sIFstNTQuMDg4MDYzLCAyLjEwNTU1N10sIFstNTMuNzc4NTIxLCAyLjM3NjcwM10sIFstNTMuNTU0ODM5LCAyLjMzNDg5N10sIFstNTMuNDE4NDY1LCAyLjA1MzM4OV0sIFstNTIuOTM5NjU3LCAyLjEyNDg1OF0sIFstNTIuNTU2NDI1LCAyLjUwNDcwNV0sIFstNTIuMjQ5MzM4LCAzLjI0MTA5NF0sIFstNTEuNjU3Nzk3LCA0LjE1NjIzMl0sIFstNTEuMzE3MTQ2LCA0LjIwMzQ5MV0sIFstNTEuMDY5NzcxLCAzLjY1MDM5OF0sIFstNTAuNTA4ODc1LCAxLjkwMTU2NF0sIFstNDkuOTc0MDc2LCAxLjczNjQ4M10sIFstNDkuOTQ3MTAxLCAxLjA0NjE5XSwgWy01MC42OTkyNTEsIDAuMjIyOTg0XSwgWy01MC4zODgyMTEsIC0wLjA3ODQ0NV0sIFstNDguNjIwNTY3LCAtMC4yMzU0ODldLCBbLTQ4LjU4NDQ5NywgLTEuMjM3ODA1XSwgWy00Ny44MjQ5NTYsIC0wLjU4MTYxOF0sIFstNDYuNTY2NTg0LCAtMC45NDEwMjhdLCBbLTQ0LjkwNTcwMywgLTEuNTUxNzRdLCBbLTQ0LjQxNzYxOSwgLTIuMTM3NzVdLCBbLTQ0LjU4MTU4OSwgLTIuNjkxMzA4XSwgWy00My40MTg3OTEsIC0yLjM4MzExXSwgWy00MS40NzI2NTcsIC0yLjkxMjAxOF0sIFstMzkuOTc4NjY1LCAtMi44NzMwNTRdLCBbLTM4LjUwMDM4MywgLTMuNzAwNjUyXSwgWy0zNy4yMjMyNTIsIC00LjgyMDk0Nl0sIFstMzYuNDUyOTM3LCAtNS4xMDk0MDRdLCBbLTM1LjU5Nzc5NiwgLTUuMTQ5NTA0XSwgWy0zNS4yMzUzODksIC01LjQ2NDkzN10sIFstMzQuODk2MDMsIC02LjczODE5M10sIFstMzQuNzI5OTkzLCAtNy4zNDMyMjFdLCBbLTM1LjEyODIxMiwgLTguOTk2NDAxXSwgWy0zNS42MzY5NjcsIC05LjY0OTI4Ml0sIFstMzcuMDQ2NTE5LCAtMTEuMDQwNzIxXSwgWy0zNy42ODM2MTIsIC0xMi4xNzExOTVdLCBbLTM4LjQyMzg3NywgLTEzLjAzODExOV0sIFstMzguNjczODg3LCAtMTMuMDU3NjUyXSwgWy0zOC45NTMyNzYsIC0xMy43OTMzN10sIFstMzguODgyMjk4LCAtMTUuNjY3MDU0XSwgWy0zOS4xNjEwOTIsIC0xNy4yMDg0MDddLCBbLTM5LjI2NzMzOSwgLTE3Ljg2Nzc0Nl0sIFstMzkuNTgzNTIxLCAtMTguMjYyMjk2XSwgWy0zOS43NjA4MjMsIC0xOS41OTkxMTNdLCBbLTQwLjc3NDc0MSwgLTIwLjkwNDUxMl0sIFstNDAuOTQ0NzU2LCAtMjEuOTM3MzE3XSwgWy00MS43NTQxNjQsIC0yMi4zNzA2NzZdLCBbLTQxLjk4ODI4NCwgLTIyLjk3MDA3XSwgWy00My4wNzQ3MDQsIC0yMi45Njc2OTNdLCBbLTQ0LjY0NzgxMiwgLTIzLjM1MTk1OV0sIFstNDUuMzUyMTM2LCAtMjMuNzk2ODQyXSwgWy00Ni40NzIwOTMsIC0yNC4wODg5NjldLCBbLTQ3LjY0ODk3MiwgLTI0Ljg4NTE5OV0sIFstNDguNDk1NDU4LCAtMjUuODc3MDI1XSwgWy00OC42NDEwMDUsIC0yNi42MjM2OThdLCBbLTQ4LjQ3NDczNiwgLTI3LjE3NTkxMl0sIFstNDguNjYxNTIsIC0yOC4xODYxMzVdLCBbLTQ4Ljg4ODQ1NywgLTI4LjY3NDExNV0sIFstNDkuNTg3MzI5LCAtMjkuMjI0NDY5XSwgWy01MC42OTY4NzQsIC0zMC45ODQ0NjVdLCBbLTUxLjU3NjIyNiwgLTMxLjc3NzY5OF0sIFstNTIuMjU2MDgxLCAtMzIuMjQ1MzddLCBbLTUyLjcxMjEsIC0zMy4xOTY1NzhdLCBbLTUzLjM3MzY2MiwgLTMzLjc2ODM3OF0sIFstNTMuNjUwNTQ0LCAtMzMuMjAyMDA0XSwgWy01My4yMDk1ODksIC0zMi43Mjc2NjZdLCBbLTUzLjc4Nzk1MiwgLTMyLjA0NzI0M10sIFstNTQuNTcyNDUyLCAtMzEuNDk0NTExXSwgWy01NS42MDE1MSwgLTMwLjg1Mzg3OV0sIFstNTUuOTczMjQ1LCAtMzAuODgzMDc2XSwgWy01Ni45NzYwMjYsIC0zMC4xMDk2ODZdLCBbLTU3LjYyNTEzMywgLTMwLjIxNjI5NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQlJBIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCcmF6aWwiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzExNC4yMDQwMTcsIDQuNTI1ODc0XSwgWzExNC41OTk5NjEsIDQuOTAwMDExXSwgWzExNS40NTA3MSwgNS40NDc3M10sIFsxMTUuNDA1NywgNC45NTUyMjhdLCBbMTE1LjM0NzQ2MSwgNC4zMTY2MzZdLCBbMTE0Ljg2OTU1NywgNC4zNDgzMTRdLCBbMTE0LjY1OTU5NiwgNC4wMDc2MzddLCBbMTE0LjIwNDAxNywgNC41MjU4NzRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJSTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQnJ1bmVpIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s5MS42OTY2NTcsIDI3Ljc3MTc0Ml0sIFs5Mi4xMDM3MTIsIDI3LjQ1MjYxNF0sIFs5Mi4wMzM0ODQsIDI2LjgzODMxXSwgWzkxLjIxNzUxMywgMjYuODA4NjQ4XSwgWzkwLjM3MzI3NSwgMjYuODc1NzI0XSwgWzg5Ljc0NDUyOCwgMjYuNzE5NDAzXSwgWzg4LjgzNTY0MywgMjcuMDk4OTY2XSwgWzg4LjgxNDI0OCwgMjcuMjk5MzE2XSwgWzg5LjQ3NTgxLCAyOC4wNDI3NTldLCBbOTAuMDE1ODI5LCAyOC4yOTY0MzldLCBbOTAuNzMwNTE0LCAyOC4wNjQ5NTRdLCBbOTEuMjU4ODU0LCAyOC4wNDA2MTRdLCBbOTEuNjk2NjU3LCAyNy43NzE3NDJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkJUTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQmh1dGFuIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1syNS42NDkxNjMsIC0xOC41MzYwMjZdLCBbMjUuODUwMzkxLCAtMTguNzE0NDEzXSwgWzI2LjE2NDc5MSwgLTE5LjI5MzA4Nl0sIFsyNy4yOTY1MDUsIC0yMC4zOTE1Ml0sIFsyNy43MjQ3NDcsIC0yMC40OTkwNTldLCBbMjcuNzI3MjI4LCAtMjAuODUxODAyXSwgWzI4LjAyMTM3LCAtMjEuNDg1OTc1XSwgWzI4Ljc5NDY1NiwgLTIxLjYzOTQ1NF0sIFsyOS40MzIxODgsIC0yMi4wOTEzMTNdLCBbMjguMDE3MjM2LCAtMjIuODI3NzU0XSwgWzI3LjExOTQxLCAtMjMuNTc0MzIzXSwgWzI2Ljc4NjQwNywgLTI0LjI0MDY5MV0sIFsyNi40ODU3NTMsIC0yNC42MTYzMjddLCBbMjUuOTQxNjUyLCAtMjQuNjk2MzczXSwgWzI1Ljc2NTg0OSwgLTI1LjE3NDg0NV0sIFsyNS42NjQ2NjYsIC0yNS40ODY4MTZdLCBbMjUuMDI1MTcxLCAtMjUuNzE5NjddLCBbMjQuMjExMjY3LCAtMjUuNjcwMjE2XSwgWzIzLjczMzU3LCAtMjUuMzkwMTI5XSwgWzIzLjMxMjA5NywgLTI1LjI2ODY5XSwgWzIyLjgyNDI3MSwgLTI1LjUwMDQ1OV0sIFsyMi41Nzk1MzIsIC0yNS45Nzk0NDhdLCBbMjIuMTA1OTY5LCAtMjYuMjgwMjU2XSwgWzIxLjYwNTg5NiwgLTI2LjcyNjUzNF0sIFsyMC44ODk2MDksIC0yNi44Mjg1NDNdLCBbMjAuNjY2NDcsIC0yNi40Nzc0NTNdLCBbMjAuNzU4NjA5LCAtMjUuODY4MTM2XSwgWzIwLjE2NTcyNiwgLTI0LjkxNzk2Ml0sIFsxOS44OTU3NjgsIC0yNC43Njc3OV0sIFsxOS44OTU0NTgsIC0yMS44NDkxNTddLCBbMjAuODgxMTM0LCAtMjEuODE0MzI3XSwgWzIwLjkxMDY0MSwgLTE4LjI1MjIxOV0sIFsyMS42NTUwNCwgLTE4LjIxOTE0Nl0sIFsyMy4xOTY4NTgsIC0xNy44NjkwMzhdLCBbMjMuNTc5MDA2LCAtMTguMjgxMjYxXSwgWzI0LjIxNzM2NSwgLTE3Ljg4OTM0N10sIFsyNC41MjA3MDUsIC0xNy44ODcxMjVdLCBbMjUuMDg0NDQzLCAtMTcuNjYxODE2XSwgWzI1LjI2NDIyNiwgLTE3LjczNjU0XSwgWzI1LjY0OTE2MywgLTE4LjUzNjAyNl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQldBIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJCb3Rzd2FuYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTUuMjc5NDYsIDcuNDIxOTI1XSwgWzE2LjEwNjIzMiwgNy40OTcwODhdLCBbMTYuMjkwNTYyLCA3Ljc1NDMwN10sIFsxNi40NTYxODUsIDcuNzM0Nzc0XSwgWzE2LjcwNTk4OCwgNy41MDgzMjhdLCBbMTcuOTY0OTMsIDcuODkwOTE0XSwgWzE4LjM4OTU1NSwgOC4yODEzMDRdLCBbMTguOTExMDIyLCA4LjYzMDg5NV0sIFsxOC44MTIwMSwgOC45ODI5MTVdLCBbMTkuMDk0MDA4LCA5LjA3NDg0N10sIFsyMC4wNTk2ODUsIDkuMDEyNzA2XSwgWzIxLjAwMDg2OCwgOS40NzU5ODVdLCBbMjEuNzIzODIyLCAxMC41NjcwNTZdLCBbMjIuMjMxMTI5LCAxMC45NzE4ODldLCBbMjIuODY0MTY1LCAxMS4xNDIzOTVdLCBbMjIuOTc3NTQ0LCAxMC43MTQ0NjNdLCBbMjMuNTU0MzA0LCAxMC4wODkyNTVdLCBbMjMuNTU3MjUsIDkuNjgxMjE4XSwgWzIzLjM5NDc3OSwgOS4yNjUwNjhdLCBbMjMuNDU5MDEzLCA4Ljk1NDI4Nl0sIFsyMy44MDU4MTMsIDguNjY2MzE5XSwgWzI0LjU2NzM2OSwgOC4yMjkxODhdLCBbMjUuMTE0OTMyLCA3LjgyNTEwNF0sIFsyNS4xMjQxMzEsIDcuNTAwMDg1XSwgWzI1Ljc5NjY0OCwgNi45NzkzMTZdLCBbMjYuMjEzNDE4LCA2LjU0NjYwM10sIFsyNi40NjU5MDksIDUuOTQ2NzE3XSwgWzI3LjIxMzQwOSwgNS41NTA5NTNdLCBbMjcuMzc0MjI2LCA1LjIzMzk0NF0sIFsyNy4wNDQwNjUsIDUuMTI3ODUzXSwgWzI2LjQwMjc2MSwgNS4xNTA4NzVdLCBbMjUuNjUwNDU1LCA1LjI1NjA4OF0sIFsyNS4yNzg3OTgsIDUuMTcwNDA4XSwgWzI1LjEyODgzMywgNC45MjcyNDVdLCBbMjQuODA1MDI5LCA0Ljg5NzI0N10sIFsyNC40MTA1MzEsIDUuMTA4Nzg0XSwgWzIzLjI5NzIxNCwgNC42MDk2OTNdLCBbMjIuODQxNDgsIDQuNzEwMTI2XSwgWzIyLjcwNDEyNCwgNC42MzMwNTFdLCBbMjIuNDA1MTI0LCA0LjAyOTE2XSwgWzIxLjY1OTEyMywgNC4yMjQzNDJdLCBbMjAuOTI3NTkxLCA0LjMyMjc4Nl0sIFsyMC4yOTA2NzksIDQuNjkxNjc4XSwgWzE5LjQ2Nzc4NCwgNS4wMzE1MjhdLCBbMTguOTMyMzEyLCA0LjcwOTUwNl0sIFsxOC41NDI5ODIsIDQuMjAxNzg1XSwgWzE4LjQ1MzA2NSwgMy41MDQzODZdLCBbMTcuODA5OSwgMy41NjAxOTZdLCBbMTcuMTMzMDQyLCAzLjcyODE5N10sIFsxNi41MzcwNTgsIDMuMTk4MjU1XSwgWzE2LjAxMjg1MiwgMi4yNjc2NF0sIFsxNS45MDczODEsIDIuNTU3Mzg5XSwgWzE1Ljg2MjczMiwgMy4wMTM1MzddLCBbMTUuNDA1Mzk2LCAzLjMzNTMwMV0sIFsxNS4wMzYyMiwgMy44NTEzNjddLCBbMTQuOTUwOTUzLCA0LjIxMDM4OV0sIFsxNC40NzgzNzIsIDQuNzMyNjA1XSwgWzE0LjU1ODkzNiwgNS4wMzA1OThdLCBbMTQuNDU5NDA3LCA1LjQ1MTc2MV0sIFsxNC41MzY1NiwgNi4yMjY5NTldLCBbMTQuNzc2NTQ1LCA2LjQwODQ5OF0sIFsxNS4yNzk0NiwgNy40MjE5MjVdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkNBRiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbLTYzLjY2NDUsIDQ2LjU1MDAxXSwgWy02Mi45MzkzLCA0Ni40MTU4N10sIFstNjIuMDEyMDgsIDQ2LjQ0MzE0XSwgWy02Mi41MDM5MSwgNDYuMDMzMzldLCBbLTYyLjg3NDMzLCA0NS45NjgxOF0sIFstNjQuMTQyOCwgNDYuMzkyNjVdLCBbLTY0LjM5MjYxLCA0Ni43Mjc0N10sIFstNjQuMDE0ODYsIDQ3LjAzNjAxXSwgWy02My42NjQ1LCA0Ni41NTAwMV1dXSwgW1tbLTYxLjgwNjMwNSwgNDkuMTA1MDZdLCBbLTYyLjI5MzE4LCA0OS4wODcxN10sIFstNjMuNTg5MjYsIDQ5LjQwMDY5XSwgWy02NC41MTkxMiwgNDkuODczMDRdLCBbLTY0LjE3MzIyLCA0OS45NTcxOF0sIFstNjIuODU4MjksIDQ5LjcwNjQxXSwgWy02MS44MzU1ODUsIDQ5LjI4ODU1XSwgWy02MS44MDYzMDUsIDQ5LjEwNTA2XV1dLCBbW1stMTIzLjUxMDAwMiwgNDguNTEwMDExXSwgWy0xMjQuMDEyODkxLCA0OC4zNzA4NDZdLCBbLTEyNS42NTUwMTMsIDQ4LjgyNTAwNV0sIFstMTI1Ljk1NDk5NCwgNDkuMTc5OTk2XSwgWy0xMjYuODUwMDA0LCA0OS41M10sIFstMTI3LjAyOTk5MywgNDkuODE0OTk2XSwgWy0xMjguMDU5MzM2LCA0OS45OTQ5NTldLCBbLTEyOC40NDQ1ODQsIDUwLjUzOTEzOF0sIFstMTI4LjM1ODQxNCwgNTAuNzcwNjQ4XSwgWy0xMjcuMzA4NTgxLCA1MC41NTI1NzRdLCBbLTEyNi42OTUwMDEsIDUwLjQwMDkwM10sIFstMTI1Ljc1NTAwNywgNTAuMjk1MDE4XSwgWy0xMjUuNDE1MDAyLCA0OS45NTAwMDFdLCBbLTEyNC45MjA3NjgsIDQ5LjQ3NTI3NV0sIFstMTIzLjkyMjUwOSwgNDkuMDYyNDg0XSwgWy0xMjMuNTEwMDAyLCA0OC41MTAwMTFdXV0sIFtbWy01Ni4xMzQwMzYsIDUwLjY4NzAxXSwgWy01Ni43OTU4ODIsIDQ5LjgxMjMwOV0sIFstNTYuMTQzMTA1LCA1MC4xNTAxMTddLCBbLTU1LjQ3MTQ5MiwgNDkuOTM1ODE1XSwgWy01NS44MjI0MDEsIDQ5LjU4NzEyOV0sIFstNTQuOTM1MTQzLCA0OS4zMTMwMTFdLCBbLTU0LjQ3Mzc3NSwgNDkuNTU2NjkxXSwgWy01My40NzY1NDksIDQ5LjI0OTEzOV0sIFstNTMuNzg2MDE0LCA0OC41MTY3ODFdLCBbLTUzLjA4NjEzNCwgNDguNjg3ODA0XSwgWy01Mi45NTg2NDgsIDQ4LjE1NzE2NF0sIFstNTIuNjQ4MDk5LCA0Ny41MzU1NDhdLCBbLTUzLjA2OTE1OCwgNDYuNjU1NDk5XSwgWy01My41MjE0NTYsIDQ2LjYxODI5Ml0sIFstNTQuMTc4OTM2LCA0Ni44MDcwNjZdLCBbLTUzLjk2MTg2OSwgNDcuNjI1MjA3XSwgWy01NC4yNDA0ODIsIDQ3Ljc1MjI3OV0sIFstNTUuNDAwNzczLCA0Ni44ODQ5OTRdLCBbLTU1Ljk5NzQ4MSwgNDYuOTE5NzJdLCBbLTU1LjI5MTIxOSwgNDcuMzg5NTYyXSwgWy01Ni4yNTA3OTksIDQ3LjYzMjU0NV0sIFstNTcuMzI1MjI5LCA0Ny41NzI4MDddLCBbLTU5LjI2NjAxNSwgNDcuNjAzMzQ4XSwgWy01OS40MTk0OTQsIDQ3Ljg5OTQ1NF0sIFstNTguNzk2NTg2LCA0OC4yNTE1MjVdLCBbLTU5LjIzMTYyNSwgNDguNTIzMTg4XSwgWy01OC4zOTE4MDUsIDQ5LjEyNTU4MV0sIFstNTcuMzU4NjksIDUwLjcxODI3NF0sIFstNTYuNzM4NjUsIDUxLjI4NzQzOF0sIFstNTUuODcwOTc3LCA1MS42MzIwOTRdLCBbLTU1LjQwNjk3NCwgNTEuNTg4MjczXSwgWy01NS42MDAyMTgsIDUxLjMxNzA3NV0sIFstNTYuMTM0MDM2LCA1MC42ODcwMV1dXSwgW1tbLTEzMi43MTAwMDgsIDU0LjA0MDAwOV0sIFstMTMyLjcxMDAwOSwgNTQuMDQwMDA5XSwgWy0xMzIuNzEwMDA4LCA1NC4wNDAwMDldLCBbLTEzMi43MTAwMDgsIDU0LjA0MDAwOV0sIFstMTMxLjc0OTk5LCA1NC4xMjAwMDRdLCBbLTEzMi4wNDk0OCwgNTIuOTg0NjIxXSwgWy0xMzEuMTc5MDQzLCA1Mi4xODA0MzNdLCBbLTEzMS41Nzc4MywgNTIuMTgyMzcxXSwgWy0xMzIuMTgwNDI4LCA1Mi42Mzk3MDddLCBbLTEzMi41NDk5OTIsIDUzLjEwMDAxNV0sIFstMTMzLjA1NDYxMSwgNTMuNDExNDY5XSwgWy0xMzMuMjM5NjY0LCA1My44NTEwOF0sIFstMTMzLjE4MDAwNCwgNTQuMTY5OTc1XSwgWy0xMzIuNzEwMDA4LCA1NC4wNDAwMDldXV0sIFtbWy03OS4yNjU4MiwgNjIuMTU4Njc1XSwgWy03OS42NTc1MiwgNjEuNjMzMDhdLCBbLTgwLjA5OTU2LCA2MS43MTgxXSwgWy04MC4zNjIxNSwgNjIuMDE2NDldLCBbLTgwLjMxNTM5NSwgNjIuMDg1NTY1XSwgWy03OS45MjkzOSwgNjIuMzg1Nl0sIFstNzkuNTIwMDIsIDYyLjM2MzcxXSwgWy03OS4yNjU4MiwgNjIuMTU4Njc1XV1dLCBbW1stODEuODk4MjUsIDYyLjcxMDhdLCBbLTgzLjA2ODU3LCA2Mi4xNTkyMl0sIFstODMuNzc0NjIsIDYyLjE4MjMxXSwgWy04My45OTM2NywgNjIuNDUyOF0sIFstODMuMjUwNDgsIDYyLjkxNDA5XSwgWy04MS44NzY5OSwgNjIuOTA0NThdLCBbLTgxLjg5ODI1LCA2Mi43MTA4XV1dLCBbW1stODUuMTYxMzA4LCA2NS42NTcyODVdLCBbLTg0Ljk3NTc2NCwgNjUuMjE3NTE4XSwgWy04NC40NjQwMTIsIDY1LjM3MTc3Ml0sIFstODMuODgyNjI2LCA2NS4xMDk2MThdLCBbLTgyLjc4NzU3NywgNjQuNzY2NjkzXSwgWy04MS42NDIwMTQsIDY0LjQ1NTEzNl0sIFstODEuNTUzNDQsIDYzLjk3OTYwOV0sIFstODAuODE3MzYxLCA2NC4wNTc0ODZdLCBbLTgwLjEwMzQ1MSwgNjMuNzI1OTgxXSwgWy04MC45OTEwMiwgNjMuNDExMjQ2XSwgWy04Mi41NDcxNzgsIDYzLjY1MTcyMl0sIFstODMuMTA4Nzk4LCA2NC4xMDE4NzZdLCBbLTg0LjEwMDQxNywgNjMuNTY5NzEyXSwgWy04NS41MjM0MDUsIDYzLjA1MjM3OV0sIFstODUuODY2NzY5LCA2My42MzcyNTNdLCBbLTg3LjIyMTk4MywgNjMuNTQxMjM4XSwgWy04Ni4zNTI3NiwgNjQuMDM1ODMzXSwgWy04Ni4yMjQ4ODYsIDY0LjgyMjkxN10sIFstODUuODgzODQ4LCA2NS43Mzg3NzhdLCBbLTg1LjE2MTMwOCwgNjUuNjU3Mjg1XV1dLCBbW1stNzUuODY1ODgsIDY3LjE0ODg2XSwgWy03Ni45ODY4NywgNjcuMDk4NzNdLCBbLTc3LjIzNjQsIDY3LjU4ODA5XSwgWy03Ni44MTE2NiwgNjguMTQ4NTZdLCBbLTc1Ljg5NTIxLCA2OC4yODcyMV0sIFstNzUuMTE0NSwgNjguMDEwMzZdLCBbLTc1LjEwMzMzLCA2Ny41ODIwMl0sIFstNzUuMjE1OTcsIDY3LjQ0NDI1XSwgWy03NS44NjU4OCwgNjcuMTQ4ODZdXV0sIFtbWy05NS42NDc2ODEsIDY5LjEwNzY5XSwgWy05Ni4yNjk1MjEsIDY4Ljc1NzA0XSwgWy05Ny42MTc0MDEsIDY5LjA2MDAzXSwgWy05OC40MzE4MDEsIDY4Ljk1MDddLCBbLTk5Ljc5NzQwMSwgNjkuNDAwMDNdLCBbLTk4LjkxNzQwMSwgNjkuNzEwMDNdLCBbLTk4LjIxODI2MSwgNzAuMTQzNTRdLCBbLTk3LjE1NzQwMSwgNjkuODYwMDNdLCBbLTk2LjU1NzQwMSwgNjkuNjgwMDNdLCBbLTk2LjI1NzQwMSwgNjkuNDkwMDNdLCBbLTk1LjY0NzY4MSwgNjkuMTA3NjldXV0sIFtbWy05MC41NDcxLCA2OS40OTc2Nl0sIFstOTAuNTUxNTEsIDY4LjQ3NDk5XSwgWy04OS4yMTUxNSwgNjkuMjU4NzNdLCBbLTg4LjAxOTY2LCA2OC42MTUwOF0sIFstODguMzE3NDksIDY3Ljg3MzM4XSwgWy04Ny4zNTAxNywgNjcuMTk4NzJdLCBbLTg2LjMwNjA3LCA2Ny45MjE0Nl0sIFstODUuNTc2NjQsIDY4Ljc4NDU2XSwgWy04NS41MjE5NywgNjkuODgyMTFdLCBbLTg0LjEwMDgxLCA2OS44MDUzOV0sIFstODIuNjIyNTgsIDY5LjY1ODI2XSwgWy04MS4yODA0MywgNjkuMTYyMDJdLCBbLTgxLjIyMDIsIDY4LjY2NTY3XSwgWy04MS45NjQzNiwgNjguMTMyNTNdLCBbLTgxLjI1OTI4LCA2Ny41OTcxNl0sIFstODEuMzg2NTMsIDY3LjExMDc4XSwgWy04My4zNDQ1NiwgNjYuNDExNTRdLCBbLTg0LjczNTQyLCA2Ni4yNTczXSwgWy04NS43Njk0MywgNjYuNTU4MzNdLCBbLTg2LjA2NzYsIDY2LjA1NjI1XSwgWy04Ny4wMzE0MywgNjUuMjEyOTddLCBbLTg3LjMyMzI0LCA2NC43NzU2M10sIFstODguNDgyOTYsIDY0LjA5ODk3XSwgWy04OS45MTQ0NCwgNjQuMDMyNzNdLCBbLTkwLjcwMzk4LCA2My42MTAxN10sIFstOTAuNzcwMDQsIDYyLjk2MDIxXSwgWy05MS45MzM0MiwgNjIuODM1MDhdLCBbLTkzLjE1Njk4LCA2Mi4wMjQ2OV0sIFstOTQuMjQxNTMsIDYwLjg5ODY1XSwgWy05NC42MjkzMSwgNjAuMTEwMjFdLCBbLTk0LjY4NDYsIDU4Ljk0ODgyXSwgWy05My4yMTUwMiwgNTguNzgyMTJdLCBbLTkyLjc2NDYyLCA1Ny44NDU3MV0sIFstOTIuMjk3MDMsIDU3LjA4NzA5XSwgWy05MC44OTc2OSwgNTcuMjg0NjhdLCBbLTg5LjAzOTUzLCA1Ni44NTE3Ml0sIFstODguMDM5NzgsIDU2LjQ3MTYyXSwgWy04Ny4zMjQyMSwgNTUuOTk5MTRdLCBbLTg2LjA3MTIxLCA1NS43MjM4M10sIFstODUuMDExODEsIDU1LjMwMjZdLCBbLTgzLjM2MDU1LCA1NS4yNDQ4OV0sIFstODIuMjcyODUsIDU1LjE0ODMyXSwgWy04Mi40MzYyLCA1NC4yODIyN10sIFstODIuMTI1MDIsIDUzLjI3NzAzXSwgWy04MS40MDA3NSwgNTIuMTU3ODhdLCBbLTc5LjkxMjg5LCA1MS4yMDg0Ml0sIFstNzkuMTQzMDEsIDUxLjUzMzkzXSwgWy03OC42MDE5MSwgNTIuNTYyMDhdLCBbLTc5LjEyNDIxLCA1NC4xNDE0NV0sIFstNzkuODI5NTgsIDU0LjY2NzcyXSwgWy03OC4yMjg3NCwgNTUuMTM2NDVdLCBbLTc3LjA5NTYsIDU1LjgzNzQxXSwgWy03Ni41NDEzNywgNTYuNTM0MjNdLCBbLTc2LjYyMzE5LCA1Ny4yMDI2M10sIFstNzcuMzAyMjYsIDU4LjA1MjA5XSwgWy03OC41MTY4OCwgNTguODA0NThdLCBbLTc3LjMzNjc2LCA1OS44NTI2MV0sIFstNzcuNzcyNzIsIDYwLjc1Nzg4XSwgWy03OC4xMDY4NywgNjIuMzE5NjRdLCBbLTc3LjQxMDY3LCA2Mi41NTA1M10sIFstNzUuNjk2MjEsIDYyLjI3ODRdLCBbLTc0LjY2ODIsIDYyLjE4MTExXSwgWy03My44Mzk4OCwgNjIuNDQzOF0sIFstNzIuOTA4NTMsIDYyLjEwNTA3XSwgWy03MS42NzcwOCwgNjEuNTI1MzVdLCBbLTcxLjM3MzY5LCA2MS4xMzcxN10sIFstNjkuNTkwNDIsIDYxLjA2MTQxXSwgWy02OS42MjAzMywgNjAuMjIxMjVdLCBbLTY5LjI4NzksIDU4Ljk1NzM2XSwgWy02OC4zNzQ1NSwgNTguODAxMDZdLCBbLTY3LjY0OTc2LCA1OC4yMTIwNl0sIFstNjYuMjAxNzgsIDU4Ljc2NzMxXSwgWy02NS4yNDUxNywgNTkuODcwNzFdLCBbLTY0LjU4MzUyLCA2MC4zMzU1OF0sIFstNjMuODA0NzUsIDU5LjQ0MjZdLCBbLTYyLjUwMjM2LCA1OC4xNjcwOF0sIFstNjEuMzk2NTUsIDU2Ljk2NzQ1XSwgWy02MS43OTg2NiwgNTYuMzM5NDVdLCBbLTYwLjQ2ODUzLCA1NS43NzU0OF0sIFstNTkuNTY5NjIsIDU1LjIwNDA3XSwgWy01Ny45NzUwOCwgNTQuOTQ1NDldLCBbLTU3LjMzMzIsIDU0LjYyNjVdLCBbLTU2LjkzNjg5LCA1My43ODAzMl0sIFstNTYuMTU4MTEsIDUzLjY0NzQ5XSwgWy01NS43NTYzMiwgNTMuMjcwMzZdLCBbLTU1LjY4MzM4LCA1Mi4xNDY2NF0sIFstNTYuNDA5MTYsIDUxLjc3MDddLCBbLTU3LjEyNjkxLCA1MS40MTk3Ml0sIFstNTguNzc0ODIsIDUxLjA2NDNdLCBbLTYwLjAzMzA5LCA1MC4yNDI3N10sIFstNjEuNzIzNjYsIDUwLjA4MDQ2XSwgWy02My44NjI1MSwgNTAuMjkwOTldLCBbLTY1LjM2MzMxLCA1MC4yOTgyXSwgWy02Ni4zOTkwNSwgNTAuMjI4OTddLCBbLTY3LjIzNjMxLCA0OS41MTE1Nl0sIFstNjguNTExMTQsIDQ5LjA2ODM2XSwgWy02OS45NTM2MiwgNDcuNzQ0ODhdLCBbLTcxLjEwNDU4LCA0Ni44MjE3MV0sIFstNzAuMjU1MjIsIDQ2Ljk4NjA2XSwgWy02OC42NSwgNDguM10sIFstNjYuNTUyNDMsIDQ5LjEzMzFdLCBbLTY1LjA1NjI2LCA0OS4yMzI3OF0sIFstNjQuMTcwOTksIDQ4Ljc0MjQ4XSwgWy02NS4xMTU0NSwgNDguMDcwODVdLCBbLTY0Ljc5ODU0LCA0Ni45OTI5N10sIFstNjQuNDcyMTksIDQ2LjIzODQ5XSwgWy02My4xNzMyOSwgNDUuNzM5MDJdLCBbLTYxLjUyMDcyLCA0NS44ODM3N10sIFstNjAuNTE4MTUsIDQ3LjAwNzkzXSwgWy02MC40NDg2LCA0Ni4yODI2NF0sIFstNTkuODAyODcsIDQ1LjkyMDRdLCBbLTYxLjAzOTg4LCA0NS4yNjUyNV0sIFstNjMuMjU0NzEsIDQ0LjY3MDE0XSwgWy02NC4yNDY1NiwgNDQuMjY1NTNdLCBbLTY1LjM2NDA2LCA0My41NDUyM10sIFstNjYuMTIzNCwgNDMuNjE4NjddLCBbLTY2LjE2MTczLCA0NC40NjUxMl0sIFstNjQuNDI1NDksIDQ1LjI5MjA0XSwgWy02Ni4wMjYwNSwgNDUuMjU5MzFdLCBbLTY3LjEzNzQxLCA0NS4xMzc1M10sIFstNjcuNzkxMzQsIDQ1LjcwMjgxXSwgWy02Ny43OTA0NiwgNDcuMDY2MzZdLCBbLTY4LjIzNDQ0LCA0Ny4zNTQ4Nl0sIFstNjguOTA1LCA0Ny4xODVdLCBbLTY5LjIzNzIxNiwgNDcuNDQ3NzgxXSwgWy02OS45OTk5NywgNDYuNjkzMDddLCBbLTcwLjMwNSwgNDUuOTE1XSwgWy03MC42NiwgNDUuNDZdLCBbLTcxLjA4NDgyLCA0NS4zMDUyNF0sIFstNzEuNDA1LCA0NS4yNTVdLCBbLTcxLjUwNTA2LCA0NS4wMDgyXSwgWy03My4zNDc4MywgNDUuMDA3MzhdLCBbLTc0Ljg2NywgNDUuMDAwNDhdLCBbLTc1LjMxODIxLCA0NC44MTY0NV0sIFstNzYuMzc1LCA0NC4wOTYzMV0sIFstNzYuNSwgNDQuMDE4NDU5XSwgWy03Ni44MjAwMzQsIDQzLjYyODc4NF0sIFstNzcuNzM3ODg1LCA0My42MjkwNTZdLCBbLTc4LjcyMDI4LCA0My42MjUwODldLCBbLTc5LjE3MTY3NCwgNDMuNDY2MzM5XSwgWy03OS4wMSwgNDMuMjddLCBbLTc4LjkyLCA0Mi45NjVdLCBbLTc4LjkzOTM2MiwgNDIuODYzNjExXSwgWy04MC4yNDc0NDgsIDQyLjM2NjJdLCBbLTgxLjI3Nzc0NywgNDIuMjA5MDI2XSwgWy04Mi40MzkyNzgsIDQxLjY3NTEwNV0sIFstODIuNjkwMDg5LCA0MS42NzUxMDVdLCBbLTgzLjAyOTgxLCA0MS44MzI3OTZdLCBbLTgzLjE0MiwgNDEuOTc1NjgxXSwgWy04My4xMiwgNDIuMDhdLCBbLTgyLjksIDQyLjQzXSwgWy04Mi40MywgNDIuOThdLCBbLTgyLjEzNzY0MiwgNDMuNTcxMDg4XSwgWy04Mi4zMzc3NjMsIDQ0LjQ0XSwgWy04Mi41NTA5MjUsIDQ1LjM0NzUxN10sIFstODMuNTkyODUxLCA0NS44MTY4OTRdLCBbLTgzLjQ2OTU1MSwgNDUuOTk0Njg2XSwgWy04My42MTYxMzEsIDQ2LjExNjkyN10sIFstODMuODkwNzY1LCA0Ni4xMTY5MjddLCBbLTg0LjA5MTg1MSwgNDYuMjc1NDE5XSwgWy04NC4xNDIxMiwgNDYuNTEyMjI2XSwgWy04NC4zMzY3LCA0Ni40MDg3N10sIFstODQuNjA0OSwgNDYuNDM5Nl0sIFstODQuNTQzNzQ5LCA0Ni41Mzg2ODRdLCBbLTg0Ljc3OTIzOCwgNDYuNjM3MTAyXSwgWy04NC44NzYwOCwgNDYuOTAwMDgzXSwgWy04NS42NTIzNjMsIDQ3LjIyMDIxOV0sIFstODYuNDYxOTkxLCA0Ny41NTMzMzhdLCBbLTg3LjQzOTc5MywgNDcuOTRdLCBbLTg4LjM3ODExNCwgNDguMzAyOTE4XSwgWy04OS4yNzI5MTcsIDQ4LjAxOTgwOF0sIFstODkuNiwgNDguMDFdLCBbLTkwLjgzLCA0OC4yN10sIFstOTEuNjQsIDQ4LjE0XSwgWy05Mi42MSwgNDguNDVdLCBbLTkzLjYzMDg3LCA0OC42MDkyNl0sIFstOTQuMzI5MTQsIDQ4LjY3MDc0XSwgWy05NC42NCwgNDguODRdLCBbLTk0LjgxNzU4LCA0OS4zODkwNV0sIFstOTUuMTU2MDksIDQ5LjM4NDI1XSwgWy05NS4xNTkwNywgNDldLCBbLTk3LjIyODcyLCA0OS4wMDA3XSwgWy0xMDAuNjUsIDQ5XSwgWy0xMDQuMDQ4MjYsIDQ4Ljk5OTg2XSwgWy0xMDcuMDUsIDQ5XSwgWy0xMTAuMDUsIDQ5XSwgWy0xMTMsIDQ5XSwgWy0xMTYuMDQ4MTgsIDQ5XSwgWy0xMTcuMDMxMjEsIDQ5XSwgWy0xMjAsIDQ5XSwgWy0xMjIuODQsIDQ5XSwgWy0xMjIuOTc0MjEsIDQ5LjAwMjUzOF0sIFstMTI0LjkxMDI0LCA0OS45ODQ1Nl0sIFstMTI1LjYyNDYxLCA1MC40MTY1Nl0sIFstMTI3LjQzNTYxLCA1MC44MzA2MV0sIFstMTI3Ljk5Mjc2LCA1MS43MTU4M10sIFstMTI3Ljg1MDMyLCA1Mi4zMjk2MV0sIFstMTI5LjEyOTc5LCA1Mi43NTUzOF0sIFstMTI5LjMwNTIzLCA1My41NjE1OV0sIFstMTMwLjUxNDk3LCA1NC4yODc1N10sIFstMTMwLjUzNjExLCA1NC44MDI3OF0sIFstMTI5Ljk4LCA1NS4yODVdLCBbLTEzMC4wMDc3OCwgNTUuOTE1ODNdLCBbLTEzMS43MDc4MSwgNTYuNTUyMTJdLCBbLTEzMi43MzA0MiwgNTcuNjkyODldLCBbLTEzMy4zNTU1NiwgNTguNDEwMjhdLCBbLTEzNC4yNzExMSwgNTguODYxMTFdLCBbLTEzNC45NDUsIDU5LjI3MDU2XSwgWy0xMzUuNDc1ODMsIDU5Ljc4Nzc4XSwgWy0xMzYuNDc5NzIsIDU5LjQ2Mzg5XSwgWy0xMzcuNDUyNSwgNTguOTA1XSwgWy0xMzguMzQwODksIDU5LjU2MjExXSwgWy0xMzkuMDM5LCA2MF0sIFstMTQwLjAxMywgNjAuMjc2ODJdLCBbLTE0MC45OTc3OCwgNjAuMzA2MzldLCBbLTE0MC45OTI1LCA2Ni4wMDAwM10sIFstMTQwLjk4NiwgNjkuNzEyXSwgWy0xMzkuMTIwNTIsIDY5LjQ3MTAyXSwgWy0xMzcuNTQ2MzYsIDY4Ljk5MDAyXSwgWy0xMzYuNTAzNTgsIDY4Ljg5ODA0XSwgWy0xMzUuNjI1NzYsIDY5LjMxNTEyXSwgWy0xMzQuNDE0NjQsIDY5LjYyNzQzXSwgWy0xMzIuOTI5MjUsIDY5LjUwNTM0XSwgWy0xMzEuNDMxMzYsIDY5Ljk0NDUxXSwgWy0xMjkuNzk0NzEsIDcwLjE5MzY5XSwgWy0xMjkuMTA3NzMsIDY5Ljc3OTI3XSwgWy0xMjguMzYxNTYsIDcwLjAxMjg2XSwgWy0xMjguMTM4MTcsIDcwLjQ4Mzg0XSwgWy0xMjcuNDQ3MTIsIDcwLjM3NzIxXSwgWy0xMjUuNzU2MzIsIDY5LjQ4MDU4XSwgWy0xMjQuNDI0ODMsIDcwLjE1ODRdLCBbLTEyNC4yODk2OCwgNjkuMzk5NjldLCBbLTEyMy4wNjEwOCwgNjkuNTYzNzJdLCBbLTEyMi42ODM1LCA2OS44NTU1M10sIFstMTIxLjQ3MjI2LCA2OS43OTc3OF0sIFstMTE5Ljk0Mjg4LCA2OS4zNzc4Nl0sIFstMTE3LjYwMjY4LCA2OS4wMTEyOF0sIFstMTE2LjIyNjQzLCA2OC44NDE1MV0sIFstMTE1LjI0NjksIDY4LjkwNTkxXSwgWy0xMTMuODk3OTQsIDY4LjM5ODldLCBbLTExNS4zMDQ4OSwgNjcuOTAyNjFdLCBbLTExMy40OTcyNywgNjcuNjg4MTVdLCBbLTExMC43OTgsIDY3LjgwNjEyXSwgWy0xMDkuOTQ2MTksIDY3Ljk4MTA0XSwgWy0xMDguODgwMiwgNjcuMzgxNDRdLCBbLTEwNy43OTIzOSwgNjcuODg3MzZdLCBbLTEwOC44MTI5OSwgNjguMzExNjRdLCBbLTEwOC4xNjcyMSwgNjguNjUzOTJdLCBbLTEwNi45NSwgNjguN10sIFstMTA2LjE1LCA2OC44XSwgWy0xMDUuMzQyODIsIDY4LjU2MTIyXSwgWy0xMDQuMzM3OTEsIDY4LjAxOF0sIFstMTAzLjIyMTE1LCA2OC4wOTc3NV0sIFstMTAxLjQ1NDMzLCA2Ny42NDY4OV0sIFstOTkuOTAxOTUsIDY3LjgwNTY2XSwgWy05OC40NDMyLCA2Ny43ODE2NV0sIFstOTguNTU4NiwgNjguNDAzOTRdLCBbLTk3LjY2OTQ4LCA2OC41Nzg2NF0sIFstOTYuMTE5OTEsIDY4LjIzOTM5XSwgWy05Ni4xMjU4OCwgNjcuMjkzMzhdLCBbLTk1LjQ4OTQzLCA2OC4wOTA3XSwgWy05NC42ODUsIDY4LjA2MzgzXSwgWy05NC4yMzI4MiwgNjkuMDY5MDNdLCBbLTk1LjMwNDA4LCA2OS42ODU3MV0sIFstOTYuNDcxMzEsIDcwLjA4OTc2XSwgWy05Ni4zOTExNSwgNzEuMTk0ODJdLCBbLTk1LjIwODgsIDcxLjkyMDUzXSwgWy05My44ODk5NywgNzEuNzYwMTVdLCBbLTkyLjg3ODE4LCA3MS4zMTg2OV0sIFstOTEuNTE5NjQsIDcwLjE5MTI5XSwgWy05Mi40MDY5MiwgNjkuNjk5OTddLCBbLTkwLjU0NzEsIDY5LjQ5NzY2XV1dLCBbW1stMTE0LjE2NzE3LCA3My4xMjE0NV0sIFstMTE0LjY2NjM0LCA3Mi42NTI3N10sIFstMTEyLjQ0MTAyLCA3Mi45NTU0XSwgWy0xMTEuMDUwMzksIDcyLjQ1MDRdLCBbLTEwOS45MjAzNSwgNzIuOTYxMTNdLCBbLTEwOS4wMDY1NCwgNzIuNjMzMzVdLCBbLTEwOC4xODgzNSwgNzEuNjUwODldLCBbLTEwNy42ODU5OSwgNzIuMDY1NDhdLCBbLTEwOC4zOTYzOSwgNzMuMDg5NTNdLCBbLTEwNy41MTY0NSwgNzMuMjM1OThdLCBbLTEwNi41MjI1OSwgNzMuMDc2MDFdLCBbLTEwNS40MDI0NiwgNzIuNjcyNTldLCBbLTEwNC43NzQ4NCwgNzEuNjk4NF0sIFstMTA0LjQ2NDc2LCA3MC45OTI5N10sIFstMTAyLjc4NTM3LCA3MC40OTc3Nl0sIFstMTAwLjk4MDc4LCA3MC4wMjQzMl0sIFstMTAxLjA4OTI5LCA2OS41ODQ0N10sIFstMTAyLjczMTE2LCA2OS41MDQwMl0sIFstMTAyLjA5MzI5LCA2OS4xMTk2Ml0sIFstMTAyLjQzMDI0LCA2OC43NTI4Ml0sIFstMTA0LjI0LCA2OC45MV0sIFstMTA1Ljk2LCA2OS4xOF0sIFstMTA3LjEyMjU0LCA2OS4xMTkyMl0sIFstMTA5LCA2OC43OF0sIFstMTExLjUzNDE0OSwgNjguNjMwMDU5XSwgWy0xMTMuMzEzMiwgNjguNTM1NTRdLCBbLTExMy44NTQ5NiwgNjkuMDA3NDRdLCBbLTExNS4yMiwgNjkuMjhdLCBbLTExNi4xMDc5NCwgNjkuMTY4MjFdLCBbLTExNy4zNCwgNjkuOTZdLCBbLTExNi42NzQ3MywgNzAuMDY2NTVdLCBbLTExNS4xMzExMiwgNzAuMjM3M10sIFstMTEzLjcyMTQxLCA3MC4xOTIzN10sIFstMTEyLjQxNjEsIDcwLjM2NjM4XSwgWy0xMTQuMzUsIDcwLjZdLCBbLTExNi40ODY4NCwgNzAuNTIwNDVdLCBbLTExNy45MDQ4LCA3MC41NDA1Nl0sIFstMTE4LjQzMjM4LCA3MC45MDkyXSwgWy0xMTYuMTEzMTEsIDcxLjMwOTE4XSwgWy0xMTcuNjU1NjgsIDcxLjI5NTJdLCBbLTExOS40MDE5OSwgNzEuNTU4NTldLCBbLTExOC41NjI2NywgNzIuMzA3ODVdLCBbLTExNy44NjY0MiwgNzIuNzA1OTRdLCBbLTExNS4xODkwOSwgNzMuMzE0NTldLCBbLTExNC4xNjcxNywgNzMuMTIxNDVdXV0sIFtbWy0xMDQuNSwgNzMuNDJdLCBbLTEwNS4zOCwgNzIuNzZdLCBbLTEwNi45NCwgNzMuNDZdLCBbLTEwNi42LCA3My42XSwgWy0xMDUuMjYsIDczLjY0XSwgWy0xMDQuNSwgNzMuNDJdXV0sIFtbWy03Ni4zNCwgNzMuMTAyNjg1XSwgWy03Ni4yNTE0MDQsIDcyLjgyNjM4NV0sIFstNzcuMzE0NDM4LCA3Mi44NTU1NDVdLCBbLTc4LjM5MTY3LCA3Mi44NzY2NTZdLCBbLTc5LjQ4NjI1MiwgNzIuNzQyMjAzXSwgWy03OS43NzU4MzMsIDcyLjgwMjkwMl0sIFstODAuODc2MDk5LCA3My4zMzMxODNdLCBbLTgwLjgzMzg4NSwgNzMuNjkzMTg0XSwgWy04MC4zNTMwNTgsIDczLjc1OTcyXSwgWy03OC4wNjQ0MzgsIDczLjY1MTkzMl0sIFstNzYuMzQsIDczLjEwMjY4NV1dXSwgW1tbLTg2LjU2MjE3OSwgNzMuMTU3NDQ3XSwgWy04NS43NzQzNzEsIDcyLjUzNDEyNl0sIFstODQuODUwMTEyLCA3My4zNDAyNzhdLCBbLTgyLjMxNTU5LCA3My43NTA5NTFdLCBbLTgwLjYwMDA4OCwgNzIuNzE2NTQ0XSwgWy04MC43NDg5NDIsIDcyLjA2MTkwN10sIFstNzguNzcwNjM5LCA3Mi4zNTIxNzNdLCBbLTc3LjgyNDYyNCwgNzIuNzQ5NjE3XSwgWy03NS42MDU4NDUsIDcyLjI0MzY3OF0sIFstNzQuMjI4NjE2LCA3MS43NjcxNDRdLCBbLTc0LjA5OTE0MSwgNzEuMzMwODRdLCBbLTcyLjI0MjIyNiwgNzEuNTU2OTI1XSwgWy03MS4yMDAwMTUsIDcwLjkyMDAxM10sIFstNjguNzg2MDU0LCA3MC41MjUwMjRdLCBbLTY3LjkxNDk3LCA3MC4xMjE5NDhdLCBbLTY2Ljk2OTAzMywgNjkuMTg2MDg3XSwgWy02OC44MDUxMjMsIDY4LjcyMDE5OF0sIFstNjYuNDQ5ODY2LCA2OC4wNjcxNjNdLCBbLTY0Ljg2MjMxNCwgNjcuODQ3NTM5XSwgWy02My40MjQ5MzQsIDY2LjkyODQ3M10sIFstNjEuODUxOTgxLCA2Ni44NjIxMjFdLCBbLTYyLjE2MzE3NywgNjYuMTYwMjUxXSwgWy02My45MTg0NDQsIDY0Ljk5ODY2OV0sIFstNjUuMTQ4ODYsIDY1LjQyNjAzM10sIFstNjYuNzIxMjE5LCA2Ni4zODgwNDFdLCBbLTY4LjAxNTAxNiwgNjYuMjYyNzI2XSwgWy02OC4xNDEyODcsIDY1LjY4OTc4OV0sIFstNjcuMDg5NjQ2LCA2NS4xMDg0NTVdLCBbLTY1LjczMjA4LCA2NC42NDg0MDZdLCBbLTY1LjMyMDE2OCwgNjQuMzgyNzM3XSwgWy02NC42Njk0MDYsIDYzLjM5MjkyN10sIFstNjUuMDEzODA0LCA2Mi42NzQxODVdLCBbLTY2LjI3NTA0NSwgNjIuOTQ1MDk5XSwgWy02OC43ODMxODYsIDYzLjc0NTY3XSwgWy02Ny4zNjk2ODEsIDYyLjg4Mzk2Nl0sIFstNjYuMzI4Mjk3LCA2Mi4yODAwNzVdLCBbLTY2LjE2NTU2OCwgNjEuOTMwODk3XSwgWy02OC44NzczNjcsIDYyLjMzMDE0OV0sIFstNzEuMDIzNDM3LCA2Mi45MTA3MDhdLCBbLTcyLjIzNTM3OSwgNjMuMzk3ODM2XSwgWy03MS44ODYyNzgsIDYzLjY3OTk4OV0sIFstNzMuMzc4MzA2LCA2NC4xOTM5NjNdLCBbLTc0LjgzNDQxOSwgNjQuNjc5MDc2XSwgWy03NC44MTg1MDMsIDY0LjM4OTA5M10sIFstNzcuNzA5OTgsIDY0LjIyOTU0Ml0sIFstNzguNTU1OTQ5LCA2NC41NzI5MDZdLCBbLTc3Ljg5NzI4MSwgNjUuMzA5MTkyXSwgWy03Ni4wMTgyNzQsIDY1LjMyNjk2OV0sIFstNzMuOTU5Nzk1LCA2NS40NTQ3NjVdLCBbLTc0LjI5Mzg4MywgNjUuODExNzcxXSwgWy03My45NDQ5MTIsIDY2LjMxMDU3OF0sIFstNzIuNjUxMTY3LCA2Ny4yODQ1NzZdLCBbLTcyLjkyNjA2LCA2Ny43MjY5MjZdLCBbLTczLjMxMTYxOCwgNjguMDY5NDM3XSwgWy03NC44NDMzMDcsIDY4LjU1NDYyN10sIFstNzYuODY5MTAxLCA2OC44OTQ3MzZdLCBbLTc2LjIyODY0OSwgNjkuMTQ3NzY5XSwgWy03Ny4yODczNywgNjkuNzY5NTRdLCBbLTc4LjE2ODYzNCwgNjkuODI2NDg4XSwgWy03OC45NTcyNDIsIDcwLjE2Njg4XSwgWy03OS40OTI0NTUsIDY5Ljg3MTgwOF0sIFstODEuMzA1NDcxLCA2OS43NDMxODVdLCBbLTg0Ljk0NDcwNiwgNjkuOTY2NjM0XSwgWy04Ny4wNjAwMDMsIDcwLjI2MDAwMV0sIFstODguNjgxNzEzLCA3MC40MTA3NDFdLCBbLTg5LjUxMzQyLCA3MC43NjIwMzhdLCBbLTg4LjQ2NzcyMSwgNzEuMjE4MTg2XSwgWy04OS44ODgxNTEsIDcxLjIyMjU1Ml0sIFstOTAuMjA1MTYsIDcyLjIzNTA3NF0sIFstODkuNDM2NTc3LCA3My4xMjk0NjRdLCBbLTg4LjQwODI0MiwgNzMuNTM3ODg5XSwgWy04NS44MjYxNTEsIDczLjgwMzgxNl0sIFstODYuNTYyMTc5LCA3My4xNTc0NDddXV0sIFtbWy0xMDAuMzU2NDIsIDczLjg0Mzg5XSwgWy05OS4xNjM4NywgNzMuNjMzMzldLCBbLTk3LjM4LCA3My43Nl0sIFstOTcuMTIsIDczLjQ3XSwgWy05OC4wNTM1OSwgNzIuOTkwNTJdLCBbLTk2LjU0LCA3Mi41Nl0sIFstOTYuNzIsIDcxLjY2XSwgWy05OC4zNTk2NiwgNzEuMjcyODVdLCBbLTk5LjMyMjg2LCA3MS4zNTYzOV0sIFstMTAwLjAxNDgyLCA3MS43MzgyN10sIFstMTAyLjUsIDcyLjUxXSwgWy0xMDIuNDgsIDcyLjgzXSwgWy0xMDAuNDM4MzYsIDcyLjcwNTg4XSwgWy0xMDEuNTQsIDczLjM2XSwgWy0xMDAuMzU2NDIsIDczLjg0Mzg5XV1dLCBbW1stOTMuMTk2Mjk2LCA3Mi43NzE5OTJdLCBbLTk0LjI2OTA0NywgNzIuMDI0NTk2XSwgWy05NS40MDk4NTYsIDcyLjA2MTg4MV0sIFstOTYuMDMzNzQ1LCA3Mi45NDAyNzddLCBbLTk2LjAxODI2OCwgNzMuNDM3NDNdLCBbLTk1LjQ5NTc5MywgNzMuODYyNDE3XSwgWy05NC41MDM2NTgsIDc0LjEzNDkwN10sIFstOTIuNDIwMDEyLCA3NC4xMDAwMjVdLCBbLTkwLjUwOTc5MywgNzMuODU2NzMyXSwgWy05Mi4wMDM5NjUsIDcyLjk2NjI0NF0sIFstOTMuMTk2Mjk2LCA3Mi43NzE5OTJdXV0sIFtbWy0xMjAuNDYsIDcxLjM4MzYwMl0sIFstMTIzLjA5MjE5LCA3MC45MDE2NF0sIFstMTIzLjYyLCA3MS4zNF0sIFstMTI1LjkyODk0OSwgNzEuODY4Njg4XSwgWy0xMjUuNSwgNzIuMjkyMjYxXSwgWy0xMjQuODA3MjksIDczLjAyMjU2XSwgWy0xMjMuOTQsIDczLjY4XSwgWy0xMjQuOTE3NzUsIDc0LjI5Mjc1XSwgWy0xMjEuNTM3ODgsIDc0LjQ0ODkzXSwgWy0xMjAuMTA5NzgsIDc0LjI0MTM1XSwgWy0xMTcuNTU1NjQsIDc0LjE4NTc3XSwgWy0xMTYuNTg0NDIsIDczLjg5NjA3XSwgWy0xMTUuNTEwODEsIDczLjQ3NTE5XSwgWy0xMTYuNzY3OTQsIDczLjIyMjkyXSwgWy0xMTkuMjIsIDcyLjUyXSwgWy0xMjAuNDYsIDcxLjgyXSwgWy0xMjAuNDYsIDcxLjM4MzYwMl1dXSwgW1tbLTkzLjYxMjc1NiwgNzQuOTc5OTk3XSwgWy05NC4xNTY5MDksIDc0LjU5MjM0N10sIFstOTUuNjA4NjgxLCA3NC42NjY4NjRdLCBbLTk2LjgyMDkzMiwgNzQuOTI3NjIzXSwgWy05Ni4yODg1ODcsIDc1LjM3NzgyOF0sIFstOTQuODUwODIsIDc1LjY0NzIxOF0sIFstOTMuOTc3NzQ3LCA3NS4yOTY0OV0sIFstOTMuNjEyNzU2LCA3NC45Nzk5OTddXV0sIFtbWy05OC41LCA3Ni43Ml0sIFstOTcuNzM1NTg1LCA3Ni4yNTY1Nl0sIFstOTcuNzA0NDE1LCA3NS43NDM0NF0sIFstOTguMTYsIDc1XSwgWy05OS44MDg3NCwgNzQuODk3NDRdLCBbLTEwMC44ODM2NiwgNzUuMDU3MzZdLCBbLTEwMC44NjI5MiwgNzUuNjQwNzVdLCBbLTEwMi41MDIwOSwgNzUuNTYzOF0sIFstMTAyLjU2NTUyLCA3Ni4zMzY2XSwgWy0xMDEuNDg5NzMsIDc2LjMwNTM3XSwgWy05OS45ODM0OSwgNzYuNjQ2MzRdLCBbLTk4LjU3Njk5LCA3Ni41ODg1OV0sIFstOTguNSwgNzYuNzJdXV0sIFtbWy0xMDguMjExNDEsIDc2LjIwMTY4XSwgWy0xMDcuODE5NDMsIDc1Ljg0NTUyXSwgWy0xMDYuOTI4OTMsIDc2LjAxMjgyXSwgWy0xMDUuODgxLCA3NS45Njk0XSwgWy0xMDUuNzA0OTgsIDc1LjQ3OTUxXSwgWy0xMDYuMzEzNDcsIDc1LjAwNTI3XSwgWy0xMDkuNywgNzQuODVdLCBbLTExMi4yMjMwNywgNzQuNDE2OTZdLCBbLTExMy43NDM4MSwgNzQuMzk0MjddLCBbLTExMy44NzEzNSwgNzQuNzIwMjldLCBbLTExMS43OTQyMSwgNzUuMTYyNV0sIFstMTE2LjMxMjIxLCA3NS4wNDM0M10sIFstMTE3LjcxMDQsIDc1LjIyMjJdLCBbLTExNi4zNDYwMiwgNzYuMTk5MDNdLCBbLTExNS40MDQ4NywgNzYuNDc4ODddLCBbLTExMi41OTA1NiwgNzYuMTQxMzRdLCBbLTExMC44MTQyMiwgNzUuNTQ5MTldLCBbLTEwOS4wNjcxLCA3NS40NzMyMV0sIFstMTEwLjQ5NzI2LCA3Ni40Mjk4Ml0sIFstMTA5LjU4MTEsIDc2Ljc5NDE3XSwgWy0xMDguNTQ4NTksIDc2LjY3ODMyXSwgWy0xMDguMjExNDEsIDc2LjIwMTY4XV1dLCBbW1stOTQuNjg0MDg2LCA3Ny4wOTc4NzhdLCBbLTkzLjU3MzkyMSwgNzYuNzc2Mjk2XSwgWy05MS42MDUwMjMsIDc2Ljc3ODUxOF0sIFstOTAuNzQxODQ2LCA3Ni40NDk1OTddLCBbLTkwLjk2OTY2MSwgNzYuMDc0MDEzXSwgWy04OS44MjIyMzgsIDc1Ljg0Nzc3NF0sIFstODkuMTg3MDgzLCA3NS42MTAxNjZdLCBbLTg3LjgzODI3NiwgNzUuNTY2MTg5XSwgWy04Ni4zNzkxOTIsIDc1LjQ4MjQyMV0sIFstODQuNzg5NjI1LCA3NS42OTkyMDRdLCBbLTgyLjc1MzQ0NSwgNzUuNzg0MzE1XSwgWy04MS4xMjg1MzEsIDc1LjcxMzk4M10sIFstODAuMDU3NTExLCA3NS4zMzY4NDldLCBbLTc5LjgzMzkzMywgNzQuOTIzMTI3XSwgWy04MC40NTc3NzEsIDc0LjY1NzMwNF0sIFstODEuOTQ4ODQzLCA3NC40NDI0NTldLCBbLTgzLjIyODg5NCwgNzQuNTY0MDI4XSwgWy04Ni4wOTc0NTIsIDc0LjQxMDAzMl0sIFstODguMTUwMzUsIDc0LjM5MjMwN10sIFstODkuNzY0NzIyLCA3NC41MTU1NTVdLCBbLTkyLjQyMjQ0MSwgNzQuODM3NzU4XSwgWy05Mi43NjgyODUsIDc1LjM4NjgyXSwgWy05Mi44ODk5MDYsIDc1Ljg4MjY1NV0sIFstOTMuODkzODI0LCA3Ni4zMTkyNDRdLCBbLTk1Ljk2MjQ1NywgNzYuNDQxMzgxXSwgWy05Ny4xMjEzNzksIDc2Ljc1MTA3OF0sIFstOTYuNzQ1MTIzLCA3Ny4xNjEzODldLCBbLTk0LjY4NDA4NiwgNzcuMDk3ODc4XV1dLCBbW1stMTE2LjE5ODU4NywgNzcuNjQ1Mjg3XSwgWy0xMTYuMzM1ODEzLCA3Ni44NzY5NjJdLCBbLTExNy4xMDYwNTEsIDc2LjUzMDAzMl0sIFstMTE4LjA0MDQxMiwgNzYuNDgxMTcyXSwgWy0xMTkuODk5MzE4LCA3Ni4wNTMyMTNdLCBbLTEyMS40OTk5OTUsIDc1LjkwMDAxOV0sIFstMTIyLjg1NDkyNCwgNzYuMTE2NTQzXSwgWy0xMjIuODU0OTI1LCA3Ni4xMTY1NDNdLCBbLTEyMS4xNTc1MzUsIDc2Ljg2NDUwOF0sIFstMTE5LjEwMzkzOSwgNzcuNTEyMjJdLCBbLTExNy41NzAxMzEsIDc3LjQ5ODMxOV0sIFstMTE2LjE5ODU4NywgNzcuNjQ1Mjg3XV1dLCBbW1stOTMuODQwMDAzLCA3Ny41MTk5OTddLCBbLTk0LjI5NTYwOCwgNzcuNDkxMzQzXSwgWy05Ni4xNjk2NTQsIDc3LjU1NTExMV0sIFstOTYuNDM2MzA0LCA3Ny44MzQ2MjldLCBbLTk0LjQyMjU3NywgNzcuODIwMDA1XSwgWy05My43MjA2NTYsIDc3LjYzNDMzMV0sIFstOTMuODQwMDAzLCA3Ny41MTk5OTddXV0sIFtbWy0xMTAuMTg2OTM4LCA3Ny42OTcwMTVdLCBbLTExMi4wNTExOTEsIDc3LjQwOTIyOV0sIFstMTEzLjUzNDI3OSwgNzcuNzMyMjA3XSwgWy0xMTIuNzI0NTg3LCA3OC4wNTEwNV0sIFstMTExLjI2NDQ0MywgNzguMTUyOTU2XSwgWy0xMDkuODU0NDUyLCA3Ny45OTYzMjVdLCBbLTExMC4xODY5MzgsIDc3LjY5NzAxNV1dXSwgW1tbLTEwOS42NjMxNDYsIDc4LjYwMTk3M10sIFstMTEwLjg4MTMxNCwgNzguNDA2OTJdLCBbLTExMi41NDIwOTEsIDc4LjQwNzkwMl0sIFstMTEyLjUyNTg5MSwgNzguNTUwNTU1XSwgWy0xMTEuNTAwMDEsIDc4Ljg0OTk5NF0sIFstMTEwLjk2MzY2MSwgNzguODA0NDQxXSwgWy0xMDkuNjYzMTQ2LCA3OC42MDE5NzNdXV0sIFtbWy05NS44MzAyOTUsIDc4LjA1Njk0MV0sIFstOTcuMzA5ODQzLCA3Ny44NTA1OTddLCBbLTk4LjEyNDI4OSwgNzguMDgyODU3XSwgWy05OC41NTI4NjgsIDc4LjQ1ODEwNV0sIFstOTguNjMxOTg0LCA3OC44NzE5M10sIFstOTcuMzM3MjMxLCA3OC44MzE5ODRdLCBbLTk2Ljc1NDM5OSwgNzguNzY1ODEzXSwgWy05NS41NTkyNzgsIDc4LjQxODMxNV0sIFstOTUuODMwMjk1LCA3OC4wNTY5NDFdXV0sIFtbWy0xMDAuMDYwMTkyLCA3OC4zMjQ3NTRdLCBbLTk5LjY3MDkzOSwgNzcuOTA3NTQ1XSwgWy0xMDEuMzAzOTQsIDc4LjAxODk4NV0sIFstMTAyLjk0OTgwOSwgNzguMzQzMjI5XSwgWy0xMDUuMTc2MTMzLCA3OC4zODAzMzJdLCBbLTEwNC4yMTA0MjksIDc4LjY3NzQyXSwgWy0xMDUuNDE5NTgsIDc4LjkxODMzNl0sIFstMTA1LjQ5MjI4OSwgNzkuMzAxNTk0XSwgWy0xMDMuNTI5MjgyLCA3OS4xNjUzNDldLCBbLTEwMC44MjUxNTgsIDc4LjgwMDQ2Ml0sIFstMTAwLjA2MDE5MiwgNzguMzI0NzU0XV1dLCBbW1stODcuMDIsIDc5LjY2XSwgWy04NS44MTQzNSwgNzkuMzM2OV0sIFstODcuMTg3NTYsIDc5LjAzOTNdLCBbLTg5LjAzNTM1LCA3OC4yODcyM10sIFstOTAuODA0MzYsIDc4LjIxNTMzXSwgWy05Mi44NzY2OSwgNzguMzQzMzNdLCBbLTkzLjk1MTE2LCA3OC43NTA5OV0sIFstOTMuOTM1NzQsIDc5LjExMzczXSwgWy05My4xNDUyNCwgNzkuMzgwMV0sIFstOTQuOTc0LCA3OS4zNzI0OF0sIFstOTYuMDc2MTQsIDc5LjcwNTAyXSwgWy05Ni43MDk3MiwgODAuMTU3NzddLCBbLTk2LjAxNjQ0LCA4MC42MDIzM10sIFstOTUuMzIzNDUsIDgwLjkwNzI5XSwgWy05NC4yOTg0MywgODAuOTc3MjddLCBbLTk0LjczNTQyLCA4MS4yMDY0Nl0sIFstOTIuNDA5ODQsIDgxLjI1NzM5XSwgWy05MS4xMzI4OSwgODAuNzIzNDVdLCBbLTg5LjQ1LCA4MC41MDkzMjJdLCBbLTg3LjgxLCA4MC4zMl0sIFstODcuMDIsIDc5LjY2XV1dLCBbW1stNjguNSwgODMuMTA2MzIyXSwgWy02NS44MjczNSwgODMuMDI4MDFdLCBbLTYzLjY4LCA4Mi45XSwgWy02MS44NSwgODIuNjI4Nl0sIFstNjEuODkzODgsIDgyLjM2MTY1XSwgWy02NC4zMzQsIDgxLjkyNzc1XSwgWy02Ni43NTM0MiwgODEuNzI1MjddLCBbLTY3LjY1NzU1LCA4MS41MDE0MV0sIFstNjUuNDgwMzEsIDgxLjUwNjU3XSwgWy02Ny44NCwgODAuOV0sIFstNjkuNDY5NywgODAuNjE2ODNdLCBbLTcxLjE4LCA3OS44XSwgWy03My4yNDI4LCA3OS42MzQxNV0sIFstNzMuODgsIDc5LjQzMDE2Ml0sIFstNzYuOTA3NzMsIDc5LjMyMzA5XSwgWy03NS41MjkyNCwgNzkuMTk3NjZdLCBbLTc2LjIyMDQ2LCA3OS4wMTkwN10sIFstNzUuMzkzNDUsIDc4LjUyNTgxXSwgWy03Ni4zNDM1NCwgNzguMTgyOTZdLCBbLTc3Ljg4ODUxLCA3Ny44OTk5MV0sIFstNzguMzYyNjksIDc3LjUwODU5XSwgWy03OS43NTk1MSwgNzcuMjA5NjhdLCBbLTc5LjYxOTY1LCA3Ni45ODMzNl0sIFstNzcuOTEwODksIDc3LjAyMjA0NV0sIFstNzcuODg5MTEsIDc2Ljc3Nzk1NV0sIFstODAuNTYxMjUsIDc2LjE3ODEyXSwgWy04My4xNzQzOSwgNzYuNDU0MDNdLCBbLTg2LjExMTg0LCA3Ni4yOTkwMV0sIFstODcuNiwgNzYuNDJdLCBbLTg5LjQ5MDY4LCA3Ni40NzIzOV0sIFstODkuNjE2MSwgNzYuOTUyMTNdLCBbLTg3Ljc2NzM5LCA3Ny4xNzgzM10sIFstODguMjYsIDc3LjldLCBbLTg3LjY1LCA3Ny45NzAyMjJdLCBbLTg0Ljk3NjM0LCA3Ny41Mzg3M10sIFstODYuMzQsIDc4LjE4XSwgWy04Ny45NjE5MiwgNzguMzcxODFdLCBbLTg3LjE1MTk4LCA3OC43NTg2N10sIFstODUuMzc4NjgsIDc4Ljk5NjldLCBbLTg1LjA5NDk1LCA3OS4zNDU0M10sIFstODYuNTA3MzQsIDc5LjczNjI0XSwgWy04Ni45MzE3OSwgODAuMjUxNDVdLCBbLTg0LjE5ODQ0LCA4MC4yMDgzNl0sIFstODMuNDA4Njk2LCA4MC4xXSwgWy04MS44NDgyMywgODAuNDY0NDJdLCBbLTg0LjEsIDgwLjU4XSwgWy04Ny41OTg5NSwgODAuNTE2MjddLCBbLTg5LjM2NjYzLCA4MC44NTU2OV0sIFstOTAuMiwgODEuMjZdLCBbLTkxLjM2Nzg2LCA4MS41NTMxXSwgWy05MS41ODcwMiwgODEuODk0MjldLCBbLTkwLjEsIDgyLjA4NV0sIFstODguOTMyMjcsIDgyLjExNzUxXSwgWy04Ni45NzAyNCwgODIuMjc5NjFdLCBbLTg1LjUsIDgyLjY1MjI3M10sIFstODQuMjYwMDA1LCA4Mi42XSwgWy04My4xOCwgODIuMzJdLCBbLTgyLjQyLCA4Mi44Nl0sIFstODEuMSwgODMuMDJdLCBbLTc5LjMwNjY0LCA4My4xMzA1Nl0sIFstNzYuMjUsIDgzLjE3MjA1OV0sIFstNzUuNzE4NzgsIDgzLjA2NDA0XSwgWy03Mi44MzE1MywgODMuMjMzMjRdLCBbLTcwLjY2NTc2NSwgODMuMTY5NzgxXSwgWy02OC41LCA4My4xMDYzMjJdXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkNBTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ2FuYWRhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s5LjU5NDIyNiwgNDcuNTI1MDU4XSwgWzkuNjMyOTMyLCA0Ny4zNDc2MDFdLCBbOS40Nzk5NywgNDcuMTAyODFdLCBbOS45MzI0NDgsIDQ2LjkyMDcyOF0sIFsxMC40NDI3MDEsIDQ2Ljg5MzU0Nl0sIFsxMC4zNjMzNzgsIDQ2LjQ4MzU3MV0sIFs5LjkyMjgzNywgNDYuMzE0ODk5XSwgWzkuMTgyODgyLCA0Ni40NDAyMTVdLCBbOC45NjYzMDYsIDQ2LjAzNjkzMl0sIFs4LjQ4OTk1MiwgNDYuMDA1MTUxXSwgWzguMzE2NjMsIDQ2LjE2MzY0Ml0sIFs3Ljc1NTk5MiwgNDUuODI0NDldLCBbNy4yNzM4NTEsIDQ1Ljc3Njk0OF0sIFs2Ljg0MzU5MywgNDUuOTkxMTQ3XSwgWzYuNTAwMSwgNDYuNDI5NjczXSwgWzYuMDIyNjA5LCA0Ni4yNzI5OV0sIFs2LjAzNzM4OSwgNDYuNzI1Nzc5XSwgWzYuNzY4NzE0LCA0Ny4yODc3MDhdLCBbNi43MzY1NzEsIDQ3LjU0MTgwMV0sIFs3LjE5MjIwMiwgNDcuNDQ5NzY2XSwgWzcuNDY2NzU5LCA0Ny42MjA1ODJdLCBbOC4zMTczMDEsIDQ3LjYxMzU4XSwgWzguNTIyNjEyLCA0Ny44MzA4MjhdLCBbOS41OTQyMjYsIDQ3LjUyNTA1OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ0hFIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJTd2l0emVybGFuZCIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWy02OC42MzQwMSwgLTUyLjYzNjM3XSwgWy02OC42MzMzNSwgLTU0Ljg2OTVdLCBbLTY3LjU2MjQ0LCAtNTQuODcwMDFdLCBbLTY2Ljk1OTkyLCAtNTQuODk2ODFdLCBbLTY3LjI5MTAzLCAtNTUuMzAxMjRdLCBbLTY4LjE0ODYzLCAtNTUuNjExODNdLCBbLTY4LjYzOTk5MSwgLTU1LjU4MDAxOF0sIFstNjkuMjMyMSwgLTU1LjQ5OTA2XSwgWy02OS45NTgwOSwgLTU1LjE5ODQzXSwgWy03MS4wMDU2OCwgLTU1LjA1MzgzXSwgWy03Mi4yNjM5LCAtNTQuNDk1MTRdLCBbLTczLjI4NTIsIC01My45NTc1Ml0sIFstNzQuNjYyNTMsIC01Mi44Mzc0OV0sIFstNzMuODM4MSwgLTUzLjA0NzQzXSwgWy03Mi40MzQxOCwgLTUzLjcxNTRdLCBbLTcxLjEwNzczLCAtNTQuMDc0MzNdLCBbLTcwLjU5MTc4LCAtNTMuNjE1ODNdLCBbLTcwLjI2NzQ4LCAtNTIuOTMxMjNdLCBbLTY5LjM0NTY1LCAtNTIuNTE4M10sIFstNjguNjM0MDEsIC01Mi42MzYzN11dXSwgW1tbLTY4LjIxOTkxMywgLTIxLjQ5NDM0N10sIFstNjcuODI4MTgsIC0yMi44NzI5MTldLCBbLTY3LjEwNjY3NCwgLTIyLjczNTkyNV0sIFstNjYuOTg1MjM0LCAtMjIuOTg2MzQ5XSwgWy02Ny4zMjg0NDMsIC0yNC4wMjUzMDNdLCBbLTY4LjQxNzY1MywgLTI0LjUxODU1NV0sIFstNjguMzg2MDAxLCAtMjYuMTg1MDE2XSwgWy02OC41OTQ4LCAtMjYuNTA2OTA5XSwgWy02OC4yOTU1NDIsIC0yNi44OTkzNF0sIFstNjkuMDAxMjM1LCAtMjcuNTIxMjE0XSwgWy02OS42NTYxMywgLTI4LjQ1OTE0MV0sIFstNzAuMDEzNTUsIC0yOS4zNjc5MjNdLCBbLTY5LjkxOTAwOCwgLTMwLjMzNjMzOV0sIFstNzAuNTM1MDY5LCAtMzEuMzY1MDFdLCBbLTcwLjA3NDM5OSwgLTMzLjA5MTIxXSwgWy02OS44MTQ3NzcsIC0zMy4yNzM4ODZdLCBbLTY5LjgxNzMwOSwgLTM0LjE5MzU3MV0sIFstNzAuMzg4MDQ5LCAtMzUuMTY5Njg4XSwgWy03MC4zNjQ3NjksIC0zNi4wMDUwODldLCBbLTcxLjEyMTg4MSwgLTM2LjY1ODEyNF0sIFstNzEuMTE4NjI1LCAtMzcuNTc2ODI3XSwgWy03MC44MTQ2NjQsIC0zOC41NTI5OTVdLCBbLTcxLjQxMzUxNywgLTM4LjkxNjAyMl0sIFstNzEuNjgwNzYxLCAtMzkuODA4MTY0XSwgWy03MS45MTU3MzQsIC00MC44MzIzMzldLCBbLTcxLjc0NjgwNCwgLTQyLjA1MTM4Nl0sIFstNzIuMTQ4ODk4LCAtNDIuMjU0ODg4XSwgWy03MS45MTU0MjQsIC00My40MDg1NjVdLCBbLTcxLjQ2NDA1NiwgLTQzLjc4NzYxMV0sIFstNzEuNzkzNjIzLCAtNDQuMjA3MTcyXSwgWy03MS4zMjk4MDEsIC00NC40MDc1MjJdLCBbLTcxLjIyMjc3OSwgLTQ0Ljc4NDI0M10sIFstNzEuNjU5MzE2LCAtNDQuOTczNjg5XSwgWy03MS41NTIwMDksIC00NS41NjA3MzNdLCBbLTcxLjkxNzI1OCwgLTQ2Ljg4NDgzOF0sIFstNzIuNDQ3MzU1LCAtNDcuNzM4NTMzXSwgWy03Mi4zMzExNjEsIC00OC4yNDQyMzhdLCBbLTcyLjY0ODI0NywgLTQ4Ljg3ODYxOF0sIFstNzMuNDE1NDM2LCAtNDkuMzE4NDM2XSwgWy03My4zMjgwNTEsIC01MC4zNzg3ODVdLCBbLTcyLjk3NTc0NywgLTUwLjc0MTQ1XSwgWy03Mi4zMDk5NzQsIC01MC42NzcwMV0sIFstNzIuMzI5NDA0LCAtNTEuNDI1OTU2XSwgWy03MS45MTQ4MDQsIC01Mi4wMDkwMjJdLCBbLTY5LjQ5ODM2MiwgLTUyLjE0Mjc2MV0sIFstNjguNTcxNTQ1LCAtNTIuMjk5NDQ0XSwgWy02OS40NjEyODQsIC01Mi4yOTE5NTFdLCBbLTY5Ljk0Mjc4LCAtNTIuNTM3OTMxXSwgWy03MC44NDUxMDIsIC01Mi44OTkyMDFdLCBbLTcxLjAwNjMzMiwgLTUzLjgzMzI1Ml0sIFstNzEuNDI5Nzk1LCAtNTMuODU2NDU1XSwgWy03Mi41NTc5NDMsIC01My41MzE0MV0sIFstNzMuNzAyNzU3LCAtNTIuODM1MDY5XSwgWy03My43MDI3NTcsIC01Mi44MzUwN10sIFstNzQuOTQ2NzYzLCAtNTIuMjYyNzU0XSwgWy03NS4yNjAwMjYsIC01MS42MjkzNTVdLCBbLTc0Ljk3NjYzMiwgLTUxLjA0MzM5Nl0sIFstNzUuNDc5NzU0LCAtNTAuMzc4MzcyXSwgWy03NS42MDgwMTUsIC00OC42NzM3NzNdLCBbLTc1LjE4Mjc3LCAtNDcuNzExOTE5XSwgWy03NC4xMjY1ODEsIC00Ni45MzkyNTNdLCBbLTc1LjY0NDM5NSwgLTQ2LjY0NzY0M10sIFstNzQuNjkyMTU0LCAtNDUuNzYzOTc2XSwgWy03NC4zNTE3MDksIC00NC4xMDMwNDRdLCBbLTczLjI0MDM1NiwgLTQ0LjQ1NDk2MV0sIFstNzIuNzE3ODA0LCAtNDIuMzgzMzU2XSwgWy03My4zODg5LCAtNDIuMTE3NTMyXSwgWy03My43MDEzMzYsIC00My4zNjU3NzZdLCBbLTc0LjMzMTk0MywgLTQzLjIyNDk1OF0sIFstNzQuMDE3OTU3LCAtNDEuNzk0ODEzXSwgWy03My42NzcwOTksIC0zOS45NDIyMTNdLCBbLTczLjIxNzU5MywgLTM5LjI1ODY4OV0sIFstNzMuNTA1NTU5LCAtMzguMjgyODgzXSwgWy03My41ODgwNjEsIC0zNy4xNTYyODVdLCBbLTczLjE2NjcxNywgLTM3LjEyMzc4XSwgWy03Mi41NTMxMzcsIC0zNS41MDg4NF0sIFstNzEuODYxNzMyLCAtMzMuOTA5MDkzXSwgWy03MS40Mzg0NSwgLTMyLjQxODg5OV0sIFstNzEuNjY4NzIxLCAtMzAuOTIwNjQ1XSwgWy03MS4zNzAwODMsIC0zMC4wOTU2ODJdLCBbLTcxLjQ4OTg5NCwgLTI4Ljg2MTQ0Ml0sIFstNzAuOTA1MTI0LCAtMjcuNjQwMzhdLCBbLTcwLjcyNDk1NCwgLTI1LjcwNTkyNF0sIFstNzAuNDAzOTY2LCAtMjMuNjI4OTk3XSwgWy03MC4wOTEyNDYsIC0yMS4zOTMzMTldLCBbLTcwLjE2NDQyLCAtMTkuNzU2NDY4XSwgWy03MC4zNzI1NzIsIC0xOC4zNDc5NzVdLCBbLTY5Ljg1ODQ0NCwgLTE4LjA5MjY5NF0sIFstNjkuNTkwNDI0LCAtMTcuNTgwMDEyXSwgWy02OS4xMDAyNDcsIC0xOC4yNjAxMjVdLCBbLTY4Ljk2NjgxOCwgLTE4Ljk4MTY4M10sIFstNjguNDQyMjI1LCAtMTkuNDA1MDY4XSwgWy02OC43NTcxNjcsIC0yMC4zNzI2NThdLCBbLTY4LjIxOTkxMywgLTIxLjQ5NDM0N11dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiQ0hMIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDaGlsZSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWzExMC4zMzkxODgsIDE4LjY3ODM5NV0sIFsxMDkuNDc1MjEsIDE4LjE5NzcwMV0sIFsxMDguNjU1MjA4LCAxOC41MDc2ODJdLCBbMTA4LjYyNjIxNywgMTkuMzY3ODg4XSwgWzEwOS4xMTkwNTYsIDE5LjgyMTAzOV0sIFsxMTAuMjExNTk5LCAyMC4xMDEyNTRdLCBbMTEwLjc4NjU1MSwgMjAuMDc3NTM0XSwgWzExMS4wMTAwNTEsIDE5LjY5NTkzXSwgWzExMC41NzA2NDcsIDE5LjI1NTg3OV0sIFsxMTAuMzM5MTg4LCAxOC42NzgzOTVdXV0sIFtbWzEyNy42NTc0MDcsIDQ5Ljc2MDI3XSwgWzEyOS4zOTc4MTgsIDQ5LjQ0MDZdLCBbMTMwLjU4MjI5MywgNDguNzI5Njg3XSwgWzEzMC45ODcyODIsIDQ3Ljc5MDEzMl0sIFsxMzIuNTA2NjcyLCA0Ny43ODg5N10sIFsxMzMuMzczNTk2LCA0OC4xODM0NDJdLCBbMTM1LjAyNjMxMSwgNDguNDc4MjNdLCBbMTM0LjUwMDgxNCwgNDcuNTc4NDRdLCBbMTM0LjExMjM2MiwgNDcuMjEyNDY3XSwgWzEzMy43Njk2NDQsIDQ2LjExNjkyN10sIFsxMzMuMDk3MTI3LCA0NS4xNDQwNjZdLCBbMTMxLjg4MzQ1NCwgNDUuMzIxMTYyXSwgWzEzMS4wMjUyMTIsIDQ0Ljk2Nzk1M10sIFsxMzEuMjg4NTU1LCA0NC4xMTE1Ml0sIFsxMzEuMTQ0Njg4LCA0Mi45Mjk5OV0sIFsxMzAuNjMzODY2LCA0Mi45MDMwMTVdLCBbMTMwLjY0MDAxNiwgNDIuMzk1MDA5XSwgWzEyOS45OTQyNjcsIDQyLjk4NTM4N10sIFsxMjkuNTk2NjY5LCA0Mi40MjQ5ODJdLCBbMTI4LjA1MjIxNSwgNDEuOTk0Mjg1XSwgWzEyOC4yMDg0MzMsIDQxLjQ2Njc3Ml0sIFsxMjcuMzQzNzgzLCA0MS41MDMxNTJdLCBbMTI2Ljg2OTA4MywgNDEuODE2NTY5XSwgWzEyNi4xODIwNDUsIDQxLjEwNzMzNl0sIFsxMjUuMDc5OTQyLCA0MC41Njk4MjRdLCBbMTI0LjI2NTYyNSwgMzkuOTI4NDkzXSwgWzEyMi44Njc1NywgMzkuNjM3Nzg4XSwgWzEyMi4xMzEzODgsIDM5LjE3MDQ1Ml0sIFsxMjEuMDU0NTU0LCAzOC44OTc0NzFdLCBbMTIxLjU4NTk5NSwgMzkuMzYwODU0XSwgWzEyMS4zNzY3NTcsIDM5Ljc1MDI2MV0sIFsxMjIuMTY4NTk1LCA0MC40MjI0NDNdLCBbMTIxLjY0MDM1OSwgNDAuOTQ2MzldLCBbMTIwLjc2ODYyOSwgNDAuNTkzMzg4XSwgWzExOS42Mzk2MDIsIDM5Ljg5ODA1Nl0sIFsxMTkuMDIzNDY0LCAzOS4yNTIzMzNdLCBbMTE4LjA0Mjc0OSwgMzkuMjA0Mjc0XSwgWzExNy41MzI3MDIsIDM4LjczNzYzNl0sIFsxMTguMDU5Njk5LCAzOC4wNjE0NzZdLCBbMTE4Ljg3ODE1LCAzNy44OTczMjVdLCBbMTE4LjkxMTYzNiwgMzcuNDQ4NDY0XSwgWzExOS43MDI4MDIsIDM3LjE1NjM4OV0sIFsxMjAuODIzNDU3LCAzNy44NzA0MjhdLCBbMTIxLjcxMTI1OSwgMzcuNDgxMTIzXSwgWzEyMi4zNTc5MzcsIDM3LjQ1NDQ4NF0sIFsxMjIuNTE5OTk1LCAzNi45MzA2MTRdLCBbMTIxLjEwNDE2NCwgMzYuNjUxMzI5XSwgWzEyMC42MzcwMDksIDM2LjExMTQ0XSwgWzExOS42NjQ1NjIsIDM1LjYwOTc5MV0sIFsxMTkuMTUxMjA4LCAzNC45MDk4NTldLCBbMTIwLjIyNzUyNSwgMzQuMzYwMzMyXSwgWzEyMC42MjAzNjksIDMzLjM3NjcyM10sIFsxMjEuMjI5MDE0LCAzMi40NjAzMTldLCBbMTIxLjkwODE0NiwgMzEuNjkyMTc0XSwgWzEyMS44OTE5MTksIDMwLjk0OTM1Ml0sIFsxMjEuMjY0MjU3LCAzMC42NzYyNjddLCBbMTIxLjUwMzUxOSwgMzAuMTQyOTE1XSwgWzEyMi4wOTIxMTQsIDI5LjgzMjUyXSwgWzEyMS45Mzg0MjgsIDI5LjAxODAyMl0sIFsxMjEuNjg0NDM5LCAyOC4yMjU1MTNdLCBbMTIxLjEyNTY2MSwgMjguMTM1NjczXSwgWzEyMC4zOTU0NzMsIDI3LjA1MzIwN10sIFsxMTkuNTg1NDk3LCAyNS43NDA3ODFdLCBbMTE4LjY1Njg3MSwgMjQuNTQ3MzkxXSwgWzExNy4yODE2MDYsIDIzLjYyNDUwMV0sIFsxMTUuODkwNzM1LCAyMi43ODI4NzNdLCBbMTE0Ljc2MzgyNywgMjIuNjY4MDc0XSwgWzExNC4xNTI1NDcsIDIyLjIyMzc2XSwgWzExMy44MDY3OCwgMjIuNTQ4MzRdLCBbMTEzLjI0MTA3OCwgMjIuMDUxMzY3XSwgWzExMS44NDM1OTIsIDIxLjU1MDQ5NF0sIFsxMTAuNzg1NDY2LCAyMS4zOTcxNDRdLCBbMTEwLjQ0NDAzOSwgMjAuMzQxMDMzXSwgWzEwOS44ODk4NjEsIDIwLjI4MjQ1N10sIFsxMDkuNjI3NjU1LCAyMS4wMDgyMjddLCBbMTA5Ljg2NDQ4OCwgMjEuMzk1MDUxXSwgWzEwOC41MjI4MTMsIDIxLjcxNTIxMl0sIFsxMDguMDUwMTgsIDIxLjU1MjM4XSwgWzEwNy4wNDM0MiwgMjEuODExODk5XSwgWzEwNi41NjcyNzMsIDIyLjIxODIwNV0sIFsxMDYuNzI1NDAzLCAyMi43OTQyNjhdLCBbMTA1LjgxMTI0NywgMjIuOTc2ODkyXSwgWzEwNS4zMjkyMDksIDIzLjM1MjA2M10sIFsxMDQuNDc2ODU4LCAyMi44MTkxNV0sIFsxMDMuNTA0NTE1LCAyMi43MDM3NTddLCBbMTAyLjcwNjk5MiwgMjIuNzA4Nzk1XSwgWzEwMi4xNzA0MzYsIDIyLjQ2NDc1M10sIFsxMDEuNjUyMDE4LCAyMi4zMTgxOTldLCBbMTAxLjgwMzEyLCAyMS4xNzQzNjddLCBbMTAxLjI3MDAyNiwgMjEuMjAxNjUyXSwgWzEwMS4xODAwMDUsIDIxLjQzNjU3M10sIFsxMDEuMTUwMDMzLCAyMS44NDk5ODRdLCBbMTAwLjQxNjUzOCwgMjEuNTU4ODM5XSwgWzk5Ljk4MzQ4OSwgMjEuNzQyOTM3XSwgWzk5LjI0MDg5OSwgMjIuMTE4MzE0XSwgWzk5LjUzMTk5MiwgMjIuOTQ5MDM5XSwgWzk4Ljg5ODc0OSwgMjMuMTQyNzIyXSwgWzk4LjY2MDI2MiwgMjQuMDYzMjg2XSwgWzk3LjYwNDcyLCAyMy44OTc0MDVdLCBbOTcuNzI0NjA5LCAyNS4wODM2MzddLCBbOTguNjcxODM4LCAyNS45MTg3MDNdLCBbOTguNzEyMDk0LCAyNi43NDM1MzZdLCBbOTguNjgyNjksIDI3LjUwODgxMl0sIFs5OC4yNDYyMzEsIDI3Ljc0NzIyMV0sIFs5Ny45MTE5ODgsIDI4LjMzNTk0NV0sIFs5Ny4zMjcxMTQsIDI4LjI2MTU4M10sIFs5Ni4yNDg4MzMsIDI4LjQxMTAzMV0sIFs5Ni41ODY1OTEsIDI4LjgzMDk4XSwgWzk2LjExNzY3OSwgMjkuNDUyODAyXSwgWzk1LjQwNDgwMiwgMjkuMDMxNzE3XSwgWzk0LjU2NTk5LCAyOS4yNzc0MzhdLCBbOTMuNDEzMzQ4LCAyOC42NDA2MjldLCBbOTIuNTAzMTE5LCAyNy44OTY4NzZdLCBbOTEuNjk2NjU3LCAyNy43NzE3NDJdLCBbOTEuMjU4ODU0LCAyOC4wNDA2MTRdLCBbOTAuNzMwNTE0LCAyOC4wNjQ5NTRdLCBbOTAuMDE1ODI5LCAyOC4yOTY0MzldLCBbODkuNDc1ODEsIDI4LjA0Mjc1OV0sIFs4OC44MTQyNDgsIDI3LjI5OTMxNl0sIFs4OC43MzAzMjYsIDI4LjA4Njg2NV0sIFs4OC4xMjA0NDEsIDI3Ljg3NjU0Ml0sIFs4Ni45NTQ1MTcsIDI3Ljk3NDI2Ml0sIFs4NS44MjMzMiwgMjguMjAzNTc2XSwgWzg1LjAxMTYzOCwgMjguNjQyNzc0XSwgWzg0LjIzNDU4LCAyOC44Mzk4OTRdLCBbODMuODk4OTkzLCAyOS4zMjAyMjZdLCBbODMuMzM3MTE1LCAyOS40NjM3MzJdLCBbODIuMzI3NTEzLCAzMC4xMTUyNjhdLCBbODEuNTI1ODA0LCAzMC40MjI3MTddLCBbODEuMTExMjU2LCAzMC4xODM0ODFdLCBbNzkuNzIxMzY3LCAzMC44ODI3MTVdLCBbNzguNzM4ODk0LCAzMS41MTU5MDZdLCBbNzguNDU4NDQ2LCAzMi42MTgxNjRdLCBbNzkuMTc2MTI5LCAzMi40ODM3OF0sIFs3OS4yMDg4OTIsIDMyLjk5NDM5NV0sIFs3OC44MTEwODYsIDMzLjUwNjE5OF0sIFs3OC45MTIyNjksIDM0LjMyMTkzNl0sIFs3Ny44Mzc0NTEsIDM1LjQ5NDAxXSwgWzc2LjE5Mjg0OCwgMzUuODk4NDAzXSwgWzc1Ljg5Njg5NywgMzYuNjY2ODA2XSwgWzc1LjE1ODAyOCwgMzcuMTMzMDMxXSwgWzc0Ljk4MDAwMiwgMzcuNDE5OTldLCBbNzQuODI5OTg2LCAzNy45OTAwMDddLCBbNzQuODY0ODE2LCAzOC4zNzg4NDZdLCBbNzQuMjU3NTE0LCAzOC42MDY1MDddLCBbNzMuOTI4ODUyLCAzOC41MDU4MTVdLCBbNzMuNjc1Mzc5LCAzOS40MzEyMzddLCBbNzMuOTYwMDEzLCAzOS42NjAwMDhdLCBbNzMuODIyMjQ0LCAzOS44OTM5NzNdLCBbNzQuNzc2ODYyLCA0MC4zNjY0MjVdLCBbNzUuNDY3ODI4LCA0MC41NjIwNzJdLCBbNzYuNTI2MzY4LCA0MC40Mjc5NDZdLCBbNzYuOTA0NDg0LCA0MS4wNjY0ODZdLCBbNzguMTg3MTk3LCA0MS4xODUzMTZdLCBbNzguNTQzNjYxLCA0MS41ODIyNDNdLCBbODAuMTE5NDMsIDQyLjEyMzk0MV0sIFs4MC4yNTk5OSwgNDIuMzQ5OTk5XSwgWzgwLjE4MDE1LCA0Mi45MjAwNjhdLCBbODAuODY2MjA2LCA0My4xODAzNjJdLCBbNzkuOTY2MTA2LCA0NC45MTc1MTddLCBbODEuOTQ3MDcxLCA0NS4zMTcwMjddLCBbODIuNDU4OTI2LCA0NS41Mzk2NV0sIFs4My4xODA0ODQsIDQ3LjMzMDAzMV0sIFs4NS4xNjQyOSwgNDcuMDAwOTU2XSwgWzg1LjcyMDQ4NCwgNDcuNDUyOTY5XSwgWzg1Ljc2ODIzMywgNDguNDU1NzUxXSwgWzg2LjU5ODc3NiwgNDguNTQ5MTgyXSwgWzg3LjM1OTk3LCA0OS4yMTQ5ODFdLCBbODcuNzUxMjY0LCA0OS4yOTcxOThdLCBbODguMDEzODMyLCA0OC41OTk0NjNdLCBbODguODU0Mjk4LCA0OC4wNjkwODJdLCBbOTAuMjgwODI2LCA0Ny42OTM1NDldLCBbOTAuOTcwODA5LCA0Ni44ODgxNDZdLCBbOTAuNTg1NzY4LCA0NS43MTk3MTZdLCBbOTAuOTQ1NTQsIDQ1LjI4NjA3M10sIFs5Mi4xMzM4OTEsIDQ1LjExNTA3Nl0sIFs5My40ODA3MzQsIDQ0Ljk3NTQ3Ml0sIFs5NC42ODg5MjksIDQ0LjM1MjMzMl0sIFs5NS4zMDY4NzUsIDQ0LjI0MTMzMV0sIFs5NS43NjI0NTUsIDQzLjMxOTQ0OV0sIFs5Ni4zNDkzOTYsIDQyLjcyNTYzNV0sIFs5Ny40NTE3NTcsIDQyLjc0ODg5XSwgWzk5LjUxNTgxNywgNDIuNTI0NjkxXSwgWzEwMC44NDU4NjYsIDQyLjY2MzgwNF0sIFsxMDEuODMzMDQsIDQyLjUxNDg3M10sIFsxMDMuMzEyMjc4LCA0MS45MDc0NjhdLCBbMTA0LjUyMjI4MiwgNDEuOTA4MzQ3XSwgWzEwNC45NjQ5OTQsIDQxLjU5NzQxXSwgWzEwNi4xMjkzMTYsIDQyLjEzNDMyOF0sIFsxMDcuNzQ0NzczLCA0Mi40ODE1MTZdLCBbMTA5LjI0MzU5NiwgNDIuNTE5NDQ2XSwgWzExMC40MTIxMDMsIDQyLjg3MTIzNF0sIFsxMTEuMTI5NjgyLCA0My40MDY4MzRdLCBbMTExLjgyOTU4OCwgNDMuNzQzMTE4XSwgWzExMS42Njc3MzcsIDQ0LjA3MzE3Nl0sIFsxMTEuMzQ4Mzc3LCA0NC40NTc0NDJdLCBbMTExLjg3MzMwNiwgNDUuMTAyMDc5XSwgWzExMi40MzYwNjIsIDQ1LjAxMTY0Nl0sIFsxMTMuNDYzOTA3LCA0NC44MDg4OTNdLCBbMTE0LjQ2MDMzMiwgNDUuMzM5ODE3XSwgWzExNS45ODUwOTYsIDQ1LjcyNzIzNV0sIFsxMTYuNzE3ODY4LCA0Ni4zODgyMDJdLCBbMTE3LjQyMTcwMSwgNDYuNjcyNzMzXSwgWzExOC44NzQzMjYsIDQ2LjgwNTQxMl0sIFsxMTkuNjYzMjcsIDQ2LjY5MjY4XSwgWzExOS43NzI4MjQsIDQ3LjA0ODA1OV0sIFsxMTguODY2NTc0LCA0Ny43NDcwNl0sIFsxMTguMDY0MTQzLCA0OC4wNjY3M10sIFsxMTcuMjk1NTA3LCA0Ny42OTc3MDldLCBbMTE2LjMwODk1MywgNDcuODUzNDFdLCBbMTE1Ljc0MjgzNywgNDcuNzI2NTQ1XSwgWzExNS40ODUyODIsIDQ4LjEzNTM4M10sIFsxMTYuMTkxODAyLCA0OS4xMzQ1OThdLCBbMTE2LjY3ODgwMSwgNDkuODg4NTMxXSwgWzExNy44NzkyNDQsIDQ5LjUxMDk4M10sIFsxMTkuMjg4NDYxLCA1MC4xNDI4ODNdLCBbMTE5LjI3OTM2NiwgNTAuNTgyOTA4XSwgWzEyMC4xODIwNSwgNTEuNjQzNTY2XSwgWzEyMC43MzgxOTEsIDUxLjk2NDExNV0sIFsxMjAuNzI1Nzg5LCA1Mi41MTYyMjZdLCBbMTIwLjE3NzA4OSwgNTIuNzUzODg2XSwgWzEyMS4wMDMwODUsIDUzLjI1MTQwMV0sIFsxMjIuMjQ1NzQ4LCA1My40MzE3MjZdLCBbMTIzLjU3MTUwNywgNTMuNDU4ODA0XSwgWzEyNS4wNjgyMTEsIDUzLjE2MTA0NV0sIFsxMjUuOTQ2MzQ5LCA1Mi43OTI3OTldLCBbMTI2LjU2NDM5OSwgNTEuNzg0MjU1XSwgWzEyNi45MzkxNTcsIDUxLjM1Mzg5NF0sIFsxMjcuMjg3NDU2LCA1MC43Mzk3OTddLCBbMTI3LjY1NzQwNywgNDkuNzYwMjddXV1dLCAidHlwZSI6ICJNdWx0aVBvbHlnb24ifSwgImlkIjogIkNITiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ2hpbmEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjYjEwMDI2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy0yLjg1NjEyNSwgNC45OTQ0NzZdLCBbLTMuMzExMDg0LCA0Ljk4NDI5Nl0sIFstNC4wMDg4MiwgNS4xNzk4MTNdLCBbLTQuNjQ5OTE3LCA1LjE2ODI2NF0sIFstNS44MzQ0OTYsIDQuOTkzNzAxXSwgWy02LjUyODc2OSwgNC43MDUwODhdLCBbLTcuNTE4OTQxLCA0LjMzODI4OF0sIFstNy43MTIxNTksIDQuMzY0NTY2XSwgWy03LjYzNTM2OCwgNS4xODgxNTldLCBbLTcuNTM5NzE1LCA1LjMxMzM0NV0sIFstNy41NzAxNTMsIDUuNzA3MzUyXSwgWy03Ljk5MzY5MywgNi4xMjYxOV0sIFstOC4zMTEzNDgsIDYuMTkzMDMzXSwgWy04LjYwMjg4LCA2LjQ2NzU2NF0sIFstOC4zODU0NTIsIDYuOTExODAxXSwgWy04LjQ4NTQ0NiwgNy4zOTUyMDhdLCBbLTguNDM5Mjk4LCA3LjY4NjA0M10sIFstOC4yODA3MDMsIDcuNjg3MThdLCBbLTguMjIxNzkyLCA4LjEyMzMyOV0sIFstOC4yOTkwNDksIDguMzE2NDQ0XSwgWy04LjIwMzQ5OSwgOC40NTU0NTNdLCBbLTcuODMyMSwgOC41NzU3MDRdLCBbLTguMDc5MTE0LCA5LjM3NjIyNF0sIFstOC4zMDk2MTYsIDkuNzg5NTMyXSwgWy04LjIyOTMzNywgMTAuMTI5MDJdLCBbLTguMDI5OTQ0LCAxMC4yMDY1MzVdLCBbLTcuODk5NTksIDEwLjI5NzM4Ml0sIFstNy42MjI3NTksIDEwLjE0NzIzNl0sIFstNi44NTA1MDcsIDEwLjEzODk5NF0sIFstNi42NjY0NjEsIDEwLjQzMDgxMV0sIFstNi40OTM5NjUsIDEwLjQxMTMwM10sIFstNi4yMDUyMjMsIDEwLjUyNDA2MV0sIFstNi4wNTA0NTIsIDEwLjA5NjM2MV0sIFstNS44MTY5MjYsIDEwLjIyMjU1NV0sIFstNS40MDQzNDIsIDEwLjM3MDczN10sIFstNC45NTQ2NTMsIDEwLjE1MjcxNF0sIFstNC43Nzk4ODQsIDkuODIxOTg1XSwgWy00LjMzMDI0NywgOS42MTA4MzVdLCBbLTMuOTgwNDQ5LCA5Ljg2MjM0NF0sIFstMy41MTE4OTksIDkuOTAwMzI2XSwgWy0yLjgyNzQ5NiwgOS42NDI0NjFdLCBbLTIuNTYyMTksIDguMjE5NjI4XSwgWy0yLjk4MzU4NSwgNy4zNzk3MDVdLCBbLTMuMjQ0MzcsIDYuMjUwNDcyXSwgWy0yLjgxMDcwMSwgNS4zODkwNTFdLCBbLTIuODU2MTI1LCA0Ljk5NDQ3Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ0lWIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJJdm9yeSBDb2FzdCIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTMuMDc1ODIyLCAyLjI2NzA5N10sIFsxMi45NTEzMzQsIDIuMzIxNjE2XSwgWzEyLjM1OTM4LCAyLjE5MjgxMl0sIFsxMS43NTE2NjUsIDIuMzI2NzU4XSwgWzExLjI3NjQ0OSwgMi4yNjEwNTFdLCBbOS42NDkxNTgsIDIuMjgzODY2XSwgWzkuNzk1MTk2LCAzLjA3MzQwNF0sIFs5LjQwNDM2NywgMy43MzQ1MjddLCBbOC45NDgxMTYsIDMuOTA0MTI5XSwgWzguNzQ0OTI0LCA0LjM1MjIxNV0sIFs4LjQ4ODgxNiwgNC40OTU2MTddLCBbOC41MDAyODgsIDQuNzcxOTgzXSwgWzguNzU3NTMzLCA1LjQ3OTY2Nl0sIFs5LjIzMzE2MywgNi40NDQ0OTFdLCBbOS41MjI3MDYsIDYuNDUzNDgyXSwgWzEwLjExODI3NywgNy4wMzg3N10sIFsxMC40OTczNzUsIDcuMDU1MzU4XSwgWzExLjA1ODc4OCwgNi42NDQ0MjddLCBbMTEuNzQ1Nzc0LCA2Ljk4MTM4M10sIFsxMS44MzkzMDksIDcuMzk3MDQyXSwgWzEyLjA2Mzk0NiwgNy43OTk4MDhdLCBbMTIuMjE4ODcyLCA4LjMwNTgyNF0sIFsxMi43NTM2NzIsIDguNzE3NzYzXSwgWzEyLjk1NTQ2OCwgOS40MTc3NzJdLCBbMTMuMTY3NiwgOS42NDA2MjZdLCBbMTMuMzA4Njc2LCAxMC4xNjAzNjJdLCBbMTMuNTcyOTUsIDEwLjc5ODU2Nl0sIFsxNC40MTUzNzksIDExLjU3MjM2OV0sIFsxNC40NjgxOTIsIDExLjkwNDc1Ml0sIFsxNC41NzcxNzgsIDEyLjA4NTM2MV0sIFsxNC4xODEzMzYsIDEyLjQ4MzY1N10sIFsxNC4yMTM1MzEsIDEyLjgwMjAzNV0sIFsxNC40OTU3ODcsIDEyLjg1OTM5Nl0sIFsxNC44OTMzODYsIDEyLjIxOTA0OF0sIFsxNC45NjAxNTIsIDExLjU1NTU3NF0sIFsxNC45MjM1NjUsIDEwLjg5MTMyNV0sIFsxNS40Njc4NzMsIDkuOTgyMzM3XSwgWzE0LjkwOTM1NCwgOS45OTIxMjldLCBbMTQuNjI3MjAxLCA5LjkyMDkxOV0sIFsxNC4xNzE0NjYsIDEwLjAyMTM3OF0sIFsxMy45NTQyMTgsIDkuNTQ5NDk1XSwgWzE0LjU0NDQ2NywgOC45NjU4NjFdLCBbMTQuOTc5OTk2LCA4Ljc5NjEwNF0sIFsxNS4xMjA4NjYsIDguMzgyMTVdLCBbMTUuNDM2MDkyLCA3LjY5MjgxMl0sIFsxNS4yNzk0NiwgNy40MjE5MjVdLCBbMTQuNzc2NTQ1LCA2LjQwODQ5OF0sIFsxNC41MzY1NiwgNi4yMjY5NTldLCBbMTQuNDU5NDA3LCA1LjQ1MTc2MV0sIFsxNC41NTg5MzYsIDUuMDMwNTk4XSwgWzE0LjQ3ODM3MiwgNC43MzI2MDVdLCBbMTQuOTUwOTUzLCA0LjIxMDM4OV0sIFsxNS4wMzYyMiwgMy44NTEzNjddLCBbMTUuNDA1Mzk2LCAzLjMzNTMwMV0sIFsxNS44NjI3MzIsIDMuMDEzNTM3XSwgWzE1LjkwNzM4MSwgMi41NTczODldLCBbMTYuMDEyODUyLCAyLjI2NzY0XSwgWzE1Ljk0MDkxOSwgMS43Mjc2NzNdLCBbMTUuMTQ2MzQyLCAxLjk2NDAxNV0sIFsxNC4zMzc4MTMsIDIuMjI3ODc1XSwgWzEzLjA3NTgyMiwgMi4yNjcwOTddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkNNUiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ2FtZXJvb24iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzMwLjgzMzg2LCAzLjUwOTE2Nl0sIFszMC43NzMzNDcsIDIuMzM5ODgzXSwgWzMxLjE3NDE0OSwgMi4yMDQ0NjVdLCBbMzAuODUyNjcsIDEuODQ5Mzk2XSwgWzMwLjQ2ODUwOCwgMS41ODM4MDVdLCBbMzAuMDg2MTU0LCAxLjA2MjMxM10sIFsyOS44NzU3NzksIDAuNTk3MzhdLCBbMjkuODE5NTAzLCAtMC4yMDUzMV0sIFsyOS41ODc4MzgsIC0wLjU4NzQwNl0sIFsyOS41Nzk0NjYsIC0xLjM0MTMxM10sIFsyOS4yOTE4ODcsIC0xLjYyMDA1Nl0sIFsyOS4yNTQ4MzUsIC0yLjIxNTExXSwgWzI5LjExNzQ3OSwgLTIuMjkyMjExXSwgWzI5LjAyNDkyNiwgLTIuODM5MjU4XSwgWzI5LjI3NjM4NCwgLTMuMjkzOTA3XSwgWzI5LjMzOTk5OCwgLTQuNDk5OTgzXSwgWzI5LjUxOTk4NywgLTUuNDE5OTc5XSwgWzI5LjQxOTk5MywgLTUuOTM5OTk5XSwgWzI5LjYyMDAzMiwgLTYuNTIwMDE1XSwgWzMwLjE5OTk5NywgLTcuMDc5OTgxXSwgWzMwLjc0MDAxNSwgLTguMzQwMDA3XSwgWzMwLjM0NjA4NiwgLTguMjM4MjU3XSwgWzI5LjAwMjkxMiwgLTguNDA3MDMyXSwgWzI4LjczNDg2NywgLTguNTI2NTU5XSwgWzI4LjQ0OTg3MSwgLTkuMTY0OTE4XSwgWzI4LjY3MzY4MiwgLTkuNjA1OTI1XSwgWzI4LjQ5NjA3LCAtMTAuNzg5ODg0XSwgWzI4LjM3MjI1MywgLTExLjc5MzY0N10sIFsyOC42NDI0MTcsIC0xMS45NzE1NjldLCBbMjkuMzQxNTQ4LCAtMTIuMzYwNzQ0XSwgWzI5LjYxNjAwMSwgLTEyLjE3ODg5NV0sIFsyOS42OTk2MTQsIC0xMy4yNTcyMjddLCBbMjguOTM0Mjg2LCAtMTMuMjQ4OTU4XSwgWzI4LjUyMzU2MiwgLTEyLjY5ODYwNF0sIFsyOC4xNTUxMDksIC0xMi4yNzI0ODFdLCBbMjcuMzg4Nzk5LCAtMTIuMTMyNzQ3XSwgWzI3LjE2NDQyLCAtMTEuNjA4NzQ4XSwgWzI2LjU1MzA4OCwgLTExLjkyNDQ0XSwgWzI1Ljc1MjMxLCAtMTEuNzg0OTY1XSwgWzI1LjQxODExOCwgLTExLjMzMDkzNl0sIFsyNC43ODMxNywgLTExLjIzODY5NF0sIFsyNC4zMTQ1MTYsIC0xMS4yNjI4MjZdLCBbMjQuMjU3MTU1LCAtMTAuOTUxOTkzXSwgWzIzLjkxMjIxNSwgLTEwLjkyNjgyNl0sIFsyMy40NTY3OTEsIC0xMC44Njc4NjNdLCBbMjIuODM3MzQ1LCAtMTEuMDE3NjIyXSwgWzIyLjQwMjc5OCwgLTEwLjk5MzA3NV0sIFsyMi4xNTUyNjgsIC0xMS4wODQ4MDFdLCBbMjIuMjA4NzUzLCAtOS44OTQ3OTZdLCBbMjEuODc1MTgyLCAtOS41MjM3MDhdLCBbMjEuODAxODAxLCAtOC45MDg3MDddLCBbMjEuOTQ5MTMxLCAtOC4zMDU5MDFdLCBbMjEuNzQ2NDU2LCAtNy45MjAwODVdLCBbMjEuNzI4MTExLCAtNy4yOTA4NzJdLCBbMjAuNTE0NzQ4LCAtNy4yOTk2MDZdLCBbMjAuNjAxODIzLCAtNi45MzkzMThdLCBbMjAuMDkxNjIyLCAtNi45NDMwOV0sIFsyMC4wMzc3MjMsIC03LjExNjM2MV0sIFsxOS40MTc1MDIsIC03LjE1NTQyOV0sIFsxOS4xNjY2MTMsIC03LjczODE4NF0sIFsxOS4wMTY3NTIsIC03Ljk4ODI0Nl0sIFsxOC40NjQxNzYsIC03Ljg0NzAxNF0sIFsxOC4xMzQyMjIsIC03Ljk4NzY3OF0sIFsxNy40NzI5NywgLTguMDY4NTUxXSwgWzE3LjA4OTk5NiwgLTcuNTQ1Njg5XSwgWzE2Ljg2MDE5MSwgLTcuMjIyMjk4XSwgWzE2LjU3MzE4LCAtNi42MjI2NDVdLCBbMTYuMzI2NTI4LCAtNS44Nzc0N10sIFsxMy4zNzU1OTcsIC01Ljg2NDI0MV0sIFsxMy4wMjQ4NjksIC01Ljk4NDM4OV0sIFsxMi43MzUxNzEsIC01Ljk2NTY4Ml0sIFsxMi4zMjI0MzIsIC02LjEwMDA5Ml0sIFsxMi4xODIzMzcsIC01Ljc4OTkzMV0sIFsxMi40MzY2ODgsIC01LjY4NDMwNF0sIFsxMi40NjgwMDQsIC01LjI0ODM2Ml0sIFsxMi42MzE2MTIsIC00Ljk5MTI3MV0sIFsxMi45OTU1MTcsIC00Ljc4MTEwM10sIFsxMy4yNTgyNCwgLTQuODgyOTU3XSwgWzEzLjYwMDIzNSwgLTQuNTAwMTM4XSwgWzE0LjE0NDk1NiwgLTQuNTEwMDA5XSwgWzE0LjIwOTAzNSwgLTQuNzkzMDkyXSwgWzE0LjU4MjYwNCwgLTQuOTcwMjM5XSwgWzE1LjE3MDk5MiwgLTQuMzQzNTA3XSwgWzE1Ljc1MzU0LCAtMy44NTUxNjVdLCBbMTYuMDA2MjksIC0zLjUzNTEzM10sIFsxNS45NzI4MDMsIC0yLjcxMjM5Ml0sIFsxNi40MDcwOTIsIC0xLjc0MDkyN10sIFsxNi44NjUzMDcsIC0xLjIyNTgxNl0sIFsxNy41MjM3MTYsIC0wLjc0MzgzXSwgWzE3LjYzODY0NSwgLTAuNDI0ODMyXSwgWzE3LjY2MzU1MywgLTAuMDU4MDg0XSwgWzE3LjgyNjU0LCAwLjI4ODkyM10sIFsxNy43NzQxOTIsIDAuODU1NjU5XSwgWzE3Ljg5ODgzNSwgMS43NDE4MzJdLCBbMTguMDk0Mjc2LCAyLjM2NTcyMl0sIFsxOC4zOTM3OTIsIDIuOTAwNDQzXSwgWzE4LjQ1MzA2NSwgMy41MDQzODZdLCBbMTguNTQyOTgyLCA0LjIwMTc4NV0sIFsxOC45MzIzMTIsIDQuNzA5NTA2XSwgWzE5LjQ2Nzc4NCwgNS4wMzE1MjhdLCBbMjAuMjkwNjc5LCA0LjY5MTY3OF0sIFsyMC45Mjc1OTEsIDQuMzIyNzg2XSwgWzIxLjY1OTEyMywgNC4yMjQzNDJdLCBbMjIuNDA1MTI0LCA0LjAyOTE2XSwgWzIyLjcwNDEyNCwgNC42MzMwNTFdLCBbMjIuODQxNDgsIDQuNzEwMTI2XSwgWzIzLjI5NzIxNCwgNC42MDk2OTNdLCBbMjQuNDEwNTMxLCA1LjEwODc4NF0sIFsyNC44MDUwMjksIDQuODk3MjQ3XSwgWzI1LjEyODgzMywgNC45MjcyNDVdLCBbMjUuMjc4Nzk4LCA1LjE3MDQwOF0sIFsyNS42NTA0NTUsIDUuMjU2MDg4XSwgWzI2LjQwMjc2MSwgNS4xNTA4NzVdLCBbMjcuMDQ0MDY1LCA1LjEyNzg1M10sIFsyNy4zNzQyMjYsIDUuMjMzOTQ0XSwgWzI3Ljk3OTk3NywgNC40MDg0MTNdLCBbMjguNDI4OTk0LCA0LjI4NzE1NV0sIFsyOC42OTY2NzgsIDQuNDU1MDc3XSwgWzI5LjE1OTA3OCwgNC4zODkyNjddLCBbMjkuNzE1OTk1LCA0LjYwMDgwNV0sIFsyOS45NTM1LCA0LjE3MzY5OV0sIFszMC44MzM4NiwgMy41MDkxNjZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkNPRCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRGVtb2NyYXRpYyBSZXB1YmxpYyBvZiB0aGUgQ29uZ28iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzEyLjk5NTUxNywgLTQuNzgxMTAzXSwgWzEyLjYyMDc2LCAtNC40MzgwMjNdLCBbMTIuMzE4NjA4LCAtNC42MDYyM10sIFsxMS45MTQ5NjMsIC01LjAzNzk4N10sIFsxMS4wOTM3NzMsIC0zLjk3ODgyN10sIFsxMS44NTUxMjIsIC0zLjQyNjg3MV0sIFsxMS40NzgwMzksIC0yLjc2NTYxOV0sIFsxMS44MjA5NjQsIC0yLjUxNDE2MV0sIFsxMi40OTU3MDMsIC0yLjM5MTY4OF0sIFsxMi41NzUyODQsIC0xLjk0ODUxMV0sIFsxMy4xMDk2MTksIC0yLjQyODc0XSwgWzEzLjk5MjQwNywgLTIuNDcwODA1XSwgWzE0LjI5OTIxLCAtMS45OTgyNzZdLCBbMTQuNDI1NDU2LCAtMS4zMzM0MDddLCBbMTQuMzE2NDE4LCAtMC41NTI2MjddLCBbMTMuODQzMzIxLCAwLjAzODc1OF0sIFsxNC4yNzYyNjYsIDEuMTk2OTNdLCBbMTQuMDI2NjY5LCAxLjM5NTY3N10sIFsxMy4yODI2MzEsIDEuMzE0MTg0XSwgWzEzLjAwMzExNCwgMS44MzA4OTZdLCBbMTMuMDc1ODIyLCAyLjI2NzA5N10sIFsxNC4zMzc4MTMsIDIuMjI3ODc1XSwgWzE1LjE0NjM0MiwgMS45NjQwMTVdLCBbMTUuOTQwOTE5LCAxLjcyNzY3M10sIFsxNi4wMTI4NTIsIDIuMjY3NjRdLCBbMTYuNTM3MDU4LCAzLjE5ODI1NV0sIFsxNy4xMzMwNDIsIDMuNzI4MTk3XSwgWzE3LjgwOTksIDMuNTYwMTk2XSwgWzE4LjQ1MzA2NSwgMy41MDQzODZdLCBbMTguMzkzNzkyLCAyLjkwMDQ0M10sIFsxOC4wOTQyNzYsIDIuMzY1NzIyXSwgWzE3Ljg5ODgzNSwgMS43NDE4MzJdLCBbMTcuNzc0MTkyLCAwLjg1NTY1OV0sIFsxNy44MjY1NCwgMC4yODg5MjNdLCBbMTcuNjYzNTUzLCAtMC4wNTgwODRdLCBbMTcuNjM4NjQ1LCAtMC40MjQ4MzJdLCBbMTcuNTIzNzE2LCAtMC43NDM4M10sIFsxNi44NjUzMDcsIC0xLjIyNTgxNl0sIFsxNi40MDcwOTIsIC0xLjc0MDkyN10sIFsxNS45NzI4MDMsIC0yLjcxMjM5Ml0sIFsxNi4wMDYyOSwgLTMuNTM1MTMzXSwgWzE1Ljc1MzU0LCAtMy44NTUxNjVdLCBbMTUuMTcwOTkyLCAtNC4zNDM1MDddLCBbMTQuNTgyNjA0LCAtNC45NzAyMzldLCBbMTQuMjA5MDM1LCAtNC43OTMwOTJdLCBbMTQuMTQ0OTU2LCAtNC41MTAwMDldLCBbMTMuNjAwMjM1LCAtNC41MDAxMzhdLCBbMTMuMjU4MjQsIC00Ljg4Mjk1N10sIFsxMi45OTU1MTcsIC00Ljc4MTEwM11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ09HIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJSZXB1YmxpYyBvZiB0aGUgQ29uZ28iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03NS4zNzMyMjMsIC0wLjE1MjAzMl0sIFstNzUuODAxNDY2LCAwLjA4NDgwMV0sIFstNzYuMjkyMzE0LCAwLjQxNjA0N10sIFstNzYuNTc2MzgsIDAuMjU2OTM2XSwgWy03Ny40MjQ5ODQsIDAuMzk1Njg3XSwgWy03Ny42Njg2MTMsIDAuODI1ODkzXSwgWy03Ny44NTUwNjEsIDAuODA5OTI1XSwgWy03OC44NTUyNTksIDEuMzgwOTI0XSwgWy03OC45OTA5MzUsIDEuNjkxMzddLCBbLTc4LjYxNzgzMSwgMS43NjY0MDRdLCBbLTc4LjY2MjExOCwgMi4yNjczNTVdLCBbLTc4LjQyNzYxLCAyLjYyOTU1Nl0sIFstNzcuOTMxNTQzLCAyLjY5NjYwNl0sIFstNzcuNTEwNDMxLCAzLjMyNTAxN10sIFstNzcuMTI3NjksIDMuODQ5NjM2XSwgWy03Ny40OTYyNzIsIDQuMDg3NjA2XSwgWy03Ny4zMDc2MDEsIDQuNjY3OTg0XSwgWy03Ny41MzMyMjEsIDUuNTgyODEyXSwgWy03Ny4zMTg4MTUsIDUuODQ1MzU0XSwgWy03Ny40NzY2NjEsIDYuNjkxMTE2XSwgWy03Ny44ODE1NzEsIDcuMjIzNzcxXSwgWy03Ny43NTM0MTQsIDcuNzA5ODRdLCBbLTc3LjQzMTEwOCwgNy42MzgwNjFdLCBbLTc3LjI0MjU2NiwgNy45MzUyNzhdLCBbLTc3LjQ3NDcyMywgOC41MjQyODZdLCBbLTc3LjM1MzM2MSwgOC42NzA1MDVdLCBbLTc2LjgzNjY3NCwgOC42Mzg3NDldLCBbLTc2LjA4NjM4NCwgOS4zMzY4MjFdLCBbLTc1LjY3NDYsIDkuNDQzMjQ4XSwgWy03NS42NjQ3MDQsIDkuNzc0MDAzXSwgWy03NS40ODA0MjYsIDEwLjYxODk5XSwgWy03NC45MDY4OTUsIDExLjA4MzA0NV0sIFstNzQuMjc2NzUzLCAxMS4xMDIwMzZdLCBbLTc0LjE5NzIyMywgMTEuMzEwNDczXSwgWy03My40MTQ3NjQsIDExLjIyNzAxNV0sIFstNzIuNjI3ODM1LCAxMS43MzE5NzJdLCBbLTcyLjIzODE5NSwgMTEuOTU1NTVdLCBbLTcxLjc1NDA5LCAxMi40MzczMDNdLCBbLTcxLjM5OTgyMiwgMTIuMzc2MDQxXSwgWy03MS4xMzc0NjEsIDEyLjExMjk4Ml0sIFstNzEuMzMxNTg0LCAxMS43NzYyODRdLCBbLTcxLjk3MzkyMiwgMTEuNjA4NjcyXSwgWy03Mi4yMjc1NzUsIDExLjEwODcwMl0sIFstNzIuNjE0NjU4LCAxMC44MjE5NzVdLCBbLTcyLjkwNTI4NiwgMTAuNDUwMzQ0XSwgWy03My4wMjc2MDQsIDkuNzM2NzddLCBbLTczLjMwNDk1MiwgOS4xNTJdLCBbLTcyLjc4ODczLCA5LjA4NTAyN10sIFstNzIuNjYwNDk1LCA4LjYyNTI4OF0sIFstNzIuNDM5ODYyLCA4LjQwNTI3NV0sIFstNzIuMzYwOTAxLCA4LjAwMjYzOF0sIFstNzIuNDc5Njc5LCA3LjYzMjUwNl0sIFstNzIuNDQ0NDg3LCA3LjQyMzc4NV0sIFstNzIuMTk4MzUyLCA3LjM0MDQzMV0sIFstNzEuOTYwMTc2LCA2Ljk5MTYxNV0sIFstNzAuNjc0MjM0LCA3LjA4Nzc4NV0sIFstNzAuMDkzMzEzLCA2Ljk2MDM3Nl0sIFstNjkuMzg5NDgsIDYuMDk5ODYxXSwgWy02OC45ODUzMTksIDYuMjA2ODA1XSwgWy02OC4yNjUwNTIsIDYuMTUzMjY4XSwgWy02Ny42OTUwODcsIDYuMjY3MzE4XSwgWy02Ny4zNDE0NCwgNi4wOTU0NjhdLCBbLTY3LjUyMTUzMiwgNS41NTY4N10sIFstNjcuNzQ0Njk3LCA1LjIyMTEyOV0sIFstNjcuODIzMDEyLCA0LjUwMzkzN10sIFstNjcuNjIxODM2LCAzLjgzOTQ4Ml0sIFstNjcuMzM3NTY0LCAzLjU0MjM0Ml0sIFstNjcuMzAzMTczLCAzLjMxODQ1NF0sIFstNjcuODA5OTM4LCAyLjgyMDY1NV0sIFstNjcuNDQ3MDkyLCAyLjYwMDI4MV0sIFstNjcuMTgxMjk0LCAyLjI1MDYzOF0sIFstNjYuODc2MzI2LCAxLjI1MzM2MV0sIFstNjcuMDY1MDQ4LCAxLjEzMDExMl0sIFstNjcuMjU5OTk4LCAxLjcxOTk5OV0sIFstNjcuNTM3ODEsIDIuMDM3MTYzXSwgWy02Ny44Njg1NjUsIDEuNjkyNDU1XSwgWy02OS44MTY5NzMsIDEuNzE0ODA1XSwgWy02OS44MDQ1OTcsIDEuMDg5MDgxXSwgWy02OS4yMTg2MzgsIDAuOTg1Njc3XSwgWy02OS4yNTI0MzQsIDAuNjAyNjUxXSwgWy02OS40NTIzOTYsIDAuNzA2MTU5XSwgWy03MC4wMTU1NjYsIDAuNTQxNDE0XSwgWy03MC4wMjA2NTYsIC0wLjE4NTE1Nl0sIFstNjkuNTc3MDY1LCAtMC41NDk5OTJdLCBbLTY5LjQyMDQ4NiwgLTEuMTIyNjE5XSwgWy02OS40NDQxMDIsIC0xLjU1NjI4N10sIFstNjkuODkzNjM1LCAtNC4yOTgxODddLCBbLTcwLjM5NDA0NCwgLTMuNzY2NTkxXSwgWy03MC42OTI2ODIsIC0zLjc0Mjg3Ml0sIFstNzAuMDQ3NzA5LCAtMi43MjUxNTZdLCBbLTcwLjgxMzQ3NiwgLTIuMjU2ODY1XSwgWy03MS40MTM2NDYsIC0yLjM0MjgwMl0sIFstNzEuNzc0NzYxLCAtMi4xNjk3OV0sIFstNzIuMzI1Nzg3LCAtMi40MzQyMThdLCBbLTczLjA3MDM5MiwgLTIuMzA4OTU0XSwgWy03My42NTk1MDQsIC0xLjI2MDQ5MV0sIFstNzQuMTIyMzk1LCAtMS4wMDI4MzNdLCBbLTc0LjQ0MTYwMSwgLTAuNTMwODJdLCBbLTc1LjEwNjYyNSwgLTAuMDU3MjA1XSwgWy03NS4zNzMyMjMsIC0wLjE1MjAzMl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ09MIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDb2xvbWJpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTgyLjk2NTc4MywgOC4yMjUwMjhdLCBbLTgzLjUwODQzNywgOC40NDY5MjddLCBbLTgzLjcxMTQ3NCwgOC42NTY4MzZdLCBbLTgzLjU5NjMxMywgOC44MzA0NDNdLCBbLTgzLjYzMjY0MiwgOS4wNTEzODZdLCBbLTgzLjkwOTg4NiwgOS4yOTA4MDNdLCBbLTg0LjMwMzQwMiwgOS40ODczNTRdLCBbLTg0LjY0NzY0NCwgOS42MTU1MzddLCBbLTg0LjcxMzM1MSwgOS45MDgwNTJdLCBbLTg0Ljk3NTY2LCAxMC4wODY3MjNdLCBbLTg0LjkxMTM3NSwgOS43OTU5OTJdLCBbLTg1LjExMDkyMywgOS41NTcwNF0sIFstODUuMzM5NDg4LCA5LjgzNDU0Ml0sIFstODUuNjYwNzg3LCA5LjkzMzM0N10sIFstODUuNzk3NDQ1LCAxMC4xMzQ4ODZdLCBbLTg1Ljc5MTcwOSwgMTAuNDM5MzM3XSwgWy04NS42NTkzMTQsIDEwLjc1NDMzMV0sIFstODUuOTQxNzI1LCAxMC44OTUyNzhdLCBbLTg1LjcxMjU0LCAxMS4wODg0NDVdLCBbLTg1LjU2MTg1MiwgMTEuMjE3MTE5XSwgWy04NC45MDMwMDMsIDEwLjk1MjMwM10sIFstODQuNjczMDY5LCAxMS4wODI2NTddLCBbLTg0LjM1NTkzMSwgMTAuOTk5MjI2XSwgWy04NC4xOTAxNzksIDEwLjc5MzQ1XSwgWy04My44OTUwNTQsIDEwLjcyNjgzOV0sIFstODMuNjU1NjEyLCAxMC45Mzg3NjRdLCBbLTgzLjQwMjMyLCAxMC4zOTU0MzhdLCBbLTgzLjAxNTY3NywgOS45OTI5ODJdLCBbLTgyLjU0NjE5NiwgOS41NjYxMzVdLCBbLTgyLjkzMjg5MSwgOS40NzY4MTJdLCBbLTgyLjkyNzE1NSwgOS4wNzQzM10sIFstODIuNzE5MTgzLCA4LjkyNTcwOV0sIFstODIuODY4NjU3LCA4LjgwNzI2Nl0sIFstODIuODI5NzcxLCA4LjYyNjI5NV0sIFstODIuOTEzMTc2LCA4LjQyMzUxN10sIFstODIuOTY1NzgzLCA4LjIyNTAyOF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiQ1JJIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJDb3N0YSBSaWNhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stODIuMjY4MTUxLCAyMy4xODg2MTFdLCBbLTgxLjQwNDQ1NywgMjMuMTE3MjcxXSwgWy04MC42MTg3NjksIDIzLjEwNTk4XSwgWy03OS42Nzk1MjQsIDIyLjc2NTMwM10sIFstNzkuMjgxNDg2LCAyMi4zOTkyMDJdLCBbLTc4LjM0NzQzNCwgMjIuNTEyMTY2XSwgWy03Ny45OTMyOTYsIDIyLjI3NzE5NF0sIFstNzcuMTQ2NDIyLCAyMS42NTc4NTFdLCBbLTc2LjUyMzgyNSwgMjEuMjA2ODJdLCBbLTc2LjE5NDYyLCAyMS4yMjA1NjVdLCBbLTc1LjU5ODIyMiwgMjEuMDE2NjI0XSwgWy03NS42NzEwNiwgMjAuNzM1MDkxXSwgWy03NC45MzM4OTYsIDIwLjY5MzkwNV0sIFstNzQuMTc4MDI1LCAyMC4yODQ2MjhdLCBbLTc0LjI5NjY0OCwgMjAuMDUwMzc5XSwgWy03NC45NjE1OTUsIDE5LjkyMzQzNV0sIFstNzUuNjM0NjgsIDE5Ljg3Mzc3NF0sIFstNzYuMzIzNjU2LCAxOS45NTI4OTFdLCBbLTc3Ljc1NTQ4MSwgMTkuODU1NDgxXSwgWy03Ny4wODUxMDgsIDIwLjQxMzM1NF0sIFstNzcuNDkyNjU1LCAyMC42NzMxMDVdLCBbLTc4LjEzNzI5MiwgMjAuNzM5OTQ5XSwgWy03OC40ODI4MjcsIDIxLjAyODYxM10sIFstNzguNzE5ODY3LCAyMS41OTgxMTRdLCBbLTc5LjI4NSwgMjEuNTU5MTc1XSwgWy04MC4yMTc0NzUsIDIxLjgyNzMyNF0sIFstODAuNTE3NTM1LCAyMi4wMzcwNzldLCBbLTgxLjgyMDk0MywgMjIuMTkyMDU3XSwgWy04Mi4xNjk5OTIsIDIyLjM4NzEwOV0sIFstODEuNzk1MDAyLCAyMi42MzY5NjVdLCBbLTgyLjc3NTg5OCwgMjIuNjg4MTVdLCBbLTgzLjQ5NDQ1OSwgMjIuMTY4NTE4XSwgWy04My45MDg4LCAyMi4xNTQ1NjVdLCBbLTg0LjA1MjE1MSwgMjEuOTEwNTc1XSwgWy04NC41NDcwMywgMjEuODAxMjI4XSwgWy04NC45NzQ5MTEsIDIxLjg5NjAyOF0sIFstODQuNDQ3MDYyLCAyMi4yMDQ5NV0sIFstODQuMjMwMzU3LCAyMi41NjU3NTVdLCBbLTgzLjc3ODI0LCAyMi43ODgxMThdLCBbLTgzLjI2NzU0OCwgMjIuOTgzMDQyXSwgWy04Mi41MTA0MzYsIDIzLjA3ODc0N10sIFstODIuMjY4MTUxLCAyMy4xODg2MTFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkNVQiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ3ViYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMzIuNzMxNzgsIDM1LjE0MDAyNl0sIFszMi44MDI0NzQsIDM1LjE0NTUwNF0sIFszMi45NDY5NjEsIDM1LjM4NjcwM10sIFszMy42NjcyMjcsIDM1LjM3MzIxNl0sIFszNC41NzY0NzQsIDM1LjY3MTU5Nl0sIFszMy45MDA4MDQsIDM1LjI0NTc1Nl0sIFszMy45NzM2MTcsIDM1LjA1ODUwNl0sIFszMy44NjY0NCwgMzUuMDkzNTk1XSwgWzMzLjY3NTM5MiwgMzUuMDE3ODYzXSwgWzMzLjUyNTY4NSwgMzUuMDM4Njg4XSwgWzMzLjQ3NTgxNywgMzUuMDAwMzQ1XSwgWzMzLjQ1NTkyMiwgMzUuMTAxNDI0XSwgWzMzLjM4MzgzMywgMzUuMTYyNzEyXSwgWzMzLjE5MDk3NywgMzUuMTczMTI1XSwgWzMyLjkxOTU3MiwgMzUuMDg3ODMzXSwgWzMyLjczMTc4LCAzNS4xNDAwMjZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIi05OSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiTm9ydGhlcm4gQ3lwcnVzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szMy45NzM2MTcsIDM1LjA1ODUwNl0sIFszNC4wMDQ4ODEsIDM0Ljk3ODA5OF0sIFszMi45Nzk4MjcsIDM0LjU3MTg2OV0sIFszMi40OTAyOTYsIDM0LjcwMTY1NV0sIFszMi4yNTY2NjcsIDM1LjEwMzIzMl0sIFszMi43MzE3OCwgMzUuMTQwMDI2XSwgWzMyLjkxOTU3MiwgMzUuMDg3ODMzXSwgWzMzLjE5MDk3NywgMzUuMTczMTI1XSwgWzMzLjM4MzgzMywgMzUuMTYyNzEyXSwgWzMzLjQ1NTkyMiwgMzUuMTAxNDI0XSwgWzMzLjQ3NTgxNywgMzUuMDAwMzQ1XSwgWzMzLjUyNTY4NSwgMzUuMDM4Njg4XSwgWzMzLjY3NTM5MiwgMzUuMDE3ODYzXSwgWzMzLjg2NjQ0LCAzNS4wOTM1OTVdLCBbMzMuOTczNjE3LCAzNS4wNTg1MDZdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkNZUCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ3lwcnVzIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxNi45NjAyODgsIDQ4LjU5Njk4Ml0sIFsxNi40OTkyODMsIDQ4Ljc4NTgwOF0sIFsxNi4wMjk2NDcsIDQ4LjczMzg5OV0sIFsxNS4yNTM0MTYsIDQ5LjAzOTA3NF0sIFsxNC45MDE0NDcsIDQ4Ljk2NDQwMl0sIFsxNC4zMzg4OTgsIDQ4LjU1NTMwNV0sIFsxMy41OTU5NDYsIDQ4Ljg3NzE3Ml0sIFsxMy4wMzEzMjksIDQ5LjMwNzA2OF0sIFsxMi41MjEwMjQsIDQ5LjU0NzQxNV0sIFsxMi40MTUxOTEsIDQ5Ljk2OTEyMV0sIFsxMi4yNDAxMTEsIDUwLjI2NjMzOF0sIFsxMi45NjY4MzcsIDUwLjQ4NDA3Nl0sIFsxMy4zMzgxMzIsIDUwLjczMzIzNF0sIFsxNC4wNTYyMjgsIDUwLjkyNjkxOF0sIFsxNC4zMDcwMTMsIDUxLjExNzI2OF0sIFsxNC41NzA3MTgsIDUxLjAwMjMzOV0sIFsxNS4wMTY5OTYsIDUxLjEwNjY3NF0sIFsxNS40OTA5NzIsIDUwLjc4NDczXSwgWzE2LjIzODYyNywgNTAuNjk3NzMzXSwgWzE2LjE3NjI1MywgNTAuNDIyNjA3XSwgWzE2LjcxOTQ3NiwgNTAuMjE1NzQ3XSwgWzE2Ljg2ODc2OSwgNTAuNDczOTc0XSwgWzE3LjU1NDU2NywgNTAuMzYyMTQ2XSwgWzE3LjY0OTQ0NSwgNTAuMDQ5MDM4XSwgWzE4LjM5MjkxNCwgNDkuOTg4NjI5XSwgWzE4Ljg1MzE0NCwgNDkuNDk2MjNdLCBbMTguNTU0OTcxLCA0OS40OTUwMTVdLCBbMTguMzk5OTk0LCA0OS4zMTUwMDFdLCBbMTguMTcwNDk4LCA0OS4yNzE1MTVdLCBbMTguMTA0OTczLCA0OS4wNDM5ODNdLCBbMTcuOTEzNTEyLCA0OC45OTY0OTNdLCBbMTcuODg2NDg1LCA0OC45MDM0NzVdLCBbMTcuNTQ1MDA3LCA0OC44MDAwMTldLCBbMTcuMTAxOTg1LCA0OC44MTY5NjldLCBbMTYuOTYwMjg4LCA0OC41OTY5ODJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkNaRSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiQ3plY2ggUmVwdWJsaWMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzkuOTIxOTA2LCA1NC45ODMxMDRdLCBbOS45Mzk1OCwgNTQuNTk2NjQyXSwgWzEwLjk1MDExMiwgNTQuMzYzNjA3XSwgWzEwLjkzOTQ2NywgNTQuMDA4NjkzXSwgWzExLjk1NjI1MiwgNTQuMTk2NDg2XSwgWzEyLjUxODQ0LCA1NC40NzAzNzFdLCBbMTMuNjQ3NDY3LCA1NC4wNzU1MTFdLCBbMTQuMTE5Njg2LCA1My43NTcwMjldLCBbMTQuMzUzMzE1LCA1My4yNDgxNzFdLCBbMTQuMDc0NTIxLCA1Mi45ODEyNjNdLCBbMTQuNDM3NiwgNTIuNjI0ODVdLCBbMTQuNjg1MDI2LCA1Mi4wODk5NDddLCBbMTQuNjA3MDk4LCA1MS43NDUxODhdLCBbMTUuMDE2OTk2LCA1MS4xMDY2NzRdLCBbMTQuNTcwNzE4LCA1MS4wMDIzMzldLCBbMTQuMzA3MDEzLCA1MS4xMTcyNjhdLCBbMTQuMDU2MjI4LCA1MC45MjY5MThdLCBbMTMuMzM4MTMyLCA1MC43MzMyMzRdLCBbMTIuOTY2ODM3LCA1MC40ODQwNzZdLCBbMTIuMjQwMTExLCA1MC4yNjYzMzhdLCBbMTIuNDE1MTkxLCA0OS45NjkxMjFdLCBbMTIuNTIxMDI0LCA0OS41NDc0MTVdLCBbMTMuMDMxMzI5LCA0OS4zMDcwNjhdLCBbMTMuNTk1OTQ2LCA0OC44NzcxNzJdLCBbMTMuMjQzMzU3LCA0OC40MTYxMTVdLCBbMTIuODg0MTAzLCA0OC4yODkxNDZdLCBbMTMuMDI1ODUxLCA0Ny42Mzc1ODRdLCBbMTIuOTMyNjI3LCA0Ny40Njc2NDZdLCBbMTIuNjIwNzYsIDQ3LjY3MjM4OF0sIFsxMi4xNDEzNTcsIDQ3LjcwMzA4M10sIFsxMS40MjY0MTQsIDQ3LjUyMzc2Nl0sIFsxMC41NDQ1MDQsIDQ3LjU2NjM5OV0sIFsxMC40MDIwODQsIDQ3LjMwMjQ4OF0sIFs5Ljg5NjA2OCwgNDcuNTgwMTk3XSwgWzkuNTk0MjI2LCA0Ny41MjUwNThdLCBbOC41MjI2MTIsIDQ3LjgzMDgyOF0sIFs4LjMxNzMwMSwgNDcuNjEzNThdLCBbNy40NjY3NTksIDQ3LjYyMDU4Ml0sIFs3LjU5MzY3NiwgNDguMzMzMDE5XSwgWzguMDk5Mjc5LCA0OS4wMTc3ODRdLCBbNi42NTgyMywgNDkuMjAxOTU4XSwgWzYuMTg2MzIsIDQ5LjQ2MzgwM10sIFs2LjI0Mjc1MSwgNDkuOTAyMjI2XSwgWzYuMDQzMDczLCA1MC4xMjgwNTJdLCBbNi4xNTY2NTgsIDUwLjgwMzcyMV0sIFs1Ljk4ODY1OCwgNTEuODUxNjE2XSwgWzYuNTg5Mzk3LCA1MS44NTIwMjldLCBbNi44NDI4NywgNTIuMjI4NDRdLCBbNy4wOTIwNTMsIDUzLjE0NDA0M10sIFs2LjkwNTE0LCA1My40ODIxNjJdLCBbNy4xMDA0MjUsIDUzLjY5MzkzMl0sIFs3LjkzNjIzOSwgNTMuNzQ4Mjk2XSwgWzguMTIxNzA2LCA1My41Mjc3OTJdLCBbOC44MDA3MzQsIDU0LjAyMDc4Nl0sIFs4LjU3MjExOCwgNTQuMzk1NjQ2XSwgWzguNTI2MjI5LCA1NC45NjI3NDRdLCBbOS4yODIwNDksIDU0LjgzMDg2NV0sIFs5LjkyMTkwNiwgNTQuOTgzMTA0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJERVUiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkdlcm1hbnkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzQzLjA4MTIyNiwgMTIuNjk5NjM5XSwgWzQzLjMxNzg1MiwgMTIuMzkwMTQ4XSwgWzQzLjI4NjM4MSwgMTEuOTc0OTI4XSwgWzQyLjcxNTg3NCwgMTEuNzM1NjQxXSwgWzQzLjE0NTMwNSwgMTEuNDYyMDRdLCBbNDIuNzc2ODUyLCAxMC45MjY4NzldLCBbNDIuNTU0OTMsIDExLjEwNTExXSwgWzQyLjMxNDE0LCAxMS4wMzQyXSwgWzQxLjc1NTU3LCAxMS4wNTA5MV0sIFs0MS43Mzk1OSwgMTEuMzU1MTFdLCBbNDEuNjYxNzYsIDExLjYzMTJdLCBbNDIsIDEyLjFdLCBbNDIuMzUxNTYsIDEyLjU0MjIzXSwgWzQyLjc3OTY0MiwgMTIuNDU1NDE2XSwgWzQzLjA4MTIyNiwgMTIuNjk5NjM5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJESkkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkRqaWJvdXRpIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTIuNjkwMDA2LCA1NS42MDk5OTFdLCBbMTIuMDg5OTkxLCA1NC44MDAwMTVdLCBbMTEuMDQzNTQzLCA1NS4zNjQ4NjRdLCBbMTAuOTAzOTE0LCA1NS43Nzk5NTVdLCBbMTIuMzcwOTA0LCA1Ni4xMTE0MDddLCBbMTIuNjkwMDA2LCA1NS42MDk5OTFdXV0sIFtbWzEwLjkxMjE4MiwgNTYuNDU4NjIxXSwgWzEwLjY2NzgwNCwgNTYuMDgxMzgzXSwgWzEwLjM2OTk5MywgNTYuMTkwMDA3XSwgWzkuNjQ5OTg1LCA1NS40Njk5OTldLCBbOS45MjE5MDYsIDU0Ljk4MzEwNF0sIFs5LjI4MjA0OSwgNTQuODMwODY1XSwgWzguNTI2MjI5LCA1NC45NjI3NDRdLCBbOC4xMjAzMTEsIDU1LjUxNzcyM10sIFs4LjA4OTk3NywgNTYuNTQwMDEyXSwgWzguMjU2NTgyLCA1Ni44MDk5NjldLCBbOC41NDM0MzgsIDU3LjExMDAwM10sIFs5LjQyNDQ2OSwgNTcuMTcyMDY2XSwgWzkuNzc1NTU5LCA1Ny40NDc5NDFdLCBbMTAuNTgwMDA2LCA1Ny43MzAwMTddLCBbMTAuNTQ2MTA2LCA1Ny4yMTU3MzNdLCBbMTAuMjUsIDU2Ljg5MDAxNl0sIFsxMC4zNjk5OTMsIDU2LjYwOTk4Ml0sIFsxMC45MTIxODIsIDU2LjQ1ODYyMV1dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiRE5LIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJEZW5tYXJrIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNzEuNzEyMzYxLCAxOS43MTQ0NTZdLCBbLTcxLjU4NzMwNCwgMTkuODg0OTExXSwgWy03MC44MDY3MDYsIDE5Ljg4MDI4Nl0sIFstNzAuMjE0MzY1LCAxOS42MjI4ODVdLCBbLTY5Ljk1MDgxNSwgMTkuNjQ4XSwgWy02OS43NjkyNSwgMTkuMjkzMjY3XSwgWy02OS4yMjIxMjYsIDE5LjMxMzIxNF0sIFstNjkuMjU0MzQ2LCAxOS4wMTUxOTZdLCBbLTY4LjgwOTQxMiwgMTguOTc5MDc0XSwgWy02OC4zMTc5NDMsIDE4LjYxMjE5OF0sIFstNjguNjg5MzE2LCAxOC4yMDUxNDJdLCBbLTY5LjE2NDk0NiwgMTguNDIyNjQ4XSwgWy02OS42MjM5ODgsIDE4LjM4MDcxM10sIFstNjkuOTUyOTM0LCAxOC40MjgzMDddLCBbLTcwLjEzMzIzMywgMTguMjQ1OTE1XSwgWy03MC41MTcxMzcsIDE4LjE4NDI5MV0sIFstNzAuNjY5Mjk4LCAxOC40MjY4ODZdLCBbLTcwLjk5OTk1LCAxOC4yODMzMjldLCBbLTcxLjQwMDIxLCAxNy41OTg1NjRdLCBbLTcxLjY1NzY2MiwgMTcuNzU3NTczXSwgWy03MS43MDgzMDUsIDE4LjA0NDk5N10sIFstNzEuNjg3NzM4LCAxOC4zMTY2Nl0sIFstNzEuOTQ1MTEyLCAxOC42MTY5XSwgWy03MS43MDEzMDMsIDE4Ljc4NTQxN10sIFstNzEuNjI0ODczLCAxOS4xNjk4MzhdLCBbLTcxLjcxMjM2MSwgMTkuNzE0NDU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJET00iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkRvbWluaWNhbiBSZXB1YmxpYyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTEuOTk5NTA2LCAyMy40NzE2NjhdLCBbOC41NzI4OTMsIDIxLjU2NTY2MV0sIFs1LjY3NzU2NiwgMTkuNjAxMjA3XSwgWzQuMjY3NDE5LCAxOS4xNTUyNjVdLCBbMy4xNTgxMzMsIDE5LjA1NzM2NF0sIFszLjE0NjY2MSwgMTkuNjkzNTc5XSwgWzIuNjgzNTg4LCAxOS44NTYyM10sIFsyLjA2MDk5MSwgMjAuMTQyMjMzXSwgWzEuODIzMjI4LCAyMC42MTA4MDldLCBbLTEuNTUwMDU1LCAyMi43OTI2NjZdLCBbLTQuOTIzMzM3LCAyNC45NzQ1NzRdLCBbLTguNjg0NCwgMjcuMzk1NzQ0XSwgWy04LjY2NTEyNCwgMjcuNTg5NDc5XSwgWy04LjY2NTU5LCAyNy42NTY0MjZdLCBbLTguNjc0MTE2LCAyOC44NDEyODldLCBbLTcuMDU5MjI4LCAyOS41NzkyMjhdLCBbLTYuMDYwNjMyLCAyOS43MzE3XSwgWy01LjI0MjEyOSwgMzAuMDAwNDQzXSwgWy00Ljg1OTY0NiwgMzAuNTAxMTg4XSwgWy0zLjY5MDQ0MSwgMzAuODk2OTUyXSwgWy0zLjY0NzQ5OCwgMzEuNjM3Mjk0XSwgWy0zLjA2ODk4LCAzMS43MjQ0OThdLCBbLTIuNjE2NjA1LCAzMi4wOTQzNDZdLCBbLTEuMzA3ODk5LCAzMi4yNjI4ODldLCBbLTEuMTI0NTUxLCAzMi42NTE1MjJdLCBbLTEuMzg4MDQ5LCAzMi44NjQwMTVdLCBbLTEuNzMzNDU1LCAzMy45MTk3MTNdLCBbLTEuNzkyOTg2LCAzNC41Mjc5MTldLCBbLTIuMTY5OTE0LCAzNS4xNjgzOTZdLCBbLTEuMjA4NjAzLCAzNS43MTQ4NDldLCBbLTAuMTI3NDU0LCAzNS44ODg2NjJdLCBbMC41MDM4NzcsIDM2LjMwMTI3M10sIFsxLjQ2NjkxOSwgMzYuNjA1NjQ3XSwgWzMuMTYxNjk5LCAzNi43ODM5MDVdLCBbNC44MTU3NTgsIDM2Ljg2NTAzN10sIFs1LjMyMDEyLCAzNi43MTY1MTldLCBbNi4yNjE4MiwgMzcuMTEwNjU1XSwgWzcuMzMwMzg1LCAzNy4xMTgzODFdLCBbNy43MzcwNzgsIDM2Ljg4NTcwOF0sIFs4LjQyMDk2NCwgMzYuOTQ2NDI3XSwgWzguMjE3ODI0LCAzNi40MzMxNzddLCBbOC4zNzYzNjgsIDM1LjQ3OTg3Nl0sIFs4LjE0MDk4MSwgMzQuNjU1MTQ2XSwgWzcuNTI0NDgyLCAzNC4wOTczNzZdLCBbNy42MTI2NDIsIDMzLjM0NDExNV0sIFs4LjQzMDQ3MywgMzIuNzQ4MzM3XSwgWzguNDM5MTAzLCAzMi41MDYyODVdLCBbOS4wNTU2MDMsIDMyLjEwMjY5Ml0sIFs5LjQ4MjE0LCAzMC4zMDc1NTZdLCBbOS44MDU2MzQsIDI5LjQyNDYzOF0sIFs5Ljg1OTk5OCwgMjguOTU5OTldLCBbOS42ODM4ODUsIDI4LjE0NDE3NF0sIFs5Ljc1NjEyOCwgMjcuNjg4MjU5XSwgWzkuNjI5MDU2LCAyNy4xNDA5NTNdLCBbOS43MTYyODYsIDI2LjUxMjIwNl0sIFs5LjMxOTQxMSwgMjYuMDk0MzI1XSwgWzkuOTEwNjkzLCAyNS4zNjU0NTVdLCBbOS45NDgyNjEsIDI0LjkzNjk1NF0sIFsxMC4zMDM4NDcsIDI0LjM3OTMxM10sIFsxMC43NzEzNjQsIDI0LjU2MjUzMl0sIFsxMS41NjA2NjksIDI0LjA5NzkwOV0sIFsxMS45OTk1MDYsIDIzLjQ3MTY2OF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRFpBIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJBbGdlcmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stODAuMzAyNTYxLCAtMy40MDQ4NTZdLCBbLTc5Ljc3MDI5MywgLTIuNjU3NTEyXSwgWy03OS45ODY1NTksIC0yLjIyMDc5NF0sIFstODAuMzY4Nzg0LCAtMi42ODUxNTldLCBbLTgwLjk2Nzc2NSwgLTIuMjQ2OTQzXSwgWy04MC43NjQ4MDYsIC0xLjk2NTA0OF0sIFstODAuOTMzNjU5LCAtMS4wNTc0NTVdLCBbLTgwLjU4MzM3LCAtMC45MDY2NjNdLCBbLTgwLjM5OTMyNSwgLTAuMjgzNzAzXSwgWy04MC4wMjA4OTgsIDAuMzYwMzRdLCBbLTgwLjA5MDYxLCAwLjc2ODQyOV0sIFstNzkuNTQyNzYyLCAwLjk4MjkzOF0sIFstNzguODU1MjU5LCAxLjM4MDkyNF0sIFstNzcuODU1MDYxLCAwLjgwOTkyNV0sIFstNzcuNjY4NjEzLCAwLjgyNTg5M10sIFstNzcuNDI0OTg0LCAwLjM5NTY4N10sIFstNzYuNTc2MzgsIDAuMjU2OTM2XSwgWy03Ni4yOTIzMTQsIDAuNDE2MDQ3XSwgWy03NS44MDE0NjYsIDAuMDg0ODAxXSwgWy03NS4zNzMyMjMsIC0wLjE1MjAzMl0sIFstNzUuMjMzNzIzLCAtMC45MTE0MTddLCBbLTc1LjU0NDk5NiwgLTEuNTYxNjFdLCBbLTc2LjYzNTM5NCwgLTIuNjA4Njc4XSwgWy03Ny44Mzc5MDUsIC0zLjAwMzAyMV0sIFstNzguNDUwNjg0LCAtMy44NzMwOTddLCBbLTc4LjYzOTg5NywgLTQuNTQ3Nzg0XSwgWy03OS4yMDUyODksIC00Ljk1OTEyOV0sIFstNzkuNjI0OTc5LCAtNC40NTQxOThdLCBbLTgwLjAyODkwOCwgLTQuMzQ2MDkxXSwgWy04MC40NDIyNDIsIC00LjQyNTcyNF0sIFstODAuNDY5Mjk1LCAtNC4wNTkyODddLCBbLTgwLjE4NDAxNSwgLTMuODIxMTYyXSwgWy04MC4zMDI1NjEsIC0zLjQwNDg1Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRUNVIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJFY3VhZG9yIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1szNC45MjI2LCAyOS41MDEzM10sIFszNC42NDE3NCwgMjkuMDk5NDJdLCBbMzQuNDI2NTUsIDI4LjM0Mzk5XSwgWzM0LjE1NDUxLCAyNy44MjMzXSwgWzMzLjkyMTM2LCAyNy42NDg3XSwgWzMzLjU4ODExLCAyNy45NzEzNl0sIFszMy4xMzY3NiwgMjguNDE3NjVdLCBbMzIuNDIzMjMsIDI5Ljg1MTA4XSwgWzMyLjMyMDQ2LCAyOS43NjA0M10sIFszMi43MzQ4MiwgMjguNzA1MjNdLCBbMzMuMzQ4NzYsIDI3LjY5OTg5XSwgWzM0LjEwNDU1LCAyNi4xNDIyN10sIFszNC40NzM4NywgMjUuNTk4NTZdLCBbMzQuNzk1MDcsIDI1LjAzMzc1XSwgWzM1LjY5MjQxLCAyMy45MjY3MV0sIFszNS40OTM3MiwgMjMuNzUyMzddLCBbMzUuNTI1OTgsIDIzLjEwMjQ0XSwgWzM2LjY5MDY5LCAyMi4yMDQ4NV0sIFszNi44NjYyMywgMjJdLCBbMzIuOSwgMjJdLCBbMjkuMDIsIDIyXSwgWzI1LCAyMl0sIFsyNSwgMjUuNjgyNV0sIFsyNSwgMjkuMjM4NjU1XSwgWzI0LjcwMDA3LCAzMC4wNDQxOV0sIFsyNC45NTc2MiwgMzAuNjYxNl0sIFsyNC44MDI4NywgMzEuMDg5MjldLCBbMjUuMTY0ODIsIDMxLjU2OTE1XSwgWzI2LjQ5NTMzLCAzMS41ODU2OF0sIFsyNy40NTc2MiwgMzEuMzIxMjZdLCBbMjguNDUwNDgsIDMxLjAyNTc3XSwgWzI4LjkxMzUzLCAzMC44NzAwNV0sIFsyOS42ODM0MiwgMzEuMTg2ODZdLCBbMzAuMDk1MDMsIDMxLjQ3MzRdLCBbMzAuOTc2OTMsIDMxLjU1NTg2XSwgWzMxLjY4Nzk2LCAzMS40Mjk2XSwgWzMxLjk2MDQxLCAzMC45MzM2XSwgWzMyLjE5MjQ3LCAzMS4yNjAzNF0sIFszMi45OTM5MiwgMzEuMDI0MDddLCBbMzMuNzczNCwgMzAuOTY3NDZdLCBbMzQuMjY1NDQsIDMxLjIxOTM2XSwgWzM0LjkyMjYsIDI5LjUwMTMzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJFR1kiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkVneXB0IiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s0Mi4zNTE1NiwgMTIuNTQyMjNdLCBbNDIuMDA5NzUsIDEyLjg2NTgyXSwgWzQxLjU5ODU2LCAxMy40NTIwOV0sIFs0MS4xNTUxOTQsIDEzLjc3MzMyXSwgWzQwLjg5NjYsIDE0LjExODY0XSwgWzQwLjAyNjIxOSwgMTQuNTE5NTc5XSwgWzM5LjM0MDYxLCAxNC41MzE1NV0sIFszOS4wOTk0LCAxNC43NDA2NF0sIFszOC41MTI5NSwgMTQuNTA1NDddLCBbMzcuOTA2MDcsIDE0Ljk1OTQzXSwgWzM3LjU5Mzc3LCAxNC4yMTMxXSwgWzM2LjQyOTUxLCAxNC40MjIxMV0sIFszNi4zMjMxODksIDE0LjgyMjQ4MV0sIFszNi43NTM4NiwgMTYuMjkxODc0XSwgWzM2Ljg1MjUzLCAxNi45NTY1NV0sIFszNy4xNjc0NywgMTcuMjYzMTRdLCBbMzcuOTA0LCAxNy40Mjc1NF0sIFszOC40MTAwOSwgMTcuOTk4MzA3XSwgWzM4Ljk5MDYyMywgMTYuODQwNjI2XSwgWzM5LjI2NjExLCAxNS45MjI3MjNdLCBbMzkuODE0Mjk0LCAxNS40MzU2NDddLCBbNDEuMTc5Mjc1LCAxNC40OTEwOF0sIFs0MS43MzQ5NTIsIDEzLjkyMTAzN10sIFs0Mi4yNzY4MzEsIDEzLjM0Mzk5Ml0sIFs0Mi41ODk1NzYsIDEzLjAwMDQyMV0sIFs0My4wODEyMjYsIDEyLjY5OTYzOV0sIFs0Mi43Nzk2NDIsIDEyLjQ1NTQxNl0sIFs0Mi4zNTE1NiwgMTIuNTQyMjNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkVSSSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRXJpdHJlYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTkuMDM0ODE4LCA0MS44ODA1NzFdLCBbLTguOTg0NDMzLCA0Mi41OTI3NzVdLCBbLTkuMzkyODg0LCA0My4wMjY2MjVdLCBbLTcuOTc4MTksIDQzLjc0ODMzOF0sIFstNi43NTQ0OTIsIDQzLjU2NzkwOV0sIFstNS40MTE4ODYsIDQzLjU3NDI0XSwgWy00LjM0Nzg0MywgNDMuNDAzNDQ5XSwgWy0zLjUxNzUzMiwgNDMuNDU1OTAxXSwgWy0xLjkwMTM1MSwgNDMuNDIyODAyXSwgWy0xLjUwMjc3MSwgNDMuMDM0MDE0XSwgWzAuMzM4MDQ3LCA0Mi41Nzk1NDZdLCBbMC43MDE1OTEsIDQyLjc5NTczNF0sIFsxLjgyNjc5MywgNDIuMzQzMzg1XSwgWzIuOTg1OTk5LCA0Mi40NzMwMTVdLCBbMy4wMzk0ODQsIDQxLjg5MjEyXSwgWzIuMDkxODQyLCA0MS4yMjYwODldLCBbMC44MTA1MjUsIDQxLjAxNDczMl0sIFswLjcyMTMzMSwgNDAuNjc4MzE4XSwgWzAuMTA2NjkyLCA0MC4xMjM5MzRdLCBbLTAuMjc4NzExLCAzOS4zMDk5NzhdLCBbMC4xMTEyOTEsIDM4LjczODUxNF0sIFstMC40NjcxMjQsIDM4LjI5MjM2Nl0sIFstMC42ODMzODksIDM3LjY0MjM1NF0sIFstMS40MzgzODIsIDM3LjQ0MzA2NF0sIFstMi4xNDY0NTMsIDM2LjY3NDE0NF0sIFstMy40MTU3ODEsIDM2LjY1ODldLCBbLTQuMzY4OTAxLCAzNi42Nzc4MzldLCBbLTQuOTk1MjE5LCAzNi4zMjQ3MDhdLCBbLTUuMzc3MTYsIDM1Ljk0Njg1XSwgWy01Ljg2NjQzMiwgMzYuMDI5ODE3XSwgWy02LjIzNjY5NCwgMzYuMzY3Njc3XSwgWy02LjUyMDE5MSwgMzYuOTQyOTEzXSwgWy03LjQ1MzcyNiwgMzcuMDk3Nzg4XSwgWy03LjUzNzEwNSwgMzcuNDI4OTA0XSwgWy03LjE2NjUwOCwgMzcuODAzODk0XSwgWy03LjAyOTI4MSwgMzguMDc1NzY0XSwgWy03LjM3NDA5MiwgMzguMzczMDU5XSwgWy03LjA5ODAzNywgMzkuMDMwMDczXSwgWy03LjQ5ODYzMiwgMzkuNjI5NTcxXSwgWy03LjA2NjU5MiwgMzkuNzExODkyXSwgWy03LjAyNjQxMywgNDAuMTg0NTI0XSwgWy02Ljg2NDAyLCA0MC4zMzA4NzJdLCBbLTYuODUxMTI3LCA0MS4xMTEwODNdLCBbLTYuMzg5MDg4LCA0MS4zODE4MTVdLCBbLTYuNjY4NjA2LCA0MS44ODMzODddLCBbLTcuMjUxMzA5LCA0MS45MTgzNDZdLCBbLTcuNDIyNTEzLCA0MS43OTIwNzVdLCBbLTguMDEzMTc1LCA0MS43OTA4ODZdLCBbLTguMjYzODU3LCA0Mi4yODA0NjldLCBbLTguNjcxOTQ2LCA0Mi4xMzQ2ODldLCBbLTkuMDM0ODE4LCA0MS44ODA1NzFdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkVTUCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiU3BhaW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzI0LjMxMjg2MywgNTcuNzkzNDI0XSwgWzI0LjQyODkyOCwgNTguMzgzNDEzXSwgWzI0LjA2MTE5OCwgNTguMjU3Mzc1XSwgWzIzLjQyNjU2LCA1OC42MTI3NTNdLCBbMjMuMzM5Nzk1LCA1OS4xODcyNF0sIFsyNC42MDQyMTQsIDU5LjQ2NTg1NF0sIFsyNS44NjQxODksIDU5LjYxMTA5XSwgWzI2Ljk0OTEzNiwgNTkuNDQ1ODAzXSwgWzI3Ljk4MTExNCwgNTkuNDc1Mzg4XSwgWzI4LjEzMTY5OSwgNTkuMzAwODI1XSwgWzI3LjQyMDE2NiwgNTguNzI0NTgxXSwgWzI3LjcxNjY4NiwgNTcuNzkxODk5XSwgWzI3LjI4ODE4NSwgNTcuNDc0NTI4XSwgWzI2LjQ2MzUzMiwgNTcuNDc2Mzg5XSwgWzI1LjYwMjgxLCA1Ny44NDc1MjldLCBbMjUuMTY0NTk0LCA1Ny45NzAxNTddLCBbMjQuMzEyODYzLCA1Ny43OTM0MjRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkVTVCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRXN0b25pYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMzcuOTA2MDcsIDE0Ljk1OTQzXSwgWzM4LjUxMjk1LCAxNC41MDU0N10sIFszOS4wOTk0LCAxNC43NDA2NF0sIFszOS4zNDA2MSwgMTQuNTMxNTVdLCBbNDAuMDI2MjUsIDE0LjUxOTU5XSwgWzQwLjg5NjYsIDE0LjExODY0XSwgWzQxLjE1NTIsIDEzLjc3MzMzXSwgWzQxLjU5ODU2LCAxMy40NTIwOV0sIFs0Mi4wMDk3NSwgMTIuODY1ODJdLCBbNDIuMzUxNTYsIDEyLjU0MjIzXSwgWzQyLCAxMi4xXSwgWzQxLjY2MTc2LCAxMS42MzEyXSwgWzQxLjczOTU5LCAxMS4zNTUxMV0sIFs0MS43NTU1NywgMTEuMDUwOTFdLCBbNDIuMzE0MTQsIDExLjAzNDJdLCBbNDIuNTU0OTMsIDExLjEwNTExXSwgWzQyLjc3Njg1MiwgMTAuOTI2ODc5XSwgWzQyLjU1ODc2LCAxMC41NzI1OF0sIFs0Mi45MjgxMiwgMTAuMDIxOTRdLCBbNDMuMjk2OTksIDkuNTQwNDhdLCBbNDMuNjc4NzUsIDkuMTgzNThdLCBbNDYuOTQ4MzQsIDcuOTk2ODhdLCBbNDcuNzg5NDIsIDguMDAzXSwgWzQ0Ljk2MzYsIDUuMDAxNjJdLCBbNDMuNjYwODcsIDQuOTU3NTVdLCBbNDIuNzY5NjcsIDQuMjUyNTldLCBbNDIuMTI4NjEsIDQuMjM0MTNdLCBbNDEuODU1MDgzLCAzLjkxODkxMl0sIFs0MS4xNzE4LCAzLjkxOTA5XSwgWzQwLjc2ODQ4LCA0LjI1NzAyXSwgWzM5Ljg1NDk0LCAzLjgzODc5XSwgWzM5LjU1OTM4NCwgMy40MjIwNl0sIFszOC44OTI1MSwgMy41MDA3NF0sIFszOC42NzExNCwgMy42MTYwN10sIFszOC40MzY5NywgMy41ODg1MV0sIFszOC4xMjA5MTUsIDMuNTk4NjA1XSwgWzM2Ljg1NTA5MywgNC40NDc4NjRdLCBbMzYuMTU5MDc5LCA0LjQ0Nzg2NF0sIFszNS44MTc0NDgsIDQuNzc2OTY2XSwgWzM1LjgxNzQ0OCwgNS4zMzgyMzJdLCBbMzUuMjk4MDA3LCA1LjUwNl0sIFszNC43MDcwMiwgNi41OTQyMl0sIFszNC4yNTAzMiwgNi44MjYwN10sIFszNC4wNzUxLCA3LjIyNTk1XSwgWzMzLjU2ODI5LCA3LjcxMzM0XSwgWzMyLjk1NDE4LCA3Ljc4NDk3XSwgWzMzLjI5NDgsIDguMzU0NThdLCBbMzMuODI1NSwgOC4zNzkxNl0sIFszMy45NzQ5OCwgOC42ODQ1Nl0sIFszMy45NjE2MiwgOS41ODM1OF0sIFszNC4yNTc0NSwgMTAuNjMwMDldLCBbMzQuNzMxMTUsIDEwLjkxMDE3XSwgWzM0LjgzMTYzLCAxMS4zMTg5Nl0sIFszNS4yNjA0OSwgMTIuMDgyODZdLCBbMzUuODYzNjMsIDEyLjU3ODI4XSwgWzM2LjI3MDIyLCAxMy41NjMzM10sIFszNi40Mjk1MSwgMTQuNDIyMTFdLCBbMzcuNTkzNzcsIDE0LjIxMzFdLCBbMzcuOTA2MDcsIDE0Ljk1OTQzXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJFVEgiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkV0aGlvcGlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1syOC41OTE5MywgNjkuMDY0Nzc3XSwgWzI4LjQ0NTk0NCwgNjguMzY0NjEzXSwgWzI5Ljk3NzQyNiwgNjcuNjk4Mjk3XSwgWzI5LjA1NDU4OSwgNjYuOTQ0Mjg2XSwgWzMwLjIxNzY1LCA2NS44MDU5OF0sIFsyOS41NDQ0MywgNjQuOTQ4NjcyXSwgWzMwLjQ0NDY4NSwgNjQuMjA0NDUzXSwgWzMwLjAzNTg3MiwgNjMuNTUyODE0XSwgWzMxLjUxNjA5MiwgNjIuODY3Njg3XSwgWzMxLjEzOTk5MSwgNjIuMzU3NjkzXSwgWzMwLjIxMTEwNywgNjEuNzgwMDI4XSwgWzI4LjA2OTk5OCwgNjAuNTAzNTE3XSwgWzI2LjI1NTE3MywgNjAuNDIzOTYxXSwgWzI0LjQ5NjYyNCwgNjAuMDU3MzE2XSwgWzIyLjg2OTY5NSwgNTkuODQ2MzczXSwgWzIyLjI5MDc2NCwgNjAuMzkxOTIxXSwgWzIxLjMyMjI0NCwgNjAuNzIwMTddLCBbMjEuNTQ0ODY2LCA2MS43MDUzMjldLCBbMjEuMDU5MjExLCA2Mi42MDczOTNdLCBbMjEuNTM2MDI5LCA2My4xODk3MzVdLCBbMjIuNDQyNzQ0LCA2My44MTc4MV0sIFsyNC43MzA1MTIsIDY0LjkwMjM0NF0sIFsyNS4zOTgwNjgsIDY1LjExMTQyN10sIFsyNS4yOTQwNDMsIDY1LjUzNDM0Nl0sIFsyMy45MDMzNzksIDY2LjAwNjkyN10sIFsyMy41NjU4OCwgNjYuMzk2MDUxXSwgWzIzLjUzOTQ3MywgNjcuOTM2MDA5XSwgWzIxLjk3ODUzNSwgNjguNjE2ODQ2XSwgWzIwLjY0NTU5MywgNjkuMTA2MjQ3XSwgWzIxLjI0NDkzNiwgNjkuMzcwNDQzXSwgWzIyLjM1NjIzOCwgNjguODQxNzQxXSwgWzIzLjY2MjA1LCA2OC44OTEyNDddLCBbMjQuNzM1Njc5LCA2OC42NDk1NTddLCBbMjUuNjg5MjEzLCA2OS4wOTIxMTRdLCBbMjYuMTc5NjIyLCA2OS44MjUyOTldLCBbMjcuNzMyMjkyLCA3MC4xNjQxOTNdLCBbMjkuMDE1NTczLCA2OS43NjY0OTFdLCBbMjguNTkxOTMsIDY5LjA2NDc3N11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiRklOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJGaW5sYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTc4LjM3MzYsIC0xNy4zMzk5Ml0sIFsxNzguNzE4MDYsIC0xNy42Mjg0Nl0sIFsxNzguNTUyNzEsIC0xOC4xNTA1OV0sIFsxNzcuOTMyNjYsIC0xOC4yODc5OV0sIFsxNzcuMzgxNDYsIC0xOC4xNjQzMl0sIFsxNzcuMjg1MDQsIC0xNy43MjQ2NV0sIFsxNzcuNjcwODcsIC0xNy4zODExNF0sIFsxNzguMTI1NTcsIC0xNy41MDQ4MV0sIFsxNzguMzczNiwgLTE3LjMzOTkyXV1dLCBbW1sxNzkuMzY0MTQzLCAtMTYuODAxMzU0XSwgWzE3OC43MjUwNTksIC0xNy4wMTIwNDJdLCBbMTc4LjU5NjgzOSwgLTE2LjYzOTE1XSwgWzE3OS4wOTY2MDksIC0xNi40MzM5ODRdLCBbMTc5LjQxMzUwOSwgLTE2LjM3OTA1NF0sIFsxODAsIC0xNi4wNjcxMzNdLCBbMTgwLCAtMTYuNTU1MjE3XSwgWzE3OS4zNjQxNDMsIC0xNi44MDEzNTRdXV0sIFtbWy0xNzkuOTE3MzY5LCAtMTYuNTAxNzgzXSwgWy0xODAsIC0xNi41NTUyMTddLCBbLTE4MCwgLTE2LjA2NzEzM10sIFstMTc5Ljc5MzMyLCAtMTYuMDIwODgyXSwgWy0xNzkuOTE3MzY5LCAtMTYuNTAxNzgzXV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJGSkkiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkZpamkiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy02MS4yLCAtNTEuODVdLCBbLTYwLCAtNTEuMjVdLCBbLTU5LjE1LCAtNTEuNV0sIFstNTguNTUsIC01MS4xXSwgWy01Ny43NSwgLTUxLjU1XSwgWy01OC4wNSwgLTUxLjldLCBbLTU5LjQsIC01Mi4yXSwgWy01OS44NSwgLTUxLjg1XSwgWy02MC43LCAtNTIuM10sIFstNjEuMiwgLTUxLjg1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJGTEsiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkZhbGtsYW5kIElzbGFuZHMiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmZmZmIyIiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1stNTIuNTU2NDI1LCAyLjUwNDcwNV0sIFstNTIuOTM5NjU3LCAyLjEyNDg1OF0sIFstNTMuNDE4NDY1LCAyLjA1MzM4OV0sIFstNTMuNTU0ODM5LCAyLjMzNDg5N10sIFstNTMuNzc4NTIxLCAyLjM3NjcwM10sIFstNTQuMDg4MDYzLCAyLjEwNTU1N10sIFstNTQuNTI0NzU0LCAyLjMxMTg0OV0sIFstNTQuMjcxMjMsIDIuNzM4NzQ4XSwgWy01NC4xODQyODQsIDMuMTk0MTcyXSwgWy01NC4wMTE1MDQsIDMuNjIyNTddLCBbLTU0LjM5OTU0MiwgNC4yMTI2MTFdLCBbLTU0LjQ3ODYzMywgNC44OTY3NTZdLCBbLTUzLjk1ODA0NSwgNS43NTY1NDhdLCBbLTUzLjYxODQ1MywgNS42NDY1MjldLCBbLTUyLjg4MjE0MSwgNS40MDk4NTFdLCBbLTUxLjgyMzM0MywgNC41NjU3NjhdLCBbLTUxLjY1Nzc5NywgNC4xNTYyMzJdLCBbLTUyLjI0OTMzOCwgMy4yNDEwOTRdLCBbLTUyLjU1NjQyNSwgMi41MDQ3MDVdXV0sIFtbWzkuNTYwMDE2LCA0Mi4xNTI0OTJdLCBbOS4yMjk3NTIsIDQxLjM4MDAwN10sIFs4Ljc3NTcyMywgNDEuNTgzNjEyXSwgWzguNTQ0MjEzLCA0Mi4yNTY1MTddLCBbOC43NDYwMDksIDQyLjYyODEyMl0sIFs5LjM5MDAwMSwgNDMuMDA5OTg1XSwgWzkuNTYwMDE2LCA0Mi4xNTI0OTJdXV0sIFtbWzMuNTg4MTg0LCA1MC4zNzg5OTJdLCBbNC4yODYwMjMsIDQ5LjkwNzQ5N10sIFs0Ljc5OTIyMiwgNDkuOTg1MzczXSwgWzUuNjc0MDUyLCA0OS41Mjk0ODRdLCBbNS44OTc3NTksIDQ5LjQ0MjY2N10sIFs2LjE4NjMyLCA0OS40NjM4MDNdLCBbNi42NTgyMywgNDkuMjAxOTU4XSwgWzguMDk5Mjc5LCA0OS4wMTc3ODRdLCBbNy41OTM2NzYsIDQ4LjMzMzAxOV0sIFs3LjQ2Njc1OSwgNDcuNjIwNTgyXSwgWzcuMTkyMjAyLCA0Ny40NDk3NjZdLCBbNi43MzY1NzEsIDQ3LjU0MTgwMV0sIFs2Ljc2ODcxNCwgNDcuMjg3NzA4XSwgWzYuMDM3Mzg5LCA0Ni43MjU3NzldLCBbNi4wMjI2MDksIDQ2LjI3Mjk5XSwgWzYuNTAwMSwgNDYuNDI5NjczXSwgWzYuODQzNTkzLCA0NS45OTExNDddLCBbNi44MDIzNTUsIDQ1LjcwODU4XSwgWzcuMDk2NjUyLCA0NS4zMzMwOTldLCBbNi43NDk5NTUsIDQ1LjAyODUxOF0sIFs3LjAwNzU2MiwgNDQuMjU0NzY3XSwgWzcuNTQ5NTk2LCA0NC4xMjc5MDFdLCBbNy40MzUxODUsIDQzLjY5Mzg0NV0sIFs2LjUyOTI0NSwgNDMuMTI4ODkyXSwgWzQuNTU2OTYzLCA0My4zOTk2NTFdLCBbMy4xMDA0MTEsIDQzLjA3NTIwMV0sIFsyLjk4NTk5OSwgNDIuNDczMDE1XSwgWzEuODI2NzkzLCA0Mi4zNDMzODVdLCBbMC43MDE1OTEsIDQyLjc5NTczNF0sIFswLjMzODA0NywgNDIuNTc5NTQ2XSwgWy0xLjUwMjc3MSwgNDMuMDM0MDE0XSwgWy0xLjkwMTM1MSwgNDMuNDIyODAyXSwgWy0xLjM4NDIyNSwgNDQuMDIyNjFdLCBbLTEuMTkzNzk4LCA0Ni4wMTQ5MThdLCBbLTIuMjI1NzI0LCA0Ny4wNjQzNjNdLCBbLTIuOTYzMjc2LCA0Ny41NzAzMjddLCBbLTQuNDkxNTU1LCA0Ny45NTQ5NTRdLCBbLTQuNTkyMzUsIDQ4LjY4NDE2XSwgWy0zLjI5NTgxNCwgNDguOTAxNjkyXSwgWy0xLjYxNjUxMSwgNDguNjQ0NDIxXSwgWy0xLjkzMzQ5NCwgNDkuNzc2MzQyXSwgWy0wLjk4OTQ2OSwgNDkuMzQ3Mzc2XSwgWzEuMzM4NzYxLCA1MC4xMjcxNzNdLCBbMS42MzkwMDEsIDUwLjk0NjYwNl0sIFsyLjUxMzU3MywgNTEuMTQ4NTA2XSwgWzIuNjU4NDIyLCA1MC43OTY4NDhdLCBbMy4xMjMyNTIsIDUwLjc4MDM2M10sIFszLjU4ODE4NCwgNTAuMzc4OTkyXV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJGUkEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkZyYW5jZSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTEuMDkzNzczLCAtMy45Nzg4MjddLCBbMTAuMDY2MTM1LCAtMi45Njk0ODNdLCBbOS40MDUyNDUsIC0yLjE0NDMxM10sIFs4Ljc5Nzk5NiwgLTEuMTExMzAxXSwgWzguODMwMDg3LCAtMC43NzkwNzRdLCBbOS4wNDg0MiwgLTAuNDU5MzUxXSwgWzkuMjkxMzUxLCAwLjI2ODY2Nl0sIFs5LjQ5Mjg4OSwgMS4wMTAxMl0sIFs5LjgzMDI4NCwgMS4wNjc4OTRdLCBbMTEuMjg1MDc5LCAxLjA1NzY2Ml0sIFsxMS4yNzY0NDksIDIuMjYxMDUxXSwgWzExLjc1MTY2NSwgMi4zMjY3NThdLCBbMTIuMzU5MzgsIDIuMTkyODEyXSwgWzEyLjk1MTMzNCwgMi4zMjE2MTZdLCBbMTMuMDc1ODIyLCAyLjI2NzA5N10sIFsxMy4wMDMxMTQsIDEuODMwODk2XSwgWzEzLjI4MjYzMSwgMS4zMTQxODRdLCBbMTQuMDI2NjY5LCAxLjM5NTY3N10sIFsxNC4yNzYyNjYsIDEuMTk2OTNdLCBbMTMuODQzMzIxLCAwLjAzODc1OF0sIFsxNC4zMTY0MTgsIC0wLjU1MjYyN10sIFsxNC40MjU0NTYsIC0xLjMzMzQwN10sIFsxNC4yOTkyMSwgLTEuOTk4Mjc2XSwgWzEzLjk5MjQwNywgLTIuNDcwODA1XSwgWzEzLjEwOTYxOSwgLTIuNDI4NzRdLCBbMTIuNTc1Mjg0LCAtMS45NDg1MTFdLCBbMTIuNDk1NzAzLCAtMi4zOTE2ODhdLCBbMTEuODIwOTY0LCAtMi41MTQxNjFdLCBbMTEuNDc4MDM5LCAtMi43NjU2MTldLCBbMTEuODU1MTIyLCAtMy40MjY4NzFdLCBbMTEuMDkzNzczLCAtMy45Nzg4MjddXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkdBQiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR2Fib24iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1stNS42NjE5NDksIDU0LjU1NDYwM10sIFstNi4xOTc4ODUsIDUzLjg2NzU2NV0sIFstNi45NTM3MywgNTQuMDczNzAyXSwgWy03LjU3MjE2OCwgNTQuMDU5OTU2XSwgWy03LjM2NjAzMSwgNTQuNTk1ODQxXSwgWy03LjU3MjE2OCwgNTUuMTMxNjIyXSwgWy02LjczMzg0NywgNTUuMTcyODZdLCBbLTUuNjYxOTQ5LCA1NC41NTQ2MDNdXV0sIFtbWy0zLjAwNTAwNSwgNTguNjM1XSwgWy00LjA3MzgyOCwgNTcuNTUzMDI1XSwgWy0zLjA1NTAwMiwgNTcuNjkwMDE5XSwgWy0xLjk1OTI4MSwgNTcuNjg0OF0sIFstMi4yMTk5ODgsIDU2Ljg3MDAxN10sIFstMy4xMTkwMDMsIDU1Ljk3Mzc5M10sIFstMi4wODUwMDksIDU1LjkwOTk5OF0sIFstMi4wMDU2NzYsIDU1LjgwNDkwM10sIFstMS4xMTQ5OTEsIDU0LjYyNDk4Nl0sIFstMC40MzA0ODUsIDU0LjQ2NDM3Nl0sIFswLjE4NDk4MSwgNTMuMzI1MDE0XSwgWzAuNDY5OTc3LCA1Mi45Mjk5OTldLCBbMS42ODE1MzEsIDUyLjczOTUyXSwgWzEuNTU5OTg4LCA1Mi4wOTk5OThdLCBbMS4wNTA1NjIsIDUxLjgwNjc2MV0sIFsxLjQ0OTg2NSwgNTEuMjg5NDI4XSwgWzAuNTUwMzM0LCA1MC43NjU3MzldLCBbLTAuNzg3NTE3LCA1MC43NzQ5ODldLCBbLTIuNDg5OTk4LCA1MC41MDAwMTldLCBbLTIuOTU2Mjc0LCA1MC42OTY4OF0sIFstMy42MTc0NDgsIDUwLjIyODM1Nl0sIFstNC41NDI1MDgsIDUwLjM0MTgzN10sIFstNS4yNDUwMjMsIDQ5Ljk2XSwgWy01Ljc3NjU2NywgNTAuMTU5Njc4XSwgWy00LjMwOTk5LCA1MS4yMTAwMDFdLCBbLTMuNDE0ODUxLCA1MS40MjYwMDldLCBbLTMuNDIyNzE5LCA1MS40MjY4NDhdLCBbLTQuOTg0MzY3LCA1MS41OTM0NjZdLCBbLTUuMjY3Mjk2LCA1MS45OTE0XSwgWy00LjIyMjM0NywgNTIuMzAxMzU2XSwgWy00Ljc3MDAxMywgNTIuODQwMDA1XSwgWy00LjU3OTk5OSwgNTMuNDk1MDA0XSwgWy0zLjA5MzgzMSwgNTMuNDA0NTQ3XSwgWy0zLjA5MjA4LCA1My40MDQ0NDFdLCBbLTIuOTQ1MDA5LCA1My45ODVdLCBbLTMuNjE0NzAxLCA1NC42MDA5MzddLCBbLTMuNjMwMDA1LCA1NC42MTUwMTNdLCBbLTQuODQ0MTY5LCA1NC43OTA5NzFdLCBbLTUuMDgyNTI3LCA1NS4wNjE2MDFdLCBbLTQuNzE5MTEyLCA1NS41MDg0NzNdLCBbLTUuMDQ3OTgxLCA1NS43ODM5ODZdLCBbLTUuNTg2Mzk4LCA1NS4zMTExNDZdLCBbLTUuNjQ0OTk5LCA1Ni4yNzUwMTVdLCBbLTYuMTQ5OTgxLCA1Ni43ODUwMV0sIFstNS43ODY4MjUsIDU3LjgxODg0OF0sIFstNS4wMDk5OTksIDU4LjYzMDAxM10sIFstNC4yMTE0OTUsIDU4LjU1MDg0NV0sIFstMy4wMDUwMDUsIDU4LjYzNV1dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiR0JSIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJVbml0ZWQgS2luZ2RvbSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbNDEuNTU0MDg0LCA0MS41MzU2NTZdLCBbNDEuNzAzMTcxLCA0MS45NjI5NDNdLCBbNDEuNDUzNDcsIDQyLjY0NTEyM10sIFs0MC44NzU0NjksIDQzLjAxMzYyOF0sIFs0MC4zMjEzOTQsIDQzLjEyODYzNF0sIFszOS45NTUwMDksIDQzLjQzNDk5OF0sIFs0MC4wNzY5NjUsIDQzLjU1MzEwNF0sIFs0MC45MjIxODUsIDQzLjM4MjE1OV0sIFs0Mi4zOTQzOTUsIDQzLjIyMDMwOF0sIFs0My43NTYwMTcsIDQyLjc0MDgyOF0sIFs0My45MzEyLCA0Mi41NTQ5NzRdLCBbNDQuNTM3NjIzLCA0Mi43MTE5OTNdLCBbNDUuNDcwMjc5LCA0Mi41MDI3ODFdLCBbNDUuNzc2NDEsIDQyLjA5MjQ0NF0sIFs0Ni40MDQ5NTEsIDQxLjg2MDY3NV0sIFs0Ni4xNDU0MzIsIDQxLjcyMjgwMl0sIFs0Ni42Mzc5MDgsIDQxLjE4MTY3M10sIFs0Ni41MDE2MzcsIDQxLjA2NDQ0NV0sIFs0NS45NjI2MDEsIDQxLjEyMzg3M10sIFs0NS4yMTc0MjYsIDQxLjQxMTQ1Ml0sIFs0NC45NzI0OCwgNDEuMjQ4MTI5XSwgWzQzLjU4Mjc0NiwgNDEuMDkyMTQzXSwgWzQyLjYxOTU0OSwgNDEuNTgzMTczXSwgWzQxLjU1NDA4NCwgNDEuNTM1NjU2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHRU8iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkdlb3JnaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzEuMDYwMTIyLCA1LjkyODgzN10sIFstMC41MDc2MzgsIDUuMzQzNDczXSwgWy0xLjA2MzYyNSwgNS4wMDA1NDhdLCBbLTEuOTY0NzA3LCA0LjcxMDQ2Ml0sIFstMi44NTYxMjUsIDQuOTk0NDc2XSwgWy0yLjgxMDcwMSwgNS4zODkwNTFdLCBbLTMuMjQ0MzcsIDYuMjUwNDcyXSwgWy0yLjk4MzU4NSwgNy4zNzk3MDVdLCBbLTIuNTYyMTksIDguMjE5NjI4XSwgWy0yLjgyNzQ5NiwgOS42NDI0NjFdLCBbLTIuOTYzODk2LCAxMC4zOTUzMzVdLCBbLTIuOTQwNDA5LCAxMC45NjI2OV0sIFstMS4yMDMzNTgsIDExLjAwOTgxOV0sIFstMC43NjE1NzYsIDEwLjkzNjkzXSwgWy0wLjQzODcwMiwgMTEuMDk4MzQxXSwgWzAuMDIzODAzLCAxMS4wMTg2ODJdLCBbLTAuMDQ5Nzg1LCAxMC43MDY5MThdLCBbMC4zNjc1OCwgMTAuMTkxMjEzXSwgWzAuMzY1OTAxLCA5LjQ2NTAwNF0sIFswLjQ2MTE5MiwgOC42NzcyMjNdLCBbMC43MTIwMjksIDguMzEyNDY1XSwgWzAuNDkwOTU3LCA3LjQxMTc0NF0sIFswLjU3MDM4NCwgNi45MTQzNTldLCBbMC44MzY5MzEsIDYuMjc5OTc5XSwgWzEuMDYwMTIyLCA1LjkyODgzN11dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR0hBIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHaGFuYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTguNDM5Mjk4LCA3LjY4NjA0M10sIFstOC43MjIxMjQsIDcuNzExNjc0XSwgWy04LjkyNjA2NSwgNy4zMDkwMzddLCBbLTkuMjA4Nzg2LCA3LjMxMzkyMV0sIFstOS40MDMzNDgsIDcuNTI2OTA1XSwgWy05LjMzNzI4LCA3LjkyODUzNF0sIFstOS43NTUzNDIsIDguNTQxMDU1XSwgWy0xMC4wMTY1NjcsIDguNDI4NTA0XSwgWy0xMC4yMzAwOTQsIDguNDA2MjA2XSwgWy0xMC41MDU0NzcsIDguMzQ4ODk2XSwgWy0xMC40OTQzMTUsIDguNzE1NTQxXSwgWy0xMC42NTQ3NywgOC45NzcxNzhdLCBbLTEwLjYyMjM5NSwgOS4yNjc5MV0sIFstMTAuODM5MTUyLCA5LjY4ODI0Nl0sIFstMTEuMTE3NDgxLCAxMC4wNDU4NzNdLCBbLTExLjkxNzI3NywgMTAuMDQ2OTg0XSwgWy0xMi4xNTAzMzgsIDkuODU4NTcyXSwgWy0xMi40MjU5MjksIDkuODM1ODM0XSwgWy0xMi41OTY3MTksIDkuNjIwMTg4XSwgWy0xMi43MTE5NTgsIDkuMzQyNzEyXSwgWy0xMy4yNDY1NSwgOC45MDMwNDldLCBbLTEzLjY4NTE1NCwgOS40OTQ3NDRdLCBbLTE0LjA3NDA0NSwgOS44ODYxNjddLCBbLTE0LjMzMDA3NiwgMTAuMDE1NzJdLCBbLTE0LjU3OTY5OSwgMTAuMjE0NDY3XSwgWy0xNC42OTMyMzIsIDEwLjY1NjMwMV0sIFstMTQuODM5NTU0LCAxMC44NzY1NzJdLCBbLTE1LjEzMDMxMSwgMTEuMDQwNDEyXSwgWy0xNC42ODU2ODcsIDExLjUyNzgyNF0sIFstMTQuMzgyMTkyLCAxMS41MDkyNzJdLCBbLTE0LjEyMTQwNiwgMTEuNjc3MTE3XSwgWy0xMy45MDA4LCAxMS42Nzg3MTldLCBbLTEzLjc0MzE2MSwgMTEuODExMjY5XSwgWy0xMy44MjgyNzIsIDEyLjE0MjY0NF0sIFstMTMuNzE4NzQ0LCAxMi4yNDcxODZdLCBbLTEzLjcwMDQ3NiwgMTIuNTg2MTgzXSwgWy0xMy4yMTc4MTgsIDEyLjU3NTg3NF0sIFstMTIuNDk5MDUxLCAxMi4zMzIwOV0sIFstMTIuMjc4NTk5LCAxMi4zNTQ0NF0sIFstMTIuMjAzNTY1LCAxMi40NjU2NDhdLCBbLTExLjY1ODMwMSwgMTIuMzg2NTgzXSwgWy0xMS41MTM5NDMsIDEyLjQ0Mjk4OF0sIFstMTEuNDU2MTY5LCAxMi4wNzY4MzRdLCBbLTExLjI5NzU3NCwgMTIuMDc3OTcxXSwgWy0xMS4wMzY1NTYsIDEyLjIxMTI0NV0sIFstMTAuODcwODMsIDEyLjE3Nzg4N10sIFstMTAuNTkzMjI0LCAxMS45MjM5NzVdLCBbLTEwLjE2NTIxNCwgMTEuODQ0MDg0XSwgWy05Ljg5MDk5MywgMTIuMDYwNDc5XSwgWy05LjU2NzkxMiwgMTIuMTk0MjQzXSwgWy05LjMyNzYxNiwgMTIuMzM0Mjg2XSwgWy05LjEyNzQ3NCwgMTIuMzA4MDZdLCBbLTguOTA1MjY1LCAxMi4wODgzNThdLCBbLTguNzg2MDk5LCAxMS44MTI1NjFdLCBbLTguMzc2MzA1LCAxMS4zOTM2NDZdLCBbLTguNTgxMzA1LCAxMS4xMzYyNDZdLCBbLTguNjIwMzIxLCAxMC44MTA4OTFdLCBbLTguNDA3MzExLCAxMC45MDkyNTddLCBbLTguMjgyMzU3LCAxMC43OTI1OTddLCBbLTguMzM1Mzc3LCAxMC40OTQ4MTJdLCBbLTguMDI5OTQ0LCAxMC4yMDY1MzVdLCBbLTguMjI5MzM3LCAxMC4xMjkwMl0sIFstOC4zMDk2MTYsIDkuNzg5NTMyXSwgWy04LjA3OTExNCwgOS4zNzYyMjRdLCBbLTcuODMyMSwgOC41NzU3MDRdLCBbLTguMjAzNDk5LCA4LjQ1NTQ1M10sIFstOC4yOTkwNDksIDguMzE2NDQ0XSwgWy04LjIyMTc5MiwgOC4xMjMzMjldLCBbLTguMjgwNzAzLCA3LjY4NzE4XSwgWy04LjQzOTI5OCwgNy42ODYwNDNdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkdJTiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR3VpbmVhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMTYuODQxNTI1LCAxMy4xNTEzOTRdLCBbLTE2LjcxMzcyOSwgMTMuNTk0OTU5XSwgWy0xNS42MjQ1OTYsIDEzLjYyMzU4N10sIFstMTUuMzk4NzcsIDEzLjg2MDM2OV0sIFstMTUuMDgxNzM1LCAxMy44NzY0OTJdLCBbLTE0LjY4NzAzMSwgMTMuNjMwMzU3XSwgWy0xNC4zNzY3MTQsIDEzLjYyNTY4XSwgWy0xNC4wNDY5OTIsIDEzLjc5NDA2OF0sIFstMTMuODQ0OTYzLCAxMy41MDUwNDJdLCBbLTE0LjI3NzcwMiwgMTMuMjgwNTg1XSwgWy0xNC43MTIxOTcsIDEzLjI5ODIwN10sIFstMTUuMTQxMTYzLCAxMy41MDk1MTJdLCBbLTE1LjUxMTgxMywgMTMuMjc4NTddLCBbLTE1LjY5MTAwMSwgMTMuMjcwMzUzXSwgWy0xNS45MzEyOTYsIDEzLjEzMDI4NF0sIFstMTYuODQxNTI1LCAxMy4xNTEzOTRdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkdNQiIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiR2FtYmlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMTUuMTMwMzExLCAxMS4wNDA0MTJdLCBbLTE1LjY2NDE4LCAxMS40NTg0NzRdLCBbLTE2LjA4NTIxNCwgMTEuNTI0NTk0XSwgWy0xNi4zMTQ3ODcsIDExLjgwNjUxNV0sIFstMTYuMzA4OTQ3LCAxMS45NTg3MDJdLCBbLTE2LjYxMzgzOCwgMTIuMTcwOTExXSwgWy0xNi42Nzc0NTIsIDEyLjM4NDg1Ml0sIFstMTYuMTQ3NzE3LCAxMi41NDc3NjJdLCBbLTE1LjgxNjU3NCwgMTIuNTE1NTY3XSwgWy0xNS41NDg0NzcsIDEyLjYyODE3XSwgWy0xMy43MDA0NzYsIDEyLjU4NjE4M10sIFstMTMuNzE4NzQ0LCAxMi4yNDcxODZdLCBbLTEzLjgyODI3MiwgMTIuMTQyNjQ0XSwgWy0xMy43NDMxNjEsIDExLjgxMTI2OV0sIFstMTMuOTAwOCwgMTEuNjc4NzE5XSwgWy0xNC4xMjE0MDYsIDExLjY3NzExN10sIFstMTQuMzgyMTkyLCAxMS41MDkyNzJdLCBbLTE0LjY4NTY4NywgMTEuNTI3ODI0XSwgWy0xNS4xMzAzMTEsIDExLjA0MDQxMl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR05CIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHdWluZWEgQmlzc2F1IiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s5LjQ5Mjg4OSwgMS4wMTAxMl0sIFs5LjMwNTYxMywgMS4xNjA5MTFdLCBbOS42NDkxNTgsIDIuMjgzODY2XSwgWzExLjI3NjQ0OSwgMi4yNjEwNTFdLCBbMTEuMjg1MDc5LCAxLjA1NzY2Ml0sIFs5LjgzMDI4NCwgMS4wNjc4OTRdLCBbOS40OTI4ODksIDEuMDEwMTJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIkdOUSIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiRXF1YXRvcmlhbCBHdWluZWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1syMy42OTk5OCwgMzUuNzA1MDA0XSwgWzI0LjI0NjY2NSwgMzUuMzY4MDIyXSwgWzI1LjAyNTAxNSwgMzUuNDI0OTk2XSwgWzI1Ljc2OTIwOCwgMzUuMzU0MDE4XSwgWzI1Ljc0NTAyMywgMzUuMTc5OTk4XSwgWzI2LjI5MDAwMywgMzUuMjk5OTldLCBbMjYuMTY0OTk4LCAzNS4wMDQ5OTVdLCBbMjQuNzI0OTgyLCAzNC45MTk5ODhdLCBbMjQuNzM1MDA3LCAzNS4wODQ5OTFdLCBbMjMuNTE0OTc4LCAzNS4yNzk5OTJdLCBbMjMuNjk5OTgsIDM1LjcwNTAwNF1dXSwgW1tbMjYuNjA0MTk2LCA0MS41NjIxMTVdLCBbMjYuMjk0NjAyLCA0MC45MzYyNjFdLCBbMjYuMDU2OTQyLCA0MC44MjQxMjNdLCBbMjUuNDQ3Njc3LCA0MC44NTI1NDVdLCBbMjQuOTI1ODQ4LCA0MC45NDcwNjJdLCBbMjMuNzE0ODExLCA0MC42ODcxMjldLCBbMjQuNDA3OTk5LCA0MC4xMjQ5OTNdLCBbMjMuODk5OTY4LCAzOS45NjIwMDZdLCBbMjMuMzQyOTk5LCAzOS45NjA5OThdLCBbMjIuODEzOTg4LCA0MC40NzYwMDVdLCBbMjIuNjI2Mjk5LCA0MC4yNTY1NjFdLCBbMjIuODQ5NzQ4LCAzOS42NTkzMTFdLCBbMjMuMzUwMDI3LCAzOS4xOTAwMTFdLCBbMjIuOTczMDk5LCAzOC45NzA5MDNdLCBbMjMuNTMwMDE2LCAzOC41MTAwMDFdLCBbMjQuMDI1MDI1LCAzOC4yMTk5OTNdLCBbMjQuMDQwMDExLCAzNy42NTUwMTVdLCBbMjMuMTE1MDAzLCAzNy45MjAwMTFdLCBbMjMuNDA5OTcyLCAzNy40MDk5OTFdLCBbMjIuNzc0OTcyLCAzNy4zMDUwMV0sIFsyMy4xNTQyMjUsIDM2LjQyMjUwNl0sIFsyMi40OTAwMjgsIDM2LjQxXSwgWzIxLjY3MDAyNiwgMzYuODQ0OTg2XSwgWzIxLjI5NTAxMSwgMzcuNjQ0OTg5XSwgWzIxLjEyMDAzNCwgMzguMzEwMzIzXSwgWzIwLjczMDAzMiwgMzguNzY5OTg1XSwgWzIwLjIxNzcxMiwgMzkuMzQwMjM1XSwgWzIwLjE1MDAxNiwgMzkuNjI0OTk4XSwgWzIwLjYxNSwgNDAuMTEwMDA3XSwgWzIwLjY3NDk5NywgNDAuNDM1XSwgWzIwLjk5OTk5LCA0MC41ODAwMDRdLCBbMjEuMDIwMDQsIDQwLjg0MjcyN10sIFsyMS42NzQxNjEsIDQwLjkzMTI3NV0sIFsyMi4wNTUzNzgsIDQxLjE0OTg2Nl0sIFsyMi41OTczMDgsIDQxLjEzMDQ4N10sIFsyMi43NjE3NywgNDEuMzA0OF0sIFsyMi45NTIzNzcsIDQxLjMzNzk5NF0sIFsyMy42OTIwNzQsIDQxLjMwOTA4MV0sIFsyNC40OTI2NDUsIDQxLjU4Mzg5Nl0sIFsyNS4xOTcyMDEsIDQxLjIzNDQ4Nl0sIFsyNi4xMDYxMzgsIDQxLjMyODg5OV0sIFsyNi4xMTcwNDIsIDQxLjgyNjkwNV0sIFsyNi42MDQxOTYsIDQxLjU2MjExNV1dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiR1JDIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHcmVlY2UiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy00Ni43NjM3OSwgODIuNjI3OTZdLCBbLTQzLjQwNjQ0LCA4My4yMjUxNl0sIFstMzkuODk3NTMsIDgzLjE4MDE4XSwgWy0zOC42MjIxNCwgODMuNTQ5MDVdLCBbLTM1LjA4Nzg3LCA4My42NDUxM10sIFstMjcuMTAwNDYsIDgzLjUxOTY2XSwgWy0yMC44NDUzOSwgODIuNzI2NjldLCBbLTIyLjY5MTgyLCA4Mi4zNDE2NV0sIFstMjYuNTE3NTMsIDgyLjI5NzY1XSwgWy0zMS45LCA4Mi4yXSwgWy0zMS4zOTY0NiwgODIuMDIxNTRdLCBbLTI3Ljg1NjY2LCA4Mi4xMzE3OF0sIFstMjQuODQ0NDgsIDgxLjc4Njk3XSwgWy0yMi45MDMyOCwgODIuMDkzMTddLCBbLTIyLjA3MTc1LCA4MS43MzQ0OV0sIFstMjMuMTY5NjEsIDgxLjE1MjcxXSwgWy0yMC42MjM2MywgODEuNTI0NjJdLCBbLTE1Ljc2ODE4LCA4MS45MTI0NV0sIFstMTIuNzcwMTgsIDgxLjcxODg1XSwgWy0xMi4yMDg1NSwgODEuMjkxNTRdLCBbLTE2LjI4NTMzLCA4MC41ODAwNF0sIFstMTYuODUsIDgwLjM1XSwgWy0yMC4wNDYyNCwgODAuMTc3MDhdLCBbLTE3LjczMDM1LCA4MC4xMjkxMl0sIFstMTguOSwgNzkuNF0sIFstMTkuNzA0OTksIDc4Ljc1MTI4XSwgWy0xOS42NzM1MywgNzcuNjM4NTldLCBbLTE4LjQ3Mjg1LCA3Ni45ODU2NV0sIFstMjAuMDM1MDMsIDc2Ljk0NDM0XSwgWy0yMS42Nzk0NCwgNzYuNjI3OTVdLCBbLTE5LjgzNDA3LCA3Ni4wOTgwOF0sIFstMTkuNTk4OTYsIDc1LjI0ODM4XSwgWy0yMC42NjgxOCwgNzUuMTU1ODVdLCBbLTE5LjM3MjgxLCA3NC4yOTU2MV0sIFstMjEuNTk0MjIsIDc0LjIyMzgyXSwgWy0yMC40MzQ1NCwgNzMuODE3MTNdLCBbLTIwLjc2MjM0LCA3My40NjQzNl0sIFstMjIuMTcyMjEsIDczLjMwOTU1XSwgWy0yMy41NjU5MywgNzMuMzA2NjNdLCBbLTIyLjMxMzExLCA3Mi42MjkyOF0sIFstMjIuMjk5NTQsIDcyLjE4NDA5XSwgWy0yNC4yNzgzNCwgNzIuNTk3ODhdLCBbLTI0Ljc5Mjk2LCA3Mi4zMzAyXSwgWy0yMy40NDI5NiwgNzIuMDgwMTZdLCBbLTIyLjEzMjgxLCA3MS40Njg5OF0sIFstMjEuNzUzNTYsIDcwLjY2MzY5XSwgWy0yMy41MzYwMywgNzAuNDcxXSwgWy0yNC4zMDcwMiwgNzAuODU2NDldLCBbLTI1LjU0MzQxLCA3MS40MzA5NF0sIFstMjUuMjAxMzUsIDcwLjc1MjI2XSwgWy0yNi4zNjI3NiwgNzAuMjI2NDZdLCBbLTIzLjcyNzQyLCA3MC4xODQwMV0sIFstMjIuMzQ5MDIsIDcwLjEyOTQ2XSwgWy0yNS4wMjkyNywgNjkuMjU4OF0sIFstMjcuNzQ3MzcsIDY4LjQ3MDQ2XSwgWy0zMC42NzM3MSwgNjguMTI1MDNdLCBbLTMxLjc3NjY1LCA2OC4xMjA3OF0sIFstMzIuODExMDUsIDY3LjczNTQ3XSwgWy0zNC4yMDE5NiwgNjYuNjc5NzRdLCBbLTM2LjM1Mjg0LCA2NS45Nzg5XSwgWy0zNy4wNDM3OCwgNjUuOTM3NjhdLCBbLTM4LjM3NTA1LCA2NS42OTIxM10sIFstMzkuODEyMjIsIDY1LjQ1ODQ4XSwgWy00MC42Njg5OSwgNjQuODM5OTddLCBbLTQwLjY4MjgxLCA2NC4xMzkwMl0sIFstNDEuMTg4NywgNjMuNDgyNDZdLCBbLTQyLjgxOTM4LCA2Mi42ODIzM10sIFstNDIuNDE2NjYsIDYxLjkwMDkzXSwgWy00Mi44NjYxOSwgNjEuMDc0MDRdLCBbLTQzLjM3ODQsIDYwLjA5NzcyXSwgWy00NC43ODc1LCA2MC4wMzY3Nl0sIFstNDYuMjYzNjQsIDYwLjg1MzI4XSwgWy00OC4yNjI5NCwgNjAuODU4NDNdLCBbLTQ5LjIzMzA4LCA2MS40MDY4MV0sIFstNDkuOTAwMzksIDYyLjM4MzM2XSwgWy01MS42MzMyNSwgNjMuNjI2OTFdLCBbLTUyLjE0MDE0LCA2NC4yNzg0Ml0sIFstNTIuMjc2NTksIDY1LjE3NjddLCBbLTUzLjY2MTY2LCA2Ni4wOTk1N10sIFstNTMuMzAxNjEsIDY2LjgzNjVdLCBbLTUzLjk2OTExLCA2Ny4xODg5OV0sIFstNTIuOTgwNCwgNjguMzU3NTldLCBbLTUxLjQ3NTM2LCA2OC43Mjk1OF0sIFstNTEuMDgwNDEsIDY5LjE0NzgxXSwgWy01MC44NzEyMiwgNjkuOTI5MV0sIFstNTIuMDEzNTg1LCA2OS41NzQ5MjVdLCBbLTUyLjU1NzkyLCA2OS40MjYxNl0sIFstNTMuNDU2MjksIDY5LjI4MzYyNV0sIFstNTQuNjgzMzYsIDY5LjYxMDAzXSwgWy01NC43NTAwMSwgNzAuMjg5MzJdLCBbLTU0LjM1ODg0LCA3MC44MjEzMTVdLCBbLTUzLjQzMTMxNSwgNzAuODM1NzU1XSwgWy01MS4zOTAxNCwgNzAuNTY5NzhdLCBbLTUzLjEwOTM3LCA3MS4yMDQ4NV0sIFstNTQuMDA0MjIsIDcxLjU0NzE5XSwgWy01NSwgNzEuNDA2NTM3XSwgWy01NS44MzQ2OCwgNzEuNjU0NDRdLCBbLTU0LjcxODE5LCA3Mi41ODYyNV0sIFstNTUuMzI2MzQsIDcyLjk1ODYxXSwgWy01Ni4xMjAwMywgNzMuNjQ5NzddLCBbLTU3LjMyMzYzLCA3NC43MTAyNl0sIFstNTguNTk2NzksIDc1LjA5ODYxXSwgWy01OC41ODUxNiwgNzUuNTE3MjddLCBbLTYxLjI2ODYxLCA3Ni4xMDIzOF0sIFstNjMuMzkxNjUsIDc2LjE3NTJdLCBbLTY2LjA2NDI3LCA3Ni4xMzQ4Nl0sIFstNjguNTA0MzgsIDc2LjA2MTQxXSwgWy02OS42NjQ4NSwgNzYuMzc5NzVdLCBbLTcxLjQwMjU3LCA3Ny4wMDg1N10sIFstNjguNzc2NzEsIDc3LjMyMzEyXSwgWy02Ni43NjM5NywgNzcuMzc1OTVdLCBbLTcxLjA0MjkzLCA3Ny42MzU5NV0sIFstNzMuMjk3LCA3OC4wNDQxOV0sIFstNzMuMTU5MzgsIDc4LjQzMjcxXSwgWy02OS4zNzM0NSwgNzguOTEzODhdLCBbLTY1LjcxMDcsIDc5LjM5NDM2XSwgWy02NS4zMjM5LCA3OS43NTgxNF0sIFstNjguMDIyOTgsIDgwLjExNzIxXSwgWy02Ny4xNTEyOSwgODAuNTE1ODJdLCBbLTYzLjY4OTI1LCA4MS4yMTM5Nl0sIFstNjIuMjM0NDQsIDgxLjMyMTFdLCBbLTYyLjY1MTE2LCA4MS43NzA0Ml0sIFstNjAuMjgyNDksIDgyLjAzMzYzXSwgWy01Ny4yMDc0NCwgODIuMTkwNzRdLCBbLTU0LjEzNDQyLCA4Mi4xOTk2Ml0sIFstNTMuMDQzMjgsIDgxLjg4ODMzXSwgWy01MC4zOTA2MSwgODIuNDM4ODNdLCBbLTQ4LjAwMzg2LCA4Mi4wNjQ4MV0sIFstNDYuNTk5ODQsIDgxLjk4NTk0NV0sIFstNDQuNTIzLCA4MS42NjA3XSwgWy00Ni45MDA3LCA4Mi4xOTk3OV0sIFstNDYuNzYzNzksIDgyLjYyNzk2XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJHUkwiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkdyZWVubGFuZCIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZmZmYjIiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTkwLjA5NTU1NSwgMTMuNzM1MzM4XSwgWy05MC42MDg2MjQsIDEzLjkwOTc3MV0sIFstOTEuMjMyNDEsIDEzLjkyNzgzMl0sIFstOTEuNjg5NzQ3LCAxNC4xMjYyMThdLCBbLTkyLjIyNzc1LCAxNC41Mzg4MjldLCBbLTkyLjIwMzIzLCAxNC44MzAxMDNdLCBbLTkyLjA4NzIxNiwgMTUuMDY0NTg1XSwgWy05Mi4yMjkyNDksIDE1LjI1MTQ0N10sIFstOTEuNzQ3OTYsIDE2LjA2NjU2NV0sIFstOTAuNDY0NDczLCAxNi4wNjk1NjJdLCBbLTkwLjQzODg2NywgMTYuNDEwMTFdLCBbLTkwLjYwMDg0NywgMTYuNDcwNzc4XSwgWy05MC43MTE4MjIsIDE2LjY4NzQ4M10sIFstOTEuMDgxNjcsIDE2LjkxODQ3N10sIFstOTEuNDUzOTIxLCAxNy4yNTIxNzddLCBbLTkxLjAwMjI2OSwgMTcuMjU0NjU4XSwgWy05MS4wMDE1MiwgMTcuODE3NTk1XSwgWy05MC4wNjc5MzQsIDE3LjgxOTMyNl0sIFstODkuMTQzMDgsIDE3LjgwODMxOV0sIFstODkuMTUwODA2LCAxNy4wMTU1NzddLCBbLTg5LjIyOTEyMiwgMTUuODg2OTM4XSwgWy04OC45MzA2MTMsIDE1Ljg4NzI3M10sIFstODguNjA0NTg2LCAxNS43MDYzOF0sIFstODguNTE4MzY0LCAxNS44NTUzODldLCBbLTg4LjIyNTAyMywgMTUuNzI3NzIyXSwgWy04OC42ODA2OCwgMTUuMzQ2MjQ3XSwgWy04OS4xNTQ4MTEsIDE1LjA2NjQxOV0sIFstODkuMjI1MjIsIDE0Ljg3NDI4Nl0sIFstODkuMTQ1NTM1LCAxNC42NzgwMTldLCBbLTg5LjM1MzMyNiwgMTQuNDI0MTMzXSwgWy04OS41ODczNDMsIDE0LjM2MjU4Nl0sIFstODkuNTM0MjE5LCAxNC4yNDQ4MTZdLCBbLTg5LjcyMTkzNCwgMTQuMTM0MjI4XSwgWy05MC4wNjQ2NzgsIDEzLjg4MTk3XSwgWy05MC4wOTU1NTUsIDEzLjczNTMzOF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR1RNIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHdWF0ZW1hbGEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy01OS43NTgyODUsIDguMzY3MDM1XSwgWy01OS4xMDE2ODQsIDcuOTk5MjAyXSwgWy01OC40ODI5NjIsIDcuMzQ3NjkxXSwgWy01OC40NTQ4NzYsIDYuODMyNzg3XSwgWy01OC4wNzgxMDMsIDYuODA5MDk0XSwgWy01Ny41NDIyMTksIDYuMzIxMjY4XSwgWy01Ny4xNDc0MzYsIDUuOTczMTVdLCBbLTU3LjMwNzI0NiwgNS4wNzM1NjddLCBbLTU3LjkxNDI4OSwgNC44MTI2MjZdLCBbLTU3Ljg2MDIxLCA0LjU3NjgwMV0sIFstNTguMDQ0Njk0LCA0LjA2MDg2NF0sIFstNTcuNjAxNTY5LCAzLjMzNDY1NV0sIFstNTcuMjgxNDMzLCAzLjMzMzQ5Ml0sIFstNTcuMTUwMDk4LCAyLjc2ODkyN10sIFstNTYuNTM5Mzg2LCAxLjg5OTUyM10sIFstNTYuNzgyNzA0LCAxLjg2MzcxMV0sIFstNTcuMzM1ODIzLCAxLjk0ODUzOF0sIFstNTcuNjYwOTcxLCAxLjY4MjU4NV0sIFstNTguMTEzNDUsIDEuNTA3MTk1XSwgWy01OC40Mjk0NzcsIDEuNDYzOTQyXSwgWy01OC41NDAwMTMsIDEuMjY4MDg4XSwgWy01OS4wMzA4NjIsIDEuMzE3Njk4XSwgWy01OS42NDYwNDQsIDEuNzg2ODk0XSwgWy01OS43MTg1NDYsIDIuMjQ5NjNdLCBbLTU5Ljk3NDUyNSwgMi43NTUyMzNdLCBbLTU5LjgxNTQxMywgMy42MDY0OTldLCBbLTU5LjUzODA0LCAzLjk1ODgwM10sIFstNTkuNzY3NDA2LCA0LjQyMzUwM10sIFstNjAuMTExMDAyLCA0LjU3NDk2N10sIFstNTkuOTgwOTU5LCA1LjAxNDA2MV0sIFstNjAuMjEzNjgzLCA1LjI0NDQ4Nl0sIFstNjAuNzMzNTc0LCA1LjIwMDI3N10sIFstNjEuNDEwMzAzLCA1Ljk1OTA2OF0sIFstNjEuMTM5NDE1LCA2LjIzNDI5N10sIFstNjEuMTU5MzM2LCA2LjY5NjA3N10sIFstNjAuNTQzOTk5LCA2Ljg1NjU4NF0sIFstNjAuMjk1NjY4LCA3LjA0MzkxMV0sIFstNjAuNjM3OTczLCA3LjQxNV0sIFstNjAuNTUwNTg4LCA3Ljc3OTYwM10sIFstNTkuNzU4Mjg1LCA4LjM2NzAzNV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiR1VZIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJHdXlhbmEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy04Ny4zMTY2NTQsIDEyLjk4NDY4Nl0sIFstODcuNDg5NDA5LCAxMy4yOTc1MzVdLCBbLTg3Ljc5MzExMSwgMTMuMzg0NDhdLCBbLTg3LjcyMzUwMywgMTMuNzg1MDVdLCBbLTg3Ljg1OTUxNSwgMTMuODkzMzEyXSwgWy04OC4wNjUzNDMsIDEzLjk2NDYyNl0sIFstODguNTAzOTk4LCAxMy44NDU0ODZdLCBbLTg4LjU0MTIzMSwgMTMuOTgwMTU1XSwgWy04OC44NDMwNzMsIDE0LjE0MDUwN10sIFstODkuMDU4NTEyLCAxNC4zNDAwMjldLCBbLTg5LjM1MzMyNiwgMTQuNDI0MTMzXSwgWy04OS4xNDU1MzUsIDE0LjY3ODAxOV0sIFstODkuMjI1MjIsIDE0Ljg3NDI4Nl0sIFstODkuMTU0ODExLCAxNS4wNjY0MTldLCBbLTg4LjY4MDY4LCAxNS4zNDYyNDddLCBbLTg4LjIyNTAyMywgMTUuNzI3NzIyXSwgWy04OC4xMjExNTMsIDE1LjY4ODY1NV0sIFstODcuOTAxODEzLCAxNS44NjQ0NThdLCBbLTg3LjYxNTY4LCAxNS44Nzg3OTldLCBbLTg3LjUyMjkyMSwgMTUuNzk3Mjc5XSwgWy04Ny4zNjc3NjIsIDE1Ljg0Njk0XSwgWy04Ni45MDMxOTEsIDE1Ljc1NjcxM10sIFstODYuNDQwOTQ2LCAxNS43ODI4MzVdLCBbLTg2LjExOTIzNCwgMTUuODkzNDQ5XSwgWy04Ni4wMDE5NTQsIDE2LjAwNTQwNl0sIFstODUuNjgzMzE3LCAxNS45NTM2NTJdLCBbLTg1LjQ0NDAwNCwgMTUuODg1NzQ5XSwgWy04NS4xODI0NDQsIDE1LjkwOTE1OF0sIFstODQuOTgzNzIyLCAxNS45OTU5MjNdLCBbLTg0LjUyNjk4LCAxNS44NTcyMjRdLCBbLTg0LjM2ODI1NiwgMTUuODM1MTU4XSwgWy04NC4wNjMwNTUsIDE1LjY0ODI0NF0sIFstODMuNzczOTc3LCAxNS40MjQwNzJdLCBbLTgzLjQxMDM4MSwgMTUuMjcwOTAzXSwgWy04My4xNDcyMTksIDE0Ljk5NTgyOV0sIFstODMuNDg5OTg5LCAxNS4wMTYyNjddLCBbLTgzLjYyODU4NSwgMTQuODgwMDc0XSwgWy04My45NzU3MjEsIDE0Ljc0OTQzNl0sIFstODQuMjI4MzQyLCAxNC43NDg3NjRdLCBbLTg0LjQ0OTMzNiwgMTQuNjIxNjE0XSwgWy04NC42NDk1ODIsIDE0LjY2NjgwNV0sIFstODQuODIwMDM3LCAxNC44MTk1ODddLCBbLTg0LjkyNDUwMSwgMTQuNzkwNDkzXSwgWy04NS4wNTI3ODcsIDE0LjU1MTU0MV0sIFstODUuMTQ4NzUxLCAxNC41NjAxOTddLCBbLTg1LjE2NTM2NSwgMTQuMzU0MzddLCBbLTg1LjUxNDQxMywgMTQuMDc5MDEyXSwgWy04NS42OTg2NjUsIDEzLjk2MDA3OF0sIFstODUuODAxMjk1LCAxMy44MzYwNTVdLCBbLTg2LjA5NjI2NCwgMTQuMDM4MTg3XSwgWy04Ni4zMTIxNDIsIDEzLjc3MTM1Nl0sIFstODYuNTIwNzA4LCAxMy43Nzg0ODddLCBbLTg2Ljc1NTA4NywgMTMuNzU0ODQ1XSwgWy04Ni43MzM4MjIsIDEzLjI2MzA5M10sIFstODYuODgwNTU3LCAxMy4yNTQyMDRdLCBbLTg3LjAwNTc2OSwgMTMuMDI1Nzk0XSwgWy04Ny4zMTY2NTQsIDEyLjk4NDY4Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiSE5EIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJIb25kdXJhcyIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTguODI5ODM4LCA0NS45MDg4NzhdLCBbMTkuMDcyNzY5LCA0NS41MjE1MTFdLCBbMTkuMzkwNDc2LCA0NS4yMzY1MTZdLCBbMTkuMDA1NDg2LCA0NC44NjAyMzRdLCBbMTguNTUzMjE0LCA0NS4wODE1OV0sIFsxNy44NjE3ODMsIDQ1LjA2Nzc0XSwgWzE3LjAwMjE0NiwgNDUuMjMzNzc3XSwgWzE2LjUzNDkzOSwgNDUuMjExNjA4XSwgWzE2LjMxODE1NywgNDUuMDA0MTI3XSwgWzE1Ljk1OTM2NywgNDUuMjMzNzc3XSwgWzE1Ljc1MDAyNiwgNDQuODE4NzEyXSwgWzE2LjIzOTY2LCA0NC4zNTExNDNdLCBbMTYuNDU2NDQzLCA0NC4wNDEyNF0sIFsxNi45MTYxNTYsIDQzLjY2NzcyMl0sIFsxNy4yOTczNzMsIDQzLjQ0NjM0MV0sIFsxNy42NzQ5MjIsIDQzLjAyODU2M10sIFsxOC41NiwgNDIuNjVdLCBbMTguNDUwMDE2LCA0Mi40Nzk5OTFdLCBbMTcuNTA5OTcsIDQyLjg0OTk5NV0sIFsxNi45MzAwMDYsIDQzLjIwOTk5OF0sIFsxNi4wMTUzODUsIDQzLjUwNzIxNV0sIFsxNS4xNzQ0NTQsIDQ0LjI0MzE5MV0sIFsxNS4zNzYyNSwgNDQuMzE3OTE1XSwgWzE0LjkyMDMwOSwgNDQuNzM4NDg0XSwgWzE0LjkwMTYwMiwgNDUuMDc2MDZdLCBbMTQuMjU4NzQ4LCA0NS4yMzM3NzddLCBbMTMuOTUyMjU1LCA0NC44MDIxMjRdLCBbMTMuNjU2OTc2LCA0NS4xMzY5MzVdLCBbMTMuNjc5NDAzLCA0NS40ODQxNDldLCBbMTMuNzE1MDYsIDQ1LjUwMDMyNF0sIFsxNC40MTE5NjgsIDQ1LjQ2NjE2Nl0sIFsxNC41OTUxMDksIDQ1LjYzNDk0MV0sIFsxNC45MzUyNDQsIDQ1LjQ3MTY5NV0sIFsxNS4zMjc2NzUsIDQ1LjQ1MjMxNl0sIFsxNS4zMjM5NTQsIDQ1LjczMTc4M10sIFsxNS42NzE1MywgNDUuODM0MTU0XSwgWzE1Ljc2ODczMywgNDYuMjM4MTA4XSwgWzE2LjU2NDgwOCwgNDYuNTAzNzUxXSwgWzE2Ljg4MjUxNSwgNDYuMzgwNjMyXSwgWzE3LjYzMDA2NiwgNDUuOTUxNzY5XSwgWzE4LjQ1NjA2MiwgNDUuNzU5NDgxXSwgWzE4LjgyOTgzOCwgNDUuOTA4ODc4XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJIUlYiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNyb2F0aWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWy03My4xODk3OTEsIDE5LjkxNTY4NF0sIFstNzIuNTc5NjczLCAxOS44NzE1MDFdLCBbLTcxLjcxMjM2MSwgMTkuNzE0NDU2XSwgWy03MS42MjQ4NzMsIDE5LjE2OTgzOF0sIFstNzEuNzAxMzAzLCAxOC43ODU0MTddLCBbLTcxLjk0NTExMiwgMTguNjE2OV0sIFstNzEuNjg3NzM4LCAxOC4zMTY2Nl0sIFstNzEuNzA4MzA1LCAxOC4wNDQ5OTddLCBbLTcyLjM3MjQ3NiwgMTguMjE0OTYxXSwgWy03Mi44NDQ0MTEsIDE4LjE0NTYxMV0sIFstNzMuNDU0NTU1LCAxOC4yMTc5MDZdLCBbLTczLjkyMjQzMywgMTguMDMwOTkzXSwgWy03NC40NTgwMzQsIDE4LjM0MjU1XSwgWy03NC4zNjk5MjUsIDE4LjY2NDkwOF0sIFstNzMuNDQ5NTQyLCAxOC41MjYwNTNdLCBbLTcyLjY5NDkzNywgMTguNDQ1Nzk5XSwgWy03Mi4zMzQ4ODIsIDE4LjY2ODQyMl0sIFstNzIuNzkxNjUsIDE5LjEwMTYyNV0sIFstNzIuNzg0MTA1LCAxOS40ODM1OTFdLCBbLTczLjQxNTAyMiwgMTkuNjM5NTUxXSwgWy03My4xODk3OTEsIDE5LjkxNTY4NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiSFRJIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJIYWl0aSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMTYuMjAyMjk4LCA0Ni44NTIzODZdLCBbMTYuNTM0MjY4LCA0Ny40OTYxNzFdLCBbMTYuMzQwNTg0LCA0Ny43MTI5MDJdLCBbMTYuOTAzNzU0LCA0Ny43MTQ4NjZdLCBbMTYuOTc5NjY3LCA0OC4xMjM0OTddLCBbMTcuNDg4NDczLCA0Ny44Njc0NjZdLCBbMTcuODU3MTMzLCA0Ny43NTg0MjldLCBbMTguNjk2NTEzLCA0Ny44ODA5NTRdLCBbMTguNzc3MDI1LCA0OC4wODE3NjhdLCBbMTkuMTc0MzY1LCA0OC4xMTEzNzldLCBbMTkuNjYxMzY0LCA0OC4yNjY2MTVdLCBbMTkuNzY5NDcxLCA0OC4yMDI2OTFdLCBbMjAuMjM5MDU0LCA0OC4zMjc1NjddLCBbMjAuNDczNTYyLCA0OC41NjI4NV0sIFsyMC44MDEyOTQsIDQ4LjYyMzg1NF0sIFsyMS44NzIyMzYsIDQ4LjMxOTk3MV0sIFsyMi4wODU2MDgsIDQ4LjQyMjI2NF0sIFsyMi42NDA4MiwgNDguMTUwMjRdLCBbMjIuNzEwNTMxLCA0Ny44ODIxOTRdLCBbMjIuMDk5NzY4LCA0Ny42NzI0MzldLCBbMjEuNjI2NTE1LCA0Ni45OTQyMzhdLCBbMjEuMDIxOTUyLCA0Ni4zMTYwODhdLCBbMjAuMjIwMTkyLCA0Ni4xMjc0NjldLCBbMTkuNTk2MDQ1LCA0Ni4xNzE3M10sIFsxOC44Mjk4MzgsIDQ1LjkwODg3OF0sIFsxOC40NTYwNjIsIDQ1Ljc1OTQ4MV0sIFsxNy42MzAwNjYsIDQ1Ljk1MTc2OV0sIFsxNi44ODI1MTUsIDQ2LjM4MDYzMl0sIFsxNi41NjQ4MDgsIDQ2LjUwMzc1MV0sIFsxNi4zNzA1MDUsIDQ2Ljg0MTMyN10sIFsxNi4yMDIyOTgsIDQ2Ljg1MjM4Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiSFVOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJIdW5nYXJ5IiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1tbMTIwLjcxNTYwOSwgLTEwLjIzOTU4MV0sIFsxMjAuMjk1MDE0LCAtMTAuMjU4NjVdLCBbMTE4Ljk2NzgwOCwgLTkuNTU3OTY5XSwgWzExOS45MDAzMSwgLTkuMzYxMzRdLCBbMTIwLjQyNTc1NiwgLTkuNjY1OTIxXSwgWzEyMC43NzU1MDIsIC05Ljk2OTY3NV0sIFsxMjAuNzE1NjA5LCAtMTAuMjM5NTgxXV1dLCBbW1sxMjQuNDM1OTUsIC0xMC4xNDAwMDFdLCBbMTIzLjU3OTk4MiwgLTEwLjM1OTk4N10sIFsxMjMuNDU5OTg5LCAtMTAuMjM5OTk1XSwgWzEyMy41NTAwMDksIC05LjkwMDAxNl0sIFsxMjMuOTgwMDA5LCAtOS4yOTAwMjddLCBbMTI0Ljk2ODY4MiwgLTguODkyNzldLCBbMTI1LjA3MDAyLCAtOS4wODk5ODddLCBbMTI1LjA4ODUyLCAtOS4zOTMxNzNdLCBbMTI0LjQzNTk1LCAtMTAuMTQwMDAxXV1dLCBbW1sxMTcuOTAwMDE4LCAtOC4wOTU2ODFdLCBbMTE4LjI2MDYxNiwgLTguMzYyMzgzXSwgWzExOC44Nzg0NiwgLTguMjgwNjgzXSwgWzExOS4xMjY1MDcsIC04LjcwNTgyNV0sIFsxMTcuOTcwNDAyLCAtOC45MDY2MzldLCBbMTE3LjI3NzczMSwgLTkuMDQwODk1XSwgWzExNi43NDAxNDEsIC05LjAzMjkzN10sIFsxMTcuMDgzNzM3LCAtOC40NTcxNThdLCBbMTE3LjYzMjAyNCwgLTguNDQ5MzAzXSwgWzExNy45MDAwMTgsIC04LjA5NTY4MV1dXSwgW1tbMTIyLjkwMzUzNywgLTguMDk0MjM0XSwgWzEyMi43NTY5ODMsIC04LjY0OTgwOF0sIFsxMjEuMjU0NDkxLCAtOC45MzM2NjZdLCBbMTE5LjkyNDM5MSwgLTguODEwNDE4XSwgWzExOS45MjA5MjksIC04LjQ0NDg1OV0sIFsxMjAuNzE1MDkyLCAtOC4yMzY5NjVdLCBbMTIxLjM0MTY2OSwgLTguNTM2NzRdLCBbMTIyLjAwNzM2NSwgLTguNDYwNjJdLCBbMTIyLjkwMzUzNywgLTguMDk0MjM0XV1dLCBbW1sxMDguNjIzNDc5LCAtNi43Nzc2NzRdLCBbMTEwLjUzOTIyNywgLTYuODc3MzU4XSwgWzExMC43NTk1NzYsIC02LjQ2NTE4Nl0sIFsxMTIuNjE0ODExLCAtNi45NDYwMzZdLCBbMTEyLjk3ODc2OCwgLTcuNTk0MjEzXSwgWzExNC40Nzg5MzUsIC03Ljc3NjUyOF0sIFsxMTUuNzA1NTI3LCAtOC4zNzA4MDddLCBbMTE0LjU2NDUxMSwgLTguNzUxODE3XSwgWzExMy40NjQ3MzQsIC04LjM0ODk0N10sIFsxMTIuNTU5NjcyLCAtOC4zNzYxODFdLCBbMTExLjUyMjA2MSwgLTguMzAyMTI5XSwgWzExMC41ODYxNSwgLTguMTIyNjA1XSwgWzEwOS40Mjc2NjcsIC03Ljc0MDY2NF0sIFsxMDguNjkzNjU1LCAtNy42NDE2XSwgWzEwOC4yNzc3NjMsIC03Ljc2NjY1N10sIFsxMDYuNDU0MTAyLCAtNy4zNTQ5XSwgWzEwNi4yODA2MjQsIC02LjkyNDldLCBbMTA1LjM2NTQ4NiwgLTYuODUxNDE2XSwgWzEwNi4wNTE2NDYsIC01Ljg5NTkxOV0sIFsxMDcuMjY1MDA5LCAtNS45NTQ5ODVdLCBbMTA4LjA3MjA5MSwgLTYuMzQ1NzYyXSwgWzEwOC40ODY4NDYsIC02LjQyMTk4NV0sIFsxMDguNjIzNDc5LCAtNi43Nzc2NzRdXV0sIFtbWzEzNC43MjQ2MjQsIC02LjIxNDQwMV0sIFsxMzQuMjEwMTM0LCAtNi44OTUyMzhdLCBbMTM0LjExMjc3NiwgLTYuMTQyNDY3XSwgWzEzNC4yOTAzMzYsIC01Ljc4MzA1OF0sIFsxMzQuNDk5NjI1LCAtNS40NDUwNDJdLCBbMTM0LjcyNzAwMiwgLTUuNzM3NTgyXSwgWzEzNC43MjQ2MjQsIC02LjIxNDQwMV1dXSwgW1tbMTI3LjI0OTIxNSwgLTMuNDU5MDY1XSwgWzEyNi44NzQ5MjMsIC0zLjc5MDk4M10sIFsxMjYuMTgzODAyLCAtMy42MDczNzZdLCBbMTI1Ljk4OTAzNCwgLTMuMTc3MjczXSwgWzEyNy4wMDA2NTEsIC0zLjEyOTMxOF0sIFsxMjcuMjQ5MjE1LCAtMy40NTkwNjVdXV0sIFtbWzEzMC40NzEzNDQsIC0zLjA5Mzc2NF0sIFsxMzAuODM0ODM2LCAtMy44NTg0NzJdLCBbMTI5Ljk5MDU0NywgLTMuNDQ2MzAxXSwgWzEyOS4xNTUyNDksIC0zLjM2MjYzN10sIFsxMjguNTkwNjg0LCAtMy40Mjg2NzldLCBbMTI3Ljg5ODg5MSwgLTMuMzkzNDM2XSwgWzEyOC4xMzU4NzksIC0yLjg0MzY1XSwgWzEyOS4zNzA5OTgsIC0yLjgwMjE1NF0sIFsxMzAuNDcxMzQ0LCAtMy4wOTM3NjRdXV0sIFtbWzEzNC4xNDMzNjgsIC0xLjE1MTg2N10sIFsxMzQuNDIyNjI3LCAtMi43NjkxODVdLCBbMTM1LjQ1NzYwMywgLTMuMzY3NzUzXSwgWzEzNi4yOTMzMTQsIC0yLjMwNzA0Ml0sIFsxMzcuNDQwNzM4LCAtMS43MDM1MTNdLCBbMTM4LjMyOTcyNywgLTEuNzAyNjg2XSwgWzEzOS4xODQ5MjEsIC0yLjA1MTI5Nl0sIFsxMzkuOTI2Njg0LCAtMi40MDkwNTJdLCBbMTQxLjAwMDIxLCAtMi42MDAxNTFdLCBbMTQxLjAxNzA1NywgLTUuODU5MDIyXSwgWzE0MS4wMzM4NTIsIC05LjExNzg5M10sIFsxNDAuMTQzNDE1LCAtOC4yOTcxNjhdLCBbMTM5LjEyNzc2NywgLTguMDk2MDQzXSwgWzEzOC44ODE0NzcsIC04LjM4MDkzNV0sIFsxMzcuNjE0NDc0LCAtOC40MTE2ODNdLCBbMTM4LjAzOTA5OSwgLTcuNTk3ODgyXSwgWzEzOC42Njg2MjEsIC03LjMyMDIyNV0sIFsxMzguNDA3OTE0LCAtNi4yMzI4NDldLCBbMTM3LjkyNzg0LCAtNS4zOTMzNjZdLCBbMTM1Ljk4OTI1LCAtNC41NDY1NDRdLCBbMTM1LjE2NDU5OCwgLTQuNDYyOTMxXSwgWzEzMy42NjI4OCwgLTMuNTM4ODUzXSwgWzEzMy4zNjc3MDUsIC00LjAyNDgxOV0sIFsxMzIuOTgzOTU2LCAtNC4xMTI5NzldLCBbMTMyLjc1Njk0MSwgLTMuNzQ2MjgzXSwgWzEzMi43NTM3ODksIC0zLjMxMTc4N10sIFsxMzEuOTg5ODA0LCAtMi44MjA1NTFdLCBbMTMzLjA2Njg0NSwgLTIuNDYwNDE4XSwgWzEzMy43ODAwMzEsIC0yLjQ3OTg0OF0sIFsxMzMuNjk2MjEyLCAtMi4yMTQ1NDJdLCBbMTMyLjIzMjM3MywgLTIuMjEyNTI2XSwgWzEzMS44MzYyMjIsIC0xLjYxNzE2Ml0sIFsxMzAuOTQyODQsIC0xLjQzMjUyMl0sIFsxMzAuNTE5NTU4LCAtMC45Mzc3Ml0sIFsxMzEuODY3NTM4LCAtMC42OTU0NjFdLCBbMTMyLjM4MDExNiwgLTAuMzY5NTM4XSwgWzEzMy45ODU1NDgsIC0wLjc4MDIxXSwgWzEzNC4xNDMzNjgsIC0xLjE1MTg2N11dXSwgW1tbMTI1LjI0MDUwMSwgMS40MTk4MzZdLCBbMTI0LjQzNzAzNSwgMC40Mjc4ODFdLCBbMTIzLjY4NTUwNSwgMC4yMzU1OTNdLCBbMTIyLjcyMzA4MywgMC40MzExMzddLCBbMTIxLjA1NjcyNSwgMC4zODEyMTddLCBbMTIwLjE4MzA4MywgMC4yMzcyNDddLCBbMTIwLjA0MDg3LCAtMC41MTk2NThdLCBbMTIwLjkzNTkwNSwgLTEuNDA4OTA2XSwgWzEyMS40NzU4MjEsIC0wLjk1NTk2Ml0sIFsxMjMuMzQwNTY1LCAtMC42MTU2NzNdLCBbMTIzLjI1ODM5OSwgLTEuMDc2MjEzXSwgWzEyMi44MjI3MTUsIC0wLjkzMDk1MV0sIFsxMjIuMzg4NTMsIC0xLjUxNjg1OF0sIFsxMjEuNTA4Mjc0LCAtMS45MDQ0ODNdLCBbMTIyLjQ1NDU3MiwgLTMuMTg2MDU4XSwgWzEyMi4yNzE4OTYsIC0zLjUyOTVdLCBbMTIzLjE3MDk2MywgLTQuNjgzNjkzXSwgWzEyMy4xNjIzMzMsIC01LjM0MDYwNF0sIFsxMjIuNjI4NTE1LCAtNS42MzQ1OTFdLCBbMTIyLjIzNjM5NCwgLTUuMjgyOTMzXSwgWzEyMi43MTk1NjksIC00LjQ2NDE3Ml0sIFsxMjEuNzM4MjM0LCAtNC44NTEzMzFdLCBbMTIxLjQ4OTQ2MywgLTQuNTc0NTUzXSwgWzEyMS42MTkxNzEsIC00LjE4ODQ3OF0sIFsxMjAuODk4MTgyLCAtMy42MDIxMDVdLCBbMTIwLjk3MjM4OSwgLTIuNjI3NjQzXSwgWzEyMC4zMDU0NTMsIC0yLjkzMTYwNF0sIFsxMjAuMzkwMDQ3LCAtNC4wOTc1NzldLCBbMTIwLjQzMDcxNywgLTUuNTI4MjQxXSwgWzExOS43OTY1NDMsIC01LjY3MzRdLCBbMTE5LjM2NjkwNiwgLTUuMzc5ODc4XSwgWzExOS42NTM2MDYsIC00LjQ1OTQxN10sIFsxMTkuNDk4ODM1LCAtMy40OTQ0MTJdLCBbMTE5LjA3ODM0NCwgLTMuNDg3MDIyXSwgWzExOC43Njc3NjksIC0yLjgwMTk5OV0sIFsxMTkuMTgwOTc0LCAtMi4xNDcxMDRdLCBbMTE5LjMyMzM5NCwgLTEuMzUzMTQ3XSwgWzExOS44MjU5OTksIDAuMTU0MjU0XSwgWzEyMC4wMzU3MDIsIDAuNTY2NDc3XSwgWzEyMC44ODU3NzksIDEuMzA5MjIzXSwgWzEyMS42NjY4MTcsIDEuMDEzOTQ0XSwgWzEyMi45Mjc1NjcsIDAuODc1MTkyXSwgWzEyNC4wNzc1MjIsIDAuOTE3MTAyXSwgWzEyNS4wNjU5ODksIDEuNjQzMjU5XSwgWzEyNS4yNDA1MDEsIDEuNDE5ODM2XV1dLCBbW1sxMjguNjg4MjQ5LCAxLjEzMjM4Nl0sIFsxMjguNjM1OTUyLCAwLjI1ODQ4Nl0sIFsxMjguMTIwMTcsIDAuMzU2NDEzXSwgWzEyNy45NjgwMzQsIC0wLjI1MjA3N10sIFsxMjguMzc5OTk5LCAtMC43ODAwMDRdLCBbMTI4LjEwMDAxNiwgLTAuODk5OTk2XSwgWzEyNy42OTY0NzUsIC0wLjI2NjU5OF0sIFsxMjcuMzk5NDksIDEuMDExNzIyXSwgWzEyNy42MDA1MTIsIDEuODEwNjkxXSwgWzEyNy45MzIzNzgsIDIuMTc0NTk2XSwgWzEyOC4wMDQxNTYsIDEuNjI4NTMxXSwgWzEyOC41OTQ1NTksIDEuNTQwODExXSwgWzEyOC42ODgyNDksIDEuMTMyMzg2XV1dLCBbW1sxMTcuODc1NjI3LCAxLjgyNzY0MV0sIFsxMTguOTk2NzQ3LCAwLjkwMjIxOV0sIFsxMTcuODExODU4LCAwLjc4NDI0Ml0sIFsxMTcuNDc4MzM5LCAwLjEwMjQ3NV0sIFsxMTcuNTIxNjQ0LCAtMC44MDM3MjNdLCBbMTE2LjU2MDA0OCwgLTEuNDg3NjYxXSwgWzExNi41MzM3OTcsIC0yLjQ4MzUxN10sIFsxMTYuMTQ4MDg0LCAtNC4wMTI3MjZdLCBbMTE2LjAwMDg1OCwgLTMuNjU3MDM3XSwgWzExNC44NjQ4MDMsIC00LjEwNjk4NF0sIFsxMTQuNDY4NjUyLCAtMy40OTU3MDRdLCBbMTEzLjc1NTY3MiwgLTMuNDM5MTddLCBbMTEzLjI1Njk5NCwgLTMuMTE4Nzc2XSwgWzExMi4wNjgxMjYsIC0zLjQ3ODM5Ml0sIFsxMTEuNzAzMjkxLCAtMi45OTQ0NDJdLCBbMTExLjA0ODI0LCAtMy4wNDk0MjZdLCBbMTEwLjIyMzg0NiwgLTIuOTM0MDMyXSwgWzExMC4wNzA5MzYsIC0xLjU5Mjg3NF0sIFsxMDkuNTcxOTQ4LCAtMS4zMTQ5MDddLCBbMTA5LjA5MTg3NCwgLTAuNDU5NTA3XSwgWzEwOC45NTI2NTgsIDAuNDE1Mzc1XSwgWzEwOS4wNjkxMzYsIDEuMzQxOTM0XSwgWzEwOS42NjMyNiwgMi4wMDY0NjddLCBbMTA5LjgzMDIyNywgMS4zMzgxMzZdLCBbMTEwLjUxNDA2MSwgMC43NzMxMzFdLCBbMTExLjE1OTEzOCwgMC45NzY0NzhdLCBbMTExLjc5NzU0OCwgMC45MDQ0NDFdLCBbMTEyLjM4MDI1MiwgMS40MTAxMjFdLCBbMTEyLjg1OTgwOSwgMS40OTc3OV0sIFsxMTMuODA1ODUsIDEuMjE3NTQ5XSwgWzExNC42MjEzNTUsIDEuNDMwNjg4XSwgWzExNS4xMzQwMzcsIDIuODIxNDgyXSwgWzExNS41MTkwNzgsIDMuMTY5MjM4XSwgWzExNS44NjU1MTcsIDQuMzA2NTU5XSwgWzExNy4wMTUyMTQsIDQuMzA2MDk0XSwgWzExNy44ODIwMzUsIDQuMTM3NTUxXSwgWzExNy4zMTMyMzIsIDMuMjM0NDI4XSwgWzExOC4wNDgzMywgMi4yODc2OV0sIFsxMTcuODc1NjI3LCAxLjgyNzY0MV1dXSwgW1tbMTA1LjgxNzY1NSwgLTUuODUyMzU2XSwgWzEwNC43MTAzODQsIC01Ljg3MzI4NV0sIFsxMDMuODY4MjEzLCAtNS4wMzczMTVdLCBbMTAyLjU4NDI2MSwgLTQuMjIwMjU5XSwgWzEwMi4xNTYxNzMsIC0zLjYxNDE0Nl0sIFsxMDEuMzk5MTEzLCAtMi43OTk3NzddLCBbMTAwLjkwMjUwMywgLTIuMDUwMjYyXSwgWzEwMC4xNDE5ODEsIC0wLjY1MDM0OF0sIFs5OS4yNjM3NCwgMC4xODMxNDJdLCBbOTguOTcwMDExLCAxLjA0Mjg4Ml0sIFs5OC42MDEzNTEsIDEuODIzNTA3XSwgWzk3LjY5OTU5OCwgMi40NTMxODRdLCBbOTcuMTc2OTQyLCAzLjMwODc5MV0sIFs5Ni40MjQwMTcsIDMuODY4ODZdLCBbOTUuMzgwODc2LCA0Ljk3MDc4Ml0sIFs5NS4yOTMwMjYsIDUuNDc5ODIxXSwgWzk1LjkzNjg2MywgNS40Mzk1MTNdLCBbOTcuNDg0ODgyLCA1LjI0NjMyMV0sIFs5OC4zNjkxNjksIDQuMjY4MzddLCBbOTkuMTQyNTU5LCAzLjU5MDM1XSwgWzk5LjY5Mzk5OCwgMy4xNzQzMjldLCBbMTAwLjY0MTQzNCwgMi4wOTkzODFdLCBbMTAxLjY1ODAxMiwgMi4wODM2OTddLCBbMTAyLjQ5ODI3MSwgMS4zOTg3XSwgWzEwMy4wNzY4NCwgMC41NjEzNjFdLCBbMTAzLjgzODM5NiwgMC4xMDQ1NDJdLCBbMTAzLjQzNzY0NSwgLTAuNzExOTQ2XSwgWzEwNC4wMTA3ODksIC0xLjA1OTIxMl0sIFsxMDQuMzY5OTkxLCAtMS4wODQ4NDNdLCBbMTA0LjUzOTQ5LCAtMS43ODIzNzJdLCBbMTA0Ljg4Nzg5MywgLTIuMzQwNDI1XSwgWzEwNS42MjIxMTEsIC0yLjQyODg0NF0sIFsxMDYuMTA4NTkzLCAtMy4wNjE3NzddLCBbMTA1Ljg1NzQ0NiwgLTQuMzA1NTI1XSwgWzEwNS44MTc2NTUsIC01Ljg1MjM1Nl1dXV0sICJ0eXBlIjogIk11bHRpUG9seWdvbiJ9LCAiaWQiOiAiSUROIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJJbmRvbmVzaWEiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzc3LjgzNzQ1MSwgMzUuNDk0MDFdLCBbNzguOTEyMjY5LCAzNC4zMjE5MzZdLCBbNzguODExMDg2LCAzMy41MDYxOThdLCBbNzkuMjA4ODkyLCAzMi45OTQzOTVdLCBbNzkuMTc2MTI5LCAzMi40ODM3OF0sIFs3OC40NTg0NDYsIDMyLjYxODE2NF0sIFs3OC43Mzg4OTQsIDMxLjUxNTkwNl0sIFs3OS43MjEzNjcsIDMwLjg4MjcxNV0sIFs4MS4xMTEyNTYsIDMwLjE4MzQ4MV0sIFs4MC40NzY3MjEsIDI5LjcyOTg2NV0sIFs4MC4wODg0MjUsIDI4Ljc5NDQ3XSwgWzgxLjA1NzIwMywgMjguNDE2MDk1XSwgWzgxLjk5OTk4NywgMjcuOTI1NDc5XSwgWzgzLjMwNDI0OSwgMjcuMzY0NTA2XSwgWzg0LjY3NTAxOCwgMjcuMjM0OTAxXSwgWzg1LjI1MTc3OSwgMjYuNzI2MTk4XSwgWzg2LjAyNDM5MywgMjYuNjMwOTg1XSwgWzg3LjIyNzQ3MiwgMjYuMzk3ODk4XSwgWzg4LjA2MDIzOCwgMjYuNDE0NjE1XSwgWzg4LjE3NDgwNCwgMjYuODEwNDA1XSwgWzg4LjA0MzEzMywgMjcuNDQ1ODE5XSwgWzg4LjEyMDQ0MSwgMjcuODc2NTQyXSwgWzg4LjczMDMyNiwgMjguMDg2ODY1XSwgWzg4LjgxNDI0OCwgMjcuMjk5MzE2XSwgWzg4LjgzNTY0MywgMjcuMDk4OTY2XSwgWzg5Ljc0NDUyOCwgMjYuNzE5NDAzXSwgWzkwLjM3MzI3NSwgMjYuODc1NzI0XSwgWzkxLjIxNzUxMywgMjYuODA4NjQ4XSwgWzkyLjAzMzQ4NCwgMjYuODM4MzFdLCBbOTIuMTAzNzEyLCAyNy40NTI2MTRdLCBbOTEuNjk2NjU3LCAyNy43NzE3NDJdLCBbOTIuNTAzMTE5LCAyNy44OTY4NzZdLCBbOTMuNDEzMzQ4LCAyOC42NDA2MjldLCBbOTQuNTY1OTksIDI5LjI3NzQzOF0sIFs5NS40MDQ4MDIsIDI5LjAzMTcxN10sIFs5Ni4xMTc2NzksIDI5LjQ1MjgwMl0sIFs5Ni41ODY1OTEsIDI4LjgzMDk4XSwgWzk2LjI0ODgzMywgMjguNDExMDMxXSwgWzk3LjMyNzExNCwgMjguMjYxNTgzXSwgWzk3LjQwMjU2MSwgMjcuODgyNTM2XSwgWzk3LjA1MTk4OSwgMjcuNjk5MDU5XSwgWzk3LjEzMzk5OSwgMjcuMDgzNzc0XSwgWzk2LjQxOTM2NiwgMjcuMjY0NTg5XSwgWzk1LjEyNDc2OCwgMjYuNTczNTcyXSwgWzk1LjE1NTE1MywgMjYuMDAxMzA3XSwgWzk0LjYwMzI0OSwgMjUuMTYyNDk1XSwgWzk0LjU1MjY1OCwgMjQuNjc1MjM4XSwgWzk0LjEwNjc0MiwgMjMuODUwNzQxXSwgWzkzLjMyNTE4OCwgMjQuMDc4NTU2XSwgWzkzLjI4NjMyNywgMjMuMDQzNjU4XSwgWzkzLjA2MDI5NCwgMjIuNzAzMTExXSwgWzkzLjE2NjEyOCwgMjIuMjc4NDZdLCBbOTIuNjcyNzIxLCAyMi4wNDEyMzldLCBbOTIuMTQ2MDM1LCAyMy42Mjc0OTldLCBbOTEuODY5OTI4LCAyMy42MjQzNDZdLCBbOTEuNzA2NDc1LCAyMi45ODUyNjRdLCBbOTEuMTU4OTYzLCAyMy41MDM1MjddLCBbOTEuNDY3NzMsIDI0LjA3MjYzOV0sIFs5MS45MTUwOTMsIDI0LjEzMDQxNF0sIFs5Mi4zNzYyMDIsIDI0Ljk3NjY5M10sIFs5MS43OTk1OTYsIDI1LjE0NzQzMl0sIFs5MC44NzIyMTEsIDI1LjEzMjYwMV0sIFs4OS45MjA2OTMsIDI1LjI2OTc1XSwgWzg5LjgzMjQ4MSwgMjUuOTY1MDgyXSwgWzg5LjM1NTA5NCwgMjYuMDE0NDA3XSwgWzg4LjU2MzA0OSwgMjYuNDQ2NTI2XSwgWzg4LjIwOTc4OSwgMjUuNzY4MDY2XSwgWzg4LjkzMTU1NCwgMjUuMjM4NjkyXSwgWzg4LjMwNjM3MywgMjQuODY2MDc5XSwgWzg4LjA4NDQyMiwgMjQuNTAxNjU3XSwgWzg4LjY5OTk0LCAyNC4yMzM3MTVdLCBbODguNTI5NzcsIDIzLjYzMTE0Ml0sIFs4OC44NzYzMTIsIDIyLjg3OTE0Nl0sIFs4OS4wMzE5NjEsIDIyLjA1NTcwOF0sIFs4OC44ODg3NjYsIDIxLjY5MDU4OF0sIFs4OC4yMDg0OTcsIDIxLjcwMzE3Ml0sIFs4Ni45NzU3MDQsIDIxLjQ5NTU2Ml0sIFs4Ny4wMzMxNjksIDIwLjc0MzMwOF0sIFs4Ni40OTkzNTEsIDIwLjE1MTYzOF0sIFs4NS4wNjAyNjYsIDE5LjQ3ODU3OV0sIFs4My45NDEwMDYsIDE4LjMwMjAxXSwgWzgzLjE4OTIxNywgMTcuNjcxMjIxXSwgWzgyLjE5Mjc5MiwgMTcuMDE2NjM2XSwgWzgyLjE5MTI0MiwgMTYuNTU2NjY0XSwgWzgxLjY5MjcxOSwgMTYuMzEwMjE5XSwgWzgwLjc5MTk5OSwgMTUuOTUxOTcyXSwgWzgwLjMyNDg5NiwgMTUuODk5MTg1XSwgWzgwLjAyNTA2OSwgMTUuMTM2NDE1XSwgWzgwLjIzMzI3NCwgMTMuODM1NzcxXSwgWzgwLjI4NjI5NCwgMTMuMDA2MjYxXSwgWzc5Ljg2MjU0NywgMTIuMDU2MjE1XSwgWzc5Ljg1Nzk5OSwgMTAuMzU3Mjc1XSwgWzc5LjM0MDUxMiwgMTAuMzA4ODU0XSwgWzc4Ljg4NTM0NSwgOS41NDYxMzZdLCBbNzkuMTg5NzIsIDkuMjE2NTQ0XSwgWzc4LjI3Nzk0MSwgOC45MzMwNDddLCBbNzcuOTQxMTY1LCA4LjI1Mjk1OV0sIFs3Ny41Mzk4OTgsIDcuOTY1NTM1XSwgWzc2LjU5Mjk3OSwgOC44OTkyNzZdLCBbNzYuMTMwMDYxLCAxMC4yOTk2M10sIFs3NS43NDY0NjcsIDExLjMwODI1MV0sIFs3NS4zOTYxMDEsIDExLjc4MTI0NV0sIFs3NC44NjQ4MTYsIDEyLjc0MTkzNl0sIFs3NC42MTY3MTcsIDEzLjk5MjU4M10sIFs3NC40NDM4NTksIDE0LjYxNzIyMl0sIFs3My41MzQxOTksIDE1Ljk5MDY1Ml0sIFs3My4xMTk5MDksIDE3LjkyODU3XSwgWzcyLjgyMDkwOSwgMTkuMjA4MjM0XSwgWzcyLjgyNDQ3NSwgMjAuNDE5NTAzXSwgWzcyLjYzMDUzMywgMjEuMzU2MDA5XSwgWzcxLjE3NTI3MywgMjAuNzU3NDQxXSwgWzcwLjQ3MDQ1OSwgMjAuODc3MzMxXSwgWzY5LjE2NDEzLCAyMi4wODkyOThdLCBbNjkuNjQ0OTI4LCAyMi40NTA3NzVdLCBbNjkuMzQ5NTk3LCAyMi44NDMxOF0sIFs2OC4xNzY2NDUsIDIzLjY5MTk2NV0sIFs2OC44NDI1OTksIDI0LjM1OTEzNF0sIFs3MS4wNDMyNCwgMjQuMzU2NTI0XSwgWzcwLjg0NDY5OSwgMjUuMjE1MTAyXSwgWzcwLjI4Mjg3MywgMjUuNzIyMjI5XSwgWzcwLjE2ODkyNywgMjYuNDkxODcyXSwgWzY5LjUxNDM5MywgMjYuOTQwOTY2XSwgWzcwLjYxNjQ5NiwgMjcuOTg5MTk2XSwgWzcxLjc3NzY2NiwgMjcuOTEzMThdLCBbNzIuODIzNzUyLCAyOC45NjE1OTJdLCBbNzMuNDUwNjM4LCAyOS45NzY0MTNdLCBbNzQuNDIxMzgsIDMwLjk3OTgxNV0sIFs3NC40MDU5MjksIDMxLjY5MjYzOV0sIFs3NS4yNTg2NDIsIDMyLjI3MTEwNV0sIFs3NC40NTE1NTksIDMyLjc2NDldLCBbNzQuMTA0Mjk0LCAzMy40NDE0NzNdLCBbNzMuNzQ5OTQ4LCAzNC4zMTc2OTldLCBbNzQuMjQwMjAzLCAzNC43NDg4ODddLCBbNzUuNzU3MDYxLCAzNC41MDQ5MjNdLCBbNzYuODcxNzIyLCAzNC42NTM1NDRdLCBbNzcuODM3NDUxLCAzNS40OTQwMV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiSU5EIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJJbmRpYSIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNiMTAwMjYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbLTYuMTk3ODg1LCA1My44Njc1NjVdLCBbLTYuMDMyOTg1LCA1My4xNTMxNjRdLCBbLTYuNzg4ODU3LCA1Mi4yNjAxMThdLCBbLTguNTYxNjE3LCA1MS42NjkzMDFdLCBbLTkuOTc3MDg2LCA1MS44MjA0NTVdLCBbLTkuMTY2MjgzLCA1Mi44NjQ2MjldLCBbLTkuNjg4NTI1LCA1My44ODEzNjNdLCBbLTguMzI3OTg3LCA1NC42NjQ1MTldLCBbLTcuNTcyMTY4LCA1NS4xMzE2MjJdLCBbLTcuMzY2MDMxLCA1NC41OTU4NDFdLCBbLTcuNTcyMTY4LCA1NC4wNTk5NTZdLCBbLTYuOTUzNzMsIDU0LjA3MzcwMl0sIFstNi4xOTc4ODUsIDUzLjg2NzU2NV1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiSVJMIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJJcmVsYW5kIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s1My45MjE1OTgsIDM3LjE5ODkxOF0sIFs1NC44MDAzMDQsIDM3LjM5MjQyMV0sIFs1NS41MTE1NzgsIDM3Ljk2NDExN10sIFs1Ni4xODAzNzUsIDM3LjkzNTEyN10sIFs1Ni42MTkzNjYsIDM4LjEyMTM5NF0sIFs1Ny4zMzA0MzQsIDM4LjAyOTIyOV0sIFs1OC40MzYxNTQsIDM3LjUyMjMwOV0sIFs1OS4yMzQ3NjIsIDM3LjQxMjk4OF0sIFs2MC4zNzc2MzgsIDM2LjUyNzM4M10sIFs2MS4xMjMwNzEsIDM2LjQ5MTU5N10sIFs2MS4yMTA4MTcsIDM1LjY1MDA3Ml0sIFs2MC44MDMxOTMsIDM0LjQwNDEwMl0sIFs2MC41Mjg0MywgMzMuNjc2NDQ2XSwgWzYwLjk2MzcsIDMzLjUyODgzMl0sIFs2MC41MzYwNzgsIDMyLjk4MTI2OV0sIFs2MC44NjM2NTUsIDMyLjE4MjkyXSwgWzYwLjk0MTk0NSwgMzEuNTQ4MDc1XSwgWzYxLjY5OTMxNCwgMzEuMzc5NTA2XSwgWzYxLjc4MTIyMiwgMzAuNzM1ODVdLCBbNjAuODc0MjQ4LCAyOS44MjkyMzldLCBbNjEuMzY5MzA5LCAyOS4zMDMyNzZdLCBbNjEuNzcxODY4LCAyOC42OTkzMzRdLCBbNjIuNzI3ODMsIDI4LjI1OTY0NV0sIFs2Mi43NTU0MjYsIDI3LjM3ODkyM10sIFs2My4yMzM4OTgsIDI3LjIxNzA0N10sIFs2My4zMTY2MzIsIDI2Ljc1NjUzMl0sIFs2MS44NzQxODcsIDI2LjIzOTk3NV0sIFs2MS40OTczNjMsIDI1LjA3ODIzN10sIFs1OS42MTYxMzQsIDI1LjM4MDE1N10sIFs1OC41MjU3NjEsIDI1LjYwOTk2Ml0sIFs1Ny4zOTcyNTEsIDI1LjczOTkwMl0sIFs1Ni45NzA3NjYsIDI2Ljk2NjEwNl0sIFs1Ni40OTIxMzksIDI3LjE0MzMwNV0sIFs1NS43MjM3MSwgMjYuOTY0NjMzXSwgWzU0LjcxNTA5LCAyNi40ODA2NThdLCBbNTMuNDkzMDk3LCAyNi44MTIzNjldLCBbNTIuNDgzNTk4LCAyNy41ODA4NDldLCBbNTEuNTIwNzYzLCAyNy44NjU2OV0sIFs1MC44NTI5NDgsIDI4LjgxNDUyMV0sIFs1MC4xMTUwMDksIDMwLjE0Nzc3M10sIFs0OS41NzY4NSwgMjkuOTg1NzE1XSwgWzQ4Ljk0MTMzMywgMzAuMzE3MDldLCBbNDguNTY3OTcxLCAyOS45MjY3NzhdLCBbNDguMDE0NTY4LCAzMC40NTI0NTddLCBbNDguMDA0Njk4LCAzMC45ODUxMzddLCBbNDcuNjg1Mjg2LCAzMC45ODQ4NTNdLCBbNDcuODQ5MjA0LCAzMS43MDkxNzZdLCBbNDcuMzM0NjYxLCAzMi40NjkxNTVdLCBbNDYuMTA5MzYyLCAzMy4wMTcyODddLCBbNDUuNDE2NjkxLCAzMy45Njc3OThdLCBbNDUuNjQ4NDYsIDM0Ljc0ODEzOF0sIFs0Ni4xNTE3ODgsIDM1LjA5MzI1OV0sIFs0Ni4wNzYzNCwgMzUuNjc3MzgzXSwgWzQ1LjQyMDYxOCwgMzUuOTc3NTQ2XSwgWzQ0Ljc3MjY3LCAzNy4xNzA0NV0sIFs0NC4yMjU3NTYsIDM3Ljk3MTU4NF0sIFs0NC40MjE0MDMsIDM4LjI4MTI4MV0sIFs0NC4xMDkyMjUsIDM5LjQyODEzNl0sIFs0NC43OTM5OSwgMzkuNzEzMDAzXSwgWzQ0Ljk1MjY4OCwgMzkuMzM1NzY1XSwgWzQ1LjQ1NzcyMiwgMzguODc0MTM5XSwgWzQ2LjE0MzYyMywgMzguNzQxMjAxXSwgWzQ2LjUwNTcyLCAzOC43NzA2MDVdLCBbNDcuNjg1MDc5LCAzOS41MDgzNjRdLCBbNDguMDYwMDk1LCAzOS41ODIyMzVdLCBbNDguMzU1NTI5LCAzOS4yODg3NjVdLCBbNDguMDEwNzQ0LCAzOC43OTQwMTVdLCBbNDguNjM0Mzc1LCAzOC4yNzAzNzhdLCBbNDguODgzMjQ5LCAzOC4zMjAyNDVdLCBbNDkuMTk5NjEyLCAzNy41ODI4NzRdLCBbNTAuMTQ3NzcxLCAzNy4zNzQ1NjddLCBbNTAuODQyMzU0LCAzNi44NzI4MTRdLCBbNTIuMjY0MDI1LCAzNi43MDA0MjJdLCBbNTMuODI1NzksIDM2Ljk2NTAzMV0sIFs1My45MjE1OTgsIDM3LjE5ODkxOF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiSVJOIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJJcmFuIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZmZmZiMiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s0NS40MjA2MTgsIDM1Ljk3NzU0Nl0sIFs0Ni4wNzYzNCwgMzUuNjc3MzgzXSwgWzQ2LjE1MTc4OCwgMzUuMDkzMjU5XSwgWzQ1LjY0ODQ2LCAzNC43NDgxMzhdLCBbNDUuNDE2NjkxLCAzMy45Njc3OThdLCBbNDYuMTA5MzYyLCAzMy4wMTcyODddLCBbNDcuMzM0NjYxLCAzMi40NjkxNTVdLCBbNDcuODQ5MjA0LCAzMS43MDkxNzZdLCBbNDcuNjg1Mjg2LCAzMC45ODQ4NTNdLCBbNDguMDA0Njk4LCAzMC45ODUxMzddLCBbNDguMDE0NTY4LCAzMC40NTI0NTddLCBbNDguNTY3OTcxLCAyOS45MjY3NzhdLCBbNDcuOTc0NTE5LCAyOS45NzU4MTldLCBbNDcuMzAyNjIyLCAzMC4wNTkwN10sIFs0Ni41Njg3MTMsIDI5LjA5OTAyNV0sIFs0NC43MDk0OTksIDI5LjE3ODg5MV0sIFs0MS44ODk5ODEsIDMxLjE5MDAwOV0sIFs0MC4zOTk5OTQsIDMxLjg4OTk5Ml0sIFszOS4xOTU0NjgsIDMyLjE2MTAwOV0sIFszOC43OTIzNDEsIDMzLjM3ODY4Nl0sIFs0MS4wMDYxNTksIDM0LjQxOTM3Ml0sIFs0MS4zODM5NjUsIDM1LjYyODMxN10sIFs0MS4yODk3MDcsIDM2LjM1ODgxNV0sIFs0MS44MzcwNjQsIDM2LjYwNTg1NF0sIFs0Mi4zNDk1OTEsIDM3LjIyOTg3M10sIFs0Mi43NzkxMjYsIDM3LjM4NTI2NF0sIFs0My45NDIyNTksIDM3LjI1NjIyOF0sIFs0NC4yOTM0NTIsIDM3LjAwMTUxNF0sIFs0NC43NzI2OTksIDM3LjE3MDQ0NV0sIFs0NS40MjA2MTgsIDM1Ljk3NzU0Nl1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiSVJRIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJJcmFxIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stMTQuNTA4Njk1LCA2Ni40NTU4OTJdLCBbLTE0LjczOTYzNywgNjUuODA4NzQ4XSwgWy0xMy42MDk3MzIsIDY1LjEyNjY3MV0sIFstMTQuOTA5ODM0LCA2NC4zNjQwODJdLCBbLTE3Ljc5NDQzOCwgNjMuNjc4NzQ5XSwgWy0xOC42NTYyNDYsIDYzLjQ5NjM4M10sIFstMTkuOTcyNzU1LCA2My42NDM2MzVdLCBbLTIyLjc2Mjk3MiwgNjMuOTYwMTc5XSwgWy0yMS43Nzg0ODQsIDY0LjQwMjExNl0sIFstMjMuOTU1MDQ0LCA2NC44OTExM10sIFstMjIuMTg0NDAzLCA2NS4wODQ5NjhdLCBbLTIyLjIyNzQyMywgNjUuMzc4NTk0XSwgWy0yNC4zMjYxODQsIDY1LjYxMTE4OV0sIFstMjMuNjUwNTE1LCA2Ni4yNjI1MTldLCBbLTIyLjEzNDkyMiwgNjYuNDEwNDY5XSwgWy0yMC41NzYyODQsIDY1LjczMjExMl0sIFstMTkuMDU2ODQyLCA2Ni4yNzY2MDFdLCBbLTE3Ljc5ODYyNCwgNjUuOTkzODUzXSwgWy0xNi4xNjc4MTksIDY2LjUyNjc5Ml0sIFstMTQuNTA4Njk1LCA2Ni40NTU4OTJdXV0sICJ0eXBlIjogIlBvbHlnb24ifSwgImlkIjogIklTTCIsICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7fSwgIm5hbWUiOiAiSWNlbGFuZCIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbMzUuNzE5OTE4LCAzMi43MDkxOTJdLCBbMzUuNTQ1NjY1LCAzMi4zOTM5OTJdLCBbMzUuMTgzOTMsIDMyLjUzMjUxMV0sIFszNC45NzQ2NDEsIDMxLjg2NjU4Ml0sIFszNS4yMjU4OTIsIDMxLjc1NDM0MV0sIFszNC45NzA1MDcsIDMxLjYxNjc3OF0sIFszNC45Mjc0MDgsIDMxLjM1MzQzNV0sIFszNS4zOTc1NjEsIDMxLjQ4OTA4Nl0sIFszNS40MjA5MTgsIDMxLjEwMDA2Nl0sIFszNC45MjI2MDMsIDI5LjUwMTMyNl0sIFszNC4yNjU0MzMsIDMxLjIxOTM2MV0sIFszNC41NTYzNzIsIDMxLjU0ODgyNF0sIFszNC40ODgxMDcsIDMxLjYwNTUzOV0sIFszNC43NTI1ODcsIDMyLjA3MjkyNl0sIFszNC45NTU0MTcsIDMyLjgyNzM3Nl0sIFszNS4wOTg0NTcsIDMzLjA4MDUzOV0sIFszNS4xMjYwNTMsIDMzLjA5MDldLCBbMzUuNDYwNzA5LCAzMy4wODkwNF0sIFszNS41NTI3OTcsIDMzLjI2NDI3NV0sIFszNS44MjExMDEsIDMzLjI3NzQyNl0sIFszNS44MzYzOTcsIDMyLjg2ODEyM10sIFszNS43MDA3OTgsIDMyLjcxNjAxNF0sIFszNS43MTk5MTgsIDMyLjcwOTE5Ml1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiSVNSIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJJc3JhZWwiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbW1sxNS41MjAzNzYsIDM4LjIzMTE1NV0sIFsxNS4xNjAyNDMsIDM3LjQ0NDA0Nl0sIFsxNS4zMDk4OTgsIDM3LjEzNDIxOV0sIFsxNS4wOTk5ODgsIDM2LjYxOTk4N10sIFsxNC4zMzUyMjksIDM2Ljk5NjYzMV0sIFsxMy44MjY3MzMsIDM3LjEwNDUzMV0sIFsxMi40MzEwMDQsIDM3LjYxMjk1XSwgWzEyLjU3MDk0NCwgMzguMTI2MzgxXSwgWzEzLjc0MTE1NiwgMzguMDM0OTY2XSwgWzE0Ljc2MTI0OSwgMzguMTQzODc0XSwgWzE1LjUyMDM3NiwgMzguMjMxMTU1XV1dLCBbW1s5LjIxMDAxMiwgNDEuMjA5OTkxXSwgWzkuODA5OTc1LCA0MC41MDAwMDldLCBbOS42Njk1MTksIDM5LjE3NzM3Nl0sIFs5LjIxNDgxOCwgMzkuMjQwNDczXSwgWzguODA2OTM2LCAzOC45MDY2MThdLCBbOC40MjgzMDIsIDM5LjE3MTg0N10sIFs4LjM4ODI1MywgNDAuMzc4MzExXSwgWzguMTU5OTk4LCA0MC45NTAwMDddLCBbOC43MDk5OTEsIDQwLjg5OTk4NF0sIFs5LjIxMDAxMiwgNDEuMjA5OTkxXV1dLCBbW1sxMi4zNzY0ODUsIDQ2Ljc2NzU1OV0sIFsxMy44MDY0NzUsIDQ2LjUwOTMwNl0sIFsxMy42OTgxMSwgNDYuMDE2Nzc4XSwgWzEzLjkzNzYzLCA0NS41OTEwMTZdLCBbMTMuMTQxNjA2LCA0NS43MzY2OTJdLCBbMTIuMzI4NTgxLCA0NS4zODE3NzhdLCBbMTIuMzgzODc1LCA0NC44ODUzNzRdLCBbMTIuMjYxNDUzLCA0NC42MDA0ODJdLCBbMTIuNTg5MjM3LCA0NC4wOTEzNjZdLCBbMTMuNTI2OTA2LCA0My41ODc3MjddLCBbMTQuMDI5ODIxLCA0Mi43NjEwMDhdLCBbMTUuMTQyNTcsIDQxLjk1NTE0XSwgWzE1LjkyNjE5MSwgNDEuOTYxMzE1XSwgWzE2LjE2OTg5NywgNDEuNzQwMjk1XSwgWzE1Ljg4OTM0NiwgNDEuNTQxMDgyXSwgWzE2Ljc4NTAwMiwgNDEuMTc5NjA2XSwgWzE3LjUxOTE2OSwgNDAuODc3MTQzXSwgWzE4LjM3NjY4NywgNDAuMzU1NjI1XSwgWzE4LjQ4MDI0NywgNDAuMTY4ODY2XSwgWzE4LjI5MzM4NSwgMzkuODEwNzc0XSwgWzE3LjczODM4LCA0MC4yNzc2NzFdLCBbMTYuODY5NTk2LCA0MC40NDIyMzVdLCBbMTYuNDQ4NzQzLCAzOS43OTU0MDFdLCBbMTcuMTcxNDksIDM5LjQyNDddLCBbMTcuMDUyODQxLCAzOC45MDI4NzFdLCBbMTYuNjM1MDg4LCAzOC44NDM1NzJdLCBbMTYuMTAwOTYxLCAzNy45ODU4OTldLCBbMTUuNjg0MDg3LCAzNy45MDg4NDldLCBbMTUuNjg3OTYzLCAzOC4yMTQ1OTNdLCBbMTUuODkxOTgxLCAzOC43NTA5NDJdLCBbMTYuMTA5MzMyLCAzOC45NjQ1NDddLCBbMTUuNzE4ODE0LCAzOS41NDQwNzJdLCBbMTUuNDEzNjEzLCA0MC4wNDgzNTddLCBbMTQuOTk4NDk2LCA0MC4xNzI5NDldLCBbMTQuNzAzMjY4LCA0MC42MDQ1NV0sIFsxNC4wNjA2NzIsIDQwLjc4NjM0OF0sIFsxMy42Mjc5ODUsIDQxLjE4ODI4N10sIFsxMi44ODgwODIsIDQxLjI1MzA5XSwgWzEyLjEwNjY4MywgNDEuNzA0NTM1XSwgWzExLjE5MTkwNiwgNDIuMzU1NDI1XSwgWzEwLjUxMTk0OCwgNDIuOTMxNDYzXSwgWzEwLjIwMDAyOSwgNDMuOTIwMDA3XSwgWzkuNzAyNDg4LCA0NC4wMzYyNzldLCBbOC44ODg5NDYsIDQ0LjM2NjMzNl0sIFs4LjQyODU2MSwgNDQuMjMxMjI4XSwgWzcuODUwNzY3LCA0My43NjcxNDhdLCBbNy40MzUxODUsIDQzLjY5Mzg0NV0sIFs3LjU0OTU5NiwgNDQuMTI3OTAxXSwgWzcuMDA3NTYyLCA0NC4yNTQ3NjddLCBbNi43NDk5NTUsIDQ1LjAyODUxOF0sIFs3LjA5NjY1MiwgNDUuMzMzMDk5XSwgWzYuODAyMzU1LCA0NS43MDg1OF0sIFs2Ljg0MzU5MywgNDUuOTkxMTQ3XSwgWzcuMjczODUxLCA0NS43NzY5NDhdLCBbNy43NTU5OTIsIDQ1LjgyNDQ5XSwgWzguMzE2NjMsIDQ2LjE2MzY0Ml0sIFs4LjQ4OTk1MiwgNDYuMDA1MTUxXSwgWzguOTY2MzA2LCA0Ni4wMzY5MzJdLCBbOS4xODI4ODIsIDQ2LjQ0MDIxNV0sIFs5LjkyMjgzNywgNDYuMzE0ODk5XSwgWzEwLjM2MzM3OCwgNDYuNDgzNTcxXSwgWzEwLjQ0MjcwMSwgNDYuODkzNTQ2XSwgWzExLjA0ODU1NiwgNDYuNzUxMzU5XSwgWzExLjE2NDgyOCwgNDYuOTQxNTc5XSwgWzEyLjE1MzA4OCwgNDcuMTE1MzkzXSwgWzEyLjM3NjQ4NSwgNDYuNzY3NTU5XV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJJVEEiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkl0YWx5IiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1stNzcuNTY5NjAxLCAxOC40OTA1MjVdLCBbLTc2Ljg5NjYxOSwgMTguNDAwODY3XSwgWy03Ni4zNjUzNTksIDE4LjE2MDcwMV0sIFstNzYuMTk5NjU5LCAxNy44ODY4NjddLCBbLTc2LjkwMjU2MSwgMTcuODY4MjM4XSwgWy03Ny4yMDYzNDEsIDE3LjcwMTExNl0sIFstNzcuNzY2MDIzLCAxNy44NjE1OTddLCBbLTc4LjMzNzcxOSwgMTguMjI1OTY4XSwgWy03OC4yMTc3MjcsIDE4LjQ1NDUzM10sIFstNzcuNzk3MzY1LCAxOC41MjQyMThdLCBbLTc3LjU2OTYwMSwgMTguNDkwNTI1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJKQU0iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkphbWFpY2EiLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzM1LjU0NTY2NSwgMzIuMzkzOTkyXSwgWzM1LjcxOTkxOCwgMzIuNzA5MTkyXSwgWzM2LjgzNDA2MiwgMzIuMzEyOTM4XSwgWzM4Ljc5MjM0MSwgMzMuMzc4Njg2XSwgWzM5LjE5NTQ2OCwgMzIuMTYxMDA5XSwgWzM5LjAwNDg4NiwgMzIuMDEwMjE3XSwgWzM3LjAwMjE2NiwgMzEuNTA4NDEzXSwgWzM3Ljk5ODg0OSwgMzAuNTA4NV0sIFszNy42NjgxMiwgMzAuMzM4NjY1XSwgWzM3LjUwMzU4MiwgMzAuMDAzNzc2XSwgWzM2Ljc0MDUyOCwgMjkuODY1MjgzXSwgWzM2LjUwMTIxNCwgMjkuNTA1MjU0XSwgWzM2LjA2ODk0MSwgMjkuMTk3NDk1XSwgWzM0Ljk1NjAzNywgMjkuMzU2NTU1XSwgWzM0LjkyMjYwMywgMjkuNTAxMzI2XSwgWzM1LjQyMDkxOCwgMzEuMTAwMDY2XSwgWzM1LjM5NzU2MSwgMzEuNDg5MDg2XSwgWzM1LjU0NTI1MiwgMzEuNzgyNTA1XSwgWzM1LjU0NTY2NSwgMzIuMzkzOTkyXV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJKT1IiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkpvcmRhbiIsICJzdHlsZSI6IHsiY29sb3IiOiAiYmxhY2siLCAiZmlsbENvbG9yIjogIiNmZWQ5NzYiLCAiZmlsbE9wYWNpdHkiOiAwLjcsICJvcGFjaXR5IjogMC4yLCAid2VpZ2h0IjogMX19LCAidHlwZSI6ICJGZWF0dXJlIn0sIHsiZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1tbWzEzNC42Mzg0MjgsIDM0LjE0OTIzNF0sIFsxMzQuNzY2Mzc5LCAzMy44MDYzMzVdLCBbMTM0LjIwMzQxNiwgMzMuMjAxMTc4XSwgWzEzMy43OTI5NSwgMzMuNTIxOTg1XSwgWzEzMy4yODAyNjgsIDMzLjI4OTU3XSwgWzEzMy4wMTQ4NTgsIDMyLjcwNDU2N10sIFsxMzIuMzYzMTE1LCAzMi45ODkzODJdLCBbMTMyLjM3MTE3NiwgMzMuNDYzNjQyXSwgWzEzMi45MjQzNzMsIDM0LjA2MDI5OV0sIFsxMzMuNDkyOTY4LCAzMy45NDQ2MjFdLCBbMTMzLjkwNDEwNiwgMzQuMzY0OTMxXSwgWzEzNC42Mzg0MjgsIDM0LjE0OTIzNF1dXSwgW1tbMTQwLjk3NjM4OCwgMzcuMTQyMDc0XSwgWzE0MC41OTk3NywgMzYuMzQzOTgzXSwgWzE0MC43NzQwNzQsIDM1Ljg0Mjg3N10sIFsxNDAuMjUzMjc5LCAzNS4xMzgxMTRdLCBbMTM4Ljk3NTUyOCwgMzQuNjY3Nl0sIFsxMzcuMjE3NTk5LCAzNC42MDYyODZdLCBbMTM1Ljc5Mjk4MywgMzMuNDY0ODA1XSwgWzEzNS4xMjA5ODMsIDMzLjg0OTA3MV0sIFsxMzUuMDc5NDM1LCAzNC41OTY1NDVdLCBbMTMzLjM0MDMxNiwgMzQuMzc1OTM4XSwgWzEzMi4xNTY3NzEsIDMzLjkwNDkzM10sIFsxMzAuOTg2MTQ1LCAzMy44ODU3NjFdLCBbMTMyLjAwMDAzNiwgMzMuMTQ5OTkyXSwgWzEzMS4zMzI3OSwgMzEuNDUwMzU1XSwgWzEzMC42ODYzMTgsIDMxLjAyOTU3OV0sIFsxMzAuMjAyNDIsIDMxLjQxODIzOF0sIFsxMzAuNDQ3Njc2LCAzMi4zMTk0NzVdLCBbMTI5LjgxNDY5MiwgMzIuNjEwMzFdLCBbMTI5LjQwODQ2MywgMzMuMjk2MDU2XSwgWzEzMC4zNTM5MzUsIDMzLjYwNDE1MV0sIFsxMzAuODc4NDUxLCAzNC4yMzI3NDNdLCBbMTMxLjg4NDIyOSwgMzQuNzQ5NzE0XSwgWzEzMi42MTc2NzMsIDM1LjQzMzM5M10sIFsxMzQuNjA4MzAxLCAzNS43MzE2MThdLCBbMTM1LjY3NzUzOCwgMzUuNTI3MTM0XSwgWzEzNi43MjM4MzEsIDM3LjMwNDk4NF0sIFsxMzcuMzkwNjEyLCAzNi44MjczOTFdLCBbMTM4Ljg1NzYwMiwgMzcuODI3NDg1XSwgWzEzOS40MjY0MDUsIDM4LjIxNTk2Ml0sIFsxNDAuMDU0NzksIDM5LjQzODgwN10sIFsxMzkuODgzMzc5LCA0MC41NjMzMTJdLCBbMTQwLjMwNTc4MywgNDEuMTk1MDA1XSwgWzE0MS4zNjg5NzMsIDQxLjM3ODU2XSwgWzE0MS45MTQyNjMsIDM5Ljk5MTYxNl0sIFsxNDEuODg0NjAxLCAzOS4xODA4NjVdLCBbMTQwLjk1OTQ4OSwgMzguMTc0MDAxXSwgWzE0MC45NzYzODgsIDM3LjE0MjA3NF1dXSwgW1tbMTQzLjkxMDE2MiwgNDQuMTc0MV0sIFsxNDQuNjEzNDI3LCA0My45NjA4ODNdLCBbMTQ1LjMyMDgyNSwgNDQuMzg0NzMzXSwgWzE0NS41NDMxMzcsIDQzLjI2MjA4OF0sIFsxNDQuMDU5NjYyLCA0Mi45ODgzNThdLCBbMTQzLjE4Mzg1LCA0MS45OTUyMTVdLCBbMTQxLjYxMTQ5MSwgNDIuNjc4NzkxXSwgWzE0MS4wNjcyODYsIDQxLjU4NDU5NF0sIFsxMzkuOTU1MTA2LCA0MS41Njk1NTZdLCBbMTM5LjgxNzU0NCwgNDIuNTYzNzU5XSwgWzE0MC4zMTIwODcsIDQzLjMzMzI3M10sIFsxNDEuMzgwNTQ5LCA0My4zODg4MjVdLCBbMTQxLjY3MTk1MiwgNDQuNzcyMTI1XSwgWzE0MS45Njc2NDUsIDQ1LjU1MTQ4M10sIFsxNDMuMTQyODcsIDQ0LjUxMDM1OF0sIFsxNDMuOTEwMTYyLCA0NC4xNzQxXV1dXSwgInR5cGUiOiAiTXVsdGlQb2x5Z29uIn0sICJpZCI6ICJKUE4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkphcGFuIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s3MC45NjIzMTUsIDQyLjI2NjE1NF0sIFs3MC4zODg5NjUsIDQyLjA4MTMwOF0sIFs2OS4wNzAwMjcsIDQxLjM4NDI0NF0sIFs2OC42MzI0ODMsIDQwLjY2ODY4MV0sIFs2OC4yNTk4OTYsIDQwLjY2MjMyNV0sIFs2Ny45ODU4NTYsIDQxLjEzNTk5MV0sIFs2Ni43MTQwNDcsIDQxLjE2ODQ0NF0sIFs2Ni41MTA2NDksIDQxLjk4NzY0NF0sIFs2Ni4wMjMzOTIsIDQxLjk5NDY0Nl0sIFs2Ni4wOTgwMTIsIDQyLjk5NzY2XSwgWzY0LjkwMDgyNCwgNDMuNzI4MDgxXSwgWzYzLjE4NTc4NywgNDMuNjUwMDc1XSwgWzYyLjAxMzMsIDQzLjUwNDQ3N10sIFs2MS4wNTgzMiwgNDQuNDA1ODE3XSwgWzYwLjIzOTk3MiwgNDQuNzg0MDM3XSwgWzU4LjY4OTk4OSwgNDUuNTAwMDE0XSwgWzU4LjUwMzEyNywgNDUuNTg2ODA0XSwgWzU1LjkyODkxNywgNDQuOTk1ODU4XSwgWzU1Ljk2ODE5MSwgNDEuMzA4NjQyXSwgWzU1LjQ1NTI1MSwgNDEuMjU5ODU5XSwgWzU0Ljc1NTM0NSwgNDIuMDQzOTcxXSwgWzU0LjA3OTQxOCwgNDIuMzI0MTA5XSwgWzUyLjk0NDI5MywgNDIuMTE2MDM0XSwgWzUyLjUwMjQ2LCA0MS43ODMzMTZdLCBbNTIuNDQ2MzM5LCA0Mi4wMjcxNTFdLCBbNTIuNjkyMTEyLCA0Mi40NDM4OTVdLCBbNTIuNTAxNDI2LCA0Mi43OTIyOThdLCBbNTEuMzQyNDI3LCA0My4xMzI5NzVdLCBbNTAuODkxMjkyLCA0NC4wMzEwMzRdLCBbNTAuMzM5MTI5LCA0NC4yODQwMTZdLCBbNTAuMzA1NjQzLCA0NC42MDk4MzZdLCBbNTEuMjc4NTAzLCA0NC41MTQ4NTRdLCBbNTEuMzE2ODk5LCA0NS4yNDU5OThdLCBbNTIuMTY3MzksIDQ1LjQwODM5MV0sIFs1My4wNDA4NzYsIDQ1LjI1OTA0N10sIFs1My4yMjA4NjYsIDQ2LjIzNDY0Nl0sIFs1My4wNDI3MzcsIDQ2Ljg1MzAwNl0sIFs1Mi4wNDIwMjMsIDQ2LjgwNDYzN10sIFs1MS4xOTE5NDUsIDQ3LjA0ODcwNV0sIFs1MC4wMzQwODMsIDQ2LjYwODk5XSwgWzQ5LjEwMTE2LCA0Ni4zOTkzM10sIFs0OC41OTMyNDEsIDQ2LjU2MTAzNF0sIFs0OC42OTQ3MzQsIDQ3LjA3NTYyOF0sIFs0OC4wNTcyNTMsIDQ3Ljc0Mzc1M10sIFs0Ny4zMTUyMzEsIDQ3LjcxNTg0N10sIFs0Ni40NjY0NDYsIDQ4LjM5NDE1Ml0sIFs0Ny4wNDM2NzIsIDQ5LjE1MjAzOV0sIFs0Ni43NTE1OTYsIDQ5LjM1NjAwNl0sIFs0Ny41NDk0OCwgNTAuNDU0Njk4XSwgWzQ4LjU3Nzg0MSwgNDkuODc0NzZdLCBbNDguNzAyMzgyLCA1MC42MDUxMjhdLCBbNTAuNzY2NjQ4LCA1MS42OTI3NjJdLCBbNTIuMzI4NzI0LCA1MS43MTg2NTJdLCBbNTQuNTMyODc4LCA1MS4wMjYyNF0sIFs1NS43MTY5NDEsIDUwLjYyMTcxN10sIFs1Ni43Nzc5NjEsIDUxLjA0MzU1MV0sIFs1OC4zNjMyOTEsIDUxLjA2MzY1M10sIFs1OS42NDIyODIsIDUwLjU0NTQ0Ml0sIFs1OS45MzI4MDcsIDUwLjg0MjE5NF0sIFs2MS4zMzc0MjQsIDUwLjc5OTA3XSwgWzYxLjU4ODAwMywgNTEuMjcyNjU5XSwgWzU5Ljk2NzUzNCwgNTEuOTYwNDJdLCBbNjAuOTI3MjY5LCA1Mi40NDc1NDhdLCBbNjAuNzM5OTkzLCA1Mi43MTk5ODZdLCBbNjEuNjk5OTg2LCA1Mi45Nzk5OTZdLCBbNjAuOTc4MDY2LCA1My42NjQ5OTNdLCBbNjEuNDM2NTkxLCA1NC4wMDYyNjVdLCBbNjUuMTc4NTM0LCA1NC4zNTQyMjhdLCBbNjUuNjY2ODc2LCA1NC42MDEyNjddLCBbNjguMTY5MSwgNTQuOTcwMzkyXSwgWzY5LjA2ODE2NywgNTUuMzg1MjVdLCBbNzAuODY1MjY3LCA1NS4xNjk3MzRdLCBbNzEuMTgwMTMxLCA1NC4xMzMyODVdLCBbNzIuMjI0MTUsIDU0LjM3NjY1NV0sIFs3My41MDg1MTYsIDU0LjAzNTYxN10sIFs3My40MjU2NzksIDUzLjQ4OTgxXSwgWzc0LjM4NDg0NSwgNTMuNTQ2ODYxXSwgWzc2Ljg5MTEsIDU0LjQ5MDUyNF0sIFs3Ni41MjUxNzksIDU0LjE3NzAwM10sIFs3Ny44MDA5MTYsIDUzLjQwNDQxNV0sIFs4MC4wMzU1NiwgNTAuODY0NzUxXSwgWzgwLjU2ODQ0NywgNTEuMzg4MzM2XSwgWzgxLjk0NTk4NiwgNTAuODEyMTk2XSwgWzgzLjM4MzAwNCwgNTEuMDY5MTgzXSwgWzgzLjkzNTExNSwgNTAuODg5MjQ2XSwgWzg0LjQxNjM3NywgNTAuMzExNF0sIFs4NS4xMTU1NiwgNTAuMTE3MzAzXSwgWzg1LjU0MTI3LCA0OS42OTI4NTldLCBbODYuODI5MzU3LCA0OS44MjY2NzVdLCBbODcuMzU5OTcsIDQ5LjIxNDk4MV0sIFs4Ni41OTg3NzYsIDQ4LjU0OTE4Ml0sIFs4NS43NjgyMzMsIDQ4LjQ1NTc1MV0sIFs4NS43MjA0ODQsIDQ3LjQ1Mjk2OV0sIFs4NS4xNjQyOSwgNDcuMDAwOTU2XSwgWzgzLjE4MDQ4NCwgNDcuMzMwMDMxXSwgWzgyLjQ1ODkyNiwgNDUuNTM5NjVdLCBbODEuOTQ3MDcxLCA0NS4zMTcwMjddLCBbNzkuOTY2MTA2LCA0NC45MTc1MTddLCBbODAuODY2MjA2LCA0My4xODAzNjJdLCBbODAuMTgwMTUsIDQyLjkyMDA2OF0sIFs4MC4yNTk5OSwgNDIuMzQ5OTk5XSwgWzc5LjY0MzY0NSwgNDIuNDk2NjgzXSwgWzc5LjE0MjE3NywgNDIuODU2MDkyXSwgWzc3LjY1ODM5MiwgNDIuOTYwNjg2XSwgWzc2LjAwMDM1NCwgNDIuOTg4MDIyXSwgWzc1LjYzNjk2NSwgNDIuODc3OV0sIFs3NC4yMTI4NjYsIDQzLjI5ODMzOV0sIFs3My42NDUzMDQsIDQzLjA5MTI3Ml0sIFs3My40ODk3NTgsIDQyLjUwMDg5NF0sIFs3MS44NDQ2MzgsIDQyLjg0NTM5NV0sIFs3MS4xODYyODEsIDQyLjcwNDI5M10sIFs3MC45NjIzMTUsIDQyLjI2NjE1NF1dXSwgInR5cGUiOiAiUG9seWdvbiJ9LCAiaWQiOiAiS0FaIiwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHt9LCAibmFtZSI6ICJLYXpha2hzdGFuIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s0MC45OTMsIC0wLjg1ODI5XSwgWzQxLjU4NTEzLCAtMS42ODMyNV0sIFs0MC44ODQ3NywgLTIuMDgyNTVdLCBbNDAuNjM3ODUsIC0yLjQ5OTc5XSwgWzQwLjI2MzA0LCAtMi41NzMwOV0sIFs0MC4xMjExOSwgLTMuMjc3NjhdLCBbMzkuODAwMDYsIC0zLjY4MTE2XSwgWzM5LjYwNDg5LCAtNC4zNDY1M10sIFszOS4yMDIyMiwgLTQuNjc2NzddLCBbMzcuNzY2OSwgLTMuNjc3MTJdLCBbMzcuNjk4NjksIC0zLjA5Njk5XSwgWzM0LjA3MjYyLCAtMS4wNTk4Ml0sIFszMy45MDM3MTEsIC0wLjk1XSwgWzMzLjg5MzU2OSwgMC4xMDk4MTRdLCBbMzQuMTgsIDAuNTE1XSwgWzM0LjY3MjEsIDEuMTc2OTRdLCBbMzUuMDM1OTksIDEuOTA1ODRdLCBbMzQuNTk2MDcsIDMuMDUzNzRdLCBbMzQuNDc5MTMsIDMuNTU1Nl0sIFszNC4wMDUsIDQuMjQ5ODg1XSwgWzM0LjYyMDE5NiwgNC44NDcxMjNdLCBbMzUuMjk4MDA3LCA1LjUwNl0sIFszNS44MTc0NDgsIDUuMzM4MjMyXSwgWzM1LjgxNzQ0OCwgNC43NzY5NjZdLCBbMzYuMTU5MDc5LCA0LjQ0Nzg2NF0sIFszNi44NTUwOTMsIDQuNDQ3ODY0XSwgWzM4LjEyMDkxNSwgMy41OTg2MDVdLCBbMzguNDM2OTcsIDMuNTg4NTFdLCBbMzguNjcxMTQsIDMuNjE2MDddLCBbMzguODkyNTEsIDMuNTAwNzRdLCBbMzkuNTU5Mzg0LCAzLjQyMjA2XSwgWzM5Ljg1NDk0LCAzLjgzODc5XSwgWzQwLjc2ODQ4LCA0LjI1NzAyXSwgWzQxLjE3MTgsIDMuOTE5MDldLCBbNDEuODU1MDgzLCAzLjkxODkxMl0sIFs0MC45ODEwNSwgMi43ODQ1Ml0sIFs0MC45OTMsIC0wLjg1ODI5XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJLRU4iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIktlbnlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1s3MC45NjIzMTUsIDQyLjI2NjE1NF0sIFs3MS4xODYyODEsIDQyLjcwNDI5M10sIFs3MS44NDQ2MzgsIDQyLjg0NTM5NV0sIFs3My40ODk3NTgsIDQyLjUwMDg5NF0sIFs3My42NDUzMDQsIDQzLjA5MTI3Ml0sIFs3NC4yMTI4NjYsIDQzLjI5ODMzOV0sIFs3NS42MzY5NjUsIDQyLjg3NzldLCBbNzYuMDAwMzU0LCA0Mi45ODgwMjJdLCBbNzcuNjU4MzkyLCA0Mi45NjA2ODZdLCBbNzkuMTQyMTc3LCA0Mi44NTYwOTJdLCBbNzkuNjQzNjQ1LCA0Mi40OTY2ODNdLCBbODAuMjU5OTksIDQyLjM0OTk5OV0sIFs4MC4xMTk0MywgNDIuMTIzOTQxXSwgWzc4LjU0MzY2MSwgNDEuNTgyMjQzXSwgWzc4LjE4NzE5NywgNDEuMTg1MzE2XSwgWzc2LjkwNDQ4NCwgNDEuMDY2NDg2XSwgWzc2LjUyNjM2OCwgNDAuNDI3OTQ2XSwgWzc1LjQ2NzgyOCwgNDAuNTYyMDcyXSwgWzc0Ljc3Njg2MiwgNDAuMzY2NDI1XSwgWzczLjgyMjI0NCwgMzkuODkzOTczXSwgWzczLjk2MDAxMywgMzkuNjYwMDA4XSwgWzczLjY3NTM3OSwgMzkuNDMxMjM3XSwgWzcxLjc4NDY5NCwgMzkuMjc5NDYzXSwgWzcwLjU0OTE2MiwgMzkuNjA0MTk4XSwgWzY5LjQ2NDg4NywgMzkuNTI2NjgzXSwgWzY5LjU1OTYxLCA0MC4xMDMyMTFdLCBbNzAuNjQ4MDE5LCAzOS45MzU3NTRdLCBbNzEuMDE0MTk4LCA0MC4yNDQzNjZdLCBbNzEuNzc0ODc1LCA0MC4xNDU4NDRdLCBbNzMuMDU1NDE3LCA0MC44NjYwMzNdLCBbNzEuODcwMTE1LCA0MS4zOTI5XSwgWzcxLjE1Nzg1OSwgNDEuMTQzNTg3XSwgWzcwLjQyMDAyMiwgNDEuNTE5OTk4XSwgWzcxLjI1OTI0OCwgNDIuMTY3NzExXSwgWzcwLjk2MjMxNSwgNDIuMjY2MTU0XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJLR1oiLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkt5cmd5enN0YW4iLCAic3R5bGUiOiB7ImNvbG9yIjogImJsYWNrIiwgImZpbGxDb2xvciI6ICIjZmVkOTc2IiwgImZpbGxPcGFjaXR5IjogMC43LCAib3BhY2l0eSI6IDAuMiwgIndlaWdodCI6IDF9fSwgInR5cGUiOiAiRmVhdHVyZSJ9LCB7Imdlb21ldHJ5IjogeyJjb29yZGluYXRlcyI6IFtbWzEwMy40OTcyOCwgMTAuNjMyNTU1XSwgWzEwMy4wOTA2OSwgMTEuMTUzNjYxXSwgWzEwMi41ODQ5MzIsIDEyLjE4NjU5NV0sIFsxMDIuMzQ4MDk5LCAxMy4zOTQyNDddLCBbMTAyLjk4ODQyMiwgMTQuMjI1NzIxXSwgWzEwNC4yODE0MTgsIDE0LjQxNjc0M10sIFsxMDUuMjE4Nzc3LCAxNC4yNzMyMTJdLCBbMTA2LjA0Mzk0NiwgMTMuODgxMDkxXSwgWzEwNi40OTYzNzMsIDE0LjU3MDU4NF0sIFsxMDcuMzgyNzI3LCAxNC4yMDI0NDFdLCBbMTA3LjYxNDU0OCwgMTMuNTM1NTMxXSwgWzEwNy40OTE0MDMsIDEyLjMzNzIwNl0sIFsxMDUuODEwNTI0LCAxMS41Njc2MTVdLCBbMTA2LjI0OTY3LCAxMC45NjE4MTJdLCBbMTA1LjE5OTkxNSwgMTAuODg5MzFdLCBbMTA0LjMzNDMzNSwgMTAuNDg2NTQ0XSwgWzEwMy40OTcyOCwgMTAuNjMyNTU1XV1dLCAidHlwZSI6ICJQb2x5Z29uIn0sICJpZCI6ICJLSE0iLCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0Ijoge30sICJuYW1lIjogIkNhbWJvZGlhIiwgInN0eWxlIjogeyJjb2xvciI6ICJibGFjayIsICJmaWxsQ29sb3IiOiAiI2ZlZDk3NiIsICJmaWxsT3BhY2l0eSI6IDAuNywgIm9wYWNpdHkiOiAwLjIsICJ3ZWlnaHQiOiAxfX0sICJ0eXBlIjogIkZlYXR1cmUifSwgeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbW1sxMjguMzQ5NzE2LCAzOC42MTIyNDNdLCBbMTI5LjIxMjkyLCAzNy40MzIzOTJdLCBbMTI5LjQ2MDQ1LCAzNi43ODQxODldLCBbMTI5LjQ2ODMwNCwgMzUuNjMyMTQxXSwgWzEyOS4wOTEzN
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment